FineKernelToolKit 3.1.0

- 総合概要
- 名前空間
- クラス
- ファイル

- クラス一覧
- クラス階層
- クラスメンバ

公開メンバ関数 | 静的公開メンバ関数 | プロパティ | 全メンバ一覧
FK_CLI::fk_GenVector クラス

任意次元ベクトルを管理するクラス [詳解]

FK_CLI::fk_GenVector 連携図
[凡例]

## 公開メンバ関数
| fk_GenVector ()
| コンストラクタ1 [詳解]
| fk_GenVector (int deg)
| コンストラクタ2 [詳解]
| fk_GenVector (IEnumerable< double >^array)
| コンストラクタ3 [詳解]
| fk_GenVector (fk_Vector^ V)
| fk_Vector からのコピーコンストラクタ [詳解]
| fk_GenVector (fk_HVector^ H)
| fk_HVector からのコピーコンストラクタ [詳解]
| fk_GenVector (fk_GenVector^ GV)
| コピーコンストラクタ [詳解]
| ~fk_GenVector ()
| デストラクタ [詳解]
| !fk_GenVector ()
| ファイナライザ [詳解]
bool | Equals (fk_GenVector^ V)
| 同値比較メソッド1 [詳解]
virtual bool | Equals (Object^ O) override
| 同値比較メソッド2 [詳解]
String^ | ToString () override
| 文字列出力メソッド [詳解]
bool | Normalize (void)
| 正規化メソッド [詳解]
void | Init (bool degFlg)
| 初期化メソッド1 [詳解]
void | Init (void)
| 初期化メソッド2 [詳解]
bool | IsZero (void)
| 零ベクトル判定メソッド [詳解]
bool | Replace (int s, fk_GenVector^ Q)
| 部分置換メソッド1 [詳解]
bool | Replace (int s, fk_Vector^ Q)
| 部分置換メソッド2 [詳解]
bool | Replace (int s, fk_HVector^ Q)
| 部分置換メソッド3 [詳解]
bool | Add (int s, fk_GenVector^ Q)
| 部分加算メソッド1 [詳解]
bool | Add (int s, fk_Vector^ Q)
| 部分加算メソッド2 [詳解]
bool | Add (int s, fk_HVector^ Q)
| 部分加算メソッド3 [詳解]
bool | Sub (int s, fk_GenVector^ Q)
| 部分減算メソッド1 [詳解]
bool | Sub (int s, fk_Vector^ Q)
| 部分減算メソッド2 [詳解]
bool | Sub (int s, fk_HVector^ Q)
| 部分減算メソッド3 [詳解]
fk_GenVector^ | Div (int s, int e)
| 部分抽出メソッド [詳解]

## 静的公開メンバ関数
static fk_GenVector^ | operator- (fk_GenVector^ argV)
| 単項マイナス演算子 [詳解]
static double | operator* (fk_GenVector^ P, fk_GenVector^ Q)
| 内積二項演算子 [詳解]
static fk_GenVector^ | operator+ (fk_GenVector^ P, fk_GenVector^ Q)
| ベクトル和二項演算子 [詳解]
static fk_GenVector^ | operator- (fk_GenVector^ P, fk_GenVector^ Q)
| ベクトル差二項演算子 [詳解]
static fk_GenVector^ | operator* (fk_GenVector^ V1, double d)
| 実数倍二項演算子1 [詳解]
static fk_GenVector^ | operator* (double d, fk_GenVector^ V1)
| 実数倍二項演算子2 [詳解]
static fk_GenVector^ | operator/ (fk_GenVector^ V1, double d)
| 実数商二項演算子 [詳解]
static fk_GenVector^ | operator^ (fk_GenVector^ P, fk_GenVector^ Q)
| 外積二項演算子 [詳解]
static void | operator*= (fk_GenVector^ V, double d)
| 実数積演算子 [詳解]
static void | operator/= (fk_GenVector^ V, double d)
| 実数商代入演算子 [詳解]
static void | operator+= (fk_GenVector^ V1, fk_GenVector^ V2)
| 単項和代入演算子 [詳解]
static void | operator-= (fk_GenVector^ V1, fk_GenVector^ V2)
| 単項差代入演算子 [詳解]

## プロパティ
double | default[int]`[get, set]`
| 成分プロパティ [詳解]
int | Size`[get, set]`
| 次元数プロパティ [詳解]
double | Norm`[get]`
| ノルムプロパティ [詳解]
double | Norm2`[get]`
| ノルム2乗プロパティ [詳解]

## 詳解

任意次元ベクトルを管理するクラス

このクラスは、任意次元ベクトルの様々な機能を提供します。 このクラス単体でも、線形空間におけるベクトルの様々な演算を利用することができます。 最も重要な機能は、 fk_GenMatrix クラスと合わせた行列演算による連立方程式の計算です。 4元以下の行列演算については、 fk_Matrix を利用した方が高速です。

参照
  fk_GenMatrix, fk_Vector, fk_HVector, fk_Matrix

## 構築子と解体子

FK_CLI::fk_GenVector::fk_GenVector | ( |  | ) |

コンストラクタ1

次元数が 0 である (つまり成分のない)ベクトルを生成します。

FK_CLI::fk_GenVector::fk_GenVector | ( | int | deg | ) |

コンストラクタ2

次元数のみを指定するコンストラクタです。 全ての成分に 0 が設定されます。

引数

  [in] | deg | 次元数

FK_CLI::fk_GenVector::fk_GenVector | ( | IEnumerable< double >^ | array | ) |

コンストラクタ3

このコンストラクタでは、 引数として double 型配列 (array) を入力とします。

引数

  [in] | array | 成分値配列

FK_CLI::fk_GenVector::fk_GenVector | ( | fk_Vector^ | V | ) |

fk_Vector からのコピーコンストラクタ

FK_CLI::fk_GenVector::fk_GenVector | ( | fk_HVector^ | H | ) |

fk_HVector からのコピーコンストラクタ

FK_CLI::fk_GenVector::fk_GenVector | ( | fk_GenVector^ | GV | ) |

コピーコンストラクタ

FK_CLI::fk_GenVector::~fk_GenVector | ( |  | ) |

デストラクタ

FK_CLI::fk_GenVector::!fk_GenVector | ( |  | ) |

ファイナライザ

## 関数詳解

bool FK_CLI::fk_GenVector::Equals | ( | fk_GenVector^ | V | ) |

同値比較メソッド1

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

引数

  [in] | V | 同値かどうかを判定するベクトル

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

virtual bool FK_CLI::fk_GenVector::Equals | ( | Object^ | O | ) |
| override virtual

同値比較メソッド2

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

引数

  [in] | O | 同値かどうかを判定するベクトル

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

static fk_GenVector ^ FK_CLI::fk_GenVector::operator- | ( | fk_GenVector^ | argV | ) |
| static

単項マイナス演算子

fk_GenVector では、以下のように記述することで、v2 に -v1 を代入できます。 全ての成分の符号が反転します。 v2 の次元数は v1 と同じに設定されます。

    v2 = -v1;

static double FK_CLI::fk_GenVector::operator* | ( | fk_GenVector^ | P,
|  | fk_GenVector^ | Q
| ) |  |
| static

内積二項演算子

fk_GenVector 型の n 次元ベクトル と の内積値(スカラー積)は、以下のように定義されます。

これを得るには、以下のように記述します。d は double 型の変数です。

    d = P * Q;

P と Q の次元数が異なる場合は、無条件に 0.0 を返します。 なお、内積演算は交換法則が成り立ちます。

static fk_GenVector ^ FK_CLI::fk_GenVector::operator+ | ( | fk_GenVector^ | P,
|  | fk_GenVector^ | Q
| ) |  |
| static

ベクトル和二項演算子

ベクトル P と Q の和を得るには、以下のように記述します。 P, Q, R はいずれも fk_GenVector 型の変数です。

    R = P + Q;

P と Q の次元数が異なる場合は、次元数 0 のベクトルを返します。 なお、和演算は交換法則が成り立ちます。

static fk_GenVector ^ FK_CLI::fk_GenVector::operator- | ( | fk_GenVector^ | P,
|  | fk_GenVector^ | Q
| ) |  |
| static

ベクトル差二項演算子

ベクトル P と Q の差を得るには、以下のように記述します。 P, Q, R はいずれも fk_GenVector 型の変数です。

    R = P - Q;

P と Q の次元数が異なる場合は、次元数 0 のベクトルを返します。 なお、差演算は交換法則は成り立ちません。

static fk_GenVector ^ FK_CLI::fk_GenVector::operator* | ( | fk_GenVector^ | V1,
|  | double | d
| ) |  |
| static

実数倍二項演算子1

ベクトル V1 のスカラー倍ベクトルを得るには、以下のように記述します。 V1, V2 は共に fk_GenVector 型の変数で、d は double 型の変数です。

    V2 = V1 * d;

なお、ベクトルと実数の順番は逆でも構いません。

static fk_GenVector ^ FK_CLI::fk_GenVector::operator* | ( | double | d,
|  | fk_GenVector^ | V1
| ) |  |
| static

実数倍二項演算子2

ベクトル V1 のスカラー倍ベクトルを得るには、以下のように記述します。 V1, V2 は共に fk_GenVector 型の変数で、d は double 型の変数です。

    V2 = d * V1;

なお、ベクトルと実数の順番は逆でも構いません。

static fk_GenVector ^ FK_CLI::fk_GenVector::operator/ | ( | fk_GenVector^ | V1,
|  | double | d
| ) |  |
| static

実数商二項演算子

ベクトル V1 のスカラー商ベクトルを得るには、以下のように記述します。 V1, V2 は共に fk_GenVector 型の変数で、d は double 型の変数です。

    V2 = V1/d;

static fk_GenVector ^ FK_CLI::fk_GenVector::operator^ | ( | fk_GenVector^ | P,
|  | fk_GenVector^ | Q
| ) |  |
| static

外積二項演算子

n次元ベクトル と の外積ベクトル(ベクトル積)は、以下のように定義されます。

これを得るには、以下のように記述します。 P,Q,R はいずれも fk_Vector 型の変数です。

    R = P ^ Q;

P と Q の次元数が異なる場合は、次元数 0 のベクトルを返します。

static void FK_CLI::fk_GenVector::operator*= | ( | fk_GenVector^ | V,
|  | double | d
| ) |  |
| static

実数積演算子

以下のコードは、ベクトル V の成分全てを d 倍します。 V は fk_GenVector 型の変数、d は double 型の変数です。

    V *= d;

d は変数でなく数値でも構いません。

    V *= 2.0;

static void FK_CLI::fk_GenVector::operator/= | ( | fk_GenVector^ | V,
|  | double | d
| ) |  |
| static

実数商代入演算子

以下のコードは、ベクトル V の成分全てを 1/d 倍します。 V は fk_GenVector 型の変数、d は double 型の変数です。

    V /= d;

d は変数でなく数値でも構いません。

    V /= 2.0;

なお、d が 0 であった場合は V の値を変更しません。

static void FK_CLI::fk_GenVector::operator+= | ( | fk_GenVector^ | V1,
|  | fk_GenVector^ | V2
| ) |  |
| static

単項和代入演算子

以下のコードは、V1 に V2 を追加します。 V1、V2 はいずれも fk_GenVector 型の変数です。

    V1 += V2;

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

    V1 = V1 + V2;

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

static void FK_CLI::fk_GenVector::operator-= | ( | fk_GenVector^ | V1,
|  | fk_GenVector^ | V2
| ) |  |
| static

単項差代入演算子

以下のコードは、V1 から V2 を引きます。 V1、V2 はいずれも fk_Vector 型の変数です。

    V1 -= V2;

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

    V1 = V1 - V2;

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

String ^ FK_CLI::fk_GenVector::ToString | ( |  | ) |
| override

文字列出力メソッド

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

戻り値
  成分値の文字列

bool FK_CLI::fk_GenVector::Normalize | ( | void |  | ) |

正規化メソッド

ベクトルの正規化を行います。 正規化とは、ベクトル に対し、 以下の演算で を求めることです。

戻り値
  成功した場合 true を、失敗した場合 false を返します。 「失敗」は、元のベクトルが零ベクトルであるか、 次元数が 0 の場合に起こります。

参照
  Norm, Norm2

void FK_CLI::fk_GenVector::Init | ( | bool | degFlg | ) |

初期化メソッド1

ベクトルの成分を全て 0 にします。

引数

  [in] | degFlg | true の場合は、次元数を 0 に設定します。 false の場合は、次元数は変化せず、全ての成分を 0 にします。

void FK_CLI::fk_GenVector::Init | ( | void |  | ) |

初期化メソッド2

ベクトルの成分を全て 0 にします。 次元数は変化しません。

bool FK_CLI::fk_GenVector::IsZero | ( | void |  | ) |

零ベクトル判定メソッド

ベクトルが零ベクトルであるかどうかを判定します。

戻り値
  零ベクトルである場合 true を、そうでない場合 false を返します。 次元数が 0 である場合は true を返します。

bool FK_CLI::fk_GenVector::Replace | ( | int | s,
|  | fk_GenVector^ | Q
| ) |  |

部分置換メソッド1

現在の変数が表す n 次元のベクトル

と、引数として与えられる m 次元ベクトル

について、 の m 個の成分

を の各成分に置き換えます。 条件として、 かつ を満たしている必要があります。

引数

  [in] | s | 置換する最初の成分 ID
  [in] | Q | 置換ベクトル

戻り値
  置換に成功した場合 true を、失敗した場合 false を返します。

bool FK_CLI::fk_GenVector::Replace | ( | int | s,
|  | fk_Vector^ | Q
| ) |  |

部分置換メソッド2

現在の変数が表す n 次元のベクトル

と、引数として与えられる 3 次元ベクトル

について、 の 3 個の成分

を の各成分に置き換えます。 条件として、 かつ を満たしている必要があります。

引数

  [in] | s | 置換する最初の成分 ID
  [in] | Q | 置換ベクトル

戻り値
  置換に成功した場合 true を、失敗した場合 false を返します。

bool FK_CLI::fk_GenVector::Replace | ( | int | s,
|  | fk_HVector^ | Q
| ) |  |

部分置換メソッド3

現在の変数が表す n 次元のベクトル

と、引数として与えられる 4 次元ベクトル

について、 の 4 個の成分

を の各成分に置き換えます。 条件として、 かつ を満たしている必要があります。

引数

  [in] | s | 置換する最初の成分 ID
  [in] | Q | 置換ベクトル

戻り値
  置換に成功した場合 true を、失敗した場合 false を返します。

bool FK_CLI::fk_GenVector::Add | ( | int | s,
|  | fk_GenVector^ | Q
| ) |  |

部分加算メソッド1

現在の変数が表す n 次元のベクトル

と、引数として与えられる m 次元ベクトル

について、 の m 個の成分

に対して の各成分の値を加算します。 条件として、 かつ を満たしている必要があります。

引数

  [in] | s | 加算する最初の成分 ID
  [in] | Q | 加算ベクトル

戻り値
  加算に成功した場合 true を、失敗した場合 false を返します。

bool FK_CLI::fk_GenVector::Add | ( | int | s,
|  | fk_Vector^ | Q
| ) |  |

部分加算メソッド2

現在の変数が表す n 次元のベクトル

と、引数として与えられる 3 次元ベクトル

について、 の 3 個の成分

に対して の各成分の値を加算します。 条件として、 かつ を満たしている必要があります。

引数

  [in] | s | 加算する最初の成分 ID
  [in] | Q | 加算ベクトル

戻り値
  加算に成功した場合 true を、失敗した場合 false を返します。

bool FK_CLI::fk_GenVector::Add | ( | int | s,
|  | fk_HVector^ | Q
| ) |  |

部分加算メソッド3

現在の変数が表す n 次元のベクトル

と、引数として与えられる 4 次元ベクトル

について、 の 4 個の成分

に対して の各成分の値を加算します。 条件として、 かつ を満たしている必要があります。

引数

  [in] | s | 加算する最初の成分 ID
  [in] | Q | 加算ベクトル

戻り値
  加算に成功した場合 true を、失敗した場合 false を返します。

bool FK_CLI::fk_GenVector::Sub | ( | int | s,
|  | fk_GenVector^ | Q
| ) |  |

部分減算メソッド1

現在の変数が表す n 次元のベクトル

と、引数として与えられる m 次元ベクトル

について、 の m 個の成分

に対して の各成分の値を減算します。 条件として、 かつ を満たしている必要があります。

引数

  [in] | s | 減算する最初の成分 ID
  [in] | Q | 減算ベクトル

戻り値
  減算に成功した場合 true を、失敗した場合 false を返します。

bool FK_CLI::fk_GenVector::Sub | ( | int | s,
|  | fk_Vector^ | Q
| ) |  |

部分減算メソッド2

現在の変数が表す n 次元のベクトル

と、引数として与えられる 3 次元ベクトル

について、 の 3 個の成分

に対して の各成分の値を加算します。 条件として、 かつ を満たしている必要があります。

引数

  [in] | s | 減算する最初の成分 ID
  [in] | Q | 減算ベクトル

戻り値
  減算に成功した場合 true を、失敗した場合 false を返します。

bool FK_CLI::fk_GenVector::Sub | ( | int | s,
|  | fk_HVector^ | Q
| ) |  |

部分減算メソッド3

現在の変数が表す n 次元のベクトル

と、引数として与えられる 4 次元ベクトル

について、 の 4 個の成分

に対して の各成分の値を加算します。 条件として、 かつ を満たしている必要があります。

引数

  [in] | s | 減算する最初の成分 ID
  [in] | Q | 減算ベクトル

戻り値
  減算に成功した場合 true を、失敗した場合 false を返します。

fk_GenVector ^ FK_CLI::fk_GenVector::Div | ( | int | s,
|  | int | e
| ) |  |

部分抽出メソッド

ID が s から e までの成分値を持つ部分ベクトルを抽出します。 条件として、 である必要があります。n は元ベクトルの次元数です。

引数

  [in] | s | 抽出開始成分 ID
  [in] | e | 抽出終了成分 ID

戻り値
  部分ベクトル。引数が条件を満たさなかった場合は、 次元数が 0 のベクトルを返します。

## プロパティ詳解

double FK_CLI::fk_GenVector::default[int]
| get set

成分プロパティ

各成分の設定や参照を行います。

    V[0] = 5.0;

int FK_CLI::fk_GenVector::Size
| get set

次元数プロパティ

次元数 (成分の個数) の設定や参照を行います。

    int deg = V.size;
    V.size = 10;

double FK_CLI::fk_GenVector::Norm
| get

ノルムプロパティ

現在のベクトルのノルム(長さ)を取得します。 これは、ベクトル に対し、

の値となります。

参照
  Normalize()

double FK_CLI::fk_GenVector::Norm2
| get

ノルム2乗プロパティ

現在のベクトルのノルム(長さ)の2乗を取得します。 これは、ベクトル に対し、

の値となります。

参照
  Normalize()