如何在给定间隔下使用牛顿法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在给定间隔下使用牛顿法相关的知识,希望对你有一定的参考价值。

我可以通过使用牛顿法通过从新的x值减去旧的x值并检查收敛准则来计算函数的根。给定一个封闭的时间间隔时,有没有办法做到这一点,例如

给定一个函数且间隔[a,b] = [0.1,3.0],将通过检查[3.0-0.1] <0.000001,即[b-a] <0.000001。]来计算收敛标准。

我提供的代码正在使用x值计算收敛准则。我正在尝试找出是否可以使用间隔而不是x值的方法。

from math import *

x = 1.0 #initial value

for j in range(1, 101):
    xnew = (x**2 + cos(x)**2 -4*x)/(2*(x - cos(x)*sin(x) -2))

    if abs(xnew - x) < 0.000001:
        break
    x = xnew

print('Root = %0.6f ' % xnew)
print('Number of iterations = %d' % j)

我可以通过使用牛顿法通过从新的x值减去旧的x值并检查收敛准则来计算函数的根。给定一个封闭的位置时,有没有办法...

答案

我认为您要问的是如何检查一系列间隔以查看哪些包含根?

另一答案
听起来您想保证在给定的时间间隔内找到了根(牛顿-拉夫森不能保证这一点)。您可以为此使用二等分。如果您知道函数在给定的间隔内更改符号(并且在同一间隔内是连续的),则类似于以下内容:

以上是关于如何在给定间隔下使用牛顿法的主要内容,如果未能解决你的问题,请参考以下文章

优化器--牛顿法总结

『科学计算_理论』优化算法:梯度下降法&牛顿法

第十一章 拟牛顿法

常见的几种最优化方法(梯度下降法牛顿法拟牛顿法共轭梯度法等)

最优化--牛顿法求解多元函数极值例题(python)

二分查找法和牛顿法求根号的实现