Common Library  0.9.5
matrix_inline.h ファイル

行列用インライン関数 [詳解]

名前空間

 tadah_fussy
 作成者 tadah_fussy
 
 tadah_fussy::error_lib
 エラーチェック・処理ルーチン用名前空間
 
 tadah_fussy::indexer
 添字演算子用名前空間
 
 tadah_fussy::error_message
 エラー・メッセージ用名前空間
 

関数

template<class MATRIX1 , class MATRIX2 >
void tadah_fussy::error_lib::CheckMultMatrix (const MATRIX1 &mat1, const MATRIX2 &mat2, const std::string &info)
 行列どうしの乗算が可能かチェックする [詳解]
 
template<class MATRIX1 , class MATRIX2 >
void tadah_fussy::error_lib::CheckMultMatrix (const MATRIX1 &mat1, const MATRIX2 &mat2)
 行列どうしの乗算が可能かチェックする [詳解]
 
template<class MATRIX , class In >
void tadah_fussy::error_lib::CheckMultMV (const MATRIX &mat, In s, In e, const std::string &infoNegativeLength, const std::string &infoNotEqualLength)
 行列への列ベクトルの乗算が可能かチェックする [詳解]
 
template<class MATRIX , class In >
void tadah_fussy::error_lib::CheckMultMV (const MATRIX &mat, In s, In e)
 行列への列ベクトルの乗算が可能かチェックする [詳解]
 
template<class In , class MATRIX >
void tadah_fussy::error_lib::CheckMultVM (const In s, In e, MATRIX &mat, const std::string &infoNegativeLength, const std::string &infoNotEqualLength)
 行ベクトルへの行列の乗算が可能かチェックする [詳解]
 
template<class In , class MATRIX >
void tadah_fussy::error_lib::CheckMultVM (In s, In e, const MATRIX &mat)
 行ベクトルへの行列の乗算が可能かチェックする [詳解]
 
template<class MATRIX >
bool tadah_fussy::matrix_lib::IsSquare (const MATRIX &mat)
 正方行列かどうかをチェックする [詳解]
 
template<class MATRIX , class Eq >
bool tadah_fussy::matrix_lib::IsSymmetric (const MATRIX &mat, Eq eq)
 対称行列かどうかをチェックする [詳解]
 
template<class MATRIX1 , class MATRIX2 , typename Res >
void tadah_fussy::matrix_lib::mult (const MATRIX1 &mat1, const MATRIX2 &mat2, Matrix< Res > *res)
 行列を掛け合わせる [詳解]
 
template<class MATRIX1 , class MATRIX2 , typename Res >
void tadah_fussy::matrix_lib::mult (const MATRIX1 &mat1, const MATRIX2 &mat2, SquareMatrix< Res > *res)
 行列を掛け合わせる [詳解]
 
template<class MATRIX , class In , class Out >
void tadah_fussy::matrix_lib::multMV (const MATRIX &mat, In is, Out os)
 行列に(列)ベクトルを掛け合わせる [詳解]
 
template<class In , class MATRIX , class Out >
void tadah_fussy::matrix_lib::multVM (In is, const MATRIX &mat, Out os)
 (行)ベクトルに行列を掛け合わせる [詳解]
 
template<class T >
void tadah_fussy::matrix_lib::SwapRow (Matrix< T > *mat, typename Matrix< T >::size_type r1, typename Matrix< T >::size_type r2)
 行列の行 r1, r2 を入れ替える [詳解]
 
template<class T >
void tadah_fussy::matrix_lib::SwapRow (SquareMatrix< T > *mat, typename SquareMatrix< T >::size_type r1, typename SquareMatrix< T >::size_type r2)
 正方行列の行 r1, r2 を入れ替える [詳解]
 
template<class T >
void tadah_fussy::matrix_lib::SwapCol (Matrix< T > *mat, typename Matrix< T >::size_type c1, typename Matrix< T >::size_type c2)
 行列の列 c1, c2 を入れ替える [詳解]
 
template<class T >
void tadah_fussy::matrix_lib::SwapCol (SquareMatrix< T > *mat, typename SquareMatrix< T >::size_type c1, typename SquareMatrix< T >::size_type c2)
 正方行列の列 c1, c2 を入れ替える [詳解]
 
template<class In >
void tadah_fussy::matrix_lib::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 tadah_fussy::matrix_lib::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=" |")
 正方行列・対称行列の出力 [詳解]
 
template<class T >
std::ostream & tadah_fussy::operator<< (std::ostream &os, const Matrix< T > &mat)
 ストリーム出力(行列) [詳解]
 
template<class T >
std::ostream & tadah_fussy::operator<< (std::ostream &os, const SquareMatrix< T > &mat)
 ストリーム出力(正方行列) [詳解]
 
template<class T >
std::ostream & tadah_fussy::operator<< (std::ostream &os, const SymmetricMatrix< T > &mat)
 ストリーム出力(対称行列) [詳解]
 
template<class MATRIX , class In >
void tadah_fussy::error_lib::CheckLinearModel (const MATRIX &x, In ys, In ye, const std::string &infoNotPositiveLength, const std::string &infoNegativeLength, const std::string &infoNotEqualLength)
 線形モデルとして有効かをチェックする [詳解]
 
template<class MATRIX , class In >
void tadah_fussy::error_lib::CheckLinearModel (const MATRIX &x, In ys, In ye)
 線形モデルとして有効かをチェックする [詳解]
 
template<class MATRIX1 , class MATRIX2 >
void tadah_fussy::error_lib::CheckLinearModel (const MATRIX1 &x, const MATRIX2 &y, const std::string &infoNotPositiveLength1, const std::string &infoNotPositiveLength2, const std::string &infoNotEqualLength)
 線形モデルとして有効かをチェックする [詳解]
 
template<class MATRIX1 , class MATRIX2 >
void tadah_fussy::error_lib::CheckLinearModel (const MATRIX1 &x, const MATRIX2 &y)
 線形モデルとして有効かをチェックする [詳解]
 

変数

const std::string tadah_fussy::error_message::NOT_POSITIVE_LENGTH = "must be positive length"
 データ列の長さがゼロ以下であった場合のエラー・メッセージ
 

詳解

行列用インライン関数

著者
tadah_fussy
日付
2016/01/14 コメント追加
2019/03/29 コメントの見直し
2019/04/08
  • コピー・コンストラクタ、代入演算子の見直し
  • assign( In s, In e, size_type sz, bool inRows ) において、 行列数をゼロとしてした場合は空の行列を生成する(例外は投げない)ように変更
2019/04/18 mult/multMV/multVM のバグ修正(自己参照時の対応がされていなかった)
2019/04/24 CheckMultMatrix/CheckMultMV/CheckMultVM の追加
2021/03/13 名前空間の変更
2021/04/02 文字コードを UTF-8 に変更

関数詳解

◆ IsSquare()

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

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

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

◆ IsSymmetric()

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

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

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

◆ mult() [1/2]

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

行列を掛け合わせる

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

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

◆ mult() [2/2]

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

行列を掛け合わせる

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

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

◆ multMV()

template<class MATRIX , class In , class Out >
void tadah_fussy::matrix_lib::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 tadah_fussy::matrix_lib::multVM ( In  is,
const MATRIX &  mat,
Out  os 
)

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

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

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

◆ SwapRow() [1/2]

template<class T >
void tadah_fussy::matrix_lib::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 tadah_fussy::matrix_lib::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 tadah_fussy::matrix_lib::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 tadah_fussy::matrix_lib::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 tadah_fussy::matrix_lib::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 tadah_fussy::matrix_lib::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各行ベクトルの末尾に付ける括弧