13. 用循環和函數 實現Sqrt(x)

利用前面學習的循環和函數,來實現 Sqrt(x)。并且與math.Sqrt(x)的結果做一下比較。
這個很有意思,所以,把中間不斷帶入的變化值都打印出來。
使用牛頓法來實現。牛頓法是同選擇一個初始點z,然后重復這一過程求Sqrt(x)的近似值。



為了實現計算結果,只需要重復計算10次。

package main

import (
    "fmt"
    "math"
)

func Sqrt(x float64) float64 {
    var z float64 = 1.0
    for i:= 1; i < 10; i++{
        z = z - (z * z - x)/(2 * z)
        fmt.Println(z)
    }
    return z
}
func main() {
    fmt.Printf("My Sqrt(%d) is %g\n", 2, Sqrt(2))
    fmt.Printf("math.Sqrt(%d) is %g\n", 2, math.Sqrt(2))
}

運算結果如下

1.5
1.4166666666666667
1.4142156862745099
1.4142135623746899
1.4142135623730951
1.414213562373095
1.4142135623730951
1.414213562373095
1.4142135623730951
My Sqrt(2) is 1.4142135623730951
math.Sqrt(2) is 1.4142135623730951

試著修改Sqrt(2)為Sqrt(98),或其他數字,看運行結果如何。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容