zoukankan      html  css  js  c++  java
  • Numpy入门学习之(二)linalg库----向量范数、矩阵范数、行列式、矩阵逆、幂

    转自:https://blog.csdn.net/qq_30138291/article/details/76327051

     

    老师课堂总结,请勿转载

    Numpy中的核心线性代数工具

    numpy.linalg模块包含线性代数的函数。使用这个模块,我们可以计算逆矩阵、求特征值、解线性方程组以及求解行列式等。

    求解矩阵的范数

    在实数域中,数的大小和两个数之间的距离是通过绝对值来度量 的。在解析几何中,向量的大小和两个向量之差的大小是 “长度 ” 和 “ 距 离 ”的概念来度量的。为了对矩阵运算进行数值分析,我们需要对向量 和矩阵的 “大小 ”引进某种度量。范数是绝对值概念的自然推广。

    "范数 "是对向量和矩阵的一种度量,实际上是二维和三维 向量长度概念的一种推广.

    向量范数

    范数理论的一个小推论告诉我们:ℓ1≥ℓ2≥ℓ∞

    矩阵的范数

    范数汇总

    转载地址http://blog.csdn.net/u011361880/article/details/73527229

    矩阵行列式

    方阵的逆矩阵

    伴随矩阵

    逆矩阵运算性质

    代码

    1.  
      # -*- coding: utf-8 -*-
    2.  
      """
    3.  
      Created on Sat Jul 29 15:33:39 2017
    4.  
       
    5.  
      @author: Administrator
    6.  
      """
    7.  
       
    8.  
      import numpy as np
    9.  
       
    10.  
      print("###########向量范数#########")
    11.  
      print("向量为:",[1,5,6,3,-1])
    12.  
      print("1范数:",np.linalg.norm([1,5,6,3,-1],ord = 1),"向量元素绝对值之和")
    13.  
      print("2范数:",np.linalg.norm([1,5,6,3,-1],ord = 2),"向量元素绝对值的平方和再开方")
    14.  
      print("无穷范数:",np.linalg.norm([1,5,6,3,-1],ord = np.inf),"所有向量元素绝对值中的最大值")
    15.  
       
    16.  
      print("###########矩阵范数#########")
    17.  
      a = np.arange(12).reshape(3,4)
    18.  
      print("矩阵a为:")
    19.  
      print(a)
    20.  
      print("F范数",np.linalg.norm(a,ord = 'fro'),"矩阵元素绝对值的平方和再开平方")
    21.  
      print("1范数",np.linalg.norm(a,ord = 1),"列和范数,即所有矩阵列向量绝对值之和的最大值")
    22.  
      print("2范数",np.linalg.norm(a,ord = 2),"谱范数,即ATA矩阵的最大特征值的开平方")
    23.  
      print("无穷范数",np.linalg.norm(a,ord = np.inf),"行和范数,即所有矩阵行向量绝对值之和的最大值")
    24.  
       
    25.  
       
    26.  
      print("###########行列式#########")
    27.  
      a = np.arange(1,17).reshape(4,-1)
    28.  
      print("矩阵a为")
    29.  
      print(a)
    30.  
      print("a的行列式为:",np.linalg.det(a))
    31.  
       
    32.  
      print("###########逆矩阵np.linalg.inv()#########")
    33.  
      a = np.array([[1,-1],[1,1]])
    34.  
      b = np.array([[1/2,1/2],[-1/2,1/2]])
    35.  
      print("矩阵相乘为单位矩阵E:")
    36.  
      print(np.dot(a,b))
    37.  
       
    38.  
      print("###########伴随矩阵#########")
    39.  
      print(a)
    40.  
      det_a = np.linalg.det(a)
    41.  
      print("a的行列式为:",det_a)
    42.  
      inv_a = np.linalg.inv(a)####求a的逆矩阵
    43.  
      print("a的逆矩阵为:",inv_a)
    44.  
      print("a的伴随矩阵为:")
    45.  
      bansui = det_a*inv_a
    46.  
      print(bansui)
    47.  
      print("验证:",np.dot(bansui,a))
    48.  
       
    49.  
      print("###########A与A逆行列式#########")
    50.  
      a = np.random.rand(5,5)
    51.  
      inv_a = np.linalg.inv(a)
    52.  
      det_a = np.linalg.det(a)
    53.  
      det_inv_a = np.linalg.det(inv_a)
    54.  
      print(det_a*det_inv_a)
    55.  
       
    56.  
      print("###########矩阵的幂matrix_power()#########")
    57.  
      a = np.random.rand(3,3)
    58.  
      print(a)
    59.  
      print(np.linalg.matrix_power(a,2))
    60.  
       
    61.  
      print("###########求解AXB=C?#########")
    62.  
      a = np.array([[1,2,3],[2,2,1],[3,4,3]])
    63.  
      b = np.array([[2,1],[5,3]])
    64.  
      c = np.array([[1,3],[2,0],[3,1]])
    65.  
      det_a = np.linalg.det(a)
    66.  
      det_b = np.linalg.det(b)
    67.  
      inv_a = np.linalg.inv(a)
    68.  
      inv_b = np.linalg.inv(b)
    69.  
      if det_a != 0:
    70.  
      if det_b !=0:
    71.  
      x = np.dot(np.dot(inv_a,c),inv_b)
    72.  
      print(x)
    1.  
      ###########向量范数#########
    2.  
      向量为: [1, 5, 6, 3, -1]
    3.  
      1范数: 16.0 向量元素绝对值之和
    4.  
      2范数: 8.48528137424 向量元素绝对值的平方和再开方
    5.  
      无穷范数: 6.0 所有向量元素绝对值中的最大值
    6.  
      ###########矩阵范数#########
    7.  
      矩阵a为:
    8.  
      [[ 0 1 2 3]
    9.  
      [ 4 5 6 7]
    10.  
      [ 8 9 10 11]]
    11.  
      F范数 22.4944437584 矩阵元素绝对值的平方和再开平方
    12.  
      1范数 21.0 列和范数,即所有矩阵列向量绝对值之和的最大值
    13.  
      2范数 22.4092981633 谱范数,即ATA矩阵的最大特征值的开平方
    14.  
      无穷范数 38.0 行和范数,即所有矩阵行向量绝对值之和的最大值
    15.  
      ###########行列式#########
    16.  
      矩阵a为
    17.  
      [[ 1 2 3 4]
    18.  
      [ 5 6 7 8]
    19.  
      [ 9 10 11 12]
    20.  
      [13 14 15 16]]
    21.  
      a的行列式为: 4.73316543133e-30
    22.  
      ###########逆矩阵np.linalg.inv()#########
    23.  
      矩阵相乘为单位矩阵E:
    24.  
      [[ 1. 0.]
    25.  
      [ 0. 1.]]
    26.  
      ###########伴随矩阵#########
    27.  
      [[ 1 -1]
    28.  
      [ 1 1]]
    29.  
      a的行列式为: 2.0
    30.  
      a的逆矩阵为: [[ 0.5 0.5]
    31.  
      [-0.5 0.5]]
    32.  
      a的伴随矩阵为:
    33.  
      [[ 1. 1.]
    34.  
      [-1. 1.]]
    35.  
      验证: [[ 2. 0.]
    36.  
      [ 0. 2.]]
    37.  
      ###########A与A逆行列式#########
    38.  
      1.0
    39.  
      ###########矩阵的幂matrix_power()#########
    40.  
      [[ 0.66673632 0.24542188 0.24331174]
    41.  
      [ 0.81223569 0.41511886 0.20157493]
    42.  
      [ 0.07107783 0.64497704 0.29675985]]
    43.  
      [[ 0.66117181 0.42244142 0.28390083]
    44.  
      [ 0.89304891 0.50167529 0.34112338]
    45.  
      [ 0.59235659 0.47658948 0.23537168]]
    46.  
      ###########求解AXB=C?#########
    47.  
      [[ -2. 1.]
    48.  
      [ 10. -4.]
    49.  
      [-10. 4.]]
  • 相关阅读:
    JDK框架简析--java.lang包中的基础类库、基础数据类型
    Mahout 模糊kmeans
    使用heartbeat+monit实现主备双热备份系统
    Git版本号控制:Git分支处理
    JAVA线程
    Nginx的特性与核心类别及配置文件和模块详解
    nginx设置反向代理后端jenklins,页面上的js css文件无法加载
    运维的危险命令,用了必死(1)
    xtrabackup备份MySQL
    利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境
  • 原文地址:https://www.cnblogs.com/lm3306/p/9337941.html
Copyright © 2011-2022 走看看