# クラス fk_GenMatrix

任意次元正方行列を管理するクラス [詳細]

すべてのメンバ一覧

## 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_GenVector, fk_Matrix, fk_Vector, fk_HVector

## コンストラクタとデストラクタ

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 |  | ) |

逆行列化関数

現在設定されている行列に対し、正則行列であれば自身を逆行列化します。 特異(非正則)行列である場合は「失敗」とし、成分値を変更しません。

戻り値:
  行列が正則である場合、逆行列化して true を返します。 特異行列であった場合は、成分値を変更せずに false を返します。

参照:
  isRegular(), isSingular()

void fk_GenMatrix::negate | ( | void |  | ) |

転置化関数

現在設定されている行列に対し、自身を転置化します。

bool fk_GenMatrix::isRegular | ( | void |  | ) | const

正則判定関数

行列が正則であるかどうかを判定します。 正則行列とは、逆行列が存在する行列のことです。

戻り値:
  正則であれば true を、そうでなければ false を返します。

参照:
  inverse(), isSingular()

bool fk_GenMatrix::isSingular | ( | void |  | ) | const

特異判定関数

行列が特異であるかどうかを判定します。 特異行列とは、逆行列が存在しない行列のことです。 これは「非正則行列」と同義になります。

戻り値:
  特異であれば true を、そうでなければ false を返します。

参照:
  inverse(), isRegular()

## フレンドと関連する関数

fk_GenVector operator* | ( | const fk_GenMatrix & | ,
|  | const fk_GenVector & |  |
| ) |  |  | `[friend]`

fk_GenMatrix operator+ | ( | const fk_GenMatrix & | ,
|  | const fk_GenMatrix & |  |
| ) |  |  | `[friend]`

fk_GenMatrix operator- | ( | const fk_GenMatrix & | ,
|  | const fk_GenMatrix & |  |
| ) |  |  | `[friend]`

fk_GenMatrix operator* | ( | const fk_GenMatrix & | ,
|  | const fk_GenMatrix & |  |
| ) |  |  | `[friend]`