仓库源文

.. Kenneth Lee 版权所有 2018-2020

:Authors: Kenneth Lee :Version: 1.0

严格按定义进行逻辑推演


本文是出差途中远程教女儿做作业,题目也比较简单,但涉及一些基本的初中物理的思考 角度问题。

题目如下:小车A的速度-时间的关系如下:

    .. figure:: _static/速度时间关系.jpg

阴影部分就是小车的运动距离。

问题1:小车A在0-1s内,平均速度是多少?

问题2:如果在时刻0的时候,在小车A后面0.9m的位置释放一辆匀速运动的小车B,小车B在 什么速度范围的时候永远不会遇上小车A?什么速度范围的时候会遇上小车1次?

我说过很多次了,其实中学物理,从考试的角度来说,基本上就是简单数学。所以,关键 问题都是你怎么把一个物理问题转换为一个数学问题。所以,大部分时候,在于你能否严 格按照定义来转换物理描述为数学描述。转换完成后,因为初中涉及的物理知识都是线性 关系,所以都是一次方程问题,和你们学的数学比,就不是一个档次的问题,会变得非常 简单。

第一个问题,其实是在要你先提前学初步的积分(以前给你讲过),但你可以无条件使用 它的这个条件“阴影部分就是小车的运动距离”,那么我们就可以严格按定义来解决问题:

    平均速度=距离/时间

距离怎么算?这个题目中直接给你提供了公式了(阴影的面积),所以距离就是三角形的 面积公式:

    .. math:: S = 0.2m/s \times 1s \times \frac{1}{2}

时间是1S。

这样平均速度就可以算出来了。

第二个问题,我们也是无条件按定义来抽象数学模型。我们把时刻叫做t,小车A的离起点 的距离叫做

    .. math:: S_a

小车B离起点的距离叫

    .. math:: S_b

小车B的速度叫

    .. math:: S = 0.2m/s \times 1s \times \frac{1}{2}

那么,可以列出如下公式:

    .. math:: S_{a} = \frac{1}{2} \times t \times 0.2

(这个我们前面已经学会了)

    .. math:: S_{b} = -0.9 + V_{b} \times t

(这个是我们本来就会的)

从数学的角度来说,两个小车相遇,就是两个S相等,所以我们就有了方程:

    .. math:: \frac{1}{2} \times t \times 0.2 = -0.9 + V_{b} \times t   (其中:t\geq 0)

化简:

    .. math:: t = \frac {0.9} {V_{b} - 0.1}

t必须是正数,Vb可以如何取值,这个就不用我说了。

这个题目给我的感觉,是出题老师有点江郎才尽,不得不超纲出题。对于没有积分基础的 学生,这个题目其实是有障碍的,因为你不一定能直接掌握“阴影部分的面积就是小车A的 运动距离”这句话的意思。

但无论如何吧,如果你严格按定义来列方程,这个题目就是可解的。

我其实更想强调的是,这样“江郎才尽”的老师说不定会有很多的,所以,要想领先,还是 要超纲学习,人家出题可以有办法保证不超纲(比如这题这样,临时给你补一个知识点) ,但你不超纲学,其实在考试的时候还是会吃亏的。初中这个问题不明显,高中就很明显 了,所以,还是提前学一下微积分和统计,这个会省很多事,比上补习班有用多了。

补充1:关于速度的深入理解

我们就着这个问题把积分这个概念复习一次。首先我们以前一直可以理解:速度是距离除 以时间。我们会自然而然地认可了“某个时刻的速度”这个概念。但把这两个概念综合想一 下——到底什么是“某个时刻的速度”?为什么“某个时刻”会有速度的?如果严格按前面的定 义,某个时刻,也就是时间为0,那么这个时间内的距离就是0。严格来说,速度就是0除以 0,这个在数学上没有定义,那么“某个时刻的速度”到底是什么?

数学是一种抽象,它不是现实,当它不能解释现实的时候,我们就会好好回想一下,到底 现实是什么。我们测量速度的最初方法,确实是测量一个物体从一个点到另一个点的时间 ,然后用这两个点的距离来除以这个时间,就认为这是当时的平均速度了,好比这样:

    .. figure:: _static/平均速度.png

在时刻0,小球在一个位置,到10m的时候,它运动到10m外的第二个位置,我们看看表,时 间到了1s,这样,我们就认为这段时间内小球的速度是1m/s。

如果用上面那副图的样式来表示这个速度和时刻的关系,就是这样的:

    .. figure:: _static/平均速度2.png

这是我们的测量结果,我们觉得是这样的,但其实不一定,但我们因为只在10m外有检查点 ,所以我们认为这个距离里面的速度是1m/s,如果我们要确切知道是不是,我们就要在中 间增加检查点,比如我们在5m的地方增加一个检查点,发现这个检查点碰到小球的时刻是 5s,这样,我们至少可以认为,“前5s和后5s的(平均)速度是相同的”。人是具有联想能 力的,我们很容易就会把这个过程在思考上无限细分下去,这样,我们就有了一个“某时刻 的速度”的概念了。比如,下面这个就是我们理解的匀速运动的瞬时速度概念:

    .. figure:: _static/平均速度3.png

如果小车不是匀速的,而是前面那个小车A的例子那样,速度越来越快的,其实我们看到的 是这么一个概念:

    .. figure:: _static/平均速度4.png

很明显,如果我们把每个小长方形收窄到足够小的程度,在每个小时间片内,我们就认为 那个小时间片内的“平均速度”,就是那个时刻的速度。而这时这些小长方形的面积,也无 限接近于三角形的面积。

这种数学方法,就叫积分。它可以把一个函数,变成它和横坐标以及前后垂线共同组成的 面积的函数。而微分,是反过来的方法,是知道那个面积的函数,求速度的函数。

微积分相对中学我们一般学习的方法,是更高级的数学方法,因为它已经有很多很成熟的 公式和定理了,比如我们如果知道速度的函数是v=0.2t,那么我们可以直接用积分公式, 知道距离的函数是

    .. math:: s = \frac{1}{2} \times 0.2 \times t^{2}

(注意:这是上例的一个特例,不是实际的积分公式,积分需要给定前后两个时刻来计算 的)。反过来,如果我们知道距离的函数,我们可以直接用微分公式直接知道速度的函数 。而且,多项式的微分和积分,等于每一项的微分和积分的和。有了这样的数学工具,你 解决问题的速度就会快很多。这里不是要教微积分,那个我们可以专门来学,我这里只是 让你看到,高一个级别的数学工具,到底可以从什么角度上解决问题而已。

从这些分析我们可以看到,瞬时速度这个概念,其实是我们对现实一个极端化抽象的描述 ,它不那么可靠,等你们开始学习连续,平滑,左右连续和平滑这些概念,就会发现前面 这样的细分方法,其实也是有问题的。但这正是科学的特点。我们通过宏观类比去理解微 观,抽象成数学模型,然后我们通过实验来确认这个数学模型是否成立,到我们发现数学 模型和实验结果的差距的时候,我们就真正理解那个微观的特性是什么了。所以,没有数 学思维,你就基本上失去理解这个世界的现代视野了。

严格按定义进行逻辑推演2


本文是前问的一个续写。

前两天和女儿讨论这个问题:

如下图,两个固体A、B静止放在水平桌面上,问:A的重力和桌面对A的支持力是一对平衡 力吗?

    .. figure:: _static/对称性1.png

这个问题很简单,显然答案是:否。

现在关键的问题是:为什么?

一种回答是这样的:因为B的重量压到了A上,所以A对桌面的作用力是A+B(假定A、B是两 个物体的重力),桌面的支持力应该是A+B,这和A的重力不相等,所以它们不是平衡力。

这个答案就叫“不严格按定义进行推演”,因为里面的各种说法,没有任何理论可以支撑, 例如:凭什么B的重量压到了A上,A对桌面的作用力就得是A+B?

严格按定义进行推演,我们就得回到我们基础的定义和定律上,定义我们这里不重复了, 我们只讨论定律,两个基本的经典物理定律:

  1. 当物理保持静止或者匀速直线运动的时候,作用在物体上的合力为0

  2. 作用力等于反作用力,方向相反

请特别注意这两个定律描述的对象:第一个定律描述的对象是同一个物体。第二个定律描 述了两个物体:如果两个物体互相作用,那么A物体对B物体的作用力,等于B物体对A物体 的作用力。

所以,上面那个问题应该分别分析如下:

对于B物体,它受万有引力的影响,重力为B,由于它静止,根据定律1,它的合力必须为0 ,平衡重力的这个力只能是A给他的作用力,所以A对B的作用力等于B:

    .. figure:: _static/作用力和反作用力2.jpg

对于物体A,由于作用力等于反作用力,既然A对B有作用力B,所以A受到B的反作用力B。A还受到重力A,为了和这两个力平衡,桌子对A的作用力必须等于这两个力的合力:

    .. figure:: _static/作用力和反作用力3.jpg

最后是桌子:由于桌子给了A作用力A+B,根据定律1,桌子受到A的压力就是A+B。

所以,A受到的重力不等于桌子给他的作用力,它们虽然都作用在A上,但它们不平衡。

很多成人可能觉得这个问题很简单,但其实很多人到了工作中,都没有能够很好地精确地 按定义和定义所描述的“主语”来思考问题的。今天有人推给我这样一个问题:

    | 栈究竟在哪里?
    | 如果运行1+1=2这样一个程序,这段程序,经过页表分配,
    | 被加载到内存中以后。cpu从内存中取出,把相加指令和
    | 数据通过运算单元得到结果。然后把结果,返回到内存中。
    | 这样一个过程中,哪个位置是栈的位置呢?当运算发生时,
    | 如果发生中断,栈指针寄存器中记录的是代码在内存中的地址吗。
    | 不太明白,所以提的问题也没叙述清楚。

良心一点说,这个问题还是经过思考了的,比那些“我刚进大一,想学Linux,如何入手?” 这样的问题好多了。但这个思考其实是不深入的。题主在某个地方听说了“栈”这个说法, 然后和他理解的编程过程相结合,希望理解一下栈是什么。

但定义呢?你看到的是哪个对“栈”的定义呢?那得从定义开始思考这个问题啊。比如你看 到了栈的定义是:

    | 在计算机领域,堆栈是一个不容忽视的概念,堆栈是一种数据结构。
    | 堆栈都是一种数据项按序排列的数据结构,只能在一端对数据项进行插入和删除。

那行,这很显然是个数据结构的定义,和计算过程没有关系,基于这个定义,你根本就不 会问上面那个问题。

也许你看到的是这样的定义:

    | 栈是操作系统在建立某个进程时或者线程(在支持多线程的操作系
    | 统中是线程)为这个线程建立的存储区域,该区域具有FIFO的特性,
    | 在编译的时候可以指定需要的Stack的大小。

那你首先看到的应该是进程或者线程创建的过程,而不是1+1=2这样一个过程,你应该去找 的是你的main函数被运行,被编译这样一个过程。

一旦你这样思考了,你就有可能发现语义和你的现实在哪里发生了交叉点,那个时候你出 来提问,回答你就能把知识传递给你了,否则,洋洋洒洒写一大堆,你觉得你懂,其实你 就没有懂。这个问题和上面的物理题是一样的。

基本的科学素养,是从中学的教育中培养起来的。我们觉得我们在思考问题,但我们的思 考如果没有回到“定义”本身上面,没有明确指向“定义”所指向的“主语”是谁,范围有多大 ,这些思考常常是没有意义的。这是我们每个中学生,中学老师,都应该慎重的问题。