数式処理及び数値計算システムの概要を述べます.ここでの解説には私の主観 が相当入ったもので,不備・誤解も多くあると思いますが,その点は注意して 下さい.
次の事項に留意して編集しています.
実際に使ってみた感想をまとめています.但し,使った事の無いもの についてはWebPage等で調べた事を基にしています.
動作環境は大体のものを記述します.GPL等のOpen Sourceのものは基本的に UNIX環境やMacOSXであれば動作可能です.現在,商用のものも含め,UNIX環境は Linuxに集約する傾向が強く,他は利用者の多いWindowsやMacOSXに対応しています. 猶,MacOSXはLinux環境としても利用可能な事もあって,Cygwinを併用する必要が 出てくるWindowsよりも環境の構築は楽な面があります.但し,MacOSXは他のOS と比較して64bit対応では遅れており,Windowsも十分とは言えない為,大規模計算 や処理能力を求めるのであればLinux x86_64環境が最も現実的です.
数式処理・数値計算システムがどの様な形態で入手可能であるか示します. 例えば,バイナリのみ,ソースファイル込みの様に表記します.一般に商用の ものはバイナリのみの配布が主ですが,一部の商用のものにソースファイル 込みの販売もあります.勿論,この場合には通常よりも料金は高くなります. 更に,ソースコード込みの販売の場合,ユーザが改変した部分に関しては サポートされないものが殆どです.
商用、フリーのものであるかを示します.猶、ここで単純にフリーと云う ものは個人的使用を目的とした場合に課金不要の物とします.他に使用条件 やGNU General Public License(以下、GPLと略する)やBSD License等に 従う物はその旨を明記します.
開発元や日本国内での販売元のURIを示します.但し,国内販売元が複数の 場合は代表的と思われるものを載せておきます.
ALDORはIBMで開発されたA#やAXIOMのコンパイラ言語axiomlとして知られ ていたもので,A Language Describing Objects and Relationshipsの 略称である.このALDORはCやC++風の構文を持った独自のオブジェクト指向 のコンパイル言語である.複数継承が可能な点でJavaとは異なる.
ALDORの利用はALDORのソースファイルをコンパイルし,実行可能ファイル を生成する方法に加え,オプションの-gloopを付けてaldorを立ち上げる 事で,会話的操作も一応可能である.但し,ALDORはMaple等の環境とは 違い,動作確認の為の会話的操作と考えた方が良いだろう.特にGUI環境 が附属する訳でも無いので,使い勝手は良いとは言えない.
ALDORのソースファイルには修飾子として".as"が必要である.実行可能 なオブジェクトは,通常の利用方法では修飾子asを外したものとして 生成される.猶,コンパイルでは一旦ソースファイルをCのファイルに 変換し,それをコンパイルする方式となっている様である.
現在,ALDORはAxiom無しで配布されているが,ALDORで使えるライブラリ には,標準で附属するlibaldorと代数学ライブラリ(libalgebra)と微分 方程式ライブラリSum^it(libsumit)と並列処理用のライブラリ(Piit)が 公開されている.猶,Sum^itはalgebraを継承するライブラリであり, algebra自体はlibadorを継承するライブラリである.ここでsum^it自体 はALDOR以外にmaple,reduce等で利用可能であり,線型常微分方程式を Mapleの組込函数以上に効率良く解くものである.D-Moduleを扱っている 様だが,Kanとは異なった手法を取っているらしい.これらのライブラリ のインストールを行う場合,環境変数LIBPATHとINCPATHの設定が重要で ある.
言語的に非常に興味深いものであり,AXIOMを"化物"と評価した書籍も あるが,この言語の事を指しているものと思われる.
Linux(X86),Solaris(Sparc),OSF1(Alpha)
猶,Linux(Alpha),MS-Windows(98,Me,NT,2000,XP)版も出る予定.
非商用.バイナリとソースファイルで配布されている(libaldorのみが ソースファイルを含む).BSDライセンスに似た独自のライセンスである. 改変を加えた場合,Aldor.orgでも改変個所が無制限にAldor.orgで使える 様にしなければならない等の条件や再配布に関する条件がある.利用に 関しては非商用であれば課金無しである.
IBMで開発されたオブジェクト指向型の数式処理システム.その後はNAGが 販売とサポートを行っていたが,サポートは2001年の12月で終了し,現在, BSDライセンスの下で配布が認められている. AXIOMのコンパイラが独立し,ALDORとしてAldor.org で管理されている.ALDORに関してはALDORの項目を参照されたい.
サポートが終了したAXIOMは 拡張BSDライセンスのものとして, 主にGCL環境上で開発が進められている.
現在はLINUX環境とMac OSX PPCのみ.
拡張BSDライセンス.
数式処理の中では古株の一つで,軽量でありながら高機能の汎用の 数式処理システム.DeriveはLISPベースのmuMathから発展したもので, 低価格の割に処理能力が高く,ある評価では常微分方程式の理論解の計算で Maple,Mathematicaに引けをとらないと云う結果が得られていた程である.
このDeriveの簡易版は TIのグラフ計算機のエンジンとしても用いられており, 教育関係では広く用いられている数式処理の一つである.
Windows.(Windows 98とMeは日本語に関する箇所で一部問題がある.Vistaへの 対応は不明)
Mac及びLinux等のDOSエミュレータを利用してDERIVEを使う話を雑誌 や書籍で良く見掛けた.一応,Linux(x86)上のdosemnu及びMac上の SoftWindowsで正常に使えるらしい.海外では非常にポピュラーなもの らしいが日本国内ではあまり聞かない.
国内では株式会社 ナオコが販売している
商用
群論専用のの数式処理.置換群等の非可換環を扱う事も可能で, その機能は非常に高く充実している.一部のプログラムでは X上でグラフの表示も可能の様だが,グラフィカルなフロントエンドや 計算結果のプリティプリント機能も持たない.その他の機能として, オンラインマニュアルがあるが,Octaveの様にtexinfoを用いたもの では無い.
GAPに独自の処理言語を持っている.基本的にC言語風であるが,寧ろ, Mapleに近い.例えば,代入で":="を用い,if文の終が"fi",for文 の末尾が"od"と言った点で類似がある.又,gap組み込み関数は ややMathematica風に先頭が大文字で開始し,意味が明示的な 名前となっている.更に,GAPでは処理の履歴を残す事も可能であり, この機能を利用して,プログラムの開発も行える.
澤田秀樹著"暗号と代数プログラミング(海文堂,ISBN 4-303-72370-3)" にgapの概要と実用例が記述されている.
Windows,MacOSX,unix等,サポートする環境は非常に多い. 猶,Windows環境でGAPのGUIを用いる為には,Cygwin環境が必要であり, この環境で128MBのメモリが最低でも必要である.
ライセンス形態はGPL ver2.猶,GAPのパッケージは付属するライブラリで 膨れ上がってる為に非常に大きい.
微分作用素環向けの計算機代数システム.kan/sm1は微分作用素向けに 特化したGroebner基底計算を行うツールである.その処理言語は PostScriptのサブセットにオブジェクト指向的な拡張を行ったもので, "引数 命令"と云った逆ポーランド式の表記を行う言語仕様となっている. 例えば,"2+3"や"3*4"は各々,"2 3 add"や"3 4 mul"と記述する.
更に,OpenXM環境で汎用の数式処理システムRisa/Asir等と組み合わ せて利用する事も可能である.
猶,大阿久俊則著,"D加群と計算数学"(すうがくの風景5,朝倉書店: ISBN4-254-11555-5-5)の付録に簡単な紹介が出ている.
主にUNIX環境,及び,WindowsにインストールされたCygnus上で動作.
非商用.GPLに従う.
教育現場での利用を目的としたGUIベースの汎用数式処理システム. 使い易さで定評がある.C等の外部プログラムを命令として取り込む ダイナミックリンク等の複雑な事は出来ない.
もとのTheoristは数式エディタExpressionistの開発元でもあるPrecience で開発・販売されていたものだが,Mapleの開発元のWaterloo MapleInc.に 買収され,MathView,MathPlus等と名前を代えた.而し,Precience部門が 最終的に売却されて現在に至る.
もとのTheoristのグラフィックス機能は非常に充実しており, その質も高いものであり,この点は引き継がれている様である.
MacOS,MacOSX,Windows(2000,XP,Vista),Linux(x86),Solaris(Sparc)
商用(製品版の30日間の試用が可能)
Macaulay2はDan GraysonとMike Stillmanが書いたもので, 可換代数・代数幾何専用の数式処理.より専門に特化したものであり, 可換環を扱う上で必要な概念が非常に表現し易い特徴を持つ.
Macaulay2には他の作者による様々なプログラムが用いられている. 例えば,singular-factoryが多項式の因子分解で用いられ, singular-libfacが部分代数多様体の計算やGNU MPが多倍数精度計算で 用いられている.
Singularと同様に,環を最初に定義し,定義した環の中で,多項式等 の対象の処理を行う.環の定義方法はSingularと同様である. 命令の使い方等で,Mathematicaを思い出させる個所が幾つかある.
ユーザーインターフェイスとして詳細なオンラインヘルプを持つが グラフ表示機能等の目立つ機能は無く,最近の汎用の数式処理と 比べると表向きは地味である.しかし,可換代数の分野では非常に実用的 なシステムである.例えば,言語自体が可換代数の概念を表現し易い 特徴を持ち,更に,Mathematica等の様な派手な絵の表示機能は無い ものの,resolutionの計算結果を図式風に行う等の実戦的な特徴がある.
実際の利用ではフロントエンドとしてemacsやTeXmacsを用いると良い. emacs用の.elファイルは自力でコンパイルすると生成される. 又,TeXmacsを利用すると出力結果がレンダリングされ,セッションごと LaTeXに変換する事も容易に行え,非常に便利が良い.
Macaulay2に関する書籍としては,Eisenbud et al.(Eds) Computations in Algebraic Geometry with Macaulay 2, ISBN 3-540-42230-7がSpringerから出ており,Macaulay2の入門から, 様々な応用に関して記述されており,非常に興味深い.
又,Hal Schenck Computational Algebraic Geometry, ISBN 0-521-53650-2はMacaulay2を用いた代数幾何,代数的位相幾何学 のテキストである.
更に,Macaulay2の開発者のDan Graysonへのインタビューが "数学のたのしみ No.11,多項式環の視点:グレブナー基底" (日本評論社,1999年)の"グレブナエンジンのプログラマ達"に掲載されている.
DOS,Windows,UNIX,MacOS等
GPL ver.2に対応.
最古の汎用数式処理システム.MACSYMA (Project MAC's SYmbolic MAnupilation System)は1969年から1972年の間に MIT Laboratory for Computer ScienceのMathlabグループによって 開発されたものである.
その処理能力の高さで定評があり,各種評価でもMapleと共に上位を占めていた. 現在は開発が停止しているが, Symbolics が引き継いでMacsymaの配布を行っている.
猶,同じ系統のMaximaはCommon Lisp用のパッケージとして存在しており, こちらはGPLの数式処理として開発が進められている.
MacsymaのフロントエンドはMapleやMathematicaとは雰囲気が異なった ノートブック(見掛け自体,ノートがバインドされた格好になっている!) 形式であり,2,3次元のグラフ処理とアニメーションが可能である. 猶,グラフィックスは高品質である.
Macsyma Inc.のMacsymaにはMacsyma Pro,Macsyma, Macsyma Liteの 三種類があった.ここでPro版はMacsymaに数値計算パッケージNumKitが 付属したものであった.価格は非常に安く,Pro版で$399 (international version.運賃と手数料を含まず!)とReduceとあまり 変わらない価格で,日本でも本体のみで5万円,NumKit付属で6万円とUS とほぼ同等の価格が設定されていた.ここで,Linux(x86)版のNumKit に関しては,Windowsをクライアントとした環境のみで利用可能との事で, NumKitの別売も行っていなかった.この様にMaple,Mathematicaが 10万円以上する事を考えると非常に廉価で,個人向けの最後の本格的な 商用ツールとも言える程であった.
Macsyma社の製品には他に偏微分方程式パッケージのPDEase2Dもあり, 有限要素法の様にメッシュを切らずに偏微分方程式が解け,数式処理 の長所である任意精度による高精度演算が可能である点を売り文句 としている.猶,このPDEase2DはWindows 9x,NT及びSolaris(Sparc) 版のみである.猶,Macsyma Inc.は現在,営業を停止しており,Symbolicが 販売を継続している.SymbolicではWindows版のMacsymaとPDEaseを販売 している.
書籍に関しては,その処理能力の高さと古さの割に書籍数が少ない. 1999年夏になって漸くMacsymaとMATLABを用いて偏微分方程式を解く話 を載せた日本語の書籍が講談社から出ていた.猶,MS-Windows向けに MacsymaとPDEase2Dの学生版がSpringer Verlagより出版されていた.
現在はWindowsのみ.
商用
販売元:
最古の汎用数式処理システムのMacsyma直系の数式処理システム. DOE-MacsymaをCommon Lisp処理系のgcl上に移植したものである. 現在,GPLに基づく数式処理として開発がMailing Listを軸として 進めらている(中心的人物であったUniversity of TexasのW.Schelter氏 は2001年の7月末にロシアで亡くなった為). 猶,Maximaは1982年の段階ので止ったMacsymaを基にしている為,それ以降の Macsymaの強化は含まれていない.その為,Maximaコミュニティで再度開発 している状態であり,商用のMacsymaに出来てMaximaに出来ない事もある.
Maximaは5.6.1迄はCommon Lisp処理系としてgclを標準的な環境としていたが, 5.9の開発版からgclでは無くclispやcmuclといった様々なCommon LISP環境に 標準で対応する様になっている.
Maximaの動作環境は,gcl,clisp及びcmucl等のCommon Lisp処理系が動作する UNIX系のOSやWindowsを中心にしているが,MacOS X上のclispやCygnus上のgcl等 による動作報告もある(但し,グラフ表示機能に一部制限が出る事もある). 基本的にCLISPが動作する環境でありさえすれば,インストール可能である. 但し,gcl以外のCommon Lisp処理系では一部のパッケージが使えない問題が ある.これはMacsymaの移植でgclを用いていたが,このgclが最新のCommon Lispの 仕様に準拠したものではない為に,他のCommon LISPで動作しない問題となっていた. この点は従来程目立つものではなくなっている.
Maximaのインストールには何らかのCommon Lisp環境が最低でも必要で ある.インストール作業も現在はconfigureとmakeを実行するだけで済む様に なっている.
MaximaはCommon Lisp処理系で記述されている.その為,処理速度はMaximaが 動作するCommon Lisp処理系に大きく依存する.gclやclisp上で動作する Maximaに関して言えば,Mapleと比べてあまり速い部類に入らない. 大体,gclやclisp上のMaximaでMathematicaよりもやや遅い程度である. 一方でcmuclの場合はMathematicaと比べてやや速い様である. gclとclispで比較すると,clisp上の処理が速い場合もあるが,gcl上のものの 方が全体的に速い.又,速度ではgclよりもcmuclの方が圧倒的に勝るとの事である.
現在のMaximaのフロントエンドは昔ながらのコマンドライン入力とTcl/TKを 用いたxMaximaの二種類が標準である.但し,Windows版にはwxMaximaが添付 されており,現在は標準的なフロントエンドとなっている.この他にもTeXmacsや GNU Emacsをフロントエンドとして利用可能である.猶,wxMaximaやTeXmacsを 用いると,出力式は美しくレンダリングされ,商用の数式処理システムと 比べても見劣りするものではなくなる.
グラフ表示は外部アプリケーションに描画データを引渡して,外部アプリケーション で表示させる形態である.ここで利用可能な外部アプリケーションには, openmath,gnuplot,geomviewとPostScriptがある.以前はopenmathを標準として いたが,現在はより高機能のgnuplotを標準のツールとしている.
Maximaの処理言語は独特の言語である.Maximaはcommon Lispで記述されているが, 処理言語自体はPascal風である.通常の処理はMaxima言語を用いて記述するが, 処理速度が必要される場合,より細かな処理が必要な場合は,裏で走っている LISPを用いるプログラムも可能である.又,Maxima側からLISPを扱う事も,その逆も 可能である.
言語仕様や,様々な大域変数を用いて函数の動作を制御する点等で, MapleよりもMathematicaの方が各段に似ている.猶,MapleやMathematica で大きく異なるので,函数の定義で":="を用い, 変数への代入は":"で行う点 である.又,行列の演算ではMathematicaやMapleとも異った記述を行う. 実際,行列同士の通常の積は"."で行い,"*"を実行した場合は要素毎の積となり, MapleやMATLABの".*"と同じ意味となる.又,aを行列とする場合,a^^2は a.aと同じ意味で,行列aの二乗となるが,a^2はa*aと同じ意味で,こちらは 各要素の二乗,即ち,MATLABで云うa.*aを意味し,通常の行列の二乗では 無いので注意する.この理由として,"."は関数同士の積を意味する. つまり,f(x),g(x)に対し,f.gはxにf(x)*g(x)を対応させる関数である事を 意味する.因に,逆行列の計算はa^^-1で計算可能であるが,数式処理の常として, いきなり大きな逆行列を計算させずに,小さな行列から除々に確認する事を勧める.
Macsymaの開発では人工知能の歴史と密接な関連がある.現在のMaximaでも 文脈と呼ばれる形で実装されている.この文脈を用いて論理式のModus Ponensis による推論が実行されており,単純に公式の当て嵌めを行う数式処理とは 異なった処理が可能である.そして,このMacsymaの影響を強く受けて出来た のがMathematicaである.
Maximaにはonline-Help機能がある.多くの言語では"Help 項目"や"?項目" と言った記述を取るが,Maximaではdescribe("項目")や? 項目で行う. すると,入力された語句を含む項目が番号と共に表示され,番号を 入力するとinfoファイルが表示される仕組になっている.猶,商品版 のMacsymaのHelpでは構文解析を行い,キーワードによるサーチが可能 との事であるが,このHelpでも一応,キーワードによるサーチが可能な 為,このHelp機能を拡張したものの様にも思える.但し,MaximaのHelp では,Octaveの様にreadlineやlessを用いている訳では無い為,使い勝手 は良くない.例えば,describe(program);を実行し, Definitions for Program Flowを選択した場合,xtermでは読み切る 事が難しい.又,実体がinfoファイルなので,INFOPATHにディレクトリ を追加してinfoやemacsで読む方が良いだろう.
この様に,Maximaでは組み込みの命令で処理可能な場合は,やや, Mapleに似た言語を用いるが,組み込みの命令で対処出来ない場合や 複雑な処理では,裏のLispで命令を記述して利用する.この様に, Reduceと良く似ており,使いこなす為にはLispの知識があった方が より良い.
Maximaの開発はMailing Listを拠点にmaximaの開発が進められている.
Maximaの参考文献は2006年の"はじめてのMaxima"の出版以降, 徐々に増えており,数式処理の中では有名なものの一つとなっている
標準的な環境はgclが移植された環境.MS-Windowsでも動作可能.
非商用.GPLに従う.
Maximaの開発拠点:
5.9.0以前
http://www.ma.utexas.edu/users/wfs/maxima.html
旧版のMaxima Manual(英語)
http://www.ma.utexas.edu/maxima
狸穴版Maxima Manual
http://www.bekkoame.ne.jp/~ponpoko/Math/maxima/maxima_toc.html
数式処理システムの中で最も有名なものの一つ.Mathematicaの商業的な成功 により,数式処理システム自体が脚光を浴びる事となったとも云える. 現在の数式処理システムは何らかの形でこのMathematicaを意識した機能を持つ.
数式処理能力は強力であるが他のシステムと比べ群を抜く程ではなく,寧ろ 劣っている事が多い.又,その処理はパターンマッチングを主体としている 事もあってやや遅い部類に属する.しかし,処理言語の柔軟性,グラフ表示機能 の豊富さとその能力の高さの方が群を抜いいる.又,4.0以降では数値計算 ライブラリの拡充,JAVAとのインターフェイス等と従来の数式処理システム では捉え切れない開発環境へと変貌しているが,その一方で,個人が購入する 事が出来る様なシステムでは最早無い.
Mathematicaの処理言語はどちらかと言うとLisp風の言語であり,その自由度は 非常に高く,各種プログラミングスタイルに適応可能である.その為,パズル的 な問題で特にこの言語の性格が有効に作用する.これはMathematicaの関連書籍 を見れば判る事だが,極めて技巧的で簡略化したプログラムを書く事が可能である. その意味ではawkやPerlに通じるものがある.
Mapleと比べるとList処理に圧倒的に優れているものの数値計算や全体的な 処理速度はパターンマッチングを主体とし,MathLinkを用いて 計算エンジン(カーネル)とフロントエンドとが通信を行う事や, フロントエンドで計算結果を独自のPS形式のデータとして出力する手間 もあって,あまり速いものではない.
Mathematica処理言語の特徴の一つに命令の先頭が必ず大文字から 始まり,名前が明示的なものとなっている.例えば,関数の積分を 行う命令はIntegrate,リストのコンター図を出力する命令は ListCounterPlot等と非常に明示的である.その為,他のシステムと 比べ命令の名前が長くなり勝ちであるが,実際の使用では明示的な 命令である為に名前を詮索する必要も余り無い上に,フロント エンドに命令の補完機能がある為,実際の使い勝手は非常に良い. 又,データの形式も非常に単純であり,基本的にリストとアトムのみ で成り立っている.更に,内部変数の扱いでは文脈(Context)と呼ぶ変数 領域を用いる事でインタプリタ言語に有り勝ちな変数の衝突を Contextの使い分けで避ける事が可能である.又,面白いのはデータの 階層構造を利用して命令自体をオブジェクトと見なして別の命令で 置き換えて評価する事が出来る点で,Lisp流の非常に柔軟な利用方法 が可能である.
但し,メモリの消費はパターンマッチングを主体にした仕様であり, フロントエンドにて独自のPostScript形式の内部データを表示する事も あってかなり激しい部類に入る.但し,現在の計算機環境でそれが 致命的な問題とは最早ならないだろう.
Mathematicaに附属のライブラリはMapleのものと比べるとあまり 充実している方ではなく,必要なものは強力な処理言語を用いて 自作する傾向が強い.しかし,Wolfram Inc.にはフリーのライブラリ のアーカイブ(MathSource)があり,その内容はCD-ROMでも販売 されている.それに加え,Mathematica用に各種の商用ライブラリや アプリケーションも多くある.
Mathematicaの利用で最も多く利用されるグラフィックス機能は数式 処理システムの中で最も質が高く,しかも高機能である. Mathematicaが有名になったのも,このグラフィックス機能とその画質 (及び宣伝)に由来する点が非常に大きいだろう.
フロントエンドと実際の計算処理を受け持つカーネルは分離しており, MathLinkと呼ばれる通信手段でその処理を行なう.このMathLinkを 用いる事でネットワーク上のマシンにインストールされたMathematica のカーネルのみを利用する事が可能である.更に,ユーザ独自の Mathematicaフロントエンドを構築する事や同一ネットワーク上の複数 のMathematicaカーネルを用いて並列処理が行なえると言った応用さえ 可能である.このMathLinkを利用する事で,Mathematicaが適用出来る 範囲は非常に広くなり,他の数式処理システムの追従を許さない程と 言えるのではないか.猶,このMathLinkの応用に関しては,例えば, 岩波書店から出版されている筑波大学の宮地先生の本等がある.
フロントエンドの出来は数式処理中で最も出来が良いものの一つと 言える.このフロントエンドでは独自のPostScriptが使用されており, 処理結果は全てPostscript形式で出力されている.但し,3.0迄は計算 結果はキャラクタ表示によるプリティプリント風のグラフィックスで 表示されていたが,3.0以降からはMaple等と同様に数学記号を用いた グラフィックスで表示されている.又,ノートブックは保存時に圧縮 を行なわず,テキスト形式のファイルとして出力されている.この為, 他機種や違うバージョンのノートブックのやり取りで問題が生ずる 事は無いが,その一方でメモリ消費の激しさに輪を掛けているとも 言えるだろう.猶,通常のファイル形式(*.ma)で保存する場合, ファイルの内容はフォントとグラフ等の出力結果の情報(独自のPS 形式データ)が含まれたテキストファイルとなっており,モジュール として保存する場合(*.m)はコメントとプログラム本体のみが含まれた テキスト形式のファイルに変換されて保存される.これらのファイル に含まれたプログラム本体とコメント文の修正は適当なエディタで 行なう事も可能である.
LIST処理,グラフィックス及びプログラム言語の処理能力は他の数式 処理システムと比べて非常に強力であり,幾何学,代数学の諸問題, 及びプログラムのアルゴリズムの検証に適している.又,数値計算 でも強力なMathematica言語が利用可能な為に非常に便利である. 但し,処理速度と数式処理一般の性質から膨大な数値データの処理は 避けた方が良い.特に行列データを扱う場合は,Mathematica等の 数式処理システムよりもMATLABやScilabの様な行列処理を主とした システムの方がパフォーマンスは上である.その為,Mathematica にはMATLABとのインターフェイスを持っている.更に,4.1からは Javaとのインターフェイスも持つ事になり,数式処理システムの 中では最も外部システムとの連継に優れたものと言えるだろう. その為,数式処理の枠を越えた変った使い方も可能で,例えば, Mathematica言語の柔軟性と組合せて,データベースシステムの開発に 適用したケースもある.この様にMathematicaは単に数式処理システム としての利用に留まらず,様々なインターフェイスを適用して, あるシステムの概念設計段階で,その開発環境としても利用可能である.
この様に非常に優れたツールであるが,最早,個人で購入するには 不可能な高価なシステムとなっている.その為,本格的な数式処理システムを 気楽に利用したい場合,MuPAD程度しか商用のものでは選択肢がない. プログラムの調査にはMaximaも良く,目的に応じてRisa/Asir, Macaulay2,Gap等を使う方が良いだろう.猶,金額が高い分, 大規模な分散処理や各種アプリケーションとの連継を望む場合や 通常のプログラムの開発業務にも使える非常に優れた強力なシステム ある.
主要な計算機環境.猶,他の商用のものと比べ非常にサポートする 範囲が広い.
4.1
商用(Wolfram research Inc.)
数式処理システムでMathematicaと並び有名なものの一つ.Mathematicaと比べ 一般の知名度が低かったが,その数式処理の能力は極めて高く,全般的に Mathematicaよりも処理が高速でメモリの消費が少ない等の長所を持つ.
処理言語はリストと集合データが扱えるPascal風のインタプリタ言語 ある.猶,MuPAD程厳密ではなく,Lisp風のMathematica言語程の 柔軟性を持つ言語でもない.特に,Mathematicaの様に全てがリスト とアトムで構成される様な明解さが無く,一々データ構造の変換が 必要となる.しかも,変数には局所と大域変数の区別はあるものの 比較的大きなプログラムを構成した場合,データのやり取りで何か と間違え易い傾向がある.
Mapleには非常に充実したライブラリが附属する.このライブラリを 利用して非常に広範囲な処理が行える為,Mathematica言語程の自由 が無くても通常の使用で不自由を感じる事はまず無い.逆に, Mathematicaよりも便利な関数が揃っている場合もあり,使い勝手は 悪くない.又,Mathematicaとの大きな違いは,そのライブラリの 内容を確認する事が可能な点である.その為,自分が利用する プログラムの動作を把握する事が可能となっているだけでは無く, プログラムに虫が存在した場合,それを差し替える事でも対処可能 である.この点では,Mapleの方が開放的であり,Mathematicaは閉鎖的 な製品と言える.但し,プログラム環境として見た場合は,Mathematica の方が様々なインターフェイスを持っている.
MapleはLISTが扱える様にPascal言語を拡張した雰囲気があり,LIST 処理に必要最低限な命令を持つ程度である.実際,LISPのcar,cdr,cons, append等のリスト処理の非常に基本的な命令が無く,LISTに関数を 作用させるmap等の関数がある程度である.この様にLIST処理は Mathematicaと比べてやや劣るが,Mathematicaに無い命令が色々あり, 実用上不便を感じる程ではない.寧ろ,関数型のプログラムを作成 する場合にはMapleの方が便利でさえある.しかし,言語の特性上, LIST処理を伴う群論関係の処理よりは解析的な問題に適している様 に思える.猶,常微分方程式の理論解の計算ではMACSYMAと上位を 競う程である.
数値計算では計算機固有の固定精度で計算させる事も可能 (evalh命令)であり,この方法で通常の任意精度による計算以上の 数値計算の高速化が可能である.この様に数式処理のネックに なりがちな点に関しては色々と高速化が図られている.更に, 6.0からNAGの数値計算ライブラリを利用する事も可能となっており, 数式処理一般の弱点を補強したシステムと言える.
グラフィックスはそれなりに高機能である.以前のものは,Mathematicaと 比較して明らかに劣っていた.実際,曲面のレンダリングにむらが生じる 等と品質に関して今一つの感があった.但し,現在はその様な事を感じる 事は無い.
Mapleのフロントエンドは,以前ははMathematicaの後を追いかけている状態で, 数式処理の能力の高さに対し,フロントエンドの出来の悪さが寧ろ目立つ システムであった.現在は,数式処理機能だけではなく,フロントエンドの 改善も進んでおり,Mathematicaとの格差を感じる事はない.
Mathematicaについても言える事であるが,Mapleは従来の様な数式処理 で括る事の出来ないシステムとなっている.これは,数式処理システムが MATLABと比較して,計算機に対する要求が高く,その一方で,利用者の 運用する能力の高さも必要された事もあって,大学や研究所での活用が 主であったが,計算機の能力向上や産業界の計算機利用技術の向上に よって,数式処理が製品開発の中核となりつつある点も見逃せない点である. 2007年にMapleSoftはトヨタとパートナーシップを結んでおり,それに基いた 開発も行われている.現在,MapleSoftが開発中のMapleSimはMATLABのSIMLINKを Maple上で実現したものである.開発途上の為,機能的な制約も多いが,今後の 数式処理システムのあり方を示唆するものとなっている.
主要な計算機環境.
商用( カナダ MapleSoft Inc.)
開発元
MapleSoft Inc.国内代理店
サイバネットシステムMatheSoftが開発していたが,2006年に3D CADのPro/Engineerで有名なPTC Inc. によって買収され,現在はPTC Inc.が開発している.以前はMapleの 数式処理エンジンにワープロ風のフロントエンドをかぶせた代物であった.
以前のMathCADでは,機能の拡張を電子手帳と呼ぶ別売のライブラリを 追加する事で行っていた.又,外部のプログラムとのダイナミック リンクも可能でもある.但し,MathematicaやMapleと比較すると, 軽い数式処理と任意精度の数値演算が必要とされる現場の技術者向け の側面が強い.数式処理システムと言うよりも数式の処理が行なえる 便利で実用的なツールとして導入されているケースが実際は多い.
教育機関ではLiveMath,Deriveの方が価格及び機能の面で適しており, 専門分野によってはRISA/ASIRやMuPADの利用を考慮した方が良いだろう. 金銭的な余裕があれば,MapleやMathematicaが良い.
但し,数式が入った報告書を書く必要のある技術者等にとっては, 日常の計算内容も大体似たものとなり,更にその処理結果がそのまま 報告書になる事から,上記の汎用性が高いシステムよりも,MathCAD の方が実用上,非常に便利で優れたツールとなるだろう.
Windows(2000,Xp,Vista)
開発元: PTC Inc. http://www.ptc.com/
ドイツのParderborn大学で開発された本格的な汎用数式処理システム. 汎用のものの中で最も安価な商用の数式処理システムであった.
全体的な雰囲気はMapleに良く似ている.又,命令に関してもMapleの 命令と共通のものが多い.代数計算では後述のPARI/GPライブラリの 一部が用いられている.全体的にメモリの消費はMapleよりもやや激しい がMathematica程酷くは無い.但し,処理速度に関しては,そんなに速い 部類ではなく,Mathematicaよりも多少速いが,処理によっては寧ろ遅い 事もある.ノートブックスタイルのフロントエンドを有するが, 出力されるのはキャラクタによる計算結果のみであり,グラフは 別ウインドウに表示される.この様子はMaple V Release 3.0のスタイル と良く似ている.猶,UNIX版では,GUI環境で従来XViewを用いていたが, MuPAD 2.0からGTK+になっている.
処理言語はPascal風の処理言語であり,命令等はMapleに良く似ている. 但し,Mapleよりも厳格なPascal風の言語形態であり,日常的な使用に 些か疲れる言語である.例えば行列の計算を行う場合,行列のDomainを 宣言し,このDomain内部で計算処理を行う.その反面,変数の定義が より緩やかなMapleではプロシージャ間での変数のやりとりで何かと 混乱し易く,MuPADでは厳密である分に変な誤用が生じ難い利点があり, 端的に優劣は付け難い.寧ろ,数学的な概念(体,可換環等)を扱う場合 には,この様な使い方が適しているだろう.
ライブラリのカバーする範囲はかなり広いが,Mapleと比べると基本的 な物しかサポートしていない.とは言え,膨大なライブラリを持つ Mapleと比べての話で,他のシステムと比べて明らかに劣る事は無く, 全体的にバランス良く纏まっている方である.
グラフィックスは非常に充実している.質も非常に高く,Mathematica 程ではないもののMapleに劣らない.寧ろ,曲面の半透明表示が可能 である等とMapleに勝る面を持つ.更に,二次元及び三次元の アニメーション機能(gifアニメーションによる)も有する.
ヘルプ機能を有し,GUI環境ではカラーの絵付きのオンラインマニュアル も持つ.このオンラインマニュアルはHyTexの形式のものであり, HyperLink機能も持つものである.
MuPADの販売を行っていたSciFace社はMATLABの開発元で知られるMathWorks Inc. によって買収され,MuPAD Proの販売も2008年9月28日で終了した. 今後,MuPADはMATLABのSymbolic Toolboxとして用いられる事となっており, 単体としての販売は打ち切られる.この点は,MapleSoftのMapleSimとの 関連で非常に興味深い事である.
商用
SIMATHの後継であり,Pythonで記述された数論向けの数式処理. 首都大学東京で開発されている.マスコットはニジマス?
非商用.BSD License.
数論向けの数式処理システム.PARIはC等で数式処理を可能とする為の非常に 充実したライブラリ群である.PARIでは解析的な数論をその対象とする事も あって,特殊な関数を豊富に含んでいる.その点もあって, MuPADやRISA/ASIRでもライブラリが利用されている. 猶,PARIにはそのフロントエンドとしてgpが付属しており,簡単な処理を 会話的に行える.
gpの処理言語はC言語風である.又,On-Line-Helpも持っている.このHelpでは "?"を入力すると項目の一覧が番号で表示され,後は読みたい項目番号の頭に"?" を付けて入力すれば良い.Helpは当然Textのみである.又,各命令に関しても先頭 に"?"を付けて入力すると命令の概要が表示される.このGPは高速処理を目的とした 簡易処理言語で,通常のフロントエンドはNote book形式のものでは無い. 一応,readlibを用いている為,入力編集等はemacs風に行えるが,全体的に 使い勝手が良い物ではない.又,簡易的なグラフ表示も可能である. このグラフ表示ではキャラクタによるグラフ表示とグラフィックスによるものの 二種類がある.このグラフ表示機能は他の商用のものと比較すると非常に地味 なもので,おまけ程度のものに見えるが,実際は非常に実用的なものである. 例えば,sin(x^7)の様な曲線でもフラグの設定によって特徴を上手く捉えた 描写も可能である.
現在,2.3系が出ている.猶,2.0系から1.x版と比べて大幅な機能強化 が図られており,一部命令が従来の1.3xと異なっている.例えば, Matrixの行列式を計算する命令detが命令matrixdetに改名されていたり する.但し,互換性フラグを立てて従来の1.xと互換性を保つ事も可能で ある.又,1.x版では簡易的なフロントエンドであったgpも,大幅な機能 強化が計られている.
当初は非常に簡易的であったgpはPARI-2.0.xで強化されており, 簡易的なツールではなくなり始めているのが現状である.但し,GUI 環境は持っていない等,最近の数式処理としてはUIの部分でやや脆弱 である.その為,gpで利用可能な外部のフロントエンドが幾つか存在 している.先ず,非常に充実したものとしてQTで記述されたgp専用の pariGUIdeがある.この雰囲気はMaximaのxmaximaに近いもので使い勝手 がかなり良い.又,GNU TeXmacsもgpのフロントエンドとして利用する 事が可能である.この場合,計算結果はpariGUIdeと違い,レンダリング されたものが出力される.その他に,PARIをPythonで利用した プログラム環境のPythonGPもある.又,emacs上で利用する 為のelも PARIに付属している.但し,1.3xに付属のpari.elは開発者の環境設定と なっている為,自分の環境に合わせて変更する必要があるので注意が 必要である.
このPARIライブラリはRISA/ASIRやMuPADでも利用されている. ここで,MuPADでは一部のみの利用に留まっているが,RISA/ASIRでは PARIの関数を直接利用する事も可能である.猶,RISA/Asir2000では 従来のPARI 1.39からPARI 2.0.17に変更されている.更に,OpenXMには PARI-2.2も含まれており,このOpenXMの環境で対応アプリケーション との連動も期待出来る.
DOS及びUNIX環境でコンパイル可能.
非商用.ソースコード又はバイナリで配布されている. 猶,OpenXMにもPARIが含まれている.猶,PARI-2.2よりGPLに準拠する.
pariGUIde
http://www.skalatan.de/pariguide/古参の数式処理システムの一つ.処理言語としてPascal風のLISP言語を持つ. 因にMathematicaはREDUCEにも似ている.数式処理能力はMaple,Macsymaと 比べてやや劣る様である.しかし,非常に古くからあるシステムの為,膨大な 過去の遺産を持っており,その意味では無視出来るものではない.
REDUCEのコンパイルでは, 二つのLISP(csl, psl)の何れかを選択する. フロントエンドは本来商用のものであった事もあって数式は綺麗に レンダリングされたものが表示される.猶,文字化けが生じる場合, -wオプションを付けてREDUCEを仮想端末上で動かすと良い.この場合は, Maximaに似たキャラクターを用いた数式表示となる. グラフ表示では GNUPlotを利用する.
主要なEWS,PC-UNIX,Windows95,NT
2008年12月に拡張BSDライセンスの下でソースコードが公開され, Open Source Softwareに移行した.
( http://www.zib.de/Symbolik/reduce/は更新が止っており, OpenSource版のREDUCEの進展具合を見て,いずれ閉鎖するとのこと)
富士通で開発された数式処理システム.リサ・アジールと読む. 非商用目的(教育,個人的利用等)の使用に関しては課金が無い. 現在,fujitsu stable版とhead版が存在している.更に,RISA/ASIRは OpenXMパッケージの一部としても管理されている.ここでOpenXMは 一種の統合環境であり,OpenXMに対応した様々なツール(Risa/Asir, Kan等々)を用いる事が可能となっている.但し,ここではRISA/ASIR 単体について主に述べる.
MuPADと同様に内部でPARI(< 2.1)を利用しており,PARIの一部の 関数をpari命令を介して使う事も可能である.猶,PARI/GPは2.2より GPLライセンスに移行した為,GPL汚染を防ぐ為にバイナリでは2.1系を 用いる(configureでwith_pari=newとすれば2.2系を使う). Risa/Asirは多項式(特にグレブナ基底)の処理は非常に強力で,他の 数式処理システムと比較しても非常に高速な処理が可能である. 全体的に整数係数多項式を扱う処理に特に強い.但し,それ以外は Maximaの様に汎用性の高いものと比べると,現状では弱い.
このRisa/AsirはC風の独特な処理言語を持つ.関数の定義がdefで始まる 点を除くけば制御文等は殆どCと同じ構文であり,データ構造には配列 の他に構造体も扱える.例えば,struct pet {cat,dog}で構造体の定義 を行い,A=newstruct(pet)でAが構造体petである事の宣言をし,実際の 代入はA->cat="タマ"の様に行える.又,配列の添字は0から開始し, Cのプログラムの#define,#include,#ifと云ったpreprocessorも サポートする.この様に非常にC風であるが,一方で,変数の記述に 独自の取り決めがある.先ず,変数はプログラム変数と不定元があり, プログラム変数は大文字,不定元は小文字で始める.ここで,プログラム 変数は具体的な型の値が設定されるものであり,不定元は方程式を記述 する際に用いるxの様に値が未知なものである.従って,プログラムで 何らの値が設定される変数は当然,プログラム変数となる為に大文字で 開始しなければならず,一方で,多項式等で不定元として扱われる変数 は小文字で開始しなければならない.設定される値が不定元であっても, 値が設定される変数はプログラム変数となる.猶,プログラム変数は 宣言しない限り局所変数として扱われ,0が初期値として代入されている. 更に,プログラム内部で予め定義した局所変数は大域変数として認識 されないが,extern命令で大域変数として予め定義された変数は後に 構成されたプログラム内部でも大域変数として認識される.
数式処理に関連した命令は全体的にMathematicaの様な明示的なもので は無い.例えばfctrで多項式の因子分解を行うが,この様に省略した 名前であり,他のプログラムとも名前が異なる事もあって,幾らか慣れ が必要である.猶,リストの処理に関してはMapleやMathematicaとは 異なり,Lispと同様のcar,cdr,cons等の命令を持っている.但し,添字 はCと同様に0から開始するので,この点に関してLispと異なるので注意 が必要である.
Risa/Asir本体はMuPADの様なノート形式のフロントエンドを持たない. 更に,asir単体ではpariのgpが持つ様な編集機能さえも持たない. この弱点はOpenXMに含まれているfepを用いる事で,vi風やemacs風の 行編集が行える様になる.
ライブラリもMuPAD等と比べればまだ揃っていない.全体的に非常に シンプルで素っ気無い.例えば,連立方程式の解法に関しても直接 解く命令を持たない.尤も,Groebner基底を利用すれば比較的容易に 解く事が出来る.とは言え,必要なものを色々構築する必要もあるだ ろう.又,前述の様にノート形式のフロントエンドは特に持っていな いが,x86版のFreeBSDやLinux環境では別途fepを組み合せて用いる事で, emacsやvi風のキー操作で入力行の編集を行う事が可能である.
次に,関数のグラフ表示は,他の数式処理システムとは違った方式で 処理を行う.これはMathematicaと多少似ていなくもないが,OpenXMを 通信プロトコルとして用いて一般の関数の二次元グラフ表示や陰関数を 行なう.このOpenXMを用いる事で,GNUPLOTを用いる事も可能である. asir単体に限って言えば,三次元グラフ表示機能やアニメーション 表示機能を持たず,最近のシステムと比べて機能は一見地味ですらある. しかし,陰関数の表示では利用者が特に工夫をする事無しに特異点周辺を 綺麗に表示する事が可能であり,非常に優れている.例えば,Mapleで 自己交差を持つ代数曲線を表示すると自己交差でグラフが途切れてしまう が,RISA/ASIRではこの個所も含めて適切に表示される.この様に生成した 画像はPostScriptで保存する事も可能である.但し,この場合の画像 は白黒である.猶,代数曲面を描く為には外部のプログラム,例えば, povrayを用いる事も可能である.この場合,Risa//Asirはpovray用の データを生成し,実際のレンダリングをasirのshell命令で立ち上げた povrayで行う程度で,他の数式処理システムで見られる様な詳細な設定 が行える訳でも無い.更に表示可能な関数はz=f(x,y)の形式のもので ある.その為,安易に代数曲線/曲面をカラフルに表示する事が目的で あれば,可視化ツールのsurfが非常に有効である事を付け加えておく. 例えば,asirで式を計算し,その結果をsurfに渡した後はsurfで会話的 操作で代数曲面を描いて,各種パラメータを調整したり,曲面の断面を 表示させる等の工夫を行うのが良いだろう.
現在,asirはOpenXMを通信プロトコルとして利用する仕様になっており, これを用いて,gnuplot,KanやMathematica等の他のプログラムとの分散 処理が行える様になっている.このOpenXM環境では,例えば,gnuplotに 計算結果を2次元,3次元グラフやアニメーションで行う事や, MathematicaのカーネルとMathLINKを経由して通信を行う事,kanから asirを用いて多項式の処理を行わせる等とOpenXM環境で他のツール と組合せて用いる事が可能な為,OpenXMに対応したより専門的な アプリケーションの組合せが行え,それらを組合せて高度な処理が行える 様になっており,この点が他の数式処理と比べた場合に独特な強みとな ている.その為,Risa/Asirの機能を取り出して判断していれば,その 背後にあるOpenXMの利点が分らない為に,過小評価をしかねないが, 総合的に考えれば,非常に強力な環境の一部と言える.
猶,後述のガイドブックに付属する旧版のRISA/ASIRでは,UNIX版のみ がグラフ表示にrshを用いる為,rsh用の環境設定とtcpinitによる通信の 初期化が予め必要である.又,旧版ではrshを用いた分散処理が可能と なっていたが,現行のASIR2000では分散処理にOpenOXと呼ぶ通信 プロコトルを用いる方式に変更されており,従来のrshは不要となって いる.その為,通信の初期化はox_launch命令を用いて行う.
Risa/Asirに関する文献として,1998年10月にSEG出版より出版された "日本で生まれた 数式処理ソフト リサ アジール ガイドブック" (ISBN4-87243-076-X C3055)が挙げられる.この書籍に付属のCD-ROM には富士通のAsir関係のFTPサイトの全てのファイルが収録されており, Windows以外の各種プラットホームに対応したバイナリも含まれている. 但し,この本に収録されたものは旧版である.
Risa/Asirを用いた計算機代数の本格的な本として次のものがある:
主要EWS,PC-UNIX,Windows等
非商用目的の利用(教育,研究,内部的な業務)では課金されない. バイナリーコードとソースファイルによる配布.RISA/ASIRの ソースファイルはASIR単体やOpenXMパッケージの一部として入手可能 である.
整数論向けの数式処理システム.PARI/GPと比べ多変数の多項式環が扱える等の 長所がある.猶,2007年に64bit対応した程度で開発は停止し,NZMATHが後継である.
UNIX環境.
非商用.純粋な研究に限定される.
SIMATHのWebPage:
http://tnt.math.metro-u.ac.jp/simath/SINGULARは可換代数,代数幾何と特異点理論の特殊用途向けで有名な 数式処理システムである.
SINGULARの主な計算対象は代数多様体上のイデアルと加群である.扱える環は 体(例えば,有限体,有理数,実数,代数的拡大,超越的拡大体)上の多項式環や 局所環,及びイデアルの商環である.実際の計算処理では,対象を定義する 前に環(basering)を定義しておく必要がある.
SINGULARはGroebner基底の計算向けの様々なアルゴリズムで最速で最も一般的 なものが実装されている.その実装にBuchergerのアルゴリズム(順序が well-orderingであれば)と特殊な場合としてMoraのアルゴリズム(順序が tagnent cone順序の場合)を含んでいる.他に,多項式の因子分解,終結式, 特性集合とgcdの計算,SYZYGYとFree-resolutionの計算等が可能である. SINGULARの処理言語はC風で,この言語で記述されたライブラリを使って システムの拡張も行え,更に,ネットワークを介した分散処理,他のプログラムとの 通信を行う事も可能である.例えば,代数曲面や曲線の表示をsurfで行う 事も可能で,surfは0.9以上であれば使える様である.risa/asirのpovray と比べると,システムにきちんと組込まれていると言えるだろう.
SINGULARの開発は1984年にAtari computer上のModula-2でのMoraの Tangent Coneアルゴリズムの実装から開始しており,それから, 多項式の因子分解,gcdの計算,リンク機能等の拡張を行って1997年に SINGULRA version 1.0,1998年にはversion 1.2がリリースされている.
動作環境は非常に幅広く,代表的な計算機環境であればほぼ動作可能である.
猶,SINGULARで用いられているライブラリの幾つかはMacaulay2でも利用 されている.双方を用いると設計思想等の違いが垣間見られて面白い.
2002年にSINGULARを用いた可換代数のテキスト本も出ている. この本にはSIMGULARの各プラットホーム向けのバイナリを含んでいる.
A Singular Introduction to Commutative Algebra. Gert-Martin Greuel, Gerhard Pfister ISBN 3-540-42897-6. Springer Verlag.
主なUNIX環境,及びMS-Windows,MacOS(X).
GPLに従う.
SINGULARHのWebPage:
http://www.singular.uni-kl.de/現在の数値計算システムの標準となっている商用のシステム.価格が比較的 高い点もあり,非商用のクローンが数多く開発される要因となっている.
処理言語は行列演算に適する様に拡張されているが,基本的にC言語風 の言語仕様を持つ.因に他のMATLABモドキの処理言語も基本的にC風であり, 行列の定義及び演算等の基本的な処理に関して違いは殆んど無い. 例えば,行列の定義はA=[1,2,3;4,5,6]で行ない,行列の和,積,羃乗はそれぞれ A+B,A*B,A^nである.又,A^(-1)*BとA*B^(-1)の計算はA\B,A/Bと記述する. 又,for文に関しても,for i=a:b 処理 endでi=aからb迄の処理を行う. Cで言えば,for(i=a;i<=b;i++){処理}である.ここで,a:bの代りにリスト [a:b]で置き換える事も可能であり,一般的にfor i=list の様にリストで 置き換える事が出来,非常に柔軟な利用が可能である.この言語仕様の結果,パターン マッチングによる処理が行い易くなっている.又,一般的な行列ではLAPACK等 の線形代数ライブラリが使われている為,下手なFORTRANやCによる プログラミングよりも効率良い事さえある.
MATLABの様に行列を扱う事を第一の目的とした言語では,組込のor文等の loop命令を利用するよりも,直接行列処理を行う方が速いのが一般的である. これは内部処理で,行列データから配列を一旦取り出して処理した結果を 配列に戻す一連の作業を行う内部処理の手間が増える為ある.その為, MATLAB系の処理言語で記述したプログラムを遅くしたければ,不要なループ を増せば良い.その為,FORTRANやCによるプログラムのそのままの移植は 往々にして,MATLAB系の処理言語に関しては非効率な処理と莫大な処理時間の 浪費を招く事があるので注意が必要になる.とは言え,大きな行列の逆行列を 計算する場合,安易にa^(-1)とすれば莫大な計算時間を浪費する場合もあり,直接 計算を避けて,最初にLU分解を行う事や疎行列表示で処理を行う等の工夫も 勿論必要である.又,他の言語と同様に処理速度は和,積,割算,累乗の順に並ぶ為, 計算処理もこの特性を考慮して行うと良い.猶,累乗は通常の積の4倍程度の 処理時間を要する為,4乗以上であれば累乗を利用すると良い.
ここで,MATLABの処理言語で記述されたプログラムをM-Fileと呼ぶ. M-Fileは拡張子に.mを持つ関数単位のファイルである.MATLABは関数が メモリ上に無い場合,PATHに設定したディレクトリ上の同名のM-Fileを 自動的に読み込む仕様となっている.
MATLABはその名前が示す様に行列(MATrix)処理を目的としている為, データ構造は行列を基本としている.基本的に文字列や一変数多項式 はそのままの形で処理が出来ず,一旦,ベクトルとして表現して処理 を行う.更に,行列の各元には数値か文字のみが許容され,これらの 混在は許容されない.この点はOctaveやScilab等も同様である. 猶,MATLABでファイルの読み込みを行う際にはC言語風のfgets,sscanf やfscanf等の命令が利用可能であるが,ファイルの行に文字と数値が 混在している場合,sscanfとfscanfではC言語の様に'%s %d %lf'と フォーマットを指定して読ませる事が出来ない.この場合には全て stringとして読み込む方法しか無い様である.この仕様は多分,出力 データがベクトルであり,ベクトルでは数値と文字の混合が許容され ない為だろう.但し,Octaveのsscanf及びfscanf命令にはC言語と同様 の読み込みが行える"C"オプションを持っており,ファイル操作に関し てはMATLABよりも拡張されていて便利である.但し,MATLABではC風の構造体を 持たせる事が可能で,この構造体を利用すると,構造体に数値行列と文字列を 持たせても問題無い.しかし,構造体の配列まではサポートしていない.
MATLABではシステムの機能拡張をツールボックスと呼ばれるライブラリで行う. この方式も他の数値計算システムの多くが採用している.このライブラリには M-Fileだけであるとは限らず,例えば,数式処理を行う為のSymbolic toolboxは Mapleがその正体である.但し,開発元のMathWorksのSciFaceの買収によって, MapleではなくMuPADがSymbolic Toolboxの本体となる予定である.
主要な計算機環境.
商用.猶,最古のMATLAB(Classical MATLAB)は本体のみがフリーソフト としてUNIX版のソースコードが配布されている.
Boeing社が開発したMATLAB+SIMLINKの環境に似たシステム.飛行機 設計の為にBoeingが開発したものである.その為,油圧,エンジン, 制御系等の非常に充実したライブラリ群と機構解析ソルバDADS,ADAMS, 制御系解析の為のMATLAB,MATRIXx等のツールとのインターフェイスを 有するMATLABと比べ非常に高価なシステムである.例えば,コアの 部分では80万円程度であるが,油圧等の各ライブラリが夫々100万円 以上と非常に高価である.その為,個人利用では殆ど利点は無い だろう.又,元々が各種ツールの接着剤的な存在として開発された 経緯もあって,EASY5とパッケージのみの単体で利用する場合でも, MATLABの方が寧ろ安く,その長所を生しているとは言えない. 現在,国内では自動車産業方面を主眼としている様である. 又,ソースコード込みの販売もある.
主要なEWS及びMS-Windows NT.MS-Windows NT版は別途X-server (Exceed)が必要.MS-Windows 9xでは一部処理機能に問題が 生じるとの事である.そして,Easy5のカスタマイズにはFortran コンパイラが必要である.
GNUのMATLABクローンの数値計算システム.グラフ表示はgnuplotやplplot が利用可能である.但し,一般的にはgnuplotを用いるものが殆どである.外部の C又はFORTRANプログラム等とのダイナミックリンクが可能である.MATLABとの 互換性は極めて高く,MATLABの一部ツールボックスの利用が可能との事である. とは言え,MATLABと完全に互換では無い.例えば,Octaveではaを無宣言でいきなり a(1)=1;a(2)=1;と値を代入するとaは列ベクトルとなるが,MATLABでは行ベクトルに なる.この点をアヤフヤにしているとプログラム中の潜在的なバグに なるので注意が必要である.もう一つは構造体データに関して処理 命令の名前が異なる.これはOctaveでis_StructとなるものがMATLABで isStructと記述する程度の違いである.又,些細な事にOctaveの表示 ではlessを用いる為に,スクロール操作やsearchが可能であるのに対し, MATLABでは一気に表示する為にキー操作でスクロールする事が出来ない. 更に,ファイルの出力に関してもOctaveはMATLAB以上に言語仕様が拡張 されている.しかし,その一方でMATLABではSparse Matrixが扱えるが 現行の2.0.xのOctaveでは標準機能として持っておらず,付属の ライブラリ(ツールボックス)もOctaveの方がやや小さい.とは言え, 一部の市販のツールボックスもOctaveで利用可能なものがあるとの報告 もある.しかし,些細な違いも多くある為,この点に関してあまり期待 をしない方が良い.更に,グラフ表示もgnuplotの機能に依存する為, MATLABと比べて機能及び見栄えの点でも劣る.しかし,使い勝手全般 で比較すれば,Octaveの方が寧ろ良い.この様にOctaveは単なるMatlab クローンと言うだけでは無く,非常に便利で強力なツールである.
OctaveのプログラムもMATLABの様に拡張子が.mのファイルを利用する. カレントディレクトリ上にM-Fileがあるか,PATHが通っている場合に は自動的にM-Fileの読み込みを実行する.この点はMATLABと同様である. その為,基本的な行列の処理を行なっている場合はMATLABとの違いが 判らなくなる程である.又,OctaveにもC言語風の構造体を用いる事が 可能である.この構造体を用いる場合,構造体全体の代入は可能だが, 構造体同士の演算や,Cの様に構造体の配列を扱う事は出来ないの で注意する.猶,構造体に含まれる数値や文字の何れかで構成される 行列に対しては通常の処理が可能である.更に,Octaveではswitch文, try-catchによる例外処理も行える等と言語的には非常に強力である. 又,ファイル処理でもMATLABと同様のファイルの入出力を扱う命令を 持っており,機能的にMATLABの物よりも拡張されている.例えば, sscanfやfscanf命令では,形式を指定して読み込みが行えるが,MATLAB の場合はCの様に文字と数値の混在した形式で読み込みがそのまま で行えない.しかし,Octaveでは"C"オプションを指定する事で, C同様の操作が行える.但し,この場合は出力の形式も一つの行列 だけの出力では無く,出力書式に応じたデータ出力となる.この様に MATLABとOctaveの両方で動作するプログラムを構築する場合, 一見して同じ命令でも詳細が異なるものがあり,それらの命令の相異点 を明確にしてプログラムを行う事が重要である.
ヘルプにはlessを用いた通常のhelpとtexinfoを用いたオンライン ヘルプを持っている.使い方は通常の"help 命令"で命令の概要, "help -i 事項"で関連事項のinfoで記述されたOctaveのDocumentが 読める.又,日本語に対応した環境では日本語の文書も読める. 猶,helpで表示される内容はMATLABのものと同様にM-fileの中の functionの上の行に記述されたコメントが表示されるものである. このhelpシステムはscilabの様なGUIに対応したものではないが, Xの環境を想定しないでOctaveの利用が可能であり,使い勝手は 非常に良い.当然ながら,これらless,texinfoがインストールされて いない環境ではOctaveのhelpは使えない事になる.又,M-Fileに 日本語で記述していてもlessが日本語表示に対応していない場合 には文字化けを起すので,環境変数を適切に設定する必要がある. 更に,texinfoもバージョンによってOctaveと併用出来ない ("--index-search"オプションが使えないinfo)の場合もあるので 注意する.この点はバイナリパッケージとして入手する場合には 特に注意する必要がある.
システムの起動時には,MATLABと同様に円周率:pi,純虚数:i,自然 指数:e等が定義されているが,これらの変数は予約語として保護され ていないので注意する.例えば,純虚数:iをfor文等の指数として利用 する事が可能であり,この場合には値が書き換えられてしまう. その為,ユーザー定義の変数では必ず最後に数字を付ける,又は大文字 を用いる等の工夫をする必要があるだろう.但し,間違って代入した 場合は再度定義し直せば良い.猶,Scilabでは円周率等の定数に対して, その先頭に%を付ける様にしており,うっかり代入する間違いを避ける 事が容易になっている.猶,MATLABやOctaveでは%はコメント行の先頭 と見なされるので,同様の方法で書き換えを防ぐ事は出来ない.
この様に便利なOctaveであるが,Octaveの処理速度はMATLABと比較し 明確に劣る.同じプログラムを同じ計算機で,Linux+Octaveの環境と MS-Windows+MATLABで比較した場合,Octaveの処理速度はMATLABの 半分から1/3程度である.猶,Scilabと比較しても処理は遅い方である. 更に,MATLABでは,処理するM-File内部で末尾に";"を付けずに処理 のエコーバックを行なう様にしていると,その個所の処理が終る度 に結果が表示されるが,Octaveの場合はM-File全体の処理が終了し てから一気に表示される.その為,M-Fileを実行しても黙り込んで 処理を行う為に,余計にOctaveの処理が重鈍に見える.
但し,ATLASを用いる事で,行列演算の処理速度に関しては大幅な 改善が行なえ,実験版の2.1系には実装されているとの事である.
細かな制限や互換性の問題はあるものの,GPLのMATLABとしての価値は 非常に高い.実際,ちょっとした行列データ処理や数値計算の学習では MATLABのM-Fileがそのまま利用可能な物が非常に多くあり,MATLABの 利用を前提とした教科書程度のプログラムを実行するには最適と考えら れる.猶,OctaveはMATLABのクローンと言って良い程似ているが,その 分,非常に細かな個所で仕様が異なっている事があって,MATLABと の違いが判り難い面もある.その為,MATLABと完全互換なプログラムの 構築を行う場合には,OctaveやMATLABの一方だけでは無く,必ず両方で 動作の確認を行う事を強く勧める.それを省いた場合,思わぬ個所で 互換性の問題が生じる可能性があるので注意!
主要なEWS,PC-UNIX等.グラフ表示を行う場合はgnuplotかplplot, help用にlessとtexinfoが必要である..
非商用.GPLに従う.
MATLABによく似た独自のシステム(Our-Lab)であるがクローンでは無い. 処理はOctaveと比べて高速との事である.
グラフィックスは1.xでgnuplotかPlplotを用い,2.xではPlotMTVも 利用可能となっている.
主要EWS,PC-UNIX,OS/2,Macintosh,DOS,Windows,BeOS
猶,RLaBはBeOSのCD-ROM(PowerPC版,Intel版は未確認)にも付属し ている.こちらはグラフ表示にgnuplotを用いる.
非商用.GPLに従う.
非商用のシステムで最も機能的に充実し,システムとして最も纏まったもの である.機能的にMATLABと見劣りするものでは無く,下手な商用のシステムを 軽く超越している.例えば,MATLABのSIMLINK風のGUIベース制御系解析ツール SCICOSとネットワーク解析用のMETANETを持つ.又,2.4.1からPVMを用いた 並列処理も利用可能である.但し,本格的な並列処理に対応している訳では 無い.Scilabのライセンス形態は CeCILL というフランス版のGPLと呼べるものである (IT mediaの記事).
処理言語はMATLABと似たC風の言語である.猶,Octaveの様なMATLABクローンでは なく,命令に細かい違いが多い.この違いは基本的な行列の処理等では殆ど無いが, ファイルの入出力処理やグラフ表示になると違いが目立つ.又,Scilabの扱える データも 行列一本だけでは無く,疎行列も扱えるが,C風の構造体迄は持たない 様である.更に,データ構造にBooleanもある.1より大であれば2,それ以外を0を 計算する為に2*(a>1)とMATLABと同様の処理も行える.但し,MATLABではa>1 が通常の数値行列となる為,数値行列の計算で済むが,ScilabではこれがBoolean となる為,2*(a>1)の様な計算では内部的に一度(a>1)を数値に変換する 手間がかかり,その分時間を消費する事に注意が必要である. その為,OctaveやMATLABの様に(a>1)*2+(a<1)*(-2)の様な処理は 思った程,速くないので注意が必要になる.他に,ファイルの入出力は一見, C風の命令を用いているが,Octaveの様にフラグを立てて全く同じ機能を 持たせる事は出来ない.寧ろ,FORTRANのwriteやreadの方が雰囲気的に近く, Octave程の柔軟性を持っていない様である.
Scilabは制御系関連のライブラリが非常に充実しており, その上,伝達関数の計算に必要な程度の多項式の直接処理も可能である. ここでの直接処理とは,MATLABの様に係数行列を処理するものではなく, 数式(多項式)を直接入力して四則演算が可能である.但し,多変数の 多項式の処理は出来ない.
その他の機能として,Fortran,C,Mapleへのプログラム変換機能と MATLAB(Ver.4)のM-Fileの取り込みツールも持っている.又,外部の Fortran,Cプログラムとのダイナミックリンクも可能である.
Scilabの処理言語はMATLABと非常に似ている.しかし,Octave以上に 違いが多く,似ている個所でも詳細となると違いが多くある.現在,日本でも認知度 が向上しており書籍も増えている.又,学生向けに2007年,2008年とScilab Toolbox Contest Japanが開催されている(最優秀作品の製作者(グループの場合は代表1名) はフランスのINRIAに招待).猶,付属のマニュアルの質は非常に高く,売り物と 比べても引けを取らない程である.
ScilabにはGUIでモデルの構築と解析が可能なSCICOSが付属して おり,このSCICOSを利用すればScilabを気軽に利用する事が可能である.
Scilabにはユーザ等が構築したライブラリ(Toolbox)も利用可能である. 基本的にscilab上でライブラリの再構築を行い,scilabの初期化 ファイルにライブラリを読み込む様に設定すれば良い.現在,Scilab のSiteの 共有して頂いたものに多く登録されている.MATLAB程 ではないが,多くのToolboxが登録されている.
Windows(2000,XP,Vista),LINUX等のUNIX環境
非商用.ソース及びバイナリコードで配布されている.
開発元:
http://http://www.scilab.org/非商用(GPLに従う)のシステム.大規模モデルの解析プロトタイプ と後処理,及びMATLABよりも高速演算を行う事を目的としている. 処理言語はC++風で,行列は配列で定義する等,MATLABよりも寧ろ yorickに似ている.但し,グラフィックス処理はyorickと異なり PlotMTVを用い,二,三次元のグラフ処理はかなり柔軟である. 全体的にMATLAB Ver.4.2よりは見栄えが良いがMATLAB Ver.5.1には 見劣りすると開発グループは言っている.外部プログラムの ダイナミックリンクはTeLa自体をカスタマイズする方法で行う.
基本的にUNIX環境.グラフ表示にPlotMTV等,予め準備する物が多い.
非商用(GPLに従う).バイナリコードによる配布もある.
C風の数値解析システム.対話処理言語の割にはその処理は非常に高速であり, OctaveやScilabの様に肥大化するシステムとは違い軽量な点も大きな長所である. 処理言語は非常にCと類似しており,言語仕様はMATLAB風と言うよりも対話処理の 出来るCと云うのが寧ろ妥当である.実際,MATLABと比較してデータ型が明確に なっているので,MATLAB風にプログラムを安易に組んでいるとYorickでは型の エラーで動作しなくなる事が多い.猶,行列やベクトルの定義はMATLABと似て いるが,Yorickでは行列やベクトルは配列の延長として捉えられるもので, その意味でもC風の配列処理にMATLAB風の行列処理が出来るといった雰囲気である. 可視化については,PlPlotを用いた二次元及び三次元グラフのアニメーション機能 もあり,一見質素だが機能は実際は非常に高く,一寸したポスト処理にも向いている.
他のシステムと比べると,ツールボックスで機能を拡張するものではなく, ライブラリをインストールして使うシステムである.ライブラリはそんなに 多くはないが,画像の処理が可能となるツール等が揃っている. 基本的に,グラフ表示機能付の対話処理の可能なCと言った雰囲気が濃厚で, 必要なものは自分で構築するプログラム環境とも言えるだろう.その為, データの可視化やCのプログラムの動作確認等には非常に有効である.
猶,YorickはHamletの墓場の場面で出て来る髑髏の主(宮廷の道化)であり, その為にアイコンは髑髏である.
Windows(95,98,Me,2000,XP),MacOS,MacOSX,Linux
非商用.バイナリ又はソースコードによる配布がある.
統計処理専用のLisp言語.ミネソタ大学統計学部Luke Tierneyによって開発された. 様々な統計グラフから感度曲面の表示やアニメーションも可能で,機能は豊富 である.更に,日本語書籍も非常に多くあり,特に変ったものに共立出版の 共立講座21世紀の数学14"統計"の様にLISP-STATを適宜利用している統計学の 教科書もある(猶,第二版はRで書き直されている) .Windows版をFDに附属した 書籍も存在しており,統計関係のソフトの中では最も情報が入手し易いものの 一つである.
UNIX,MacOS,MacOSX,Windows等の主要な環境.
非商用
AT&T ベル研で開発されたS(version 3)言語互換の統計処理向けの 統合環境である.基本的に,MATLABに対するOctaveの様に,S-Plusに対するR としての位置付けになるが,Octaveの認知度と比較して,Rの認知度は非常に 高く,機能的にも劣るものではない.
Rはインタプリタ言語であり,関数型プログラム言語であるCに似た構文を 持っている.しかし,その機能は寧ろScheme風である.
現行のRの機能は1988年に出版された本"The New S Language"("青本")の殆どが 実装されている.加えて,1992年の出版された本 "Statistical Models in S"("白本")からの機能の大半も実装されている.
近年,日本語の書籍は揃っておりS-Plusよりも寧ろ多い程である.
主要な環境.
非商用.GPL
JAVAで記述された二次元幾何学ソフト.CADの様に直接,点,直線, 円等を描いて平面幾何の図形を構築する事が容易に行える.更に, 角度,線分の長さ,領域の面積の計算も行う.又,図形の一部を ドラッグする事で変形が容易に行え,他に軌跡を描く事や アニメーションも可能.これらの機能を用いて平面幾何の諸定理の 確認が容易に行え,描いた図形をHTML化して平面幾何の教材とし て利用可能と教育機関で重宝するだろう.特に,このHTML化では, 描いた幾何図形を基に自習問題が容易に作られる様になっている.
猶,Cinderellaでは,ユークリッド幾何だけで無く,双曲型, 楕円型の非ユークリッド幾何も対処可能.猶,双曲型は ポアンカレ平面で図形を構築する必要があり,Cinderellaでは 半径1の円周内部となる.他に図形を球面に投影した場合の表示 が可能で,この表示を選択した場合,インタラティブに視点を 変更する事が直接球面を回して行える.この様に非常の奥の深い ものである.
猶,Cinderellaと言う一風変わった名前の由来は,Cinderellaと 言う名前の小舟で遊んでいる時に基本アイデアが浮かんだ為とか.
Javaが動作する環境.
商用.Springer VerlagのCD-ROM書籍:
Richter-Gebert,Kortenkamp, The interactive Geometry Software Cinderella. ISBN 3-540-14719-5
に収録されている.
2003年11月にはその日本語訳が出ている.
J.リヒター・ゲバート U.H.コルテンカンプ 阿原一志訳 シンデレラ 幾何学のためのグラフィックス ISBN4-431-70966-5
この本にもシンデレラが附属しているが,こちらではメニュー等も 日本語化されており,学校での利用で問題は無いだろう. この様な非常に優れたソフトウエアの紹介本の日本語訳は非常に 喜ばしい.
MITのIlya baran氏が開発しているCinderellaに似た幾何学ソフト. Cinderellaと比べて操作はやや洗練されてなかったり,構築した幾何学図形 を球面に射影出来なかったりもするが,軌跡を描いたり,動的に点,線分等を 動かすと云った事が行え,非常に優れている.
QTライブラリが移植された環境.KDEがあれば動作可能.Windows版もある.
GPLに基づく.
3次元空間内の曲面を描く.数式を直接指定して曲面を描く事が可能で, 関数も三角関数,指数・対数関数等,定数は円周率PIと 自然底Eも定義されている.処理言語では:=による割当や, タグを使ったループ文もあるが,複雑な処理は出来ない.
曲面や曲線を描く命令はMapleのサブセットである. dynagraphはコマンド入力向けにはGUIは無いが,曲面を表示する ウインドウにはGUIがあり,表示方法の変更,向き,曲面の自動回転 等の指定が行える.
曲面はデフォルトで綺麗に陰影付けされている.又,表面の 反射光(highlight)表示も行われている. 描いた曲面はマウス操作で回す事や,拡大縮小表示が可能である.
描いた画像はJPEG,PNG,TIFF,PPM(binary),PPM(ascii), PostScript(Grayscale),PostScript(Color), PostScript(Color,Vector)の形式で保存可能である.
主にUNIX環境.下記のライブラリを必要とする:
GPLに基く.
http://www.math.umbc.edu/~rouben/dynagraph
猶,Knoppix/Mathにも収録されている.
ミネソタ大学のGeometry Centerで開発された三次元幾何学向け の非常に高機能な可視化ツール.Geometry Centerの解散により, 現在はGeometry Technology Inc.の支援を受けて,開発とサポート が進められている.
Geomviewにはgcl(Geomview Control Langurage)と云うLISP風の 独自の処理言語を持っている.但し,このgclはGNUのCommon Lisp 処理系のGCLと省略名が同じだが,LISP系の言語である事を除けば, 全く無縁である.このGeomviewではOOGLと呼ばれる階層構造を持った データファイルの可視化や出力を行うが,これにはVRMLも利用可能 である.この場合,Geomviewに附属するvrml2ooglを用いてOOGL書式 に変換して利用れば良い.
Geomviewは外部モジュールで機能を追加する形態であり,大規模な 外部モジュールに太陽系シミュレータOrreryや多様体可視化ツール Maniviewが存在する.尤も,これらは共に教育向けのモジュールで, より本格的なシミュレーターとは少し違う.寧ろ,デモ的なもので ある.
Geomviewは単独の可視化ツールとして用いる他に,MAXIMA, Mathematica等と組合せて利用する事も可能で,非常に柔軟なツール となっている.
主要なUNIX環境.MS-Windows版は開発者を募集している. 猶,GeomviewはCygwin上でも動作するらしい.
非商用.GPLに従う.
双曲多様体の不変量を計算するプログラム.SnapPea 3.0では 実際の計算を行うカーネル部分とPythonのインタプリタを フロントエンドとして用いる為のSnapPeaPythonに分離している.
SnapPeaのカーネル部分は他の様々なプログラムで双曲多様体の 不変量を計算するエンジンとしても用いられている.
猶,SnapPeaを改良して,PARIと繋げた snap がある.
一般的なUnix環境.特にPythonが動作するもの. 又,MS-WindowsやMacintosh(MacOS)でも動作する.
非商用
代数曲線・曲面の表示やアニメーションが行える.簡易なGUIを備えており, GUI操作で様々な設定や,スクリプトの記述や読込と保存にその実行, 画像の保存等が行える.又,GUIなしでも動作させる事が可能である. その為,surfexやsurferで描画エンジンとして利用されている.
生成する画像は代数曲面・曲線の表示に留まらず,平面を定義し,その平面 と曲面の交点を指定した幅で表示する事も可能等と非常に高機能である. 表示される画像はレンダリングされたもので,その品質は非常に高いものである. 画像に色彩,透明度や視点の指定が可能であり,更に,論文等で利用し易い様に 白黒のディザをかけたものに変換する機能もあって,曲線と曲面の可視化で 非常に便利である.猶,レンダリングした画像データはJPEG等の形式で出力可能 である.
surfは元々XView環境で動作するものであったが,現在,GUIをgtk+に変更しており, こちらの方が主になっている.更に,開発拠点もsourceforgeに移っている. こちらのgtk+版ではSINGULARと組合せて利用する事も可能である. 但し,surfの開発は事実上停止している為,gtk2に対応しておらず,GUIの動作で 問題が生じる事が多い.その為,surferと同様に描画エンジンとして用いる 方が問題が無い.
surfは曲面・曲線の表示に独自の言語を利用する.これはC風の簡易な言語で, 数式は通常の数学的表記で定義可能である.曲面,平面及び曲面の設定は 各々surface=数式,plane=数式,curve=数式で定義し,更に,これらの表示は 単にdraw_surfece,draw_curveで行う.
例えば,surface=x^2*y^2+x^2*z^2+y^2*z^2-x*y*z;の様に記述し,その曲面の 表示はdraw_surface;とすれば良い.この様に安易に曲面や曲線の表示が 行える様になっており,便利である.又,多少複雑な処理が必要な場合には, 内部で変数を用いる事も可能である.この場合はCやPascal風に宣言する必要がある. 全体的に,その言語仕様はどちらかと言えば構造化Basicに似た 雰囲気で,例えば,制御文にはif文を持ち,ラベルとgotoを用いて ループを構成する事も可能であるが,それ以上の複雑な制御文は無く, 昔のBasicを思い出させる様な比較的簡易な言語である.
猶,表示した結果が怪しい場合,Configurationのrootfinderで, アルゴリズムを変更すると良い.
主にUNIX環境.GUIを使わなければWindowsでも利用可能. 猶,Linuxのディストリビューションの一つのSuSE Linuxのパッケージ に代数曲線が印刷されていたが,これはsurfを用いて生成したものであった.
非商用.GPLに従う.
surfを計算エンジンとして利用する代数曲線・曲面を描画するソフトウエア. surfにGTKベースのフロントエンドを付けたもので,基本的なsurfのスクリプト の解釈と実行が可能である.
Windows,Linux.
閉曲線を3次元の立体として描くJavaで記述されたプログラム. 内部的にはボロノイ図を用いて骨格を生成し,それから単体分割された閉曲面 を紙面に対して鉛直に引っ張って生成する.図形の変形,曲面の付け足しに 削除に加え,曲面上に絵を描く事も可能で教育用にも面白い. 猶,色彩を付けるのは別ソフトのchameleonで行えるが,このchameleonは MS-Windows上でのみ動作する.
Teddy bearを描くのが目的でこの名前だとか.
JDK1.1以上が動作する環境であれば動作可能.
非商用.研究上のプロトタイプ. 猶,PlayStation2のゲームとしてその手法が商品化されている.
ホクト・システムが販売しているFEM(有限要素法)解析ソルバ. 製品版とLIGHTがあり,LIGHTは教育,私的及び企業での利用で 課金されない"フリーソフト"として配布されている.
FEMLEEGは2,3次元の構造物に対し,簡易CADによるモデル構築, メッシュ生成や解析条件等の設定に用いるプリプロセッサ(FEMIS) と解析結果をグラフやアニメーションで可視化する ポストプロセッサ(FEMIS)を軸としたシステムである.
LIGHT版では,システムの最適化が然程行われていない点と幾つか の機能的な制限を除いて,製品版とほぼ同様の機能を持っており, FEMの入門用として十分過ぎる能力を持っている.この様なシステム がフリーであるとは驚嘆すべき事だろう.
Linux(x86)
非商用.バイナリのみの配布.
二次元版のfreeFEM++と三次元版のfreeFEM3Dがある. 三次元版の弱点は結果の可視化機能の貧弱さである.
Unix環境,Windows(98,NT,2000,XP),MacOSX
WYSIWYGのTeXエディタ.単なるエディタとしての利用の他にMacaulay2,Maxima, MuPAD,PARI,Scilab等の数値・数式処理システムのフロントエンドとしても 利用可能である.この場合,TeXmacsからの入力を外部プログラムに引き渡し, その計算結果を受け取って,通常の数式としてレンダリングした結果を表示する. 又,グラフ等を貼り付ける事も可能であるが,PS形式のファイルに限定される様である.
国際化対応としては,各ヨーロッパ言語には標準で対応しており,日本語等の 2bite codeにも標準ではないが対応している.
主にUNIX環境.guileとtkを必要とする.
非商用.GPLに従う.