牛頓迭代法實現平方根函式

2021-07-06 01:07:36 字數 1273 閱讀 4923

平方根函式sqrt() 用來求乙個數的平方根,如何實現這個函式?有多種方法,這裡記錄一種比較常用的牛頓迭代法

牛頓迭代法(newton·s method)又稱為牛頓-拉夫遜(拉弗森)方法(newton-raphson method),它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。

牛頓迭代法可以用來求方程近似的根。那麼具體過程如何來求?假設

函式的f(x

) 的根為r,那麼我們任選取點x0

作為r的初始近似值,進行以下的步驟:過點(

x0,f

(x0)

) 做曲線的切線l,切線l的方程為:y=

f(x0

)+f′

(x0)

(x−x

0)求得切線l與x軸的交點:x1

=x0−

f(x0

)/f′

(x0)

,計算|x

0−x1

| 的差值,若差值小於某個閾值,那麼停止演算法;若沒有,以x1

為新的點繼續重複上述第一步

計算過程中,xn

+1稱為r的 n+

1 次近似值,而xn

+1=x

n−f(

xn)/

f′(x

n)即稱為牛頓迭代公式。

整個過程如下圖( 摘自網路):

假設輸入數是s,那麼要求的平方根為x,滿足s=

x2,那麼我們就可以定義函式f(

x)=x

2−s ,最終問題就轉換為求方程 f(

x)=0

=x2−

s 的根。

可知,f′(

x)=2

x ,那麼我們就可得到:xn

+1=x

n−(x

2n−s

)/2x

n ,於是得到了xn

+1=(

x2n+

s)/2

xn,當xn

+1與x

n 的差值小於某個閾值時,我們就得到方程的解,也就是s的平方根。

int

sqrt(int x)

return ans;

}

牛頓迭代法求平方根

sqrt 方法 public static double sqrt double c 什麼是牛頓迭代法 多數方程不存在求根公式,牛頓提出了一種用迭代來求方程近似根的方法。思路就是不斷取切線,用線性方程的根逼近非線性方程f x 0的根x 過程簡介 過點 xk,f xk 作函式的切線,切線方程是 切線與...

牛頓迭代法 求平方根

牛頓迭代法 求出根號a的近似值 首先隨便猜乙個近似值x,然後不斷令x等於x和a x的平均數,迭代個六七次後x的值就已經相當精確了。例如,我想求根號2等於多少。假如我猜測的結果為4,雖然錯的離譜,但你可以看到使用牛頓迭代法後這個值很快就趨近於根號2了 這種演算法的原理很簡單,我們僅僅是不斷用 x,f ...

牛頓迭代法求平方根

牛頓迭代法 newton s method 又稱為牛頓 拉夫遜 拉弗森 方法 newton raphson method 它是牛頓在17世紀提出的一種在實數域和複數域上近似求解方程的方法。多數方程不存在求根公式,因此求精確根非常困難,甚至不可能,從而尋找方程的近似根就顯得特別重要。方法使用函式f x...