\( \sin \left( x^2 \right) \) を描いてみる.
gnuplot> set xrange [0:10] gnuplot> plot sin(x**2)
簡単に描けるのだが,描かれた図は何かおかしい(と気づいて欲しい).
sin の中に入っている \( x^2 \) は連続な関数で,\( 0<x<10 \) の範囲では単調に増加する. なので,\( \sin \left( x^2 \right) \) は横方向に伸び縮みはしても基本的には sin カーブで,-1 と 1 の間を滑らかにくねくねする曲線になっているはずである. でもそうなっていない. 明らかに間違っている.
gnuplot は式を図にするとき,有限個の点で値を計算して,点の間を直線でつなぐ. 計算する点の数が少ないと,曲線を十分に表現することができないのである. 描画に使用した点の位置を確認するため,with linespoints を使って線と点の両方を表示すると
gnuplot> plot sin(x**2) with linespoints
とやってみると,
この問題は,描画で使用する点の数を増やせば解決する. 描画で使用する点の数は set samples を使って指定する.
gnuplot> set samples 1000 gnuplot> plot sin(x**2) with lines
この類の問題は,計算機が連続なものを離散化して扱うことによって生じるもので,gnuplot に限らずいろいろなところに現れる. 計算機が計算して出した結果は正しいと思ってはいけない. 計算機が出したものは,間違っている可能性があると思って,いつも見直す必要がある.
媒介変数表示された曲線を図に描く.
曲線上の点(x,y)が,変数 t を用いて \[ x = f(t) \] \[ y = g(t) \] で表される場合を考える.
媒介変数表示を使うときは,最初に
gnuplot> set parametric
とする. 媒介変数表示を使うのをやめるときは,
gnuplot> unset parametric
\[ x = \cos(t) \] \[ y = \sin(t) \] これを図に描くには
gnuplot> set parametric gnuplot> set xrange [-1.2:1.2] gnuplot> set yrange [-1.2:1.2] gnuplot> set size square gnuplot> plot cos(t), sin(t)
グラフを描く範囲は,媒介変数 t の範囲として指定することができる.
円周率は pi と書いたら使うことができる.
gnuplot> set trange [0:pi] gnuplot> replot
\[ x = a ( t - \sin(t) ) \] \[ y = a ( 1 - \cos(t) ) \] ここで a は円の半径. a=1 で,0 < t < 2 pi の範囲を描くなら
gnuplot> set parametric gnuplot> a=1 gnuplot> set trange [0:2*pi] gnuplot> set xrange[0:10] gnuplot> set yrange[0:2.5] gnuplot> set size ratio 0.25 gnuplot> plot a*( t - sin(t) ), a*( 1 - cos(t) )
set size ratio は縦軸の長さを横軸の長さに対する比で設定する.ここでは横軸10に対して縦軸は2.5なので,0.25を設定すると縦横のスケールが同じになる.