牛顿迭代法求简单超越方程根的原理及python实现

牛顿迭代法原理很简单,就是把f(x)x_0一阶泰勒展开,即f(x)\approx f(x_0)+f^ {'}(x_0)(x-x_0)

注意这里是近似相等。所以f(x)=0的解近似f(x_0)+f^{'}(x_0)(x-x_0)=0的解,即x=x_0-f(x_0)/f^{'}(x_0),在这里先浅浅理解一下x_0x的意义,我们首先猜测f(x)=0的解是x_0,然后我们用上述近似得到了一个更接近真实解的解x,那么一个迭代公式便产生了:x_{k+1}=x_{k}-f(x_k)/f^{'}(x_k),迭代到一定程度我们就认为我们求出了f(x)=0的解。

下面是python代码,注意tol不能太小。

    import math

    def f(x):
        return f(x)表达式

    def df(x):
        return dfx(x)表达式

    def newton_solve(func, dif, x0):
        tol = 1e-9
        fx = func(x0)
        dfx = dif(x0)
        x1 = x0 - fx / dfx
        while abs(x1 - x0) > tol:
            x0 = x1
            fx = func(x0)
            dfx = dif(x0)
            x1 = x0 - fx / dfx
        return x1

你可能感兴趣的:(迭代法,python)