1、比较通俗地讲解一下泰勒公式是什么。

       泰勒公式,也称泰勒展开式。是用一个函数在某点的信息,描述其附近取值的公式。如果函数足够平滑,在已知函数在某一点的各阶导数值的情况下,泰勒公式可以利用这些导数值来做系数,构建一个多项式近似函数,求得在这一点的邻域中的值。

所以泰勒公式是做什么用的?

       简单来讲就是用一个多项式函数去逼近一个给定的函数 ( 即尽量使多项式函数图像拟合给定的函数图像 ) ,注意,逼近的时候一定是从函数图像上的某个点展开。如果一个非常复杂的函数,想求其某点的值,直接求无法实现,这时候可以使用泰勒公式去近似的求该值,这是泰勒公式的应用之一。泰勒公式在机器学习中主要应用于梯度迭代。

2、问题的提出

 多项式  


python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd

 是最简单的一类初等函数。关于多项式,由于它本身的运算仅是有限项加减法和乘法,所以在数值计算方面,多项式是人们乐于使用的工具。因此我们经常用多项式来近似表达函数。这也是为什么泰勒公式选择多项式函数去近似表达给定的函数。

3、近似计算举例

初等数学已经了解到一些函数如:

python泰勒展开 autograd 泰勒公式_多项式_02

的一些重要性质,但是初等数学不曾回答怎样来计算它们,以

python泰勒展开 autograd 泰勒公式_迭代_03

的近似计算为例:

①一次(线性逼近)

利用微分近似计算公式 

python泰勒展开 autograd 泰勒公式_多项式_04

,( 该式由导数/微分的极限表达公式转换得到 ),对python泰勒展开 autograd 泰勒公式_斜率_05附近的python泰勒展开 autograd 泰勒公式_迭代_06的线性逼近为:

python泰勒展开 autograd 泰勒公式_斜率_07

,所以 python泰勒展开 autograd 泰勒公式_迭代_06python泰勒展开 autograd 泰勒公式_斜率_05附近的线性逼近函数python泰勒展开 autograd 泰勒公式_斜率_10,如下图:

python泰勒展开 autograd 泰勒公式_迭代_11

 线性逼近优点:形式简单,计算方便;缺点:离原点 O 越远,近似度越差。

②二次逼近

二次多项式  python泰勒展开 autograd 泰勒公式_斜率_12逼近 python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_13,我们期望:python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_14(即期望在python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_15处逼近函数和给定函数值相等);python泰勒展开 autograd 泰勒公式_迭代_16(即期望在python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_15处逼近函数和给定函数的斜率相等); python泰勒展开 autograd 泰勒公式_迭代_18,所以python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_19(即期望在python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_15处逼近函数和给定函数的曲率相等); 所以 python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_21,如下图

python泰勒展开 autograd 泰勒公式_多项式_22

 二次逼近要比线性逼近好得多,但局限于 python泰勒展开 autograd 泰勒公式_迭代_23内,该范围外,图像明显差异很大。为什么我们期望两个函数在某一点的函数值、一阶导数值、二阶导数值相等?因为这些值表达了函数(图像)最基本和最主要的性质,这些性质逼近即可使两个函数逼近(由上图函数图像可以直观地看出来)

 ③八次逼近

八次多项式 python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_24逼近python泰勒展开 autograd 泰勒公式_斜率_25,我们期望:python泰勒展开 autograd 泰勒公式_斜率_26,求出python泰勒展开 autograd 泰勒公式_多项式_27(即期望在python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_15处逼近函数和给定函数值相等);

 python泰勒展开 autograd 泰勒公式_斜率_29,求出 python泰勒展开 autograd 泰勒公式_斜率_30(即期望在python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_15处逼近函数和给定函数的斜率相等); python泰勒展开 autograd 泰勒公式_斜率_32

 python泰勒展开 autograd 泰勒公式_迭代_33,求出python泰勒展开 autograd 泰勒公式_迭代_34(即期望在python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_15处逼近函数和给定函数的曲率相等);  所以 python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_36,如下图:

python泰勒展开 autograd 泰勒公式_迭代_37

 python泰勒展开 autograd 泰勒公式_斜率_38(绿色图像)比python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_39(蓝色图像)更大范围内更接近余弦函数(红色图像)

由上述3次不同程度的函数逼近可以看出:对于精确度要求较高且需要估计误差的时候,必须用高次多项式来近似表达函数,同时给出误差公式。

以上就是利用多项式函数去逼近给定函数的一个过程。

4、泰勒公式的推导

由此引出一个问题:给定一个函数python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_40,要找一个在指定点python泰勒展开 autograd 泰勒公式_多项式_41附近与python泰勒展开 autograd 泰勒公式_迭代_42很近似的多项式函数python泰勒展开 autograd 泰勒公式_斜率_43,记为:python泰勒展开 autograd 泰勒公式_斜率_44使得python泰勒展开 autograd 泰勒公式_迭代_45并且使得两者误差python泰勒展开 autograd 泰勒公式_迭代_46可估计。所以要找的多项式应该满足什么条件,误差是什么?从几何上看,python泰勒展开 autograd 泰勒公式_迭代_47代表两条曲线,如下图: 

python泰勒展开 autograd 泰勒公式_斜率_48


使它们在python泰勒展开 autograd 泰勒公式_多项式_49附近很靠近,很明显:

① 首先要求两曲线在python泰勒展开 autograd 泰勒公式_多项式_50点相交,即python泰勒展开 autograd 泰勒公式_迭代_51

② 如果要靠得更近,还要求两曲线在python泰勒展开 autograd 泰勒公式_多项式_50点相切,(由图像可以直观看出,相交【棕色和红色图像】和相切【绿色和红色图像】,两曲线在python泰勒展开 autograd 泰勒公式_多项式_49附近的靠近情况明显差异很大,相切更近),即python泰勒展开 autograd 泰勒公式_迭代_54

③ 如果还要靠得更近,还要求曲线在python泰勒展开 autograd 泰勒公式_多项式_50点弯曲方向相同,(如上图,弯曲方向相反【绿色和红色图像】;弯曲方向相同【蓝色和红色图像】,明显在离python泰勒展开 autograd 泰勒公式_多项式_49很远的地方,弯曲方向相同两函数的差异更小一点),即python泰勒展开 autograd 泰勒公式_斜率_57,进而可猜想,若在python泰勒展开 autograd 泰勒公式_多项式_50附近有python泰勒展开 autograd 泰勒公式_迭代_54

python泰勒展开 autograd 泰勒公式_斜率_57,......,python泰勒展开 autograd 泰勒公式_多项式_61,近似程度越来越好。

综上所述,所要找的多项式应满足下列条件:

python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_62

解释一下上面的转换是如何做的,以上面第三行的二阶导数为例:

第一个箭头的转换:将python泰勒展开 autograd 泰勒公式_斜率_63求二阶导函数后将python泰勒展开 autograd 泰勒公式_多项式_64带入,求得python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_65

第二个箭头的转换:所以python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_66,所以python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_67 多项式函数 python泰勒展开 autograd 泰勒公式_斜率_68中的系数python泰勒展开 autograd 泰勒公式_迭代_69可以全部由python泰勒展开 autograd 泰勒公式_迭代_70表示,则得到:python泰勒展开 autograd 泰勒公式_迭代_71

其中误差为 python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_72。因为是用多项式函数去无限逼近给定的函数,所以两者之间肯定存在一丢丢的误差。

 5、泰勒公式的定义

所以我们就得到了泰勒公式的定义:

如果函数python泰勒展开 autograd 泰勒公式_多项式_73在含python泰勒展开 autograd 泰勒公式_斜率_74的某个开区间python泰勒展开 autograd 泰勒公式_斜率_75内具有直到python泰勒展开 autograd 泰勒公式_斜率_76阶导数,则对python泰勒展开 autograd 泰勒公式_迭代_77,有python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_78

其中余项(即误差)python泰勒展开 autograd 泰勒公式_多项式_79python泰勒展开 autograd 泰勒公式_多项式_80python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_81python泰勒展开 autograd 泰勒公式_多项式_82之间。泰勒公式的余项表达方式有好几种,前面这种表示方法称为python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_83阶泰勒展开式的拉格朗日余项。拉格朗日余项是python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_84阶泰勒公式又多展开了一阶,python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_84变为python泰勒展开 autograd 泰勒公式_多项式_86。注意,这里的余项即为误差,因为使用多项式函数在某点展开,逼近给定函数,最后肯定会有一丢丢的误差,我们称之为余项。

 6、扩展--麦克劳林公式

是泰勒公式的一种特殊情况:即当python泰勒展开 autograd 泰勒公式_多项式_87时的泰勒公式。所以将python泰勒展开 autograd 泰勒公式_多项式_87带入公式,即得:python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_89

 几个常见的初等函数的带有佩亚诺余项的麦克劳林公式:

python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_90

佩亚诺余项为python泰勒展开 autograd 泰勒公式_python泰勒展开 autograd_91

的高阶无穷小:python泰勒展开 autograd 泰勒公式_多项式_92