Как можно аппроксимировать сумму значений для бесконечных интервалов в java


Я пытаюсь написать кусок кода на java, который должен вычислить сумму значений следующим образом для диапазона [-∞, +∞]

K= +∞

∑ [ f( (2K+1)*x ) - f( (2K-1)*x ) ]

K= -∞
Есть две путаницы, с которыми я сталкиваюсь при вычислении, чтобы получить вычислительно осуществимое и эффективное решение:
  1. Какое значение должно быть принято для∞, чтобы приблизить расчет, как указано выше?

  2. Какое минимальное значение необходимо использовать для увеличения K в цикле, предполагая, что K содержит дробные значения тоже.

1 2

1 ответ:

Во-первых, чтобы получить аппроксимацию, необходимо, чтобы значение резко уменьшилось. Например, -1/x. Если x сильно возрастает, то ответ будет близок к нулю.

  1. какое значение должно быть принято для , чтобы приблизить расчет, как указано выше?
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;
}
  1. какое минимальное значение должно быть использовано для инкремент K внутри [цикла], предполагая, что K также содержит дробные значения?

Это соответствует типу K. Если это double, он может иметь до 15 знаков после запятой.

Кроме того, при суммировании вы должны двигаться на единицу, а не на дробь. Видеть https://upload.wikimedia.org/math/d/f/2/df26e1cf51b67fbedd01ce9c68cbbef5.png https://en.wikipedia.org/wiki/Summation