いくつかの基本的な線形代数演算を実装しようとしていますが、これらの演算の 1 つは三角 (上および/または下) 行列の反転です。それを行うための簡単で安定したアルゴリズムはありますか?
ありがとうございました。
いくつかの基本的な線形代数演算を実装しようとしていますが、これらの演算の 1 つは三角 (上および/または下) 行列の反転です。それを行うための簡単で安定したアルゴリズムはありますか?
ありがとうございました。
できれば反転しないでください。これは、数値線形代数の基本的な命令の 1 つです。
行列 L 自体をメモリに保持して計算する方が、はるかに高速で数値的に安定しています。
inv(L)b
inv(L) で何か他のことをする必要があるときはいつでも後方置換を使用します。
それを反転するための慣習的なアルゴリズムは、システムを解く必要があることに注意してください
inv(L)[1 0 0 ...],
inv(L)[0 1 0 ....],
inv(L)[0 0 1 ....]
などなので、まったく反転しない方がはるかに簡単であることがわかります。
下三角行列 L が与えられた場合、逆代入を使用すると、連立方程式 L x = b を右辺 b についてすばやく解くことができます。
L を反転するには、この系を右辺 e1=(1,0,...,0), e2=(0,1,...,0), ..., en=(0 ,0,...,1) を生成し、結果の解ベクトルを 1 つの (必然的に下三角の) 行列に結合します。
閉形式の解に興味がある場合、逆行列の対角要素は元の対角要素の逆行列であり、逆行列の残りの要素の式は、対角線から離れるにつれてますます複雑になります。 .