任意次元正方行列を管理するクラス [詳細]
Public メソッド | |
fk_GenMatrix (int deg=0) | |
コンストラクタ [詳細] | |
fk_GenMatrix (const fk_GenMatrix &) | |
コピーコンストラクタ [詳細] | |
単項演算子 | |
fk_GenMatrix | operator! (void) const |
逆行列取得演算子 [詳細] | |
比較演算子 | |
bool | operator== (const fk_GenMatrix &) const |
同値比較演算子 [詳細] | |
bool | operator!= (const fk_GenMatrix &) const |
異値比較演算子 [詳細] | |
代入演算子 | |
fk_GenMatrix & | operator= (const fk_GenMatrix &) |
単純代入演算子 [詳細] | |
fk_GenMatrix & | operator+= (const fk_GenMatrix &) |
行列和代入演算子 [詳細] | |
fk_GenMatrix & | operator-= (const fk_GenMatrix &) |
行列差代入演算子 [詳細] | |
fk_GenMatrix & | operator*= (const fk_GenMatrix &) |
行列積代入演算子 [詳細] | |
メンバ関数 | |
void | init (bool initFlg=true) |
初期化関数 [詳細] | |
void | setDeg (int deg) |
次元数設定関数 [詳細] | |
int | getDeg (void) const |
次元数取得関数 [詳細] | |
void | set (int row, int col, double value) |
成分値設定関数 [詳細] | |
double | get (int row, int col) const |
成分値取得関数 [詳細] | |
bool | inverse (void) |
逆行列化関数 [詳細] | |
void | negate (void) |
転置化関数 [詳細] | |
bool | isRegular (void) const |
正則判定関数 [詳細] | |
bool | isSingular (void) const |
特異判定関数 [詳細] | |
フレンド | |
二項演算子 | |
fk_GenVector | operator* (const fk_GenMatrix &, const fk_GenVector &) |
ベクトル変換二項演算子 [詳細] | |
fk_GenMatrix | operator+ (const fk_GenMatrix &, const fk_GenMatrix &) |
行列和二項演算子 [詳細] | |
fk_GenMatrix | operator- (const fk_GenMatrix &, const fk_GenMatrix &) |
行列差二項演算子 [詳細] | |
fk_GenMatrix | operator* (const fk_GenMatrix &, const fk_GenMatrix &) |
行列積二項演算子 [詳細] | |
任意次元正方行列を管理するクラス
このクラスは、任意次元の正方行列に関する様々な機能を提供します。 最も重要な機能は、 fk_GenVector クラスと合わせた行列演算による連立方程式の計算です。 4元以下の行列演算については、 fk_Matrix を利用した方が高速です。
fk_GenMatrix::fk_GenMatrix | ( | int | deg = 0 | ) |
コンストラクタ
引数で与えられた次元数の単位正方行列を生成します。
[in] | deg | 次元数 |
fk_GenMatrix::fk_GenMatrix | ( | const fk_GenMatrix & | ) |
コピーコンストラクタ
fk_GenMatrix fk_GenMatrix::operator! | ( | void | ) | const |
逆行列取得演算子
以下のコードは、M_org の逆行列を M_new に代入します。
M_new = !M_org;
このとき、M_org は変化しません。 もし M_org が特異行列であった場合は、M_new は M_org と同値となります。
bool fk_GenMatrix::operator== | ( | const fk_GenMatrix & | ) | const |
同値比較演算子
fk_GenMatrix では、以下のように記述することで、 M1 と M2 が等しいかどうかを判断できます。
if(M1 == M2) { : : }
ここでの比較は、各成分の比較において FK_MATRIX_EPS までの数値誤差を許容しています。 次元数が異なる場合は、無条件に偽となります。
bool fk_GenMatrix::operator!= | ( | const fk_GenMatrix & | ) | const |
異値比較演算子
fk_GenMatrix では、以下のように記述することで、 M1 と M2 が等しくないかどうかを判断できます。
if(M1 != M2) { : : }
ここでの比較は、各成分の比較において FK_MATRIX_EPS までの数値誤差を許容しています。 次元数が異なる場合は、無条件に真となります。
fk_GenMatrix& fk_GenMatrix::operator= | ( | const fk_GenMatrix & | ) |
単純代入演算子
fk_GenMatrix& fk_GenMatrix::operator+= | ( | const fk_GenMatrix & | ) |
行列和代入演算子
以下のコードは、M1 と M2 の行列和を 前の M1 の値は破棄して改めて M1 に設定します。
M1 += M2;
これは、以下のコードと同義です。
M1 = M1 + M2;
M1 と M2 の次元数が異なる場合は、M1 は変化しません。
fk_GenMatrix& fk_GenMatrix::operator-= | ( | const fk_GenMatrix & | ) |
行列差代入演算子
以下のコードは、M1 と M2 の行列差を 前の M1 の値は破棄して改めて M1 に設定します。
M1 -= M2;
これは、以下のコードと同義です。
M1 = M1 - M2;
M1 と M2 の次元数が異なる場合は、M1 は変化しません。
fk_GenMatrix& fk_GenMatrix::operator*= | ( | const fk_GenMatrix & | ) |
行列積代入演算子
以下のコードは、M1 と M2 の行列積を 前の M1 の値は破棄して改めて M1 に設定します。
M1 *= M2;
これは、以下のコードと同義です。
M1 = M1 * M2;
M1 と M2 の次元数が異なる場合は、M1 は変化しません。
void fk_GenMatrix::init | ( | bool | initFlg = true | ) |
初期化関数
行列を、引数の値に従って初期化を行います。 次元数は変化しません。
[in] | initFlg | true の場合、単位行列として初期化します。 false の場合、零行列として初期化します。 |
void fk_GenMatrix::setDeg | ( | int | deg | ) |
次元数設定関数
行列の次元数を設定します。 各成分の値は可能な限り引き継がれます。
[in] | deg | 次元数 |
int fk_GenMatrix::getDeg | ( | void | ) | const |
次元数取得関数
次元数を取得します。
void fk_GenMatrix::set | ( | int | row, |
int | col, | ||
double | value | ||
) |
成分値設定関数
引数に対応する成分の値を設定します。
[in] | row | 行番号。0から始まります。 |
[in] | col | 列番号。0から始まります。 |
[in] | value | 設定値。 |
double fk_GenMatrix::get | ( | int | row, |
int | col | ||
) | const |
成分値取得関数
引数に対応する成分を取得します。
[in] | row | 行番号。0から始まります。 |
[in] | col | 列番号。0から始まります。 |
bool fk_GenMatrix::inverse | ( | void | ) |
逆行列化関数
現在設定されている行列に対し、正則行列であれば自身を逆行列化します。 特異(非正則)行列である場合は「失敗」とし、成分値を変更しません。
void fk_GenMatrix::negate | ( | void | ) |
転置化関数
現在設定されている行列に対し、自身を転置化します。
bool fk_GenMatrix::isRegular | ( | void | ) | const |
正則判定関数
行列が正則であるかどうかを判定します。 正則行列とは、逆行列が存在する行列のことです。
bool fk_GenMatrix::isSingular | ( | void | ) | const |
特異判定関数
行列が特異であるかどうかを判定します。 特異行列とは、逆行列が存在しない行列のことです。 これは「非正則行列」と同義になります。
|
friend |
ベクトル変換二項演算子
任意次元ベクトル V1 の、行列 M による変換ベクトル V2 を求めるには、 以下のように記述します。 V1, V2 は共に fk_GenVector 型の変数で、M は fk_GenMatrix 型の変数です。
V2 = M * V1;
FK では行列体系として MV 系を採用しており、 行列のベクトル変換の際には行列が左側、ベクトルが右側である必要があります。 なお、この演算では M と V1 の次元数が同一である必要があります。 もし次元数が異なった場合は、次元が 0 のベクトルを返します。
|
friend |
行列和二項演算子
行列 M1, M2 の行列和 M3 を求めるには、 以下のように記述します。 M1, M2, M3 はいずれも fk_GenMatrix 型です。
M3 = M1 + M2;
|
friend |
行列差二項演算子
行列 M1, M2 の行列差 M3 を求めるには、 以下のように記述します。 M1, M2, M3 はいずれも fk_GenMatrix 型です。
M3 = M1 - M2;
|
friend |
行列積二項演算子
行列 M1, M2 の行列積 M3 を求めるには、 以下のように記述します。 M1, M2, M3 はいずれも fk_GenMatrix 型の変数です。
M3 = M1 * M2;