非线性方程求根——弦截法

Newton迭代法的改进——弦截法

个人学习笔记!

一、弦截法原理


Newton法要计算函数的导数,当导数不方便计算时,可以利用导数的定义,由相近点处函数值的差来近似,这就得到
弦截法公式:   

求解时需要给出 x0,x1两个初始值。

收敛性:超线性收敛,且收敛阶
注意 :一般非线性方程有多个根,而弦截法只能得到所给初始值附近的一个根。在应用弦截法时应注意这点


二、python程序实现

例题:求函数在x=1附近的根。


import numpy as np
def f(x):
    return x**3-7.7*x*x+19.2*x-15.3
x0 = 1
x1 = 1.655889
f0 = f(x0)
f1 = f(x1)
while(np.abs(x1-x0)>1e-5):
    x2 = x1 - f1*(x1-x0)/(f1-f0)
    x0,x1 = x1,x2
    f0,f1 = f1,f(x1)
print('root:{:.4f}'.format(x2))


经过5次迭代, 输出结果:1.7000,达到精度1e-5,迭代曲线如下: 非线性方程求根——弦截法_第1张图片

你可能感兴趣的:(numerical,computation)