找回密码
 欢迎注册
查看: 28711|回复: 19

[提问] 调和级数的高精度快速计算

[复制链接]
发表于 2010-5-21 10:22:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?欢迎注册

×
偶发现算出前1千万项的1000位精度,Mathematica只用了1秒钟。
这个有点不可思议,想问一下,其中用到了什么方法

2.30258515071561217417127751533557321584134459284470657002568778\
1544296098164125158002464298784304627516642735505430973614117773561133\
2082053205709915161814539752608336755880551375336685936274777879193300\
1845697860614924097993330761101339754789940578742455504175373966361950\
8317931526958234073803182537643866080677922335134404633469853516372998\
2494769226489766523643356251037952895378777460978164654867334401915600\
4499822227535058219384341617761555997205444135255885834767066057578119\
7577069917867557365829910071559894700589694927045249566523978591633596\
3367638860713041215919879178875923785078739182245437832028711188790870\
8676213778095409396195414691582052691201390486326176213321556746345210\
5442057674915192503909999749473747387995700386486092308301678699511516\
2508803536154563018682048945865118044557662165970198013366730345692549\
5817666455634304181616664108791199174130682897915292958897875518252874\
8770746987523800614071682786901528857435334209653562830369331677500171\
611236060344993445181217984*10^7
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-21 11:01:19 | 显示全部楼层
$\sum_{k=1}^{n}{1/k}~~ln(n)+\gamma$
其中 $\gamma=0.577215664901532860606512090082402431042159335...$ 为欧拉常数
所以Mathematica实际上仅需高精度计算 $ln10=2.302585092994045684017991454684...$ 即可,1秒足矣。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-5-21 11:16:20 | 显示全部楼层
这个是逼近公式,感觉对高精度计算的作用不大吧

莫非用到这个不等式?
$1/{2(n+1)}<H_n-ln n-\gamma<1/{2n}$

或者这个:

$1/{24(n+1)^2}<H_n-ln (n+1/{2})-\gamma<1/{24n^2}$
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2010-5-21 11:19:34 | 显示全部楼层
不对,绝对不是,
Mathematica可以计算出 任意的n的任意精度位
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-21 11:26:15 | 显示全部楼层
2#的公式可以计算任意n的任意精度啊
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-21 11:37:45 | 显示全部楼层
不对,绝对不是,
Mathematica可以计算出 任意的n的任意精度位
wayne 发表于 2010-5-21 11:19


算法是可以出现分支的,
比如你要算前10个正整数的倒数和,要1000位精度的,用2#的公式可能不合适;
但要算前10^10项,可能就合适了;
也就是说可以智能切换最佳算法。

评分

参与人数 1威望 +6 鲜花 +6 收起 理由
wayne + 6 + 6 有道理,这样就好理解了

查看全部评分

毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-21 14:54:37 | 显示全部楼层
Mathematica计算结果:
N[HarmonicNumber[10^6], 100]; // Timing
Out:11s
N[HarmonicNumber[10^10000000], 1000]; // Timing
Out:1s
有点儿疑惑。
另外,Mathematica的高精度计算结果一定可靠吗?
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-21 15:20:37 | 显示全部楼层
ls的疑惑正好证实了gxqcn的猜测。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-21 15:29:10 | 显示全部楼层
我没有去试验过,不过根据我自己编程的经验肯定会这么做,不想还真是这么做的。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2010-5-21 17:12:57 | 显示全部楼层
这所谓英雄所见
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

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

GMT+8, 2024-4-26 00:22 , Processed in 0.048667 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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