牛頓迭代法

2021-08-01 14:29:55 字數 722 閱讀 4933

欲求某方程 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 即為方程根,否則退回(1)步繼續計算。

對於函式 f(x) 來說, y = f』( xi )*(x - xi) + f(xi),為經過點 (xi , f(xi))的切線,令 y = 0 計算得到:x = xi - ( f(xi)/ f』( xi ) ) 為切線與 x 軸的交點的橫座標,根據下圖所示,不斷計算切線與 x 軸的交點就可以不斷逼近方程的根:

(上圖**於網路)

要求不能使用庫函式,求解乙個數的立方根。

#include 

#include

using

namespace

std;

double

abs(double a)

double f(double y)

int main()

牛頓迭代法

創新工廠的筆試題 不用庫函式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 ...

牛頓迭代法

今天,沉浸在神犇部落格中的我,看到z姐姐在群裡發的乙個還很有意思的問題 不用庫函式怎麼開根,這題好整啊,頓時感覺到可以從大佬的部落格中解脫一會了 逃 這個問題是很標準的牛頓迭代問題,第一次研究它的時候應該是在大一上學期吧,當時我第一次對一些庫函式的實現產生了好奇 這種好奇止於禽獸的sqrt原始碼 這...