Common Library  0.9.5
equation_inline.h ファイル

連立方程式用インライン・テンプレート関数 [詳解]

名前空間

 tadah_fussy
 作成者 tadah_fussy
 
 tadah_fussy::error_message
 エラー・メッセージ用名前空間
 
 tadah_fussy::math_lib
 数学関数用名前空間
 
 tadah_fussy::math_lib::solver
 連立方程式・最適化問題の解法用名前空間
 

関数

template<class MATRIX , class Solver >
void tadah_fussy::matrix_lib::Inverse (const MATRIX &mat, SquareMatrix< typename MATRIX::value_type > *inv, Solver solver)
 逆行列を求める [詳解]
 

変数

const std::string tadah_fussy::error_message::UNSOLVED_EQUATION = "unsolved equation"
 連立方程式が解けなかった場合 ( 不定・不能 ) のエラー・メッセージ
 

詳解

連立方程式用インライン・テンプレート関数

著者
tadah_fussy
日付
2015/11/15 コメント追加
2017/04/09 連立方程式計算関数の引数変更
2019/03/27 コメントの見直し
2019/04/04 VerifyLinearEquationSystem, VerifyLinearEquationSystem_Multi の追加と若干の修正、コメントの見直し
2019/04/07 Matrix::clone の廃止に伴う変更
2019/04/16 error_library.h の見直しに伴う変更。LinearEquationSystem の廃止。
2019/04/18 エラーメッセージの定数化。ConjugateGradientMethod の計算最適化と収束条件の見直し。
2019/04/24 解行列を解く・チェックする関数のエラー処理の修正
2019/04/27 全ての解法について関数オブジェクトの形式に変更
2021/03/14 名前空間の変更
2021/04/02 文字コードを UTF-8 に変更

関数詳解

◆ Inverse()

template<class MATRIX , class Solver >
void tadah_fussy::matrix_lib::Inverse ( const MATRIX &  mat,
SquareMatrix< typename MATRIX::value_type > *  inv,
Solver  solver 
)

逆行列を求める

内部で連立方程式を解いて逆行列を求めている。連立方程式の解法は選択が可能。 例えば、GaussianElimination を利用する場合は次のように記述する。

math_lib::matrix::Inverse( mat, &inv, GaussianElimination() );
  • inv が未定義の場合、assert を呼び出す
  • 連立方程式の計算処理の過程で例外 std::runtime_error が投げられる場合がある
覚え書き
mat が正則行列でない場合、理論上は処理途中で 例外 std::runtime_error が投げられる。 しかし、誤差により処理が継続される場合もあり、正しい結果が得られない可能性があることに注意。
引数
mat対象の行列
inv求めた逆行列を書き込む正方行列へのポインタ
solver連立方程式計算用ソルバ
戻り値
なし