继续求根的数值算法。这次介绍牛顿法和割线法。
3. 牛顿迭代法
该算法是数值分析中最著名也是最强健的数值方法之一,其迭代公式为:
例如,还是求方程:
在[1,2]之间的根,其算法及测试代码为:
def f(x):
return x**3-x-1
def df(x):
return 3*x**2-1
def newton(f,df,p0,tol):
cnt=0
ret=0
while True:
p=p0-f(p0)/df(p0)
if math.fabs(p-p0) < tol:
ret=p
break
cnt+=1
p0=p
return ret,cnt
x,cnt=newton(f,df,1,1e-6)
print(cnt,x) # 4 1.3247179572447898
可以看到,只需要4次就可以计算出误差在1e-6的水平。
4. 割线法
牛顿法速度快效率高,但是有个很

最低0.47元/天 解锁文章
2174

被折叠的 条评论
为什么被折叠?



