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 | ![]() |