Common Library  0.9.5
MatrixLib 名前空間

行列・ベクトル用ヘルパ関数 [詳解]

関数

template<class MATRIX >
bool IsSquare (const MATRIX &mat)
 正方行列かどうかをチェックする [詳解]
 
template<class MATRIX , class Eq >
bool IsSymmetric (const MATRIX &mat, Eq eq)
 対称行列かどうかをチェックする [詳解]
 
template<class MATRIX1 , class MATRIX2 , typename Res >
void mult (const MATRIX1 &mat1, const MATRIX2 &mat2, Matrix< Res > *res)
 行列を掛け合わせる [詳解]
 
template<class MATRIX1 , class MATRIX2 , typename Res >
void mult (const MATRIX1 &mat1, const MATRIX2 &mat2, SquareMatrix< Res > *res)
 行列を掛け合わせる [詳解]
 
template<class MATRIX , class In , class Out >
void multMV (const MATRIX &mat, In is, Out os)
 行列に(列)ベクトルを掛け合わせる [詳解]
 
template<class In , class MATRIX , class Out >
void multVM (In is, const MATRIX &mat, Out os)
 (行)ベクトルに行列を掛け合わせる [詳解]
 
template<class T >
void SwapRow (Matrix< T > *mat, typename Matrix< T >::size_type r1, typename Matrix< T >::size_type r2)
 行列の行 r1, r2 を入れ替える [詳解]
 
template<class T >
void SwapRow (SquareMatrix< T > *mat, typename SquareMatrix< T >::size_type r1, typename SquareMatrix< T >::size_type r2)
 正方行列の行 r1, r2 を入れ替える [詳解]
 
template<class T >
void SwapCol (Matrix< T > *mat, typename Matrix< T >::size_type c1, typename Matrix< T >::size_type c2)
 行列の列 c1, c2 を入れ替える [詳解]
 
template<class T >
void SwapCol (SquareMatrix< T > *mat, typename SquareMatrix< T >::size_type c1, typename SquareMatrix< T >::size_type c2)
 正方行列の列 c1, c2 を入れ替える [詳解]
 
template<class In >
void PrintArray (std::ostream &os, In s, In e, const std::string &header="", const std::string &op_bracket="( ", const std::string &delimiter=", ", const std::string &cls_bracket=" )")
 配列の出力 [詳解]
 
template<class MATRIX >
void PrintMatrix (std::ostream &os, const MATRIX &mat, const std::string &header="", const std::string &op_bracket="| ", const std::string &delimiter=", ", const std::string &cls_bracket=" |")
 正方行列・対称行列の出力 [詳解]
 

詳解

行列・ベクトル用ヘルパ関数

関数詳解

◆ IsSquare()

template<class MATRIX >
bool MatrixLib::IsSquare ( const MATRIX &  mat)

正方行列かどうかをチェックする

覚え書き
行列のサイズがどちらもゼロなら true を返す。
引数
mat対象の行列
戻り値
正方行列なら true を返す

◆ IsSymmetric()

template<class MATRIX , class Eq >
bool MatrixLib::IsSymmetric ( const MATRIX &  mat,
Eq  eq 
)

対称行列かどうかをチェックする

覚え書き
行列のサイズがどちらもゼロなら true を返す。
引数
mat対象の行列
eq要素が等しいかを判定するための叙述関数
戻り値
対称行列なら true を返す

◆ mult() [1/2]

template<class MATRIX1 , class MATRIX2 , typename Res >
void MatrixLib::mult ( const MATRIX1 &  mat1,
const MATRIX2 &  mat2,
Matrix< Res > *  res 
)

行列を掛け合わせる

掛け合わせる二つの行列は一般行列(Matrix)の他、正方行列(SquareMatrix) や対称行列(SymmetricMatrix)も対象とすることができるが、 結果を保持する行列へのポインタは一般行列のみとする。

  • mat1 の列数と mat2 の行数が異なる場合、ExceptionNotEqualLength< MATRIX1::size_type > 例外を投げる。
  • 結果を保持する行列へのポインタ res が未定義の場合は assert を実行する。
引数
mat1対象行列1への参照
mat2対象行列2への参照
res結果を保持する行列へのポインタ

◆ mult() [2/2]

template<class MATRIX1 , class MATRIX2 , typename Res >
void MatrixLib::mult ( const MATRIX1 &  mat1,
const MATRIX2 &  mat2,
SquareMatrix< Res > *  res 
)

行列を掛け合わせる

掛け合わせる二つの行列は一般行列(Matrix)の他、正方行列(SquareMatrix) や対称行列(SymmetricMatrix)も対象とすることができるが、 結果を保持する行列へのポインタは正方行列のみとする。

  • mat1 の列数と mat2 の行数が異なる場合、ExceptionNotEqualLength< MATRIX1::size_type > 例外を投げる。
  • mat1 の行数と mat2 の列数が異なる場合、ExceptionNotEqualLength< MATRIX2::size_type > 例外を投げる。
  • 結果を保持する行列へのポインタ res が未定義の場合は assert を実行する。
引数
mat1対象行列1への参照
mat2対象行列2への参照
res結果を保持する正方行列へのポインタ

◆ multMV()

template<class MATRIX , class In , class Out >
void MatrixLib::multMV ( const MATRIX &  mat,
In  is,
Out  os 
)

行列に(列)ベクトルを掛け合わせる

行列は一般行列(Matrix)の他、正方行列(SquareMatrix)や対称行列(SymmetricMatrix)も対象とすることができる。 また、ベクトルは開始位置 is (os) のみで表すものとする。

覚え書き
ベクトルの長さが正しいかのチェックは行っていないことに注意。
引数
mat対象行列への参照
is掛け合わせる列ベクトルの先頭位置
os結果を保持するベクトルの先頭位置

◆ multVM()

template<class In , class MATRIX , class Out >
void MatrixLib::multVM ( In  is,
const MATRIX &  mat,
Out  os 
)

(行)ベクトルに行列を掛け合わせる

行列は一般行列(Matrix)の他、正方行列(SquareMatrix)や対称行列(SymmetricMatrix)も対象とすることができる。 また、ベクトルは開始位置 is (os) のみで表すものとする。

覚え書き
ベクトルの長さが正しいかのチェックは行っていないことに注意。
引数
is行ベクトルの先頭位置
mat掛け合わせる行列への参照
os結果を保持するベクトルの先頭位置

◆ SwapRow() [1/2]

template<class T >
void MatrixLib::SwapRow ( Matrix< T > *  mat,
typename Matrix< T >::size_type  r1,
typename Matrix< T >::size_type  r2 
)

行列の行 r1, r2 を入れ替える

覚え書き
行番号のチェックは行わないことに注意
引数
mat対象の行列へのポインタ
r1,r2入れ替え対象の行番号
戻り値
なし

◆ SwapRow() [2/2]

template<class T >
void MatrixLib::SwapRow ( SquareMatrix< T > *  mat,
typename SquareMatrix< T >::size_type  r1,
typename SquareMatrix< T >::size_type  r2 
)

正方行列の行 r1, r2 を入れ替える

覚え書き
行番号のチェックは行わないことに注意
引数
mat対象の正方行列へのポインタ
r1,r2入れ替え対象の行番号
戻り値
なし

◆ SwapCol() [1/2]

template<class T >
void MatrixLib::SwapCol ( Matrix< T > *  mat,
typename Matrix< T >::size_type  c1,
typename Matrix< T >::size_type  c2 
)

行列の列 c1, c2 を入れ替える

覚え書き
列番号のチェックは行わないことに注意
引数
mat対象の行列へのポインタ
c1,c2入れ替え対象の列番号
戻り値
なし

◆ SwapCol() [2/2]

template<class T >
void MatrixLib::SwapCol ( SquareMatrix< T > *  mat,
typename SquareMatrix< T >::size_type  c1,
typename SquareMatrix< T >::size_type  c2 
)

正方行列の列 c1, c2 を入れ替える

覚え書き
列番号のチェックは行わないことに注意
引数
mat対象の正方行列へのポインタ
c1,c2入れ替え対象の列番号
戻り値
なし

◆ PrintArray()

template<class In >
void MatrixLib::PrintArray ( std::ostream &  os,
In  s,
In  e,
const std::string &  header = "",
const std::string &  op_bracket = "( ",
const std::string &  delimiter = ", ",
const std::string &  cls_bracket = " )" 
)

配列の出力

引数
os出力対象のストリーム
s配列の開始位置
e配列の末尾の次の位置
header出力前に付けるヘッダ
op_bracket配列の先頭に付ける括弧
delimiter配列の各要素を分けるデリミタ
cls_bracket配列の末尾に付ける括弧

◆ PrintMatrix()

template<class MATRIX >
void MatrixLib::PrintMatrix ( std::ostream &  os,
const MATRIX &  mat,
const std::string &  header = "",
const std::string &  op_bracket = "| ",
const std::string &  delimiter = ", ",
const std::string &  cls_bracket = " |" 
)

正方行列・対称行列の出力

引数
os出力対象のストリーム
mat出力する行列
header行列の先頭に付けるヘッダ
op_bracket各行ベクトルの先頭に付ける括弧
delimiter行列の各要素を分けるデリミタ
cls_bracket各行ベクトルの末尾に付ける括弧