7分钟
矩阵的奇异值分解
矩阵的奇异值分解: 设矩阵 A 为 M×N 阶的矩阵,则存在一个分解,使得:A=UΣV^H ,其中 U 为 M×M 阶酉矩阵; Σ 为半正定的 M×N 阶的对焦矩阵; 而 V 为 N×N 阶酉矩阵。
Σ 对角线上的元素为 A 的奇异值,通常按照从大到小排列。
scipy.linalg.svd(a, full_matrices=True, compute_uv=True, overwrite_a=False,
check_finite=True, lapack_driver='gesdd')
a
:一个矩阵,形状为(M,N)
,待分解的矩阵。full_matrices
:如果为True
,则 U 的形状为(M,M)
、 V^H 的形状为(N,N)
;否则 U 的形状为(M,K)
、V^H 的形状为(K,N)
,其中K=min(M,N)
compute_uv
:如果True
,则结果中额外返回U
以及Vh
;否则只返回奇异值overwrite_a
:一个布尔值,指定是否将结果写到a
的存储区。overwrite_b
:一个布尔值,指定是否将结果写到b
的存储区。check_finite
:如果为True
,则检测输入中是否有nan
或者inf
lapack_driver
:一个字符串,指定求解算法。可以为:'gesdd'/'gesvd'
。默认的'gesdd'
。
返回值:
U
: U 矩阵s
:奇异值,它是一个一维数组,按照降序排列。长度为K=min(M,N)
Vh
:就是 V^H 矩阵
判断两个数组是否近似相等
np.allclose(a1,a2)
(主要是浮点数的精度问题)
学员评价