题:用牛顿法实现平方根函数。计算机通常使用循环来计算x的平方根,从牧歌猜测值z开始,我们根据z平方与x的近似度来调整z,产生更好的猜测: z -= (z * z - x) / (2 * z). 重复调整,结果会越来越精确,得到尽可能实际的平方根。
1. 引用go中的math/abs方法
package main
import (
"fmt"
"math"
)
func Sqrt(x float64) float64 {
der := 0.00001
temp := float64(1)
z := x
for math.Abs(z - temp) >= der {
temp = z
z = (z + x / z) / 2 // 题中计算方式演变而来的公式
}
fmt.Println(z)
return z
}
func main() {
fmt.Println(Sqrt(4))
}
2. 不依赖包的实现
package main
import (
"fmt"
)
func Sqrt(x float64) float64 {
der := 0.00001
temp := float64(1)
z := x
for z - temp >= der || z - temp <= -der {
temp = z
z = (z + x / z) / 2 // 题中计算方式演变而来的公式
}
fmt.Println(z)
return z
}
func main() {
fmt.Println(Sqrt(4))
}