以前也是⽤过这个东西的,但是⼀直都不是很清楚原理。
后来理解了⽜顿法了之后,发现这个东西,就是⽜顿法的⼀个简单的应⽤⽽已。 代码
target: 就是⽬标数
若收敛,则
即,只有当为0即可。
from sympy import*
x = symbols("x")
target =10
func = x **2- target
ffunc = diff(func, x)
MAXSTEP =100
step_count =0
x0 = target /2
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)x=
T+1x−
T
f(x)
′T
maxstepf(x)T
x=
∗x−
∗
f(x)
′∗
f(x)∗
f(x)∗
f(x)=x−
2N