前言

本文对泰勒公式的由来以及证明做一些简单的总结,方便自己在闲暇时品读。
本人对泰勒公式的记忆只停留在大学时期的期末考试复习阶段,说来也是十分的惭愧。
俗话说,温故而知新,可以为师矣,以下内容均来自于知乎大神承志

一、泰勒公式的用途

泰勒公式本质解决的是近似的问题,比如说我们有一个看起来很复杂的方程,我们直接计算方程本身的值可能会非常的麻烦。所以我们希望能够找到一个近似的方法来获得一个足够近似的值。

从这里,我们得到了两个重点,一个是近似的方法,另一个是近似的精度。我们既需要找到合适的方法来近似,同时也需要保证近似的精度是可控的。否则一切都没有意义,结合实际其实很好理解,比如我们用机床造一个零件。我们都知道世界上不存在完美的圆,实际上我们也并不需要完美,但是我们需要保证偏差是可控的,并且在一定的范围内。泰勒公式也是一样,它既可以帮助我们完成近似,也可以保证得到的结果是足够精确的。

二、泰勒公式的定义

我们下面来看看泰勒公式的定义,我们已经知道了它的用途是求一个函数的近似值。但是我们如何去求呢,其实一个比较朴素的思路是通过斜率逼近

举个例子:

Python计算泰勒sin 泰勒公式_多项式


这是一张经典的导数图,从上图我们可以看到,随着 Python计算泰勒sin 泰勒公式_多项式_02 的减小,点 Python计算泰勒sin 泰勒公式_多项式_03Python计算泰勒sin 泰勒公式_斜率_04 也会越来越接近,这就带来了 Python计算泰勒sin 泰勒公式_机器学习_05 越来越接近 Python计算泰勒sin 泰勒公式_多项式_06

当然,当 Python计算泰勒sin 泰勒公式_多项式_02 比较大的时候显然误差就会比较大,为了缩小误差,我们可以引入二阶导数、三阶导数以及高阶导数。由于我们并不知道函数究竟可以有多少阶导数,我们不妨假设 Python计算泰勒sin 泰勒公式_斜率_08 在区间内一直有 Python计算泰勒sin 泰勒公式_斜率_09 阶导数,我们试着写出一个多项式来逼近原函数:
Python计算泰勒sin 泰勒公式_机器学习_10
我们希望这个式子与原值的误差越小越好,究竟要多小才算足够好呢?数学家们给出了定义,希望它是 Python计算泰勒sin 泰勒公式_机器学习_11 的高阶无穷小。也就是说误差比上 Python计算泰勒sin 泰勒公式_机器学习_11 的极限是 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_13

前面已经提到过,我们是通过导数来逼近的,所以我们假设:
Python计算泰勒sin 泰勒公式_Python计算泰勒sin_14
按照这个假设我们可以很方便地得到多项式的系数 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_15 了,其实很简单,我们只需将上述式①和式②结合计算便可求得:
Python计算泰勒sin 泰勒公式_机器学习_16
我们再将式③代入到式①中即可得到:
Python计算泰勒sin 泰勒公式_斜率_17

三、泰勒公式的证明

其实上面的式子就是泰勒公式的内涵了,也就是说我们通过高阶导数来逼近了原函数。最后我们只需要证明这个式子就是我们想要的,也就是它的误差足够小。

我们同样用一个函数 Python计算泰勒sin 泰勒公式_机器学习_18 来表示 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_19 与原函数 Python计算泰勒sin 泰勒公式_斜率_08 的差值。我们直接比较 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_19Python计算泰勒sin 泰勒公式_斜率_08

我们带入一下可以发现, Python计算泰勒sin 泰勒公式_机器学习_23 ,不仅如此:
Python计算泰勒sin 泰勒公式_机器学习_24
这里我们以 Python计算泰勒sin 泰勒公式_知乎_25 为例进行证明:
Python计算泰勒sin 泰勒公式_Python计算泰勒sin_26
Python计算泰勒sin 泰勒公式_知乎_27
Python计算泰勒sin 泰勒公式_斜率_28
Python计算泰勒sin 泰勒公式_机器学习_29
证毕。

很明显,因为求导后存在大量的携带有 Python计算泰勒sin 泰勒公式_斜率_30,当 Python计算泰勒sin 泰勒公式_知乎_31

到这里,我们需要进行一个猜测:根据上面的规律,以及我们的目标——证明这个 Python计算泰勒sin 泰勒公式_机器学习_18 函数是一个关于 Python计算泰勒sin 泰勒公式_机器学习_11 的无穷小,所以我们可以进一步猜测 Python计算泰勒sin 泰勒公式_机器学习_18 应该是一个与 Python计算泰勒sin 泰勒公式_斜率_35

有了这个猜测之后,我们套用一下柯西中值定理
Python计算泰勒sin 泰勒公式_斜率_36
我们令 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_37 ,套用中值定理可以得到:
Python计算泰勒sin 泰勒公式_知乎_38
Python计算泰勒sin 泰勒公式_斜率_39
有了这个结论之后,我们再对函数 Python计算泰勒sin 泰勒公式_知乎_40Python计算泰勒sin 泰勒公式_机器学习_41 在区间 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_42再次应用柯西中值定理
Python计算泰勒sin 泰勒公式_多项式_43
Python计算泰勒sin 泰勒公式_机器学习_44
接下来就是熟悉的套娃环节了,经过一共 Python计算泰勒sin 泰勒公式_机器学习_45 次套娃之后,我们可以得到:
Python计算泰勒sin 泰勒公式_机器学习_46
我们对 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_19Python计算泰勒sin 泰勒公式_机器学习_45 次导数,可以得到 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_13 ,因为所有项最高次项只有 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_50 次,求 Python计算泰勒sin 泰勒公式_机器学习_45 次导数之后全部变成 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_13 。也就是说 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_53 ,所以 Python计算泰勒sin 泰勒公式_知乎_54 ,我们把这项代入到式⑤中,即可得到:
Python计算泰勒sin 泰勒公式_Python计算泰勒sin_55

四、误差的证明

接下来我们要证明这个误差 Python计算泰勒sin 泰勒公式_机器学习_18Python计算泰勒sin 泰勒公式_斜率_57

到这里,证明就很简单了,在固定的区间 Python计算泰勒sin 泰勒公式_知乎_58 中,很明显函数 Python计算泰勒sin 泰勒公式_知乎_59 存在最大值,我们假设这个最大值是 Python计算泰勒sin 泰勒公式_多项式_60 。也就是说 Python计算泰勒sin 泰勒公式_机器学习_61

那么:
Python计算泰勒sin 泰勒公式_斜率_62
由于 Python计算泰勒sin 泰勒公式_知乎_63 逼近 Python计算泰勒sin 泰勒公式_斜率_64Python计算泰勒sin 泰勒公式_知乎_65 是一个常数,所以这个极限趋向于 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_13 ,我们可以用极限的定义很容易证明。于是我们证明了,误差 Python计算泰勒sin 泰勒公式_机器学习_18 是比 Python计算泰勒sin 泰勒公式_机器学习_68

所以我们可以得到:
Python计算泰勒sin 泰勒公式_斜率_69
由于我们一共用到了 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_50 阶导数来表达原函数,所以我们称为这是原函数 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_71Python计算泰勒sin 泰勒公式_斜率_72。最后的:
Python计算泰勒sin 泰勒公式_Python计算泰勒sin_55
我们称它为拉格朗日余项。我们也可以简写为 Python计算泰勒sin 泰勒公式_多项式_74 ,它称为佩亚诺型余项,其实和拉格朗日余项是一回事,只是写的形式不同。

我们如果令 Python计算泰勒sin 泰勒公式_斜率_75 的话,还可以将式子进一步化简。由于 Python计算泰勒sin 泰勒公式_知乎_76 ,所以我们可以令 Python计算泰勒sin 泰勒公式_斜率_77 ,原公式可以写成:
Python计算泰勒sin 泰勒公式_斜率_78
和上面的式子相比,这个式子要简单许多,它也有一个名字,叫做麦克劳林公式。在麦克劳林公式下的佩亚诺余项写成 Python计算泰勒sin 泰勒公式_机器学习_79

如果觉得上面的式子有点多记不过来可以忽略原式,只需要记住麦克劳林公式即可。对于拉格朗日余项,我们也只会在计算误差的时候用到,在不需要考虑误差的场景下也可以忽略。

五、实例

下面我们来看一个实际的例子,来感受一下泰勒公式的强大。

我们都知道有一些函数的值我们很难直接计算,比如 Python计算泰勒sin 泰勒公式_机器学习_80 ,和正弦余弦函数等。由于 Python计算泰勒sin 泰勒公式_多项式_81 本身就是一个无理数,有没有想过我们怎么来求一个带 Python计算泰勒sin 泰勒公式_多项式_81

我们就用 Python计算泰勒sin 泰勒公式_机器学习_80 举例,看看怎么利用泰勒公式来计算 Python计算泰勒sin 泰勒公式_斜率_84

为了简化计算,我们显然考虑麦克劳林公式。由于 Python计算泰勒sin 泰勒公式_多项式_85 时, Python计算泰勒sin 泰勒公式_多项式_86 ,并且 Python计算泰勒sin 泰勒公式_斜率_87

所以我们可以得到:
Python计算泰勒sin 泰勒公式_机器学习_88
代入泰勒公式,可以得到:
Python计算泰勒sin 泰勒公式_机器学习_89
我们如果把最后一项当成误差,那么可以得到:
Python计算泰勒sin 泰勒公式_机器学习_90
Python计算泰勒sin 泰勒公式_Python计算泰勒sin_91 时,产生的误差为:
Python计算泰勒sin 泰勒公式_机器学习_92
我们稍微算一下就可以知道,这个误差小于 Python计算泰勒sin 泰勒公式_知乎_93 ,已经足够接近了。也就是说我们把原本不太好计算的函数转化成了若干个多项式的和,可以非常简单地获得一个足够接近的近似值。并且除此之外,我们还能算出它的最大误差,实在是太完美了。

六、一些思考

到这里还没有结束,看完所有的推导和计算之后,不知道你们有没有一个疑惑,这么一个牛叉并且复杂并且有用的公式,泰勒是如何能够想到的呢?好像用一时的灵感很难解释。毕竟人的灵感往往都是一瞬间对某个点的顿悟,而这么多公式和结论是很难顿悟的。

之前上学的时候我完全没有意识到这个问题,这次重温的时候才觉得不对。当然你可能会说这里有这么多数学家的名字,这显然不是一个人的功劳。但即使是这样,我仍然好奇,这么伟大的公式是在多么的因缘巧合之下被人类给发明出来的?

我们设想一个问题,如果 Python计算泰勒sin 泰勒公式_知乎_94 ,那么显然 Python计算泰勒sin 泰勒公式_斜率_08Python计算泰勒sin 泰勒公式_多项式_96 的各阶导数全都相等。那么问题来了,如果我们人为地构造一个函数 Python计算泰勒sin 泰勒公式_斜率_97 ,使得它的各阶导数和 Python计算泰勒sin 泰勒公式_多项式_96 吻合,那么是不是可以认为这个我们人为构造出来的函数也和 Python计算泰勒sin 泰勒公式_多项式_96

然而有些函数的高阶导数是无穷无尽的,我们不可能人工全部拟合,所以只能退而求其次,拟合其中的 Python计算泰勒sin 泰勒公式_Python计算泰勒sin_50 项。显然这样做会存在误差,那么我们需要知道这个误差的大小。于是就有了后面的拉格朗日余项大小的推算

泰勒公式的出现和推导过程正是基于这样的思路应运而生的,想到这里,如果我们把各阶导数的项看成是特征数据,那么这个问题就转化成了机器学习当中的回归问题,只不过在机器学习当中我们是设定了优化目标和优化方法,让模型自行训练来拟合逼近,而泰勒公式其实是通过思维和数学的力量推算出了结果,两者的目的和结果是一样的,但是过程完全迥异,两个看似完全风马牛不相及的问题殊途同归,不得不说数学的魅力真的很是令人折服