泰勒级数用函数在某点的信息描述其附近取值的公式。如果函数足够平滑的话,在已知函数在某一点的各阶导数值的情况之下,泰勒公式可以用这些导数值做系数构建一个多项式来近似函数在这一点的邻域中的值。 ——百度百科



1. 简介

泰勒公式是将一个在x=x0具有n+1阶导数的函数f(x)利用关于(x-x0)的n次多项式逼近函数的方法。

若函数ƒ(x)在包含x0的某个闭区间[a,b]上具有n+1阶导数,且在开区间(a,b)上具有(n+1)阶导数,则对闭区间[a,b]上任意一点x,成立下式:

Python泰勒级数求sin 怎么求泰勒级数_Python泰勒级数求sin


ƒ(n)(xo)表示f(x)的n阶导数;Rn(x)是泰勒公式的余项,是(x-x0)的高阶无穷小。



2. 为什么要进行泰勒展开

(1)幂级数(多项式,它本身的运算仅是有限项加减法和乘法,所以在数值计算方面,多项式是人们乐于使用的工具。因此我们经常用多项式来近似表达函数。)的求导积分可以逐项进行,因此求和函数(函数项无穷级数的和)较容易。
(2)一个解析函数(区域上处处可微分的复函数)可被延伸为一个定义在复平面上的一个开片上的解析函数,并使得复分析这种手法可行。
(3)对于一个非常复杂的函数,想要求其某点的值,直接求解无法实现,可以用泰勒级数来近似计算函数的值,并估计误差
(4)泰勒公式在机器学习中主要应用于梯度迭代



3. 近似计算(函数拟合)举例

3.1 函数逼近思想

切比雪夫提出的最佳逼近概念,研究了逼近函数类是n次多项式时最佳逼近元的性质,建立了能够据以判断多项式为最佳逼近元的特征定理。
已知[α,b]区间上具有n+1阶导数的连续函数ƒ(x),以多项式Pn(x)= a0 + a1x + a2x^2 + …+ anx^n (n≥0)来近似逼近ƒ(x)。可知:
P1’(x)=ƒ’(x0)、P2’’(x)=ƒ’’(x0)、→、→Pn(x)的n阶导数等于ƒ(x0)的n阶导数

3.2 函数拟合举例

中学常见的初等函数如sinx、cosx、lnx等,我们只知道某些特殊点的函数值,并不知道这些特殊值是怎么计算得来。

下面以ƒ(x)=cosx为例,在x0=0的Δx邻域内进行函数拟合。

(1)一次(线性)拟合

P1(x) = a0 + a1x 近似拟合ƒ(x)=cosx,

a0=cosx0=1,

a1=(cosx0)’=0,

所以P1(x) = 1,如下图黄色线,可见,该直线只有在x=0处拟合程度较好。

(2)二次拟合

P2(x) = a0 + a1x + a2x^2 近似拟合ƒ(x)=cosx,

a0、a1同上;

a2 = (cosx0)’’ = -1/2!

所以P2(x) = 1 - (1/2)x^2,如下图绿色线,可见,该直线只有在区间[-Π/2,Π/2]处拟合程度较好。

(3)八次拟合

由于cosx在x=0处的奇数导都为0,所以这里只写偶数项

P8(x) = a0 + a2x^2 + a4x^4 + a6x^6 + a8x^8 近似拟合ƒ(x)=cosx,

a0、a2同上;

a4 = (cosx0)’’’’ = 1/4!

a6 = (cosx0)’’’’’’ = -1/6!

a8 = (cosx0)’’’’’’’’ = 1/8!

所以P8(x) = 1 - (1/2)x^2 + (1/24)x^4 - (1/720)x^6 + (1/34920)x^8,如下图红色线,可见,该直线在区间[-Π,Π]处拟合程度都比较好。

Python泰勒级数求sin 怎么求泰勒级数_邻域_02


由上可知,拟合次数越高,拟合程度就越好。当拟合到无穷次幂时,可以说我们的Pn(x)与原函数几乎没有差别了,只需补充一个余项。



4. 泰勒公式的推导

4.1 公式推导

我们知道,根据拉格朗日中值定理有:

Python泰勒级数求sin 怎么求泰勒级数_机器学习_03


于是:

Python泰勒级数求sin 怎么求泰勒级数_拟合_04


其中误差α是在Δx→0即x→x0的前提下才趋向于0,所以在近似计算中往往不够精确。于是我们需要一个能够足够精确的且能估计出误差的多项式:

Python泰勒级数求sin 怎么求泰勒级数_多项式_05


来近似地表示函数ƒ(x)且要写出其误差ƒ(x) -P(x)的具体表达式。设函数P(x)满足:

Python泰勒级数求sin 怎么求泰勒级数_多项式_06


可以依次求出A0、A1、A2、…、An的值

P(x0) = A0;

P’(x0) = A1;

P’’(x0) =2!* A2;


P(n)(x0) = n!*A0;所以:

Python泰勒级数求sin 怎么求泰勒级数_拟合_07

4.2 余项

接下来,只需要加上误差项Rn(x),误差项即逼近函数与原函数间的差值,

Rn(x) = ƒ(x) - P(x)

当Rn(x) = o(x^n)且n阶导数存在时,公式称为带佩亚诺型的n阶麦克劳林公式;


Python泰勒级数求sin 怎么求泰勒级数_Python泰勒级数求sin_08


其中δ在0与x之间时,公式称为拉格朗日型余项的n阶麦克劳林公式。


更详细推导见:



5. 带佩亚诺余项(Peano)的麦克劳林公式

麦克劳林公式是泰勒公式在x0=0时的特殊情况,将x0=0代入泰勒公式,有:

Python泰勒级数求sin 怎么求泰勒级数_拟合_09


常用公式:

Python泰勒级数求sin 怎么求泰勒级数_多项式_10



6. 泰勒展开式与泰勒级数的区别

6.1 定义不同

泰勒级数(Taylor series)是用无限项连加式——级数来表示一个函数,这些相加的项由函数在某一点的导数求得。泰勒展开式是一个用函数在某点的信息描述其附近取值的公式。

6.2 要求不同

泰勒级数要求在被展开处无限阶可导,是函数展开成有限项的幂级数。泰勒展开式要求被展开函数在该出n+1阶可导,满足幂级数收敛于f(x),而将f(x)展开成无限项幂级数的精确表示。

6.3 应用不同

泰勒级数的应用体现在以下三个方面:
1、幂级数的求导和积分可以逐项进行,因此求和函数相对比较容易。
2、一个解析函数可被延伸为一个定义在复平面上的一个开区域上的泰勒级数通过解析延拓得到的函数,并使得复分析这种手法可行。
3、泰勒级数可以用来近似计算函数的值。
泰勒展开式的应用体现在以下五个方面:
1、幂级数的求导和积分可以逐项进行,因此求和函数相对比较容易。
2、一个解析函数可被延伸为一个定义在复平面上的一个开片上的解析函数,并使得复分析这种手法可行。
3、泰勒级数可以用来近似计算函数的值,并估计误差。
4、证明不等式。
5、求待定式的极限。