如何在 gnuplot 中绘制 exp 函数的总和?

如何在 gnuplot 中绘制 exp 函数的总和?

是否有任何简便的方法可以绘制以下 exp 函数的总和?

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

在哪里F大号值按列排序1&2在文件中数据文件, 分别。

答案1

因此i文件的行包含f_i L_i?您可以使用调用函数来执行此操作:

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

(此处的横坐标将以行号、伪列表示$0)此处x假定在发出例如x=...命令之前已固定。

但是我猜您想要的是针对任意x值绘制求和结果?

然后,您需要进行大量这样的求和,并仅绘制每个求和的最后一个点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)))

除非您先将绘图重定向到表格并绘制该表格,否则您将无法用线连接点。

相关内容