牛顿法解非线性方程组实验汇报.docVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
牛顿法解非线性方程组实验汇报

实验名称: 牛顿法解非线性方程组 引言 我们已经知道,线性方程组我们可以采取Jacobi迭代法,G-S迭代法以及SOR迭代方法求解。而在科学技术领域里常常提出求解非线性方程组的问题,例如,用非线性函数拟合实验数据问题、非线性网络问题,用差分法求解非线性微分方程问题等。 我们在解非线性方程组时,也考虑用迭代法求解,其思路和解非线性方程式一样,首先要将F(x)=0转化为等价的方程组 或者简记为x=g(x),其中 迭代法:首先从某个初始向量开始,按下述逐次代入方法构造一向量序列: 其中,。 或写成向量形式: 如果(存在),称为收敛。且当为连续函数时,可得 说明为方程组的解。又称为x=g(x)的不动点。 本实验中采用牛顿迭代法来求解非线性方程组。 实验目的和要求 运用matlab编写一个.m文件,要求用牛顿法非线性方程组: 算法原理与流程图 1、算法原理 设有非线性方程组 F(x)=0 其中: 由偏导数作成的矩阵记为J(x)或称为F(x)的Jacobi矩阵 设为F(x)=0的解,且设,为的近似解,现利用多元函数 在点的泰勒公式有 其中,在与x的所连的线段内。 如果用泰勒公式中的线性函数近似代替,并将线性方程组 的解作为的第k+1次近似解记为 将上述方程写成矩阵形式: 如果为非奇异矩阵,则得到牛顿迭代公式: 求解非线性方程组F(x)=0牛顿法或为 用上式可知,每计算一步,需要: 计算矩阵及; 求解一个线性方程组: 计算。 2、流程图见附图1 程序代码及注释 %牛顿法解非线性方程组 function [Z,P,k,e] = newton(P,e0) %用P输入初始猜想矩阵,不断迭代输出计算解 %Z为迭代结束后的F矩阵 %k为迭代次数,e为每次迭代后的无穷范数,e0为误差限 Z=F(P(1),P(2)); J=JF(P(1),P(2)); Q=P-J\Z; e=norm((Q-P),inf); P=Q; Z=F(P(1),P(2)); k=1; while e=e0 J=JF(P(1),P(2)); Q=P-J\Z; e=norm((Q-P),inf); P=Q; Z=F(P(1),P(2)); k=k+1; end end %子函数一,用来求每一步的F(x) function [out]=F(x,y) syms x1 x2; f1=x1-0.5*cos(x2); f2=x2-0.5*sin(x1); Y=[f1;f2]; x1=x; x2=y; out=subs(Y); end %子函数二,用来求每一步的Jacobi矩阵 function [y]=JF(x,y) syms x1 x2 f1=x1-0.5*cos(x2); f2=x2-0.5*sin(x1); df1x=diff(sym(f1),x1); df1y=diff(sym(f1),x2); df2x=diff(sym(f2),x1); df2y=diff(sym(f2),x2); j=[df1x,df1y;df2x,df2y]; %j中的元素为一阶偏导数 x1=x; x2=y; y=subs(j); end  5算例分析 (1)首先输入系数矩阵初始猜想解和误差限e0 P=[0 0]; e0=0.001;(2)输出结果 [Z P k e]=newton(P,e0) Z = 1.0e-009 * 0.550442413871366 0.398026500647575 P = 0.486405155145713 0.233725502568820 k = 3 e = 5.835820948590920e-005其中,P为计算解,k为迭代次数,Z为第k次迭代后的F矩阵,e为第k次迭代后的 6讨论与结论 时间复杂度: tic;[Z P k e]=newton(P,e0);toc Elapsed time is 0.068248 seconds.程序优化 在本次的程序设计中,我采用了C语言中子函数调用的思想,使得程序的可读性增强,条理清晰。 其次,在求每一步的时,要解方程,此语句可以用 Q=P-inv(J)*Z;但考虑到算法的时间复杂性,本语句采用了Q=P-J\Z来实现,从而减少了计算机时间。 参考文献 [1] 易大义,沈云宝,李有法. 计算方法(第2版),浙江大学出版社. p.29-53. [2] 张琨 高思超 毕靖 编著 MATLAB2010从入门到精通 电子工业出版社 输入n,x,ε,N0 计算 输出x,S,k k=1,2,…,N0 求解线性方程组 J(x)Y=-F(x) 计算 计算 输出迭代N0次还没有达到精度要求信息 Stop Sε Y N 附图1

文档评论(0)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档