Gnuplot:不完整的β函数。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gnuplot:不完整的β函数。相关的知识,希望对你有一定的参考价值。

Gnuplot的 ibeta 函数的实现方式似乎是在接近域边界的常规输入上失败,但在接近域边界的情况下就不一致了。

例如,我得到以下结果(在 Gnuplot 5.2 patchlevel 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在更接近边界的地方进行计算?

答案

恐怕不是。ibeta当前的gnuplot实现使用的是持续的分数近似,在有效域中存在已知的限制。从当前的文档中。

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()添加到更新的候选函数列表中,如果它还没有的话。

以上是关于Gnuplot:不完整的β函数。的主要内容,如果未能解决你的问题,请参考以下文章

嵌套函数的 Gnuplot 拟合

在不使用十六进制代码的情况下在 gnuplot 中设置线条不透明度

老九门--β冲刺代码规范

带有片段的 Android Up 按钮未显示完整片段

三角函数全公式

VSCode自定义代码片段——git命令操作一个完整流程