泰勒级数的直觉(DNA 类比)

你的身体有一个奇特的特性:你可以从单个细胞中获取关于该有机体的信息。 整个 从单个细胞中了解有机体。挑一个细胞,潜入细胞核,提取DNA。现在你就可以从那个微小的样本中重新培育出整个生物。

这里有一个数学类比。取一个函数,选定一个具体点,然后深入进去。你可以从一个点中提取足够的数据来重建整个函数。哇,就像从一帧画面重新制作整部电影一样。

泰勒级数(Taylor Series)发现了函数背后的"数学DNA",让我们能够从单个数据点重建它。让我们看看它是如何工作的。

从一点提取信息

给定一个函数如$f(x) = x^2$,我们可以在单个位置发现什么?

通常我们期望计算一个单一的值,比如$f(4) = 16$。但表面之下还有更多:

  • $f(x)$ = 函数在点$x$处的值
  • $f'(x)$ = 一阶导数,表示函数变化的速度(速度)
  • $f''(x)$ = 二阶导数,表示 变化 变化的速度(加速度)
  • $f'''(x)$ = 三阶导数,表示 变化 变化的变化的速度(加速度的加速度)
  • 依此类推

研究一个点会揭示关于行为的多个(可能是无限的)信息片段。(有些函数在一个点上有无穷多的数据(导数(derivative))。)

那么,有了所有这些信息,我们该怎么做?当然是从一个细胞重新培育有机体!((此处应有疯狂的笑声。))

从一点生长函数

我们的计划是从一个起点开始生长出一个函数。但我们如何通用地描述任意函数呢?

顿悟时刻:想象任何函数,其核心都是一个多项式(可能有无穷多项):

\displaystyle{f(x) = c_0 + c_1 x + c_2 x^2 + c_3x^3 + \cdots}

为了重建我们的函数,我们从固定点($c_0$)开始,并根据输入的值添加一系列其他项(如$c_1x$)。"DNA"就是精确描述我们函数的$c_0, c_1, c_2, c_3$这些值。

好了,我们有了一个通用的"函数格式"。但如何找到特定函数的系数,比如 sin(x) (单位圆上角度x的高度)?如何提取它的DNA?

是时候见证0的魔力了。

让我们从代入$x=0$处的函数值开始。这样做,我们得到:

\displaystyle{f(0) = c_0 + 0 + 0 + 0 + \cdots = c_0}

除了$c_0$之外所有项都消失了,这很合理:我们蓝图的起点应该是$f(0)$。对于$f(x) = \sin(x)$,我们可以算出$c_0 = \sin(0) = 0$。我们得到了第一段DNA!

获取更多DNA

既然我们知道$c_0$,如何在这个方程中分离出$c_1$?

\displaystyle{f(x) = c_0 + c_1 x + c_2 x^2 + c_3x^3 + \cdots}

嗯。有几个想法:

  • 我们可以令 $x = 1$ 吗?这样得到 $f(1) = c_0 + c_1(1) + c_2(1^2) + c_3(1^3) + \cdots$。虽然我们知道 $c_0$,但其他常数都加在一起了,无法单独分离出 $c_1$。

  • 如果我们除以 $x$ 会怎样?得到:

\displaystyle{\frac{f(x)}{x} = \frac{c_0}{x} + c_1 + c_2 x + c_3x^2 + \cdots}

然后我们可以令 $x=0$ 让其他项消失……对吗?这个想法不错,但问题是我们现在除以了零。

嗯。这个方法已经很接近了。我们怎样才能 几乎 除以零? 使用导数!

如果我们对 $f(x)$ 的蓝图求导,得到:

\displaystyle{f'(x) = (c_0)' + (c_1 x)' + (c_2 x^2)' + (c_3x^3)' + \cdots}

\displaystyle{f'(x) = 0 + c_1 + (2\cdot c_2 x) + (3\cdot c_3x^2) + \cdots}

每个幂次都减 1,而常数项 $c_0$ 变为零。这简直太方便了。

现在我们可以用之前的 $x=0$ 技巧来分离出 $c_1$:

\displaystyle{f'(0) = 0 + c_1 + (0) + (0) + \cdots = c_1}

在我们的例子中,$\sin'(x) = \cos(x)$,所以我们计算:$f'(0) = \sin'(0) = \cos(0) = 1 = c_1$

耶,又多了一点点 DNA!这就是泰勒级数的魔力:通过反复求导并令 $x = 0$,我们可以提取出多项式的 DNA。

我们再来一轮:

\displaystyle{f''(x) = 0 + 0 + (2\cdot c_2) + (3\cdot 2 c_3x^1) + \cdots}

取二阶导数后,幂次再次降低。前两项($c_0$ 和 $c_1x$)消失了,我们可以再次令 $x=0$ 来分离出 $c_2$:

\displaystyle{f''(0) = 0 + 0 + 2\cdot c_2 + 0 + \cdots}

对于我们的正弦例子,$\sin'' = -\sin$,所以:

\displaystyle{f''(0) = \sin''(0) = -\sin(0) = 0 = 2\cdot c_2}

即 $c_2 = 0$。

随着我们不断求导,我们执行了更多乘法,每个项前面会累积一个阶乘(1!,2!,3!)。

函数在点x=0附近的泰勒级数为:

\displaystyle{f(x) = f(0) + f'(0) x + \frac{f''(0)}{2!}x^2 + \frac{f'''(0)}{3!}x^3 + \cdots}

(严格来说,在点 $x=0$ 附近的泰勒级数称为麦克劳林级数。)

从任意点a出发的广义泰勒级数为:

\displaystyle{f(x) = f(a)+{\frac {f'(a)}{1!}}(x-a)+{\frac {f''(a)}{2!}}(x-a)^{2}+{\frac {f'''(a)}{3!}}(x-a)^{3}+\cdots }

思路是一样的。我们不再使用常规蓝图,而是使用:

\displaystyle{f(x) = c_0 + c_1 (x - a) + c_2 (x-a)^2 + c_3(x-a)^3 + \cdots}

因为我们是从 $f(a)$ 展开,所以 $f(a) = c_0 + 0 + 0 + \dots = c_0$。其他系数可以通过求导并令 $x = a$(而不是 $x=0$)来提取。

示例:sin(x)的泰勒级数

将导数代入上述公式,得到 $\sin(x)$ 在 $x = 0$ 附近的泰勒级数:

\displaystyle{\sin(x) = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \frac{x^7}{7!} + \dots}

下面是它的样子:

几点说明:

1) 正弦函数有无限多项

正弦(Sine)是一个无穷波,正如你所猜测的,它需要无穷多项才能持续下去。更简单的函数(如 $f(x) = x^2 + 3$)已经处于它们的“多项式格式”中,不需要无穷阶导数来维持DNA。

2) 正弦函数每隔一项缺失

如果我们反复对正弦在 x = 0 处求导,得到:

\displaystyle{\sin(0) \xrightarrow{\text{derive}} \cos(0) \xrightarrow{\text{derive}} -\sin(0) \xrightarrow{\text{derive}} -\cos(0) \xrightarrow{\text{derive}} \sin(0) \dots}

值为:

\displaystyle{0, 1, 0, -1, \dots}

忽略除以阶乘,我们得到模式:

\displaystyle{(0) + (1)x^1 + (0)x^2 + (-1)x^3 + (0)x^4 + (-1)x^5+ \dots }

因此正弦的DNA类似于 [0, 1, 0, -1] 重复。

3) 不同的起始位置有不同的DNA

作为趣味,这里是 $\sin(x)$ 在 $x =\pi$ 处的泰勒级数(Taylor series)(链接):

taylor series sin x at x=pi - Wolfram|Alpha 2019-01-18 16-45-04

几点说明:

  • 现在DNA类似于 [0, -1, 0, 1]。循环类似,但由于我们从 $x=\pi$ 开始,起始值发生了变化。

  • 写成计算后的数字,分母 1, 6, 120, 5040 看起来很奇怪。但它们只是每隔一个阶乘:1! = 1, 3! = 6, 5! =120, 7! = 5040。一般来说,泰勒级数的分母可能很复杂。

  • $O(x^{12})$ 项表示存在其他阶(幂次)为 $x^{12}$ 及更高的分量。因为 $\sin(x)$ 有无穷多阶导数,所以有无穷多项,计算机必须在某处截断。(今天你受够了泰勒展开(Tayloring)了,伙计。)

应用:函数逼近

泰勒级数的一个常见用途是快速近似一个函数。如果你想要一只蝌蚪,你需要整只青蛙的DNA吗?

泰勒级数有一系列项,通常按重要性排序:

\displaystyle{f(x) = f(0) + f'(0) x + \frac{f''(0)}{2!}x^2 + \frac{f'''(0)}{3!}x^3 + \cdots}

  • $c_0 = f(0)$,常数项,是函数在该点的精确值
  • $c_1 = f'(0)x$,线性项,告诉我们要从该点以什么速度移动
  • $c_2= \frac{f''(0)}{2!}x^2 $,二次项,告诉我们从该点加速离开的程度
  • 依此类推

如果我们只需要预测点周围几个瞬间的情况,初始位置和速度可能就足够了:

\displaystyle{\text{Linear model} = \text{initial point} + \text{velocity effect} = f(0) + f'(0)x}

如果我们要追踪更长时间,那么加速度(Acceleration)就变得重要了:

\displaystyle{\text{Quadratic model} = \text{initial point} + \text{velocity effect} + \text{acceleration effect}} \displaystyle{ = f(0) + f'(0)x + \frac{1}{2}f''(0)x^2}

随着我们远离起始点,我们需要更多项来保持预测的准确性。例如,线性模型 $\sin(x) = x$ 在 $x=0$ 附近是一个好的预测。随着我们走得更远,我们需要考虑更多项。

类似地,$e^x \sim 1 + x$ 对于小利率效果很好:1% 离散利率在一个时间周期后是 1.01,1% 连续利率比 1.01 略高。随着时间的推移,线性模型落后了,因为它忽略了复利效应(Compounding Effects)。

应用:函数比较

DNA的一个常见应用是什么?亲子鉴定(Paternity Tests)。

如果我们有几个函数,可以比较它们的泰勒级数,看看它们是否相关。

以下是 $\sin(x)$、$\cos(x)$ 和 $e^x$ 的展开式:

\displaystyle{ \sin x = x - \frac{x^3}{3!} + \frac{x^5}{5!} - \dots \xrightarrow{DNA} [0, 1, 0 -1, \dots] }

\displaystyle{ \cos x = 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \dots \xrightarrow{DNA} [1, 0, -1, 0, \dots] }

\displaystyle{ e^x = 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \dots \xrightarrow{DNA} [1, 1, 1, 1, \dots] }

这些序列有家族相似性,对吧?干净的 $x$ 的幂除以阶乘?

一个问题是 $e^x$ 的序列项都是正的,而正弦和余弦交替符号。我们如何将它们联系起来?

欧拉(Euler)的伟大洞察在于意识到一个 虚数(imaginary number) 可以将符号从正号改为负号:

{\begin{aligned}e^{ix}&=1+ix+{\frac {(ix)^{2}}{2!}}+{\frac {(ix)^{3}}{3!}}+{\frac {(ix)^{4}}{4!}}+{\frac {(ix)^{5}}{5!}}+{\frac {(ix)^{6}}{6!}}+{\frac {(ix)^{7}}{7!}}+{\frac {(ix)^{8}}{8!}}+\cdots \\[8pt]&=1+ix-{\frac {x^{2}}{2!}}-{\frac {ix^{3}}{3!}}+{\frac {x^{4}}{4!}}+{\frac {ix^{5}}{5!}}-{\frac {x^{6}}{6!}}-{\frac {ix^{7}}{7!}}+{\frac {x^{8}}{8!}}+\cdots \\[8pt]&=\left(1-{\frac {x^{2}}{2!}}+{\frac {x^{4}}{4!}}-{\frac {x^{6}}{6!}}+{\frac {x^{8}}{8!}}-\cdots \right)+i\left(x-{\frac {x^{3}}{3!}}+{\frac {x^{5}}{5!}}-{\frac {x^{7}}{7!}}+\cdots \right)\\[8pt]&=\cos x+i\sin x.\end{aligned}}

哇。使用虚数指数并分解为奇/偶次幂,揭示了正弦和余弦其实隐藏在指数函数中。太神奇了。

虽然这个证明 欧拉公式(Euler's Formula) 没有展示 为什么 虚数是有意义的,但它揭示了幕后隐藏的“老祖宗”。

附录:各种顿悟时刻

与傅里叶级数的关系

泰勒级数提取了函数的“多项式DNA”,而 傅里叶级数/变换 提取了函数的“圆形DNA”。两者都将函数视为由更小的部分(多项式或指数路径)构建而成。

泰勒级数总是有效吗?

这涉及到我能力范围之外的数学分析,但某些函数不容易(甚至永远不能)用多项式近似。

注意,像 $x^2, x^3$ 这样的幂次随着 $x$ 增长而爆炸。为了获得缓慢、渐进的曲线,你需要一支多项式项组成的军队来相互竞争,仅有一个获胜者勉强胜出。如果你过早停止训练,近似值又会爆炸。

例如,这里是 $\ln(1 + x)$ 的泰勒级数。黑线是我们想要的曲线,添加更多项,甚至几十项,也只能勉强在 $x=1.0$ 附近获得精确度。用这些想要疯狂失控的项来维持平缓斜率实在太难了。

来源

在这种情况下,我们只有一个收敛半径,近似值在此半径内保持准确(例如在 $|x| < 1$ 附近)。

将几何定义转化为代数定义

正弦通常用几何定义:圆图形上一条线的高度。

将其转化为方程似乎非常困难。泰勒级数给了我们一个过程:如果我们知道单个值及其变化方式(导数),我们就可以反向工程出DNA。

类似地,将 $e^x$ 描述为“导数等于当前值的函数”产生了DNA [1, 1, 1, 1] 和多项式 $f(x) = 1 + \frac{1}{1!}x + \frac{1}{2!}x^2 + \frac{1}{3!}x^3 + \dots $。我们从一个文字描述得到了一个方程。

呼!有几件事需要思考。

数学愉快。

本系列其他文章

  1. 学习微积分的温和入门
  2. 用银行账户类比理解微积分
  3. 史前微积分:发现 Pi
  4. 一个微积分类比:积分(Integral)即乘法
  5. 微积分:建立对导数(Derivative)的直觉
  6. 如何理解导数:乘积法则、幂法则与链式法则
  7. 如何理解导数:商法则、指数与对数
  8. 极限(Limit)的直观介绍
  9. 泰勒级数的直觉(DNA 类比)
  10. 我们为什么需要极限和无穷小(Infinitesimal)?
  11. 学习微积分:克服我们对精确性的人为需求
  12. 一场关于 0.999... = 1 的友好讨论
  13. 类比:微积分相机
  14. 抽象练习:微积分图形
  15. 快速洞察:用微积分做更简单的算术
  16. 如何用微积分将 1 加到 100
  17. Sin(x) 的积分:几何直觉

加入 45 万月度读者

喜欢这篇文章?还有更多内容能帮你建立持久、直观的数学理解。加入通讯以获取额外内容和最新更新。