数值分析课程设计实验报告.doc

上传人:桔**** 文档编号:402073415 上传时间:2022-12-21 格式:DOC 页数:12 大小:48.02KB
返回 下载 相关 举报
数值分析课程设计实验报告.doc_第1页
第1页 / 共12页
数值分析课程设计实验报告.doc_第2页
第2页 / 共12页
数值分析课程设计实验报告.doc_第3页
第3页 / 共12页
数值分析课程设计实验报告.doc_第4页
第4页 / 共12页
数值分析课程设计实验报告.doc_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《数值分析课程设计实验报告.doc》由会员分享,可在线阅读,更多相关《数值分析课程设计实验报告.doc(12页珍藏版)》请在金锄头文库上搜索。

1、数值分析课程设计实验报告姓名:陈浩学号:081002102班级:091002 指导老师:任林源 完成日期:2011-7目录一丶概述_二丶设计内容_三丶设计过程_四丶主要代码_五丶结果显示_六丶结果验证_七丶设计总结_实验一:Gauss消去法和Gauss选列主元消去法一丶概述1.1 设计名称:Gauss消去法和Gauss选列主元消去法1.2 设计目的:数值分析课本中的最基础解线性方程组的方法Gauss消去法和Gauss选列主元消去法,随着对他们的深入研究发现他们也有很多缺点.设计这次试验是为了找出这两者之间的区别。加强对这两种算法的了解和掌握,还有锻炼分析问题,解决问题的能力,理解和掌握相关算法

2、的原理执行并完成程序设计.二丶设计内容、编程试验Gauss消去法和Gauss选列主元消去法;对二者算法进行比较;三丶设计过程3.1 Gauss消去法3.1.1 消去法实现: 根据消去法的原理,编写Matlab程序,并运行,然后带入数据算出结果,再比较.3.1.2 Gauss消去法的原理:方程组:A*x=b A为矩阵A= a(11) a(12)a(1n); a(21) a(22)a(2n); a(n1) a(n2)a(nn)b=b1 b2 bn1 回带过程用行列式的初等行变换把A化为上三角矩阵,则可以取得xn的值,有xn的值则可以带入上一式中求出x(n-1)的值,以此类推则可以求得xi的值则递推

3、公式xn=un,n-1/unnxi=1/uii(ui,n+1-(ui,i+1xi+1+.+uinxn)3.2 Gauss选列主元消去法3.2.1 原理:选列主元消去法就是在系数矩阵中按列选取绝对值最大的值作为主元素,然后交换所在行与主元素所在行的位置,再按顺序消去法进行消元。四丶主要代码:4.1 Gauss消去法主要代码function x=hanxiaogu (A,b)n=length(b);for i= 1:n-1 for k= i+1:n for j= i+1:n if abs (A(i,i)10(-6) warning(分母为零不能计算!); return; else A(k,j)=

4、A(k,j)-A(i,j)*A(k,i)/A(i,i); end end b(k)=b(k)-b(i)*A(k,i)/A(i,i); A(k,i)=0; endend%回代求解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);endend4.2 Gauss选列主元消法主要代码function x=Gaussxiaoqumethod(A,b)%用高斯消去法解线性方程组A*x=b% x是未知量n=length(b);x=zeros(n,1);c=zer

5、os(1,n);%寻找最大元t=0;for i=1:n-1max=abs(A(i,i);m=i;for j=i+1:n if maxabs(A(j,i) max=abs(A(j,i); m=j; endendif m=i for k=1:n c(k)=A(i,k); A(i,k)=A(m,k); A(m,k)=c(k); end t=b(i); b(i)=b(m); b(m)=t;endfor 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 b(k)=b(k)-b(i)*A(k,i)/A(i,i); A(k,i)=0;en

6、dend%回带过程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);endend五丶结果显示:5.1 Gauss消去法和Gauss主元消去法结果相同显示结果:A = 4096 1234 3678 2943 2246 3872 4015 1129 3645 1926 3781 643 1784 4002 2786 3927b = 4063 1550 4240 -2557x=hanxiaogu (A,b)x = -0.1818 -1.66942.222

7、6-0.4440六丶结果验证A*x=4063.3384 1550.2234 4240.2332 2556.6944这说明Gauss消去法和Gauss主元消去法的计算精度是相当高的。但是如果系数矩阵A是奇异矩阵,就会出错。七丶设计总结列主元消元法和Gauss消元法的计算过程基本上是一样的,只是在每一次消元前要选取系数矩阵的列主元,然后把方程组做适当的行交换再进行消元运算,这就保证了舍入误差不扩散。列主元消元法克服了顺序Gauss消元的缺点,运算量也没有全主元消元法那么大,因此是解线性方程组的一种比较实用而且简单的方法。 实验二:Gauss-Seidol迭代法线性方程组一概述:1.1 设计说明:G

8、uass-Seidol迭代法1.2 设计目的:深入学习和掌握Gauss-Seidol迭代法解线性方程组,会使用Matlab软件,回编写程序,并使用程序带入数据,计算出结果。二丶算法内容:编写程序,并使用Matlab程序运行程序,计算出结果三丶设计过程3.1 Gauss-Seidol迭代法3.1.1 迭代法的实现:根据迭代法的原理,编写Matlab程序,并运行,然后带入数据算出结果。3.1.2 Gauss-Seidol迭代法的原理:线性方程组 Ax=b A=(aij)nn非奇异,b=bbo.将Ax=b变换成映射形式的同解组 x=Gx+f由此构造迭代公式 x(k)=Gx(k-1)+f对取定的初值向

9、量想x(0),取得极限 x*=Gx*+f从而x*为A*x=b的解,当k充分大的时候x*=x(k).四丶主要代码:function x=naspgs(A,b,x0,e,N)%用途:用向量(稀疏存储)形式的Gauss-Seidel迭代解线性方程组Ax=b%格式:x=naspgs(A,b,x0,e,N) A为系数矩阵,b为右端向量,x返回解向% 量,x0为初值向量(默认原点),e为精确度(默认1e-4),设置迭代次数上限% 以防发散(默认500)n=length(b);if nargin5,N=500;endif nargin3,e=1e-4,endif nargine&kN, k=k+1; x0=

10、x;x=-iA1*(A-A1)*x0+iA1*b;endx=full(x);if k=N,warning(已达迭代次数上线);endend五丶结果显示A=17.031,-0.615,-2.991,1.007,-1.006,0.000; -1.000,34.211,-1.000,-2.100,0.300,-1.700; 0.000,0.500,13.000,-0.500,1.000,-1.500; 4.501,3.110,-3.907,-61.705,12.170,8.999; 0.101,-8.012,-0.017,-0.910,4.918,0.100; 1.000,2.000,3.000,4

11、.500,5.000,21.803b=0.230,-52.322,54.000,240.236,29.304,-117.818e=10(-6)x0=0 0 0 0 0 0 N=500x=naspgs(A,b,x0,e,N)x =0.9071 -1.9618 3.2937 -4.5007 2.0293 -5.2551 六丶结果验证:A*x=0.2301897 -52.3220098 53.9995 241.1419028 29.3037902 117.8189953这说明Gauss-Seidol迭代法的精确度比较高,但是奇异矩阵还是会出错的。七丶设计总结直接法得到的解是理论上准确的,但是我们可以看得出,它们的计算量都是n3数量级,存储量为n2量级,这在n比较小的时候还比较合适,但是对于现在的很多实际问题,往往要我们求解很大的n的矩阵,而且这些矩阵往往是系数矩阵就是这些矩阵含有大量的0元素。对于这类的矩阵,在用直接法时就会耗费大量的时间和存储单元。因此我们有必要引入一类新的方法:迭代法。 迭代法具有的特点是速度快。与非线性方程的迭代法一样,需要我们构造一个等价的方程,从而构造一个收敛序列,序列的极限值就是方程组的根。迭代法需要主要的是所求方程组的特征值的模必须

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库 > 总结/计划/报告

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号