牛頓迭代法求根

2021-06-22 19:32:01 字數 674 閱讀 1496

給定乙個正數a,不用庫函式求其平方根。

設其平方根為x,則有x2=a,即x2-a=0。設函式f(x)= x2-a,則可得圖示紅色的函式曲線。在曲線上任取一點(x0,f(x0)),其中x0≠0那麼曲線上該點的切線方程為

求該切線與x軸的交點得

因為1-2式中x0作為分母,所以在之前限定了一下初始值不要選0。那麼得到的這個與x軸的交點其實是最終要求得的x的一次逼近,我們再以這個x基準繼續迭代就可以求得更逼近的x,至於逼近到什麼時候才算完,這個取決於你自己設定的精度。整個過程的迭代只需要幾步就可以求得最終的結果。

**如下:

#includeusing namespace std;

#includedouble newtonmethod(double ftobesqrted)

return x;

}int main(){

double n;

while(cin>>n){

cout<

當然,從圖中可以看出,當你所取的初始值的橫座標在紅色曲線與x軸交點右邊,即比最終的結果大時,比如選初始值x=a,我們可以將while語句裡面的abs(x*x-ftobesqrted)直接換成ftobesqrted -x*x,這樣可以省去abs的運算。當然這不能確保效率的提公升,因為初始值的選取直接影響了迭代的次數。

牛頓迭代法求根

幫朋友做的乙個題目,關於牛頓迭代法求方程的根.不難,但是費了我很長時間,以前的知識,重新拾起來卻很耗時間。今天做一記錄,一來加深印象,二來備必要時檢視。1 牛頓迭代法的基本知識 參考資料 newton s method and loops 上面的資料闡述很詳細,我就不多加補充。2 問題簡述 用牛頓迭...

牛頓迭代法 求 根

這是乙個求根很牛皮的乙個方法,迭代幾次後精度也變得非常的高了.假設我們求 2的值,用牛頓迭代法.大致過程就是隨便選取乙個自認為離根比較近的,離譜點也沒事,假如選x 4,然後不斷進行如下操作 不斷令 x x f x f x f x x 2 a a 2 所以就是 x 4 14 8 2.25 再一次 x ...

C 迭代法求開方 牛頓迭代法求根近似值

include include double f double x double f2 double x int main printf lf s2 利用牛頓迭代法求方程的根 有這麼乙個方程2x 3 4x 2 3x 6 0 則令f x 2x 3 4x 2 3x 6 求出f x 6x 2 8x 3 下...