文档详情

Gauss消去法等matlab程序.doc

发布:2017-08-01约1.84千字共3页下载文档
文本预览下载声明
实验题目 编写四个解线性方程组的程序 评 分 1、设计(实习)目的: 了解MATLAB在实际问题中的应用 通过实践加深对这门语言中M文件的了解 掌握运用matlab解决实际数学问题 2、实验内容: 运用matlab编写程序: Gauss消去法 列主元消去法 LU三角分解法 3.详细设计: 由于以下四种消元法均含有回代与逆回代过程,因此事先编写的子文件如下: Huidai.M文件: function x=huidai(a) n=length(a)-1; for i=n:-1:1 s=0; if i==n x(i)=(a(n,n+1)-s)/a(n,n); else for j=n:-1:i s=s+a(i,j)*x(j); end x(i)=(a(i,n+1)-s)/a(i,i); end end huidai.M文件: function x=huidaini(a) n=length(a)-1; x=zeros(n,1); s=0; for i=1:1:n if i==1 x(1)=a(1,n+1)/a(1,1) else for j=1:1:i-1 s=s+a(i,j)*x(j) end x(i)=(a(i,n+1)-s)/a(i,i) s=0 end end 1.)Gauss消去法: function x=Gauss(A,b) a=[A b]; x=[]; n=length(a)-1; for k=1:n for i=k+1:n c=a(i,k)/a(k,k); for j=k:n+1 a(i,j)=a(i,j)-c*a(k,j) end end end x=huidai(a); 2.)列主元消去法: function x=GaussL(A,b) a=[A b]; x=[]; n=length(a)-1; for k=1:n A=a(k:n,k); h=max(A); [u,v]=find(A==h); u=u+k-1; B=a; a(k,:)=B(u,:); a(u,:)=B(k,:); for i=k+1:n c=a(i,k)/a(k,k); for j=k:n+1 a(i,j)=a(i,j)-c*a(k,j) end end end x=huidai(a); 3.)三角分解法: function x=LU(A,b) n=length(A) A=[A b] L=eye(n) U=zeros(n) for i=1:n-1 for j=i:n-1 L(j+1,i)=A(j+1,i)/A(i,i) A(j+1,:)=A(j+1,:)-L(j+1,i)*A(i,:) end end U=A(:,1:n) a1=[L b] y=zeros(n,1) y=huidaini(a1) a2=[U y] x=huidai(a2) 4:实验结果: 1.)Gauss消去法: A=[2 2 3;4 7 7;-2 4 5];b=[3;1;-7]; Gauss(A,b) ans = 2 -2 1 2.)列主元消去法: A=[2 2 3;4 7 7;-2 4 5];b=[3;1;-7]; GaussL(A,b) ans = 2.0000 -2.0000 1.0000 3.)三角分解法: A=[2 2 3;4 7 7;-2 4 5];b=[3;1;-7]; LU(A,b) ans = 2 -2 1 5:实验总结 又一次用matlab解决数学问题,感觉好多东西都忘了,看来还要仔细看下书了,在解决以上问题时发现有共同的回代与逆回代过程,所以以子程序来简化m文件,在解决问题时细心分析就会简化问题。
显示全部
相似文档