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或者inflapack_driver:一个字符串,指定求解算法。可以为:'gesdd'/'gesvd'。默认的'gesdd'。
返回值:
U: U 矩阵s:奇异值,它是一个一维数组,按照降序排列。长度为K=min(M,N)Vh:就是 V^H 矩阵
判断两个数组是否近似相等
np.allclose(a1,a2)(主要是浮点数的精度问题)
学员评价