zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    HTML5基础内容(二)
    JavaScript逻辑运算符
    JavaScript自增运算符和自减运算符
    JavaScript算数运算符和一元运算符
    CSS分页
    HTML和CSS遇到的细节问题
    JavaScript数据类型转换
    JavaScript标识符
    HTML5基础知识汇总(一)
    CSS颜色透明度
  • 原文地址:https://www.cnblogs.com/draven123/p/11410045.html
Copyright © 2011-2022 走看看