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

【牛顿迭代法】

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

13211101_eN76.svg

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

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

13211101_JyHf.gif


【用牛顿迭代法开平方】

13211101_bYw5.svg


【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/

转载于:https://my.oschina.net/freegeek/blog/614688

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值