高斯列主元消去法解线性方程
function x=gaussLinearEquation(A,b)
%¸ 用Gauss列主主元消去法解线性方程组Ax=b
disp('Ô·½³ÌΪAX=b£º')
A
b
disp('------------------------')
n=length(b);
eps=10^-2;
for k=1:n-1
%ÕÒÁÐÖ÷Ôª
[mainElement,index]=max(abs(A(k:n,k)));
index=index+k-1;%indexÔÚA(k:n,k)ÖеÄÐкÅת»»ÎªÔÚAÖеÄÐкÅ
if abs(mainElement) break; elseif index>k %ÁÐÖ÷ÔªËùÔÚÐв»Êǵ±Ç°ÐУ¬½«µ±Ç°ÐÐÓëÁÐÖ÷ÔªËùÔÚÐн»»» temp=A(k,:); A(k,:)=A(index,:); A(index,:)=temp; end %ÏûÔª for i=k+1:n m(i,k)=A(i,k)/A(k,k);%A(k,k)½«A(i,k)ÏûΪ0Ëù³ËϵÊý A(i,k:n)=A(i,k:n)-m(i,k)*A(k,k:n);%µÚiÐÐÏûÔª´¦Àí b(i)=b(i)-m(i,k)*b(k);%»¹ÓÐbÒ²ÐèÒª´¦Àí£¡£¡ end end disp('ÏûÔªºóËùµÃµ½µÄÉÏÈý½ÇÕóÊÇ') A %»Ø´ú b(n)=b(n)/A(n,n); for i=n-1:-1:1 %sum(A(i,i+1:n).*b(i+1:n)')±íʾÒÑÖª b(i)=(b(i)-sum(A(i,i+1:n).*b(i+1:n)'))/A(i,i); end clear x; x=b; disp('AX=bµÄ½âxÊÇ') x 在控制台输入: >> A=[1.003 0.333 1.504 -0.333; -2.011 1.455 0.506 2.956; 4.329 -1.952 0.006 2.087; 5.113 -4.004 3.332 -1.112]; b=[ 3.005,5.407,0.136,3.772 ]'; >> gaussLinearEquation(A,b) 原方程为AX=b: A = 1.0030 0.3330 1.5040 -0.3330 -2.0110 1.4550 0.5060 2.9560 4.3290 -1.9520 0.0060 2.0870 5.1130 -4.0040 3.3320 -1.1120 b = 3.0050 5.4070 0.1360 3.7720 ------------------------ 消元后所得到的上三角阵是 A = 5.1130 -4.0040 3.3320 0 1.4380 -2.8151 0 0 3.0398 -1.1120 3.0285 -2.4703 0 0.0000 0 4.0565 AX=b的解x是 x = 3.8086 3.5083 -0.8068 -0.2402 ans = 3.8086 3.5083 -0.8068 -0.2402 高斯消去法解方程 function x = gauss(A, b) n = length(b); for k = 1 : n-1 if A(k,k)==0 fprintf('Error: the %dth pivot element equal to zero!\\n',k); return; end index = [k+1:n]; m = -A(index,k)/A(k,k); A(index,index) = A(index,index) + m*A(k,index); b(index) = b(index) + m*b(k); end x = zeros(n,1); x(n) = b(n)/A(n,n); for i = n-1:-1:1 x(i) = ( b(i) - A(i,[i+1:n])*x([i+1:n]) )/A(i,i); end >> A=[1 1.355 1.4 2; 3 3.5 0.22 1; 0.5 2 2.1 3; 0.3 0.1 -0.55 2]; b=[2.00,1.00,0.55,3.00]' b = 2.0000 1.0000 0.5500 3.0000 >> gauss(A,b) ans = 2.5225 -2.2313 0.0177 1.2381 因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- awee.cn 版权所有 湘ICP备2023022495号-5
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务