Как можно аппроксимировать сумму значений для бесконечных интервалов в java
Я пытаюсь написать кусок кода на java, который должен вычислить сумму значений следующим образом для диапазона [-∞, +∞]
K= +∞
∑ [ f( (2K+1)*x ) - f( (2K-1)*x ) ]
K= -∞
Есть две путаницы, с которыми я сталкиваюсь при вычислении, чтобы получить вычислительно осуществимое и эффективное решение:
-
Какое значение должно быть принято для∞, чтобы приблизить расчет, как указано выше?
-
Какое минимальное значение необходимо использовать для увеличения K в цикле, предполагая, что K содержит дробные значения тоже.
1 ответ:
Во-первых, чтобы получить аппроксимацию, необходимо, чтобы значение резко уменьшилось. Например,
-1/x
. Еслиx
сильно возрастает, то ответ будет близок к нулю.
- какое значение должно быть принято для
∞
, чтобы приблизить расчет, как указано выше?Но это приведет к бесконечному циклу. Вы можете заменитьfor ( float k = 0 ; ; k++ ) { sum += (((2 * ( k) + 1) * x) - ((2 * ( k) - 1) * x)); //adding from 1 to infinity sum += (((2 * (-k) + 1) * x) - ((2 * (-k) - 1) * x)); //adding from -1 to infinity }
x
на1/x
и увеличиватьx
каждый раз в цикле. Код становитсяif ( (sum - lastsum) < 0.001 ) { break; } lastsum = sum; }
- какое минимальное значение должно быть использовано для инкремент
K
внутри [цикла], предполагая, чтоK
также содержит дробные значения?Это соответствует типу
Кроме того, при суммировании вы должны двигаться на единицу, а не на дробь. Видеть https://upload.wikimedia.org/math/d/f/2/df26e1cf51b67fbedd01ce9c68cbbef5.png https://en.wikipedia.org/wiki/SummationK
. Если этоdouble
, он может иметь до 15 знаков после запятой.