为什么用newton-raphson方法查找带有日志的返回错误

如上所述,我已经进行了牛顿-拉普森方法来查找给定数的平方根

def newton(f, fprime, eps):

    x0 = 10
    while True:
        fx0 = f(x0)
        if abs(fx0) < eps:
            return x0
        fpx0 = fprime(x0)
        if fpx0 == 0:
            return None
        x0 = x0 - fx0/fpx0

我知道一般情况下您不应该使用True循环,但就我而言,这很好,我的问题是当f(x)= logx且f'(x)= 1 / x时,我运行代码并获得数学公式错误,我假设是通过记录负数或除以0。无论如何,关于如何解决它的一些帮助都将非常有用,因为我似乎无法找到为什么只有日志有问题的原因

评论
  • 自恋狂
    自恋狂 回复

    尝试将初始x0猜测值更改为更接近根的值。

    例如,x0 = 2将为您提供解决方案。