function [l,u,x,my_det,p] = my_gauss_pp(n,a,b) a = [a, b]; p = 1:n-1; det_sign = 1; for k=1:n-1, ip = k; ap = abs(a(k,k)); % starting column pivoting for i=k+1:n if(abs(a(i,k)) >ap) ip = i; ap = abs(a(i,k)); end end if ip ~= k det_sign = -det_sign; end p(k) = ip; % Now switch rows for j=k:n+1 tmp = a(k,j); a(k,j) = a(ip,j); a(ip,j) = tmp; end for i=k+1:n a(i,k) = a(i,k)/a(k,k); for j = k+1: n+1 a(i,j) = a(i,j) - a(i,k)*a(k,j); end end end l = zeros(n,n); u=zeros(n,n); for i=1:n l(i,i) = 1; end for i=2:n for j=1:i-1 l(i,j) = a(i,j); end end for i=1:n for j=i:n u(i,j) = a(i,j); end end %--------- Begin backward substitution ------------------------- x = zeros(n,1); x(n) = a(n,n+1)/a(n,n); for i=n-1:-1:1, x(i) = a(i,n+1); for j=i+1:n x(i) = x(i) - a(i,j) * x(j); end x(i) = x(i)/a(i,i); end %--------- Begin evaluate the determinant --------------- my_det = 1; for i=1:n my_det = my_det*a(i,i); end my_det = my_det*det_sign;