% gauss_el.m % Gauss Elimination to solve A*x = b % input : A, b % output : x %Programmed by Jo, Hyun-Ho %function x = gauss_el(A,b); A = myrand(10,10,1,9), b = myrand(10,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 =
5 3 3 7 3 5 5 2 6 3 9 8 1 8 9 6 9 1 3 5 2 4 5 5 7 3 8 9 9 5 1 3 2 2 2 5 3 7 2 3 7 3 5 9 6 3 3 3 8 4 3 9 1 8 8 8 9 5 4 3 7 5 4 4 1 7 1 5 3 5 1 1 4 9 6 1 4 4 5 4 4 6 9 7 5 5 1 5 2 4 1 4 9 2 3 9 4 1 7 7
b =
2 3 3 4 2 4 2 4 1 4
ans =
4.8700e-014
Publish
|
|