上周写完了《《三体》读后思考-泰勒展开/维度打击/黑暗森林》后收到一些邮件,进一步思考了关于泰勒展开的意义。也许我掌握的那些网络技术比如Linux Netfilter,NAT之类,太过底层太过小众,所以大家几乎都是没有感兴趣的,倒是这种科普性质的文章和那些吐槽类的文章,会引发一系列的互动,这对我来讲是好事,因为我喜欢跟人交流技术和思想。

声明

本来这篇文章应该添加在《三体》读后感后的“补遗”一节呢,后来觉得太长了,有点喧宾夺主的意思,就单独写了一篇文章。
  其实吧,这篇文章已经跟《三体》小说没有太大的关系了,这纯粹是一篇关于数学的文章,但是由于本文要涉及大量关于“趋势的趋势的趋势”,“走势的走势的走势的走势”,“导数的导数的导数的导数的导数…”,为了保持一致性,我将本文的题目写成了“《三体》读后感的读后感…”,可能后面还有,未完待续!

第一部分.泰勒展开解释

很多人对我解释的泰勒展开提出了自己的疑问,这些疑问大致都是对下面的问题表示不解:
为什么可以从一个单独的点不断求导就可以画出整个函数的曲线?即“一点是如何蕴含整个世界”的。
诚然,这个问题其实在数学上是及其容易证明的,在定量的角度,随便找出一本讲微积分或者数学分析的书都可以得到令人满意的回答,我在文章《《三体》读后思考-泰勒展开/维度打击/黑暗森林》中也给出了一个简易的推导。然而,在满足了逻辑上的自洽后,我们很多人对一件逻辑上合情合理的事情便有了探索其实际意义的欲望,比如我们会问,它的物理意义是什么,它的几何意义是什么,甚至更基本的,它的意义是什么?就这么问着问着,便似乎有了一点哲学探索的味道,在我看来,这便是最精彩的!
   很多人都看过双截棍表演,但现如今很少有人了解鞭术了,其实你可以把鞭子看成是N趋近于无穷大时的N截棍,玩起来更难。其实我也不是很懂,就是为了解释这个泰勒展开才稍微看了一点关于鞭术的东西,具体来讲,执鞭人手执鞭子在原地只是上下左右按照一定的规则甩鞭,一条很长的鞭子就会整体展现成各种漂亮的曲线,他是怎么做到的?
   当然,从物理上讲,这当然是若干列波从执鞭处向鞭子的另一端传播,传播的过程在不同的点产生了定向的效果,然而似乎不是一个很好的足以让人满意的解释,我们的问题是,那个执鞭人的手需要怎么个动作,才能让鞭子整体上看来是那种效果?
  这个问题我是回答不了,因为我不懂鞭术,身边也没有懂的人,但是这个问题似乎和本文一开始的那个问题讲的是同一回事,即从一个点来蕴含整体的行为。

  我的观点是:既然走势可以让人预测曲线上邻接的下一点的大致位置,那么走势的走势便可以相对精确地预测邻接下一点的具体位置,紧接着,走势的走势的走势便可以告诉人们这种趋势可以延续到什么时候,再继续…这似乎超出了人们的想象力…我们还是用简单的数学来表示吧。我们先从1阶导数,2阶导数,3阶导数的几何意义说起。
  先看1阶导数,我们知道,它是经过曲线上某点的切线的斜率:
  在这里插入图片描述
我们来看这个1阶导数可以预测到多远处呢?如果我们仅仅知道该点的坐标以及有这么一个该点的1阶导数的值,我们几乎什么都预测不了,除了知道在该点处有沿着切线向上的趋势之外,这没能为我们画出这个曲线带来帮助,似乎下面的曲线都能满足,然而真正正确的只有一个:
在这里插入图片描述
换句话说,1阶导数只能将邻接的下面的点定位到两个范围中的一个:
在这里插入图片描述
so,我们需要进一步的信息,我们继续求2阶导数,看看能挖掘出什么新玩意儿。
2阶导数是1阶导数的导数,换句话说,它代表了检测点切线的变化趋势,有了这个趋势,我们是不是可以相对精确地预测邻接的点的位置了呢?我们先看2阶导数的几何意义为何。学过数学的都知道,2阶导数表示了曲线的凸凹,对于凸函数,2阶导数是负数,它表示切线的斜率会越来越小,而对于凹函数,2阶导数是正数,它表示切线的斜率越来越大:
在这里插入图片描述
因此,有了2阶导数,我们对接下来的曲线走势定位就更加精确了,我们可以进一步缩小邻接的点的取值范围:
在这里插入图片描述
具体的坐标由2阶导数的具体值来约束。
  到了这一步,进一步将曲线往前延伸似乎是无望的,因为:

1.首先,我们不知道代表检测点凸凹性的2阶导数的值在将来会不会逆转,即我们不知道曲线会不会由凸变凹或者由凹变凸; 
2.其次,即便假设函数的凸凹性不变,我们也不知道接下来曲线是越来越凸/凹呢?还是反过来呢?

毕竟,我们只求得了检测点的1阶和2阶导数,注意,它们都只是一个数字,而不是一个带有自变量的新的函数,所以我们通过1阶导数和2阶导数,得到仅仅是2个值,仅此而已,如果我们能得到关于曲线任意一点的2阶导数的函数表达式,那么我们当然可以预测曲线2阶函数的走势,但在本文中,我不会那么做,我就假设,我们没有这个函数表达式,只有一个检测点的2阶导数的值!怎么办?
  我们继续看3阶导数。在此之前,我必须要澄清一个我的观点。
  我在知乎上查过相关资料,另外还特意请教过一些搞数学的老师或者朋友,得到的解答可能都是从哪个地方看到的一致性解答,说3阶,4阶,5阶…导数这些没有几何意义和物理意义,数学只追求逻辑上的完整,自包容,而不是去追求什么几何意义,物理意义。我并不赞成这个说法,以霍金为例,它的虚时间模型虽然只是数学上的技巧,但是最终的目标却是为他的有限无界的宇宙几何模型服务,这说明,完成逻辑完整性证明和寻找其意义同等重要,可能后者还会更重要,我没有看到哪一个伟大的物理学发现背后仅仅是纯粹的思辨性的数学,不管是牛顿的引力场,还是爱因斯坦的引力场,还是霍金的量子引力,在逻辑严谨性支撑的前脸,都有一个漂亮得体的几何模型作为表象。

  3阶导数不难求,继续对2阶导数表达式求导,然后代入检测点的x值即可,然而3阶导数的意义是什么?其实仔细想想,并不难理解,这正如2阶导数主导1阶导数的变化从而把1阶导数自认为正确的“以直代曲”的直线模拟拉成弯曲的或者凸或者凹的曲线一样,3阶导数同样主导2阶导数的变化,它可以表示“曲线是继续凸下去或者继续凹下去,还是会在某一个x值后逆转,由凸变凹或者由凹变凸”。用语言表示比较苍白难以理解,于是我画个图示:
在这里插入图片描述
好了,有了3阶导数,我们似乎进一步将曲线向前推进了,至少是预测出了一种趋势,然而这个趋势是必然的吗?考虑到一种情况,比如当前检测点的2阶导数值为1,表示曲线在检测点是凹的,而同时3阶导数的值为-1,这表示可能接下来邻接点的2阶导数会比1小一点,最终会变成0甚至负数,这意味着曲线会由凹变凸,即经历一个拐点,但这种预测一定会发生吗?
  不一定!But why?
  虽然当前检测点的3阶导数值为-1,但这并不意味着它会一直保持-1,如果它一直保持-1,那么我们的预测正确,但是如果曲线的3阶导数在该检测点是递增的呢?这意味着会发生下面的情况:
在曲线从检测点x0x0开始,2阶导数变为0甚至负数之前,其3阶导数就已经从-1递增到0以上了,这说明虽然曲线的凹性越来越显得不那么凹,有变平变凸的趋势,但这种趋势的趋势越来越弱,还没等曲线变成凸的,这种作用便消失了,曲线将会继续保持凹型发展下去…
  上面的判断简直可以弥补3阶导数的误差,曲线进一步前进,很帅!那么如何判断3阶导数的走势呢?简单,求4阶导数!
进一步,以上这样发展会持续多久呢?好吧,求5阶导数吧,可以再推进一步。我们对曲线走势的掌握离开检测点随着越来越高阶导数的求解渐行渐远,6阶导数,7阶,8阶,9阶…我们对曲线走势的预测将越来越接近原先的函数。

  我来画一个实际的例子结束讨论:
在这里插入图片描述

这是不是有点像鞭术大师执鞭表演,力道和甩鞭模式从大师的手掌开始沿着鞭体传播,模式的频率越低,影响的越远。除了鞭术,还有双截棍,如果玩双截棍的时候打到了自己,那么一定是哪个导数没有求好,比如4阶导数搞错了…
  在了解了曲线的走势后,剩下的就是用二项式去拟合了。其实,这种二项式叠加的拟合方式并没有什么特殊的含义,只是因为它是可以做到的而已,你同样可以用傅立叶变换的方式将一个函数在频域上展开,因为那也是一种可能的方式。其实任何两个或者多个带有实际效应的表达式叠加在一起,整体而言都会表现出各个叠加体局部的性质,这里重要的是一个纯数学上的技巧,即如何确定二项式的系数,可以肯定的是系数跟各阶导数是相关的,剩下的问题就是待定系数法求解了,这并不是需要赘述的内容。
  综上,在这个待定系数的角度,二项式拟合任何曲线实属凑出来的,因为凑出来的二项式叠加表达式的各阶导数值恰好等于原函数的各阶导数值。
  然而这并不能让不断寻找意义的人满意,如果非要在纯数学之外去寻找这样做的意义,那么我们可以从中值定理入手去理解。说好了不谈这些诸如中值定理的,但事实上,想彻底理解一个数学概念,这些概念是避不开的,问题是,我们如何更简单地(而不是更复杂地)去理解它们。
  以拉格朗日中值定理为例,它的中值定理是这样的:
如 果 函 数 f ( x ) 在 ( x 0 , x ) 上 可 导 , [ x 0 , x ] 上 连 续 , 则 必 有 一 ξ ∈ [ x 0 , x ] 使 得 : f ( x ) = f ( x 0 ) + f ′ ( ε ) ( x − x 0 ) 如果函数f(x)在(x_0,x)上可导,[x_0,x]上连续,则必有一ξ∈[x_0,x]使得:f(x)=f(x_0)+f′(ε)(x−x_0) f(x)x0,x,[x0,x],ξ[x0,x]使:f(x)=f(x0)+f(ε)(xx0)
按照这个思路展开,既然在直观的1阶导数情形下,拉格朗日中值定理拥有的几何意义,那么在2阶导数均拟合的情况下,是不是可以有下面的描述呢:
如 果 函 数 f ( x ) 在 ( x 0 , x ) 上 可 导 , [ x 0 , x ] 上 连 续 , 则 必 有 一 ξ ∈ [ x 0 , x ] 使 得 : f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + f ′ ′ ( x 0 ) 2 ! ( x − x 0 ) 2 + f ′ ′ ′ ( ε ) 3 ! ( x − x 0 ) 3 如果函数f(x)在(x0,x)上可导,[x0,x]上连续,则必有一ξ∈[x0,x]使得:f(x)=f(x0)+f′(x0)(x−x0)+f′′(x0)2!(x−x0)2+f′′′(ε)3!(x−x0)3 f(x)x0,x,[x0,x],ξ[x0,x]使:f(x)=f(x0)+f(x0)(xx0)+f(x0)2!(xx0)2+f(ε)3!(xx0)3
这个式子可以推广到NN阶,这是一种很常见的思路,把一个式子一般化后推广,然后小心求证其合理性,待到证明完成,便可以进一步地解释现象,这种思路承接了近代绝大部分的科学技术进步!
  我来给出上式子的一个几何解释,虽然我们想象不到2阶导数依照其几何意义如何画出来,但是我们可以把原始的函数本身升一个维度,然后用积分的思想去理解2阶导数的几何意义。
  理解我在说什么了吗?我的意思简单点说,就是积分式的1阶导数(其实是导函数)就是被积函数,被积函数的1阶导数就是积分式的2阶导数,而我们知道积分式是有几何意义的,它表示面积,而被积函数则表示曲线,再进一步积分式的2阶导数则表示曲线上某点切线的斜率…这样,相当于我们将2阶导数看成了切线斜率,将1阶导数看成了曲线本身,而原始函数看成了曲线与xx轴围成的面积:
$$
Farea=f(x)=∫_x^0g(x)dx

f′=g(x)f′=g(x)

f′′=g′=切线斜率f′′=g′=切线斜率

这样我们就可以用拼接图形求总面积的方式来在更高的维度表达类似拉格朗日中值定理的式子了。我们看一个图示:
在这里插入图片描述
我们依照上面的图示,试着求一下OxDA的总面积,首先我们将其表示成各个小块的和的形式:
S O x D A = S O x 0 P 0 A + S x 0 x C P 0 + S P 0 C B + S P 0 B D S_{OxDA}=S_{Ox_0P_0A}+S_{x_0xCP_0}+S_{P_0CB}+S_{P_0BD} SOxDA=SOx0P0A+Sx0xCP0+SP0CB+SP0BD
然后我们依照图示中的几何关系来分别求各个小块的面积,幸运的是,以直代曲的思想在此体现的淋漓尽致,我们要求的只是简单的三角形,矩形的面积,而我们知道这些完全用加减乘除四则混合运算就足够了,是不是很符合二项式叠加的思想呢?殊途同归!首先看$S_{Ox_0P_0A}SOx0P0A,由定义,我们知道它就是f(x0)f(x0),接下来看Sx0xCP0Sx0xCP0,它是个矩形,变长分别为x−x0x−x0和LP0x0LP0x0,而LP0x0LP0x0按照定义,它就是g(x0)g(x0),而g(x0)g(x0)又是什么呢?很显然根据上面的微积分关系,他就是f′(x0)f′(x0),到此为止我们可以把面积求和算式写成如下的样子了:
S O x D A = f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + S P 0 C B + S P 0 B D S_{OxDA}=f(x)=f(x_0)+f′(x_0)(x−x_0)+S_{P_0CB}+S_{P_0BD} SOxDA=f(x)=f(x0)+f(x0)(xx0)+SP0CB+SP0BD
还剩下两项,现在来看SP0CBSP0CB,它是个三角形,我们知道它的底边长就是x−x0x−x0,而高则是LCBLCB,同时我们知道切线的斜率就是f′′(x0)f′′(x0),那么LCBLCB显然就是f′′(x0)(x−x0)f′′(x0)(x−x0)咯!我们把它代入到上面的式子:
S O x D A = f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 12 f ′ ′ ( x 0 ) ( x − x 0 ) + S P 0 B D S_{OxDA}=f(x)=f(x_0)+f′(x_0)(x−x_0)+12f′′(x_0)(x−x_0)+S_{P_0BD} SOxDA=f(x)=f(x0)+f(x0)(xx0)+12f(x0)(xx0)+SP0BD
最后还剩一下一项了,即SP0BDSP0BD,它太小了,并且貌似不是很容易计算,因为它不是三角形,也不是任何用直线围成的,它的上沿是一条曲线…这可怎么办?我们注意到,当xx和x0x0趋于接近的时候,这块小面积就趋近于00了,这便是可以忽略不计了,这就是极限的思想,当然这不是本文的主题咯。我在画上面的示意图的时候,特意将xx和x0x0拉开了一定的距离,这是为了直观,在真正的微积分运算中,这段距离就是无穷小,那么图形SP0BDSP0BD的面积也就是无穷小了,暂且记为O(SP0BD)O(SP0BD),最终的式子为:
S O x D A = f ( x ) = f ( x 0 ) + f ′ ( x 0 ) ( x − x 0 ) + 12 f ′ ′ ( x 0 ) ( x − x 0 ) + O ( S P 0 B D ) SOxDA=f(x)=f(x0)+f′(x0)(x−x0)+12f′′(x0)(x−x0)+O(SP0BD) SOxDA=f(x)=f(x0)+f(x0)(xx0)+12f(x0)(xx0)+O(SP0BD)
这样,当切分的区间越来越细致时,O(SP0BD)O(SP0BD)越来越趋向于00(这个很容易用积分中值定理从直观上看出来,事实上,O(SP0BD)O(SP0BD)的值就等于f′′′(ε)3!(x−x0)3f′′′(ε)3!(x−x0)3).
  好了,这就是一个在2阶情况下,中值定理大致的几何印象。循着这个思路推广下去,泰勒公式就在眼前了。
  虽然我们想象不出来NN阶中值定理的几何意义,但是正像物理学中经常提及超维一样,我们也可以把二维的笛卡尔坐标系拓展成“无限维度空间中的超立方体”。这样的假设下,似乎还不是特别令人满意,但也就只能这样了。
  事实上,我这里可以给出一点提示,利用积分中值定理可以证明泰勒公式在意义层面的合理性,利用分部积分从我上面给出的2阶导数直观几何意义开始,可以逐渐导出完整的泰勒公式!我不会在本文正文中去表达这些内容,因为怕公式太多。当你看线条找不出线条,夹角之间的关系时,试试面积,升个维度试试。
  最后,记住一个结论,NN阶导数的几何意义物理意义要比如何用泰勒多项式表达任意表达式更加重要,后者只是说明它“恰好能做到”而已,除了泰勒多项式,傅立叶展开也可以达到同样的效果,另外,还可能有别的。
  在观察二项式拟合任意函数的时候,我们知道“它恰恰可以做到”,现在的问题是如何感性的认识到这一点,即“它为什么就可以做到?”,我们以下面的两个多项式为例,来点感性认识:
f ( x ) = x 2 f ( x ) = x 3 f(x)=x2 f(x)=x3 f(x)=x2f(x)=x3
我们把它们画在一个图里:
在这里插入图片描述

未完待续

备注:本文转自dog250博文《泰勒公式的展开细节解析

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐