FineKernelToolKit: FK_CLI::fk_GenMatrix クラス

FineKernelToolKit 4.3.0

読み取り中…
検索中…
一致する文字列を見つけられません
公開メンバ関数 | 静的公開メンバ関数 | プロパティ | 全メンバ一覧
FK_CLI::fk_GenMatrix クラス

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

`#include <CLI/FK_CLI/include/GenMatrix_CLI.h>`

## 公開メンバ関数

| fk_GenMatrix ()
| コンストラクタ1
| fk_GenMatrix (int deg)
| コンストラクタ2
| ~fk_GenMatrix ()
| デストラクタ
| !fk_GenMatrix ()
| ファイナライザ
bool | Equals (fk_GenMatrix^ M)
| 同値比較メソッド1
virtual bool | Equals (Object^ O) override
| 同値比較メソッド2
String ^ | ToString () override
| 文字列出力メソッド
void | Init (bool initFlg)
| 初期化メソッド1
void | Init (void)
| 初期化メソッド2
bool | Inverse (void)
| 逆行列化メソッド
fk_GenMatrix ^ | GetInverse (void)
| 逆行列取得演算子
void | Negate (void)
| 転置化メソッド
bool | IsRegular (void)
| 正則判定メソッド
bool | IsSingular (void)
| 特異判定メソッド

## 静的公開メンバ関数

static fk_GenVector ^ | operator* (fk_GenMatrix^ M, fk_GenVector^ V1)
| ベクトル変換二項演算子
static fk_GenMatrix ^ | operator* (fk_GenMatrix^ M1, fk_GenMatrix^ M2)
| 行列積二項演算子
static fk_GenMatrix ^ | operator- (fk_GenMatrix^ M1, fk_GenMatrix^ M2)
| 行列差二項演算子
static fk_GenMatrix ^ | operator+ (fk_GenMatrix^ M1, fk_GenMatrix^ M2)
| 行列和二項演算子
static void | operator+= (fk_GenMatrix^ M1, fk_GenMatrix^ M2)
| 行列和代入演算子
static void | operator-= (fk_GenMatrix^ M1, fk_GenMatrix^ M2)
| 行列差代入演算子
static void | operator*= (fk_GenMatrix^ M1, fk_GenMatrix^ M2)
| 行列積代入演算子
static void | operator*= (fk_GenVector^ V, fk_GenMatrix^ M)
| 行列変換代入演算子

## プロパティ

double | default [int, int]`[get, set]`
| 成分プロパティ
int | Degree`[get, set]`
| 次元数プロパティ

## 詳解

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

このクラスは、任意次元の正方行列に関する様々な機能を提供します。 最も重要な機能は、 fk_GenVector クラスと合わせた行列演算による連立方程式の計算です。 4元以下の行列演算については、 fk_Matrix を利用した方が高速です。

参照
  fk_GenVector, fk_Matrix, fk_Vector, fk_HVector

## 構築子と解体子

## ◆ fk_GenMatrix() [1/2]

FK_CLI::fk_GenMatrix::fk_GenMatrix | ( |  | ) |

コンストラクタ1

空の行列を生成します。

## ◆ fk_GenMatrix() [2/2]

FK_CLI::fk_GenMatrix::fk_GenMatrix | ( | int | deg | ) |

コンストラクタ2

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

引数

  [in] | deg | 次元数

## ◆ ~fk_GenMatrix()

FK_CLI::fk_GenMatrix::~fk_GenMatrix | ( |  | ) |

デストラクタ

## ◆ !fk_GenMatrix()

FK_CLI::fk_GenMatrix::!fk_GenMatrix | ( |  | ) |

ファイナライザ

## 関数詳解

## ◆ Equals() [1/2]

bool FK_CLI::fk_GenMatrix::Equals | ( | fk_GenMatrix^ | M | ) |

同値比較メソッド1

2つの行列が同値かどうかを判定します。 単純に == 演算子を用いた場合はインスタンスが同一であるかどうかの判定となるため、 異なるインスタンスで同値かどうかを判定する場合はこのメソッドを利用して下さい。

引数

  [in] | M | 同値かどうかを判定する行列

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

## ◆ Equals() [2/2]

virtual bool FK_CLI::fk_GenMatrix::Equals | ( | Object^ | O | ) |

overridevirtual

同値比較メソッド2

2つの行列が同値かどうかを判定します。 単純に == 演算子を用いた場合はインスタンスが同一であるかどうかの判定となるため、 異なるインスタンスで同値かどうかを判定する場合はこのメソッドを利用して下さい。

引数

  [in] | O | 同値かどうかを判定する行列

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

## ◆ ToString()

String ^ FK_CLI::fk_GenMatrix::ToString | ( |  | ) |

override

文字列出力メソッド

現在のベクトル成分値を文字列として出力します。

戻り値
  成分値の文字列

## ◆ operator*() [1/2]

fk_GenVector ^ FK_CLI::fk_GenMatrix::operator* | ( | fk_GenMatrix^ | M,
|  | fk_GenVector^ | V1 )

static

ベクトル変換二項演算子

任意次元ベクトル V1 の、行列 M による変換ベクトル V2 を求めるには、 以下のように記述します。 V1, V2 は共に fk_GenVector 型の変数で、M は fk_GenMatrix 型の変数です。

    V2 = M * V1;

FK では行列体系として MV 系を採用しており、 行列のベクトル変換の際には行列が左側、ベクトルが右側である必要があります。 なお、この演算では M と V1 の次元数が同一である必要があります。 もし次元数が異なった場合は、次元が 0 のベクトルを返します。

## ◆ operator*() [2/2]

fk_GenMatrix ^ FK_CLI::fk_GenMatrix::operator* | ( | fk_GenMatrix^ | M1,
|  | fk_GenMatrix^ | M2 )

static

行列積二項演算子

行列 M1, M2 の行列積 M3 を求めるには、 以下のように記述します。 M1, M2, M3 はいずれも fk_GenMatrix 型の変数です。

    M3 = M1 * M2;

覚え書き
  行列積は交換法則が成り立たないため、 \( \mathbf{M}_1\mathbf{M}_2 \) と \( \mathbf{M}_2\mathbf{M}_1 \) は一般的に結果が異なります。 なお、この演算では M1 と M2 の次元数が同一である必要があります。 もし次元数が異なった場合は、次元が 0 の行列を返します。

## ◆ operator-()

fk_GenMatrix ^ FK_CLI::fk_GenMatrix::operator- | ( | fk_GenMatrix^ | M1,
|  | fk_GenMatrix^ | M2 )

static

行列差二項演算子

行列 M1, M2 の行列差 M3 を求めるには、 以下のように記述します。 M1, M2, M3 はいずれも fk_GenMatrix 型です。

    M3 = M1 - M2;

覚え書き
  行列差は交換法則は成り立ちません。 なお、この演算では M1 と M2 の次元数が同一である必要があります。 もし次元数が異なった場合は、次元が 0 の行列を返します。

## ◆ operator+()

fk_GenMatrix ^ FK_CLI::fk_GenMatrix::operator+ | ( | fk_GenMatrix^ | M1,
|  | fk_GenMatrix^ | M2 )

static

行列和二項演算子

行列 M1, M2 の行列和 M3 を求めるには、 以下のように記述します。 M1, M2, M3 はいずれも fk_GenMatrix 型です。

    M3 = M1 + M2;

覚え書き
  行列和は交換法則が成り立ちます。 なお、この演算では M1 と M2 の次元数が同一である必要があります。 もし次元数が異なった場合は、次元が 0 の行列を返します。

## ◆ operator+=()

void FK_CLI::fk_GenMatrix::operator+= | ( | fk_GenMatrix^ | M1,
|  | fk_GenMatrix^ | M2 )

static

行列和代入演算子

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

    M1 += M2;

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

    M1 = M1 + M2;

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

## ◆ operator-=()

void FK_CLI::fk_GenMatrix::operator-= | ( | fk_GenMatrix^ | M1,
|  | fk_GenMatrix^ | M2 )

static

行列差代入演算子

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

    M1 -= M2;

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

    M1 = M1 - M2;

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

## ◆ operator*=() [1/2]

void FK_CLI::fk_GenMatrix::operator*= | ( | fk_GenMatrix^ | M1,
|  | fk_GenMatrix^ | M2 )

static

行列積代入演算子

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

    M1 *= M2;

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

    M1 = M1 * M2;

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

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

## ◆ operator*=() [2/2]

void FK_CLI::fk_GenMatrix::operator*= | ( | fk_GenVector^ | V,
|  | fk_GenMatrix^ | M )

static

行列変換代入演算子

以下のコードは、ベクトル V を 行列 M によって変換した値を代入します。 V は fk_GenVector 型の変数、M は fk_GenMatrix 型の変数です。

    V *= M;

上記コードは、以下のコードと同義です。

    V = M * V;

もし V と M の次元数が異なる場合、V の値は変化しません。

## ◆ Init() [1/2]

void FK_CLI::fk_GenMatrix::Init | ( | bool | initFlg | ) |

初期化メソッド1

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

引数

  [in] | initFlg | true の場合、単位行列として初期化します。 false の場合、零行列として初期化します。

## ◆ Init() [2/2]

void FK_CLI::fk_GenMatrix::Init | ( | void |  | ) |

初期化メソッド2

行列を単位行列として初期化します。 次元数は変化しません。

## ◆ Inverse()

bool FK_CLI::fk_GenMatrix::Inverse | ( | void |  | ) |

逆行列化メソッド

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

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

参照
  GetInverse(), IsRegular(), IsSingular()

## ◆ GetInverse()

fk_GenMatrix ^ FK_CLI::fk_GenMatrix::GetInverse | ( | void |  | ) |

逆行列取得演算子

現在設定されている行列の逆行列を求めます。 自身の値は変化しません。

戻り値
  逆行列を返します。もし自身が特異行列であった場合は、自身と同値を返します。

参照
  Inverse(), IsRegular(), IsSingular()

## ◆ Negate()

void FK_CLI::fk_GenMatrix::Negate | ( | void |  | ) |

転置化メソッド

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

参照
  Inverse()

## ◆ IsRegular()

bool FK_CLI::fk_GenMatrix::IsRegular | ( | void |  | ) |

正則判定メソッド

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

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

参照
  Inverse(), GetInverse(), IsSingular()

## ◆ IsSingular()

bool FK_CLI::fk_GenMatrix::IsSingular | ( | void |  | ) |

特異判定メソッド

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

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

参照
  Inverse(), GetInverse(), IsRegular()

## プロパティ詳解

## ◆ default

double FK_CLI::fk_GenMatrix::default[int, int]

getset

成分プロパティ

各成分の設定や参照を行います。 1番目の引数が行番号、2番目の引数が列番号です。

    M[1,2] = 5.0;

## ◆ Degree

int FK_CLI::fk_GenMatrix::Degree

getset

次元数プロパティ

次元数の設定や参照を行います。

    int deg = M.Degree;
    M.Degree = 10;