Cで書かれた行列演算ライブラリ. 特徴は以下のとおり.
このmatlib行列演算ライブラリ群(*1)は, 作者である花原が大学院修士課程で 知的適応トラスの研究を始めたときに基本部分を作成し, その後必要に応じて修正, 拡張を施してしてきたものである. プログラムの全ては古い(ANSI-C以前の)書式のC言語で書かれている. 関数名等の識別が8文字に収まったりしていないほかは, 構造体の代入なども使っておらず, 少々古い処理系でも動作する(はずである). いわゆる「商品となるような」プログラムや, 非常に大規模の演算をするような場合はともかくとして, 大学の研究室等で使う分には十分の能力がある(はずである).
(*1) 実はこのmatlibという名前は行列演算パッケージをはじめとして 様々な場所で既に使われている(例えば数学(math)関係, 材料(material)関係等)が, これまでに書いてきたプログラムを書き換える気力もなく, そのままにしてある. 区別する必要がある場合にはmatlib(hanahara)とする.
まず, 以下のユーザーズマニュアルmatlib.pdf(A4で60ページ弱あって未だ未完成)の 1〜3章あたりにざっと目を通すことを勧める. とにかく詳細についてはマニュアルを参照のこと.
matlib.pdf | matlibユーザーズマュアル(ver. 0.401) |
matlib.lzh | lzhファイル |
matlib.zip | zipファイル |
mat.exe | 簡易行列電卓mat.exe (Windows版) (コマンドプロンプトで使用. 下記およびmatlib.pdfの5章参照) |
簡易行列電卓mat.exeの使用例. 逆ポーランド記法に従う. 下記の例は, 適当なエディタ等で行列A, ベクトルBを準備し, 線形方程式AU=Bを解くものである. コマンドプロンプト(DOS窓)での実行例を示す.
C:\tmp>mat ** Simple matrix calculator for reverse Polish notaion ** Binary operator : '+' Add., '-' Sub., 'x' Mul. Unary operator : '-1' Inv., '^' Scalar times, '=' Assign. Example: D = Inv[(-2.5 A + B) - C] --> mat A ^-2.5 B + C - -1 =D C:\tmp>type A 1 2 4 8 8 4 2 1 1 3 5 7 7 5 3 1 C:\tmp>type B 1 2 3 4 C:\tmp>mat A -1 B x =U -0.3750 1.0625 0.5625 -0.3750 C:\tmp>mat A U x 1.0000 2.0000 3.0000 4.0000 C:\tmp>逆ポーランド記法については適当な書籍等を参照のこと.