% gauss_el.m % Gauss Elimination to solve A*x = b % input : A, b % output : x % Programmed Moon Ji-Hye
function x = gauss_el(A,b); A = myrand(10,10,1,10); b = myrand(10,1,10,20); 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 )
ans =
2.8641e-014
x =
-0.1425 0.2762 0.1068 -0.3368 0.1089 0.3689 -0.1244 0.2222 0.0855 -0.0865
|
LAST UPDATE: 2013.10.10 - 15:40 |
|