Есть ли способ получить сумму произведений числа Эйлера и целого числа, где целое число может составлять до 10^6000?
Поэтому я попытался использовать BigDecimal, который дает мне значение числа Эйлера до 50 десятичных знаков. Но так как значение ограничения настолько велико, число может варьироваться от 1 до 10^6000, и, следовательно, я не получаю никакой точности (обеспечение его оптимальности - другая проблема). Вот блок кода:
for(int i=1; i<n+1; i++){
// i is the integer value and bd is the value of the euler's number, so below i am multiplying the value of i with the euler's number
BigDecimal x = BigDecimal.valueOf(i).multiply(bd);
//Here i am taking floor of the above calculated value
x.setScale(0, RoundingMode.HALF_UP);
//and here sum is floor[1*euler's no] + floor[2*euler's number] + ... + floor[n*euler's number]
sum += x.intValue();
}
1 ответ
Я думаю, что вы спрашиваете, как вычислить число Эйлера (т.е. e
) с большей точностью.
Ответ будет заключаться в реализации алгоритма, который быстро сходится. После небольшого исследования я нашел эту страницу "Расчет стоимости е". Внизу это описывает Формула Братьев:
e = Sum(n=0, n=∞, (2n+2) / (2n+1)! )
который сходится очень быстро. Вы можете кодировать это в Java, используя BigDecimal, чтобы вычислить с точностью до любого количества цифр, что вам нужно.
Смотрите также:
- Братья, HJ 2004. Улучшение сходимости приближения ряда Ньютона для е. Математический журнал колледжа 35(январь):34-39.
который (если я правильно понял!) дает более сложную формулу, которая сходится еще быстрее.