Как рассчитать число Эйлера за 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, начиная с последнего.