2016-02-27 50 views
3

我想在gnuplot中绘制高斯波cos((0.1*x)*exp(-sqrt(x)/2*sqrt(t)))。我定义了一个范围t由:未定义t变量gnuplot

set trange [0.1:2] 
plot cos((0.1*x)*exp(-sqrt(x)/2*sqrt(t))) 

,但它与undefined variable t停止错误。我该怎么办?

+0

你是否在某个地方定义过't'?在你的代码中,没有定义't',所以我同意这个错误。你预计它会使用什么't'的值? – e0k

+0

[0.1:2]之间的一系列数据。我应该在定义t之前定义t吗? – mary

+0

'set trange'用于参数图。那是你想要做什么? – e0k

回答

2

plot命令可以处理单个变量的函数。因此它会填写x的值,但是当它遇到t时,它不知道该怎么做。

如果您以前定义过t,它会使用该值。因此,

t = 0.5 
plot cos((0.1*x)*exp(-sqrt(x)/2*sqrt(t))) 

将工作得很好,使用t的值为0.5。

如果要绘制多条曲线的t范围的值,可以使用plot for语法做这样的事情

plot for [t=0:10] cos((0.1*x)*exp(-sqrt(x)/2*sqrt(0.1+t*0.19))) 

这将绘制曲线值的范围。由于for语法适用于整数,因此我们需要为循环使用整数值,然后计算公式的值(0.1+t*0.19,当t的范围从0到10时,所需范围从0.1到2)。您可以使用标签

plot for [t=0:10] cos((0.1*x)*exp(-sqrt(x)/2*sqrt(0.1+t*0.19))) title sprintf("t=%f",0.1+t*0.19) 

设置一个范围只能使用变量,该地块命令理解的关键。由于t不是其中之一(参数模式除外),所以在这种情况下,range命令不会执行任何操作。

+0

谢谢。有效! – mary