安静分享 http://blog.sciencenet.cn/u/physicsxuxiao 致远

博文

刻舟:狄拉克函数的误用

已有 4030 次阅读 2017-1-1 21:04 |个人分类:乱七八糟|系统分类:观点评述

一、废话

     对于信息和信号行当的人而言,狄拉克函数就是我们平时说的冲击函数。

     如果你去读一本比较正规的《信号与系统》,那么你就会理解狄拉克函数的基本使用办法和条件。这里不牵涉你要学习泛函,或者像物理学家那样做出奇妙的解释,以致到最后你自己也被绕进去的地步。

     我们学校电力系有个家伙,比较蔫坏,一旦见到物理系的人,或者和物理学科较近的人,他就会做出谦虚热忱的样子跟你请教,如果一个电容,它的电压是V,突然和一容值一样,但是开始电压为0电容串联,那么两个电容最后的电压是多少呢?如果你告诉他结果是$frac{1}{2}V$, 他马上就会用无穷大电流来困扰你,假设你还没上当,他就会更改第二个电容的电压值。如果,你彻底晕菜了,他就会做出同样迷惘的样子,跟你讨论上半天;如果你最后总是给出正确的结果,他会一拍大腿,做出恍然大悟的样子,然后跟你道谢。

鉴于应行仁老师已经通过博客,解释过这个题目的解,所以我就不再重复这个问题的数学解释了。

我这里要针对的对象,是那些没有耐心或者看了也没完全看懂的朋友。我是按照一个工程师的套路,来解释如何使用狄拉克函数,即冲击函数的。除非你碰到一些很特别的情况,我的套路一般都是有效的。

而你一旦明白了这个套路,你也就非常容易明白,为什么岳东晓在刻舟系列中,误用了冲击函数。


二、狄拉克函数和矩形函数

一般介绍冲击函数,是采用如下定义:

          $delta(t)={begin{matrix}infty &t=0\0 & elseend{matrix}$                     (1)

和         $int_{-infty}^{infty}delta(t)dt=1$                                            (2)

一般学过大学的高等数学讲的积分,即黎曼积分,就知道这个定义很有点问题,因为既然无穷大只定义在t=0一个点,那么这个积分里的dt应该严格是零,所以这个积分就应该是零,而不应得到1。

绕开数学家的严格处理,我们工程师是这样来看待冲击函数的:冲击函数被定义为一个函数序列的极限。而这个函数序列使用的函数,第一是偶函数,第二要存在无限阶次的导数(无限光滑),第三则要满足其对t的积分的值为1。那么这个序列在$tto 0$的情况下的极限,就是冲击函数了。

因此,对于可能比较复杂的状况,你就需要选用某个函数序列中的某个函数,来分析函数的性态和表现。

对于一般的物理问题,我会选用矩形函数,原因是:(a)矩形函数沿时间轴移动,很容易将之变为偶函数;而时间原点的选取,一般情况下,基本不会影响物理规律的成立,因此也就不会影响方程的解所对应的物质运动情况;(b)虽然矩形函数不是无限光滑的,但是从工程意义上考虑,矩形行函数的陡直边总是可以用转折非常平滑和上升和下降非常快的曲线代替,所以这个条件一般不会对问题处理造成实质性影响;(c)通过规定矩形的底和高,就可以求出矩形的面积,而矩形面积不变正是求取函数序列极限的要求,因此我们很容易考察$tto 0$时,矩形的高的相应变化情况,进而让我们很容易对最后冲击函数是否实用做出判断。

三、刻舟之人起跳

   人在起跳时,从水平方向上看,人和船之间存在彼此之间反向推动的力,我们将这个力理想化,认为其一直恒定,对船(质量M)的力量为-F,那么人(质量m)受到的力为F,这个过程持续时间为$tau_{1}$,即人从开始起跳到起跳结束的时间。那么这个力的作用随时间的变化就是一个矩形函数了。

   在这个矩形函数起作用的时间之内,对于船,有方程:

                 $-Mv'_{M}-kv_{M}-F=0$, $0<t<tau_{1}$                               (3)

其中$-kv_{M}$,如前面刻舟系列所示,代表水的阻力,$v_{M}$是船的速度,而由起始条件$v_{M}(0)=0$,可以解出:

                 $v_{M}(tau_{1})=frac{F}{k}(e^{-ktau_{1}/M}-1)$                      (4)

而对于人,经此过程,速度从0变至$v_{m}(tau_{1})$,且满足:

                 $P=mv_{m}(tau_{1})=Ftau_{1}$                                         (5)

因此,在$tau_{1}to 0$时,只有$Ftoinfty$, 才有:

                 $v_{M}(tau_{1})to P/M$                                               (6)

容易证明,(6)式正好满足将人和船之间的作用看作碰撞过程,忽略水的作用,用一个冲击函数来表示人起跳的过程。这个也就是说,我们要求,人船之间的作用力F非常大,才能使用狄拉克函数来作为这个起跳的近似。但是,稍有跳船经验的朋友,很容易察觉,这个对F相对极大的要求,明显是不合情理的。

   而且,就算F真的相当大,我们的直觉也会告诉我们,这个极快极大的用力,水还来不及流动,因此,我们应该用弹性形变的方式来考虑水的反作用,也就是说这一瞬间船受水的力应该是把水作为固体考虑,通过船的瞬间位移而不是船的速度来计算水的阻力-或者说反弹力。这时我们的模型就接近失效了。

  只要船的瞬间位移没那么大,引起水的弹性形变没那么大,我们的模型估计还能用用。所以我们需要估算船的瞬间位移。

  对于k很小乃至可以忽略的情况,假定船的初始位置$x_{M}(0)=0$,这个位移很容易计算,如下:

                  $x_{M}(tau_{1})=-frac{1}{2}frac{F}{M}tau_{1}^2$

                                  $=-frac{1}{2}frac{P}{Mtau_{1}}tau_{1}^2$

                                  $=-frac{1}{2}frac{P}{M}tau_{1}$          (7)

  我们看到,这个位移虽然不是很大,实际上并不是到达没有影响的地步。而只要有跳船经验的人,都知道,我们如果使用足够大的力,就会激起水的反弹。

四、刻舟之人着船

  我们采用第三节完全相同的方式,来分析人着船的情况。

  假定人在空中飞行了时间$tau$,然后与船接触,如果认为$tau_{1}to 0$,那么这时船的速度记为$v(tau)$。

  设人从接触船到跟船同速运动这一过程的持续时间为$tau_{2}$,设船在此期间水平方向持续受到了人的$F_{1}$的力,则得方程:

             $-Mv'_{M}-kv_{M}+F_{1}=0$  (8)

   解得:

             $v_{M}=(v_{M}(tau)-frac{F_{1}}{k})e^{-k(t-tau)/M}+frac{F_{1}}{k}$  (9)

   而此期间关于人的方程是:

             $-mv'_{m}-F_{1}=0$              (10)

   解得:

            $v_{m}=(-frac{F_{1}(t-tau)}{m})+P/m$             (11)

   至$tau+tau_{2}$时刻,人船同速,因此有:

           $ v_{M}(tau+tau_{2})=v_{m}(tau+tau_{2})$           (12)

   结合(9)、(11)、(12)式,我们有:

           $(v_{M}(tau)-F_{1}/k)e^{-ktau_{2}/M}+F_{1}tau_{2}/m=P/m -F_{1}/k$                                                    (13)  

   我们看到$F_{1}$和$tau_{2}$间出现了复杂的依赖关系,这就给我们期望的希望$F_{1}tau_{2}$在$tau_{2}$较小时是个常数的情况,带来了疑问。换言之,这个时候我们如果取冲击函数模型来代替阶跃函数,就会在工程上带来比较难于控制的误差。

   而就算我们忽略种种不适合,放弃函数收敛性的讨论,让$tau_{2}to 0$,然后尽量按一阶近似的方式化简,我们也可以得到:

           

      $F_{1}tau_{2}approxfrac{MP-Mmv_{M}(tau)}{M+m}+frac{MP-Mmv_{M}(tau)}{(M+m)^2}frac{mk}{F_{1}}v_{M}(tau)$                     (14)

   因而,在整个模型合在一起处理的情况下,我们即使起跳和冲击都使用冲击函数来描述,考虑(14)式中的高阶误差项,容易得出船最后的位置:

          $ x_{M}(infty)=frac{m}{M+m}frac{P-mv_{M}(tau)}{F_{1}}v_{M}(tau)$   (15)

工程意义上,没有人能保证这是一个小量,船也不能回到原来的位置。

五、总结

    通过矩形函数的分析,我们发现岳东晓博士使用狄拉克函数来为“刻舟”过程建模,至少有三点误用:

    (1)冲击函数的引入,让人和船的相互作用力与水的阻力相比趋于一个非常大的值,这样的情况既不符合一般的跳船经验,也使其引用的水的阻力模型本身已经不适合处理相关情况。

    (2)在人着船的过程中,由于矩形函数对时间的积分需要持续时间非常短才能近于一个固定量,使得工程简化过程变得不确定,工程误差和模型收敛性也难于估算,因而引入冲击函数模型是有极高风险的。

    (3)最后,即使承认相关结果,在考虑高阶近似的情况下,我们得不到船会回到原位的结论。


    刻舟讨论非常热闹,望各位辩友相互尊重,可以嬉皮笑脸,不能辱骂攻击。

    最后,祝各位网友新年快乐!


    另:郑重申明,我的所有学位,都是工学学位,我不是学物理的。


 




http://blog.sciencenet.cn/blog-731678-1024370.html

上一篇:刻舟:k如何趋于零
下一篇:刻舟:文字讲解岳东晓博士的基本错误

16 陈楷翰 宁利中 刘全慧 姬扬 文克玲 章雨旭 应行仁 吴斌 黄秀清 戎可 韦玉程 icgwang xlsd pilg wangshoujiang3 ddsers

该博文允许注册用户评论 请点击登录 评论 (30 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备14006957 )

GMT+8, 2019-11-14 09:26

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部