% gauss_el.m % Gauss Elimination to solve A*x = b % input : A, b % output : x %Prortammed by Lim. Hye Won 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)
A =
4 4 7 6 5 4 6 4 2 5 7 3 3 5 3 5 6 3 4 8 8 6 3 8 8 6 6 5 4 2 6 6 6 1 7 7 6 8 5 4 9 6 2 4 1 7 1 5 9 7 9 9 4 7 2 6 1 9 8 2 5 8 3 2
ans =
1.2212e-015
x =
-0.9341 -0.0979 -0.1669 1.0029 -1.4407 0.6844 0.7253 0.8483
|
|