牛顿法求解方程(python)

简述

牛顿迭代法跟之前的不动点迭代法系列的区别,就在于这里考虑的function就是函数本身,而不是之前所说的函数迭代函数。
但是实际上还是类似的。

因为这时候的表达式比较清楚而已
迭代函数:

x k + 1 = x k f ( x k ) f ( x k )

上述的迭代函数,本质上,其实是关于 f ( x ) 的微分中值定理的变形。其实,是一种切线下降法,对于低精度下的要求的话,下降应该是非常迅速的。

代码

from sympy import *
import random

x = symbols("x")

func = x*exp(x)-1
ffunc = diff(func, x)

begin = 1
end = 2

MAXSTEP = 100

step_count = 0

x0 = random.uniform(begin, end)
temp = func.subs(x, x0)

while step_count < MAXSTEP and abs(temp) > 1e-10:
    x0 = x0 - (temp / (ffunc.subs(x, x0)))
    temp = func.subs(x, x0)
    step_count += 1
print(x0)
print(step_count)

猜你喜欢

转载自blog.csdn.net/a19990412/article/details/80816264