У меня проблемы с реализацией gammainc MATLAB в Java.
Я пытался делать это по частям. Я использовал эту функцию, которая использует приближение Ланцоша, которое я получил в Интернете для решения Γ (a) :
private static double logGamma(double x) {
double tmp = (x - 0.5) * Math.log(x + 4.5) - (x + 4.5);
double ser = 1.0 + 76.18009173 / (x + 0) - 86.50532033 / (x + 1)
+ 24.01409822 / (x + 2) - 1.231739516 / (x + 3)
+ 0.00120858003 / (x + 4) - 0.00000536382 / (x + 5);
return tmp + Math.log(ser * Math.sqrt(2 * Math.PI));
}
private static double gamma(double x) { return Math.exp(logGamma(x)); }
Затем я использовал правило Симпсона для решения неотъемлемой части, затем я объединил их, чтобы получить гамму, но результат, который я получил, не является разумным.
Составная часть также может рассматриваться как нижняя неполная гамма-функция .
Я прошу совета для лучшего решения.