MATLABで、linsolveとmldivideの違いは何ですか?


10

MATLABでは、linsolvemldivideの両方が、決定、過決定、過小決定のすべてのケースで線形方程式系を解くために使用されます。

彼らの文書を読んで、私はそれらの間にどんな違いがあるのだろうと思っていましたか?3つのケースで、行列分解と三角化のアルゴリズムとほとんど同じですか?

Aにoptsのプロパティがある場合、linsolveはmldivideより高速です。これは、linsolveがAが指定されたプロパティを持っていることを確認するテストを実行しないためです。

mldivideは、Aに特別なプロパティがあるかどうかを確認するために同じテストを実行しますか?またはmldivideは、特別なプロパティなしでそれらを一般的なケースとして扱うだけですか?

ありがとう!

回答:


16

どちらも線形システムを解く直接ソルバーです(反復ソルバーとは異なります)。

mldivideAAx=bmldivide

mldivide正方行列の場合:Aが対称であり、実数の正の対角要素がある場合、MATLABはコレスキー分解を試みます。コレスキー分解が失敗した場合、MATLABは対称的な不定分解を実行します。Aが上ヘッセンベルグの場合、MATLABはガウスの消去法を使用してシステムを三角行列に縮小します。Aが正方であるが、順列三角形、対称正定行列、またはヘッセンバーグでない場合、MATLABは部分ピボットを使用したLU分解を使用して一般的な三角形分解を実行します。

linsolve 正方行列の場合:部分ピボットによるLU分解

mldivideおよびlinsolve長方形行列の場合:QR分解

linsolveoptsA

opts.POSDEF = true; linsolve(A,b,opts)

xAopts

一定の基準が満たされ、場合linsolvemldivide同じ因数分解プロセスを利用します。たとえば、特定のプロパティを満たすな正定システムの場合、またはシステムが過度に決定されており、どちらも最小二乗近似を実行します。

さらに、シンボリック計算linsolveも実行できます。これは、解の数が無限である、十分に決定されていない小さなシステムがある場合に便利です。あなたはそれを象徴的に解決することができますが、それはできません。変数が象徴的に宣言されていない、しかし、そしてあなたに同じ警告メッセージを与えるだろう「マトリックスは、加工精度に特異です。」linsolvemldividemldividelinsolve

最後に重要なこととして、次のマトリックスのようなスパースシステムをlinsolveサポートしていません(青い点はゼロ以外のエントリを意味します)。一方では、サイズが200Kで200Kの下にあるときに確実にスパースシステムを扱うことができます。 mldivide疎な例

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