📜  初等矩阵 |离散数学(1)

📅  最后修改于: 2023-12-03 15:22:41.939000             🧑  作者: Mango

初等矩阵 | 离散数学

介绍

初等矩阵是一种特殊的方阵,它可以通过单一的行变换或列变换对一个标准矩阵进行操作,从而得到另一个矩阵。在线性代数中,初等矩阵的概念很重要,因为它可以用于解决线性方程组和求逆矩阵等问题。

常见类型

在初等矩阵中,有三种常见的类型:

  1. 加/减矩阵
  2. 数乘矩阵
  3. 交换矩阵
加/减矩阵

加/减矩阵可以通过将单位矩阵的某一行(或列)加上一个常数来得到。例如,下面的矩阵就是一个可以将标准矩阵的第三行加上2倍第一行的初等矩阵:

$$ E_{3}=\begin{bmatrix} 1 & 0 & 0 \ 0 & 1 & 0 \ 2 & 0 & 1 \ \end{bmatrix} $$

数乘矩阵

数乘矩阵可以通过将单位矩阵的某一行(或列)乘上一个常数来得到。例如,下面的矩阵就是一个可以将标准矩阵的第二列除以3的初等矩阵:

$$ E_{2}=\begin{bmatrix} 1 & 0 & 0 \ 0 & \frac{1}{3} & 0 \ 0 & 0 & 1 \ \end{bmatrix} $$

交换矩阵

交换矩阵可以通过交换单位矩阵的某两行(或两列)位置来得到。例如,下面的矩阵就是一个可以交换标准矩阵的第一行和第三行的初等矩阵:

$$ E_{1,3}=\begin{bmatrix} 0 & 0 & 1 \ 0 & 1 & 0 \ 1 & 0 & 0 \ \end{bmatrix} $$

代码实现

初等矩阵在程序中可以用二维数组来表示,其中1表示对应位置进行了变换,0表示没有进行变换。下面是一个Python实现加/减矩阵初等矩阵的例子:

def e_mat_add_sub(n, i, j, k):
    """
    构造将第i行加(k倍)第j行的初等矩阵
    """
    e = [[0 for _ in range(n)] for _ in range(n)]
    for m in range(n):
        if m == i:
            e[m][m] = 1
            e[m][j] = k
        else:
            e[m][m] = 1
    return e

类似地,我们也可以实现数乘矩阵和交换矩阵的构造函数。对于实现初等矩阵的操作,这些函数可以非常方便地使用。