場をグラフ化する

作成: 2001-05-06 (書きかけ) / 微更新: 2002-07-12


基本的には、 適当なプログラミング言語(FORTRANなど)で 場のデータを作成し、 それをGNUPLOTで読み込んで図示することになる。 ただし、場がスカラー場であって しかも簡単な式で書けるような場合には、 データを作成しなくても GNUPLOTで直接作図することができる。

スカラー場を描く

スカラー場を描くには、FORTRANか何かでデータファイルを作成し、 それをGNUPLOTのsplotコマンドによってグラフ化する。

たとえば

ψ = cosx sinhy
を図示したいとしよう。 そのための具体的な手順を、演習室の場合に即して説明すると、 以下のようになる。

まずXを起動し、 ktermを2つ開いておく(1つはFORTRAN用で、もう1つがGNUPLOT用)。 次に、FORTRAN用のktermで、 たとえばpsi01.fのようなプログラムを 書いて実行する。 すなわち

% mule psi01.f &
% f77 psi01.f -o psi01
% ./psi01 > psi01.dat
のような手順をふむことにより、 psi01.dat というデータファイルができる(ただし、これは 一例に過ぎないので、ファイル名などは適当に変えてかまわない)。 データファイルの冒頭部分を
% head psi01.dat
として表示させてみると、基本的に
x y psi
というデータ形式になっていることが分かる。 ただし、#で始まる行はコメント行(注釈行)であり、 データには影響しない。

データファイルを作成したら、もうひとつのktermでGNUPLOTを起動し、

splot 'psi01.dat'
のように入力すると、 z = psi(x,y) のグラフを鳥瞰図として表示してくれる。

[スカラー場 psi(x,y) の 鳥瞰図による表示]

なお、今の例のように 場の形が簡単な関数で書ける場合は

psi(x,y) = cos(x)*sinh(y)
のように関数形をGNUPLOTに直接入力し、
splot psi(x,y)
のようにして描画することもできる。 領域(x,y)を制限したい場合や、 データ点の個数を増やしたい場合は、
set isosamples 50;
splot [-5:5][0:3] psi(x,y);
のようにして調整すればよい。

鳥瞰図ではなく、(x,y)平面上の等値線として表示したい場合は、まず

set view 0,0; set noztics; # XY面のみ表示
set nosurface; # 等値面を面として表示しない
set contour base; # 等値面をXY面に表示
のような設定をGNUPLOTに入力し、 そのあとで splotコマンドを実行する。 設定を解除するには resetコマンドを用いる。 等高線の本数を増やすには
set cntrparam levels auto 10
などとする。

[スカラー場 psi(x,y) の等値線による表示]

ベクトル場を描く

まず、ベクトル場 (u,v) = ( u(x,y), v(x,y) ) のデータファイルを

x y u v
の形式で用意する。 たとえば、次のようなプログラムを実行してみよう:

データファイルを作成したら、別のkterm上でGNUPLOTを起動し、

plot 'データファイル名' with vector
のようにしてみよう。 矢印のたくさん描かれている図が表示されたら、 ひとまず成功である。

どうしてもうまくいかない場合は、 GNUPLOTのバージョンが古いということが考えられるので、 起動時のメッセージを確認してみよう。 もしも ver.3.5 以下なら、 ベクトル場の描画がサポートされていない可能性がある。

描画した結果を見ると、矢印の長さが長すぎたり、 縦横の縮尺がおかしかったりするかもしれない。 そのへんの調整をするには、

xmin = -3.0; xmax = 3.0 ;
ymin = -2.5; ymax = 2.5 ;
set size ratio (ymax-ymin)/(xmax-xmin);
adj = 0.8; # 矢印の長さの調整: 次の行を見よ
plot [xmin:xmax] [ymin:ymax] 'vortex.dat' \
   using 1:2:(adj*$3):(adj*$4) title "Rankine vortex" with vector
のように いろいろオプションをつければよい。 (もちろん、 タイトルは内容に応じて変えること! いくら例にあるからといって、 titleを「Rankine渦」にしたままで 図を提出するのは、はっきり言ってまぬけである。 また「題名に偽りあり」ということにもなる。)


[ページの冒頭に戻る] [数理工学演習] [UNIXメモ] [ホームページ]