巨大な高密度線形システムを解く?


11

次の線形システムを反復法で効率的に解くことに希望はありますか?

ARn×n,xRn,bRn, with n>106

Ax=b

Δ - 6 6 1A=(ΔK)、ここでは、ラプラス演算子の離散化から生じる、いくつかの対角線を持つ非常に疎な行列です。メインの対角線にはがあり、他のつの対角線にはがあります。Δ661

R n × nKは、完全に1 で構成される完全な行列です。Rn×n

解くと、ガウスザイデルのような反復法で問題なく動作します。これは、スパースの斜めに支配的な行列だからです。問題は、多数の効率的に解決することはほとんど不可能であると思われますが、の構造を利用して、おそらくそれを解決するためのトリックはありますか?A=ΔA=(ΔK)nK

編集:のような何かをするだろう

Δxk+1=b+Kxk // Gauss-Seidel でを解くxk+1

正しいソリューションに収束しますか?場合、このような分割方法は収束することを読みました。ここで、はスペクトルノルムです。いくつかの異なる小さな値に対しての固有値を手動で計算しましたが、負の値がかなり大きいものを除いて、すべてゼロです。(約500 )それでうまくいかないと思います。ρ Δ - 1 K N N = 256ρ(Δ1K)<1ρΔ1Knn=256

編集:に関する詳細Δ

ΔRn×nは対称で、負の定値で対角的に支配的です。

matlabで次の方法で作成されます

n=W*H*D;

e=ones(W*H*D,1);

d=[e,e,e,-6*e,e,e,e];

delta=spdiags(d, [-W*H, -W, -1, 0, 1, W, W*H], n, n);


詳細を教えてください。対称ですか?確定、半確定、確定ではない?Δ
ステファノM

Δは対称で負の定値です。
ヨン

Kはランクが低いため、Woodbury Matrix Identityは役立ちますか?
アロンアフマディア

回答:


14

適切なデータ構造を使用する場合、ラップトップでは、スーパーコンピューターではの問題を解決できる2つの選択肢があります。効率のために、マルチグリッドを使用して解決する必要があることに注意してください。どちらの場合も、コストは解決するよりも小さな要因になります。2つのアプローチは、Schur補数引数を介して同等ですが、実装が異なるため、別々に説明します。 N 10 12 Δ Δn>106n1012ΔΔ

  • 境界システムを使用する

M=(ΔeeT1)

ここで、はすべて1で構成される列ベクトルであり、システムを解きますe

M(xy)=(b0)

反復ソルバーまたは直接ソルバーを使用します。

  • クリロフメソッドを使用して行列の適用通り(すなわちスパース行列プラス階数1の補正、既存のプレコンディショナーの使用。、または特に、で直接解決を使用する場合は、Sherman-Morrison公式で更新します。Δ - E E T P - 1Δ - 1 ΔAΔeeTP1Δ1Δ

2番目のアプローチの方がはるかに良いと思う傾向があります。要点は、単純に行列をメモリに保存したり、行列を使用して行列ベクトル積を求めたりしてはならないということです。むしろ、反復スキームでベクトルしてを乗算する必要があるたびに、を乗算し、計算します。括弧内の用語は、のエントリの合計であり、一度だけ計算します。Jedはすでにこれをよく説明していますが、操作の順序を強調したかったのです。A のz H = ΔのZ軸、Y = H - EE T Z ZKAzh=Δzy=he(eTz)z
ウルフギャングバンガース
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.