昨天谈到了 EMA,今天说说泰勒展开。
泰勒展开是用简单函数来逼近复杂函数的方法,但从操作和算法的意义上理解,它其实是一种测量的过程,本质上与除法无异,不断用更细的精度逼近目标。
用计算机计算 int a = 5 / 3,结果是 1,因为 int 类型把小数作为误差抹去了,对 int 而言,小数部分就是高阶无穷小。再来看一个例子,double b = 1234 / 1000,结果是 1.234,它在测量场景下的意义是,用 1000 去测 1234,看 1234 里有多少 1000,其过程如下:
- 用 1000 测量 1234,看其中有多少 1000,结果是 1,但还要更精确,标尺细化为 100;
- 用 100 测量 (1234 - 1*1000),看其中有多少 100,结果是 2,但还要更精确,标尺细化为 10;
- 用 10 测量 (1234 - 11000 - 2100),看其中有多少 10,结果是 3,但还要更精确,标尺细化为 1;
- 用 1 测量 (1234 - 11000 - 2100 - 3*10),看其中有多少 1,结果是 4,除尽了;
- 结果序列以 1000 为单位表示为: 1 + 20.1 + 30.01 + 4*0.001 = 1.234。
按上述规则,若是 π 的表达,可如下:
π = 3 ⋅ 1 0 0 + 1 ⋅ 1 0 − 1 + 4 ⋅ 1 0 − 2 + 1 ⋅ 1 0 − 3 + 5 ⋅ 1 0 − 4 + 9 ⋅ 1 0 − 5 + 2 ⋅ 1 0 − 6 + . . . \pi=3\cdot 10^0+1\cdot 10^{-1}+4\cdot 10^{-2}+1\cdot 10^{-3}+5\cdot 10^{-4}+9\cdot 10^{-5}+2\cdot 10^{-6}+... π=3⋅100+1⋅10−1+4⋅10−2+1⋅10−3+5⋅10−4+9⋅10−5+2⋅10−6+...
在上述的测量过程中,我不断用 1 0 − n 10^{-n} 10−n来做测度量尺,推而广之,任何表达式都可做测度量尺,级数展开的初衷是用简单函数逼近复杂函数,那么用公认的二项式来做测度量尺就高尚了。在此假设下,若要在 x 0 x_0 x0 处做泰勒展开,其测度量尺就是 ( x − x 0 ) n (x-x_0)^{n} (x−x0)n。
然后用上述求除法的过程去测量一个任意函数 f ( x ) f(x) f(x):
- 用 ( x − x 0 ) 0 (x-x_0)^0 (x−x0)0 测量当 x 逼近 x 0 x_0 x0 时的 f ( x ) f(x) f(x),结果为 lim x → x 0 f ( x ) ( x − x 0 ) 0 = f ( x 0 ) \lim_{x\rightarrow{x_0}}\dfrac{f(x)}{(x-x_0)^0}=f(x_0) limx→x0(x−x0)0f(x)=f(x0),但还要更精确,标尺细化为 ( x − x 0 ) 1 (x-x_0)^{1} (x−x0)1 ;
- 用 ( x − x 0 ) 1 (x-x_0)^{1} (x−x0)1 测量当 x 逼近 x 0 x_0 x0 时的 f ( x ) − f ( x 0 ) ⋅ ( x − x 0 ) 0 f(x)-f(x_0)\cdot(x-x_0)^0 f(x)−f(x0)⋅(x−x0)0,结果为 lim x → x 0 f ( x ) − f ( x 0 ) ⋅ ( x − x 0 ) 0 ( x − x 0 ) 1 = f ′ ( x 0 ) \lim_{x\rightarrow{x_0}}\dfrac{f(x)-f(x_0)\cdot(x-x_0)^0}{(x-x_0)^1}=f\prime(x_0) limx→x0(x−x0)1f(x)−f(x0)⋅(x−x0)0=f′(x0),但还要更精确,标尺细化为 ( x − x 0 ) 2 (x-x_0)^{2} (x−x0)2 ;
- 用 ( x − x 0 ) 2 (x-x_0)^2 (x−x0)2 测量当 x 逼近 x 0 x_0 x0 时的 f ( x ) − f ( x 0 ) ⋅ ( x − x 0 ) 0 − f ′ ( x 0 ) ⋅ ( x − x 0 ) 1 f(x)-f(x_0)\cdot(x-x_0)^0-f\prime(x_0)\cdot(x-x_0)^1 f(x)−f(x0)⋅(x−x0)0−f′(x0)⋅(x−x0)1,结果为 lim x → x 0 f ( x ) − f ( x 0 ) ⋅ ( x − x 0 ) 0 − f ′ ( x 0 ) ⋅ ( x − x 0 ) 1 ( x − x 0 ) 2 = f ′ ′ ( x 0 ) 2 \lim_{x\rightarrow{x_0}}\dfrac{f(x)-f(x_0)\cdot(x-x_0)^0-f\prime(x_0)\cdot(x-x_0)^1}{(x-x_0)^2}=\dfrac{f\prime\prime(x_0)}{2} limx→x0(x−x0)2f(x)−f(x0)⋅(x−x0)0−f′(x0)⋅(x−x0)1=2f′′(x0),但还要更精确,标尺细化为 ( x − x 0 ) 3 (x-x_0)^{3} (x−x0)3 ;
- …
- 结果序列为: f ( x 0 ) ⋅ ( x − x 0 ) 0 + f ′ ( x 0 ) ⋅ ( x − x 0 ) 1 + f ′ ′ ( x 0 ) 2 ! ⋅ ( x − x 0 ) 2 + f ′ ′ ′ ( x 0 ) 3 ! ⋅ ( x − x 0 ) 3 + . . . f(x_0)\cdot(x-x_0)^0+f\prime(x_0)\cdot(x-x_0)^1+\dfrac{f\prime\prime(x_0)}{2!}\cdot(x-x_0)^2+\dfrac{f\prime\prime\prime(x_0)}{3!}\cdot(x-x_0)^3+... f(x0)⋅(x−x0)0+f′(x0)⋅(x−x0)1+2!f′′(x0)⋅(x−x0)2+3!f′′′(x0)⋅(x−x0)3+...
大致就这个意思,就像一个测量的过程,换不同的标尺,不断细化精度,逐步逼近真实值,泰勒级数如上所示展开,换个别的级数,换一把测度标尺也同样。
早些年我尝试从不同的视角去理解泰勒级数,写过一些文字:
也写过一些关于对野人祖先如何计算除法的猜测:
本文将二者关联了起来,不禁感叹,一万年了,测度一直是如此重要,智人一直在使用相同的方法,只是换了工具。
在测度的意义上,为什么减法比加法难,除法比乘法难等问题的答案似乎也就很明显,这背后都是因为测量比复制难。因为给定的标尺是任意的,如果它不能准测目标,就需要换一把精度更高的标尺继续测量,直到准测或者达到目标精度,在此过程中,不能准测的后果即引入准测外的新类型,例如减法不能准测目标,需要负数来弥补,除法不能准测,需要小数来弥补。
这是一篇短随笔,也不准备长篇大论,主要表达的意思是测度实践和级数微积分理论背后的同一性,而测度学更多偏向于算法和操作实践范畴,稍微远离公理体系和演绎推理。
近期买的一本《DK 时间线上的科学史》昨天下午到货,大致翻了一下,结合其他博主书评,我觉得将算法和逻辑演绎深度结合才高尚,正如我前几天发的朋友圈所抱怨的,中国科技太过精于精巧的算法或操作步骤而忽略了演绎推理和体系结构,而西方科技则相反。
谈不上谁先进落后,中国科技善于算法,比方说高精度算 π,榫卯结构,孔明锁,百年老汤(其实就是移动指数平均算法),欧洲科技则善于逻辑演绎,结构和几何,比如大跨度穹顶,托勒密天文结构,解析力学,几何学,博物志等。我自己曾经在某些时间段厚此薄彼,但后来发现二者是正交的,没有材料结构,几何,力学的中国科技虽精巧,看起来却不壮观,没有算法和省力把戏的欧美科技虽然在体系结构上宏大,内核却显得笨拙,但二者结合,在体系结构上配合精巧的算法,搞不好就能有更大突破了 …
浙江温州皮鞋湿,下雨进水不会胖。