如何计算1000次迭代中的欧拉数?

时间:2016-08-21 17:18:15

标签: java math eulers-number

是否可以在一种方法中计算1000次迭代中的欧拉数,我是否需要首先计算因子?

这是我的代码:

import java.math.BigDecimal;

public class EulerNumber {

    public static void main(String[] args) {
        for (int i = 1; i < 1000; i++) { 
        }
        System.out.println("e = " + e);
    }

    private static double Euler() {
        return 0;
    }
}

2 个答案:

答案 0 :(得分:1)

是的,可以计算超过2300个正确数字的近似值,部分总和为1000个术语。误差小于2/1000! (幅度为1/300 ^ 1000)

不,没有必要计算阶乘,在任何情况下,都应该避免使用显式阶乘函数,只需更新前一个术语,或者从上一个术语开始使用类似Horner的方案。

答案 1 :(得分:1)

非常简单,如果我理解正确,你需要在1000次迭代中计算euler数,而不是计算1000次,所以for循环应该转移到Euler函数中。

public class EulerNumber {

    public static void main(String[] args) {
        System.out.println("e = " + Euler());
    }

    private static double Euler() {
        double e=1;
        double f=1;
        for ( int i=1; i <= 1000; i++) {
            f = f * (1.0 / i);
            if ( f == 0 ) break;
            e +=  f;
        }
        return e;
    }
}

e是到目前为止的估计的欧拉数,f是在下一次操作中添加的分数(1 / n!)。你不必计算n!每一次,最好在你继续计算它。我已经检查并知道1000对于双精度来说太高了,因为在我的计算机中经过178次迭代后f收敛到0。所以剩下的过程就没有必要了。