泰勒公式(Taylor Series)能把大多数的函数展开成幂级数,即
f(x)=∞∑n=0Anxn
式子当中只有加法与乘法,容易求导,便于理解与计算。这种特性使得泰勒公式在数学推导(如:微分方程以幂级数作为解),数值逼近(如:求e、开方),函数逼近(在计算机某些计算优化时,可以把某些繁琐的式子进行泰勒展开,仅保留加法与乘法运算),复分析等多种应用中有广泛应用。
泰勒公式定义
条件:有实函数f,f在闭区间[a,b]是连续的,f在开区间(a,b)是n+1阶可微。
则可以对函数f进行泰勒展开:
f(x)=10!f(x0)+11!(x−x0)f′(x0)+12!(x−x0)2f′′(x0)+⋅⋅⋅+1n!(x−x0)nf(n)(x0)+Rn
其中x0为区间(a,b)中的某一点, x0∈(a,b),变量x也在区间(a,b)内。
泰勒展开得到的是一个多项式,可以写成
f(x)=n∑k=0(x−x0)kk!f(k)(x)+Rn
其中Rn为泰勒公式的余项(Remainder)。该余项可以写成以下形式
Rn=∫xx0f(n+1)(t)n!(x−t)ndt
余项Rn还可以进一步表示成:存在一点x0<ξ<x使得下面的式子成立
Rn=f(n+1)(ξ)(n+1)!(x−x0)n+1
泰勒公式推导
泰勒公式推导的起点为微积分基本定理(Fundamental Theorem of Calculus):
∫xx0f′(t)dt=f(x)–f(x0)
因此有:
f(x)=f(x0)+∫xx0f′(t)dt
然后用分部积分法(Integration by parts)对积分部分进行分解:
f(x)=f(x0)+∫xx0f′(t)dt=f(x0)+tf′(t)∣∣xx0−∫xx0tf′′(t)dtudv=uv−vdu=f(x0)+xf′(x)–x0f′(x0)−∫xx0tf′′(t)dt=f(x0)+x(f′(x0)+∫xx0f′′(t)dt)–x0f′(x0)−∫xx0tf′′(t)dtFundamental Theorem of Calculus=f(x0)+(x−x0)f′(x0)+∫xx0(x−t)f′′(t)dt=f(x0)+(x−x0)f′(x0)+(xt−12t2)f′′(t)∣∣∣xx0−∫xx0(xt−12t2)f′′′(t)dtudv=uv−vdu=f(x0)+(x−x0)f′(x0)+x22f′′(x)+−2x0x+x022f′′(x0)−∫xx02xt−t22f′′′(t)dt=f(x0)+(x−x0)f′(x0)+x22(f′′(x0)+∫xx0f′′′(t)dt)+−2x0x+x022f′′(x0)+∫xx0−2xt+t22f′′′(t)dtFundamental Theorem of Calculus=f(x0)+(x−x0)f′(x0)+(x−x0)22f′′(x0)+∫xx0(x−t)22f′′′(t)dt
运用微积分基本定理以及分部积分法继续推导下去可以得到:
f(x)=10!f(x0)+11!(x−x0)f′(x0)+12!(x−x0)2f′′(x0)+⋅⋅⋅+1n!(x−x0)nf(n)(x0)+∫xx0f(n+1)(t)n!(x−t)ndt∗
由此得到余项
Rn=∫xx0f(n+1)(t)n!(x−t)ndt
泰勒公式余项推导
泰勒公式的余项能写成多种形式,我们这里只对它的拉格朗日(Lagrange)形式进行推导
拉格朗日余项为:存在一点x0<ξ<x使得下面的式子成立
Rn=f(n+1)(ξ)(n+1)!(x−x0)n+1
推导过程如下:
令
F(x)=10!f(x0)+11!(x−x0)f′(x0)+12!(x−x0)2f′′(x0)+⋅⋅⋅+1n!(x−x0)nfn(x0)
那么就有
Rn(x)=f(x)–F(x)
由于f(x)与F(x)在区间(a,b)上都有n+1阶导,因此Rn(x)在此区间上也有n+1阶导。
又因为Rn(x)=∫xx0f(n+1)(t)n!(x−t)ndt,因此有
Rn(x0)=R′n(x0)=R′′n(x0)=…=R(n)n(x0)=R(n+1)n(x0)=0
对函数Rn(x)以及函数G(x)=(x−x0)n+1应用柯西中值定理(Cauchy Mean Value Theorem),得到:
存在一点ξ1∈(x0,x),使得下面的等式成立
R′n(ξ1)G′(ξ1)=Rn(x)–Rn(x0)G(x)–G(x0)
等号左边展开后为R′n(ξ1)(n+1)(ξ1−x0)n,等号右边为Rn(x)(x−x0)n+1,即
R′n(ξ1)(n+1)(ξ1–x0)n=Rn(x)(x−x0)n+1
现在注意等号左边,把左边当作对R′n(x)与(n+1)(x−x0)n在区间(x0,ξ1)应用柯西中值定理,得到
存在一点ξ2∈(x0,ξ1),使得下面的等式成立
R′n(ξ1)(n+1)(ξ1−x0)n=R′n(ξ1)−R′n(x0)(n+1)(ξ1−x0)n−0=R′′n(ξ2)n(n+1)(ξ2−x0)n−1
按照这种方法继续推导下去,经过n+1次后得到
Rn(x)(x−x0)n+1=Rn+1n(ξ)(n+1)!( ξ∈(x0,ξn) , thusξ∈(x0,x) )
另外,可以看到R(n+1)n(x)=(f(x)−F(x))(n+1)=f(n+1)(x),代入上面的式子得到
Rn(x)=f(n+1)(ξ)(n+1)!(x−x0)n+1ξ∈(x0,x)
泰勒级数(Taylor Series)
按照上述泰勒公式,如果f(x)在x0处无限可导,那么泰勒公式则变为
f(x)=∞∑n=0f(n)(x0)n!(x−x0)n+R∞
其中幂级数(Power Series)
∞∑n=0f(n)(x0)n!(x−x0)n
称为f(x)在点x0处的泰勒级数。
泰勒级数的收敛性分析
泰勒级数在实数域上的收敛性分析
如果函数f(x)在包含x0的区间(a,b)上无限可导,那么对于所有x∈(a,b),f(x)能展开成泰勒级数的条件就是余项在无穷处趋于0,即
f(x)=∞∑n=0f(n)(x0)n!(x−x0)n⇔limn→∞Rn(x)=0
更进一步分析,在泰勒公式时有余项
Rn(x)=f(n+1)(ξn+1)(n+1)!(x−x0)n+1,let ξn+1=ξ
在其前一步,有
Rn−1(x)=f(n)(ξn)(n)!(x−x0)n
两者相比,得
Rn(x)Rn−1(x)=f(n+1)(ξn+1)(x−x0)f(n)(ξn)(n+1)
只有∣∣Rn(x)Rn−1(x)∣∣<1时,才表明余项在变小,即需要
∣∣f(n+1)(ξn+1)(x−x0)f(n)(ξn)(n+1)∣∣<1
|x−x0|<∣∣f(n)(ξn)(n+1)f(n+1)(ξn+1)∣∣
否则表明余项在变大。
对于泰勒级数来说,如果在n趋向于∞时,余项一直在变大,那么表明泰勒级数会越来越远离原来的函数。
泰勒级数近似值选取
从上述不等式还可以看出,在求某个点x=x1的近似值时,x1与x0的距离越近,则余项越小,表明误差越小。
也可以参考某乎上的一篇不错的文章。该文章中提到的复数域在下一节有详细推导。
泰勒级数在复数域上的收敛性分析
如在实数域收敛分析的时候描述,函数能够展开成泰勒函数的条件是余项在∞处可以收敛。实数域毕竟也只是复数域的一部分,从复数域来分析能帮助我们了解泰勒级数的全貌。
复数平面的泰勒级数(Taylor Series in Complex Plane)
复数域的泰勒级数的结构跟实数的泰勒级数一样,只是把函数从实数往复数转变,即
f(z)=∞∑n=0f(n)(z0)n!(x−x0)n
其中函数f为从复数到复数的映射f:C→C,常数为复数z0∈C,变量为复数z∈C。该式子可以简化为:
f(z)=∞∑n=0cn(z−a)n,z,a,cn∈C
收敛圆(Disk of Convergence)
从定义上来说,在复数平面上,如果泰勒级数在某一点z′趋于∞,那么就可以说泰勒级数f(z′)是发散(diverge)的,否则为收敛(converge)。
如果泰勒级数在某有限点处发散的话,那么该泰勒级数的收敛域成一个圆盘(disk)状,称为收敛圆(Disk of Convergence)。该收敛圆的边界与圆心a的距离称为收敛半径(Radius of Convergence)r。这是泰勒级数的一个特性,下面我们将证明泰勒级数具有这种特性。
证明:
假设泰勒级数在有限点z处收敛,即有
∞∑n=0cn(z−a)n<∞,for |z|<∞
泰勒级数为无限项求和,因此我们能通过根值判别法(Root test)来分析泰勒级数的收敛性。把cn(z−a)n看作一个整体,即
An=cn(z−a)n
那么泰勒级数变成∞∑n=0An,根据Root test,有
C=limsupn→∞n√|An|=limsupn→∞n√|cn(z−a)n|=limsupn→∞n√|cn||z−a|
limsup表示的是上极限,limsupn→∞表示的是当n在无穷远处的上极限。Root test表明了当C<1时,泰勒级数收敛;当C>1时,泰勒级数发散;当C=1时,泰勒级数可能收敛或者发散。
我们上面假设泰勒级数在点z处收敛,即
C=limsupn→∞n√|cn||z−a|<1
|z−a|<1limsupn→∞n√cn
上面的式子意味着,要使得泰勒级数收敛,z与点a的距离必须小于
r=1limsupn→∞n√cn
对于泰勒级数来说,a为选定的无限可导的一点,可以看作圆心,那么收敛域就是一个圆盘,圆盘的半径为r。当r=1/0时,意味着半径无穷大,即泰勒级数在整个复数平面上都收敛。
收敛半径(Radius of Convergence)求解
在前面证明的时候我们算出了泰勒级数的收敛半径为
r=1limsupn→∞n√cn
这看起来不太好计算,下面有另外一种计算方式:
根据比式判别法(Ratio test),只有当下面的式子成立时,泰勒级数收敛
limn→∞|An+1||An|=limn→∞|cn+1(z−a)n+1||cn(z−a)n|=limn→∞|cn+1(z−a)|cn<1
因此有
r=limn→∞∣∣∣cncn+1∣∣∣=limn→∞∣∣∣f(n)(a)(n+1)f(n+1)(a)∣∣∣
泰勒级数与原函数的关系
从复数平面上看,泰勒级数是从选定的某点a起,通过n→∞不断拟合原函数f的一种方式,这种拟合的展开是圆心a对称的。因此,如果原函数f有奇点(singularity:如10),并且距离a最近的奇点为b,那么泰勒级数为了拟合原函数,会在b点处趋于∞,即在b处发散,又由于泰勒级数自身的收敛圆特性,使得泰勒级数无法在收敛圆以外拟合原函数,收敛半径为|b−a|。
这也意味着,如果泰勒级数的收敛半径无穷大,那么泰勒级数就能在复数平面上完全拟合原函数,因此泰勒级数等于原函数。
例:
f(x)=1x,选取a=4为无限求导点。当泰勒级数取前50阶时,可以看到:
在实数域,泰勒级数会在(0,8)收敛

在复数平面,泰勒级数会以a=4+0i为圆心,收敛半径为r=4

Mathematica Script
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | (* Real Domain *)
a = 4;
g[x_] := 1/x;
h[x_, n_] := Normal[Series[g[x], {x, a, n}]];
Manipulate[
Plot[{g[x], Evaluate[h[x, n]]}, {x, -20, 20}, PlotRange -> 4,
PlotLegends -> "Expressions" ], {n, 1, 60, 1}]
(* Complex Plane *)
ComplexFnPlot[f_, range_, options___] :=
Block[{rangerealvar, rangeimagvar, g},
g[r_, i_] := (f /. range[[1]] :> r + I i);
Plot3D[
Abs[g[rangerealvar, rangeimagvar]], {rangerealvar, Re[range[[2]]],
Re[range[[3]]]}, {rangeimagvar, Im[range[[2]]], Im[range[[3]]]},
options,
ColorFunction -> (Hue[Mod[Arg[g[ #1, #2]]/(2*Pi) + 1, 1]] &),
ColorFunctionScaling -> False]];
ComplexFnPlot[h[z, 50], {z, -10 - 10 I, 10 + 10 I},
PlotRange -> {-4, 500}]
|
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架