姓名: 张瑜
赛道: 省选组
类型: 算法技能
向量和矩阵学习笔记
Ps:因为本人实力有限,有一部分可能不太详细,若有补充评论区回复,QWQ
向量
向量的定义
首先,因为我刚刚学到高中的向量,对向量的看法呢就是一条有长度和方向的线,不过这在数学上的定义其实是不对,甚至跟我看的差别其实有点大,真正的定义就是数域 F 中的 n 个数 a_1,a_2,a_3,\dots,a_n 组成的有序数组称为数域 F 上的 n 维向量。那么向量在这里具体表示的是什么呢?一般来说,向量一般就是指一些有关系的数组成的数组,但是也不绝对。
Ps:数域就是类似于函数的定义域或者说是值域,一般来说 F 常指实数域 R 或者是复数域 C 。
举个例子:小明去海鲜市场买了 3 只章鱼, 6 条带鱼还有 2.1 斤的虾米。那么我们用向量来表示他买的海鲜的数量,就是 \alpha=\left(3,6,2.1\right)^T 。
Ps:这个指数 T 的话我也不知道什么意思,是比较数学的写法。
向量的运算
向量的其他运算在这里不多说,主要讲解一下向量的数乘,求和还有内积(Ps:外积是计算几何的事情)。我们一部分一部分的讲解:
-
设 \alpha=\left(a_1,a_2,a_3,\dots,a_n\right) ,那么定义乘 k 得 k\alpha=\left(ka_1,ka_2,ka_3,\dots,ka_n\right) 。( k 必须是数域 F 中的数)
举个例子:小明去海鲜市场买了 3 只章鱼, 6 条带鱼还有 2.1 斤的虾米。小红买的数量是他的两倍,那么 \alpha=\left(3,6,2.1\right)^T , \beta=2\alpha=\left(6,12,4.2\right)^T 。
-
设 \alpha=\left(a_1,a_2,a_3,\dots,a_n\right),\beta=\left(b_1,b_2,b_3,\dots,b_n\right) ,那么定义为 \alpha+\beta=(a_1+b_1,a_2+b_2,a_3+b_3,\dots,a_n+b_n) 。
举个例子:小明去海鲜市场买了 3 只章鱼, 6 条带鱼还有 2.1 斤的虾米。小红买了 11 只章鱼, 4.5 条带鱼还有 14 斤的虾米,那么 \alpha=c^T,\beta=\left(11,4.5,14\right)^T,\gamma=\alpha+\beta=\left(14,10.5,16.1\right) 。
-
若运算 \left(\alpha,\beta\right) 的结果为数域 F 中的一个数,并且满足以下条件:
-
对称性: (\alpha,\beta)=(\beta,\alpha) 。
-
线性性1: (\alpha+\gamma,\beta)=(\alpha,\beta)+(\gamma,\beta) 。
-
线性性2: \left(c\alpha,\beta\right)=c\left(\alpha,\beta\right) , c 必须属于数域 F 。
-
正定性: \left(\alpha,\alpha\right) \ge 0 ,当且仅当 \alpha=\theta 时 \left(\alpha,\alpha\right)=0 ,然后 \theta 是零向量。
这里我学习的时候有一个疑问:就是说第二点和第三点到底可不可以互推呢?不就是分配律和结合律吗?但是发现了有问题就是说那个 \alpha 和 \beta 他们是向量所以说是不可以互相推的。
设 \alpha=\left(a_1,a_2,a_3,\dots,a_n\right),\beta=\left(b_1,b_2,b_3,\dots,b_n\right) ,则 \left(\alpha,\beta\right)=\left(a_1b_1,a_2b_2,a_3b_3,\dots,a_nb_n\right) 。这里其实很好验证它就是内积运算,不多说了。
举个例子:小明去海鲜市场买了 3 只章鱼, 6 条带鱼还有 2.1 斤的虾米。章鱼已知 8 元,带鱼一条 20 元,虾米一斤 4 元。那么小明一共花了几元呢?
\alpha=\left(3,6,2.1\right)^T,\beta=\left(8,20,4\right)^T,cost=\left(\alpha,\beta\right)=148.4 -
矩阵
矩阵的定义
矩阵的定义也没什么好说的,就是一个方方的东西。不做过多赘述。
矩阵的运算
这一部分我们主要就是讲矩阵乘法。举个例子:小明去金拱门吃饭,有两种套餐,第一种有 1 汉堡, 1 份薯条和 1 杯可乐;第二种有 1 汉堡, 2 份薯条和 3 杯可乐,所以呢我们就可以写出这么一个矩阵:
那么如果他吃了 3 个第一种套餐, 1 份第二种套餐,那么他分别吃了什么:
定义如下:设 A=\left(a_{i j}\right)_{m * r^{\prime}} B=\left(b_{i j}\right)_{r * n}, 则 C=\left(c_{i j}\right)_{m * n} 且 c_{i j}=\sum_{k=1}^{r} a_{i k} * b_{k j} 。
那么其实简单来说就是对第一个矩阵的所有行向量与第二个矩阵的所有列向量分别求内积。
矩阵乘法符合结合律但是不符合交换律
单位矩阵与逆矩阵
首先,我们先来说定义,那么单位矩阵就是除了对角线的元素为 1 除外,其他的都是 0 。然后有几行几列,就是几阶单位矩阵,那么之所以叫做单位矩阵,那么肯定是有一些特殊的地方的。因为它的对角线是 1 的特性,所以 AI=IA=A 。这一点非常重要。逆矩阵的定义其实也挺简单的,就是如果两个矩阵相乘最后得到的结果是单位矩阵,他们就是互逆矩阵。可以使用高斯消元来求。然后我们再说一下矩阵的初等变换,就是有以下三种:
- 一行或者是列乘以同一个数
- 一行或者是列与另一行或者是列作交换
- 加上另一行或者是列乘以一个数
然后如果说只变了一次就是初等矩阵。如果用初等矩阵左乘得到的就是初等行变换,右乘就是初等列变换。如果矩阵 A 可以变到 B ,那么就是矩阵 A 和 B 相抵。
那么我们学习了矩阵变化又有什么用处呢?也就是求矩阵的逆的时候会用,也就是说我们只需要把一个矩阵通过初等变换变成单位矩阵,只要在单位矩阵,然后做同样的初等变换得到该矩阵的逆。
异或空间
Ps:下文中提到的向量空间以及秩因为考的不多,我不打算写了,想了解的同学可以自行bdfs
那么异或空间这个名字呢,其实十分抽象,它其实有另外一个名字,就是线性基。那么我们也就是说只要我们在一个向量空间中做替换就可以把向量变成 01 向量,把加法变成一个异或,就很好证明一个 n 维异或空间的秩最大为 n 。在这之前我们需要先初步了解一下异或的性质,异或本质呢就是二进制的加法,那么性质就是如果两个相同的两个数相互异或,那么就是 0 。然后呢,异或跟加法的关系其实非常巧妙,所以异或也满足交换律和结合律。
那么异或空间又可以表示哪些向量呢?我们不妨来对比一下:
原来向量: 10111\\11110\\01001
消元后的向量: 10111\\01001\\00000
如果消元后仍然消不出 0 的行就是异或空间的基。又有一个新的问题诞生了:如何求出所有可以表示的向量?答案就是主元随便取,剩余元的值就是若干个主元异或起来的值。
推荐题目
那这些知识都是属于线性代数部分的,我推荐了这些题目,大家感兴趣的可以去做一做。
P3857,P3292,P4301,P6097,P3328,P10591,P3193