📜  矩阵(1)

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

矩阵(Matrix)

矩阵是一个二维数组,它由行(row)和列(column)组成。程序员在计算机中经常使用矩阵来处理各种问题。一个矩阵的大小通常表示为 $m\times n$,其中 $m$ 表示行数,$n$ 表示列数。下面将介绍一些矩阵的基本操作及其在计算机程序中的使用。

矩阵的表示

在计算机程序中,矩阵可以表示为一个二维数组:

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

上述代码表示了一个 $3\times3$ 的矩阵,即:

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

矩阵的基本操作
矩阵的加法

两个相同大小的矩阵可以相加,矩阵的加法运算是将两个矩阵对应位置的元素相加。

$$A + B = \begin{bmatrix} a_{11} & a_{12} \ a_{21} & a_{22} \end{bmatrix} + \begin{bmatrix} b_{11} & b_{12} \ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}+b_{11} & a_{12}+b_{12} \ a_{21}+b_{21} & a_{22}+b_{22} \end{bmatrix}$$

def matrix_addition(A, B):
    rows, cols = len(A), len(A[0])
    C = [[0]*cols for _ in range(rows)]
    for i in range(rows):
        for j in range(cols):
            C[i][j] = A[i][j] + B[i][j]
    return C
矩阵的减法

两个相同大小的矩阵可以相减,矩阵的减法运算是将两个矩阵对应位置的元素相减。

$$A - B = \begin{bmatrix} a_{11} & a_{12} \ a_{21} & a_{22} \end{bmatrix} - \begin{bmatrix} b_{11} & b_{12} \ b_{21} & b_{22} \end{bmatrix} = \begin{bmatrix} a_{11}-b_{11} & a_{12}-b_{12} \ a_{21}-b_{21} & a_{22}-b_{22} \end{bmatrix}$$

def matrix_subtraction(A, B):
    rows, cols = len(A), len(A[0])
    C = [[0]*cols for _ in range(rows)]
    for i in range(rows):
        for j in range(cols):
            C[i][j] = A[i][j] - B[i][j]
    return C
矩阵的乘法

两个矩阵可以相乘,但只有当左矩阵的列数等于右矩阵的行数时才能相乘。矩阵的乘法运算是将左矩阵的一行与右矩阵的一列对应位置的元素相乘,然后将它们相加得到结果矩阵的元素。结果矩阵的行数等于左矩阵的行数,列数等于右矩阵的列数。

$$AB = \begin{bmatrix} a_{11} & a_{12} & \cdots & a_{1n} \ a_{21} & a_{22} & \cdots & a_{2n} \ \vdots & \vdots & \ddots & \vdots \ a_{m1} & a_{m2} & \cdots & a_{mn} \end{bmatrix} \cdot \begin{bmatrix} b_{11} & b_{12} & \cdots & b_{1p} \ b_{21} & b_{22} & \cdots & b_{2p} \ \vdots & \vdots & \ddots & \vdots \ b_{n1} & b_{n2} & \cdots & b_{np} \end{bmatrix} = \begin{bmatrix} c_{11} & c_{12} & \cdots & c_{1p} \ c_{21} & c_{22} & \cdots & c_{2p} \ \vdots & \vdots & \ddots & \vdots \ c_{m1} & c_{m2} & \cdots & c_{mp} \end{bmatrix}$$

其中,结果矩阵的每个元素 $c_{ij}$ 可以用以下公式计算:

$$c_{ij} = \sum_{k=1}^n a_{ik} b_{kj}$$

def matrix_multiplication(A, B):
    rows_A, cols_A = len(A), len(A[0])
    rows_B, cols_B = len(B), len(B[0])
    assert cols_A == rows_B, "A's columns must be equal to B's rows."
    C = [[0]*cols_B for _ in range(rows_A)]
    for i in range(rows_A):
        for j in range(cols_B):
            for k in range(cols_A):
                C[i][j] += A[i][k] * B[k][j]
    return C
矩阵的转置

矩阵的转置是将矩阵的每一行变成矩阵的每一列。

$$(A^T){i,j} = A{j,i}$$

def transpose(A):
    rows, cols = len(A), len(A[0])
    B = [[0]*rows for _ in range(cols)]
    for i in range(rows):
        for j in range(cols):
            B[j][i] = A[i][j]
    return B
总结

本文介绍了矩阵的基本操作及其在计算机程序中的使用。矩阵的加法、减法和乘法是计算机程序中常用的矩阵操作,而矩阵的转置则是在矩阵运算中优化算法的常用手段。掌握矩阵的基本操作,可以让程序员更加方便地处理各种问题。