4.5. 奇异值分解¶
4.5.1. 概念¶
矩阵的奇异值¶
Definition 4.4
(奇异值)
的奇异值的个数等于 的列数;
的非零奇异值的个数等于 的秩;
Theorem 4.5
(奇异值对角化定理)
设 , 则存在 阶酉矩阵 和 阶酉矩阵 , 使得
其中, , 为矩阵 的全部非零特征值.
奇异值分解¶
奇异值分解 ( Singular Value Decomposition ) 是把一个矩阵 分解为一个酉矩阵 ( unitary matrix) , 矩形对角矩阵 与一个酉矩阵 共轭转置乘积的分解.
Definition 4.6
(奇异值分解)
称满足如下形式的矩阵分解为 奇异值分解 :
其中, .
图 4.3 所示为奇异值分解示意图.
提示
矩阵 的奇异值由 唯一确定;
矩阵 的奇异值分解不唯一, 因为 一般不唯一;
矩阵 是 的特征向量
矩阵 是 的特征向量
注解
奇异值分解证明
4.5.2. 求解方法¶
设有矩阵 , 求其奇异值分解的步骤如下:
计算矩阵 及其特征值和特征向量, 秩 ;
根据特征值 , 求奇异值 , 并写出矩阵 及矩形对角阵 ;
根据特征向量, 标准化特征向量并将特征向量按列依奇异值顺序排成矩阵 , 取前 列构成 ;
根据 计算 ;
取与 正交的矩阵 , 合并得到 ;
最终求得矩阵 的奇异值分解 .
实例¶
求如下矩阵的 SVD分解
解: 由题意有
求得 特征值与特征向量分别为 , 对应特征向量 ,
从而有奇异值 , 于是有
根据特征向量, 标准化特征向量并将特征向量按列依奇异值顺序排成矩阵, 由于秩 , 所以
根据 计算
取与 正交的矩阵 , 合并得到
最终求得矩阵 的奇异值分解 .
代码实现¶
matlab代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | >> A=[-1 0;0 1;2 2]
A =
-1 0
0 1
2 2
>> [U, S, V]=svd(A)
U =
-0.2357 -0.7071 0.6667
0.2357 -0.7071 -0.6667
0.9428 -0.0000 0.3333
S =
3.0000 0
0 1.0000
0 0
V =
0.7071 0.7071
0.7071 -0.7071
|
例子2
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | >> A=[1 0 1;0 1 1; 0 0 0]
A =
1 0 1
0 1 1
0 0 0
>> [U, S, V]=svd(A)
U =
0.7071 -0.7071 0
0.7071 0.7071 0
0 0 1.0000
S =
1.7321 0 0
0 1.0000 0
0 0 0
V =
0.4082 -0.7071 0.5774
0.4082 0.7071 0.5774
0.8165 0.0000 -0.5774
>> U*S*V
ans =
0.2113 -1.3660 0.2989
0.7887 -0.3660 1.1154
0 0 0
>> U*S*V'
ans =
1.0000 -0.0000 1.0000
0.0000 1.0000 1.0000
0 0 0
|