2016-04-01 6 views
-1

Ich habe ein Problem, wo ich versuche, ein Diagramm der Gibbs-Verteilung P = exp (-E/kT) in 3D (P vs E vs T) zu machen) und setze Gitterlinien darauf. Ich möchte im Prinzip den einen hier http://arxiv.org/pdf/0803.0217.pdf oben auf Seite 3 reproduzieren, aber wenn ich Gitterlinien einfüge, wird der Durchschnitt über zu viele Daten und mein Plot sieht einfach fast flach aus (es hat nicht den scharfen Abfall bei T-> 0) weil es über zu viele Daten mittelt). Könnte mir jemand dabei helfen? TyGnuplot: Stoppt Gitterlinien im Durchschnitt über Daten im 3D-Plot

+2

Wie sieht Ihr nicht funktionierendes Skript aus? – Christoph

+0

check 'help isosamples' – bibi

+0

@bibi Isosamples wird das nicht beheben. Dies liegt nicht an der "Mittelwertbildung über zu viele Daten", wie das OP vorgeschlagen hat, sondern daran, dass die Funktion eine Singularität bei T = 0 hat. – Matthew

Antwort

1

Wenn Sie versuchen, diese Funktion mit den Standardbereichen grafisch darstellen, werden Sie ein Bild erhalten, die fast flach ist

# Arbitrary value for k. 
# I am not familiar with the physics here, so this may or may not be a reasonable value. 
k = 2 

P(E,T) = exp(-E/(k*T)) 
set xlab "Energy" 
set ylab "Temperature" 
splot P(x,y) 

enter image description here

Hinweis, dass es Spitzen bei y = 0 (y Temperatur) und diese Spitzen nähern sich signifikanten z-Werten (3,5 x 10^21). Da der Rest der Werte nie 1 überschreitet (was eine Wahrscheinlichkeit ist), überwältigen diese Spitzen alles andere, so dass der Graph anderswo flach erscheint. Das Anpassen der Iso-Samples, wie in Kommentaren vorgeschlagen, wird dabei nicht helfen.

Es ist nicht schön, aber wir können sehen, wo dies passiert, wenn wir den z-Bereich auf ein kleines Intervall mit set zrange[0:2] beschränken.

enter image description here

Das Problem hierbei ist, dass die Funktion für niedrigen Temperaturen mit negativen positiven Energien (und vice versa) gegen unendlich geht. Niedrige positive Temperaturen (mit positiven Energien) haben dieses Problem nicht (die Funktion ist bei T = 0 undefiniert, aber die Grenze, wenn T von oben auf 0 zugeht, ist gut definiert als 0, wenn E> 0 ist). Im Kontext macht es keinen Sinn, dass x oder y sowieso negative Werte haben.

Um dies zu beheben, lassen Sie uns die x gesetzt und y im Bereich von 0 bis 8 (passend zum verknüpften Bild) zu sein, und drehen Sie die isosamples bis

set xrange[0:8] 
set yrange[0:8] 
set isosamples 100 

Jetzt mit Plotten (ein feineres Netz zu geben) splot P(x,y) erzeugt ein Bild, wie die gewünschten

enter image description here

oder mit einer etwas gröberen Masche (set isosamples 30)

enter image description here

Beachten Sie, dass hier die Zeile bei Temperatur = 0 fehlt. Dies liegt auch daran, dass die Funktion dort nicht definiert ist. Wir können einen Bereich sehr nahe bei 0 setzen, aber weg von 0, um dies zu kompensieren (im feineren Mesh-Gnuplot haben wir entweder gar keine Zeile versucht, oder die fehlende Zeile war zu dicht, um es zu bemerken) mit set yrange[0.001:8].

enter image description here

Verwandte Themen