牛顿迭代法
作者:@houkai
本文为作者原创,转载请注明出处:https://www.cnblogs.com/houkai/p/3332520.html
1. 迭代公式建立
将在
点的Taylor展开如下:
一阶泰勒多项式:
近似于
2. 牛顿迭代法的几何解析
在处做曲线的切线,切线方程为:
令得切线与x轴的交点坐标为
,这就是牛顿迭代法的迭代公式。因此,牛顿法又称“切线法”。
Newton迭代法的特点是:
1. 对初值的选取要求较高。一般的,Newton迭代法只有局部收敛性,当初值
在收敛区间里时,收敛速度很快(平方收敛)。但初值
离方程根x*较远时,不能保证Newton迭代法收敛。
2. Newton迭代法求单根时,收敛速度很快(平方收敛)。但如果方程根是重根,则收敛速度较慢,且重数越高速度越慢。但当
是m重根时,用下面的迭代格式:
则至少能保持平方收敛。
3.应用:用有Newton迭代法求
求解:设,则
取
程序实现:
#define ABS(VAL) (((VAL)>0)?(VAL):(-(VAL))) //用牛顿迭代法求浮点数的平方根 double mysqrt(float x) { double g0,g1; if(x==0) return 0; g0=x/2; //初值 g1=(g0+x/g0)/2; while(ABS(g1-g0)>0.01) //终止条件 { g0=g1; g1=(g0+(x/g0))/2; //迭代规则 } return g1; }
或
double sqr(double n) { double k=1.0; while(abs(k*k-n)>1e-9) { k=(k+n/k)/2; } return k; }
附加:
1. Newton下山法
由于当初值离方程根
较远时,不能保证Newton迭代法收敛,但一旦
进入收敛区间,则收敛速度很快。为使
尽快进入收敛区间,常采用Newton下山法:
称为下山因子
具体做法如下:
1. 选取初值
![]()
2. 取下山因子(可修改)
3. 计算![]()
4. 计算并比较
与
的大小:
若,则
1) 当时,取
,结束;
2) 当时,将
作为新的
值继续计算;
若,则取
,返回3。
2. 弦截法(方程常用的求解方法)
将Newton切线法中的切线斜率用弦的斜率替换:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架