网站大量收购独家精品文档,联系QQ:2885784924

Newton迭代法求解非线性方程.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Newton迭代法求解非线性方程

Newton迭代法求解非线性方程Newton迭代法概述构造迭代函数的一条重要途径是用近似方程来代替原方程去求根。因此,如果能将非线性方程用线性方程去代替,那么,求近似根问题就很容易解决,而且十分方便。牛顿(Newton)法就是一种将非线性方程线化的一种方法。设是方程的一个近似根,把如果在处作一阶Taylor展开,即:(1-1)于是我们得到如下近似方程:(1-2)设,则方程的解为:(1-3)取作为原方程(1.1)的新近似根,即令:,k=0,1,2,…(1-4)上式称为牛顿迭代格式。用牛顿迭代格式求方程的根的方法就称为牛顿迭代法,简称牛顿法。牛顿法具有明显的几何意义。方程:(1-5)是曲线上点处的切线方程。迭代格式(1-4)就是用切线式(1-5)的零点来代替曲线的零点。正因为如此,牛顿法也称为切线法。牛顿迭代法对单根至少是二阶局部收敛的,而对于重根是一阶局部收敛的。一般来说,牛顿法对初值的要求较高,初值足够靠近时才能保证收敛。若要保证初值在较大范围内收敛,则需对加一些条件。如果所加的条件不满足,而导致牛顿法不收敛时,则需对牛顿法作一些改时,即可以采用下面的迭代格式:,(1-6)上式中,,称为下山因子。因此,用这种方法求方程的根,也称为牛顿下山法。牛顿法对单根收敛速度快,但每迭代一次,除需计算之外,还要计算的值。如果比较复杂,计算的工作量就可能比较大。为了避免计算导数值,我们可用差商来代替导数。通常用如下几种方法:割线法如果用代替,则得到割线法的迭代格式为:(1-7)拟牛顿法如果用代替,则得到拟牛顿法的迭代格式为:(1-8)Steffenson法如果用代替,则得到拟牛顿法的迭代格式为:(1-9)算法分析割线法割线法的迭代公式为:,k=0,1,2,…割线法是超线性收敛,其程序流程图为:拟牛顿法牛顿拟迭代法迭代公式为:对单根条件下,牛顿拟迭代法平方收敛,牛顿拟迭代法程序框图如下所示:(2)对重根条件下,此时迭代公式修改为:,m为根的重数此时,牛顿迭代法至少平方收敛。Steffenson法Steffenson迭代法程序流程图与牛顿拟迭代法类似。牛顿法的程序给定初值,用牛顿法格式,,求解非线性方程。*********************************************************************function[p1,err,k,y]=newton(f1041,df1041,p0,delta,max1)% f1041是非线性函数。% df1041是f1041的微商。% p0是初始值。% delta是给定允许误差。% max1是迭代的最大次数。% p1是牛顿法求得的方程的近似解。% err是p0的误差估计。% k是迭代次数。% y=f(p1)p0,feval(f1041,p0)for k=1:max1 p1=p0-feval(f1041,p0)/feval(df1041,p0); err=abs(p1-p0); p0=p1; p1,err,k, y=feval(f1041,p1) if(errdelta)| (y==0), break, end p1,err,k, y=feval(f1041,p1)end*********************************************************************四、程序实例与计算结果例用上述程序求方程的一个近似解,给定初值为1.2,误差界为。解:先用m文件先定义二个名为f1041.m和df1041.m的函数文件。 function y = f1041(x) y = x^3 – 3*x + 2;function y=df1041(x)y=3*x^2-3;建立一个主程序prog1041.mclearnewton(f1041,df1041,1.2, 10^(-6), 18)然后在MATLAB命令窗口运行上述主程序,即: prog1041计算结果如下:p0 = 1.2000ans = 0.1280p1 = 1.1030err = 0.0970k = 1y = 0.0329p1 = 1.1030err = 0.0970k = 1y = 0.0329p1 = 1.0524err = 0.0507k = 2y = 0.0084p1 = 1.0524err = 0.0507k = 2y = 0.0084p1 = 1.0264err = 0.0260k = 3y =

文档评论(0)

shenlan118 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档