gpt4 book ai didi

java - 牛顿拉夫逊无解

转载 作者:行者123 更新时间:2023-12-01 11:48:31 26 4
gpt4 key购买 nike

我正在使用牛顿拉夫森方法来查找 Java 中评估函数的根。我正在使用带有以下终止条件的 while 循环:

while(Math.abs(eval_x/deriv_x) > epsilon)

显然,如果差值大于 epsilon,则可能会产生无限循环。我应该用更大的值替换 epsilon 还是应该包含一个计数器,在达到特定的大值时打破 while 循环?

我想知道如何实现牛顿法的标准终止条件。

最佳答案

通常,对于牛顿法之类的方法,有许多终止条件:

  1. 迭代次数的上限。例程可能会“卡住”或发散,如果找不到根,则应该在一定的最大迭代次数后退出。

  2. x变化的容忍度。这可以是相对的,也可以是绝对的。如果算法使 x 的变化低于某个值(例如 1e-6),并且您尚未收敛,那么您可能会陷入静止点。

  3. 说到驻点,如果您的梯度(导数)低于某个容差,您应该终止,因为您可能最终会到达驻点,并且如果您正在执行一维情况,则除以零。

  4. 函数绝对值的容差。这是您想要接近零的程度的最终衡量标准。

请记住,如果您将函数值容差设置得太紧,牛顿方法可能永远不会产生足够小的 x 值变化,使您处于该容差范围内。因此,为什么您应该停止 dx - 当然还有最大迭代次数。

关于java - 牛顿拉夫逊无解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28955053/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com