Wie zeichnet man die Summation über die exp-Funktion in gnuplot auf?

679
Mohsen El-Tahawy

Gibt es einen kurzen Weg, um die folgende Summation der exp-Funktion darzustellen?

plot f1*exp(-0.001*(x-L1)^2) + f2*exp(-0.001*(x-L2)^2) + etc 

Dabei werden f und L in coulmns 1 & 2 in der Datei data.dat sortiert .

1

1 Antwort auf die Frage

1
Joce

Also ienthält die Dateizeile f_i L_i? Sie können dies tun, indem Sie eine Funktion aufrufen:

sumval=0 add(x)=(sumval=sumval+x) plot "file.dat" using 0:(add($1*exp(-0.001*(x-$2)**2))) 

(hier werden die Abszissen in Form von Zeilennummer, Pseudo-Spalte angegeben $0) Hier xwird vorausgesetzt, dass sie vor dem Festlegen festgelegt sind, z x=.... B. einen Befehl.

Aber ich schätze, was Sie wollten, ist xdas Ergebnis der Summation.

Dann müssten Sie eine große Anzahl dieser Summen machen und nur den letzten Punkt für jede Summe darstellen x.

N_samples=100 # number of points to plot Xmin=0 Xmax=1. x(ix)=Xmin+(Xmax-Xmin+0.)*ix/N_samples stats "data.dat"  N=STATS_records sumval=0 currec=0 finished(v)=(sumval=0,currec=0,v) #reinitialise the counters add(y)=(currec=currec+1,sumval=sumval+y,(currec==N)?finished(sumval):1/0) plot [Xmin:Xmax] for [ix=0:N_samples] "file.dat" using (x(ix)):(add($1*exp(-0.001*(x(ix)-$2)**2))) 

Sie können Punkte nicht mit einer Linie verbinden, es sei denn, Sie leiten Ihre Zeichnung zuerst zu einer Tabelle um und plotten dann diese Tabelle.