gxqcn 发表于 2008-2-24 20:38:47

今晚抽空写了一下程序,经测试发现效果并不理想,不及 liangbch 的快!就不帖出来献丑了。

原帖由 liangbch 于 2008-2-22 10:36 发表 http://bbs.emath.ac.cn/images/common/back.gif
sqrt(a) 算法:

step1: 得到一个 1/sqrt(a) 近似值 x0
step2: x= 3/2*x + a/2 x^3
    另一个形式:( x= x + x ( 1/2- a/2 *x^2)
不断计算step2,x精度逐步提高,每次迭代精度提高一倍。
最后:计算 x* a 得到 sqrt(a) ...

上述算法,即用传统的牛顿迭代法确实比较凑效,
尤其是收尾步骤,因为a是个小整数,所以很快就完成;相对其它算法要简单很多。

再思考几天,看是否有灵感来帮忙。。。

jackaa11 发表于 2008-8-8 03:27:40

谢谢

无心人 发表于 2008-8-8 12:03:46

:lol

翻晒旧货了
四次迭代算法应该能一次得到四倍精度
但基于额外开销考虑
应该不很快
甚至慢于二次迭代

可惜对应的公式找不到了
是借的图书室一本旧书上的
后悔还掉了

gxqcn 发表于 2008-8-8 15:31:41

原帖由 无心人 于 2008-8-8 12:03 发表 http://bbs.emath.ac.cn/images/common/back.gif
是借的图书室一本旧书上的
后悔还掉了

看样子你想长期据为己有?:lol

不过,有些书可能只有在某些主人那里才能真正发挥作用。:D

无心人 发表于 2008-8-8 16:07:48

是的
那书不错
在我这里,一个中学图书馆
也就我想看,也就我能看懂
页: 1 [2]
查看完整版本: 高精度计算sqrt(2)