需要帮助近似欧拉常数

Need help making an approximation of Euler's constant

本文关键字:常数 帮助      更新时间:2023-09-26

它非常接近,但只差一个数字。如果您可以在这里更改任何内容以使其更好,我们将不胜感激。我正在将我的号码与Math.E进行比较,看看我是否接近。

var e = (function() {
    var factorial = function(n) {
        var a = 1;
        for (var i = 1; i <= n; i++) {
            a = a * i;
        }
        return a;
    };
    for (var k = 0, b = []; k < 18; k++) {
        b.push(b.length ? b[k - 1] + 1 / factorial(k) : 1 / factorial(k));
    }
    return b[b.length - 1];
})();
document.write(e);document.write('<br />'+ Math.E);​

我的号码: 2.7182818284590455
Math.E :    2.718281828459045

从较高的数字到较小的数字工作,以最大程度地减少取消:

var e = 1;
for(var k = 17; k > 0; --k) {
    e = 1 + e/k;
}
return e;

根据霍纳规则计算泰勒多项式甚至可以避免阶乘,并允许您使用更多项(不过,超过 17 不会有区别)。

我所知,您的数字与Math.E相同,甚至具有更好的精度。

2.7182818284590455

2.718281828459045

到底是什么问题?

使用 javascript

,由于 javascript 计算的精度水平,您无法以这种方式计算 e。 有关详细信息,请参阅 http://www.javascripter.net/faq/accuracy.htm。

要演示此问题,请查看以下小提琴,它计算 e 时 n 从 50000000 开始,每 10 毫秒递增 n 1:

http://jsfiddle.net/q8xRs/1/

我喜欢使用整数值来近似实数值.
e的可能近似值按精度递增的顺序为:
11/487/3223225/8544
3442297523731/1266350489376

最后一个相当准确,相当于:
2.7182818284590452213260834432
直到18日才偏离维基百科的价值:
2.71828182845904523536028747135266249775724709369995

所以,如果你有兴趣的话。