MAXIMAではグラフ表示に組み込みのopenmathを用いたグラフ表示機能 以外に、外部の可視化ツールのxgraph,gnuplot,geomview,izic,ghostview が使える。但し、xgraphを除いては無条件で使える訳では無く、 PLOT_OPTIONSのPLOT_FORMATの切替が必要である。尚、この値はデフォルト ではopenmathとなっている。
このPLOT_OPTIONSのPLOT_FORMATと可視化ツールの関係を以下に示す:
| PLOT_FORMAT | Viewer |
|---|---|
| openmath | デフォルト |
| ZIC | izic |
| geomview | geomview |
| gnuplot | gnuplot |
| PS | ghostview |
PLOT_FORMATと可視化ツールには上の様な対応関係が存在し、いきなり 勝手な可視化ツールで結果の表示が行える訳では無い。 例えば、geomviewを用いた表示を行う為には、 SET_PLOT_OPTION([PLOT_FORMAT,geomview]);を実行するか、 plot3d(2^(x^2-y^2),[x,-1,1],[y,-2,2],[plot_format,geomview]);の 様にオプションでPLOT_FORMATの切り替えを行う必要がある。尚、 SET_PLOT_OPTIONを実行するとPLOT_FORMATがgeomviewに切り替るだけでは 無く、可視化ツールの方もgeomviewに変更される。ここでplot_options; を実行した時に、[RUN_VIEWER, TRUE]であれば、PLOT_FORMATに適合した 可視化ツールが起動するが、FALSEであればmaximaを起動した際のカレント ディレクトリ上のファイルに画像データが保存される。このファイル名の 本体はmaxoutであるが、その拡張子としてPLOT_FORMATに対応したものが 付けられて、データが出力される。このファイルは対応する可視化ツール で読み込んで表示する事が可能である。ここで、RUN_VIEWERの変更も SET_PLOT_OPTIONで行える。
ここでは先ず最初に可視化ツールの概要を述べる。
xgraphはMAXIMAの本家サイトにも置いてあり、他のツールと比べて 標準的なものである。xgraphを用いると通常の二次元グラフに加えて 棒グラフの表示が行える。但し、三次元グラフの表示も可能であるが、 ワイヤーフレーム表示程度で、派手なものでは無い。
izicはINRIAで開発されたもので、REDUCEやMathematica等でも利用可能 である。但し、ftpサイトで入手可能なものは1995年頃のもので結構古い。 その為、最近のtcl/tkではコンパイルが出来ない。
GNUのグラフ表示ツールでは最も有名で、高機能のものである。 又、日本語の書籍も非常に多くある。Maximaではtkのインターフェイス を備えたmgnuplotが提供されており、視点の変更等がスライドバー操作 で行える。但し、3Dに関してはWireframe程度で、MAXIMA標準の グラフ表示の方が派手で、図形を直接グリグリ回せる等と操作も直感的 なのと比べると幾分劣る。更に、tkインターフェイスで視点の変更等を 行うとエコーバックは全てMaxima側に出力される。
GeomviewはGnuplot程一般には有名で無いが、様々な幾何学形状等の 可視化に利用されている有名なツールである。開発されたのは ミネソタ大学のGeometry Centerであり、数学ビデオの"Not Knot"にも 使われたとの事。このGeomviewは非常に本格的な幾何形状の可視化 ツールで、GPLに従うものである。機能と品質も非常に高く、様々な 形式のデータに変換する事も可能である。更に、モジュールを組込む 事で機能を拡張する事も可能である。現在、その外部モジュールとして 太陽系シミュレータのOrreyや様々な三次元空間を散歩出来るManiview がある。ここでGeomviewのマニュアルの和訳の一部を Geomviewマニュアル に載せている。現在は簡単な概要と単純な使い方のみであるが…。 尚、コンパイルは以前と比べると容易になっているが、色々と環境 の整備が必要かもしれない。
この様に幾つかのツールが選べるが、IZICは現在更新されていない事も あって、実際に利用可能なのは、デフォルトのopenmathにxgraph,gnuplot, geomviewとpsである。以降に出力の実例を示す。
xgraphの場合、他の外部可視化ツールと異なり、PLOT_FORMATの変換を 行わずに出力が自然に行えるxgraph_curves命令を持っている。
(C1) xgraph_curves(
[append(["BarGraph: true","NoLines: true","BarWidth: .2"],
create_list([i-.2,i^2],i,1,3)),
append(["BarGraph: true","NoLines: true","BarWidth: .2"],
create_list([i+.2,.7*i^2],i,1,3))
]);
(D1) 0
|
すると結果は次の棒グラフになる。
|
尚、xgraphの表示ではxgraph-outをテンポラリファイルとして用いる。 更に、xgraphを終了しなくてもmaximaへの入力や計算処理が行える。 しかし、xgraphはMaxima本体に組み込まれている訳では無いので、 自分でコンパイルする必要がある。また、xgraphにPATHが通っている 必要もある。このコンパイルに関してはxgraphがやや古いものの為か、 glibc2.2の環境ではxtb.cの49行のstrcpyで引っ掛かる。この49行の "extern char *strcpy();"の個所を安易にコメントアウトして コンパイルに成功している。
可視化ツールgeomviewはミネソタ大学のGeometry Centerで開発された もので、高機能で表示の質も高いのが特徴である。このGeomviewの 入手はhttp://www.geomview.orgから入手すると良い。尚、バイナリは 古いものが提供されている。尚、自力でコンパイルするのはやや難しい 部類に入る。以前の様にMakefileを修正する必要性は無くなっているが、 ライブラリを色々と揃える必要もある。尚、DebianにGeomviewのパッケージ があるので、それを利用するのも良いが、Debianの方針の為、xforms ライブラリはdisableとなっている為、Maniviewの様に、外部モジュール で使えないものもある。但し、Maximaで生成したオブジェクトの可視化 には問題が無い。尚、現時点でGeomviewはUNIX環境のみで動作する。
このgeomviewを用いる場合、前述の様にPLOT_FORMATをgeomviewにする 必要がある。この設定はset_plot_optionを用いて次の様にすれば良い;
(C1) set_plot_option([plot_format,geomview]); (D1) [[x, - 3, 3], [y, - 3, 3], [GRID, 30, 30], [VIEW_DIRECTION, 1, 1, 1], [COLOUR_Z, FALSE], [TRANSFORM_XY, FALSE], [RUN_VIEWER, TRUE], [PLOT_FORMAT, GEOMVIEW], [NTICKS, 100]] |
これでPLOT_FORMATがgeomviewになる。尚、(D1)の行で返されたリスト がset_plot_optionで設定可能な内容である。これらのオプションの意味 はマニュアルを参照の事。尚、[RUN_VIEWER, TRUE]がこの様にTRUEに なっていれば、plotを実行するとPLOT_FORMATに関連した可視化ツールが 起動するが、ここでFALSEであれば、PLOT_FORMATで指定した可視化ツール が読み込める形式でファイル出力を行う。通常はmaxoutのファイル 名で、拡張子がPLOT_FORMATで指定した値となる。
(D1)の状態で、Maximaのマニュアルにあるクラインの壷を表示してみよう。
(C8) plot3d([5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3.0) - 10.0,
-5*sin(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3.0),
5*(-sin(x/2)*cos(y)+cos(x/2)*sin(2*y))],
[x,-%pi,%pi],[y,-%pi,%pi],['grid,40,40]);
|
この出力を以下の図に示しておく。
|
Geomviewでは直接オブジェクトをマウスでグリグリ回す事が可能である。 又、細長いToolパネルで回転、距離等の切り替えが行える。 又、以下に示すGeomview 1.8.1とある主パネルで他の操作パネルを呼び 出す事が可能である。又、SpaceはEuclidian,Hyperbolic,Sphericalと あるが、ここは通常のEuclidianのままで良い。尚、このSpaceのある事が Geomviewの最大の特徴で、Euclidianが曲率0の空間でのオブジェクトの 表示、Hyperbolicが曲率-1、Sphericalが曲率1の空間にオブジェクトを 埋め込んだ時の表示が行え、摩可不思議な光景を楽しむ事が可能である。 尚、グラフ表示の間はMAXIMAの処理は中断される。その為、グラフ表示で MAXIMAの処理を止めたくなければファイルに落して別途立ち上げた Geomveiwで読み込むと良い。
ここで、Geomviewの主パネルを以下に示す;
|
このInspectから様々なモジュールが呼び出せる。この項目にあるのは 次の通り;
これらのパネルを以下に簡単な紹介と共に示す;
|
Geomviewが立ち上がると主パネルと一緒に出てくる細いパネルが Toolsである。Geomviewでは表示されているオブジェクトを直接 マウスで操作して視点を変更する事が可能であるが、デフォルトで は回転のみが行える。これを平行移動、オブジェクトに 近づく/離れる等の切り替えをToolsで行う。 |
|---|---|
|
Appearanceはオブジェクトの見え方の変更を行う。 ここでは曲面の表示方法やシェイディングの切り替え、 法線ベクトルの表示等が行える。 |
|
Materialではオブジェクトの表示特性を変更する。 |
|
Lightsではオブジェクトを照らす光源の特性の調整や、 光源の追加や削除が行える |
|
Camerasでは、オブジェクトを表示する際の特性、例えば、 視野、クリッピング等の設定や、背景色の設定が行える。 |
|
CommandsはGeomviewの命令を直接入力す為のウインドウである |
そこで、これらのパネルを用いて設定変更を行うと次の様な表示が 行える。
この様にデフォルトのグラフ表示よりも派手派手な表示が行え、 非常に楽しい。
ハデハデなGeomviewの次はGNUPLOTによる表示例を示す。ここでは Geomviewと同様のクラインの壷の例を示す。ここではplot3dの オプションでgnuplotを指定する方式を採用している。この場合、 オプションのplot_formatの設定を外すと、plot_formatに設定さ れた値に対応するツールで結果が表示される。
(C1) plot3d([5*cos(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3.0) - 10.0,
-5*sin(x)*(cos(x/2)*cos(y)+sin(x/2)*sin(2*y)+3.0),
5*(-sin(x/2)*cos(y)+cos(x/2)*sin(2*y))],
[x,-%pi,%pi],[y,-%pi,%pi],['grid,40,40],[plot_format,gnuplot]);
|
|
ここで、図の右側にあるパネルでX,Y軸回りの回転でオブジェクトを回す 事が可能である。但し、その時のエコーがmaxima側に表示されるので、 やや五月蝿いかもしれない。
以上がMaximaで使える外部の可視化ツールを用いた実例である。 次に、最近追加された機能で、助変数付きでグラフを表示する機能に ついて簡単に述べる。
助変数付きの表示は最近追加された機能である。詳細はマニュアルを参照 して頂きたいが、以下の図の様に通常の関数のグラフと混在して描く事が 可能である。
plot2d([x^3+2,[parametric,cos(t),cos(t)*sin(t),[t,-5,5]]],[x,-3,3]); |
|
この図では、x^3+2のグラフと[cos(t),cos(t)*sin(t)]のグラフを描いて いるが、xとtの値域は各々[x,-3,3]と[t,-5,5]で指定している。 この様に助変数tによる表示を行う場合、通常の関数の代りに、
[parametric,Y座標,Y座標,助変数の値域]
でその関数の助変数表示を指定する事になる。