R·ex / Zeng


音游狗、安全狗、攻城狮、业余设计师、段子手、苦学日语的少年。 MUGer, hacker, developer, amateur UI designer, punster, Japanese learner.

胡思乱想

注意:本文发布于 3669 天前,文章中的一些内容可能已经过时。

声明:本文为作者瞎想杜撰出来的,与现实生活毫无联系,貌似文段之间也没什么联系……学术和语言上也欠严谨,不过本文作为一个“个人理解”而言还是差强人意的。

数学是一门“无论从创造日期还是从小孩子刚开始学的时期”来看都很早的学科。从小学上到现在,几何学的各类公式背了不少,记得最深的就是面积体积公式了;高中学了导数和积分,也会了一点点高数的知识,在佩服前人的能力时,同时诅咒着他们——这货害死了多少莘莘学子(画外音:这是病句~)啊!希望没人和我一样悲剧:我刚接触积分的时候,一直没法理解下方的面积是怎么算的,把一块区域分割成无限条线段,每条线段都有长度,加起来岂不是无穷大了……当然,这跟“测度”有关系,简单地说,就是二维测度(即面积)是不能用一维测度(长度)测量的。最显然的解释就是,你TM是忘了乘上一个几乎为0的宽度吧!

导数与积分

不知道大家有没有想过,为什么高中求∫(a,b)_f(x)dx要先求F(x),然后再求F(x)|(a,b),一块区域的面积怎么会跟两个数字扯上关系呢?而且F(x)并不唯一,得出的结果为什么是一样的呢?

一个函数的导数的直观理解就是这个函数的变化量,也就是当△x→0时,x增加△x的时候F(x)增加的量。假设有一个函数F(x),它的导数是f(x),我们要求f(x)在区间(a,b)上的积分。我们按照最基础的做法,把那段区间分成n个竖着的小列(试想一下n→∞的情形),考虑其中对应着区间(x,x+△x)的一个小列,在x增加△x的时候,原函数F(x)的数值按照本段第一行的定义,应该增加了那个小列的面积的量(如果面积为负则是减少了这么些量)。于是把这n个小列从左往右依次加起来,数值上等于F(x)在这段区间上的变化量(也就是F(x)|(a,b)),同时在几何面积上也等于∫(a,b)_f(x)dx,十分形象。可以想到,如果两个原函数的导数相同,则这两个原函数在同一区间上的变化量是一样的。以上并不算严谨的数学证明,也许真正会的人看了这段会忍俊不禁,不过按照这个思路理解是绝对够了。

还有初中提到的,如果两个物体被任意一个平行于地面的一个平面所截,截得的面积总是相等,则这两个物体体积相等。例如桌子上整齐地摞了一摞纸(每张纸不一定多大),不小心被推歪了,体积还是那些纸,不变。这也可以进似地看成:一共有n张纸,第x张纸的面积为f(x),你要求∫(1,n)_f(x)dx,这个值并不因为纸被推歪了而改变,从上一段看也是显然的。

这是我佩服前人的理由之一:这么一个定理,理解起来很容易(证明呢?我不会……),但是谁能凭空想出来呢?

周长、面积与体积

观察下面两组早已烂熟于心的式子:

  1. 圆的周长C=2πR,面积S=πR^2
  2. 球的表面积S=4πR^2,体积V=(4/3)πR^3

容易发现(么?)前一个式子是后一个式子的导数,这仅仅是巧合?貌似不是。对于①中两式,我们假设一开始有一个“圆”,圆心确定,半径为0,然后我们一点点改变半径的值,会发现半径每增加△x,面积就会多出一个在当前半径下周长的量,看起来好像是一个个逐渐变大的圆依次紧密地套在了那个“圆”的外面。于是无限个周长组成了这个圆的面积,周长理所应当是面积的导数了!至于②中两式,就像无限个球面包住了一开始那个半径为0的球,于是面积即为体积的导数了。

于是我在想,四维球的四维测度公式岂不是(1/3)πR^4了?

维度、空间与递归

“三维空间”这个词应该是家喻户晓了吧,在数学方面(物理我不懂),零维是点,一维是线,二维是面,三维是体,四维也许有人知道是四维体,更高维呢?至少目前我是想不到五维及以上的超体。那有没有不是整数的维度呢?答案是有的,例如“科赫雪花”就是个典型的log(3,4)≈1.26维图形,“谢尔宾斯基地毯”的维度则是log(3,8)≈1.89维。

这些维度是怎么得出来的呢?如果一个图形按照某个一维测度(例如棱长或直径)相似地扩大a倍之后,该图形的测度扩大了b倍,则该图形是log(a,b)维的。上一段中的两个图形为什么是这么个维度,相信大家看了图片之后会发现,这确实是显然的——雪花的一个单位(其中一小段)扩大三倍则总长扩大为四倍,地毯边长扩大三倍则面积扩大为八倍。这个维度计算的方法也同样适用于常见的图形,例如长方形的一条棱扩大两倍,面积即扩大四倍,则长方形是log(2,4)=2维图形,同理正方体是log(2,8)=3维图形,至于线段则是log(2,2)=1维图形。什么?对于点的log(2,0)无意义?别想这么多了,这是定义出来的……想了解更多可以自行百度“豪斯多夫维度”。

学OI时我们讲了归并排序,分析时间复杂度的时候,我们用递归式T(n)=2T(n/2)+O(n)来表示,当时老师只说了T(n)=O(nlogn),我们也是直接背过的。后来知道有种方法叫主方法,英文名字很霸气,叫Master_Method,它可以解形如T(n)=bT(n/a)+f(n)的递归式。忽略掉f(n)(也就是让f(n)=O(1)。为什么不是O(0)?你硬要这么办我也不拦着你……)后我想到的是,将一个图形的一维测度扩大a倍,该图形测度扩大了b倍。于是我貌似发现了一个很神奇的问题:对于目前见过的所有图形的(a,b),用主方法解出来的T(n)都是n^log(a,b)这样的,如果令n为图形的一维测度的话(有点类似书立方那个标志的“Book^3”)……我们利用主方法变相“证明”了豪斯多夫维度的定义?这个又是什么巧合么?

仔细想想其实也不是什么巧合。任何一个图形都是可以递归生成的,如果它有合适的生成规则的话。所谓的“生成规则”大体可以看成:把这个图形的某一小块复制到指定的位置上,例如上文的地毯即将这个图形复制到附近的八个地方。我们可以模仿上帝写一个程序:

Procedure 生成(x:图形,pos:位置,rule:规则,a:数字) //a和下文的b的定义见上文
  If 递归到了边界(即x是一个点。这貌似是一个无限递归,因为点是无限小的,不过鉴于我们是上帝,就不用想这么多了) Then
    在位置pos上摆放一个点并返回
  End If
  For i in rule中的每一个地方(一共b个) Do
    生成(x缩小a倍的图形,i,rule,a) //这里用到了递归操作!
  End For
End Procedure

等这个程序运行完之后,我们便得到了一个生成的图像。很显然,这个图像的测度由点的个数决定,那么到底有多少个点呢?估计大家已经猜到了,答案是n^log(a,b)个,也就是说这个图形是一个log(a,b)维图形。——空间、维度和看似与之不相关的递归式,在这里紧密结合在了一起。

版权声明:除文章开头有特殊声明的情况外,所有文章均可在遵从 CC BY 4.0 协议的情况下转载。
上一篇: 南航信息学面试——酱油篇
下一篇: My Adventure 全部代码

这是我们共同度过的

第 2635 天