MATLAB (MATrix LABoratory) は、
著名な線形演算ライブラリィ LINPACK,
EISPACK の開発でも中心的な役割を果たした Cleve Moler が、
1980 年頃に製作したものが発展した数値実験環境 (「実験室」) である
(当時の開発言語は FORTRAN)。彼は 1985 年に C 言語で MATLAB を書き直し、
MathWorks 社を設立して販売を開始した (現在 Moler は会長兼技師長であるとか)。
MATLAB の特徴 |
- インタープリター型言語である。そのため1、
- 対話的で使いやすいシステムになっている。
- 注意深く利用しないと実行効率が低くなる2 (個々の命令の実行時に命令解釈のコストが必要なため、
繰り返し処理を多用すると計算時間が長くなりがちである)。
- LAPACK などの各種数値計算ライブラリィを
内蔵している (これらのライブラリィ群へのインターフェイスであると
理解すべきかもしれない)。
- ベクトル、行列などのデータの型が始めから定義されているので、
命令が簡潔になっていて、プログラミングも楽になった
3。
|
MATLAB をいかに評価するかであるが、筆者は最近
案外大したものではないか、ひょっとするとコロンブスの卵で大発明?
と考えるようになった。
このようなシステムを作るのは実は簡単で (実際、以下紹介するように
「真似」がたくさん出て来た)、しかし使ってみると分るが、
非常に便利である。
日本の数学界ではあまり人気がない (というか知られていない) ようであるが、
欧米や日本でも工学の世界では浸透している。
MATLAB は現在も改良が続けられていて、
行列計算関係では、
疎行列向きの処理法や反復法なども採り入れられている。
簡単な偏微分方程式のシミュレーションへの応用も十分可能なレベルに成長した。
MATLAB を後を追ったシステムがたくさん開発されたが、
MATLAB の言語仕様は「準標準」となっている。以下 MATLAB と似たシステムを
いくつか紹介しよう4。
いずれもソース公開のフリーソフトウェアである。
- (GNU) Octave
- MATLAB との互換性が高い5。
残念ながら疎行列専用の処理が用意されていないが (これは大部前の話で、
現在はサポートされている)、
入門には十分であるし、用途を選べば実用性も高い。
ただし、
Octave のグラフ表示機能は gnuplot を用いて実現されているが、
MATLAB, Scilab と比べるとやや劣っている。
- Scilab
- MATLAB との互換性の程度は Octave よりも低いが、
ソフトウェアとしての完成度はやや高いかもしれない。
疎行列処理も完全ではないが、
LU 分解とそれに基づく連立1次方程式の解法程度はサポートしている。
疎行列にする命令 sparse() がある。
Asp が疎行列として、Aspx=b を解くには、
[h,rk]=lufact(Asp); x=lusolve(h,b); ludel(h);
とする。
開発元から Windows 向けのバイナリーが配布されている。
桂田 祐史
2017-06-19