9

gnuplot で関数をプロットしようとしています。x!最初に階乗関数を定義してから呼び出しましたが、グラフに設定した境界に関係なく、常にスタック オーバーフローが発生します。

これは私が試したことです:

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

別の解決策は、ガンマ関数(gnuplot の組み込み関数) を使用することです。

N!=ガンマ(N+1)

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

fac 関数を整数に定義する必要があります。それ以外の場合、x 軸に沿ってすべてプロットすると、実際には巨大な実数の長い範囲が評価され、常にオーバーフローが発生します。

したがって、関数は次のように定義する必要があります。

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