エントリがわからないときに、ほぼ対角行列の対角を抽出する


8

既にほぼ対角になっている対称マトリックスから対角を抽出するための良い方法は何ですか?マトリックス要素がない場合(ベクトルに適用する機能のみ)?

さらに、(1)対角線を明示的に構築するためにn行n列の行列をn回適用すると、法外にコストがかかり、(2)対角線の小さな要素が大きな要素に加えて重要になります。

これは、(小規模なテストケースで)対角線を抽出するマトリックスの種類の例の画像です。

ここに画像の説明を入力してください

回答:


9

次の方法が非常に効果的だと思われるので、自分の質問に答えます。私はそれを答えにしているので、人々はそれが良いか悪いかと思う場合、質問とは無関係にそれを賛成票または反対票を投じることができます。

回答:マトリックスの対角線に適用されるランダム化されたマトリックスプローブを使用します。

レッツ我々はの対角線を見つけて、聞かせしたいオペレータもガウスランダムベクトルの数が少ないこと。次に、をランダムベクトルに適用してし、次の最小二乗最小化問題 ω 1ω 2ω K A A ω 1Aは、ω 2A ω K 対角線  D | | Dは、ω 1 - Aは、ω 1を| | 2 + | | Dは、ω 2 - Aは、ω 2 | | 2 + Aω1,ω2,..,ωkAAω1,Aω2,...,Aωk

mindiagonal D||Dω1Aω1||2+||Dω2Aω2||2+...+||DωkAωk||2.

最小値は正確な式

d=ω1ω11+ω2ω2+ωkωkω12+ω22++ωk2

Matlabコード、例えば:

omegas = randn(16,3); 
dprobe=sum(omegas.*(A*omegas),2)./sum(omegas.^2,2);

私の例の行列では、3つのプローブベクトルを使用して、正確な対角線とプローブされた対角線を次のように比較します。

[dprobe, diag(A)]

ans =

1.0e+04 *

2.3297    2.4985
0.4596    0.4921
0.1322    0.0897
0.2838    0.1764
0.0989    0.0999
0.0106    0.0071
0.0068    0.0068
0.0469    0.0571
0.0070    0.0070
0.0355    0.0372
0.0059    0.0060
0.0071    0.0064
0.0067    0.0067
0.0026    0.0021
0.0012    0.0012
0.0015    0.0013

更新:これらのアイデアを対称ブロックマトリックスに適用する実験を行っています。私が使用しているマトリックスは、ウェーブレットのような基本でほぼブロック対角であるためです。行列が「ブロック対角支配」(定義が少し難しい)限り、最小二乗再構築ブロックを対称化する限り、プリコンディショナーを構築するのに非常にうまく機能するようです。

リコールそのブロックに分割行列であるブロック対角優勢なら j

||1||1Σj||j||

上記のガウスランダム前提として、次の最小二乗ブロック対角再構成を見つけようとします。ω

block dagoals B||Bω1ω1||2+||Bω2ω2||2++||Bωkωk||2

テンソル積を操作した後、ローカル問題を解くことにより、番目のブロックの正確な式を見つけることができます。lBl

Bl=[ω1lω1lT++ωklωklT][ω1lω1lT++ωklωklT]1

ここで、とは、番目のブロックのインデックスに対応すると部分です。 ω L I A ω I ω I Lωlωlωωl

これらのだけを使用すると、前処理はかなり悪いように見えますが、次のように対称化すると、B

Bl=Bl+BlT/2

私の実験では、真の対角ブロックを使用した場合とほとんど同じようになりました(多くの場合、より優れています!)。これが写真のマトリックスの例です。 ここに画像の説明を入力してください


3
遠慮なくご自分の質問にお答えください。これはまさにSciCompに必要なものです(私がやったことです)。より適切な回答が表示されるように、自分の回答を受け入れるまで待つことをお勧めします。自分の質問に答える(答えがある場合)の方が、答えないでおくよりもはるかに優れています。可能であれば、すべてのユーザーがあなたの例に従うことをお勧めします。
Geoff Oxberry 2013年

わかりました。他の誰かがより良い答えを持っている場合に備えて、私は数日間受け入れるのを待ちます。
Nick Alger
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.