draven123

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

 

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-09-22
  • 2021-11-25
  • 2021-11-20
  • 2021-05-11
  • 2022-12-23
  • 2021-12-19
猜你喜欢
  • 2021-12-13
  • 2021-12-26
  • 2021-08-05
  • 2021-05-14
  • 2022-01-14
  • 2021-07-23
  • 2021-06-20
相关资源
相似解决方案