算例19:用矩阵(LU)分解法求解线性方程组:
23??x1??1??0.001??13.7124.623??x???2?
???2??????21.0725.643????x3????3??解:令A=[0.001,2,3;-1,3.712,4.623;-2,1.072,5.643]; b=[1,2,3];
在命令窗口输入:
x=lu_decompose(A,b)
6.4 Gauss列主元消去法
用Gauss列主元消去法求解线性方程组Ax?b. MATLAB文件:(文件名:Gauss_pivot.m) function x=Gauss_pivot(A,b)
%用Gauss列主元消去法解线性方程组Ax=b %x表示未知向量 n=length(b); x=zeros(n,1); c=zeros(1,n); d1=0; for i=1:n-1
max=abs(A(i,i)); m=i;
for j=i+1:n
if max c(k)=A(i,k); A(i,k)=A(m,k); A(m,k)=c(k); end d1=b(i); b(i)=b(m); b(m)=d1; end for k=i+1:n for j=i+1:n A(k,j)=A(k,j)-A(i,j)*A(k,i)/A(i,i); end 25 b(k)=b(k)-b(i)*A(k,i)/A(i,i); A(k,i)=0; end end %回代求解 x(n)=b(n)/A(n,n); for i=n-1:-1:1 sum=0; for j=i+1:n sum=sum+A(i,j)*x(j); end x(i)=(b(i)-sum)/A(i,i); end 算例20:分别用Gauss列主元消去法和Gauss消去法求解线性方程组: ?0.3?10?15?5.291 ??11.2?1??1??x1??59.17???????6.13?12??x2??46.78?? 952??x3??1??????x2211????4??59.143解:令A=[0.3*10^-15,59.14,3,1;5.291,-6.13,-1,2;11.2,9,5,2;1,2,1,1]; b=[59.17,46.78,1,2]’; 在命令窗口输入: Gauss消去法: x=lu_decompose(A,b) Gauss列主元消去法: x=Gauss_pivot(A,b) 二者的结果比较,用Gauss列主元消去法所得的结果要更准确. 26
相关推荐: