| MATLAB Function Reference | ![]() |
表示
s = svds(A) s = svds(A,k) s = svds(A,k,0) [U,S,V] = svds(A,...)
詳細
svds(A)
は、行列Aの5個の最大特異値とそれに関連した特異ベクトルを計算します。
svds(A,k)
は、行列Aのk個の最大特異値とそれに関連した特異ベクトルを計算します。
svds(A,k,0)
は、k個の最小特異値とそれに関連した特異ベクトルを計算します。
出力引数が1つのときsは、特異値のベクトルです。出力引数が3個で、Aがm行n列のときは、つぎのようになります。
U は、直交する列をもつm行k列です。S は、k行k列の対角行列です。V は、直交する列をもつn行k列です。U*S*V' は、Aのランクkに最も近い近似です。アルゴリズム
svds(A,k) は、B = [0 A; A' 0]のk個の最大固有値と固有ベクトルを求めるために、eigsを使います。
svds(A,k,0) は、B = [0 A; A' 0]の2k 個の最小固有値と固有ベクトルを求めるために、eigsを使い、k個の正の固有値と固有ベクトルを選択します。
例題
west0479 は、実数の479行479列スパース行列です。svdは、479個のすべての特異値を計算します。svdsは、最大と最小の特異値を選択します。
load west0479 s = svd(full(west0479)) sl = svds(west0479,4) ss = svds(west0479,6,0)
つぎのプロットは、svd とsvdsで計算したwest0479の特異値を示したものです。

west0479 の最大特異値は、少し異なる方法で計算されます。
svds(west0479,1) = 3.189517598808622e+05 max(svd(full(west0479))) = 3.18951759880862e+05 norm(full(west0479)) = 3.189517598808623e+05
normest(west0479) = 3.189385666549991e+05
参考
svd 特異値分解
eigs 2、3の固有値と固有ベクトルを検出
| svd | switch | ![]() |