牛顿迭代法
求解非线性方程的方法,属于迭代法的一种,原理的话:
x*是这个方程的根,我们在旁边找一个点xk,根据这个点的函数值和导数值,我们可以计算出这条直线和x轴的交点xk+1,然后将xk+1作为下一个xk迭代计算,就能得到答案。
我们将方程整理一下,有:
实际上实现还是很简单的,唯一的难点就是怎么计算函数值和导数值。
计算函数值和导数值
如果是函数值的话,math包中有cos、sin和exp能解决问题,但是还是解决不了求导过程,这时我们就需要使用强大的sympy了。
计算函数值
import sympy as sp
x0 = 1
x = sp.symbols('x')
y = x**2-2*x*sp.exp(-x)+sp.exp(-2*x)
print( float(y.evalf<