Как рассчитать число Эйлера за 1000 итераций?

Можно ли рассчитать число Эйлера за 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 ответа

Решение

Это довольно просто, если я правильно понимаю, вам нужно вычислить число Эйлера за 1000 итераций, а не вычислять его 1000 раз, поэтому цикл for следует переместить в функцию Эйлера.

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 слишком высоко для двойной точности, так как f сходятся к 0 после 178 итераций в моем компьютере. так что остальная часть процесса не нужна.

Да, возможно вычислить приближение с более чем 2300 правильными цифрами с частичной суммой в 1000 членов. Ошибка меньше 2/1000! (в масштабе 1/300^1000)

Нет, нет необходимости вычислять факториал, и в любом случае следует избегать явной функции факториала, просто обновить следующий член из предыдущего или использовать схему, подобную Horner, начиная с последнего.

Другие вопросы по тегам