牛顿法求平方根
公式
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)))
}
}
本文介绍了牛顿法求平方根的原理,通过不断迭代更新逼近目标值,初始值为z,每次迭代根据z的平方与目标值x的差值和z的平方导数进行调整。牛顿法利用函数变化率来优化求解,是数值计算中的一个重要算法。
3447

被折叠的 条评论
为什么被折叠?



