作為練習函式和迴圈的簡單途徑,用牛頓法實現開方函式。在這個例子中,牛頓法通過選擇乙個初始點z,然後重複這一選擇過程求sqrt(x)的近似值,這裡用描述牛頓法的數學公式:
為了做到這個,只需要重複計算 10 次,並且觀察在不同的迴圈次數(1,2,3,……)下z是如何逐步逼近結果的。 然後,修改迴圈條件,使得當z值停止改變(或改變非常小)的時候退出迴圈。觀察迭代次數是否變化,結果與math.sqrt接近。
z := float64(1)
或z := 1.0
定義並初始化乙個浮點值z,並套用計算方式:z = z - (z*z-x)/(2*z),迴圈計算並檢視變化(迭代10次,到結果沒有變化),目的是得到類似math.sqrt()的效果。
// 迴圈與函式練習:用牛頓法實現開方
package main
import (
"fmt"
"math"
)func sqrt(x float64) float64 else
}return z // 當z值停止改變(或改變非常小)時跳出迴圈,返回z值
}// 比較牛頓法與普通開方函式的輸出
func main()
輸出結果為
1.5
1.4166666666666667
1.4142156862745099
1.4142135623746899
1.4142135623730951
1.414213562373095
牛頓法: 1.414213562373095
math.sqrt(2): 1.4142135623730951
Go指南練習 迴圈與函式
源位址 為了練習函式與迴圈,我們來實現乙個平方根函式 用牛頓法實現平方根函式。計算機通常使用迴圈來計算 x 的平方根。從某個猜測的值 z 開始,我們可以根據 z 與 x 的近似度來調整 z,產生乙個更好的猜測 z z z x 2 z 重複調整的過程,猜測的結果會越來越精確,得到的答案也會盡可能接近實...
Go指南練習 迴圈與函式
源位址 為了練習函式與迴圈,我們來實現乙個平方根函式 用牛頓法實現平方根函式。計算機通常使用迴圈來計算 x 的平方根。從某個猜測的值 z 開始,我們可以根據 z 與 x 的近似度來調整 z,產生乙個更好的猜測 z z z x 2 z 重複調整的過程,猜測的結果會越來越精確,得到的答案也會盡可能接近實...
go語言指南的練習
對照著指南學習golang 然後做練習題,這裡是來自於其他同學總結的練習的參 然後想要補充分享是在的練習題中提出的 為什麼fmt.sprint e 會使程式陷入死迴圈的 func e errnegativesqrt error string或者 func e errnegativesqrt erro...