码迷,mamicode.com
首页 > 其他好文 > 详细

numpy奇异值分解,广义逆矩阵与行列式

时间:2019-08-26 00:13:21      阅读:103      评论:0      收藏:0      [点我收藏+]

标签:col   pre   div   function   class   style   单位   als   mamicode   

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奇异值分解,广义逆矩阵与行列式

标签:col   pre   div   function   class   style   单位   als   mamicode   

原文地址:https://www.cnblogs.com/draven123/p/11410045.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!