非线性方程求解:弦截法和抛物线法
牛顿迭代法虽然具有收敛速度快的优点,但每迭代一次都要计算函数导数,
而有些函数的导数计算十分麻烦。
弦截法和抛物线法便是为了避免上述不便而提出的方法.
一、弦截法:
牛顿迭代公式:xk+1=xk−f′(xk)f(xk)
替换牛顿公式中的f’(x),便得到迭代公式:
xk+1=xk−f(xk)−f(xk−1)f(xk)(xk−xk−1)这就是弦截迭代公式.
算法流程:

注意,弦截迭代发要用到前两步的结果:
xk和xk−1.
二、抛物线法
根据牛顿多项式插值公式:
Nn(x)=a0+a1(x−x0)+a2(x−x0)(x−x1)+...+an(x−x0)(x−x1)⋯(x−xn−1)
取三次牛顿插值公式得:
N2(x)=f(xk)+f[xk,xk−1](x−xk)+f[xk,xk−1,xk−2](x−xk)(x−xk−1)
令上式等于0,得到:
xk+1=xk−ω±ω−4f(xk)f[xk,xk−1,xk−2]2f(xk)式中:
⎩⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎧f[xk,xk−1]=xk−xk−1f(xk)−f(xk−1)f[xk,xk−1,xk−2](xk−xk−1)=xk−xk−2f[xk,xk−1]−f[xk−2,xk−2]ω=f[xk,xk−1]+f[xk,xk−1,xk−2](xk−xk−1)
上式计算可以得到两个值,选择解得时候应该选择离xk更接近的解.
弦截法和抛物线法只是对迭代公式进行了更改,并不影响算法的流程,可以参考链接中的代码进行算法仿真.
链接非线性方程求解 :二分迭代法和牛顿迭代法