% gauss_el.m % Programmed by Á¤¿À¿¬
function x = gauss_el(A,b); 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(8,8,1,10); b = myrand(8,1,10,20)
b =
18 17 13 13 13 15 17 13
>> x = gauss_el(A,b)
ans =
5.4208e-015
x =
15.0090 -10.8279 -0.2582 15.3240 -0.9018 -5.3352 -7.2939 1.9774
>>
|
|