Skip to content
Permalink
Branch: master
Find file Copy path
Find file Copy path
Fetching contributors…
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
You can’t perform that action at this time.