%gauss_el . m %Gauss Elimination to solve A*x= b %input : A, b %output : x %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
>> A = myrand(10,10,1,10); b = myrand(10,1,10,20); >> x= gauss_el(A, b)
x =
-0.8577 2.8716 -18.3662 -25.5714 15.4848 -15.3967 27.7758 2.9907 11.2775 6.6214
|
|