利用前面學習的循環和函數,來實現 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),或其他數字,看運行結果如何。