Posted on

抽象的数学怎么学

(这是我在博雅教育学会公益讲座的讲稿,现在整理出来供大家参考)

这是当时 的讲稿,可以下载:

我们知道,数学越学到后面,概念越来越抽象,运算也越来越抽象。我们要怎么样学才会比较容易呢?

我用一句话概括,就是:抽象的数学要用具体的例子和计算来学。

这样说,是不是太抽象了呀?那我们就用一些具体的例子来说明这句话。

先看两个简单的、高中的例子。

我每年在辅导学生的时候,都会碰到类似这样做题的:

\[\require{cancel}\frac{6-x}{2x}=\frac{6-\cancel {x}}{2\cancel {x}}=\frac{5}{2}\]

一般的情况下,我不会跟学生说对不对,也不会说哪里错了,我会问,如果 \(x=2\),那会怎么样呢?

\[\frac{6-2}{2\cdot 2}=\frac{5}{2} ?\]

学生简单一算,两边不相等,就知道这样运算是不对的。然后我再告诉他们,什么样才是对的。

变量对于初高中生来说,是比数字更抽象的概念,那么理解关于变量的运算或者相关概念的时候,数字就是具体的例子。

第二个例子,就是复合函数的定义。

两个函数 \(f\) 和 \(g\) 的复合函数 \(f\circ g\) 的定义为

\[(f\circ g)(x)=f(g(x))\]

意思就是我们用 \(g(x)\) 来代替 \(f(x)\) 表达式里的所有的 \(x\)。例如

\[f(x)=x^2+x+3, g(x)=2x+1\]

那么 \[(f\circ g)(x)=f(g(x))=f(2x+1)=(2x+1)^2+(2x+1)+3\]

这么讲,还是很多同学不能理解这个概念,那么我一般是这么进行的,问

\[f(2)=?\]

这时候基本上都会

\[f(2)=2^2+2+3\]

同样的再问几个同样的问题

\[f(5)=5^2+5+3=33,\cdots\]

这时候,基本上知道是用括号里的数字代替 \(x\),进一步,用别的字母代替数字,

\[f(a)=a^2+a+3, f(b)=b^2+b+3\]

更进一步用别的字母的表达式代替数字

\[f(a+1)=(a+1)^2+(a+1)+3\]

这时候基本上就懂了,知道是用括号里的表达式来代替原本 \(f(x)\) 表达里的所有 \(x\),

\[f(2x+1)=(2x+1)^2+(2x+1)+3\]

这两个例子都是用数字来具体化变量,因为相对于数字来说,变量就是抽象的。碰到变量相关的概念和运算,用具体的数字来举例,就比较容易理解了。

接下来的例子来自于大学课程。首先是无限并与无限交的概念。

设 \(\displaystyle A_n=(-\infty,-\frac{1}{n}]\cup[\frac{1}{n},\infty)\),求

\[\bigcup_{n=1}^{\infty}A_n,\quad \bigcap_{n=1}^{\infty}A_n\]

这样的问题,有些同学看到这么一大堆符号,首先就懵了。实际上,对于无限的运算,我们先写出有限项来,然后可以看出一些规律。

我们先把表达式写得更具体一些

\[\bigcup_{n=1}^{\infty}A_n=A_1\cup A_2\cup A_3\cup\cdots\]

\[\bigcap_{n=1}^{\infty}A_n=A_1\cap A_2\cap A_3\cap\cdots\]

然后把 \(A_1,A_2,A_3,\cdots\) 的具体表达式写出来,

\begin{align*}&A_1=(-\infty,-1]\cup[1,\infty), A_2=(-\infty,-\frac{1}{2}]\cup[\frac{1}{2},\infty),\\ & A_3=(-\infty,-\frac{1}{3}]\cup[\frac{1}{3},\infty),\cdots\end{align*}

现在可以看出,\(A_1\subset A_2\subset A_3\subset\cdots\),\(A_1\) 是所有其它集合的子集,从而

\[\bigcap_{n=1}^{\infty}A_n=A_1\cap A_2\cap A_3\cap\cdots=(-\infty,-1]\cup[1,\infty)\]

同理,

\[\bigcup_{n=1}^{\infty}A_n=A_1\cup A_2\cup A_3\cup\cdots=\lim_{n\to\infty}A_n= (-\infty,0)\cup(0,\infty)\]

这里我们把比较抽象的无限运算用有限的几个集合的具体表达式就算出来了。

我们再看一个集合族的问题。事实上,这个问题是我这个讲座的最初的来源。

\[X_t=\left\{x\in\mathbb{R}\Big| 1+\frac{1}{t}<x<2+\frac{1}{t}\right\}\]

\[\bigcap_{t>0}X_t,\quad \bigcap_{t>1}X_t, \quad \bigcup_{t>0}X_t\]

这样的集合族,都没办法象之前那个例子一样,列出全部的集合来。因为 \(t>0, t>1\) 都是不可数集。我在当时跟问这个问题的同学说,你先列几个集合出来看看,或许就可以找到答案了。

我们这样试一下,

\[X_{0.001}=\{x|1001<x<1002\}=(1001,1002)\]

\[ X_1=(2,3), X_2=(\frac{3}{2},\frac{5}{2}), X_{1000}=(1.001,2.001),\cdots\]

观察一下,就知道,\(X_{0.001}\) 和 \(X_1\) 都是不相交的,或者它们的交集是空集,那么集合族的交集自然是空集。也就是说

\[\bigcap_{t>0}X_t=\emptyset\]

另外 \(t\) 越大, \(X_t\) 越接近于 \((1,2)\),\(t\) 越小,\(X_t\) 越接近于长度为 \(1\) 的区间,其端点趋近于无限远。所 以

\[ \bigcup_{t>0}X_t=(1,\infty)]\]

而 \(t>1\) 时,

\[X_{1.001}=(1.999,2.999),\]

\[ X_2=(\frac{3}{2},\frac{5}{2}),X_{1000}=(1.001,2.001),\cdots\]

可以看出,所有 \(X_t\) 只有一个共同点 \(2\),也就是

\[\bigcap_{t>1}X_t={2}\]

这里我们可以看到,不可数的集合,我们可以用可数的集合来具体化运算,可以简化或者帮助我们理解与运算。

接下来看两个抽象的概念。

我们说一个 \(\mathbb{R}^n\) 上的一个子集 \(\mathcal {U}\) 是一个线性子空间是指它满足这三个条件:

(1)\(\vec{0}\in\mathcal{U}\);

(2)如果 \(\vec{x},\vec{y}\in\mathcal{U}\),那么 \(\vec{x}+\vec{y}\in\mathcal{U}\);

(3)如果 \(\vec{x}\in\mathcal{U}\),那么对任意的 \(\lambda\in \mathbb{R}\),有 \(\lambda\vec{x}\in\mathcal{U}\)。就是任何两个元素之和在集合里面,任何一个元素的数乘也在集合里面。

我们用一个例子来说明这个概念。

集合\[\mathcal{U}=\left\{\vec{x}=\begin{pmatrix}x\\y\\0\end{pmatrix}, x,y\in\mathbb{R}\right\}\]

是 \(\mathbb{R}^3\) 上的一个线性子空间。

但是这个例子还是有点抽象,那我们用更加具体的例子来说明。这个例子说的是,一个集合是由这样的向量组成:第一个分量和第二个分量是任意的数,第三个分量是 \(0\),那么这样的两个向量是在这个集合里的

\[\begin{pmatrix}1\\2\\0\end{pmatrix}\in\mathcal{U},\begin{pmatrix}-2\\1\\0\end{pmatrix}\in\mathcal{U}\]

它们的和也是这种形式的,对它们乘以一个数也是这种形式的,

\[\begin{pmatrix}1\\2\\0\end{pmatrix}+\begin{pmatrix}-2\\1\\0\end{pmatrix}=\begin{pmatrix}-1\\3\\0\end{pmatrix}\in\mathcal{U}, \quad 3\begin{pmatrix}1\\2\\0\end{pmatrix}=\begin{pmatrix}3\\6\\0\end{pmatrix}\in\mathcal{U}\]

所以两向量的和也在这个集合里,数乘也在这个集合里面,所以这个集合就是一个线性子空间。

最后我们看一个本科高年级的概念:拓扑

一个集合 \(X\) 上的拓扑是指 \(X\) 的一个子集的集合 \(\mathcal{T}\),满足:

(1)\(X\in\mathcal{T},\emptyset\in\mathcal{T}\):

(2) 任何个 \(\mathcal{T}\) 里的元素的并也在 \(\mathcal{T}\) 里 (无限并在 \(\mathcal{T}\) 中);

(3) \(\mathcal{T}\) 中有限个元素的交也在 \(\mathcal{T}\) 中(有限交在 \(\mathcal{T}\) 中)。

我们很多拓扑学教材,或者泛函分析的教材,对拓扑的举例也都是一些比较抽象的例子,基本上是函数空间或者其它的无限维空间,使得这些例子对于理解这个概念并无多大帮助。其实越简单的例子,越能帮助理解。我们来看一个简单的例子:

设 \(X=\{a,b\}\), 则 \(X\) 的所有子集为 \(\{\emptyset, \{a\},\{b\},\{a,b\}\}\),我们可以定义 \(\mathcal{T}=\{\emptyset,\{a\},\{a,b\}\}\)。那么可以直接验证

(1)\(\displaystyle\emptyset\in\mathcal{T},\quad X=\{a,b\}\in\mathcal{T}\)

(2)\[\emptyset\cup\{a\}=\{a\}\in \mathcal{T},\]

\[ \emptyset\cup\{a,b\}=\{a,b\}\in\mathcal{T}, \]

\[\{a\}\cup\{a,b\}=\{a,b\}\in\mathcal{T}\]

\[ \emptyset\cup\{a\}\cup\{a,b\}=\{a,b\}\in\mathcal{T}\]

(3)\[\emptyset\cap\{a\}=\emptyset\in\mathcal{T}\]

\[\emptyset\cap\{a,b\}=\emptyset\in\mathcal{T}\]

\[\{a\}\cap\{a,b\}=\{a\}\in\mathcal{T}\]

\[\emptyset\cap\{a\}\cap\{a,b\}=\emptyset\in\mathcal{T}\]

我们看到拓扑所要求的三个条件都满足,所以 \(\mathcal{T}\) 是 \(X\) 的上拓扑。

另外一个例子,定义 \(\mathcal{T}_2=\{\emptyset,\{a\},\{b\}\}\),那么 \(\mathcal{T}_2\) 不是 \(X\) 上的一个拓扑。因为

\[\{a\}\cup\{b\}=\{a,b\}=X\notin\mathcal{T}_2\]

所以 \(\mathcal{T}_2\) 不是 \(X\) 上的拓扑。

最后几句话。

(1)例子越简单,越具体,越能理解抽象的定义与定理;

(2)例子不能代替证明,只能帮助理解;

(3)高年级的课程,总是能在低年级课程里面找到例子。

Posted on

从会计中专生到大学数学老师:我是怎么自学数学的

我本来是中专生,专业是会计。后来自学数学,考取了数学专业的研究生,毕业后,去大学教数学。

我第一次接触高等数学,是中专毕业三年以后。那时候,连三角函数是什么东西我都弄不清楚。可以说,我是连高中数学的基础都没有。之前虽然在中专学过一年半的数学,但是一来时间过得太久,二来本来就学得不多,学得不好。

那时候的自学考试,是完全的“自学”。我在一个偏远山区的乡政府里上班,要去县城的话,一天只有一班车。学习的资料,除了自学考试的教材,就没有了,周围也没有别人参加自学考试,更不用说找到懂数学的人了。那时也没有什么学校开办自学考试班,就算是有,也没办法参加,一没钱,二没时间。

听其它的朋友说过一个故事,说有一个人参加自学考试,其它十二门都考过了,就高等数学考了好几次,都不及格,在最后一门课程竟然放弃了!

那个时候,自学考试一年考两次,一月份报名,四月份考,七月份报名,十月份考。我拿到高等数学教材以后,看了一个月的书,结果是连极限的概念都没弄懂,后面只有两个月的时间,把剩下的部分勉强学完了,去参加考试,结果差几分,没及格。后来再考一次,六十几分,总算是过了。

专科考完之后,我一边考研,一边考本科阶段自学考试。本科阶段的数学称为《高等数学(二)》,内容是线性代数与概率统计,这次是一次性考过,成绩忘记了。这次可能是因为考研需要要考这两门,一来学习时间更多,二来有了前次考试的经验,学起来更有效率一些。在本科还差四门课程就考完的时候,考上了研究生,就没有继续考本科课程了。

第一次参加考研,成绩是不忍卒睹,再一次参加考试,数学还是没能上线。再下一次,准备考试时,整整做完了一本高等数学习题集,又将一本线性代数教材的课后习题全做完,只是概率统计没能做太多的习题。这一次的考试,数学的成绩是62。那时候的总分是 100分, 数学单科分数线经常是 50 分,有时候甚至是 45 分上线。62 分,算得上是难得的高分了。

我记得那一年去学校研究生院查分,老师先问我几门公共课的分数,我报了我的分数后(英语61,政治61,数学62)以后,老师非常惊讶:公共课这么高的分数,怎么会没上线?(我总分324,分数线325,差一分上线)因为两门专业课分别为69分和71分,对于其它同学,专业课动不动就八、九十分来说,我这专业课分数跟没学差不多。

后来,听其它同学说,会计专业(或者经济专业)的专业课的考试题,很多都是老师在课堂上讲过的,或者曾经是这门课的作业,这对我来说,极为不利。于是在那一年,决定换专业,转学理工,考虑的就是理工科,不管哪个学校,内容应该都差不多,不会因为不同的老师有太大的差异。

考虑过后,理工类的课程,我只学过几门数学,所以决定转学数学。我学过的是高等数学、线性代数及概率统计,数学系对应的课程为数学分析、高等代数与概率统计。于是,那一年又将没有学过的数学专业部分的内容学了一遍。也正是那一年,我考上了研究生。

在学校通知复试的同时,学校通知我需要加考两门专业课(我是专科生,又是跨专业),于是,接到通知后的两个星期内,我又突击学习了两门数学专业课:解析几何和常微分方程。当时捡了最重要的部分学习,最后通过了复试。

入学以后,我的入学成绩是全班同学的最后一名,数学基础是所有同学中最差的。入学时,满打满算,我也就学了五门数学课程。在上研究生课程时,很多课程没法听懂,因为先修课程没学过。这期间只有不断地补本科的课程,才能跟得上研究生课程的学习。又因为没办法去跟本科生一起上课,又只有自学。复变函数、实变函数、泛函分析、抽象代数、数学物理方程这些课程都是这段时间补上的。毕业时,总算是补上了本科阶段的数学知识。

研究生毕业,进入大学教书以后,我花了大量业余时间去学习读研时没弄懂的内容。这也是我的一个个性,以前没弄懂的东西,总是想方设法去弄懂。这样持续几年以后,将以前读研时没弄懂的,缺的知识慢慢补上来,最后终于能够独立地进行数学研究,发表几篇不入流的数学论文,算是一个真正的数学工作者了。

在我自学数学的这些年中,走了不少冤枉路,特别是在头几年,学习方法和学习效率都不好。幸好慢慢地也积累了一些学习的经验,现在总结一下,可供同学们参考,希望对同学们能有所帮助。

一、教材。我在学每一门课程时,手头都备有好几本教材,除了开始的那段时期外,那时候没地方买书。 不同的教材,叙述的方式都不尽相同,相当于不同的老师,教学的风格都不一样。而且,不同的教材,对同一个问题的叙述都不一样,解释的角度也不一样。如果在一本教材里,某个问题你看不懂,也许换一个教材,换一个说法你就懂了。

当然,这些教材里,你需要选一本作为主要的教材,以这本教材作为学习的主线和主要顺序,其它的教材,在需要的时候参考,没必要每一本教材都完整地看一遍。

二、关于看书。我最大的教训在这里。以前学的专业是会计,又爱看小说。看书的时候,往往一目五行甚至十行,对于感觉不重要的部分或者不感兴趣的细节,往往直接跳过。对于很多解释性的文字,往往直接忽略。这样看书的速度很快,也不太影响专业知识的获取。但是看数学书就不一样了,看数学书,得一行一行地看,一个字一个字的看。有时候一个字没看到,就理解不了 一个定义或者定理。解释性的文字,不看的话,就不能很好地理解前面的讲述的内容。所以看数学书,一定仔细,不能略过任何一部分。

另外,看数学书,往往需要看一两行或者一两段,就停下来思考一下,自己是不是真懂了这一部分,能不能够用自己的话将这一部分解释清楚,能不能自己给出一个具体的例子等等。这些都是能够检验你是不是真正理解了这些内容。

三、关于例题。书上的例题应该自己动手做一遍。看懂例题是没有用的。我刚开始学数学时,看完例题就去做题,可经常做不对,又只好回来看例题,对照着例题,一步一步地看,看看自己做的题到底是什么地方出错了。后来,每个例题都自己先做一遍,再去做习题,这样做题的准确率更高了,做题的思路也更清晰,做题的速度也更快了。

做例题,不能看着它的解答一步一步跟着做,这样做出来的例题,也不是你的。你需要将例题的解答盖住,把例题当成习题来做,做完后再对照解答,看看不没有什么地方没有掌握。如果不能一次将例题从头做到尾,就证明这个例题你没有掌握。

四、关于做题。没有哪一个人能够不做题就学会数学了的。很多的数学教材在序言里会来这么一句:习题是本教材的一部分,同学应该尽量们多做课后的习题。

要想完完全全掌握一门数学课程,应该做完一本习题集,至少至少应该做完书后的习题。我前面几次考研,数学都考得很惨,但当我做完一本高等数学习题集,特别是做完习题集里面所有不定积分的题目时,突然感觉高等数学好简单!再之后,做完了一本线性代数课后的习题,也感觉线性代数变得简单多了。当年的数学就考得比较理想。

五、关于习题集。习题集应该是只有答案没有解答的习题集。你做完了知道自己做得对不对。不对的话,再仔细检查自己错在哪里。查错的过程能让你的理解能力提升一大截。有解答的习题集让你不自觉地去看它的正确解答,远不如自己查出自己错在哪里对你有用。

以上这些就是我这些年学习数学的经验,希望能对你有用。如果你觉得有用,可以推荐给你的同学朋友,谢谢!

Posted on

怎么求矩阵的列空间和零空间

列空间和零空间都是 \(mathbb{R}^n}\) 上的线性子空间,听起来很难的样子,其实求它们并不算很难的一件事。在做完初等行变换,把矩阵变成行阶梯形后,列空间的基就是每一个非零行的第一个非零元所在的列所对应的原矩阵里的列向量。而求零空间,其实就是求齐次方程的解空间。我们来具体讲一下怎么求这两个空间。

因为向量空间完全可以由其基表示,所以只要求出它的基就可以。现在我们讲一讲怎么求列空间的基。只需要两步就可以。
第一步:将矩阵化成行阶梯形;
第二步:找出每一个非零行,第一个非零元所在的列,对应的原矩阵里的列,就是列空间的基。

我们来看一个例子:设\(A\) 为如下的矩阵
\[
\begin{pmatrix}
1&4&8&-3&-7\\
-1&2&7&3&4\\
-2&2&9&5&5\\
3&6&9&-5&-2
\end{pmatrix}\]

通过初等行变换,它可以变成

\[
\begin{pmatrix}
1&4&8&0&5\\
0&2&5&0&-1\\
0&0&0&1&4\\
0&0&0&0&0
\end{pmatrix}\]

现在已经变成了行阶梯形矩阵了。我们只需要找到每个非零行的首个非零元就知道列空间的基了。第一、二、三行都是非零行,它们的首个非零元在第一、二、四列,所以,列空间的基是原矩阵里的第一、二、四列,也就是说,列空间 \(Col A\) 的基由下列三个向量组成:

\[
\begin{pmatrix}
1\\
-1\\
-2\\
3
\end{pmatrix},
\begin{pmatrix}
4\\
2\\
2\\
6\end{pmatrix},
\begin{pmatrix}
-3\\
3\\
5\\
-5
\end{pmatrix}
\]

或者说 \[{\rm Col} A= {\rm span}\left(\begin{pmatrix}
1\\
-1\\
-2\\
3
\end{pmatrix},
\begin{pmatrix}
4\\
2\\
2\\
6\end{pmatrix},
\begin{pmatrix}
-3\\
3\\
5\\
-5
\end{pmatrix}\right)\]

现在我们转到怎么找零空间。由零空间的定义,\(Null A=\{\vec{x}|A\vec{x}=0\}\),所以,找零空间就是解方程组 \(A\vec{x}=0\}\) 。我们仍然以上面的 \(A\) 为例。我们先将它化成行最简形(RREF)
\[
\begin{pmatrix}
1&4&8&0&5\\
0&2&5&0&-1\\
0&0&0&1&4\\
0&0&0&0&0
\end{pmatrix}
\sim
\begin{pmatrix}
1&0&-2&0&-3\\
0&1&\frac{5}{2}&0&-\frac{1}{2}\\
0&0&0&1&4\\
0&0&0&0&0
\end{pmatrix}
\]

它的解是
\[\vec{x}=
C_1\begin{pmatrix}
2\\
-\frac{5}{2}\\
1\\
0\\
0
\end{pmatrix}+C_2
\begin{pmatrix}
3\\
\frac{1}{2}\\
0\\
-4\\
1
\end{pmatrix}
\]

所以零空间是
\[
Null A={\rm span}\left(\begin{pmatrix}
2\\
-\frac{5}{2}\\
1\\
0\\
0
\end{pmatrix},
\begin{pmatrix}
3\\
\frac{1}{2}\\
0\\
-4\\
1
\end{pmatrix}\right)
\]