可以用巴比倫演算法(牛頓法)進行開平方根,演算法如下:
下面將舉例說明:
比如你要算100的平方根,你一開始猜測是9,你能容忍的公差是0.0000001
g1 = 9
g = (n/g+g)/2 = ( 100 / 9 + 9)/2 = 10.0555555556
|g1 - g| = | 9- 10.0555555556 |= 1.0555555556 >0.0000001,因此繼續。
令 g = 10.0555555556 繼續演算法
g1 = 10.0555555556
g = (n/g+g)/2 = ( 100 / 10.0555555556 + 10.0555555556 )/2 = 10.0001534684
|g1 - g| = | 10.0555555556 - 10.0001534684 |= 0.0554020872 >0.0000001,因此繼續。
令 g = 10.0001534684 繼續演算法
g1 = 10.0001534684
g = (n/g+g)/2 = ( 100 / 10.0001534684 + 10.0001534684 )/2 = 10.0000000012
|g1 - g| = | 10.0001534684 - 10.0000000012 |= 0.0001534672 >0.0000001,因此繼續。
令 g = 10.0000000012 繼續演算法
g1 = 10.0000000012
g = (n/g+g)/2 = ( 100 / 10.0000000012 + 10.0000000012 )/2 = 10.0000000000
|g1 - g| = | 10.0000000012 - 10.0000000000 |= 0.0000000012 <0.0000001,因此終止演算法
算出最後的結果是g=10
如果有程式設計輔助會非常的好算,下面是對應的python程式碼:
可以用巴比倫演算法(牛頓法)進行開平方根,演算法如下:
定義要求的數字為n,你猜測的數字為g,公差即你最大能容忍的差值為t,前一次猜測的值為g1,並初始化為0。如果 |g1-g| >t,開始迴圈計算:g1=gg=(n/g+g)/2終止演算法後的g為所求下面將舉例說明:
比如你要算100的平方根,你一開始猜測是9,你能容忍的公差是0.0000001
g1 = 9
g = (n/g+g)/2 = ( 100 / 9 + 9)/2 = 10.0555555556
|g1 - g| = | 9- 10.0555555556 |= 1.0555555556 >0.0000001,因此繼續。
令 g = 10.0555555556 繼續演算法
g1 = 10.0555555556
g = (n/g+g)/2 = ( 100 / 10.0555555556 + 10.0555555556 )/2 = 10.0001534684
|g1 - g| = | 10.0555555556 - 10.0001534684 |= 0.0554020872 >0.0000001,因此繼續。
令 g = 10.0001534684 繼續演算法
g1 = 10.0001534684
g = (n/g+g)/2 = ( 100 / 10.0001534684 + 10.0001534684 )/2 = 10.0000000012
|g1 - g| = | 10.0001534684 - 10.0000000012 |= 0.0001534672 >0.0000001,因此繼續。
令 g = 10.0000000012 繼續演算法
g1 = 10.0000000012
g = (n/g+g)/2 = ( 100 / 10.0000000012 + 10.0000000012 )/2 = 10.0000000000
|g1 - g| = | 10.0000000012 - 10.0000000000 |= 0.0000000012 <0.0000001,因此終止演算法
算出最後的結果是g=10
如果有程式設計輔助會非常的好算,下面是對應的python程式碼: