2016-04-11 9 views
1

ich eine Datei haben, die aufgerufen wird: energy_vs_volume.dat das ist die folgende:Gnuplot: verwenden, um eine Funktion, um eine Spalte einer Datendatei zu transformieren und plotten die transformierten Daten und die Funktion

# Volume  Energy 
123.598570 -1.883015140352E+03 
124.960411 -1.883015431207E+03 
126.122583 -1.883015514359E+03 
126.332431 -1.883015514750E+03 

I haben eine Funktion in daß wandelt der energy zu pressure, das ist die folgende:

E0=-1883.01544309 
B0=32.13 
V0=126.4025 
B0_prime=-0.95 
f0=(3.0/2.0)*B0 
f1(x)=((V0/x)**(7.0/3.0))-((V0/x)**(5.0/3.0)) 
f2(x)=((V0/x)**(2.0/3.0))-1 
P(x)= f0*f1(x)*(1+(3.0/4.0)*(B0_prime-4)*f2(x)) 

ich möchte in der gleichen Handlung Parzelle:

Tor # 1: Die Funktion P(x)

Ziel # 2: Alle 4 Reihen von diskreten Daten in der Datei Energyenergy_vs_volume.dat, es konvertieren Druck, um die Funktion und plotten diese 4 Punkte wie y axis: pressure; x axis: volume

Bisher habe ich dieses Ziel erreicht haben:

set encoding utf8 
set termoption enhanced 

E0=-1883.01544309 
B0=32.13 
V0=126.4025 
B0_prime=-0.95 

f0=(3.0/2.0)*B0 
f1(x)=((V0/x)**(7.0/3.0))-((V0/x)**(5.0/3.0)) 
f2(x)=((V0/x)**(2.0/3.0))-1 
P_Birch_Murnaghan(x)= f0*f1(x)*(1+(3.0/4.0)*(B0_prime-4)*f2(x)) 

set xrange [123:138] 

plot P_Birch_Murnaghan(x) with line lt -1 lw 3 

Dieser druckt die kontinuierliche Funktion der P(x) ->Ziel # 1

Um Ziel # 2 möglich zu machen, ich Fügen Sie dem Skript folgendes hinzu:

plot "energy_vs_volume.dat" using (P(x)):2 with line lt -1 lw 3 

oder ähnlich mit $, aber es funktioniert nicht.

Ich würde mich sehr freuen, wenn Sie mir helfen könnten.

EDIT:

ich brauchen würde, um die genauen Werte der Umwandlung wissen (die erzeugten Drücke für die 4 Daten-Volumes). Gibt es eine Möglichkeit, die Ausgabe in eine Datei umzuleiten? etwas ähnlich der Idee von Plot energy_vs_volume.dat" using 1:(P($1)) > file.txt?

+0

@Christoph Nein ... Es funktioniert auch nicht ... –

+0

Sorry, ich habe die Beschreibung falsch gelesen. Siehe meine Antwort – Christoph

Antwort

1

Verwenden

plot "energy_vs_volume.dat" using 1:(P($1)) 

die Funktion P(x) auf Ihre Daten anzuwenden. Um die berechneten Werte in eine Datei zu schreiben, wickeln die Plotbefehl in set/unset table pair:

plot "energy_vs_volume.dat" using 1:(P($1)) 
set table "output.dat" 
replot 
unset table 

Die erzeugte Datei enthält drei Spalten, wie die Werte von der using Anweisung gegeben, und in der dritten Spalte ein Zeichen, das anzeigt, ob die Werte lagen im Bereich (i), außerhalb des Bereichs (o) oder undefiniert (u).

+0

Ja, aber nur eins: es sollte: "plotten" energy_vs_volume.dat "mit 1: (P ($ 1))' ... ok? Gut gemacht! Aber es gibt eine Sache, die ich vergessen habe zu fragen in der Hauptfrage (jetzt editiert): Ich müsste die genauen Werte der Umwandlung kennen (die Drücke, die für die 4 Daten von Bänden erzeugt wurden). Gibt es eine Möglichkeit, die Ausgabe in eine Datei umzuleiten? etwas ähnlich der Idee von "plotten" energy_vs_volume.dat "mit 1: (P ($ 1))> file.txt'? (Es tut mir wirklich leid für den Moment, ich kann Ihnen keine +1 geben, weil ich weniger als 15 Ruf habe) –

+0

Vielen Dank! :) –