liangbch 发表于 2008-4-16 21:44:00

原帖由 无心人 于 2008-4-16 21:37 发表 http://images.5d6d.net/dz60/common/back.gif
:)

我想
我想
是不是有更精彩更复杂的算法

比如类似阶乘的?
7# 的算法很精彩,既简单,又有效,很且很难有这个更有效的算法了。
关于计算e更详细的资料,请参见http://numbers.computation.free.fr/Constants/E/e.html

无心人 发表于 2008-4-16 21:46:01

能不能有二次迭代的公式计算e?

liangbch 发表于 2008-4-16 21:46:53

从算法上 9# 程序使用的是目前最好的算法,但计算速度同PiFast依然有很大的差距,个人认为,造成这个差距的主要原因是,HugeCalc 的大数乘法和大数除法的速度仍然有待提高。

liangbch 发表于 2008-4-16 21:48:30

原帖由 无心人 于 2008-4-16 21:46 发表 static/image/common/back.gif
能不能有二次迭代的公式计算e?

计算e不同于计算$sqrt 2 $,是可以直接计算的,无需使用牛顿迭代法,因此也谈不上使用2次迭代公式。

gxqcn 发表于 2008-4-16 21:58:54

北大的刘楚雄老师好像对高精计算e有研究。

我一直不想碰这些超越数的计算,主要是里面需要恰到好处的误差分析,少了不行,多了白费。

难得楼主给出了源代码,但作为库的开发者,发现局部调用可以改得更高效,明天将抽空优化一下。

今早我已对9#的代码略作了一下优化(直接在原帖上修改的),
在开启“MODIFIED_BY_GxQ”宏定义时,计算100万位e可提速3.6%

阶乘的优化,我们曾将连乘转换为分解成素数之后再运算,并藉此而大幅提速,
e的计算与阶乘紧密相联,是否还存在更高效的算法?我表示怀疑和期待。。。

——2008-04-17 09:15

无心人 发表于 2008-4-17 07:59:23

liangbch的意思是计算$e$没有高速算法?

mathe 发表于 2008-4-17 08:12:21

我们知道$log(n!)=O(nlog(n)-n)$
所以实际上计算K位时,我们只需要计算到一个n使得$nlog(n)-n>=C*K$,也就是计算K位时间复杂度O(nK)略微低于O(K^2)的。

mathe 发表于 2008-4-17 08:16:47

连分数形式:
${e-1}/2 =
应该挺不错的

无心人 发表于 2008-4-17 08:34:31

2.3An algorithm using continued fraction
Let $p_k/q_k$ be the convergent of order $k$ of a simple continued fraction of a number $x$ and let $x=$, we know that the convergents may be computed at any order thanks to the following recurrence relations

$p_k=a_kp_{k-1}+p_{k-2}$

$q_k=a_kq_{k-1}+q_{k-2}$

with the initial conditions

$p_{-1}=1,p_0=a_0 $

$q_{-1}=0,q_0=1$

It's a well known properties on continued fraction that

    $lim_{k->infty}p_k/q_k = x$

with the bound
   
    $p_k/q_k - x < 1/q_k^2$

If we use the continued fraction for $(e-1)/2$, then

   $a_0=0,a_1=1$,

and $a_k=4(k-1)+2$ for $k > 1$. It's therefore very easy to build an efficient algorithm to compute a fast converging sequence to the constant $e$. With $k=1500$, $e$ may be computed to $10^4$ decimal places, with $k=12000$, $10^5$ digits of $e$ will be reached.

shshsh_0510 发表于 2008-4-17 08:35:54

mathe说的是,我以前推荐过这个网站,我想诸位会喜欢
http://numbers.computation.free.fr/Constants/constants.html
页: 1 [2] 3 4 5 6 7 8 9 10 11
查看完整版本: 计算百万位e