回覆列表
  • 1 # 使用者9855328204708

    可以用巴比倫演算法(牛頓法)進行開平方根,演算法如下:

    定義要求的數字為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程式碼:

  • 中秋節和大豐收的關聯?
  • 形容完美的成語~?