Gnuplot: неполная бета-функция - PullRequest
0 голосов
/ 22 апреля 2020

Функция Gnuplot ibeta, кажется, реализована таким образом, что происходит сбой на обычных входах вблизи границы домена, но не всегда для более близких подходов.

Например, я получаю следующие результаты ( на Gnuplot 5.2, уровень исправления 8):

gnuplot> print ibeta(.1,1e-3,.93), ibeta(.1,1e-3,.94), ibeta(.1,1e-3,.95)   
0.0123146537078641 0.0124763579765399
gnuplot> print ibeta(.1,1e-3,.93), ibeta(.1,1e-3,.94), ibeta(.1,1e-3,.95) 
                                                       ^
         undefined value

или, что еще более странно,

gnuplot> print ibeta(.1,5e-3,.93)   
0.0591743782874705
gnuplot> print ibeta(.1,5e-3,.95)   

gnuplot> print ibeta(.1,5e-3,.95) 
               ^
         undefined value

gnuplot> print ibeta(.1,5e-3,.99)   
0.0685440281786021

Есть ли способ изменить какой-нибудь порог чувствительности или еще что-то, чтобы заставить gnuplot вычислять ближе к границам

1 Ответ

1 голос
/ 22 апреля 2020

Боюсь, что нет. Текущая реализация gnuplot ibeta использует приближение непрерывной дроби с известным ограничением в допустимой области. Из текущей документации:

gnuplot> help ibeta
 The `ibeta(p,q,x)` function returns the incomplete beta function of the real
 parts of its arguments. p, q > 0 and x in [0:1].  If the arguments are
 complex, the imaginary components are ignored.  The function is approximated by
 the method of continued fractions (Abramowitz and Stegun, 1964).
 The approximation is only accurate in the region x < (p-1)/(p+q-2). 

Показанные вами параметры находятся за пределами этого ограниченного домена.

В настоящее время существует ветвь разработки gnuplot, которая сосредоточена на обновлении поддержки сложных функций, новых алгоритмов с более высокой точностью и расширенного набора специальных функций. Я не ожидаю, что это появится в новой версии в ближайшее время, но я добавлю ibeta () в список функций-кандидатов для обновления, если его там еще нет.

...