矩阵入门

大憨熊 提交于 2019-12-01 12:40:50

什么是矩阵

在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数实数集合 ,最早来自于方程组系数常数所构成的方阵(摘自某百科)

\(n\)\(m\) 列的矩阵大概长这个样子 :
\[ A = \left[\begin{array}{c}a_{1,1}&a_{1,2}&\cdots&a_{1,m}\\a_{2,1}&a_{2,2}&\cdots&a_{2,m}\\a_{3,1}& a_{3,2}&\cdots&a_{3,m}\\\cdots&\cdots& &\cdots\\a_{n,1}& a_{n,2}&\cdots&a_{n,m}\end{array}\right] \]
\(n \times m\) 个数称为矩阵 \(A\) 的元素,简称为元

\(a_{i,j}\) 位于矩阵的第 \(i\) 行第 \(j\)

矩阵的基本运算


加法

注意 : 只有相同大小的矩阵才可以相加

\[ \left[\begin{array}{c}1&4\\3&2\end{array}\right]+\left[\begin{array}{c}4&2\\5&7\end{array}\right]=\left[\begin{array}{c}5&6\\8&9\end{array}\right] \]

矩阵的加法满足交换律结合律

即 :

\(A + B = B + A\)

\((A + B) + C = A + (B + C)\)

以下为矩阵加法的代码 :

inline matrix add(matrix A, matrix B) {
    matrix C(A.r, A.c);
    for(int i = 0; i < C.r; ++i) // 枚举矩阵 C 的行
      for(int j = 0; j < C.c; ++j) // 枚举矩阵 C 的列
        C.a[i][j] = A.a[i][j] + B.a[i][j];
    return C;
}

减法

与加法类似, 只有相同大小的矩阵才可以相减


数乘

\(\lambda\) 为常数,矩阵数乘即把矩阵每一个数乘上一个 \(\lambda\)
\[ 2 \times \left[\begin{array}{c} 1&4\\ 3&2 \end{array}\right] = \left[\begin{array}{c} 2&8\\ 6&4 \end{array}\right] \]


矩阵的加减法和矩阵的数乘合称矩阵的线性运算

其实感觉矩阵加减法只是做了 n * m 次普通的加减法


乘法

重点,很有用

两个矩阵的乘法当且仅当第一个矩阵 \(A\) 的列数,和另一个矩阵 \(B\) 的行数相等时才能定义

\(A\)\(n \times m\) 的矩阵,\(B\)\(m \times p\) 的矩阵,它们的乘积 \(C\) 是一个 \(n \times p\) 的矩阵

它的一个元素 :
\[ c_{i, j} \ \sum_{k = 1}^{m}a_{i, k} b_{k, j} \]
以下为矩阵乘法的代码 :

inline matrix mul(matrix A, matrix B) {
    matrix C(A.r, B.c);
    for(int i = 0; i < C.r; ++i) // 枚举矩阵 C 的行
      for(int j = 0; j < C.c; ++j) // 枚举矩阵 C 的列
        for(int k = 0; k < A.c; ++k) // 上面式子中 k = A.c
          C.a[i][j] += A.a[i][k] * B.a[k][j];
    return C;
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!