三角形(上または下)のマトリックスを反転する簡単な方法はありますか?

StackOverflow https://stackoverflow.com/questions/420612

質問

私はいくつかの基本的な線形代数演算を実装しようとしていますが、これらの演算の1つは三角行列(上下行列)の反転です。簡単で安定したアルゴリズムはありますか?

ありがとう。

役に立ちましたか?

解決

はい、後方代替を使用します。行列を反転する標準的なアルゴリズムは、LU分解(下三角行列と上三角行列への分解)を見つけ、三角形の部分で逆置換を使用し、結果を結合して元の行列の逆行列を取得することです。

他のヒント

可能であれば、それを反転しないでください。これは、数値線形代数の基本的な命令の1つです。

行列L自体をメモリに保持し、inv(L)で何か他のことをする必要があるときはいつでも、後方置換で計算する方がはるかに高速で数値的に安定です。

それを反転するための慣習的なアルゴリズムはシステムを解決する必要があることに注意してください

inv(L)b
など。したがって、まったく反転しないほうがはるかに簡単であることがわかります。

下三角行列Lを指定すると、逆代入によりシステムを解くことができます L x = b 右側bの場合はすばやく。

Lを反転するには、このシステムを右辺e1 =(1,0、...、0)、e2 =(0,1、...、0)、...、enで解くことができます=(0,0、...、1)そして、結果の解ベクトルを単一の(必要に応じてより低い三角形の)行列に結合します。

閉形式の解に興味がある場合、逆の対角要素は元の対角要素の逆であり、逆の要素の残りの式は離れるにつれてますます複雑になります対角線から。

単精度実数について話している場合は、LAPACKルーチンのソースコードをご覧ください STRTRI および STRTI2

うわー、それは数値解析コースの内容のほぼ半分です。標準のアルゴリズムがそれを行い、こちらの多数の定型コードがあります。 。この問題およびその他の通常の数値解析の問題の最終的な原因は、数値レシピです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top