2013-09-04 9 views
5

Ich versuche, die x! Funktion in gnuplot, ich definierte zuerst die Fakultät Funktion und dann angerufen, aber ich bekomme immer Stapelüberlauf, egal welche Grenzen ich auf den Graphen gesetzt.Plotten Fakultät von X-Funktion in gnuplot?

Das, was ich versucht habe:

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

Antwort

7

ich sollte die fac Funktion definieren integer zu sein. Andernfalls wird beim Plotten entlang der x-Achse eine große Anzahl von reellen Zahlen ausgewertet, eine große Zahl, die immer den Überlauf verursacht.

So soll die Funktion definiert werden:

fac(x) = (int(x)==0) ? 1.0 : int(x) * fac(int(x)-1.0) 
+1

Rechts, und die Fakultät Funktion ist nur für ganze Zahlen definiert, so dass Sie eine geeignete Stichproben x-Bereich hinzufügen könnte: 'set Proben 11 '(für den X-Bereich' [0:10] '). – Christoph

8

Ein weiterer soultion wäre die Gamma function (intrinsische Funktion in gnuplot) zu verwenden. !

N = gamma (N + 1)

gnuplot> plot [0:10][0:10] log(gamma(x+1)), log(x**x)