# 常量、操作符和函數
### 數字
gnuplot?表示數字可分成整數、實數及復數三類:
整數:gnuplot?與?C?語言相同,采用?4?byte?儲存整數。故能表示?-2147483647?至?+2147483647?之間的整數。
實數:能表示約?6?或?7?位的有效位數,指數部份為不大于?308?的數字。
復數:以?{<real>,<imag>}?表示復數。其中<real>為復數的實數部分,<imag>為虛數部分,此兩部分均以實數型態表示。?如?3?+?2i?即以?{3,2}?表示。?
gnuplot?儲存數字的原則為,若能以整數方式儲存則以整數儲存數字,不然以實數方式儲存,其次以復數方式儲存。例如在?gnuplot?執行?
~~~
print 1/3*3
print 1./3*3
~~~
分別得到?0?和?1.0?的結果。這是因前者使用整數計算,而后者采用實數計算的結果。執行
~~~
print 1234.567
print 12345 + 0.56789
print 1.23e300 * 2e6
print 1.23e300 * 2e8
~~~
分別得到?1234.57、12345.6、2.46e+304?和?undefined?value?的結果。這些例子是受到實數的有效位數和所能表現最大數字的限制。這是我們要注意的。
### 操作符
gnuplot?的操作符與?C?語言基本相同。?所有的操作均可做用在整數、實數或復數上。
表格?1?Unary?Operators
<table><tbody><tr><td valign="top"><p>Symbol</p></td><td valign="top"><p>Example</p></td><td valign="top"><p>Explanation</p></td></tr><tr><td valign="top"><p>-</p></td><td valign="top"><p>-a</p></td><td valign="top"><p>unary?minus</p></td></tr><tr><td valign="top"><p>~</p></td><td valign="top"><p>~a</p></td><td valign="top"><p>one's?complement</p></td></tr><tr><td valign="top"><p>!</p></td><td valign="top"><p>!a</p></td><td valign="top"><p>logical?negation</p></td></tr><tr><td valign="top"><p>!</p></td><td valign="top"><p>a!</p></td><td valign="top"><p>factorial</p></td></tr></tbody></table>
表格?2?Binary?Operators
<table><tbody><tr><td valign="top"><p>Symbol</p></td><td valign="top"><p>Example</p></td><td valign="top"><p>Explanation</p></td></tr><tr><td valign="top"><p>**</p></td><td valign="top"><p>a**b</p></td><td valign="top"><p>exponentiation</p></td></tr><tr><td valign="top"><p>*</p></td><td valign="top"><p>a*b</p></td><td valign="top"><p>multiplication</p></td></tr><tr><td valign="top"><p>/</p></td><td valign="top"><p>a/b</p></td><td valign="top"><p>division</p></td></tr><tr><td valign="top"><p>%</p></td><td valign="top"><p>a%b</p></td><td valign="top"><p>modulo</p></td></tr><tr><td valign="top"><p>+</p></td><td valign="top"><p>a+b</p></td><td valign="top"><p>addition</p></td></tr><tr><td valign="top"><p>-</p></td><td valign="top"><p>a-b</p></td><td valign="top"><p>subtraction</p></td></tr><tr><td valign="top"><p>==</p></td><td valign="top"><p>a==b</p></td><td valign="top"><p>equality</p></td></tr><tr><td valign="top"><p>!=</p></td><td valign="top"><p>a!=b</p></td><td valign="top"><p>inequality</p></td></tr><tr><td valign="top"><p>&</p></td><td valign="top"><p>a&b</p></td><td valign="top"><p>bitwise?AND</p></td></tr><tr><td valign="top"><p>^</p></td><td valign="top"><p>a^b</p></td><td valign="top"><p>bitwise?exclusive?OR</p></td></tr><tr><td valign="top"><p>|</p></td><td valign="top"><p>a|b</p></td><td valign="top"><p>bitwise?inclusive?OR</p></td></tr><tr><td valign="top"><p>&&</p></td><td valign="top"><p>a&&b</p></td><td valign="top"><p>logical?AND</p></td></tr><tr><td valign="top"><p>||</p></td><td valign="top"><p>a||b</p></td><td valign="top"><p>logical?OR</p></td></tr><tr><td valign="top"><p>?:</p></td><td valign="top"><p>a?b:c</p></td><td valign="top"><p>ternary?operation</p></td></tr></tbody></table>
### 函數
在?gnuplot?中函數的參數可以是整數,實數或是復數。表格?3是?gnuplot?所提供的函數。
表格?3?gnuplot?functions
<table><tbody><tr><td valign="top"><p>Function</p></td><td valign="top"><p>Auguments</p></td><td valign="top"><p>Returns</p></td></tr><tr><td valign="top"><p>abs(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>absolute?value?of?x,?|x|;?same?type</p></td></tr><tr><td valign="top"><p>abs(x)</p></td><td valign="top"><p>complex</p></td><td valign="top"><p>length?of?x,?sqrt(?real(x)^2?+?imag(x)^2?)</p></td></tr><tr><td valign="top"><p>acos(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>1/cos(x)?(inverse?cosine)?in?radians</p></td></tr><tr><td valign="top"><p>Acosh(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>cosh?1?x?(inverse?hyperbolic?cosine)?in?radians</p></td></tr><tr><td valign="top"><p>arg(x)</p></td><td valign="top"><p>complex</p></td><td valign="top"><p>the?phase?of?x?in?radians</p></td></tr><tr><td valign="top"><p>asin(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>1/sin(x)?(inverse?sin)?in?radians</p></td></tr><tr><td valign="top"><p>asinh(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>sinh?1?x?(inverse?hyperbolic?sin)?in?radians</p></td></tr><tr><td valign="top"><p>atan(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>1/tan(x)?(inverse?tangent)?in?radians</p></td></tr><tr><td valign="top"><p>atan2(y,x)</p></td><td valign="top"><p>int?or?real</p></td><td valign="top"><p>tan?1(y/x)?(inverse?tangent)</p></td></tr><tr><td valign="top"><p>atanh(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>tanh?1?x?(inverse?hyperbolic?tangent)?in?radians</p></td></tr><tr><td valign="top"><p>besj0(x)</p></td><td valign="top"><p>int?or?real</p></td><td valign="top"><p>J0?Bessel?function?of?x</p></td></tr><tr><td valign="top"><p>besj1(x)</p></td><td valign="top"><p>int?or?real</p></td><td valign="top"><p>J1?Bessel?function?of?x</p></td></tr><tr><td valign="top"><p>besy0(x)</p></td><td valign="top"><p>int?or?real</p></td><td valign="top"><p>Y0?Bessel?function?of?x</p></td></tr><tr><td valign="top"><p>besy1(x)</p></td><td valign="top"><p>int?or?real</p></td><td valign="top"><p>Y1?Bessel?function?of?x</p></td></tr><tr><td valign="top"><p>ceil(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>smallest?integer?not?less?than?x?(real?part)</p></td></tr><tr><td valign="top"><p>cos(x)</p></td><td valign="top"><p>radians</p></td><td valign="top"><p>cos?x,?cosine?of?x</p></td></tr><tr><td valign="top"><p>cosh(x)</p></td><td valign="top"><p>radians</p></td><td valign="top"><p>cosh?x,?hyperbolic?cosine?of?x</p></td></tr><tr><td valign="top"><p>erf(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>Erf(real(x)),?error?function?of?real(x)</p></td></tr><tr><td valign="top"><p>erfc(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>Erfc(real(x)),?1.0?-?error?function?of?real(x)</p></td></tr><tr><td valign="top"><p>exp(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>exponential?function?of?x</p></td></tr><tr><td valign="top"><p>floor(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>largest?integer?not?greater?than?x?(real?part)</p></td></tr><tr><td valign="top"><p>gamma(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>Gamma(real(x)),??gamma?function?of?real(x)</p></td></tr><tr><td valign="top"><p>ibeta(p,q,x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>Ibeta(real(p,q,x)),?ibeta?function?of?real(p,q,x)</p></td></tr><tr><td valign="top"><p>inverf(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>inverse?error?function?of?real(x)</p></td></tr><tr><td valign="top"><p>igamma(a,x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>Igamma(real(a,x)),?igamma?function?of?real(a,x)</p></td></tr><tr><td valign="top"><p>imag(x)</p></td><td valign="top"><p>complex</p></td><td valign="top"><p>imaginary?part?of?x?as?a?real?number</p></td></tr><tr><td valign="top"><p>invnorm(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>inverse?normal?distribution?function?of?real(x)</p></td></tr><tr><td valign="top"><p>int(x)</p></td><td valign="top"><p>real</p></td><td valign="top"><p>integer?part?of?x,?truncated?toward?zero</p></td></tr><tr><td valign="top"><p>lambertw(x)</p></td><td valign="top"><p>real</p></td><td valign="top"><p>Lambert?W?function</p></td></tr><tr><td valign="top"><p>lgamma(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>Lgamma(real(x)),??lgamma?function?of?real(x)</p></td></tr><tr><td valign="top"><p>log(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>ln(x),?natural?logarithm?(base?e)?of?x</p></td></tr><tr><td valign="top"><p>log10(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>log(x),??logarithm?(base?10)?of?x</p></td></tr><tr><td valign="top"><p>norm(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>normal?distribution?(Gaussian)?function?of?real(x)</p></td></tr><tr><td valign="top"><p>rand(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>normal?distribution?(Gaussian)?function?of?real(x)</p></td></tr><tr><td valign="top"><p>real(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>Rand(real(x)),??pseudo?random?number?generator</p></td></tr><tr><td valign="top"><p>sgn(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>real?part?of?x</p></td></tr><tr><td valign="top"><p>sin(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>1?if?x>0,?-1?if?x<0,?0?if?x=0.?imag(x)?ignored</p></td></tr><tr><td valign="top"><p>sinh(x)</p></td><td valign="top"><p>radians</p></td><td valign="top"><p>sin(x),?sine?of?x</p></td></tr><tr><td valign="top"><p>sqrt(x)</p></td><td valign="top"><p>radians</p></td><td valign="top"><p>sinh(x),?hyperbolic?sine?x</p></td></tr><tr><td valign="top"><p>tan(x)</p></td><td valign="top"><p>any</p></td><td valign="top"><p>sqrt(x),??square?root?of?x</p></td></tr><tr><td valign="top"><p>tanh(x)</p></td><td valign="top"><p>complex</p></td><td valign="top"><p>tan(x),??tangent?of?x</p></td></tr><tr><td valign="top"><p>column(x)</p></td><td valign="top"><p>int</p></td><td valign="top"><p>column?x?during?datafile?manipulation.</p></td></tr><tr><td valign="top"><p>defined(X)</p></td><td valign="top"><p>variable?name</p></td><td valign="top"><p>returns?1?if?a?variable?X?is?defined,?0?otherwise.</p></td></tr><tr><td valign="top"><p>tm?hour(x)</p></td><td valign="top"><p>int</p></td><td valign="top"><p>the?hour</p></td></tr><tr><td valign="top"><p>tm?mday(x)</p></td><td valign="top"><p>int</p></td><td valign="top"><p>the?day?of?the?month</p></td></tr><tr><td valign="top"><p>tm?min(x)</p></td><td valign="top"><p>int</p></td><td valign="top"><p>the?minute</p></td></tr><tr><td valign="top"><p>tm?mon(x)</p></td><td valign="top"><p>int</p></td><td valign="top"><p>the?month</p></td></tr><tr><td valign="top"><p>tm?sec(x)</p></td><td valign="top"><p>int</p></td><td valign="top"><p>the?second</p></td></tr><tr><td valign="top"><p>tm?wday(x)</p></td><td valign="top"><p>int</p></td><td valign="top"><p>the?day?of?the?week</p></td></tr><tr><td valign="top"><p>tm?yday(x)</p></td><td valign="top"><p>int</p></td><td valign="top"><p>the?day?of?the?year</p></td></tr><tr><td valign="top"><p>tm?year(x)</p></td><td valign="top"><p>int</p></td><td valign="top"><p>the?year</p></td></tr><tr><td valign="top"><p>valid(x)</p></td><td valign="top"><p>int</p></td><td valign="top"><p>test?validity?of?column(x)?during?datafile?manip.</p></td></tr></tbody></table>
下面舉一些例子:
~~~
plot [0.5:20] besj0(x), besj1(x), besy0(x), besy1(x)
plot [0:5] erf(x), erfc(x), inverf(x)
~~~


### 用戶自定義函數和常量
在?gnuplot?中,用戶可自定函數。函數可有?1?至?5?個自變量。?其定義函數的語法如下:?
~~~
<function-name> ( <dummy1> {,<dummy2> {, ...}}) = <expression>
~~~
而用戶定義常數的語法如下:?
~~~
<variable-name> = <constant-expression>
~~~
下面舉一些例子:
~~~
# 常數 w 為 2。
w = 2
# 常數 q 為小于但最接近 tan(pi/2 - 0.1) 的整數。
q = floor(tan(pi/2 - 0.1))
# 函數 f(x) 為 sin(w*x),其中 w 為常數。
f(x) = sin(w*x)
# 函數 sinc(x) 為 sin(pi*x)/(pi*x)。
sinc(x) = sin(pi*x)/(pi*x)
# 函數 delta(t) 為脈沖函數。
delta(t) = (t == 0)
# 函數 ramp(t) 當其小于零為零,當其大于零為斜率等于 1 的直線。
ramp(t) = (t > 0) ? t : 0
# 函數 min(a,b) 取兩者中較小的數。
min(a,b) = (a < b) ? a : b
comb(n,k) = n!/(k!*(n-k)!)
len3d(x,y,z) = sqrt(x*x+y*y+z*z)
plot f(x) = sin(x*a), a = 0.2, f(x), a = 0.4, f(x)
~~~

gnuplot?已定義的常數僅有?pi?(pi?=?3.14159)。
- 前言
- gnuplot 中的數據平滑
- 利用 Maxima 求解常微分方程
- Maxima 的繪圖功能 1
- Maxima 的繪圖功能 2
- Maxima 的繪圖功能 3
- Maxima 矩陣及矢量運算 1
- Maxima 矩陣及矢量運算 3
- Maxima 矩陣及矢量運算 4
- maxima 學習筆記(coeff 函數的應用)
- maxima 代數表達式變換
- maxima 學習筆記(基本微積分)
- maxima 代數方程求解
- Maxima 中的復數運算
- Maxima 的三角函數化簡功能
- Maxima 的基本微積分操作
- 利用 gnuplot 繪制時間序列圖
- gnuplot 入門教程 1
- gnuplot 入門教程 2
- gnuplot 入門教程 3
- gnuplot 入門教程 4
- gnuplot 讀取逗號分隔的數據文件
- scilab 讀取處理 wav 文件
- scilab 讀取處理 wav 文件 (2)
- Scilab 處理聲音數據(補充)
- 利用 SCILAB 設計 FIR 濾波器(窗函數法)
- 利用 SCILAB 設計 FIR 濾波器(Minimax法)
- 利用 SCILAB 設計 iir 濾波器設計(模擬濾波器雙線性變換法)
- Scilab 的繪圖函數(1)
- Scilab 的繪圖函數(2)
- Scilab 的繪圖函數(3)
- Scilab 的繪圖函數(4)