2.1 基本操作

データ解析でも数値計算でも一刻も早く計算結果が見たいものですが, そんな 時, DCLを用いるとわずか数行でデータをグラフ化できます. 最初の例題とし て, リサジューの図形を描いてみましょう. FORTRAN プログラムは, 次の hop です.

# hop.rb

require "narray"
require "numru/dcl"

include NumRu
include NMath

nmax = 400
dt = 2*PI/(nmax-1)
t = NArray.sfloat(nmax).indgen! * dt
x = 1e2*sin(4*t)
y = 1e-3*cos(5*t)+6

iws = (ARGV[0] || (puts ' WORKSTATION ID (I)  ? ;'; DCL::sgpwsn; gets)).to_i
DCL::gropn iws
DCL::grfrm

DCL::ussttl('X-TITLE', 'x-unit', 'Y-TITLE', 'y-unit')
DCL::usgrph(x, y)

DCL::grcls

    T = DT*(N-1)  
    X(N) = 1.E 2*SIN(4.*T)  
    Y(N) = 1.E-3*COS(5.*T) + 6.  
10 CONTINUE  
 
*- グラフ --  
    WRITE(*,*) ' WORKSTATION ID (I)  ? ;'  
    CALL sgpwsn  
    READ (*,*) IWS  
  
  
    NumRu::DCL.gropn(iws)  
    CALL grfrm  
  
 
    NumRu::DCL.ussttl(cxttl,cxunit,cyttl,cyunit)  
    NumRu::DCL.usgrph(x,y)  
  
    CALL grcls  

    END   
program hop

コマンドラインで

% ruby hop.rb
といれると,
WORKSTATION ID (I) ? ;
1:X, 2:PS, 3:Tek ;
ときいてきます. プログラムの17行めでメソッド(元サブルーチン) sgpwsn を呼んだ ので, このように今の環境で利用可能な図形出力装置のリストが書き出されま す.

この場合, 3つの出力先が可能です. X ウインドウシステムが起動されている 状態で1を入力すると, ウインドウがひとつ現れます. マウスクリックでウイ ンドウの位置を確定すると, 描画がはじまり下のようなグラフが得られます. このとき, 次の警告メッセージが出ると思いますが, 特に気にする必要はあり ません. 図形表示の終了はまたマウスクリックで行ないます.

*** WARNING (stswtr) *** WORKSTATION VIEWPORT WAS MODIFIED.

一方, 2 (PS)を指定すると, カレントディレクトリに dcl.ps というポストス クリプトファイルができます. そこで,

% lpr dcl.ps
と入力すれば, ポストスクリプトプリンタに結果が出力されます. また, 3 (Tek)を指定するとテクトロ端末で描画ができます.




\resizebox{10cm}{!}{\includegraphics{hop/hop.eps}}
hop.rb: frame1