矩阵基础

矩阵

定义

\(m,n\) 是两个正整数,由数域 \(\mathbb{F}\)\(m\times n\) 个数 \(a_{ij}(i = 1,\cdots,m,j = 1,\cdots,n)\) 排成的一个 \(m\)\(n\) 列的矩形图表

\((a_{ij})=(a_{ij})_{m\times n}=\boldsymbol{A}=\begin{pmatrix} 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{pmatrix}\)\(\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}\)

称为 \(\mathbb{F}\) 上的一个 \(m\)\(n\) 列的矩阵或 \(m\times n\) 矩阵。特别地,当 \(m = n\) 时,称 \(m\times n\) 矩阵 \(\boldsymbol{A}\) 是一个 \(n\) 阶方阵。

用大写字母来表示矩阵,如 \(A\)

\(M_{m,n}(\mathbb{F}) = \{ \mathbf{A}=(a_{ij})_{m\times n}\mid a_{ij}\in\mathbb{F}\}\) 为数域 \(\mathbb{F}\) 上的所有 \(m\times n\) 矩阵全体,\(M_{n}(\mathbb{F}) = M_{n,n}(\mathbb{F})\) 为数域 (\mathbb{F}) 上的所有 \(n\) 阶方阵全体。(这个似乎用的不多?)

矩阵加法

就是对应位置相加,若 \(C = A + B\),则 \(c_{ij} = a_{ij}+b_{ij}\)。这里要求 \(A,B\) 的大小一致。

矩阵乘法

现有大小为 \(m * n\) 的矩阵 \(A\)\(n * k\) 的矩阵 \(B\)\(C\)。令 \(C=A \times B\),其大小为 \(m * k\),则

\[C_{i,j}=\sum_{k=1}^{n} A_{i,k} \times B_{k,j} \]

可以简记为 : A横乘B竖。

卡常技巧: 一般来说,矩阵乘法的元素要求对某个数取模,我们可以用 long long(或者 int128)把一行之和求出来再取模,以减少取模次数。

矩阵乘法的性质

  1. 结合律\((AB)C=A(BC)\)

    直接把两边用矩乘定义展开

    因为乘法运算对加法有分配律,所以 \(\sum\) 可以提前并交换,于是两边都变成 \(H_{i,j}\sum\limits_{l = 1}^{s}\sum\limits_{k = 1}^{n}a_{ik}b_{kl}c_{lj}\) 的形式。

  2. 分配律\(A(B+C)=AB+AC,(B+C)D=BD+CD\)

    \(\because \sum a_{i,k}(b_{k,j}+c_{k,j}) = \sum a_{i,k}b_{k,j} + \sum a_{i,k}c_{k,j}\)

    \(\therefore A(B+C)=AB+AC\) ,另一个同理。

  3. 没有交换律!可以举例验证

  4. 有乘法单位元

    即单位矩阵(虽然这玩意本质上是个方阵)。用 \(I_n\) 表示大小为 \(n\) 的单位矩阵。

    构造:对角线为 1,其它地方是 0。证明还是直接用定义展开

    性质:对于 \(\forall A \in M_{m,n},A = I_mA = AI_n\)

  5. 有消去律 \(AB = AC \Longleftrightarrow B=C\),当且仅当 \(A\ne 0\)\(\exists AA^{-1} = I\) (存在 A 的逆)

广义矩阵

普通矩阵乘法是“对应位置相乘再加起来”,记作 \((\times,+)\)。我们可以根据具体要求修改矩乘的定义。如果新定义的乘法也满足分配律,那么上述性质仍然成立。

例如:定义乘法 \(C = A \times B\),使得 \(C_{i,j} = \min (A_{i,j} + B_{i,j})\)。这种可以记作(min,+)。因为 \(a + \min(b, c) = \min(a +b, a + c)\),所以(+,min)具有结合律,分配律,但没有交换律。

矩阵快速幂:

这是一个矩乘的应用,并且相当常用。

$ A * A * A * A * B = A^k * B $

和普通快速幂求解方式一样
模板题

(注:这个算法的成立基于矩乘的结合律)

矩阵快速幂优化dp

把dp方程看成向量(或是1 * n的矩阵),尝试把转移方程当成矩阵。
例如:匪不垃圾式:\(f_n = f_{n-1} + f_{n-2}\)

\[(^{1, 1}_{1,0}) (^{f_{n-1}}_{f_{n-2}}) = (^{f_{n}}_{f_{n-1}}) \]

数据结构矩阵加速dp

这个也被称为动态dp

我们可以把一个dp的转移看成乘上一个矩阵。
用矩阵快速幂是建立在每一个转移矩阵是一样的,但dp方程的转移往往与输入有关。于是就有了这玩意。

dp的一般形式:
\(dp_{初值} * A * B * C …… * Z = dp_{答案}\)(大写字母表示矩阵)
于是我们可以用数据结构来优化。(具体来讲,在ds的每个节点下存一个矩阵,修改操作就是把原来的矩阵删了加上新的矩阵)

总结一下:该算法用于处理对转移方程有微小修改操作的dp
如果这些转移矩阵不会变,那这个做法就是脱裤子放屁。

邻接矩阵的乘法

对一个有向图 \(G\),记其邻接矩阵为 \(A\),则 \(A^k\)\((i,j)\) 元素为从 \(i\) 出发,走 \(k\) 步走到 \(j\) 的路径数。

如果只考虑可达性,此时矩阵中只有 \(0\)\(1\),乘法变成 & 操作,加法变成 | 操作。 使用 \(bitset\) 可以将矩阵乘法优化到 \(O({n^3\over ω})\)

矩阵的逆

前置知识

\(A\in M_n(\mathbb{F})\),若存在 \(B\in M_n(\mathbb{F})\),满足 \(AB = I_n=BA\),则称 \(A\) 一个可逆矩阵,此时称 \(B\)\(A\) 的逆矩阵,记作 \(B = A^{-1}\)

可以证明,如果有 \(AB = I_n\),则一定有 \(BA = I_n\),于是上述定义中的条件可以改为 \(AB = I_n\)(或 \(BA = I_n\)

性质

  • \(A\) 可逆,则 \(|A^{-1}|=|A|^{-1}\)
  • \(A,B\) 都是 \(n\) 阶可逆矩阵,则 \(AB\) 可逆,且 \((AB)^{-1}=B^{-1}A^{-1}\)。一般地,\(A_1,\cdots,A_s\)\(n\) 阶可逆矩阵,则 \(A_1A_2\cdots A_s\) 可逆,且 \((A_1A_2\cdots A_s)^{-1}=A_s^{-1}\cdots A_1^{-1}\)
  • \(A\)\(n\) 阶可逆矩阵,则 \(A^T\) 可逆,且 \((A^T)^{-1}=(A^{-1})^T\)
  • \(n\) 阶方阵 \(A\) 可逆 \(\Leftrightarrow|A|\neq 0\Leftrightarrow \mathrm{rank}(A)=n\)

求法

在方阵后面强行拼上一个对角矩阵,然后用初等变换将前面的矩阵消成对角矩阵(就是用的高斯消元),后面的矩阵就是矩阵的逆。

举个栗子:

\[A = \begin{bmatrix} 2&-1&0\\ -1&2&-1\\ 0&-1&2 \end{bmatrix} \]

\[\begin{bmatrix} 2& - 1&0&1&0&0\\ -1&2& - 1&0&1&0\\ 0&-1&2&0&0&1 \end{bmatrix} \]

\[\begin{bmatrix} 1&0&0&\frac{3}{4}&\frac{1}{2}&\frac{1}{4}\\ 0&1&0&\frac{1}{2}&1&\frac{1}{2}\\ 0&0&1&\frac{1}{4}&\frac{1}{2}&\frac{3}{4} \end{bmatrix} \]

\[\therefore A^{-1} = \begin{bmatrix} \frac{3}{4}&\frac{1}{2}&\frac{1}{4}\\ \frac{1}{2}&1&\frac{1}{2}\\ \frac{1}{4}&\frac{1}{2}&\frac{3}{4} \end{bmatrix} \]

矩阵/线性变换

现在想知道:

\(\begin{bmatrix}-1\\1\end{bmatrix}和\begin{bmatrix}1\\1\end{bmatrix}\)张成的线性空间中的向量\(\begin{bmatrix}\frac{1}{2}\\\frac{1}{2}\end{bmatrix}\)

在普通的空间(用\(\hat{i}\)和$\hat{j} $的线性空间 )中的向量是什么。

方法如下:

  1. 用两个基直接拼成一个矩阵(就是把中间两个碍事的中括号去掉)。在上面的例子中,该矩阵为:\(\begin{bmatrix}-1&1 \\1&1\end{bmatrix}\)。(注意,这里将对应\(\hat{i}\)的基放在左边,对应\(\hat{j}\)的基放在右边)
  2. 用这个矩阵乘上这个向量,就是:\(\begin{bmatrix}-1&1 \\1&1\end{bmatrix} \begin{bmatrix}\frac{1}{2}\\\frac{1}{2}\end{bmatrix}\)。注意矩阵没有交换律,所以顺序不能改。

就行了。

如果要从普通的线性空间中的向量变到特定的空间中,就乘上该空间的两个基拼成的矩阵的。就行了。(可以用高斯消元来求矩阵的逆)

由上面的示例可以看出,矩阵可以被当成一种线性变换,其几何意义就是更换线性基后表示某个向量。

posted @ 2025-02-12 21:40  花子の水晶植轮daisuki  阅读(53)  评论(0)    收藏  举报
https://blog-static.cnblogs.com/files/zouwangblog/mouse-click.js