簡介

牛頓迭代法(簡稱牛頓法)由英國著名的數(shù)學(xué)家牛頓爵士最早提出。但是,這一方法在牛頓生前并未公開發(fā)表。

 

萬碼學(xué)堂,電腦培訓(xùn),計算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

 

牛頓法的作用是使用迭代的方法來求解函數(shù)方程的根。簡單地說,牛頓法就是不斷求取切線的過程。

對于形如f(x)=0的方程,首先任意估算一個解x0,再把該估計值代入原方程中。由于一般不會正好選擇到正確的解,所以有f(x)=a。這時計算函數(shù)在x0處的斜率,和這條斜率與x軸的交點(diǎn)x1。

f(x)=0中精確解的意義是,當(dāng)取得解的時候,函數(shù)值為零(即f(x)的精確解是函數(shù)的零點(diǎn))。因此,x1比x0更加接近精確的解。只要不斷以此方法更新x,就可以取得無限接近的精確的解。

但是,有可能會遇到牛頓迭代法無法收斂的情況。比如函數(shù)有多個零點(diǎn),或者函數(shù)不連續(xù)的時候。

 

牛頓法舉例

 

下面介紹使用牛頓迭代法求方根的例子。牛頓迭代法是已知的實(shí)現(xiàn)求方根最快的方法之一,只需要迭代幾次后就能得到相當(dāng)精確的結(jié)果。

首先設(shè)x的m次方根為a。

萬碼學(xué)堂,電腦培訓(xùn),計算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

 

下面程序使用牛頓法求解平方根。

萬碼學(xué)堂,電腦培訓(xùn),計算機(jī)培訓(xùn),Java培訓(xùn),JavaEE開發(fā)培訓(xùn),青島軟件培訓(xùn),軟件工程師培訓(xùn)

 1 const float EPS = 0.00001; 
 2 int sqrt(double x) { 
 3     if(x == 0) return 0; 
 4     double result = x; /*Use double to avoid possible overflow*/  5     double lastValue; 
 6     do{ 
 7         lastValue = result; 
 8     &nbs