牛頓方法(Newton-Raphson Method)


本博客已經遷往http://www.kemaswill.com/, 博客園這邊也會繼續更新, 歡迎關注~

牛頓方法是一種求解等式的非常有效的數值分析方法.

1.  牛頓方法

假設\(x_0\)是等式的根\(r\)的一個比較好的近似, 且\(r=x_0+h\), 所以\(h\)衡量了近似值\(x_0\)和真實的根\(r\)之間的誤差. 假定\(h\)很小, 根據泰勒展開式:

$$0=f(r)=f(x_0+h)\approx f(x_0)+hf'(x_0)$$

所以, 當\(f'(x_0)\)不接近\(0\)時, 有

$$h\approx -\frac{f(x_0)}{f'(x_0)}$$

所以新的近似值\(x_1\)應該取值:

$$x_1=x_0-\frac{f(x_0)}{f'(x_0)}$$

推廣得

$$x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}$$

2. 牛頓方法的幾何解釋

牛頓方法的幾何解釋很直觀: 在當前點\(x_n=a\)處, 做函數\(f(x)\)的切線, 該切線的\(x\)軸截距就是\(x_{n+1}=b\), 然后再在該點處做切線...以此類推:

newton1

3. 牛頓方法的收斂性:

牛頓方法是二次收斂的: 令\(\epsilon_{n}=r-x_n\), 則\(\epsilon_{n+1}=\frac{-f"(\xi_n)}{2f'(x_n)}\epsilon_n^2\), 亦即在根\(r\)附近時, 牛頓方法的每次迭代基本上都可以使得近似解的有效數字增倍. 證明如下:

令等式的根為\(r\), \(f(x)\)二階可導, 則根據泰勒展開式:

$$f(r)=f(x_n)+f'(x_n)(r-x_n)+R_1$$

其中\(R_1=\frac{1}{2!}f''(\xi_n)(r-x_n)^2\), 其中\(\xi_n\)位於\(x_n\)和\(r\)之間.

因為\(r\)是跟, 則:

$$0=f(r)=f(x_n)+f'(x_n)(r-x_n)+\frac{1}{2}f''(\xi_n)(r-x_n)^2$$

上式除以\(f'(x_n)\)可得

$$\frac{f(x_n)}{f'(x_n)}+(r-x_n)=\frac{-f''(\xi_n)}{2f'(x_n)}(r-x_n)^2$$

因為\(x_{n+1}\)的可以定義為:

$$x_{n+1}=x_n-\frac{f(x_n)}{f'(x_n)}$$

所以

$$r-x_{n+1}=\frac{-f"(\xi_n)}{2f'(x_n)}(r-x_n)^2$$

$$\epsilon_{n+1}=\frac{-f"(\xi_n)}{2f'(x_n)}\epsilon_n^2$$

但是, 當初始值\(x_0\)不在\(r\)附近時, 牛頓方法可能會陷入局部極值或者死循環:

newton2 newton3

4. 割線方法(Secant Method)

割線方法是牛頓方法的變種, 可以避免計算函數的導數.

初始時設置兩個根的近似值\(x_0,x_1\), 對於\(n\leq1\):

$$x_{n+1}=x_n-\frac{f(x_n)}{Q(x_{n-1},x_n)}$$

其中

$$Q(x_{n-1},x_n)=\frac{f(x_{n-1})-f(x_n)}{x_{n-1}-x_n}$$

割線方法通過使用割線來替代牛頓方法中的切線, 來避免可能非常復雜的函數求導. 但是為了達到相同的精度, 割線方法可能多需要45%的迭代次數.

參考文獻:

  [1]. The Newton-Raphson Method

  [2]. William H.Press, Saul A. Teukolsky, William T. Vetterling, Brain P.Flannery. Numerical Recipes: The Art of Scientific Computing. Section 9.4, Newton-Raphson Method Using Derivative.

  [3]. Wikipedia: Newton's Method


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM