% gauss_el.m % Gauss Elimination to solve A*x = b % input : A, b % output : x % Programmed by Park, Do-Sol
function x = gauss_el(A,b); A = myrand(8,8,1,9); b = myrand(8,1,1,5); n = length(A); R = [A b];
for j=1:n-1 for i=j+1:n if R(j,j)==0 max_id = find( max( abs(R(j+1:n,j)) ) ) + j; % Find pivot temp = R(j,:); % Change two rows R(j,:) = R(max_id,:); R(max_id,:) = temp; end a = R(i,j)/R(j,j); R(i,:) = R(i,:) - a*R(j,:); end end % ¿ª´ëÀÔ¹ý A = R(:,1:n); b = R(:,n+1); x = zeros(n,1); for j=n:-1:1 x(j) = ( b(j) - A(j,j+1:n)*x(j+1:n) )/A(j,j); end norm( b-A*x )
%%%%%%%
>> A=myrand(10,10,1,10); b=myrand(10,1,10,20); >> x=gauss_el(A,b)
ans =
8.9729e-15
x =
-2.0315 3.6155 -2.4647 3.0537 -1.0681 -0.1045 0.4973 -1.5422
|
|