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

2019年度 大気科学演習1

gnuplot

再び,式を図にしてみる

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)

サイクロイド(円を直線に沿って転がしたときに円周上の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> plot a*( t - sin(t) ), a*( 1 - cos(t) )

円周率は pi と書いたら使うことができる. グラフを描く範囲は,媒介変数 t の範囲として指定することができる.




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