解线性方程组的直接法的Matlab实现.docxVIP

  • 39
  • 0
  • 约4.26千字
  • 约 10页
  • 2019-12-16 发布于广东
  • 举报
实验名称 解线性方程组的直接法的Mat lab实现 实验时间 2011年11月9日 姓名 王亚敏 班级 0209408 学号 020940807 成绩 湖北民族学院《数值分析》实验报告 实验报告内容要求: 一、实验H的与要求;二、实验内容;三、算法描述(数学原理或设计思路、计算公式、计算步骤); 四、程序代码;五、数值结果;六、计算结杲分析(如初值对结杲的影响;不同方法的比较;该方法的特点和改进等); 七、实验中出现的问题,解决方法及体会(整个实验过程中(包括程序编写,上机调试等)出现的问题及其处理等广 泛的问题). 一、实验目的与要求 掌握高斯消去法和追赶法的基本思路和迭代步骤; 培养编程与上机调试能力。 二、实验内容 1.编写用高斯消元法解线性方程组的MATLAB程序, 并求解下面的线性方程组,然后用逆矩阵解方程组的方法验证? 0.101X)+2.304兀2 +3.555忑=1.183 —1.347西 + 3.712吃 + 4.623兀3 = 2.137 —2.835壬 +1.072无2 +5.643兀3 = 3.035 5 兀]+ 2x2 +x3 =8 2x} + 8 兀2 - 3兀3 = 21 兀]-3x2 - 6x3 = 1 2.编写用追赶法解线性方程组的MATLAB程序, 法验证. 并求解下而的线性方程组,然后用高斯消元法及逆矩阵解方程组的方 2 -1 0 0 0_ 1 -1 2 -1 0 0 0 0 -1 2 -1 0 ,b = 0 0 0 -1 2 -1 0 0 0 0 -1 2 0 (1) Ax=b,其中 A = (2) 2 2 ⑴丿 ? 3、算法描述 (1)、高斯消元法 高斯顺序消去法:设线性方程组AX=〃,对增广矩阵[40 ]顺序作初等行变换,使矩阵A化为上三角形矩阵, 再回代,从而求得线性方程组的解 1 ?消元过程 设血)工0,对1,2,…,斤-1计算 mik=a^ /a^ 2?回代过程 其中ij* + l,k + 2,K ,n 其中 z = n-l,K,2,lo£=労) 其中 z = n-l,K,2,lo 兀?=(岁-£硝%)/4:) ;=/+! (2) 、逆矩阵 因为AX二b,得至I」A~lAX = A~b ,从而的X = A~lb ,即可算出结果。 (3) 追赶法 追赶法用于求解以下形式的方程组(三对角方程组) 其中系数矩阵(三对角矩阵) q b2 c2 ? ? ? ? ? ? ? ? ? an-X bn-X Cn-X an bn 血 ||q|0 系数矩阵A的元素满足 |Z?J |a.| + |c.| 0 aici HO (i = 2,???,〃-l) l^lkl° 第一步:实现A 第一步:实现A二LU的分解,按照递推公式 卩厂q吨q凰)计算 \)\=fA 第二步:求解方程组LY二f,相应的递推公式卜电V)打)/?_^几) x = y 第三部:求解方程组咲Y,相应的递推公式求得x 因为计算彳 F T以T.????? T/t]及必它它 T??…乍Q的过程是追的过程,结出结果X。 4、程序代码 1、高斯消元 function [RA, RB, n, X]=gaus (A, b) B=[A b]; n=length (b);RA=rank (A); RB=rank(B);zhica=RB-RA; if zhica0, dispC请注意:因为RARB,所以此方程组无解.’) return end if RA==RB if RA=n dispC请注意:因为RA二RB二m所以此方程组有唯一解.’) X二zeros (n, 1) ; C二zeros (1, n+1); for p= l:nT for k=p+l:n m= B(k, p)/ B(p, p); B(k, p:n+l)= B(k, p:n+l)-m* B(p, p:n+1); end end b=B(l:n, n+1); A=B(1 :n, 1 :n); X(n)=b(n)/A(n, n); for q二nT :T : 1 X (q) = (b (q) -sum (A (q, q+1 :n)*X(q+l :n) ))/A(q, q); end else dispC请注意:因为RA二RB5,所以此方程组有无穷多解.’) end end 2、迅赶法 function [x, y, bcta]=zhuiganfa(a, b, c, f) %a, b, c是三对角阵的对角线上的兀素,f是自由项. n=lcngth(b); beta(l) =c(l)/b(l); for i=2:n beta(i)=c(i)/(b(i)-a(i)*beta(i~l)); end y(l)=f(l)/b(l); for i=2:n y(i) = (f (i)-a(i)*y(i

文档评论(0)

1亿VIP精品文档

相关文档