[ 岡山大学 | 理学部 | 地球科学科 | 地球および惑星大気科学研究室 ]

大気科学演習1

gnuplot

再び,式を図にしてみる

\( \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



サイクロイド(円を直線に沿って転がしたときに円周上の1点が描く軌跡)

\[ 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を設定すると縦横のスケールが同じになる.




Last Updated: 2022/10/29, Since: 2019/11/08.
This page is generated by Makefile.rd2html.