矩阵的加法、乘法、转置、求逆、行列式

来源:互联网 发布:jsp项目开发案例 源码 编辑:程序博客网 时间:2024/05/02 05:04
  • 矩阵运算 及 md表示 记录
  • python需要用到的库 numpy
    • import numpy as np

矩阵加法

  • 两个 相同维数 矩阵的加法可以通过对应元素的相加得到, aij+bij

{142536}+{475869}={511713915}


矩阵乘法

  • 定义 设矩阵 A=(aij)m×n, B=(bij)s×n ,那么 矩阵A 与 矩阵B 的乘积是一个 m×n 矩阵C=(cij)m×n ,其中 cij=ai1b1j+ai2b2j+...+aisbsj=sk=1aikbkj

  • 只有当 矩阵A 的 列数 等于 矩阵B 的 行数 时,两个矩阵才能相乘

  • 例如

    C=A×B={142536}×123456={1x1+2x2+3x34x1+5x2+6x31x4+2x5+3x64x4+5x5+6x6}={14323277}

  • python代码测试

    def matTest2():  ma = [[1, 2, 3],      [4, 5, 6]]  ma = np.mat(ma) # 转为ndarray对象,矩阵化  mb = [[1, 4],      [2, 5],      [3, 6]]  mb = np.mat(mb)  mc = ma.dot(mb) # 矩阵乘法  print(mc)  pass结果[[14 32][32 77]]

转置矩阵

  • 定义:把矩阵 A 的 行列互换 所得到的矩阵称为 原矩阵 的 转置矩阵,以 AT 表示。

  • A=(aij)m×nAT=(aji)n×m


    A=a11a21am1a12a22am1a1na21amn,AT=a11a12a1na21a22a2nam1am2anm

  • 例如:

    A={142536},AT=123456

  • python代码测试

    def matTest3():  ma = [[1, 2, 3],      [4, 5, 6]]  ma = np.mat(ma)  mb = ma.T #矩阵转置  print(mb)  pass结果[[1 4][2 5][3 6]]

矩阵求逆

  • 定义:一个n阶 方阵A 称为可逆的,或非奇异的,如果存在一个n阶 方阵B,使得 A×B=B×A=E 并称B是A的一个 逆矩阵。不可逆的矩阵称为 奇异矩阵。A 的逆矩阵记作 A1。且 A×A1 得到的矩阵为 对角线元素全为1其他元素全为0

  • 例如:

    A={2413},B=322121

    A×B={2413}×322121={1001}

  • 所以判断两个矩阵是否为互逆矩阵,直接相乘即可判断

  • 性质:

    1. 可逆矩阵一定是方阵。
    2. (唯一性)如果矩阵A是可逆的,其逆矩阵是唯一的。
    3. A的逆矩阵的逆矩阵还是A。记作 (A1)1=A
    4. 可逆矩阵A的转置矩阵AT也可逆,并且 (AT)1=(A1)T (转置的逆等于逆的转置)
    5. 若矩阵A可逆,则矩阵A满足消去律。即AB=O(或BA=O),则B=O,AB=AC(或BA=CA),则B=C。
    6. 两个可逆矩阵的乘积依然可逆。
    7. 矩阵可逆当且仅当它是满秩矩阵。
  • python代码测试

    def matTest4():  ma = [[-2, 1],      [4, -3]]  ma = np.mat(ma)  mb = np.linalg.inv(ma) # 矩阵求逆  print(mb)  mc = ma.dot(mb)  print(mc)  pass结果[[-1.5 -0.5][-2.  -1. ]][[ 1.  0.][ 0.  1.]]

矩阵行列式

  1. 对角线展开

    {a1a2b1b2}=a1b2a2b1

    a1a2a3b1b2b3c1c2c3=a1b2c3+b1c2a3+c1a2b3a3b2c1b3c2a1c3a2b1

  2. 降阶展开(适合高阶行列式)

    a1a2a3b1b2b3c1c2c3=a1×{b2b3c2c3}b1×{a2a3c2c3}+c1×{a2a3b2b3}

    a1a2a3b1b2b3c1c2c3=b2×{a1a3c1c3}a2×{b1b3c1c3}+c2×{a1a3b1b3}

  3. python代码测试

    def matTest5():   ma = [[1, 2],      [1, 3]]   ma = np.mat(ma)   mb = np.linalg.det(ma)   print(mb)   mf = [[1, 2, 3],      [4, 5, 6],      [7, 8, 9]]   mf = np.mat(mf)   me = np.linalg.det(mf)   print(me)结果1.06.66133814775e-16

附_矩阵的markdown表示

$$\left\{ \begin{matrix}   1 & 2 & 3 \\   4 & 5 & 6 \\   7 & 8 & 9  \end{matrix}  \right\} \tag{2}$$

147258369(2)


$$\begin{Bmatrix}   1 & 2 & 3 \\   4 & 5 & 6 \\   7 & 8 & 9  \end{Bmatrix} \tag{5}$$

147258369(5)

$$\left[ \begin{matrix}   1 & 2 & 3 \\   4 & 5 & 6 \\   7 & 8 & 9  \end{matrix}  \right] \tag{3}$$

147258369(3)


$$\begin{bmatrix}   1 & 2 & 3 \\   4 & 5 & 6 \\   7 & 8 & 9  \end{bmatrix} \tag{4}$$

147258369(4)


$$\left[\begin{matrix} 1      & 2      & \cdots & 4      \\ 7      & 6      & \cdots & 5      \\ \vdots & \vdots & \ddots & \vdots \\ 8      & 9      & \cdots & 0      \\\end{matrix}\right]  \tag {6}$$

178269450(6)


$$\left[    \begin{array}{cc|c}      1 & 2 & 3 \\      4 & 5 & 6    \end{array}\right] =>\left[    \begin{array}{cc|c}      1 & 2 & 3 \\      4 & 5 & 6    \end{array}\right] \tag{7}$$

[142536]=>[142536](7)


我们使用矩阵 $\bigl( \begin{smallmatrix} a & b \\ c & d \end{smallmatrix} \bigr)$ 作为因子矩阵,将其...

我们使用矩阵 (acbd) 作为因子矩阵,将其…