调和级数的高精度快速计算
偶发现算出前1千万项的1000位精度,Mathematica只用了1秒钟。这个有点不可思议,想问一下,其中用到了什么方法
2.30258515071561217417127751533557321584134459284470657002568778\
1544296098164125158002464298784304627516642735505430973614117773561133\
2082053205709915161814539752608336755880551375336685936274777879193300\
1845697860614924097993330761101339754789940578742455504175373966361950\
8317931526958234073803182537643866080677922335134404633469853516372998\
2494769226489766523643356251037952895378777460978164654867334401915600\
4499822227535058219384341617761555997205444135255885834767066057578119\
7577069917867557365829910071559894700589694927045249566523978591633596\
3367638860713041215919879178875923785078739182245437832028711188790870\
8676213778095409396195414691582052691201390486326176213321556746345210\
5442057674915192503909999749473747387995700386486092308301678699511516\
2508803536154563018682048945865118044557662165970198013366730345692549\
5817666455634304181616664108791199174130682897915292958897875518252874\
8770746987523800614071682786901528857435334209653562830369331677500171\
611236060344993445181217984*10^7 \sum_{k=1}^{n}{1/k}~~ln(n)+\gamma
其中 \gamma=0.577215664901532860606512090082402431042159335... 为欧拉常数。
所以Mathematica实际上仅需高精度计算 ln10=2.302585092994045684017991454684... 即可,1秒足矣。 这个是逼近公式,感觉对高精度计算的作用不大吧
莫非用到这个不等式?
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} 不对,绝对不是,
Mathematica可以计算出 任意的n的任意精度位 2#的公式可以计算任意n的任意精度啊 不对,绝对不是,
Mathematica可以计算出 任意的n的任意精度位
wayne 发表于 2010-5-21 11:19 http://bbs.emath.ac.cn/images/common/back.gif
算法是可以出现分支的,
比如你要算前10个正整数的倒数和,要1000位精度的,用2#的公式可能不合适;
但要算前10^10项,可能就合适了;
也就是说可以智能切换最佳算法。 Mathematica计算结果:
N, 100]; // Timing
Out:11s
N, 1000]; // Timing
Out:1s
有点儿疑惑。
另外,Mathematica的高精度计算结果一定可靠吗? ls的疑惑正好证实了gxqcn的猜测。 我没有去试验过,不过根据我自己编程的经验肯定会这么做,不想还真是这么做的。:lol 这所谓英雄所见
页:
[1]
2