スパース線形システムソルバーを選択する場合、どのガイドラインに従う必要がありますか?


49

スパース線形システムは、アプリケーションの頻度が高くなるにつれて現れます。これらのシステムを解決するために選択する多くのルーチンがあります。最高レベルでは、直接法(特殊な順序付けアルゴリズムを使用したスパースガウス消去法またはコレスキー分解法、マルチフロント法など)と反復法(GMRES、(双)共役勾配法)の間に分岐点があります。

直接法を使用するか反復法を使用するかをどのように決定しますか?その選択をした後、特定のアルゴリズムをどのように選ぶのでしょうか?対称性の活用についてはすでに知っています(たとえば、スパース対称正定値システムに共役勾配を使用します)が、メソッドを選択する際に考慮すべきこのような他の考慮事項はありますか?

回答:


33

反復ソルバーを選択する際に重要なことは、演算子のスペクトルです。このペーパーを参照してください。ただし、非常に多くの否定的な結果があります。すべての問題に対して反復ソルバーが当てはまらないこのペーパーと、あらゆるスペクトルのGMRESの収束曲線を取得できることを証明するこのペーパーを参照してください。したがって、いくつかの孤立した場合を除き、反復ソルバーの動作を予測することは不可能と思われます。したがって、直接ソルバーも備えたPETScのようなシステムを使用して、すべてを試すことが最善の選択肢です。


2
「できる限りのことを投げる」というのは、私が慣れ親しんだアドバイスでした。:)リンクする3番目の論文は、これまで見たことのないものです。ありがとう!
JM

2
マットには素晴らしい答えがありますが、あなたは彼が来ているコミュニティのコンテキスト内でそれを取らなければなりません(大規模な科学計算)。小さな問題(たとえば、10万個未満の未知数)では、問題が強く楕円でない場合、直接ソルバーは反復法よりもはるかに優れていることがわかります。私は最初の開始戦略にあなたを導くだろう文学の良い一般的な論文を見たことがありませんが、それは少し恥ずかしいです。
アロンアーマディア

5
Aronの推定値は良好ですが、塗りつぶしに大きく依存しています。なぜなら、スパースダイレクトメソッドは通常、忍耐を使い果たす前にメモリを使い果たすからです。
マットネプリー

18

直接法と反復法のどちらを選択するかは、目前の目標と問題に依存します。

Directメソッドの場合、次のことに注意できます。

  • 線形システムの係数行列は計算の過程で変化し、スパースシステムではメモリ要件を使い果たし、塗りつぶしによる作業量が増加する可能性があります。
  • 有用な結果を得るために完了する必要があります
  • 複数の右辺が存在する場合、分解を後続のステップで再利用できます
  • 線形システムのみを解くために使用できます。
  • めったに失敗しません。

反復法の場合、次のことに注意できます。

  • 目標は、少数の反復後にのみ部分的な結果を提供することです。
  • ソリューションの労力は、同じ問題に対する直接的な方法よりも少ないはずです。
  • ストレージに関して経済的(フィルインなし)
  • 多くの場合、プログラムは簡単です。
  • 既知の近似ソリューションを活用できます。
  • 時々、彼らは速いです、そして、時々、彼らはそうではありません(時々さえさえ)。
  • 複雑な問題の場合、反復法は直接法に比べてかなり堅牢ではありません。

直接法または反復法をいつ使用するかのガイドライン?

  • 係数行列がスパースで、直接法がスパース性を効率的に利用できない場合の反復法(塗りつぶしの作成を回避)。
  • 複数の右側の直接メソッド。
  • 精度がそれほど重要でない場合、反復法はより効率的です。
  • 非線形方程式系の反復法。

8
O(n)O(n)O(n2)O(1)

8

私はすでに与えられた答えに完全に同意します。すべての反復メソッドには、何らかの初期推測が必要であることを付け加えたかった。この初期推測の品質は、選択した方法の収束率に影響を与えることがよくあります。Jacobi、Gauss Seidel、Successive Over Relaxationなどのメソッドはすべて、各ステップで可能な限り多くのエラーを反復的に「平滑化」するように機能します(詳細については、このペーパーを参照してください)。最初の数ステップは高周波エラーをかなり迅速に低減しますが、低周波エラーは滑らかにするためにより多くの反復を必要とします。これは、これらの方法の収束を遅くするものです。このような場合、最初に低周波エラーを解決する(たとえば、より粗いメッシュで同じ問題を解決する)ことで収束を加速し、次により高い周波数エラーを解く(たとえば、より細かいメッシュで)ことができます。この概念を分割統治によって再帰的に適用すると、マルチグリッドメソッドと呼ばれるものが得られます。線形システムが対称ではない場合でも、ソルバーの収束を加速できる非特異スパース行列システム(代数マルチグリッド法など)のマルチグリッド法の代替実装があります。ただし、並列システムでのスケーラビリティは、多くの研究の対象です


5
この答えは、マルチグリッドの有効性は適切な初期推測を見つけることから来るという印象を与えているようです。現実には、最初の推測は線形問題に対する小さな懸念であり、実際にはフルマルチグリッドに対する懸念にすぎません。マルチグリッドは、スペクトル分離により機能します。難しい問題に対してマルチグリッドを適切に機能させることは重要な課題です。マルチグリッドは並行して非常にうまく機能します。これはいくつかのゴードンベル賞の重要な要素であり、いくつかのオープンソースパッケージは今日の最大のマシンで高効率で実行されています。GPUの実装については、CUSPライブラリをご覧ください。
ジェドブラウン

ほとんどの場合、ランダムな初期推測で十分です。Lanczosアルゴリズムを使用して固有値を抽出する際に、ランダムな開始/再開ベクトルが役立ちます。Lanczosアルゴリズムでは、再起動が発生する場合があります。
AnilJ

3

あなたの質問には重要な情報が欠けています:マトリックスはどこから来たのですか?解決しようとしていた問題の構造は、解決方法を提案する大きな可能性を秘めています。

行列が滑らかな係数を使用した偏微分方程式から作成された場合、特に3次元では、幾何学的なマルチグリッド法は勝ちにくいでしょう。問題があまり規則的でない場合、代数的マルチグリッドが良い方法です。両方とも通常、クリロフ空間法と組み合わされます。他の効率的なソルバーは、高速多重極法または高速フーリエ変換から導出できます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.