sin(x*x) を描いてみる.
gnuplot> set xrange [0:10] gnuplot> plot sin(x*x)
簡単に描けるのだが,描かれた図は何かおかしい(と気づいて欲しい).
sin の中に入っている x*x は連続な関数で,0<x<10 の範囲では単調に増加する. なので,sin(x*x) は横方向に伸び縮みはしても基本的には sin カーブで,-1 と 1 の間を滑らかにくねくねする曲線になっているはずである. でもそうなっていない. 明らかに間違っている.
gnuplot は式を図にするとき,有限個の点で値を計算して,点の間を直線でつなぐ. 計算する点の数が少ないと,曲線を十分に表現することができないのである.
gnuplot> plot sin(exp(x)) with points
とやってみると,描画で使用した点の位置がわかる.
この問題は,描画で使用する点の数を増やせば解決する.
gnuplot> set samples 1000 gnuplot> plot sin(x*x) 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> plot cos(t), sin(t)
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> plot a*( t - sin(t) ), a*( 1 - cos(t) )
円周率は pi と書いたら使うことができる. グラフを描く範囲は,媒介変数 t の範囲として指定することができる.