GNUPLOT 函数
**********

この節では GNUPLOT の ox サーバ ox_sm1_gnuplot とのインタフェース関数を解説する. これらの関数はファイル  gnuplot で定義されている. gnuplot は $(OpenXM_HOME)/lib/asir-contrib/ にある.

          [file opening.texi not included]
     [255] gnuplot.start();
     0
     [257] gnuplot.gnuplot("plot sin(x**2);");
     0

関数 gnuplot.heat(DT,STEP) はわれわれの GNUPLOT インタフェース関数のデモである. この関数は熱伝導方程式区間 [0,1] は Heat_N 個に分割される. static 変数 Heat_N は関数 gnuplot.set_heat_N で設定する. 有名な Courant-Friedrichs-Levi 数 DT*Heat_N*Heat_N が 0.5 以下であれば, 陽的差分スキームは安定である. CFL を変えることにより, 不安定性が生じるのを観察できる.

       gnuplot.set_heat_N(20); gnuplot.heat(0.001,30);   (CFL number is 0.4)
       gnuplot.set_heat_N(20); gnuplot.heat(0.003,30);   (CFL > 0.5 unstable)

Author of GNUPLOT: Thomas Williams, Colin Kelley

函数一覧
====

gnuplot.start
-------------

gnuplot.start()
     ::  Localhost で ox_sm1_gnuplot を起動する.

return
     整数

  * Localhost で ox_sm1_gnuplot を起動する. 起動された ox_sm1_gnuplot の識別番号を戻す.

  * Xm_noX =1 としておくと, ox_sm1_gnuplot 用の debug window が開かない.

  * 識別番号は, Gnuplot_proc に格納される.

     P = gnuplot.start();

参照
     ox_launch, gnuplot

gnuplot
-------

gnuplot.gnuplot(S|proc=P)
     ::  GNUPLOT にコマンド S を実行してもらう.

return
     なし

p
     数

s
     文字列

  * サーバは GNUPLOT のコマンド S を実行する. エラーがおきた場合 GNUPLOT 本体は終了してしまうが, ox_sm1_gnuplot は自動的に GNUPLOT 本体をリスタートする.

  * GNUPLOT は長い多項式をただしくうけつけない.

  * GNUPLOT は ^ をうけつけない. かわりに, ** を使う.

     [232] P = gnuplot.start();
     0
     *Plot 3 dimensional graph.
     [233] gnuplot.gnuplot("splot x**2-y**2;"|proc=P);
     0
     *Plot 2 dimensional graph.
     [234] gnuplot.gnuplot("plot [-pi:pi] [-2:2] cos(x);");
     0
     *Output a graph as a postscript figure.
     [235] gnuplot.output(|file="hoge.eps");
     0
     [236] gnuplot.gnuplot("plot sin(x)*cos(x);");
     0
     [237] gnuplot.gnuplot(|file="x11");
     0

     *Plot 3 dimensional graph hiding unvisible lines.
     [236] gnuplot.gnuplot("set hidden3d");
     0
     [237] gnuplot.gnuplot("splot (x**2+y**2)*sin(x**2+y**2)");
     0
     [238] gnuplot.gnuplot("set isosamples 50");
     0
     [239] gnuplot.gnuplot("splot (x**2+y**2)*sin(x**2+y**2)");

参照
     ox_launch, gnuplot.start, rtostr, gnuplot.plot_dots

参考書
     矢吹道郎, 大竹つよし; 使いこなす GNUPLOT, テクノプレス, ISBN4-924998-11-7

gnuplot.plot_dots
-----------------

gnuplot.plot_dots(D,S|proc=P)
     ::  点の集合 D をスタイル S でプロットする.

return
     なし

p
     数

d
     リスト

s
     文字列 または 0

  * 点集合 D をスタイル S でプロットする. S は次のような文字列: "style color point". ここで style には lines, points, linespoints, impulses, dots, steps, errorbars, boxes, boxerrorbars を選べる. color には 1 (red), 2 (green), 3 (blue), 4, ... , 8 を選べる. point は 1 から 8 の数を入れる. color, point は省略してよい.

  * D == [  ] のときはスクリーンがまず消去される.

     [239] P = gnuplot.start();
     0
     [240] gnuplot.plot_dots([ ],0);
     0
     [241] for (I=0; I<10; I++) gnuplot.plot_dots([[I,I^2]]," lines ");
     [242] A = [ ];
     []
     [243] for (I=0; I<10; I++) A = append(A,[ [I,I^2]]);
     [244] A;
     [[0,0],[1,1],[2,4],[3,9],[4,16],[5,25],[6,36],[7,49],[8,64],[9,81]]
     [245] gnuplot.plot_dots(A," lines ");
     0

参照
     gnuplot.start, plot "fileName" with options(GNUPLOT command), gnuplot.clean, gnuplot

gnuplot.heat
------------

gnuplot.heat(DT,STEP)
     ::  熱伝導方程式を数値的に解く.

return
     なし

dt
     浮動小数点数

step
     整数

  * 熱伝導方程式 du/dt = d^2 u/dx^2,  u(t,0) = u(t,1) = 0 を初期条件 u(0,x) = x (0 <= x <= 0.5), u(0,x) = 1-x ( 0.5 <= x <= 1.0) で解く.

  * Heat_N は空間方向でのメッシュの数.

  * この関数は将来 pde_heat_demo と呼ばれる予定.

     [232] Heat_N = 20$
     [233] gnuplot.heat(0.001,30)$

gnuplot.output
--------------

gnuplot.output(|FILE=S)
     ::  GNUPLOT にファイル S へポストスクリプトで出力するように頼む.

return
     Void

s
     String

  * GNUPLOT にファイル S へポストスクリプトで出力するように頼む.

  * s が "x11" または, この関数を引数無しでよぶと, 以後, X11 の display に graphics が出力される.

     [273] gnuplot.output(|file="hoge.eps");
     Graphic output of GNUPLOT will be written to hoge.eps as a Poscript file.
     0
     [274] gnuplot.gnuplot("plot tan(x)+sin(x);");
     0
     [275] gnuplot.output();
     Usage of gnuplot.output: gnuplot.output(|file="string")
                              gnuplot.output(|file="x11")
     Output device is set to X11

参照
     gnuplot

gnuplot.plot_function
---------------------

gnuplot.plot_function(F|proc=P)
     ::  gnuplot サーバに F のグラフを書くように頼む.

戻り値
     なし

p
     数

f
     多項式または多項式のリスト

  * gnuplot サーバに F のグラフを書くように頼む.

     [290] gnuplot.plot_function((x+sin(x))^2);
     0
     [291] gnuplot.plot_function([x,x^2,x^3]);
     0

参照
     gnuplot.to_gnuplot_format