牛顿法求平方根

我与影子孤独终老i 提交于 2019-12-20 23:45:16

牛顿法求平方根

公式

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)))
	}
}
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!