牛顿法求平方根
公式
z -= (z * z - x) / (2 * z)
重复调用过程使得猜测结果越来越接近。
z的初始值为x/2
上面z^ 2-x 是z^ 2到x的距离,除以的2z为z^ 2的导数,我们通过z^ 2的变化速度来改变z的调整量。这种方法叫做牛顿法。
package main
import (
"fmt"
)
func Sqrt(x float64) (int, float64) {
z := x/2
z_p := 0.0
index := 0
for {
index ++
if -0.0001 < z_p - z && z_p - z < 0.0001 {
break
}
z_p = z
z -= (z * z - x) / (2 * z)
}
return index,z
}
func main() {
for x :=100000; x < 100100; x++{
fmt.Println(Sqrt(float64(x)))
}
}
来源:CSDN
作者:xiaohuihuicb
链接:https://blog.csdn.net/sinat_30062549/article/details/103638009