Skip to content
Permalink
46f626edf1
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
36 lines (36 sloc) 888 Bytes
function [L,U,P] = LU_pivot(A)
% GaussPivot: Gauss elimination pivoting
% x = GaussPivot(A,b): Gauss elimination with pivoting.
% input:
% A = coefficient matrix
% b = right hand side vector
% output:
% x = solution vector
[m,n]=size(A);
if m~=n, error('Matrix A must be square'); end
nb = n;
L=diag(ones(n,1));
U=A;
P=diag(ones(n,1));
% forward elimination
for k = 1:n-1
% partial pivoting
[big,i]=max(abs(U(k:n,k)));
ipr=i+k-1;
if ipr~=k
P([k,ipr],:)=P([ipr,k],:); % if the max is not the current index ipr, pivot count
%L([k,ipr],:)=L([ipr,k],:);
%U([k,ipr],:)=U([ipr,k],:);
end
for i = k+1:n
fik=U(i,k)/U(k,k);
L(i,k)=fik;
U(i,k:nb)=U(i,k:nb)-fik*U(k,k:nb);
end
end
% back substitution
%x=zeros(n,1);
%x(n)=Aug(n,nb)/Aug(n,n);
%for i = n-1:-1:1
% x(i)=(Aug(i,nb)-Aug(i,i+1:n)*x(i+1:n))/Aug(i,i);
%end