- 1、本文档共8页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
牛顿法在求解计算中应用研究
牛顿法在求解计算中应用研究
摘要: 文章介绍了牛顿迭代算法,通过实例探讨了方程在区间的求解过程,设计了相应的C语言程序,分析了相应的计算结果。
关键词: 牛顿法;C语言;方程;零点
中图分类号:TP399 文献标识码:A 文章编号:1006-4311(2013)17-0196-02
0 引言
牛顿迭代法又称为牛顿-拉夫逊方法,它是牛顿在17世纪提出的一种在实数域和复数域上近似求解方程的方法。多数方程不存在求根公式,因此求精确根非常困难,甚至不可能,从而寻找方程的近似根就显得特别重要。牛顿迭代法是求方程根的重要方法之一,其最大优点是在方程f(x)=0的单根附近具有平方收敛,而且该法还可以用来求方程的重根、复根,此时线性收敛,但是可通过一些方法变成超线性收敛。另外该方法广泛用于计算机编程中。本文为了更有效地说明牛顿法在方程求根中的应用,主要从算法及程序实现上进行研究。
1 牛顿迭代算法
设r是f(x)=0的根,选取x0作为r初始近似值,过点(x0,f(x0))做曲线y=f(x)的切线L,L的方程为y=f(x0)+f(x0)(x-x0),求出L与x轴交点的横坐标x1=x0-f(x0)/f(x0),称x1为r的一次近似值。过点(x1,f(x1))做曲线y=f(x)的切线,并求该切线与x轴交点的横坐标x2=x1-f(x1)/f(x1),称x2为r的二次近似值。重复以上过程,得r的近似值序列,其中x(n+1)=x(n)-f(x(n))/f(x(n)),称为r的n+1次近似值,上式称为牛顿迭代公式。
2 实例的程序设计与分析
为了研究牛顿法求根的过程,假设求方程2x4+24x3+61x2-16x+1=0接近0.1的两根,根据牛顿法的算法,给出以下C语言编写的程序代码,并在VC6.0下进行调试。后对输出的数据进行分析。源程序如下:
#include
#include
void main()
{
int n=0,M; float x,y,s,t,u,v;
printf(plese input x M t and s :\n);
scanf(%f%d%f%f,x,M,t,s);
u=2*x*x*x*x+24*x*x*x+61*x*x-16*x+1;
v=8*x*x*x+72*x*x+122*x-16;
y=x-u/v;
printf(N=%d,x=%f,y=%f,|y-x|=%f,f(x)=%f\n,n,x,y,fabs(y-x),u);
n++;
while(nt fabs???u)s)
{
x=y;
u=2*x*x*x*x+24*x*x*x+61*x*x-16*x+1;
v=8*x*x*x+72*x*x+122*x-16;
y=x-u/v;
printf(N=%d,x=%f,y=%f,|y-x|=%f,f(x)=%f\n,n,x,y,fabs(y-x),u);
n++;
}
}
为了能够找到x=0.1附近的两个根,不妨取x0=0.0,x0=0.1和x0=0.2三个值尝试一下,分别得到如下的结果:
①当x0=0.0时,我们认为x=0.1213是方程的根。
N=0,x=0.000000,y=0.062500,┇y-x┇=0.062500,f(x)=1.000000
N=1,x=0.062500,y=0.092675,┇y-x┇=0.030175,f(x)=0.244171
N=2,x=0.092675,y=0.107509,┇y-x┇=0.014834,f(x)=0.060358
N=3,x=0.107509,y=0.114853,┇y-x┇=0.007344,f(x)=0.014995
N=4,x=0.114853,y=0.118484,┇y-x┇=0.003630,f(x)=0.003725
N=5,x=0.118484,y=0.120243,┇y-x┇=0.001759,f(x)=0.000916
N=6,x=0.120243,y=0.121026,┇y-x┇=0.000783,f(x)=0.000216
N=7,x=0.121026,y=0.121284,┇y-x┇=0.000258,f(x)=0.000043
N=8,x=0.121284,y=0.121320,┇y-x┇=0.000036,f(x)=0.000005
②当x0=0.1时,我们认为x=0.1213是方程的根。
N=0,x=0.100000,y=0.111133,┇y-x┇=0.011133,f(x)=0.03
文档评论(0)