数学学习和解题秘诀

数学学习和解题秘诀

吴金闪

数学学习秘诀

数学学习秘诀:搞清楚新学的概念和已经学会的概念是什么关系。数学是思维的语言。

提出和学习数学概念的例子就不整理在这里了。下面是这个秘诀在解题上的举例。

数学解题秘诀

数学解题秘诀:What——要算出来的是什么,已知的是什么;How——每一步都搞清楚算出来的东西是什么,这个东西和已经知道的东西有什么关系,和要算出来的东西有什么关系,它们是如何联系起来的;Why——这个联系用什么数学表达式来表达,为什么这样表达,为什么它们之间有这个关系;Meaningful——问题解决了吗,还有其他解决方案吗,我从中能够获取什么样的概念知识和思维方式、分析方法层面知识的启发?没准,还能进一步拓展一下,找到和其他问题或者知识之间的联系,甚至检验一下?

举例:一批工业最新动态信息输入管理储存网络,甲独做需6小时,乙独做需4小时,甲先做30分钟,然后甲、乙一起做,则甲、乙一起做还需多少小时才能完成工作?

先搞清楚每一个关系都知道如何转化成算式。包含:

  1. 在总工作量w、单位时间(每小时、每天、每个月等)的工作速度v、工作时间长度t之间的关系是:w=v*t=v+v+…+v (t个v加起来)。
  2. 如果有两个人工作速度分别是v1 和 v2,则他们合起来的工作速度是 v12=v1+v2。
  3. 如果整体w里面去掉一部分w1,则剩余的是 w2=w-w1。

这些最简单的关系和算式的对应关系搞清楚,以及为什么会有这样的对应关系也搞清楚(总共就四种关系:加法——和起来数一数,减法——整体里面去掉一部分,乘法——重复的加法,除法——重复的减法)之后,就可以通过上面的秘诀——先搞清楚每一步需要算出来什么、算出来的是什么,和其他的东西有什么关系,来解决更加复杂的问题了。

下面,我们来运用解题秘诀以及前面的关于三条简单关系的算式的知识来解决这个问题。

  1. 在这里,我们最后需要知道甲和乙合起来完成某个任务的时间,则我们肯定要知道当时要完成的任务的总量w2、甲和乙合起来的完成工作的速度v12。如果知道,就可以用w2=v12*t,或者t=w2/v12。
    1. 为了知道甲和乙合起来的完成工作的速度v,我们需要知道甲v1和乙v2各自完成工作的速度。如果知道,就可以用v12=v1+v2。
      1. 我们不能直接知道甲v1和乙v2各自完成工作的速度,但是,我们如果知道工作总量w,则v1=w/t1,v2=w/t2。
        1. t1已知为6小时,t2已知为4小时。完全已知。
        2. w未知,先留着。
    2. 为了知道要知道当时要完成的任务的总量,我们需要知道之前的任务的总量w和已经完成的任务的量w1。如果知道,就可以用w2=w-w1。
      1. 我们知道了甲的工作速度v1=w/t1,工作了t3=0.5小时之后,完成的工作量是w1=v1*t3。
      2. 剩余的工作量,如果原来最开始的工作量w已知的话,就是w2=w-w1=w-w/t1*t3。
        1. 仍然,除了w未知,其他都知道了,先留着w。
  2. 把这些关系合起来,我们有t=w2/v12=(w-w1)/(v1+v2)=(w-w/t1*t3)/(w/t1+w/t2)=(w-w/6*0.5)/(w/6+w/4)。分子分母同时乘以1/w,得到t=(1-1/6*0.5)/(1/6+1/4)=(1-1/12)/(2/12+3/12)=11/5 (小时)。

也可以把所有的量都写成以甲的工作速度v当作变量的形式。

  1. 如果已知甲的工作速度v,则工作总量为w=v*t1。
  2. 于是,乙的工作速度为v=w/t2=v*t1/t2。
  3. 则甲和乙合起来的工作速度是v12=v1+v2=v+v*t1/t2。
  4. 然后,甲工作半小时t3=0.5完成的工作量是w1=v*t3。
  5. 剩余的工作量是w2=w-w1=v*t1-v*t3。
  6. 剩下的工作由甲和乙共同完成,需要的时间是t=w2/(v1+v2)=(v*t1-v*t3)/(v+v*t1/t2)=(v*6-v*0.5)/(v+v*6/4)。分子分母同时乘以1/v,得到t=(6-0.5)/(1+6/4)=(11/2)/(5/2)= 11/5 (小时)。

记住,不管多么复杂,我们不过是用了这个数学解题秘诀:每一步知道要算出来什么,算出来的是什么,算出来的东西和已知的东西是什么关系,算出来的东西和将来要算出来的东西是什么关系,这些关系如何用数学表达式来表达。

列方程解应用题

列方程解应用题和前面的解题技巧实际上是一样的,不过,更简单,把任何未知的东西都先用一个字母来表示,然后只要顺着关系来想。

列方程求解应用题秘诀:

1. 找到最关键的东西(最关键的意思是知道了它就知道了很多其他东西),把它的量设为未知数;

2. 把其他的东西,按照这些东西和未知数所代表的东西的关系,写出来包含x的表达式;

3. 找到所有的东西之间的最后的大的关系,通常是一个不变量,或者一个等式,得到包含x的方程;

4. 求解方程(对方程左右两边不断地同时做加减乘除同一个数)得到x

5. x得到其他东西的量,回答问题。

举例:有四只盒子,共装了45个小球.如变动一下,第一盒减少2个;第二盒增加2个;第三盒增加一倍;第四盒减少一半,那么这四只盒子里的球就一样多了.原来每只盒子中各有几个球?

1. 找关键东西,设x:在这个问题里面,盒子里面的新的小球数量最关键,知道这个数量,就可以知道每个盒子原来的小球的数量。所以,我们假设“盒子里面的新的小球数量为x”。

2. 找关系,算其他的量:

第一个盒子减少了2个得到x个,所以,第一个盒子原来有x+2个;

第二个盒子增加了2个得到x个,所以,第二个盒子原来有x-2个;

第三个盒子增加了一倍得到x个,所以,第三个盒子原来有x/2个;

第四个盒子减少了一半得到x个,所以,第四个盒子原来有2x个。

3. 找到算出来的东西的量的之间的大的关系:在这里就是原来合起来是45个,也就是 x+2+x-2+x/2+2x=45

4. 求解方程:

4x + 0.5 x =45

4.5 x =45

9x = 90

x=10

5. 得到新的数量之后,算出来每个盒子原来的数量为:第一个盒子x+2=12,第二个盒子x-2=8,第三个盒子x/2=6,第四个盒子2x=24 个小球。

构造式解题

构造式解题秘诀以后再补充:转化,联系

代码同时更新到Gitee和github

由于国内同步到Gitee更方便,国外同步到github更方便,需要把同一套代码同时同步到Gitee和github。把这个过程记录下来。

同时,由于github禁止了用户名和密码来认证,因此,这里对于Gitee和github统一采用ssh认证。注意,选择ssh认证之后,代码库clone的命令的细节会和用https的方式不同。

第一步,生成ssh key公钥和私钥对。可以采用不同的协议。在这里用rsa格式。进入~/.ssh目录下,输入命令:

$ ssh-keygen -t ed22519 -C "YourGIthubEmailbox" -f "github_id_rsa" 

直接两次回车.会在文件夹下生成github_id_rsa和github_id_rsa.pub.Gitee已经不允许rsa编码的公钥,因此,改成ed22519。

第二步,把github_id_rsa.pub的内容添加到github的SSH Keys中,取个名字,保存。

针对Gitee,重复这个过程。

第三步,在~/.ssh文件夹下新建config文件,添加以下内容

# gitee 
 
Host gitee.com 
HostName gitee.com 
PreferredAuthentications publickey 
IdentityFile ~/.ssh/gitee_id_rsa 
 
# github 
 
Host github.com 
HostName github.com 
PreferredAuthentications publickey IdentityFile ~/.ssh/github_id_rsa 

第四步,添加识别 SSH keys 新的私钥。为了让 SSH 识别新的私钥,需要将新的私钥加入到 SSH agent 中

$ ssh-agent bash  
$ ssh-add ~/.ssh/github_id_rsa
$ ssh-add ~/.ssh/gitee_id_rsa

第五步,测试是否连接成功。运行如下命令,看是否受到欢迎信息:

$ ssh -T git@github.com
$ ssh -T git@gitee.com

这样认证方式就设置好了。下面,我们来建立代码库,来使用这个ssh key认证方式和Gitee以及github连接。

第一,建立本地代码库和远程相连。假设Gitee和github都已经建立代码库,test.git。我们需要查看代码库,获取这个代码库的ssh访问地址,例如 git@gitee.com:XXX/test.git。然后把这个地址通过 git clone和git remote add从其中一个远程代码库创建本地代码库,以及把新创建的本地代码库连接到另一个远程代码库。

$ git clone git@gitee.com:XXX/test.git
$ git remote add github git@github.com:XXX/test.git

第二,同步代码库。用git config -e 或者用命令行git remote set-url origin来修改config文件,得到以下的效果(也就是origin下面包含两个远程库的信息,两个远程库分别有自己的名字和信息):

[core]
repositoryformatversion = 0
filemode = true
bare = false
logallrefupdates = true
[remote "origin"]
url = git@gitee.com:XXX/test.git
url = git@github.com:XXX/test.git
[branch "master"]
remote = origin
merge = refs/heads/master
[remote "github"]
url = git@github.com:XXX/test.git
fetch = +refs/heads/:refs/remotes/github/
[remote "gitee"]
url = git@gitee.com:XXX/test.git
fetch = +refs/heads/:refs/remotes/gitee/

有了这个状态,就可以通过git add,git commit和git push 来同时把本地库文件push给两个远程库,以及用git pull来从两个远程库pull到本地。如果需要针对独自远程库的push和pull,则用相应的名称,gitee和github就可以。例如

git remote update 同时从两个库拉过来本地;

git pull github master 仅仅从github库拉过来本地;

git push github 仅仅从本地推送到github。

当然,如果只为了同步速度,仅仅使用Gitee也可以,只需要把Gitee的ip地址修改成154.213.2.253。这个地址对于国外用户,会快很多很多。可以通过修改/etc/hosts文件,或者修改ssh下的config文件。

Overleaf和Github(或者Gitee)同步

在Overleaf上编写latex文档特别方便。但是,每次要同步到本地比较复杂,如果忘了同步,还会造成进度丢失或者搞混。如果能够把本地编写的内容和Overleaf编写的内容自动同步起来,就能解决这个问题了。于是,我搜索了一下,Overleaf syc with Github,还真的已经有了:见这里How do I connect an Overleaf project with a repo on GitHub, GitLab or BitBucket?

其中一种简单的方法就是,在Overleaf现有的project基础上,通过Overleaf提供的同步到Github功能,自动在Github的用户账号下创立一个供同步用的项目,来存储你撰写的tex文档各种源文件。然后,你在本地电脑上把Github项目的内容clone下来(顺便,Github需要通过两步确认方法来同步文件了:下载一个两步确认app,用来生成一个实时代码的,然后把这个app和Github账号关联上,最后在Github账号里面产生一个personal token)。就可以实现自动同步了。

不过,每次在Overleaf完成之后,还是需要手动点击一下更新到Github,以及每次其他渠道更新到Github的,也需要在Overleaf手动点击更新到Overleaf项目。这还是有不方便的地方。

BNU论文模板字体问题

最近帮学生修改论文,由于需要多人同时做修改,因此,要么需要用git或者overleaf。但是,在overleaf以及在本地linux系统上,都不能通过编译。花了点时间折腾(其实11年的时候就折腾过一次,那个文件被我弄丢了),发现,主要问题就是bnuthesis.cls里面的三行字体代码:

\setmainfont{Times New Roman}
\setsansfont{Arial}
\setmonofont{Courier New}

解决方法是:要么注释掉这三行代码,要么在本地linux下安装微软核心字体文件。

安装微软核心字体文件的方法是(https://itsfoss.com/install-microsoft-fonts-ubuntu/):
sudo add-apt-repository multiverse
sudo apt update && sudo apt install ttf-mscorefonts-installer
sudo fc-cache -f -v
在overleaf上用的时候最简单的方法就是注释掉这三行。

问题发生的原因:做这个模板的人用的应该是windows系统,确实也照顾了大部分用户的需求。但是,在linux下,我们有这些字体的很好的替代品。建议这个模板的制作者,加一个条件判断,或者直接用开源的字体或者已经包含在其附件字体文件中的字体来替代。

《线性代数》课程大纲

课程名称: 线性代数
英文名称:Linear Algebra

【先修课要求】高中数学。推荐已经学习过一门编程语言(随着课程学习也可以),学过集合和映射方面的知识、数学建模方面的知识就更好了,但是不做要求。
【学生预计课程所花时间,小时,按照课程成绩良好以及以上学生粗糙估计】32(上课)+ 80(看书完成作业)+ 30(课程项目)+10(复习和考试)= 152。平均每周大约10小时。

课程简介

线性代数的矢量和矩阵为描述世界提供了具有一定普适性的数学结构,数值线性代数是最重要的数值计算方法。本课程主要包含四个模块的内容:矢量空间,矩阵论,数值线性代数,线性代数的应用案例。本课程也为物理学、系统科学、数值计算的多门课程提供知识上的基础。

课程目标

这门课程的知识上的目标是帮助学生建构从集合映射到线性空间的数学概念体系,以及学会做数值线性代数。同时,在本课程在思维方式上的目标是把问题抽象和转化成矩阵和矢量的问题的能力,依赖抽象概念展开思考的能力。注意,大量的对象都可以被抽象为矢量和矩阵以及张量等数学结构。因此,本课程的知识内容尽管从数学上就是矢量、矩阵、张量,但是在应用上,会通过例子展示其普适性和威力。顺便,本课程也会通过应用部分的例子来稍微展示一下线性代数和系统科学学科联系。

课程设计思想

本课程的设计原则是:按照课程目标来决定授课内容和授课方式,内容要体现这个学科的学科大图景——典型对象、典型问题、典型思维方式、典型分析方法、和世界还有其他学科的关系。
这个原则背后的理念是:学习是为了创造知识、创造性地使用知识、欣赏知识的创造和创造性的使用。为了这个目的,不仅仅要学会知识,有系统的知识,还要从知识的学习、知识的创造过程的学习中体会到如何创造知识和创造性地使用知识,也就是学科大图景。

本课程的设计方法是:绘制学科概念地图,包含基本概念、核心概念,概念之间的联系,以及概念和学科大图景的联系。以学科概念地图为基础选择所要教授的概念和概念关系,以及回答每一项所选择的内容的理据性——尤其是从研究工作以及概念依赖关系的角度的理据性,也就是为什么这些内容是值得学习的。具体设计过程,除了课程整体概念地图,就不在这里给出。

LinearAlgebra
图1:《线性代数》主要概念、概念关系、学科大图景(课程目标)。

课程目标:线性代数给描述世界提供了最重要的数学结构,数值线性代数是最重要的数值计算方法。因此,这门课程的知识上的目标是帮助学生建构从集合映射到线性空间的数学概念体系,以及学会做数值线性代数。同时,在本课程在思维方式上的目标是把问题抽象和转化成矩阵和矢量的问题的能力,依赖抽象概念展开思考的能力。注意,大量的对象都可以被抽象为矢量和矩阵以及张量等数学结构。因此,本课程的典型对象尽管从数学上就是矢量、矩阵、张量,但是在应用上,要通过例子展示其普适性和威力。顺便,本课程也会通过应用部分的例子来稍微展示一下线性代数和系统科学学科联系。

按照这个目标所设计的本课程的四个模块是:矢量空间,矩阵论,数值线性代数,线性代数的应用案例。传统的以行列式和行列式的计算,尤其是手动计算,为基本目标的线性代数是完全不能实现上面的目标的。

另外,从教学方法上来讲,本课程采用的教学方法包含理解型学习、以项目为基础的学习、创造体验式学习、讲给别人听(同伴教学法)。这需要学生已经具有或者说能够被培养出来一定的自学能力,愿意投入时间去思考和完成课程项目和作业。大量的阅读材料和研究实例,以及学生在课后对阅读材料和研究实例的整理——制作反映学生理解和思考的概念地图,以及在此基础上完成课程项目。这门课程的缺点是:对学生的理解力要求比较高,对学生的时间投入要求比较高,对学生的学习动机也有要求。对学术感兴趣的学生可以从中学到更多东西。

培养学生的学习能力,帮助学生学会知识的同时学会学科思维方式体会好学科大图景,同时需要学生的时间和思考深度的投入是本课程的特点。如果这些不是你的目标,或者你觉得做不到要求的时间和思维深度,请不要选择本课程

教学内容和学时分配

  • 第零章 课程目标和学习方法(3学时,选修)
    • 0.1 课程基本目标:知识目标和思维方式目标
    • 0.2 理解型学习方法和概念地图
      • 0.2.1 批判性思维和成长型思维
      • 没有经过我自己的理性检验(观察实验或者计算推理)的东西不能成为我下一步思考和认识世界的基础。举例:平面几何(论证中每一个步骤都需要理由,都可能不成立)、伽利略关于“重物落的快”的论证(不是结论对就是对的,或者论据对就是对的,不是大人物说的就是对的,通过替换对象来考察隐藏的逻辑假设以及凸显事物的本质特征)
        成长型思维:做中学、教中学、挑战着学、创造中学、任何时候都可以再进步。

      • 0.2.2 系联性思考
      • 未知联系已知就是理解,构建理解的基础和框架,具有系统性(核心和成长),和逐条记忆检索相反。注意,把联系表达成网络和矩阵之后,还可以分析和计算联系:系联=联系1+联系2+联系3+⋯,从孤立到有联系,从直接联系到间接联系,从个体到整体

      • 0.2.3 学科大图景
      • 一个学科的典型研究对象、典型研究问题、典型思维方式、典型分析方法、和世界还有其他学科的关系。

      • 0.2.2 概念地图和概念地图的制作
    • 0.3 科学、数学与现实的关系
      • 0.3.1数学作为语言
      • 思考的语言,集合、映射的语言的重要性
        举例:“苹果的加法运算”到底是定义在哪一个集合上的运算:苹果的集合、苹果数量的集合、还是幂集

      • 0.3.2 数学作为结构
      • 从事物中抽象出关系,把关系整理成为数学结构,找到一个事物自身最切合的数学结构
        举例:位置坐标存在加法运算吗,还是位移矢量?矢量加法的一般性和举例
        举例:交换律不满足的操作(翻转三角形),矩阵

      • 0.3.3数学建模
      • 给事物的状态,事物的状态的变化——也就是状态上的操作,找最合适的数学结构
        举例:位移的矢量模型,运动物体的质点模型
        举例:最优编码与信息熵:概念是从现实世界里抽象出来的

      • 0.3.4 科学的实用主义和科学的可证伪性
      • 科学为现实提供了可计算的可证伪(但是迄今为止还没有被证伪的)心智模型

      • 0.3.5 归纳与演绎的逻辑
      • 归纳的作用和局限,天下乌鸦一般黑,归纳当做概率性推理

  • 第一章 矢量空间(3学时讲授)
    • 1.1 集合映射
    • 1.2 群和域
    • 1.3线性性和线性空间、线性空间上的算符
    • 1.4 内积、矢量空间和对偶矢量空间
    • 1.5 厄米算符谱定理、算符和矢量的表象理论和Dirac符号
  • 第二章 矩阵论(10学时讲授+1学时习题课)
    • 2.1 矩阵的本征值和本征向量
    • 2.2 矩阵的奇异值分解
    • 2.3矩阵的逆和广义逆
    • 2.4 矩阵的迹和行列式
    • 2.5 Jordan标准型
    • 2.6 矩阵微扰论
    • 2.7 Perron–Frobenius定理
  • 第三章 数值线性代数(3学时讲授+1学时习题课)
    • 3.1 矩阵相乘的Strassen算法
    • 3.2 本征值问题的求解
    • 3.3线性方程的解
    • 3.4 子空间迭代求解
    • 3.5数值线性代数系统
    • Lapack、Petsc、Slepc等求解本征值、奇异值、线性方程的解,并行程序设计

  • 第四章 线性代数应用(8学时讲授+3学时课程项目报告,按照学生情况选学其中几个,其他当做课程项目)
    • 4.1 矢量和量子力学
    • 矢量描述量子系统的状态,矩阵是算符,Green函数和矩阵

    • 4.2 矢量和自然语言处理
    • 矢量表示词汇、句子、段落、知识等语言单位

    • 4.3 矩阵和网络谱理论
    • 网络邻接矩阵和其他矩阵的本征值或者奇异值和网络结构的关系

    • 4.4 矩阵、Markov过程、PageRank算法
    • Perron–Frobenius定理,Markov随机过程,不变分布

    • 4.5 矩阵和投入产出分析
    • 从直接投入产出系数到间接投入产出系数,矩阵微扰论用于投入产出分析

    • 4.6 矩阵和Ising模型
    • Ising模型的转移矩阵求解

    • 4.7 矩阵奇异值分解和主成分分析(PCA)
    • 取少数几个本征矢量或者奇异值矢量的近似

    • 4.8 矩阵微积分和机器学习
    • 4.9 矩阵和非线性动力学
    • 不动点附近的线性稳定性分析

    • 4.10 矩阵和控制论

教材与学习资源

教材:
Sheldon Axler《Linear Algebra Done Right》
吴金闪《系统科学导引》

参考书:
W.I.B. Beveridge, 《The Art of Scientific Investigation》
Karl Popper 《The Logic of Scientific Discovery》
Timothy Gowers,《Mathematics: A Very Short Introduction》
Albert Einstein and Leopold Infeld,《The Evolution of Physics》
Richard Feynman, 《The Character of Physical Law》
Richard Feynman,《The Feynman’s Lectures on Physics, III》
吴金闪《教的更少,学得更多》
吴金闪 《二能级体系上的量子力学》

五、考核方式
课程考核包括以下几项:
(1)作业(50%)
(2)课程项目(10%)
(3)期末闭卷考试(40%)

大纲起草人:吴金闪