非線性方程求解:弦截法和拋物線法
牛頓迭代法雖然具有收斂速度快的優點,但每迭代一次都要計算函數導數,
而有些函數的導數計算十分麻煩。
弦截法和拋物線法便是爲了避免上述不便而提出的方法.
一、弦截法:
牛頓迭代公式: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更接近的解.
弦截法和拋物線法只是對迭代公式進行了更改,並不影響算法的流程,可以參考鏈接中的代碼進行算法仿真.
鏈接非線性方程求解 :二分迭代法和牛頓迭代法