2016-02-27 48 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