1. 程式人生 > >一元方程求根

一元方程求根

已知 f ( x ) = 0 f(x)=0 ,求x.

1.二分法求根

要求: f

( x ) f(x) 連續,且在[a,b]上有根
優點:簡單可靠
缺點:不能求復根和偶重根
解決:選用一個合適的步長h對[a,b]進行掃描搜尋,當發現哪個子區間有根時再用二分法求其中之根。
在這裡插入圖片描述
在這裡插入圖片描述

2.牛頓迭代法

優點:具有平方收斂的速度
缺點:

  • 重根情形下為區域性線性收斂
  • 計算量大(除了要計算函式值還要計算導數值)
  • 選取的初始值要靠近精確解(解決:先用二分法求出足夠精度的 x 0 x_0 再用牛頓法迭代到收斂為止)
    在這裡插入圖片描述

補充知識

1、泰勒公式

將一個在 x =

x 0 x=x_0 處具有n階導數的函式 f ( x ) f(x) 利用關於 ( x x 0 ) (x-x_0) 的n次多項式來逼近函式的方法。
f ( x ) = i = 0 n f ( i ) ( x 0 ) i ! ( x x 0 ) i + R n ( x ) f(x)=\sum_{i=0}^n\frac{f^{(i)}(x_0)}{i!}(x-x_0)^i+R_n(x)
其中 f ( i ) ( x ) f^{(i)}(x) 代表 x x i i 階導數,剩餘的 R n ( x ) R_n(x) 是泰勒公式的餘項,是 ( x x 0 ) n (x-x_0)^n 的高階無窮小。

2、牛頓法對方程重根的處理

  • 已知重根的重數m(m>1),利用m構造新的迭代公式
    x k + 1 = x k m f ( x k ) f ( x k ) ( k = 0 , 1 , . . . ) x_{k+1}=x_k-m\frac{f(x_k)}{f^{'}(x_k)}\quad (k=0,1,...)
  • 未知重根的重數,新迭代公式是
    x k + 1 = x k f ( x k ) f ( x k ) [ f ( x k ) ] 2 f ( x k ) f ( x k ) ( k = 0 , 1 , . . . ) x_{k+1}=x_k-\frac{f(x_k)f^{'}(x_k)}{[f^{'}(x_k)]^2-f(x_k)f^{''}(x_k)}\quad (k=0,1,...)
    缺點:需要求 f f 的2階導數,計算量大,應用前提是 f ( x ) f(x) 要簡單。