非線性方程求解:弦截法和拋物線法

非線性方程求解:弦截法和拋物線法

牛頓迭代法雖然具有收斂速度快的優點,但每迭代一次都要計算函數導數,

而有些函數的導數計算十分麻煩。

弦截法和拋物線法便是爲了避免上述不便而提出的方法.

一、弦截法:

xk+1=xkf(xk)f(xk) 牛頓迭代公式:\\ x_{k+1}=x_k-\frac{f(x_k)}{f^{'}(x_k)}\\

替換牛頓公式中的f’(x),便得到迭代公式:
xk+1=xkf(xk)(xkxk1)f(xk)f(xk1). x_{k+1}=x_k-\frac{f(x_k)(x_k-x_{k-1})}{f(x_k)-f(x_{k-1})}\\ 這就是弦截迭代公式.

算法流程:

在這裏插入圖片描述

注意,弦截迭代發要用到前兩步的結果:

xkxk1. x_{k}和x_{k-1}.

二、拋物線法

根據牛頓多項式插值公式:
Nn(x)=a0+a1(xx0)+a2(xx0)(xx1)+...+an(xx0)(xx1)(xxn1) N_n(x)=a_0+a_1(x-x_0)+a_2(x-x_0)(x-x_1)+...+a_n(x-x_0)(x-x_1)\cdots(x-x_{n-1})
取三次牛頓插值公式得:
N2(x)=f(xk)+f[xk,xk1](xxk)+f[xk,xk1,xk2](xxk)(xxk1) N_2(x)=f(x_k)+f[x_k,x_{k-1}](x-x_k)+f[x_k,x_{k-1},x_{k-2}](x-x_k)(x-x_{k-1})
令上式等於0,得到:
xk+1=xk2f(xk)ω±ω4f(xk)f[xk,xk1,xk2] x_{k+1}=x_k-\frac{2f(x_k)}{\omega±\sqrt{\omega-4f(x_k)f[x_k,x_{k-1},x_{k-2}]}}\\ 式中:\\

{f[xk,xk1]=f(xk)f(xk1)xkxk1f[xk,xk1,xk2](xkxk1)=f[xk,xk1]f[xk2,xk2]xkxk2ω=f[xk,xk1]+f[xk,xk1,xk2](xkxk1) \begin{cases} f[x_k,x_{k-1}]=\frac{f(x_k)-f(x_{k-1})}{x_k-x_{k-1}} \\ \\ f[x_k,x_{k-1},x_{k-2}](x_k-x_{k-1})= \frac{f[x_k,x_{k-1}]-f[x_{k-2},x_{k-2}]}{x_k-x_{k-2}}\\ \\ \omega=f[x_k,x_{k-1}]+f[x_k,x_{k-1},x_{k-2}](x_k-x_{k-1})\\ \end{cases}

上式計算可以得到兩個值,選擇解得時候應該選擇離xk更接近的解.

弦截法和拋物線法只是對迭代公式進行了更改,並不影響算法的流程,可以參考鏈接中的代碼進行算法仿真.

鏈接非線性方程求解 :二分迭代法和牛頓迭代法

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章