どちらが速い/より安定である:行列を反転するか、複数の右辺で線形方程式の3つのシステムを解きますか?

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

質問

私は、各再帰ラウンドに解決しています二つの式を持っています

X = A - INV(B)* Y *のINV(B)、 X = X + A」*のINV(B)* A

私はこの問題をこのように解決します:

C = INV(B)はY <=> BC = Y、Cを解きます D = C INV(B)<=> DB = C <=> B'D '= C'、D 'を解決する

のE = INVと(B)* A <=> BE = A、Eを解決する。

すべての行列は、時間の経過とともに変化するので、私は再びすべての再帰をこの(または反転)を行う必要があります。 Nは、おそらくより、通常約1〜10であるが、通常はそのような何か。 Bは、私は、因数分解にコレを使用することができ、そして、複数の右辺の方程式を解く正定値である。

これはかなり遅いか、単にBを反転して、それとのマトリックス乗算を行うよりも速いですか?線形方程式の3つのシステムを解く対一つinvertionはプラスいくつかの移調(それも別の方程式があります)。私はそれが反転するよりも、少なくとも数値より安定だと思いますか?

感謝します。

役に立ちましたか?

解決

まず第一に、のは、すべてのマトリックスは、次数n×N個であると仮定しましょう。コレスキー分解は、次に、(Nの値が大きいため)操作(N ^ 3/6)Oで行うことができます。

のB * C(I)= Y(I)またはL * L '* C(I)= Y(I)(コレ)を解くことである2 *はO(n ^ 2/2)又はO(N ^ 2 )が、YがN×N個であるため、我々はO(N ^ 3)を有する合計でなる= Yは、)(これらの式のNを解いている。

BCを解きます

解決D」明らかにこれと類似しているので、別のO(N ^ 3)。

ちょうど(離れて同じである当然の対角要素からの)データのスワップ。

、ただしDとD」rouglyはO(n ^ 2)であり、無計算を転置

第式BE = AでEを解決するもう一度後方コレスキー分解の置換である、

(N ^ 3)Oそう

A」* EがN ^ 2 *(N MULT及びn-1の追加)O(2 * N ^ 3 - N ^ 2)

これは、最大合計:O(N ^ 3/6)+ 3 *はO(n ^ 3)+ O(N ^ 2)+ O(2 * N ^ 3 - N ^ 2)〜O(31 * N ^ 3/6)〜O(5 * N ^ 3)(Nの大きな値の場合)

私は行列加算/減算を計算していないが、我々はB.を反転することを決定した場合、彼らは同じになりますので、これは関連していないことに注意してください私もスキップしたのと同じ理由でAに」。

[OK]を、ので、どのように高価な行列を反転さ?まあ、我々は行列方程式を解くためにワンます:

のB * INV(B)= E(i)はIの基本単位ベクトルであり、I = 1..nのためのB * X(I)= E(i)を解くことと同じであるI、これは、通常はO(n ^ 3/3)の動作についてかかり三角形状にシステムを変換するためにガウス消去を使用することによって行われます。三角測量が行われたとき、それを解決するためにはO(n ^ 2/2)操作(後方置換)をとります。しかし、これはあなたが我々がエッジの上にすでにある見ることができるように、私たちにOの合計(N ^ 4月3日)+ O(N ^ 3/2)の操作を与える、行う必要がありますn回ます。

しかし、INV(B)を算出すると、Bのコレスキー因数分解を知ることはO(n ^ 3)である場合>

そこで、次に持っている:O(N ^ 3/6)(Bのコレスキー)+ O(N ^ 3)(コレと計算INV(B))+ 4 * O(2N ^ 3-N ^ 2)少しでも良いが、それでも悪い(4回の行列乗算)〜O(9 * N ^ 3)。

だから私はあなたの現在のアプローチととどまることを示唆しています。しかし、あなたは、これは、nの値が大きいためであることを心に留めておく必要があります。 nが100以上である場合を除き、私はそれがとにかくそれほど重要とは思わない。

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