数学/数论专题-学习笔记:矩阵小记#1
1. 前言
本篇文章是作者学习矩阵时候的一些个人笔记。
由于作者是个高中 OIer,因此并不会涉及到有关线性代数的很多知识,只记录与 OI 有关的矩阵。
这边建议学线性代数的人看一下这篇博文,讲的非常好:理解矩阵(一)(Author:孟岩)。
2. 定义
2.1 向量
讲矩阵之前我们先来讲讲向量。
前置知识:高中数学向量。
向量的英文名是 vector。
由平面向量基本定理可知,任何一个向量都可以被表示成 ,称这个向量的坐标是 。这是二维空间内的向量。
现在我们扩展一下,扩展到 维向量,同样可以将任意一个向量表示成这样:。
那么记 的坐标是 。
这就是向量。有没有发现跟一维数组长得很像?
2.2 矩阵
矩阵说白了就是一堆数框起来,就像下面这样:
也就是个二维数组,其大小为 。
当然只是这样理解,会导致在做某些毒瘤题的时候搞不清楚到底要干什么,所以还是要把向量拉进来。
理解 1:
从向量的角度看,一个大小为 的矩阵实际上就是 个 维向量的组合。
比如还是上面这个矩阵,就是 这三个向量的组合。
理解 2:
从坐标系的角度看,我们可以认为矩阵描述了一个坐标系。
这个坐标系是 维的,该坐标系中的每一个单位向量是一个 维向量。
显然对于 的时候上面这句话是成立的,但是对于 的情况上面这句话同样成立。
为什么?
毕竟向量平移之后是一样的,你完全可以将这 个 维向量的起点重合,这样这些向量就可以决定这个 维空间。
如果不理解,看孟岩的理解矩阵(一)。
当然作为一个 OIer,简单记住矩阵的方式就是矩阵是个二维数组,但是坐标系这个理解方式很有必要,否则你会对矩阵乘法蒙圈的。
矩阵里面有一类特殊的矩阵:单位矩阵 ,也就是主对角线上元素为 1,其余为 0 的矩阵,像这样:
3. 运算
3.1 矩阵加/减法
矩阵的加法与减法就是对应元素一一相加/减。
能够相加/减的矩阵大小必须相同,都是 。
比如说下面的矩阵相加减就是个很好的例子:
另外还有一种比较少见的矩阵加法方式是直和,参见百度百科。
矩阵加法是满足交换律与结合律的。
3.2 矩阵乘法
先给一下定义:设两个矩阵 ,大小分别为 ,那么 乘以 的结果是 ,其大小为 , 中每个元素计算方式如下:
这说明两个矩阵相乘,必须要满足前一个的列数等于后一个的行数。
从这里我们也可以给出矩阵中幂的定义:( 个 )
对于 OIer 而言,更常用的是两个 的矩阵相乘。
但是矩阵乘法为什么要这样定义呢?这样定义的意义在哪里?
实际上前面说过矩阵是个坐标系。
因此我们可以认为矩阵乘法 是表示组成 的向量们在坐标系 下面的一个描述,在 的描述下这些向量所组成的矩阵为 。
矩阵乘法满足结合律,但是并不满足交换律。
对于单位矩阵而言,有一个特殊的性质:。
这边给一下矩阵乘法的代码:
struct Matrix
{
int a[MAXN][MAXN], r, c;
Matrix operator *(const Matrix &fir)
{
Matrix tmp; memset(tmp.a, 0, sizeof(tmp.a));
tmp.r = r; tmp.c = fir.c;
for (int i = 1; i <= r; ++i)
for (int k = 1; k <= c; ++k)
{
int t = a[i][k];
for (int j = 1; j <= fir.c; ++j)
{ tmp.a[i][j] += t * fir.a[k][j]; tmp.a[i][j] %= m; }
}
return tmp;
}
};
注意上述代码的循环顺序与矩阵乘法定义的循环顺序有所不同,实际上这两者是等价的,而上述代码利用了 Cache 的性质卡常,使得矩阵乘法的常数不至于太大。
3.3 二项式展开
首先回顾实数上的二项式定理:。
所以两个矩阵 , 就成立了?
并不是,有个条件 ,也叫做 可交换,只有在此条件下上式成立。
严谨证明不会,但是可以感性理解,比如说 ,由于实数满足 ,所以可以合并成 ,但是 中 不一定等于 ,所以不能合并,而只有 时才能合并,此时可以证明上面矩阵的二项式展开是对的。
这玩意的主要应用是出题人可能会在这里挖个坑恶心你。
4. 总结
- 向量:记 的坐标是 ,形如一维数组。
- 矩阵:形如二维数组,可以看作是一些向量的组合,也可以看作是一个坐标系。
- 矩阵加/减法:对应元素相加/减。
- 矩阵乘法:设两个矩阵 ,大小分别为 ,那么 乘以 的结果是 ,其大小为 , 中每个元素计算方式如下:
- 二项式展开:当且仅当 可交换时,有 。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具