FineKernelToolKit 4.2.13
読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 全メンバ一覧
FK::fk_GenMatrix クラス

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

#include <FK/GenMatrix.h>

公開メンバ関数

 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_GenMatrixoperator= (const fk_GenMatrix &)
 単純代入演算子
 
fk_GenMatrixoperator+= (const fk_GenMatrix &)
 行列和代入演算子
 
fk_GenMatrixoperator-= (const fk_GenMatrix &)
 行列差代入演算子
 
fk_GenMatrixoperator*= (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 クラスと合わせた行列演算による連立方程式の計算です。 4元以下の行列演算については、 fk_Matrix を利用した方が高速です。

参照
fk_GenVector, fk_Matrix, fk_Vector, fk_HVector

構築子と解体子

◆ fk_GenMatrix() [1/2]

FK::fk_GenMatrix::fk_GenMatrix ( int  deg = 0)

コンストラクタ

引数で与えられた次元数の単位正方行列を生成します。

引数
[in]deg次元数

◆ fk_GenMatrix() [2/2]

FK::fk_GenMatrix::fk_GenMatrix ( const fk_GenMatrix )

コピーコンストラクタ

関数詳解

◆ operator!()

fk_GenMatrix FK::fk_GenMatrix::operator! ( void  ) const

逆行列取得演算子

以下のコードは、M_org の逆行列を M_new に代入します。

M_new = !M_org;

このとき、M_org は変化しません。 もし M_org が特異行列であった場合は、M_new は M_org と同値となります。

◆ operator==()

bool FK::fk_GenMatrix::operator== ( const fk_GenMatrix ) const

同値比較演算子

fk_GenMatrix では、以下のように記述することで、 M1 と M2 が等しいかどうかを判断できます。

if(M1 == M2) {
    :
    :
}

ここでの比較は、各成分の比較において fk_Vector::MATRIXEPS までの数値誤差を許容しています。 次元数が異なる場合は、無条件に偽となります。

◆ operator!=()

bool FK::fk_GenMatrix::operator!= ( const fk_GenMatrix ) const

異値比較演算子

fk_GenMatrix では、以下のように記述することで、 M1 と M2 が等しくないかどうかを判断できます。

if(M1 != M2) {
    :
    :
}

ここでの比較は、各成分の比較において fk_Vector::MATRIXEPS までの数値誤差を許容しています。 次元数が異なる場合は、無条件に真となります。

◆ operator=()

fk_GenMatrix & FK::fk_GenMatrix::operator= ( const fk_GenMatrix )

単純代入演算子

◆ operator+=()

fk_GenMatrix & FK::fk_GenMatrix::operator+= ( const fk_GenMatrix )

行列和代入演算子

以下のコードは、M1 と M2 の行列和を 前の M1 の値は破棄して改めて M1 に設定します。

M1 += M2;

これは、以下のコードと同義です。

M1 = M1 + M2;

M1 と M2 の次元数が異なる場合は、M1 は変化しません。

◆ operator-=()

fk_GenMatrix & FK::fk_GenMatrix::operator-= ( const fk_GenMatrix )

行列差代入演算子

以下のコードは、M1 と M2 の行列差を 前の M1 の値は破棄して改めて M1 に設定します。

M1 -= M2;

これは、以下のコードと同義です。

M1 = M1 - M2;

M1 と M2 の次元数が異なる場合は、M1 は変化しません。

◆ operator*=()

fk_GenMatrix & FK::fk_GenMatrix::operator*= ( const fk_GenMatrix )

行列積代入演算子

以下のコードは、M1 と M2 の行列積を 前の M1 の値は破棄して改めて M1 に設定します。

M1 *= M2;

これは、以下のコードと同義です。

M1 = M1 * M2;
覚え書き
行列積は交換法則が成り立たないため、 \( \mathbf{M}_2\mathbf{M}_1 \) を \( \mathbf{M}_1 \) に代入したいときには、この演算子は利用できません。

M1 と M2 の次元数が異なる場合は、M1 は変化しません。

◆ init()

void FK::fk_GenMatrix::init ( bool  initFlg = true)

初期化関数

行列を、引数の値に従って初期化を行います。 次元数は変化しません。

引数
[in]initFlgtrue の場合、単位行列として初期化します。 false の場合、零行列として初期化します。

◆ setDeg()

void FK::fk_GenMatrix::setDeg ( int  deg)

次元数設定関数

行列の次元数を設定します。 各成分の値は可能な限り引き継がれます。

引数
[in]deg次元数

◆ getDeg()

int FK::fk_GenMatrix::getDeg ( void  ) const

次元数取得関数

次元数を取得します。

戻り値
次元数

◆ set()

void FK::fk_GenMatrix::set ( int  row,
int  col,
double  value 
)

成分値設定関数

引数に対応する成分の値を設定します。

引数
[in]row行番号。0から始まります。
[in]col列番号。0から始まります。
[in]value設定値。

◆ get()

double FK::fk_GenMatrix::get ( int  row,
int  col 
) const

成分値取得関数

引数に対応する成分を取得します。

引数
[in]row行番号。0から始まります。
[in]col列番号。0から始まります。
戻り値
成分値

◆ inverse()

bool FK::fk_GenMatrix::inverse ( void  )

逆行列化関数

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

戻り値
行列が正則である場合、逆行列化して true を返します。 非正則行列であった場合は、成分値を変更せずに false を返します。
参照
isRegular(), isSingular()

◆ negate()

void FK::fk_GenMatrix::negate ( void  )

転置化関数

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

◆ isRegular()

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

正則判定関数

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

戻り値
正則であれば true を、そうでなければ false を返します。
参照
inverse(), isSingular()

◆ isSingular()

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

非正則(特異)判定関数

行列が非正則(特異)であるかどうかを判定します。 非正則行列とは、逆行列が存在しない行列のことです。

戻り値
非正則であれば true を、そうでなければ false を返します。
参照
inverse(), isRegular()