メインページ | ネームスペース一覧 | クラス階層 | 構成 | Directories | ファイル一覧 | ネームスペースメンバ | 構成メンバ | ファイルメンバ | 関連ページ

ポータブル テンプレート 行列クラスライブラリ

作者:
長谷川 晶一
日付:
2001年6月10日,2003年10月20日更新

はじめに

このドキュメントはポータブル テンプレート 行列クラスライブラリ のドキュメントです. ポータブル テンプレート 行列クラスライブラリは, テンプレートによるM×N行列のクラスライブラリです. 行列のサイズをテンプレートで持つバージョンと変数で持つバージョンがあります.

このライブラリの特徴

テンプレートで解決

テンプレート版は,全てをテンプレートで静的に解決しています. 行列のサイズやポインタなどを保持するための管理領域を持ちません. そのため, といった特徴をもちます.

移植性

処理系依存部分の多いテンプレート機能を活用していながら,全機能が, 3つのコンパイラで使用できます.サポートしているコンパイラは, です.

新たにクラスライブラリを作成した理由

すでに多くの行列ライブラリがありながら,新たに作成した理由は,

からです.

< 使い方

ポータブル テンプレート 行列クラスライブラリは,ヘッダファイルだけからなる クラスライブラリなので, TMatrix.h, TMatrixUtility.h, TVector.h を同じフォルダに入れておき,.cppファイルからヘッダをインクルードするだけで 使用できます.

サンプル

簡単なサンプルです.適当なファイル名(たとえば sample.cpp) で保存して コンパイルしてください.コンパイルするためには,
visual C++ の場合
cl -GX sample.cpp
gccの場合
g++ sample.cpp
bcc の場合
bcc32 sample.cpp
としてください.
#include "TMatrix.h"    //  行列ライブラリのインクルードする.
#include <iostream>
using namespace PTM;    //  行列クラスはPTM名前空間の中で宣言されている.
void main(){
    TMatrixRow<2,2,float> mat;     //  2行2列の行列を宣言
    mat[0][0] = 1;  mat[0][1] = 2;
    mat[1][0] = 3;  mat[1][1] = 4;
    TVector<2,float> vec;       //  2次元のベクトルを宣言
    vec[0] = 1; vec[1] = 0;
    std::cout << mat;
    std::cout << vec << std::endl;
    std::cout << mat * vec << std::endl;	//	掛け算
    std::cout << mat + mat << std::endl;	//	足し算
    std::cout << mat - mat << std::endl;	//	引き算
    std::cout << mat.trans() << std::endl;	//	転置
    std::cout << mat.inv() << std::endl;	//	逆行列
}

ベクトルの機能

次の演算ができます. 次のメンバ関数を持ちます. 変数版はサイズの変更ができます.

行列の機能

次の演算ができます. 次のメンバ関数を持ちます. sub_matrix()やrow()には値を代入することもできます.
	TMatrixRow<3,3,float> mat; TVector<3, float> vec;
	mat.row() = vec;

再配布の条件

再配布する場合は,原著作者の署名・連絡先を改変・削除しないでください. 閉鎖的な会社でソフトウエアを書く人にも自由に使用できるようにしたい ので,GPL・LGPLにしませんでした. もちろんGPL・LGPLに改変して再配布してくださっても結構です.

サポート

バグ,不具合,意味不明なコンパイルエラーなどを見つけた場合は, 長谷川 晶一 (hase@hi.pi.titech.ac.jp) までご連絡ください. できる限りサポートし,より良いライブラリにしていくつもりです.
特にこのライブラリはテンプレートクラスライブラリなので,使用時に, 内部の動作が分らないと意味のわからないコンパイルエラーに出会うことも あると思います.そのような問題には対応するつもりですので,まずはご連絡ください.

謝辞

LU分解,逆行列,ガウス消去法などの行列計算アルゴリズムは,
「『C言語による最新アルゴリズム事典』全ソースコード」
ftp://ftp.matsusaka-u.ac.jp/pub/algorithms
奥村 晴彦 Haruhiko Okumura
を改変して流用させていただきました. 自由にコードを使わせてくださって,ありがとうございます.
Springheadに対してSun Apr 16 01:58:45 2006に生成されました。  doxygen 1.4.1