2

つまりA\b、非常に大きく、対称でスパースなAを実行する場合、matlabはどのアルゴリズムを使用しますか?

4

2 に答える 2

4

行列がスパースで対称正定行列であるが、帯域が非常に狭い場合、専用の帯域ソルバーが使用されます。ほとんどのマトリックスには、この条件をトリガーするのに十分な狭い帯域がありません。通常、これは Spline Toolbox の 1-D スプラインで発生します。2 次元の問題には大きな「バンド」があります (実際にはバンド行列ではありません)。

より一般的には、MATLAB はスパース対称正定行列に CHOLMOD を使用します。行列が疎で、対称で、不定の場合、Iain Duff による MA49 が使用されます。

A\bこのオプションを使用すると、MATLAB が内部で何を行っているかを知ることができます。

spparms ('spumoni',3)

次に、もう一度オフにします

spparms ('spumoni',0)

疎正方行列の場合、UMFPACK を使用します。疎な長方形行列の場合は、SuiteSparseQR (略して spqr) を使用します。

下三角または上三角である疎行列、またはそのように置換できる疎行列の場合、これらのプロパティを利用するフォワード/バック ソルバーを使用します。

MATLAB はバックスラッシュでシンプレックス メソッドをまったく使用しません。行列が長方形の場合 (および行よりも列が多く、短く太い) はA\b基本的な解を返します。最小 2 ノルムの解が必要な場合は、因数分解する必要がありますA'。これは spqr MATLAB インターフェイスで実行できますが、そのオプションは MATLAB ディストリビューションでは利用できません。suitesparse.com のソース コードからspqrをインストールする必要があります。

于 2012-05-19T11:59:12.493 に答える
2

答えは、A のいくつかのプロパティ (対角線/正方形/縞模様など) によって異なります。CHOLMOD、UMFPACK、および qr 因数分解は、オプションの一部です。

ドキュメントはそれを説明しています。ドキュメントのオンライン スナップショットへのリンクを次に示します。これは時代遅れかもしれません。- http://amath.colorado.edu/computing/Matlab/OldTechDocs/ref/arithmeticoperators.html - http://www.maths.lth.se/na/courses/NUM115/NUM115-11/backslash.html

于 2011-11-10T19:33:39.920 に答える