数值计算方法课程设计.doc

上传人:文库蛋蛋多 文档编号:4194952 上传时间:2023-04-09 格式:DOC 页数:10 大小:108.50KB
返回 下载 相关 举报
数值计算方法课程设计.doc_第1页
第1页 / 共10页
数值计算方法课程设计.doc_第2页
第2页 / 共10页
数值计算方法课程设计.doc_第3页
第3页 / 共10页
数值计算方法课程设计.doc_第4页
第4页 / 共10页
数值计算方法课程设计.doc_第5页
第5页 / 共10页
点击查看更多>>
资源描述

《数值计算方法课程设计.doc》由会员分享,可在线阅读,更多相关《数值计算方法课程设计.doc(10页珍藏版)》请在三一办公上搜索。

1、设计成绩:重庆邮电大学 数学与应用数学 专业数值计算方法课程设计姓名: 李金徽 王莹 刘姝楠 班级: 1131001 1131002 1131002 学号: 2010213542 2010213570 2010213571 设计时间: 2012-6-4 指导教师: 朱伟 一、 课程设计目的在科学计算与工程设计中,我们常会遇到求解线性方程组的问题,对于系数矩阵为低阶稠密矩阵的线性方程组,可以用直接法进行消元,而对于系数矩阵为大型稀疏矩阵的情况,直接法就显得比较繁琐,而迭代法比较适用。比较常用的迭代法有Jacobi 迭代与Gauss seidel 迭代。本文基于两种方法设计算法,并比较他们的优劣。

2、二、 课程设计内容给出Jacobi迭代法和Gauss-Seidel迭代法求解线性方程组的算法思想和MATLAB程序实现,并对比分析这两种算法的优劣。三、 问题的分析(含涉及的理论知识、算法等)Jacobi迭代法方程组迭代法的基本思想和求根的迭代法思想类似,即对于线性方程组Ax = b( 其中),即方程组将系数矩阵A写为若选取,则,方程组转化为等价方程组。Gauss-Seidel迭代法算法步骤:Jacobi步骤第一步:输入A,b,x0,e的初始值第二步:求出b的长度,和A的大小;判断输入变量的个数,使x与x0之间产生差值,设定,给定k的初始值;第三步:求出上下三角矩阵进而求出对角矩阵的逆;第四步

3、:求出谱半径,当谱半径小于一时,用while循环,当满足时,k=k+1;。若谱半径不小于一,则迭代法发散。Gauss-Seidel步骤:第一步:输入A,b,x0,e的初始值第二步:求出b的长度,和A的大小;判断输入变量的个数,使x与x0之间产生差值,设定,给定k的初始值;第三步:求出下三角矩阵并求出它的逆;第四步:求出谱半径,当谱半径小于一时,用while循环,当满足时,k=k+1;。若谱半径不小于一,则迭代法发散。四、 计算过程(含涉及编写的程序、计算结果截屏等)Jacobi程序:先建立一个m文件程序为:function x,k=Jacobi(A,b,x0,e)n=length(b);if

4、nargin4,e=1e-4;endif nargin3,x0=zeros(n,1);endx=x0;x0=x+2*e;k=0;m=size(A);for i=1:m Al(i:m,i)=A(i:m,i); Au(i,i:m)=A(i,i:m); a(i,i)=1;endiAl=a/Al;iAu=a/(Al+Au-A);B=-iAu*(2*A-Au-Al);C=eig(B);p=max(abs(C)if pe k=k+1; x0=x;x=-iAu*(2*A-Au-Al)*x0+iAu*b; disp(x) endelseif p=1,warning(reached the Max-number

5、 of iterations);end在matlab中的举例运行的计算结果为: A=10 -1 -2;-1 10 -2;-1 -1 0.5; b=7.2 8.3 4.2; x,k=Jacobi(A,b,0 0 0,1e-4)p =0.9458x = 24.4996 24.5996 106.5983k = 198Gauss-Seidel程序:先建立一个m文件程序为:function x,k=GaussSeidel(A,b,x0,e)n=length(b);if nargin4,e=1e-4;endif nargin3,x0=zeros(n,1);endx=x0;x0=x+3*e;k=0;m=si

6、ze(A);for i=1:mAl(i:m,i)=A(i:m,i);a(i,i)=1;endiAl=a/Al;B=-iAl*(A-Al);C=eig(B);p=max(abs(C)if pe k=k+1; x0=x;x=-iAl*(A-Al)*x0+iAl*b; disp(x) endelseif p=1,warning(reached the Max-number of iterations);end在matlab中的举例运行的计算结果为: A=10 -1 -2;-1 10 -2;-1 -1 0.5; b=7.2 8.3 4.2; x,k=GaussSeidel(A,b,0 0 0,1e-4

7、)p =0.8947x = 24.4998 24.5998 106.5992k = 106由于147 A=1 2 -2;1 1 1;2 2 1; b=1 2 2; x,k=Jacobi(A,b,0 0 0,1e-4)p = 9.1754e-006 1 2 2 1 -1 -4 -5 5 2 -5 5 2x = -5 5 2k = 4 A=1 2 -2;1 1 1;2 2 1; b=1 2 2; x,k=GaussSeidel(A,b,1 1 1,1e-4)p = 2Warning: reached the Max-number of iterations In GaussSeidel at 22

8、x = 1 1 1k = 0此时雅可比(Jacobi)可以迭代而高斯-塞德尔(Gauss-Seidel)则发散。五、问题求解结果的分析与结论雅可比(Jacobi)迭代法和高斯-塞德尔(Gauss-Seidel)迭代法是迭代法中的两种。两种迭代法的本质区别在于:Gauss-Seidel迭代不断地运用新值替代旧值,而Jacobi迭代却不是。在实际计算时,Gauss-Seidel迭代法的迭代格式比Jacobi迭代格式紧凑,并且只需要一套存放迭代向量单元。凡是迭代法都有收敛性与识差估计的问题,对于一个给定的方程组,某些迭代法收敛的快,而有些迭代法可能不收敛,或收敛的慢,以至于无实用价值。对于A满足一定

9、条件时Gauss-Seidel迭代法的收敛速度是比Jacobi迭代法的收敛速度快的结论得到了验证。六、课程设计的总结与体会(含每位同学承担的主要工作等)程序设计体会王莹(2010213570):在这次程序设计中我主要担任编写运行程序。这次程序设计,给我带来了很多收获。数值已经学了一个学期了,许多知识都在似懂非懂的现象,但这种现象通过实际的上机操作,已经减少了许多。对这些知识也有了更深的理解和很好的掌握。也有很多理论上说得过去的代码,但到了实际操作,却是行不通的。这种困惑,有许多已经通过实际操作解决了,并能够深刻认识,但也有很多没有明白。只能避过这些方法,换方法实现。在课程设计之前,因为有了综合

10、实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输入电脑,并用编译器将其运行,发现通过不了,再来检查找出问题,这是一件非常辛苦的事情,也很浪费时间。但是多种方法写程序也可以锻炼自己多种思维方式解决一个问题的能力。刘姝楠(2010213571):在本次课程设计中,我主要负责编写算法,首先,我仔细阅读了教材,对这两种算法有了初步的认识,其次,认真的梳理了知识体系,通过比较,体会到了两种算法的差异,最后,通过实际上机操作编写了Jacobi算法,G-S算法。通过本次的课程设计让我深刻体会到了要学好数值计算这门学科,并不只是简单的学习课本上的理论知识,而是更注重实践,也就是数学知识和应用

11、软件的结合。这也就要求我们要学会提炼课本中的精华来编写算法,编写程序,通过程序来解决实际问题,这让我充分的体会到自己这方面的欠缺。自己以后要加强运用数学软件解决实际问题的能力,要学以致用。李金徽(2010213542)本次课程设计我主要担任了查找相关信息,整篇文章的书写、修改和最后定稿。我先对Jacobi 迭代与Gauss seidel 迭代的应用进行实验,查找问题,并对比他们的差异。其次认真体会数学编程、课程设计所带给我们的知识的深化。我认为学习数学的过程不仅是扎实掌握基础知识,学习其理论思想,更重要的是应用到更广泛的领域中去。学以致用才是重中之重。在团队协作的过程中,我们各有所长,分工明确,促使这次共同学习的过程深刻而愉快,我们每个人都分享自己的想法,才使课设设计的问题得到最好的解决。通过这次实验我了解到了自身的不足与优势,也使我对学习数学的目的更加明确。我会继续努力,不断前行。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号