Linux(UNIX)の代表的なグラフ作成ツールです.「端末」を開き,"gnuplot"と打つと立ち上がります.
"plot"の後に関数を書くだけでグラフが表示されます.以下は
plot sin(x)
で正弦関数を表示させた例です.
.
余弦関数は"cos(x)",正接関数は"tan(x)"で表示されます.
表示するx軸の区間は"[a:b]"で指定できます.以下は
plot [-3.14:3.14] cos(x)
で-πからπまでの範囲で余弦関数を表示させた例です.
.
掛け算は"*"で表現できます.以下は
plot [-3.14:3.14] cos(2*x)
の結果です.
.
割り算は"/"で表現できます.以下は
plot 1/x
の結果です.
.
gnuplotでは指数関数を"exp(x)"で表現できます.表示するy軸の区間"[c:d]"は
x軸の区間"[a:b]"に続けてy"[a:b] [c:d]"のように並べることで指定できます.以下は
plot [-5:10] [-5:10] exp(x)
の結果です.
.
"set grid"でグリッドを表示させることができます.
set grid
"unset grid"で解除できます.以下は
グリッドを設定しているときの指数関数
plot [-5:10] [-5:10] exp(x)
の結果です.
.
gnuplotでは対数関数を"log(x)"で表現できます.","で区切れば複数を表示させることができます.以下は"set grid"し
ているときに
plot [0:10] [-10:10] log(x),1/x
によって対数関数とその傾きを表示させた結果です.
.
gnuplotでは"set logscale"で対数目盛を指定できます.
set logscale y
以下はこの状態で
plot [1:5] [1:10] exp(x)
によって指数関数を片対数で表示させた結果です.
.
"unset logscale"で解除できます.以下は解除して同じ関数
plot [1:5] [1:10] exp(x)
を表示させた結果です.
.
足し算は"+"で,引き算は"-"で表現できます.べき乗は"**"で表現できます.
以下はテーラー展開を試す例です.
plot [-10:10] [-5:10] exp(x),1+x+(x**2)/2+(x**3)/6
によって指数関数のテーラー展開をgnuplotで調べた結果です.
.
以下は余弦関数のテーラー展開を試した結果です.
plot [-3.14:3.14] cos(x),1-(x**2)/2+(x**4)/24
.
以下は正弦関数の場合です.
plot [-3.14:3.14] sin(x),x-(x**3)/6+(x**5)/120
.
以下はフーリエ級数を試す例です.
-πからπまでは|π|という2π周期の関数(下図)を調べてみましょう.
plot [-6.28:6.28] 3.14/2-(4*cos(x))/3.14-(4*cos(3*x))/(3.14*9)
連続なら項の数を増やすと元の関数に近づいてくれます.
plot [-6.28:6.28] 3.14/2-(4*cos(x))/3.14-(4*cos(3*x))/(3.14*9)-(4*cos(5*x))/(3.14*25)-(4*cos(7*x))/(3.14*49)-(4*cos(9*x))/(3.14*81)-(4*cos(11*x))/(3.14*121)-(4*cos(13*x))/(3.14*169)-(4*cos(15*x))/(3.14*225)
-πから0まではπ+xで,0からπまではπ-xという2π周期の関数(下図)
を調べてみましょう.|x|と上下さかさまになった関数なので,上の式をπから引いたものになります.
plot [-6.28:6.28] 3.14/2+(4*cos(x))/3.14+(4*cos(3*x))/(3.14*9)
先ほどと同様,項の数を増やすと元の関数に近づいてくれます.
plot [-6.28:6.28] 3.14/2+(4*cos(x))/3.14+(4*cos(3*x))/(3.14*9)+(4*cos(5*x))/(3.14*25)+(4*cos(7*x))/(3.14*49)+(4*cos(9*x))/(3.14*81)+(4*cos(11*x))/(3.14*121)+(4*cos(13*x))/(3.14*169)+(4*cos(15*x))/(3.14*225)
-πから0までは-1で,0からπまでは1という2π周期の関数だが,0を含むnπで,連続でない関数(下図)を
調べてみましょう.
plot [-6.28:6.28] (4*sin(x))/3.14+(4*sin(3*x))/(3.14*3)+(4*sin(5*x))/(3.14*5)+(4*sin(7*x))/(3.14*7)
項の数を増やしてみましょう.
plot [-6.28:6.28] (4*sin(x))/3.14159265359+(4*sin(3*x))/(3.14159265359*3)+(4*sin(5*x))/(3.14159265359*5)+(4*sin(7*x))/(3.14159265359*7)+(4*sin(9*x))/(3.14159265359*9)+(4*sin(11*x))/(3.14159265359*11)+(4*sin(13*x))/(3.14159265359*13)+(4*sin(15*x))/(3.14159265359*15)+(4*sin(17*x))/(3.14159265359*17)+(4*sin(19*x))/(3.14159265359*19)+(4*sin(21*x))/(3.14159265359*21)
いくら項の数を増やしても,連続でない点,nπでのリップルは消えてくれません.
plot [-6.28:6.28] (4*sin(x))/3.14159265359+(4*sin(3*x))/(3.14159265359*3)+(4*sin(5*x))/(3.14159265359*5)+(4*sin(7*x))/(3.14159265359*7)+(4*sin(9*x))/(3.14159265359*9)+(4*sin(11*x))/(3.14159265359*11)+(4*sin(13*x))/(3.14159265359*13)+(4*sin(15*x))/(3.14159265359*15)+(4*sin(17*x))/(3.14159265359*17)+(4*sin(19*x))/(3.14159265359*19)+(4*sin(21*x))/(3.14159265359*21)+(4*sin(23*x))/(3.14159265359*23)+(4*sin(25*x))/(3.14159265359*25)+(4*sin(27*x))/(3.14159265359*27)+(4*sin(29*x))/(3.14159265359*29)+(4*sin(31*x))/(3.14159265359*31)+(4*sin(33*x))/(3.14159265359*33)+(4*sin(35*x))/(3.14159265359*35)+(4*sin(37*x))/(3.14159265359*37)+(4*sin(39*x))/(3.14159265359*39)+(4*sin(41*x))/(3.14159265359*41)+(4*sin(43*x))/(3.14159265359*43)+(4*sin(45*x))/(3.14159265359*45)+(4*sin(47*x))/(3.14159265359*47)+(4*sin(49*x))/(3.14159265359*49)+(4*sin(51*x))/(3.14159265359*51)+(4*sin(53*x))/(3.14159265359*53)+(4*sin(55*x))/(3.14159265359*55)+(4*sin(57*x))/(3.14159265359*57)+(4*sin(59*x))/(3.14159265359*59)+(4*sin(61*x))/(3.14159265359*61)+(4*sin(63*x))/(3.14159265359*63)+(4*sin(65*x))/(3.14159265359*65)+(4*sin(67*x))/(3.14159265359*67)+(4*sin(69*x))/(3.14159265359*69)
理論的に,リップルは不連続になっている関数の値の18%であることが知られています.フーリエ級数で不連続点にリップルが表れることはギブス現象(Gibbs' phenomenon)と言われています.
gnuplotで極座標(polar coordinate)を使うには"set polar"とします.
set polar
解除は"unset polar"です.以下は
plot [0:12.56] t
でアルキメデスの螺旋を表示させた結果です.
"polar"などの状態は"show polar"などで確認できます.
show polar
以下は極座標で
plot 1+cos(t)
として心臓形(cardioid)を表示させた結果です.
gnuplotで三次元(3D)の表示をさせるには"splot"を使います.平方根は"sqrt"で表現できます.以下は
splot sqrt(x**2+y**2)
の結果です.
"set xrange [a:b]"や"set yrange [c:d]"のように範囲を指定できます.
set xrange [-5:10]
set yrange [-5:20]
gnuplotでは値を指定しての表示も可能です."sample"というファイルに変数xの値とそのときの変数yの値を
0 1
1 1.4
2 2
3 2.8
4 4
5 5.6
6 8
7 11
8 16
9 22
のように格納して
plot "sample" with linespoints
を打った結果です.
"lines"だけ,"points"だけの指定も可能です.
plot "sample1" with lines , "sample2" with lines
のように複数を指定することも出来ます.
"impulses"という指定をすると棒グラフが表示されます.
式と併せての表示もできます.以下は
plot "sample" with impulses, 2**(x/2)
の結果です.
"CSVファイルのデータを読んでプロットさせることもできます.
plot "data.csv"
区切りがカンマになっているときは,予め下記の指定をしておきます.
set datafile separator ","