SingularValueDecomposition

SingularValueDecomposition[m]

数値行列 m の特異値分解を行列のリスト{u,σ,v}として与える.ただし,σ は対角行列であり mu.σ.ConjugateTranspose[v]と書くことができる.

SingularValueDecomposition[{m,a}]

a に対する m の一般化された特異値分解を与える.

SingularValueDecomposition[m,k]

mk 個の最大特異値に関連する特異値分解を与える.

SingularValueDecomposition[m,UpTo[k]]

k 個(あるいはできるだけたくさん)の最大特異値の分解を与える.

詳細とオプション

例題

すべて開くすべて閉じる

  (3)

特異値分解を計算する:

入力行列を再構築する:

可逆行列の特異値分解を計算する:

特異値の行列もまた可逆である:

入力行列を再構築する:

可逆行列の特異値分解を計算する:

結果をフォーマットする:

入力行列を再構築する:

スコープ  (18)

基本的な用法  (7)

機械精度行列の特異値分解を求める:

結果をフォーマットする:

複素行列の特異値分解:

厳密行列の特異値分解:

任精度行列の特異値分解:

記号行列の特異値分解:

大きい数値行列の特異値分解は効率的に計算される:

非正方行列の特異値分解:

特異値の部分集合  (5)

行列の大きい方から3つの特異値に関連付けられた特異値分解を求める:

これらの行列は,完全分解とは異なって行列のどの部分も厳密には再生しない:

小さい方から3つの特異値に関連付けられた特異値分解を求める:

非零特異値に関連付けられた「コンパクトな」分解を求める:

この分解は行列の再構築に十分な情報を持っている:

完全な特異値分解には0の行がある:

非矩形行列の「薄い」分解を求める:

行列は正方行列である:

この分解は,行列を再構築するために十分な情報をまだ持っている:

完全な特異値分解では,正方行列 に0の行や列ができる:

大きい方から3つ(それより少なければできるだけたくさん)の特異値に関連付けられた分解を求める:

繰り返される特異値がある行列の打切り特異値分解を計算する:

繰り返される特異値は,部分分解を行う場合は別々に数えられる:

一般化された特異値分解  (2)

機械精度実行列の一般化された特異値分解を求める:

結果を確認する:

機械精度複素行列の一般化された特異値分解を求める:

結果を確認する:

特殊行列  (4)

疎な行列の特異値分解:

大きい方から3つの特異値に関連付けられた分解を求める:

右特異ベクトルを可視化する:

構造化行列の特異値分解:

異なる構造を使う:

単位は特異値に付く:

恒等行列の特異値分解:

分解を確認する:

が恒等行列になるように選ばれた.この分解は一意ではない:

HilbertMatrixの特異値分解:

オプション  (3)

Tolerance  (1)

m はほとんど特異行列である:

機械精度では,この行列は事実上特異行列である:

許容度を低くすると,非零の特異値が見られるようになる:

デフォルトの許容度は精度に基づいているので,20桁精度で小さい値が検知される:

TargetStructure  (2)

矩形実行列:

TargetStructure->"Dense"のとき,SingularValueDecompositionの結果は3つの密な行列のリストである:

TargetStructure->"Structured"のとき,SingularValueDecompositionの結果はOrthogonalMatrixオブジェクトとDiagonalMatrixを含むリストである:

矩形複素行列:

TargetStructure->"Dense"のとき,SingularValueDecompositionの結果は3つの密な行列のリストである:

TargetStructure->"Structured"のとき,SingularValueDecompositionの結果は2つのUnitaryMatrixオブジェクトとDiagonalMatrixを含むリストである:

アプリケーション  (11)

特異値分解の幾何学  (5)

2×2行列 の特異値分解を計算する:

TemplateBox[{v}, Transpose]の動作は回転で,この場合の 軸で発生するように,反射の可能性がある:

の動作は各軸に沿った(膨張または収縮の)スケーリングである:

の動作は回転で,この場合には見られないが,ターゲットの空間での反射の可能性がある:

3×2行列 の特異値分解を計算する:

行列は,TemplateBox[{v}, Transpose]行列による平面での回転の後で,単位円を楕円として3Dのに埋め込む:

行列は楕円を3Dで回転させる:

2×2行列 の特異値分解を計算する:

がそれぞれ の列を示すものとする:

TemplateBox[{{m, ., x}}, Norm]が最大化される方向で,最大値は である:

同様に,TemplateBox[{{m, ., x}}, Norm]が最小化される方向で,最小値は である:

,単位円を,左側は を掛けて,画像とともに可視化する:

TemplateBox[{{x, ., m}}, Norm]が最大化される方向で,最大値は である:

同様に,TemplateBox[{{x, ., m}}, Norm]を最小化する方向でi最小値は である:

,単位円を,右側は を掛けて,画像とともに可視化する:

3×2行列 の特異値分解を計算する:

はそれぞれ の列を示すものとする:

TemplateBox[{{m, ., x}}, Norm]が最大化される方向で最大値は である:

同様に,TemplateBox[{{m, ., x}}, Norm]が最小化される方向で最小値は である:

,単位円の画像を,左側は を掛けて可視化する:

TemplateBox[{{x, ., m}}, Norm]が最大化される方向で最大値は である:

TemplateBox[{{x, ., m}}, Norm]を最小化する.球は平面では圧縮されて楕円になるので,最小値は0である:

は制約条件 に従ってTemplateBox[{{x, ., m}}, Norm]を最大化し,最大値は である:

および平面上の単位球の画像を,右側は を掛けて可視化する:

3×3行列 の特異値分解を計算する:

がそれぞれ の列を指すものとする:

TemplateBox[{{m, ., x}}, Norm]が最大化される方向で最大値は である:

のときにTemplateBox[{{m, ., x}}, Norm]が最大化される方向で最大値は である:

同様に,TemplateBox[{{m, ., x}}, Norm]が最小化される方向で最小値は である:

,単位球とその画像を,左側は を掛けて可視化する:

TemplateBox[{{x, ., m}}, Norm]が最大化される方向で最大値は である:

のときにTemplateBox[{{x, ., m}}, Norm]が最大化される方向で最大値は である:

同様に,TemplateBox[{{x, ., m}}, Norm]が最小化される方向で最小値は である:

,単位球とその画像を,右側は を掛けて可視化する:

最小二乗と曲線のフィット  (6)

線形系 に解がないなら,最適な近似解は最小二乗解である.それは の解である.ただし, の列空間への の正射影で,特異分解を使って計算できる.次の について考える:

この線形系には一貫性がない:

のコンパクトな特異値分解の 行列を求める.その列は正規直交でをスパンする:

の列によってスパンされた空間への の正射影 を計算する:

の列への射影 を可視化する:

を解く:

LeastSquaresを使って結果を確認する:

次の について特異値分解だけを使って最小二乗問題を解く:

非零の特異値だけが保持されるコンパクトな特異値分解を計算する:

x=v.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, ConjugateTranspose].b とする:

定義によって なので,への の正射影は m.x=u.sigma.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, ConjugateTranspose].b=u.TemplateBox[{u}, ConjugateTranspose].b

したがって,LeastSquaresで確認されるように, が最小二乗問題の解である:

次の についての最小二乗問題を,特異値分解の 行列だけを使った の列空間への射影と完全分解を使って直接解を求めるという2つの異なる方法で解く.結果を比較し,説明する:

以下のコンパクトな特異値分解を計算する:

への正射影 を計算する:

を解く:

の両方が実数値なので,直接解は x=v.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, ConjugateTranspose].b=v.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, Transpose].b を使って求めることができる:

xxPerpは異なるが,m.x==m.xPerpなのでどちらも最小二乗問題を解く:

2つの解はNullSpace[m]の要素分だけ異なる:

LeastSquares[m,b]は直接法を使って解を与える点に注意のこと:

以下の行列 について,TemplateBox[{{{m, ., x}, -, b}}, Norm]_Fを最小化する行列 を求める:

1つの解(この場合は一意)は x=v.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, Transpose].b で与えられる:

この結果はLeastSquares[m,b]を使っても得ることができる:

Minimizeを使って答を確認する:

SingularValueDecompositionを使ってデータに最もフィットする曲線が求められる.次のデータについて考える:

座標と 座標をデータから抽出する:

直線 にフィットするために,列が の計画行列を構築する:

線形最小二乗フィットのために薄い特異値分解を使って係数 を得る:

Fitを使って係数を確認する:

データに最もフィットする曲線をプロットする:

次のデータに最もフィットする放物線を求める:

座標と 座標をデータから抽出する:

曲線 にフィットするために,列が の計画行列を構築する:

最小二乗フィットのために係数 を得る:

Fitを使って係数を確認する:

最もフィットする曲線をデータとともにプロットする:

特性と関係  (13)

m の特異値分解{u,σ,v}mu.σ.ConjugateTranspose[v]として分解する:

a が分解が{u,σ,v}n×m 行列なら,un×n 行列である:

vm×m 行列である:

σn×m 行列である:

SingularValueDecomposition[m]m.TemplateBox[{m}, ConjugateTranspose]TemplateBox[{m}, ConjugateTranspose].m の固有系から構築される:

m.TemplateBox[{m}, ConjugateTranspose]の固有系を計算する:

の列は固有ベクトルである:

TemplateBox[{m}, ConjugateTranspose].m の固有系を計算する:

の列は固有ベクトルである:

の行は列より少ないので, の対角項はである:

最初の右特異ベクトルは,すべての単位ベクトル上でTemplateBox[{{m, ., x}}, Norm]を最大化することで求めるられる:

続く各ベクトルはその前のすべてのベクトルに対して垂直であるという制約条件を持つマキシマイザである:

SingularValueDecompositionで求まった と比較する.両者は符号まで等しい:

同様のことはTemplateBox[{{x, ., m}}, Norm]の特異ベクトルについても言うことができる:

の対角項はそれぞれの最大値である:

の次元よりも小さいなら, の最初の 列は で関連付けられている:

の最初の 列は によっても関連付けられている:

m が正方行列なら, の対角成分の積はAbs[Det[m]]に等しい:

が正規行列なら, はどちらも同じベクトルからなる:

が半正定値エルミート行列でなければ,ベクトルは異なる順序で出現する:

の対角項はAbs[Eigenvalues[m]]に等しい:

正定値エルミート行列 については,SingularValueDecompositionEigensystemは一致する:

は等しい:

その列は の単位固有ベクトルである:

の非零の成分は の固有値である:

MatrixRank[m]は非零の特異値の数に等しい:

非零の固有値のみを保持するコンパクトな分解はPseudoInverse[m]を計算することができる:

u.sigma.TemplateBox[{v}, ConjugateTranspose]として分解されるなら,m^((-1))=v.TemplateBox[{sigma}, Inverse].TemplateBox[{u}, ConjugateTranspose]である:

2つのベクトルの外積である行列 mMatrixRank[m]==1である:

m の非零の特異値はベクトルのノルムの積である:

対応する右と左の特異ベクトルは正規化された入力ベクトルである:

SingularValueDecomposition[{m,a}]mu.w.ConjugateTranspose[v]として分解する:

そして aua.wa.ConjugateTranspose[v]として分解する:

SingularValueDecomposition[{m,a}]Eigensystem[{m.m,a.a}]と関連があるかもしれない:

w の対角成分は/である:

wa の対角成分は1/である:

v の列はConjugate[Inverse[vλ]]の列のスケールされた倍数である:

スケーリングの大きさは wvλ.m.m.vλの対応する対角成分の比である:

同様に,wavλ.ma.ma.vλの対応する対角成分の比でもある:

考えられる問題  (1)

m は2×1000のランダム行列である:

完全な特異値分解は,u が1000×1000行列なので非常に大きくなる:

圧縮した特異値分解は,はるかに小さい:

それでも m を再構成するための十分な情報を持っている:

Wolfram Research (2003), SingularValueDecomposition, Wolfram言語関数, https://reference.wolfram.com/language/ref/SingularValueDecomposition.html (2024年に更新).

テキスト

Wolfram Research (2003), SingularValueDecomposition, Wolfram言語関数, https://reference.wolfram.com/language/ref/SingularValueDecomposition.html (2024年に更新).

CMS

Wolfram Language. 2003. "SingularValueDecomposition." Wolfram Language & System Documentation Center. Wolfram Research. Last Modified 2024. https://reference.wolfram.com/language/ref/SingularValueDecomposition.html.

APA

Wolfram Language. (2003). SingularValueDecomposition. Wolfram Language & System Documentation Center. Retrieved from https://reference.wolfram.com/language/ref/SingularValueDecomposition.html

BibTeX

@misc{reference.wolfram_2024_singularvaluedecomposition, author="Wolfram Research", title="{SingularValueDecomposition}", year="2024", howpublished="\url{https://reference.wolfram.com/language/ref/SingularValueDecomposition.html}", note=[Accessed: 22-November-2024 ]}

BibLaTeX

@online{reference.wolfram_2024_singularvaluedecomposition, organization={Wolfram Research}, title={SingularValueDecomposition}, year={2024}, url={https://reference.wolfram.com/language/ref/SingularValueDecomposition.html}, note=[Accessed: 22-November-2024 ]}