找回密码
 欢迎注册
楼主: 无心人

[讨论] 超越函数的高精度计算

[复制链接]
发表于 2009-1-7 19:48:54 | 显示全部楼层
原帖由 无心人 于 2009-1-7 19:40 发表
GxQ说的是牛顿二次收敛方法?


非也。

是一种称之为“Karatsuba Square Root”的算法。

RR-3805.pdf

202.96 KB, 下载次数: 13, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

Karatsuba Square Root

RR-4475.pdf

365.02 KB, 下载次数: 5, 下载积分: 金币 -1 枚, 经验 1 点, 下载 1 次

A proof of GMP square root using the Coq assistant

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-1-7 20:01:24 | 显示全部楼层
另外,当a_n和b_n很接近时,在计算a_n^2-b_n^2 时,也可采用这样的方法,或许可提高速度
令 a_n=b_n+d
   则:a_n^2-b_n^2=  2b^n*d+d^2


     注意,不直接计算a和b的平方,并不一定可提高速度,所有我用了或许2字。因为不同级别的乘法(硬乘法,分治法,FFT/FNT算法),对于平方运算,都有比普通乘法更快的运算。

楼上分析过没有,楼上提到的平方根算法,比常规的牛顿迭代法快多少。其实传统的牛顿迭代法已经很快了,使用此法计算大数平方根,用时仅比同等长度乘法运算慢50%。 我的那个计算$sqrt2$的帖子就是一个例证。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-1-7 20:06:44 | 显示全部楼层
计算 $sqrt(2)$ 用牛顿迭代法的优势是被开方数有效数字很短,
大数乘法运算退化成大数x小整数的情形。

如果被开方数也是很多数字的数,则牛顿迭代法并不见得占优。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-1-7 20:35:09 | 显示全部楼层
那在起先几个步骤
完全可以用很准确的方法估计出好的近似值

比如,根据初始数字和数字长度来产生初始值
使得初始有效数字至少有2-4位
那完全是可能的
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-1-7 20:37:20 | 显示全部楼层
我用的全是牛顿法
如果有更快的算法,我很乐意尝试一下
毕竟速度才是我的追求
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2009-1-7 20:49:58 | 显示全部楼层
呵呵
才明白GxQ的意思

那和算法无关的
你有更好的思路?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-1-11 23:38:55 | 显示全部楼层
话说复数的agm要怎么算?
照理说公式是不变的
那么仍旧是
an+1=(an+bn)/2
bn+1=sqrt(an*bn)
但是复数开根号会有2重根,那么取那个?
是不是幅角介于an,bn之间的那个?
我之前推了一下式子,迭代一次似乎就得开2次根号的说
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-1-19 15:46:45 | 显示全部楼层
这个论坛人不是很多但水平很高啊,见到1年前做数独的mathe啦
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2009-2-17 22:20:28 | 显示全部楼层

没钱下载附件了

没钱下载附件了
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-8-10 20:47:09 | 显示全部楼层
15分钟前平生第一次决定用gmp,apt-get之后就边查手册边写代码,代码写了大半发现找不到对数函数。。。。
google之来到此页
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2024-5-12 09:14 , Processed in 0.048065 second(s), 17 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表