牛顿开方法的算法及其原理

【牛顿迭代法】

假设方程 在  附近有一个根,那么用以下迭代式子:

依次计算、、、……,那么序列将无限逼近方程的根。

牛顿迭代法的原理很简单,其实是根据f(x)在x0附近的值和斜率,估计f(x)和x轴的交点,看下面的动态图:

牛顿开方法的算法及其原理_第1张图片


【用牛顿迭代法开平方】


【go实现】

package main

import (
	"fmt"
	"math"
)

func Sqrt(x float64) float64 {
	pre := 0.0
	z := float64(1)
	for math.Abs(z -pre) > 1e-10 {  //修改循环条件,使得当值停止改变(或改变非常小)的时候退出循环。
	    pre = z
	    z = z - (z*z-x)/(2*z)
	}
	return z
}

func main() {
	fmt.Println(Sqrt(2))
	fmt.Println(math.Sqrt(2))
}

输出结果:
1.4142135623730951 (尽然和math库中的精度一致,可以修改1e-10查看变化)
1.4142135623730951


[参考文献]

牛顿开方法及其原理 http://www.guokr.com/question/461510/

你可能感兴趣的:(牛顿开方法的算法及其原理)