源位址
為了練習函式與迴圈,我們來實現乙個平方根函式:用牛頓法實現平方根函式。
計算機通常使用迴圈來計算 x 的平方根。從某個猜測的值 z 開始,我們可以根據 z² 與 x 的近似度來調整 z,產生乙個更好的猜測:
z -= (z*z - x) / (2*z)重複調整的過程,猜測的結果會越來越精確,得到的答案也會盡可能接近實際的平方根。
在提供的func sqrt
中實現它。無論輸入是什麼,對 z 的乙個恰當的猜測為 1。 要開始,請重複計算 10 次並隨之列印每次的 z 值。觀察對於不同的值 x(1、2、3 ...), 你得到的答案是如何逼近結果的,猜測提公升的速度有多快。
z := 1.0然後,修改迴圈條件,使得當值停止改變(或改變非常小)的時候退出迴圈。觀察迭代次數大於還是小於 10。 嘗試改變 z 的初始猜測,如 x 或 x/2。你的函式結果與標準庫中的 math.sqrt 接近嗎?z := float64(1)
(注:如果你對該演算法的細節感興趣,上面的 z² − x 是 z² 到它所要到達的值(即 x)的距離,除以的 2z 為 z² 的導數,我們通過 z² 的變化速度來改變 z 的調整量。這種通用方法叫做牛頓法。它對很多函式,特別是平方根而言非常有效。)
package main執行結果import (
"fmt""
math")
func sqrt(x float64) float64 else
}returnz}
func main()
參考文件
Go指南練習 迴圈與函式
源位址 為了練習函式與迴圈,我們來實現乙個平方根函式 用牛頓法實現平方根函式。計算機通常使用迴圈來計算 x 的平方根。從某個猜測的值 z 開始,我們可以根據 z 與 x 的近似度來調整 z,產生乙個更好的猜測 z z z x 2 z 重複調整的過程,猜測的結果會越來越精確,得到的答案也會盡可能接近實...
Go指南練習(1) 迴圈和函式
作為練習函式和迴圈的簡單途徑,用牛頓法實現開方函式。在這個例子中,牛頓法通過選擇乙個初始點z,然後重複這一選擇過程求sqrt x 的近似值,這裡用描述牛頓法的數學公式 為了做到這個,只需要重複計算 10 次,並且觀察在不同的迴圈次數 1,2,3,下z是如何逐步逼近結果的。然後,修改迴圈條件,使得當z...
go 迴圈與函式
為了練習函式與迴圈,我們來實現乙個平方根函式 用牛頓法實現平方根函式。計算機通常使用迴圈來計算 x 的平方根。從某個猜測的值 z 開始,我們可以根據 z 與 x 的近似度來調整 z,產生乙個更好的猜測 z z z x 2 z 重複調整的過程,猜測的結果會越來越精確,得到的答案也會盡可能接近實際的平方...