ImageVerifierCode 换一换
格式:DOC , 页数:11 ,大小:159.50KB ,
资源ID:113931      下载积分:12 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/113931.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数值计算方法课程设计.doc)为本站会员(b****9)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

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

1、数值计算方法课程设计非线性方程(组)的解法问题的提出分析比较Newton法、Newton法的变形格式。然后分别用Newton 法、简化Newton 法、选取不同的初值求解下面方程组,对于相同的精度要求,比较这两种方法的运行时间。背景分析牛顿法是一种重要迭代法,他是逐步线性化方法的典型代表,牛顿法的特点是每一步都需要计算以及,其计算量比较大,为了减少计算量,提出简化牛顿法。算法思想1、牛顿法设有非线性方程组 其中 由偏导数作成的矩阵记为,称为的雅克比矩阵 设为的解,且设为的近似解。现利用多元函数在点的泰勒公式有其中,在与的所连的线段内。如果用上式中的线性函数近似替代,并将线性方程组 .(1)的解

2、作为的第次近似解记为将(1)式写成矩阵形式,即 为非奇异矩阵,则牛顿迭代公式: (2 )求解非线性方程组牛顿方法为2、简化牛顿法在牛顿法的基础上,为了减少计算量,将均取为,得如下简化牛顿公式: (3 )其中(2)(3)式均为线性收敛的。算法设计将一个非线性方程组写成向量的形式有: F(x) = 0 牛顿迭代法的公式就是: x(k+1)=x(k)-F(x(k)-1F(x(k) 其中F(x(k)为Jacobi矩阵,我写的这段程序就是根据这个公式来的。运用MATLAB中的jacobian求出F的雅克比矩阵,用inv求逆matrix=(varargin)varargin:构造迭代函数在比较牛顿法和简化

3、牛顿法运行时间方面,我们主要是通过比较迭代次数。程序清单牛顿法源程序:function x=newton_solve(F,v,x0,e) if (ischar(F) | ischar(v) %定义类型 error(Parameter F and v should be char type!); end if (isnumeric(x0) | isnumeric(e) error(Parameter x0 and e should be numeric type!); end F=sym(F);v=sym(v);dF=jacobian(F,v);tF=inv(dF)*Ffor index=1:n

4、umel(v) tF=subs(tF,v(index),x( num2str(index) ); %把x分量化,把x1变成x(1),把x2变成x(2)end matrix=(varargin)varargin:.; %构造迭代函数phi=x- char(tF); eval(phi=(x) phi ;); err=inf; %无穷大xold=phi(x0); n=0; while erre xnew=phi(xold); %用本次结果与上次结果差的范数来衡量误差 err=norm(xnew-xold); xold=xnew; n=n+1; %迭代次数大于10000是退出循环 if (n10000

5、) break; end n%迭代次数end x=xold;简化牛顿法的源程序:function x=simnewton_solve (F,v,x0,e) if (ischar(F) | ischar(v) %定义类型 error(Parameter F and v should be char type!); end if (isnumeric(x0) | isnumeric(e) error(Parameter x0 and e should be numeric type!); end F=sym(F);v=sym(v);dF=jacobian(F,v);tF=inv(dF)% dF的逆

6、矩阵tF11= -x0(2)/(-x0(2)+4*x0(1);tF12=1/(-x0(2)+4*x0(1);tF21= 2*x0(1)/(-x0(2)+4*x0(1);tF22=-1/2/(-x0(2)+4*x0(1);tF=tF11,tF12;tF21, tF22 % 把dF的逆矩阵用初始值x0代入,得到一常数矩阵,(简化牛顿法的思想)tF=tF*F;for index=1:numel(v) tF=subs(tF,v(index),x( num2str(index) ); %把x分量化,把x1变成x(1),把x2变成x(2)end matrix=(varargin)varargin:.; %

7、构造迭代函数phi=x- char(tF); eval(phi=(x) phi ;); err=inf; %无穷大xold=phi(x0); n=0; while erre xnew=phi(xold); %用本次结果与上次结果差的范数来衡量误差 err=norm(xnew-xold); xold=xnew; n=n+1; %迭代次数大于10000是退出循环 if (n10000) break; end n%迭代次数end x=xold;运行结果分析newton_solve(x1+2*x2-3;2*x12+x22-5,x1;x2,1.5;1,0.0001)n = 2ans = 1.4880 0

8、.7560simnewton_solve(x1+2*x2-3;2*x12+x22-5,x1;x2,1.5;1,0.0001) n = 3ans = 1.48800.7560newton_solve(x1+2*x2-3;2*x12+x22-5,x1;x2,100;56,0.0001)n = 10ans = 1.48800.7560simnewton_solve(x1+2*x2-3;2*x12+x22-5,x1;x2,100;56,0.0001)n = 388ans =1.49380.7531上面的结果是牛顿法和简化牛顿法同精度同初值的解法以及不同初值同精度得出来的,我们利用迭代次数来比较它们运行

9、的快慢(即运行的时间),我们本题的初值和精度可以任意取值,从而得出迭代次数以及结果。从结果可以看出,简化牛顿法相比起牛顿法迭代次数要多一些,而且简化牛顿法的值误差较大,因此用牛顿法解非线性方程组要比简化牛顿法要好。问题分析在我们参考了MATLAB相关书籍之后,通过在网上的查阅,基本编写出牛顿法解非线性方程组的程序,在这个程序的基础上我们来改进用以实现简化牛顿法解非线性方程组,我们主要遇到的是要怎么使它可以在程序中赋初值之后直接生成,最后这个没有解决,所以我们选择了赋初值后,直接把求出来,再把的值作为常量带入程序中求解。总结本次的程序设计,我们用MATLAB编写了牛顿法解非线性方程以及简化的牛顿

10、法解非线性方程的程序。牛顿法是通过牛顿迭代法的公式:x(k+1)=x(k)-F(x(k)-1F(x(k) ,带入初值及给定精度的范围,得出方程组的解。简化牛顿法,实在牛顿法的基础上,把雅可比矩阵的逆的初始矩阵算出来,再通过迭代的出的解。我们选取了不同的初值解非线性方程组。并且对于同初值同精度问题,分别用牛顿法和简化的牛顿法解得简化的牛顿法迭代的次数更多。说明简化的牛顿法迭代精度更低而且求的的解误差较大。这与理论是相符合的。牛顿法和简化牛顿法都有优点也有缺点,我们在解决问题的时候,要结合自己的实力和自己所需的选择恰当的方法。我们从不懂到懂得这个过程让我们收获很多,通过不断地学习,查阅资料以及修改

11、程序,一个从无到有的积累,我们不仅仅是在做题,也是在学习处理任何问题的方法。遇到困难不要轻易放弃,要善于利用和整合资源,这都是生活必不可少的。心得体会数值计算方法是一门应用范围很广的课程,是信息与计算科学专业的一门主要专业基础课程,通过这次实验上机才知道原来我们可以运用MATLAB和C语言以及其他的相关汇编语言来编辑程序解决数值计算方法里面很多问题。在学习了理论知识之后,如何去具体的处理数学中的问题,如何把我们的理论运用到实践中去,这样的课程设计为我们提供了这样一个实践平台。通过这次实验,我收获颇多。首先是对MATLAB软件的认识有了进一步的提升。它简单易学、计算功能强等。MATLAB具有强大

12、的矩阵运算、数据处理的功能,它输出的结果可视化。编程效率高,比C语言简单,让我们比较容易接受,所以我们在解决这道题的时候选择了使用matlab这种高级编程语言。我们也通过这次上机实验对数值计算方法有了更进一步的巩固。其次,通过这次上机实验,我对牛顿法有了更深一层的理解。牛顿法是一种重要迭代法,他是逐步线性化方法的典型代表。为了减少计算量,牛顿法还衍生出许多的变格形式,比如下降牛顿法、阻尼牛顿法、简化牛顿法、修正牛顿法、拟牛顿法等等,这里我们主要是用了牛顿法和简化牛顿法来解非线性方程组,并对这两种方法做了一个比较,通过精度的分析,迭代次数的比较得出牛顿法迭代次数比较少,但计算量大;简化的牛顿法迭

13、代次数多但计算量相对较少。所以是各有所长,都能解决我们的问题。通过这次实验让我了解到合作的重要性,在处理问题的时候,当自己冥思苦想也想不出来解决方案的时候,不妨选择请教老师,和同学讨论。可以达到事半功倍的效果。我们的工作是一个团队的工作,团队需要个人,个人也离不开团队,必须发扬团结协作的精神。某个人的离群都可能导致整项工作的失败。实习中只有一个人知道原理是远远不够的,必须让每个人都知道,否则一个人的错误,就有可能导致整个工作失败。团结协作是我们实习成功的一项非常重要的保证。而这次实习也正好锻炼了我们的这一点,这对于我们的整个人生来说,都是非常宝贵的。 解决党委自身和基层党支部存在的的突出问题,发挥各村、社区、机关单位党支部在当前城市征迁、园区建设、招商引资、服务群众、维护稳定的作用,我镇党委高度重视,制定了切合临淮实际的活动实施方案,按照中央规定的活动步骤和要求扎实有效的开展了基层组织建设年活动。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1