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

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

K= +∞

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

K= -∞

Есть две путаницы, с которыми я сталкиваюсь при расчете для получения вычислительно возможного и эффективного решения:

  1. какое значение необходимо принять для ∞, чтобы аппроксимировать вычисление, как указано выше?

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


person A. Sinha    schedule 05.11.2015    source источник
comment
Вы знаете, что это телескопическая сумма и на самом деле разница (отдельных) пределов f(2m+1) и f(-2n-1)?   -  person Lutz Lehmann    schedule 05.11.2015
comment
Можете ли вы сказать нам, что такое f?   -  person    schedule 05.11.2015
comment
@RC f () — кумулятивная функция распределения   -  person A. Sinha    schedule 05.11.2015
comment
Вы уверены, что K может иметь дробные значения? Предполагается, что индекс суммы должен быть целым числом, иначе это был бы интеграл.   -  person RealSkeptic    schedule 05.11.2015
comment
@RealSkeptic абсолютно сэр   -  person A. Sinha    schedule 05.11.2015
comment
@LutzL Сэр, но, как мы знаем, значение бесконечности не может быть определено, поэтому какое значение можно использовать для аппроксимации ∞ на таком языке программирования, как java.   -  person A. Sinha    schedule 05.11.2015
comment
Пожалуйста, переформулируйте свой вопрос, чтобы дать более подробную информацию о ситуации в целом. Какая проблема привела вас к оценке этой суммы. Откуда вы взяли, что индекс суммирования K может принимать рациональные значения. -- Если f действительно CDF, то ответ 1.   -  person Lutz Lehmann    schedule 05.11.2015


Ответы (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

person Amro Walid    schedule 13.11.2015