线性空间笔记
Upd
哈哈,现在系统学了下线性代数,感觉自己之前的死磕很有意思。线性代数本身就是解决线性方程组相关问题的,线性空间与之的关联性是必然的。然而在那时作为一个完全的小白能悟到这么多已经很不错了,大家看个乐子吧。
前言
本来是不想写的,因为这一坨实在是太难了~(难受)。
其实高斯消元法是很容易理解的,就是线性空间有点难懂,后来抛开教材自己理解,居然懂了,但其实用人话讲出来实在是太难了~(难受)。
但是为了更好地巩固这一坨的内容,所以没办法,只好尝试写吧(悲)。
温馨提示:笔者作为信息学竞赛生,思路偏向于具体数学,所以若有细节上的疏忽,请略过见谅。
前置知识
向量的概念以及基本的加法和标量乘法
笔者是数学小白,自己也刚刚理解(点积都不会),不太会讲,所以大家自己去网上查博客吧。实际上如果你不是抱着所有概念和意义都要用数学符号和数字表示成式子的倔强态度,那么其实概念的作用也只是帮助理解。
矩阵
不需要知道太多,本来这里也不会用多少的,只要知道矩阵长啥样就可以了。
高斯消元法以及自由元的概念
听起来挺高大上的,看网上什么矩阵的,我自己一开始也看不太懂,所以我找了一个清华的学长,他说其实就是比较系统,比较适应一般性的解 \(n\) 元一次方程的方式而已,把它当成机械化套过程的加减消元法来看就可以了,大家自己去看其他博客或者书吧,我不(想)讲了。
正题
提示
(1) 注意区分向量的维数与线性空间的维数。
(2) 可以多数形结合去理解。
定义(来自《算法竞赛进阶指南》)
线性空间(又称向量空间)是一个关于以下两个运算封闭的向量集合:
- 向量加法 \(\vec{a} + \vec{b}\)。
- 标量乘法 \(k * \vec{a}\),其中 \(k\) 是常数(标量)(可以是负数,可以是 \(0\))。
给定若干个向量 \(\vec{a_1},\vec{a_2},\vec{a_3},...,\vec{a_k}\),若向量 \(\vec{b}\) 能由 \(\vec{a_1},\vec{a_2},\vec{a_3},...,\vec{a_k}\) 经过向量加法和标量乘法运算得出,则称 \(\vec{b}\) 能被 \(\vec{a_1},\vec{a_2},\vec{a_3},...,\vec{a_k}\)表出。
显然,\(\vec{a_1},\vec{a_2},\vec{a_3},...,\vec{a_k}\) 能表出的所有向量构成一个线性空间,\(\vec{a_1},\vec{a_2},\vec{a_3},...,\vec{a_k}\) 被称为这个线性空间的生成子集。
任意选出线性空间中的若干个向量,如果其中存在一个向量能被其他向量表出,则称这些向量线性相关,否则称这些向量线性无关。
线性无关的生成子集被称为基底,简称基。基的另一种定义是线性空间的极大线性无关子集。一个线性空间的所有基包含的向量个数一定都相等,基所包含的固定的向量个数被称为线性空间的维数。
我们可以用一个 \(n\) 行 \(m\) 列的矩阵来表示 \(n\) 个维数为 \(m\) 的向量,即通过记录一个生成子集(不一定线性无关)来表示出一个线性空间。(显然,一个线性空间对应有无数个生成子集,但一个生成子集只对应唯一的线性空间)
我们可以把矩阵的每一行看作一个长度为 \(m\) 的向量,称为行向量。矩阵表示出的线性空间的维度称为矩阵的行秩。(类似地,我们可以定义列向量和列秩,但实际上行秩一定等于列秩,它们都被称为矩阵的秩,这点可以自己上网查一下,自做拓展)
笔者理解
设线性空间 \(A\) 的维数为 \(n\)。
(0)
\(A\) 的基一般有无限个,\(A\) 线性相关的生成子集一定包含一个 \(A\) 的基。
(1)
线性相关的生成子集,一定存在一个向量 \(\vec{a}\) 被其他向量构成的线性子空间包含。同理,线性无关的生成子集,一定不存在一个向量 \(\vec{a}\) 被其他向量构成的线性子空间包含。
证:
因为线性相关的生成子集中一定存在一个向量能被其他向量表出,而所谓的“其他向量构成的线性子空间”是其他向量能够表出的所有向量,自然包含 \(\vec{a}\)。同理可知,线性无关的生成子集中一定不存在一个向量能被其他向量表出,而所谓的“其他向量构成的线性子空间”是其他向量能够表出的所有向量,自然不包含 \(\vec{a}\)。
(2)
线性空间内所有向量终点和线性空间原点构成一个空间。基所包含的向量个数 \(=\) 线性空间的维数 \(=\) 线性空间内所有向量终点和线性空间原点构成的空间的维数。
证:
我们不妨把(1)理解得更具体一些:假设现在有前 \(n - 1\) 个向量构成的线性无关子集表示出了一个 \(m\) 维的线性子空间,那么实际上由(1)可知,第 \(n\) 个向量 \(\vec{a}\) 一定不在这个 \(m\) 维的线性子空间中,所以这里读者可以稍稍不严谨地理解为 \(\vec{a}\) 乘上一个标量后可加在线性子空间的每个向量的终点上,使从这个终点出发可以到达一些新的终点,因为只加了 \(\vec{a}\) 这一个向量,所以从一个“原终点”可以到达的终点构成一条线,每条新的线相互平行不重合。
因为包括 \(\vec{a}\) 在内的前 \(n\) 个向量线性无关,所以每个终点产生的那条新的线都与原先的线性子空间只有一个交点,我们又知道“点动成线”,所以实际上我们对原先的线性子空间的每个点都进行了“点动成线”的“升维”,所以整个线性子空间也进行了“升维”,所以前 \(n\) 个向量构成的线性空间一定比前 \(n - 1\) 个向量构成的线性子空间多一维,所以前 \(n\) 个向量构成的线性空间的维数为 \(m + 1\)。同时观察所有向量终点,发现同样“升维”。
又知,单一向量(非\((0,...,0)\))构成的线性空间是一维的,根据数学归纳法,结合上一段,所以基包含的向量个数就是线性空间的维数,而线性空间的维数就是线性空间内所有向量终点和线性空间原点构成的空间的维数。
(3)
线性空间的维数一定小于等于向量的维度。
证:
显然,无论多少个 \(m\) 维的向量,都无法表出一个 \(m + 1\) 维的线性空间。
(4)
再次换一种思考方式,我们进行一种不太准确的数形转换,把向量 \(\vec{a_i}=(b_{i,1},b_{i,2},...,b_{i,m})\) 表示成方程形式:
\(b_{i,1}x_1+b_{i,2}x_2+...+b_{i,m}x_m = 0\)
所以线性空间可以用不同的形式表现:
生成子集:
矩阵:
方程:
这时一定有人要问:方程怎么能表示?其实这只是笔者的想法,作为从向量到矩阵的跳板,实际上不要求掌握,但对普遍读者来讲更好理解、记忆。
我们新作定义:若一个向量 \(\vec{c} = (c_1,c_2,...,c_m)\) 在线性空间中,当且仅当满足 \(c_1x_1+c_2x_2+...+c_mx_m = 0\),反之亦然。
实际上,若我们把已知生成子集表示成上述条件方程组的形式,那么实际上把向量的加法看作式子的加法,把系数看作坐标,那么稍加思考,我们就会发现其满足充分性和必要性。考虑边界条件:当线性空间的维数等于向量的维数时,\(x_1=x_2=x_3=...=x_n=0\),定义显然。所以,对条件方程组可以进行方程变换、方程化简和方程求值。
这里,化简后的方程组中包含的方程个数即为原线性空间的维数,所有系数按横向排列求得的系数化为向量即为线性空间的一个基(这里也说明,一般来说基有无数个)。
(5)
由(4)中条件方程组的表示法,我们可以发现表示线性空间的矩阵一定可以进行初等行变换。
证:
由(4)的方程变换成立,性质显然。
(6)
异或空间是线性空间的变体,同样满足线性空间的一些性质,求解方法和高斯消元法求解异或方程组的方式一样,感兴趣的可以自己看书或看网上的博客。
求线性空间的一个基和维数
求基和维数,相当于把线性空间给定的一个任意生成子集表示成条件方程,再化简到每个方程对其他任意多个方程不等价,此时每个方程的系数组合成一个向量,系数为 \(0\) 时将其留为 \(0\),这些向量就构成了这个线性空间的一个基,这个最简条件方程组的方程个数就是这个线性空间的维数。
实际上,由(4),我们将向量加法与方程化简类比,其实本质一样,所以答案一定是一个生成子集;其次,因为方程最简,所以这个子集一定线性无关。综上,答案是原线性空间的一个线性无关生成子集,所以是原线性空间的一个基。
众所周知,高斯消元法的根本目的在解方程,但为了解方程,高斯消元法也进行了方程化简。而且最关键的是,高斯消元法中的那个化简阶梯形矩阵表示成方程同样是最简条件方程组,与原方程组等价。
故,我们可以用高斯消元法对上述方程组化简,就是答案。
例题
自己去找吧,洛谷上搜线性空间。不会的多想想,也可以适当看题解积累经验。
END
笔者自己也是线代盲,所以有些理解可能和标准的定义相去甚远,还请见谅。但本文除定义外大部分是笔者自己的思考和理解,仅供参考。但是笔者写完之后对线性空间的理解也更上层楼,所以建议大家自己也尝试一下这样写博客或讲课的“费曼学习法”,效果真的很好。
然后就完力(喜)。
本文作者:saubguiu
本文链接:https://www.cnblogs.com/imcaigou/p/17883934.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步