牛頓迭代法及應用

2021-08-21 09:26:17 字數 1339 閱讀 1021

今天遇到乙個題,不用庫函式求立方根。網上有很多介紹了,就是使用牛頓迭代法進行近似計算。下面自己總結一下。

下面首先介紹一下牛頓迭代法:牛頓迭代法的核心思想是使用泰勒級數的線性項近似計算函式f(x)=0的根。把f(x)在點x0

x

0的某鄰域內展開成泰勒級數,取其線性部分(即泰勒展開的前兩項),並令其等於0, 即 f

(x)+

f′(x

0)(x

−x0)

=0f (x

)+f′

(x0)

(x−x

0)=0

,以此作為非線性方程 f(x)=0的近似方程,即切線方程(p.s. 其實就是兩點式直線方程y-y0

y

0=k(x-x0

x

0)),若f′

(x)≠

0 f′(

x)≠0

,則其解為x=

x0−f

(x)f

′(x)

x =x

0−f(

x)f′

(x), j將其推廣,得到牛頓迭代法的乙個迭代關係式xn

+1=x

n−f(

xn)f

′(xn

) xn+

1=xn

−f(x

n)f′

(xn)

。通俗的講,這個迭代過程先隨機先乙個初始點x0

x

0,過(x0

x

0,f(x0

x

0))做函式的切線,將切線和橫座標的切點做下乙個點繼續做切線,知道切線和函式的切點落在橫座標上。下面的動畫可以形象的展示這一過程。

接下來我們的目標就是構造出f(x)=0,以求立方根為例,我們只要令

f(x)=x3

−nx 3−

n就可以。剩下的就是將上面的想法編碼實現:

public

double

f(double x, double num) // 函式

public

double _f(double x) // 導函式

public

double

getcuberoot(double input)

while(f(x,input) > 0.00001 || f(x,input) < -0.00001);

return x;

}

牛頓迭代法

創新工廠的筆試題 不用庫函式sqrt 求乙個整型數n的開方,要求精度達到0.001即可。在這裡首先介紹一下牛頓迭代法 假設乙個方程為 f x 0 那麼假設其解為x0,則用泰勒級數展開之後可得 f x f x0 f x0 x x0 0 其中x為其近似解。根據上式推導出 x x0 f x0 f x0 這...

牛頓迭代法

目前接觸到的牛頓迭代法主要應用於兩個方面 1 方程求根問題 2 最優化問題。1 求解方程。並不是所有的方程都有求根公式,或者求根公式很複雜,導致求解困難。利用牛頓法,可以迭代求解。原理是利用泰勒公式,在x0處展開,且展開到一階,即f x f x0 x x0 f x0 求解方程f x 0,即f x0 ...

牛頓迭代法

欲求某方程 f x 0 的根,按照以下步驟進行求解 令x0 1 也可以選擇其他值 i 0,1,2 1 求出 f xi 和 導數f xi 2 令 x i 1 xi f xi f xi 3 將 x i 1 帶入方程 f x 計算方程值,當方程值與目標值的誤差小於預定值時,退出演算法輸出 x i 1 即為...