9

我试图x!在 gnuplot 中绘制函数,我首先定义了阶乘函数,然后调用它,但无论我为图形设置什么边界,我总是会出现堆栈溢出。

这是我尝试过的:

gnuplot>  fac(n) = (n==0) ? 1 : n * fac(n-1)  
gnuplot> plot [0:10][0:10] log(fac(x)), log(x**x)  
stack overflow
4

2 回答 2

12

我应该将 fac 函数定义为整数。否则,当沿着 x 轴绘制时,它会计算一个很长范围的实数,实际上是一个很大的实数,这总是会导致溢出。

因此,应该定义函数:

fac(x) = (int(x)==0) ? 1.0 : int(x) * fac(int(x)-1.0)
于 2013-09-04T05:07:32.440 回答
12

另一个建议是使用Gamma 函数(gnuplot 中的内在函数)。

N!=伽马(N+1)

gnuplot> plot [0:10][0:10] log(gamma(x+1)), log(x**x)
于 2014-01-24T08:32:25.570 回答