牛顿迭代法(Newton's method)又称为牛顿-拉夫逊方法(Newton-Raphson method)。
求解f(x)=x^2-a=0的根,对于该f(x)二阶可导,解x0的周围存在一个区域,只要初始点位于该区域内,那么牛顿法必定收敛。
对于f(x)来说,该方法必然收敛到真正的解周围。
牛顿法本质上先任取一点x0计算切线代替该点处的曲线,计算零点x1,x1比x0更加接近真实的平方根,不断迭代下去。经过推导得到
x(n+1)=x(n)-f(x(n))/f'(x(n))
将f(x)代入得到,X(n+1)=[X(n)+n/Xn]/2
def sqrt_newton(n,epsilon=1e-9):
'''
牛顿迭代法开根
:param n:
:param epsilon: 误差范围
:return:
'''
k=2
while abs(k**2-n)>epsilon:
k=(k+n/k)/2
return k
函数迭代过程:
1.png
网友评论