You are on page 1of 1

Gauss

function [x, determinant]=gauss(A,b)


ncol = size(b, 2)
if ncol>1
b = b';
end
n=length(b);
for k = 1:n-1
for i = k+1:n
if A(i,k)~=0
lamba=A(i,k)/A(k,k);
A(i,k+1:n)=A(i, k+1:n) - lamba*A(k, k+1:n);
b(i)=b(i)-lamba*b(k);
end
end
end
if nargout==2
determinant = det(A);
end
x(n)=b(n)/A(n,n);
for k=n-1:-1:1
x(k)=(b(k)-A(k, k+1:n)*x(k+1:n)')/A(k,k);
end
end

Gauss Piv
function [x]=gaussPiv(A,b)
ncol = size(b,2);
if ncol > 1
b=b';
end
n=length(b);
s=zeros(n,1);
for i = 1:n;
s(i)=max(abs(A(i,1:n)));
end
for k = 1:n-1
[Amax,p]=max(abs(A(k:n,k))./s(k:n));
p=p+k-1;
if Amax < eps
error('Matrix is singular');
end
if p~=k
b=swapRows(b,k,p);
s=swapRows(s,k,p);
A=swapRows(A,k,p);
end
for i=k+1:n
if A(i,k) ~= 0
lambda=A(i,k)/A(k,k);
A(i,k+1:n)=A(i,k+1:n)-lambda*A(k,k+1:n);
b(i)=b(i)-lambda*b(k);
end
end
end
x(n)=b(n)/A(n,n);
for k = n-1:-1:1
x(k)=(b(k)-A(k,k+1:n) * x(k+1:n)')/A(k,k);
end
end

You might also like