numpy奇异值分解,广义逆矩阵与行列式
Posted draven123
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy奇异值分解,广义逆矩阵与行列式相关的知识,希望对你有一定的参考价值。
SVD
是一种因子分解运算, 将一个矩阵分解为3个矩阵的乘积
其中, 奇异值矩阵是对角线矩阵
Key_Function
np.linalg.svd函数, 可以对矩阵进行奇异值分解.
U: 正交矩阵
sigma: 表示奇异值矩阵对角线的数组, 其他非对角线元素均为0
V: 正交矩阵
np.diag函数, 得出完整的奇异值矩阵
Code
import numpy as np A = np.mat("4 11 14; 8 7 -2") print(A) ‘‘‘ [[ 4 11 14] [ 8 7 -2]] ‘‘‘ U, Sigma, V = np.linalg.svd(A, full_matrices=False) print(U) ‘‘‘ [[-0.9486833 -0.31622777] [-0.31622777 0.9486833 ]] ‘‘‘ print(Sigma) # 这个Sigma只是奇异值矩阵对角线上的值 ‘‘‘ [ 18.97366596 9.48683298] ‘‘‘ print(np.diag(Sigma)) ‘‘‘ [[ 18.97366596 0. ] [ 0. 9.48683298]] ‘‘‘ print(V) ‘‘‘ [[-0.33333333 -0.66666667 -0.66666667] [ 0.66666667 0.33333333 -0.66666667]] ‘‘‘ print(U * np.diag(Sigma) * V) ‘‘‘ [[ 4. 11. 14.] [ 8. 7. -2.]] ‘‘‘
广义逆矩阵
Key_Function
np.linalg.pinv函数
np.inv函数
Code
import numpy as np A = np.mat("4 11 14; 8 7 -2") print(A) ‘‘‘ [[ 4 11 14] [ 8 7 -2]] ‘‘‘ pseudoinv = np.linalg.pinv(A) print(pseudoinv) ‘‘‘ [[-0.00555556 0.07222222] [ 0.02222222 0.04444444] [ 0.05555556 -0.05555556]] ‘‘‘ print(A * pseudoinv) ‘‘‘十分接近单位矩阵 [[ 1.00000000e+00 0.00000000e+00] [ 8.32667268e-17 1.00000000e+00]] ‘‘‘
数学概念
广义逆矩阵的定义
或者
广义逆矩阵的求解
行列式
Key_Function
np.linalg.det函数, 计算矩阵的行列式
Code
import numpy as np A = np.mat("3 4; 5 6") print(A) ‘‘‘ [[3 4] [5 6]] ‘‘‘ print(np.linalg.det(A)) # -2.0
以上是关于numpy奇异值分解,广义逆矩阵与行列式的主要内容,如果未能解决你的问题,请参考以下文章