MATLAB Language
行列分解
サーチ…
構文
- R = chol(A);
- [L、U] = lu(A);
- R = qr(A)である。
- T = schur(A);
- [U、S、V] = svd(A);
コレスキー分解
コレスキー分解は、エルミートで正定値の行列を上三角行列に分解し、転置する方法です。これは、線形方程式系を解くのに使用することができ、LU分解の約2倍の速さです。
A = [4 12 -16
12 37 -43
-16 -43 98];
R = chol(A);
上三角行列を返します。下位のものは転置によって得られる。
L = R';
最終的に分解が正しいかどうかを確認することができます。
b = (A == L*R);
QR分解
このメソッドは、行列を上三角行列と直交行列に分解します。
A = [4 12 -16
12 37 -43
-16 -43 98];
R = qr(A);
これは上三角行列を返しますが、次の例は両方の行列を返します。
[Q,R] = qr(A);
次のプロットは、行列の要素の平方根に依存するqr
の実行時間を表示します。
LU分解
これにより、マトリックスは上部の三角マトリックスと下部の三角マトリックスに分解される。 Gauß除去の性能と安定性を向上させるために使用されることがよくあります(順列で行われた場合)。
しかし、この方法は、安定していないので、しばしば機能しません。例えば
A = [8 1 6
3 5 7
4 9 2];
[L,U] = lu(A);
PA = LUのような順列行列を追加すれば十分である。
[L,U,P]=lu(A);
以下では、行列の要素の平方根に依存して `lu 'の実行時間をプロットします。
Schur分解
Aが複素二次行列である場合、Q * AQ = T = D + Nとなるような単一Qが存在し、Dは固有値からなる対角行列であり、Nは厳密に上三重対角行列である。
A = [3 6 1
23 13 1
0 3 4];
T = schur(A);
また、行列要素の平方根に依存するschur
のランタイムも表示します。
特異値分解
mより大きいnを有するm×n行列Aが与えられる。特異値分解
[U,S,V] = svd(A);
行列U、S、Vを計算する。
行列Uは、 A*A.'
固有ベクトルである左特異固有ベクトルからなるA*A.'
VはA.'*A
の固有ベクトルである右特異値で構成されます。行列S
はA*A.'
固有値の平方根を持つA*A.'
とA.'*A
は対角線上にある。
mがnより大きい場合は、
[U,S,V] = svd(A,'econ');
経済規模の特異値分解を実行する。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow