我的解法基于教程的内容,也就是还没有到的内容不会出现在我的解法中,并且既然是练习便尽量地使用Go的特性,抛弃自己对其它语言使用的习惯。
习题:http://tour.golang.org/#44
中文资料:http://blog.punkid.org/2008/02/28/compute-the-square-root-via-newtons-iteration/
解法:
package main
import fmt "fmt"
import math "math"
// 找个比较近的值,期望有这个东西能够比较快地找到合适的值。
func guess(seed float64, value float64) float64 {
if seed > value {
return 1
}
var p float64 = 1.0
for v:= seed; v < value; p, v = v, v*seed {}
if p > value {
return 1
}
return p
}
func newtonIterator(start float64) func(float64) float64 {
sqr := start
return func(value float64) float64 {
sqr = sqr - ((sqr*sqr - value)/(2*sqr))
return sqr
}
}
func main() {
var value float64 = 101
sqr_2 := math.Sqrt(value)
start := guess(2, value)
f := newtonIterator(start)
for i := 0; i < 100; i++ {
fmt.Println(f(value) ,":", sqr_2)
}
}
感慨:牛顿太NB了!
分享到:
相关推荐
详细讲述了利用牛顿迭代法求平方根的过程,值得参考。
这个程序展示了如何使用GMP来计算小整数的平方根并精确到任意精度,它并没有直接调用GMP的浮点函数来直接计算,而是通过牛顿迭代法逐步求精得到指定的精度。 这个程序以在VC6,VC2008和GCC下编译通过。在这个...
在matlab平台上,通过牛顿法求解方程的根,牛顿法具有二次收敛性,求解速度快
1.double my_sqrt(double c);求平方根 。 假设浮点数在计算机中按IEEE标准表示。而c是一个整的规格化浮点数。令 为c的尾数。使用如下的牛顿迭代格式: 请详细论证p,q的选取,实得仅使用三次迭代...使用牛顿迭代法求
实际上求平方根的算法方法主要有两种:二分法(binary search)和牛顿迭代法(Newton iteration) 1:二分法 求根号5 a:折半: 5/2=2.5 b:平方校验: 2.5*2.5=6.25>5,并且得到当前上限2.5 c:再次向下折半:2.5/2=1.25 d...
C语言迭代法求平方根
主要介绍了javascript基于牛顿迭代法实现求浮点数的平方根,简单说明了牛顿迭代法的原理,并结合实例分析了javascript基于递归的数值运算相关操作技巧,需要的朋友可以参考下
牛顿法算平方更,java文件,有附录和说明
C语言简单编程-迭代法求平方根不采用MATH.H的库函数-,
python迭代法求正数的平方根
数值分析C++源码-二分法,迭代法,牛顿法,高斯消元法,高斯先列主元消元法,高斯全主元消元法,标度化列住院消元法,直接三角分解法,道立特分解法,改进的平方根法,平方根法,雅克比法,高斯赛德尔迭代法,牛顿插值法,拉格朗日...
OJ迭代平方根.cbp
牛顿法求解多元函数!matlab牛顿法求解多元函数!网上转载的
每个代码都可以运行哦 运行环境我的是VC6.0
C#求平方根小程序 C#求平方根小程序 C#求平方根小程序C#求平方根小程序 C#求平方根小程序 C#求平方根小程序
采用下述方法计算 115 的平方根,精确到小数点后六位。 (1)二分法。选取求根区间为[10, 11]。 (2)牛顿法。 (3)简化牛顿法。 (4)弦截法。 绘出横坐标分别为计算时间、迭代步数时的收敛精度曲线。
在本程序段中,利用迭代法可以求出某个实数的平方根,利用递归的方法可以求出某个整数的阶乘。需要注意的是在进行除法运算的时候需要考虑分母是否为零。在主函数中,调用相应的函数即可实现运算,最后输出结果。
易语言源码易语言汇编代码求平方根.rar 易语言源码易语言汇编代码求平方根.rar 易语言源码易语言汇编代码求平方根.rar 易语言源码易语言汇编代码求平方根.rar 易语言源码易语言汇编代码求平方根.rar 易语言源码...