% gauss_el.m % Gauss Elimination to solve A*x = b % input : A, b % output : x % Programmed by Lee, so ri function x = gauss_el(A,b); % A = myrand(10,10,1,10) , b = myrand(10,1,1,10)
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 tow 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,1,10); >> x = gauss_el(A,b)
ans =
7.1846e-015
x =
0.9554 1.3207 -0.2431 -0.5625 -0.6000 0.6425 0.4235 -0.4001 -0.9118 0.0503
|
LAST UPDATE: 2013.10.10 - 15:09 |
|