CommonLibrary  0.9.5
LinearEquationSystem< T > クラステンプレート

連立一次方程式 [詳解]

公開型

typedef T value_type
 係数や解の型
 
typedef SquareMatrix< T >::size_type size_type
 係数行列のサイズに対する型
 
typedef SquareMatrix< T >::iterator iterator
 係数行列への反復子の型(行方向のみ利用可能)
 
typedef SquareMatrix< T >::const_iterator const_iterator
 係数行列への定数反復子の型(行方向のみ利用可能)
 

公開メンバ関数

 LinearEquationSystem (size_type sz=0)
 デフォルト・コンストラクタ [詳解]
 
template<class MATRIX , class In >
 LinearEquationSystem (const MATRIX &coef, In s, In e)
 係数行列と解ベクトルからのコピー [詳解]
 
 LinearEquationSystem (const SquareMatrix< T > &coef)
 係数行列からのコピー [詳解]
 
 LinearEquationSystem (const SymmetricMatrix< T > &coef)
 係数行列からのコピー [詳解]
 
 LinearEquationSystem (const LinearEquationSystem< T > &les)
 コピー・コンストラクタ [詳解]
 
template<class MATRIX , class In >
void init (const MATRIX &coef, In s, In e)
 係数行列と解ベクトルの初期化 [詳解]
 
size_type size () const
 未知数の数(=方程式の数)を返す [詳解]
 
void resize (size_type sz, value_type val=value_type())
 未知数の数(=方程式の数)を変更する [詳解]
 
void swapEquation (size_type e1, size_type e2)
 方程式の入れ換え(係数行列の行と解の入れ替え) [詳解]
 
void swapCoef (size_type c1, size_type c2)
 係数の入れ換え(係数行列の列の入れ替え) [詳解]
 
void sub (size_type src, T val, size_type dest)
 指定した方程式を定数倍して他の方程式から引く [詳解]
 
void div (size_type r, T val)
 指定した方程式を定数で割る [詳解]
 
iterator operator[] (size_type r)
 指定した行番号の係数行列への反復子を返す [詳解]
 
const_iterator operator[] (size_type r) const
 指定した行番号の係数行列への定数反復子を返す [詳解]
 
value_typecoef (size_type r, size_type c)
 係数の値への参照を返す [詳解]
 
value_type coef (size_type r, size_type c) const
 係数の値を返す [詳解]
 
value_typeans (size_type i)
 解の値への参照を返す [詳解]
 
value_type ans (size_type i) const
 解の値を返す [詳解]
 
LinearEquationSystemoperator= (const LinearEquationSystem< T > &les)
 代入演算子の多重定義 [詳解]
 
void print (std::ostream &os) const
 連立方程式を出力する [詳解]
 
void printAns (std::ostream &os) const
 連立方程式の解のみを出力する [詳解]
 
void printCoef (std::ostream &os) const
 連立方程式の係数行列のみを出力する [詳解]
 

詳解

template<typename T>
class LinearEquationSystem< T >

連立一次方程式

連立方程式 Ax = y を定義するためのクラス。A は係数行列、x は未知数、y は解をそれぞれ表す。

todo:
連立方程式の解法プログラムではこのクラスは現在利用していない。将来的には廃止する予定。

構築子と解体子

◆ LinearEquationSystem() [1/5]

template<typename T >
LinearEquationSystem< T >::LinearEquationSystem ( size_type  sz = 0)
inlineexplicit

デフォルト・コンストラクタ

引数
sz方程式(未知数)の数

◆ LinearEquationSystem() [2/5]

template<typename T >
template<class MATRIX , class In >
LinearEquationSystem< T >::LinearEquationSystem ( const MATRIX &  coef,
In  s,
In  e 
)
inline

係数行列と解ベクトルからのコピー

係数行列は正方行列 ( SquareMatrix, SymmetricMatrix ) である必要がある。

  • 係数行列の要素数がゼロである場合、例外 ExceptionNotPositiveLength を投げる。
  • 解ベクトルの要素の範囲が適切でない(開始と終了が逆である)場合、例外 ExceptionNegativeLength を投げる。
  • 係数行列と解ベクトルのサイズが一致していない場合、例外 ExceptionNotEqualLength を投げる。
引数
coef対象の係数行列
s解ベクトルの開始位置
e解ベクトルの末尾の次の位置

◆ LinearEquationSystem() [3/5]

template<typename T >
LinearEquationSystem< T >::LinearEquationSystem ( const SquareMatrix< T > &  coef)
inlineexplicit

係数行列からのコピー

解ベクトルの内容は全て T() に初期化される。

引数
coef対象の係数行列

◆ LinearEquationSystem() [4/5]

template<typename T >
LinearEquationSystem< T >::LinearEquationSystem ( const SymmetricMatrix< T > &  coef)
inlineexplicit

係数行列からのコピー

解ベクトルの内容は全て T() に初期化される。

引数
coef対象の係数行列

◆ LinearEquationSystem() [5/5]

template<typename T >
LinearEquationSystem< T >::LinearEquationSystem ( const LinearEquationSystem< T > &  les)
inline

コピー・コンストラクタ

引数
lesコピー元のオブジェクト

関数詳解

◆ init()

template<typename T >
template<class MATRIX , class In >
void LinearEquationSystem< T >::init ( const MATRIX &  coef,
In  s,
In  e 
)

係数行列と解ベクトルの初期化

係数行列は正方行列 ( SquareMatrix, SymmetricMatrix ) である必要がある。

  • 係数行列の要素数がゼロである場合、例外 ExceptionNotPositiveLength を投げる。
  • 解ベクトルの要素の範囲が適切でない(開始と終了が逆である)場合、例外 ExceptionNegativeLength を投げる。
  • 係数行列と解ベクトルのサイズが一致していない場合、例外 ExceptionNotEqualLength を投げる。
引数
coef対象の係数行列
s解ベクトルの開始位置
e解ベクトルの末尾の次の位置

◆ size()

template<typename T >
size_type LinearEquationSystem< T >::size ( ) const
inline

未知数の数(=方程式の数)を返す

戻り値
未知数の数(=方程式の数)

◆ resize()

template<typename T >
void LinearEquationSystem< T >::resize ( size_type  sz,
value_type  val = value_type() 
)
inline

未知数の数(=方程式の数)を変更する

係数行列と解ベクトルの内容は全て T() に初期化される。

引数
sz未知数の数(=方程式の数)
val係数と解の初期値
戻り値
なし

◆ swapEquation()

template<typename T >
void LinearEquationSystem< T >::swapEquation ( size_type  e1,
size_type  e2 
)

方程式の入れ換え(係数行列の行と解の入れ替え)

式の入れ替えだけなので、連立方程式としては変化しない。

覚え書き
添字のチェックは行っていないことに注意。
引数
e1入れ替える対象の方程式1
e2入れ替える対象の方程式2
戻り値
なし

◆ swapCoef()

template<typename T >
void LinearEquationSystem< T >::swapCoef ( size_type  c1,
size_type  c2 
)

係数の入れ換え(係数行列の列の入れ替え)

係数の入れ替えなので未知数の位置が変化するが、その管理は行わない。 そのため、入れ替え時に外部で管理する必要がある。

覚え書き
添字のチェックは行っていないことに注意。
引数
c1入れ替える対象の係数1
c2入れ替える対象の係数2
戻り値
なし

◆ sub()

template<typename T >
void LinearEquationSystem< T >::sub ( size_type  src,
val,
size_type  dest 
)

指定した方程式を定数倍して他の方程式から引く

連立方程式としては変化しない。

覚え書き
添字のチェックは行っていないことに注意。
引数
src対象の方程式の添字
dest被演算対象の方程式の添字
val定数
戻り値
なし

◆ div()

template<typename T >
void LinearEquationSystem< T >::div ( size_type  r,
val 
)

指定した方程式を定数で割る

連立方程式としては変化しない。

覚え書き
添字のチェックは行っていないことに注意。
引数
r対象の方程式の添字
val定数
戻り値
自分自身

◆ operator[]() [1/2]

template<typename T >
iterator LinearEquationSystem< T >::operator[] ( size_type  r)
inline

指定した行番号の係数行列への反復子を返す

反復子を使って係数を変更した場合、変更前の連立方程式と同一である保証はなくなる。

覚え書き
添字のチェックは行っていないことに注意。
引数
r行番号
戻り値
指定した行番号の反復子

◆ operator[]() [2/2]

template<typename T >
const_iterator LinearEquationSystem< T >::operator[] ( size_type  r) const
inline

指定した行番号の係数行列への定数反復子を返す

覚え書き
添字のチェックは行っていないことに注意。
引数
r行番号
戻り値
指定した行番号の反復子

◆ coef() [1/2]

template<typename T >
value_type& LinearEquationSystem< T >::coef ( size_type  r,
size_type  c 
)
inline

係数の値への参照を返す

係数を変更した場合、変更前の連立方程式と同一である保証はなくなる。

覚え書き
添字のチェックは行っていないことに注意。
引数
r方程式の番号(行番号)
c未知数の番号(列番号)
戻り値
指定した位置の係数への参照

◆ coef() [2/2]

template<typename T >
value_type LinearEquationSystem< T >::coef ( size_type  r,
size_type  c 
) const
inline

係数の値を返す

覚え書き
添字のチェックは行っていないことに注意。
引数
r方程式の番号(行番号)
c未知数の番号(列番号)
戻り値
指定した位置の係数

◆ ans() [1/2]

template<typename T >
value_type& LinearEquationSystem< T >::ans ( size_type  i)
inline

解の値への参照を返す

覚え書き
添字のチェックは行っていないことに注意。

解を変更した場合、変更前の連立方程式と同一である保証はなくなる。

引数
i対象の解に対する添字
戻り値
i番目の解への参照

◆ ans() [2/2]

template<typename T >
value_type LinearEquationSystem< T >::ans ( size_type  i) const
inline

解の値を返す

覚え書き
添字のチェックは行っていないことに注意。
引数
i対象の解に対する添字
戻り値
i番目の解

◆ operator=()

template<typename T >
LinearEquationSystem& LinearEquationSystem< T >::operator= ( const LinearEquationSystem< T > &  les)
inline

代入演算子の多重定義

引数
les代入するオブジェクト
戻り値
自分自身への参照

◆ print()

template<typename T >
void LinearEquationSystem< T >::print ( std::ostream &  os) const

連立方程式を出力する

引数
os対象の出力ストリーム
戻り値
なし

◆ printAns()

template<typename T >
void LinearEquationSystem< T >::printAns ( std::ostream &  os) const

連立方程式の解のみを出力する

引数
os対象の出力ストリーム
戻り値
なし

◆ printCoef()

template<typename T >
void LinearEquationSystem< T >::printCoef ( std::ostream &  os) const

連立方程式の係数行列のみを出力する

引数
os対象の出力ストリーム
戻り値
なし

このクラス詳解は次のファイルから抽出されました: