質問

バージョンBoost boost_1_37_0およびMTL mtl4-alpha-1-r6418でマトリックスを逆にしようとしています。マトリックス反転コードが見つからないようです。私は例のためにグーグルで調べましたが、上記のリリースでは欠落していると思われるlu.hを参照しているようです。ヒントはありますか?

@Matt はlu.hのコピーを提案しましたが、それはMTL4ではなくMTL2からのもののようです。 VS05以降でMTL2を使用してコンパイルするのに問題があります。

では、MTL4でマトリックス反転を行う方法はありますか?

更新:Mattの理解が深まり、このITLパス

役に立ちましたか?

解決

lu_factor 、次に lu_inverse を使用しているように見えます。ただし、ピボットで何をしなければならないのか覚えていません。 ドキュメントから。

そして、そうですね、あなたが言ったように、彼らのドキュメントには何らかの形でlu.hが必要だと書かれているようです:

  

マトリックスを反転するにはどうすればよいですか

     

最初に尋ねるべき質問   あなたは本当にあなたがしたいかどうかです   行列の逆行列を計算するか、または   あなたは本当に線形を解決したい   システム。の線形システムを解くために   方程式、それはする必要はありません   逆行列を明示的に計算します。   むしろ、より効率的です   の三角因子を計算する   行列し、次に実行し、   で逆三角形解きます   要因。線形解の詳細   システムを以下に示します。あなたが本当に   行列を反転させたい場合、   mtl / lu.hの関数 lu_inverse()

他に何もなければ、 lu.hを見ることができます。サイト

他のヒント

行列演算にブーストまたはMTLを使用したことはありませんが、JAMA / TNT を使用しました。

このページ http://wiki.cs.princeton.edu/index.php / TNT は、逆行列をとる方法を示しています。基本的な方法はライブラリに依存しません:

  1. XとYが適切な因数分解であるXYへの因子行列M(LUは問題ありませんが、数値安定性のために、QRまたは多分SVDを使用したいと思うでしょう。)

  2. NのI = MN =(XY)Nを解くと、Mが因数分解されているという前提条件があります。ライブラリにはこのためのルーチンが必要です。

MTL4ではこれを使用します:

mtl::matrix::inv(Matrix const &A, MatrixOut &Inv);

api へのリンクです。

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