牛顿法是通过选择一个初始点z,然后重复这一个过程求Sqrt(x)的近似值
基于公式:
z=z-(z^2-x)/(2*z) //z为起始点,x为所需开方的数
通过for循环,重复计算10次,代码如下:
package main
import (
"fmt"
"math"
)
func main() {
var a float64 =2 //定义所需开方的数
fmt.Println("----------------------")
sqrt(a)
fmt.Println("----------------------")
fmt.Printf("%g的开方值为%g",a,math.Sqrt(2)) // 十次迭代后与实际值比较
}
func sqrt(x float64)float64 {
z :=float64(1)
for i:=0;i<10;i++ {
z = z - (z*z-x)/(2*z)
fmt.Printf("第%v次计算值为%g\n",i+1,z)
}
return z
}
运行结果如下:
通过几次计算后,与实际值越来越近似。