【声明】本博客所有内容均为个人业余时间创作,所述技术案例均来自公开开源项目(如Github,Apache基金会),不涉及任何企业机密或未公开技术,如有侵权请联系删除
标题
18、【数学】【基础】泰勒级数怎么推出来的:逐阶匹配与余项
背景
上篇 blog 【数学】【基础】泰勒级数是什么:用多项式逼近函数 给出了泰勒级数与麦克劳林级数的样子:
f
(
x
)
=
∑
n
=
0
∞
f
(
n
)
(
0
)
n
!
x
n
f(x)=\\sum_{n=0}^{\\infty}\\frac{f^{(n)}(0)}{n!}\\,x^{n}
f(x)=n=0∑∞n!f(n)(0)xn 并讲清了三个名字(泰勒多项式是部分和、泰勒级数是极限、麦克劳林级数是原点展开)、几个常见展开,以及"展开只在收敛半径内有效"。但它留了一个洞:系数
f
(
n
)
(
0
)
n
!
\\dfrac{f^{(n)}(0)}{n!}
n!f(n)(0) 是从哪来的? 上篇直接把结论用了,本篇把它推出来——而且顺手说清"为什么可以真的等于原函数"。
目标:设出系数,再把它"解"出来
先假设函数
f
f
f 在原点附近可以写成一串幂之和(这在第 17 篇的收敛范围内成立):
f
(
x
)
=
a
0
+
a
1
x
+
a
2
x
2
+
a
3
x
3
+
⋯
f(x)=a_0+a_1x+a_2x^{2}+a_3x^{3}+\\cdots
f(x)=a0+a1x+a2x2+a3x3+⋯
现在的任务是:把这串系数
a
0
,
a
1
,
a
2
,
…
a_0,a_1,a_2,\\dots
a0,a1,a2,… 用函数本身的信息确定下来。思路只有一招——逐阶求导。
逐阶求导:每求一次,就"暴露"一个系数

图 1 是这个消元过程的画面。把
x
=
0
x=0
x=0 代进去,后面带
x
x
x 的项全没了:
f
(
0
)
=
a
0
f(0)=a_0
f(0)=a0
接着对两边求导。
a
0
a_0
a0 是常数、求导变
0
0
0;
a
1
x
a_1x
a1x 求导得
a
1
a_1
a1;更高次项仍带
x
x
x:
f
′
(
x
)
=
a
1
+
2
a
2
x
+
3
a
3
x
2
+
⋯
⟹
f
′
(
0
)
=
a
1
f'(x)=a_1+2a_2x+3a_3x^{2}+\\cdots\\quad\\Longrightarrow\\quad f'(0)=a_1
f′(x)=a1+2a2x+3a3x2+⋯⟹f′(0)=a1
再求一次导,
a
1
a_1
a1 也没了,轮到
2
a
2
2a_2
2a2 露头:
f
′
′
(
x
)
=
2
a
2
+
6
a
3
x
+
⋯
⟹
f
′
′
(
0
)
=
2
a
2
f''(x)=2a_2+6a_3x+\\cdots\\quad\\Longrightarrow\\quad f''(0)=2a_2
f′′(x)=2a2+6a3x+⋯⟹f′′(0)=2a2
如此继续,每求一次导、每代一次
x
=
0
x=0
x=0,就"砍掉"前面所有项、只留下下一个系数(乘上一个系数)。规律很整齐:
f
(
n
)
(
0
)
=
n
!
a
n
f^{(n)}(0)=n!\\,a_n
f(n)(0)=n!an
把它解出来,就得到泰勒系数的公式:
a
n
=
f
(
n
)
(
0
)
n
!
a_n=\\frac{f^{(n)}(0)}{n!}
an=n!f(n)(0)

图 2 把这条对应关系列全:
n
n
n 阶导数在
0
0
0 处的值,除以
n
!
n!
n!,就是第
n
n
n 项系数。 系数被各阶导数唯一确定——这就是上篇那个公式的来历。
顺带说一句:正因为系数被钉死,这样的幂级数展开是唯一的——一个函数在一点处只可能有一组这样的系数。
为什么偏偏除以
n
!
n!
n!
关键在求导会"降幂并带出系数":
x
n
x^{n}
xn 连求
n
n
n 次导,会把指数一路降到
0
0
0,同时把
n
⋅
(
n
−
1
)
⋯
1
=
n
!
n\\cdot(n-1)\\cdots1=n!
n⋅(n−1)⋯1=n! 这个因子带到前面:
(
x
n
)
(
n
)
=
n
!
\\bigl(x^{n}\\bigr)^{(n)}=n!
(xn)(n)=n!
所以第
n
n
n 项
a
n
x
n
a_nx^{n}
anxn 在求导
n
n
n 次后变成
n
!
a
n
n!\\,a_n
n!an,而它必须等于
f
(
n
)
(
0
)
f^{(n)}(0)
f(n)(0)。除以
n
!
n!
n!,正是为了抵消这个降幂带出来的因子。
换成一般点:把
x
x
x 换成
(
x
−
a
)
(x-a)
(x−a)
在点
a
a
a 处展开时,把上面的
x
x
x 都替换成
(
x
−
a
)
(x-a)
(x−a),推导完全一样:
f
(
x
)
=
a
0
+
a
1
(
x
−
a
)
+
a
2
(
x
−
a
)
2
+
⋯
⟹
a
n
=
f
(
n
)
(
a
)
n
!
f(x)=a_0+a_1(x-a)+a_2(x-a)^{2}+\\cdots\\quad\\Longrightarrow\\quad a_n=\\frac{f^{(n)}(a)}{n!}
f(x)=a0+a1(x−a)+a2(x−a)2+⋯⟹an=n!f(n)(a)
于是得到一般形式的泰勒级数:
f
(
x
)
=
∑
n
=
0
∞
f
(
n
)
(
a
)
n
!
(
x
−
a
)
n
f(x)=\\sum_{n=0}^{\\infty}\\frac{f^{(n)}(a)}{n!}\\,(x-a)^{n}
f(x)=n=0∑∞n!f(n)(a)(x−a)n
a
=
0
a=0
a=0 时退化为麦克劳林级数。“展开点"就是"导数的取值点”——这也解释了为什么离展开点越近、逼近越好。
更严谨的一步:余项,才决定"是否等于原函数"
到这里,只证明了"如果函数能写成幂级数,那系数必须长这样"。但反过来——用这些系数拼出来的级数,就一定等于原函数吗? 不一定。真正决定这件事的,是余项(remainder)。
把函数写成"前
N
N
N 项多项式 + 剩下的尾巴":
f
(
x
)
=
S
N
(
x
)
⏟
泰勒多项式
+
R
N
(
x
)
⏟
余项
f(x)=\\underbrace{S_N(x)}_{\\text{泰勒多项式}}+\\underbrace{R_N(x)}_{\\text{余项}}
f(x)=泰勒多项式
SN(x)+余项
RN(x)
余项有一个常用的估计(拉格朗日余项,Lagrange remainder):
R
N
(
x
)
=
f
(
N
+
1
)
(
ξ
)
(
N
+
1
)
!
(
x
−
a
)
N
+
1
,
ξ
介于
a
与
x
之间
R_N(x)=\\frac{f^{(N+1)}(\\xi)}{(N+1)!}\\,(x-a)^{N+1},\\qquad \\xi\\ \\text{介于}\\ a\\ \\text{与}\\ x\\ \\text{之间}
RN(x)=(N+1)!f(N+1)(ξ)(x−a)N+1,ξ 介于 a 与 x 之间
它说的是:误差大小取决于"下一阶导数"和"
(
x
−
a
)
N
+
1
(x-a)^{N+1}
(x−a)N+1"。只有当
N
→
∞
N\\to\\infty
N→∞ 时余项趋于
0
0
0,泰勒级数才真正收敛到
f
(
x
)
f(x)
f(x)。

图 3 用
sin
x
\\sin x
sinx 演示:5 阶部分和与真值之间那条粉色带子就是余项。在原点附近它几乎为零,越往两边越宽——“逼近得多好”,就是"余项有多小"。
手推
e
x
e^{x}
ex:最省事的例子
e
x
e^{x}
ex 展开起来最舒服,因为它的每一阶导数都还是自己:
f
(
x
)
=
f
′
(
x
)
=
f
′
′
(
x
)
=
⋯
=
e
x
f(x)=f'(x)=f''(x)=\\cdots=e^{x}
f(x)=f′(x)=f′′(x)=⋯=ex
在
x
=
0
x=0
x=0 处,每一阶导数都等于
1
1
1,所以
f
(
n
)
(
0
)
=
1
f^{(n)}(0)=1
f(n)(0)=1:
a
n
=
f
(
n
)
(
0
)
n
!
=
1
n
!
a_n=\\frac{f^{(n)}(0)}{n!}=\\frac{1}{n!}
an=n!f(n)(0)=n!1

图 4 把系数一个个列出来:
1
,
1
,
1
2
,
1
6
,
1
24
,
…
1,1,\\frac12,\\frac16,\\frac1{24},\\dots
1,1,21,61,241,…,于是
e
x
=
1
+
x
+
x
2
2
!
+
x
3
3
!
+
⋯
e^{x}=1+x+\\frac{x^{2}}{2!}+\\frac{x^{3}}{3!}+\\cdots
ex=1+x+2!x2+3!x3+⋯
把
x
=
1
x=1
x=1 代进去,就回到第 11 篇那条
e
=
∑
1
/
k
!
e=\\sum 1/k!
e=∑1/k!——它不是另说一套,就是
e
x
e^{x}
ex 的麦克劳林展开在
x
=
1
x=1
x=1 处的取值。
再手推
sin
x
\\sin x
sinx:导数循环出符号
sin
x
\\sin x
sinx 的导数是"循环"的:
sin
→
cos
→
−
sin
→
−
cos
→
sin
→
⋯
\\sin\\to\\cos\\to-\\sin\\to-\\cos\\to\\sin\\to\\cdots
sin→cos→−sin→−cos→sin→⋯。在
x
=
0
x=0
x=0 处依次取值为
sin
0
=
0
,
cos
0
=
1
,
−
sin
0
=
0
,
−
cos
0
=
−
1
,
…
\\sin 0=0,\\quad \\cos 0=1,\\quad -\\sin 0=0,\\quad -\\cos 0=-1,\\quad \\dots
sin0=0,cos0=1,−sin0=0,−cos0=−1,…
于是系数里偶数阶全是
0
0
0、奇数阶在
0
0
0 与
±
1
/
n
!
\\pm1/ n!
±1/n! 之间交替:
sin
x
=
x
−
x
3
3
!
+
x
5
5
!
−
x
7
7
!
+
⋯
\\sin x=x-\\frac{x^{3}}{3!}+\\frac{x^{5}}{5!}-\\frac{x^{7}}{7!}+\\cdots
sinx=x−3!x3+5!x5−7!x7+⋯
也就能看出:系数里的正负号,来自"各阶导数在展开点的正负",不是人为规定的。
前提:余项要能趋于 0
最后把逻辑补齐。逐阶匹配只保证了系数"应该是"这个样子;要保证级数真的收敛到
f
f
f,需要
R
N
(
x
)
→
0
R_N(x)\\to0
RN(x)→0。对
e
x
,
sin
x
,
cos
x
e^{x},\\sin x,\\cos x
ex,sinx,cosx,可以证明在全体实数上
R
N
→
0
R_N\\to0
RN→0(它们的各阶导数一致有界,而
(
x
−
a
)
N
+
1
/
(
N
+
1
)
!
→
0
(x-a)^{N+1}/(N+1)!\\to0
(x−a)N+1/(N+1)!→0),所以这些展开处处成立;而对
1
1
−
x
\\frac{1}{1-x}
1−x1,一旦越过
x
=
1
x=1
x=1,余项就不再趋于
0
0
0——这就自然过渡到下一篇的主题:收敛半径。
小结
泰勒系数的推导只需一招:设
f
(
x
)
=
∑
a
n
x
n
f(x)=\\sum a_nx^{n}
f(x)=∑anxn,逐阶求导并取
x
=
0
x=0
x=0——每求一次导就"暴露"一个系数,得到
f
(
n
)
(
0
)
=
n
!
a
n
f^{(n)}(0)=n!\\,a_n
f(n)(0)=n!an,即
a
n
=
f
(
n
)
(
0
)
n
!
a_n=\\frac{f^{(n)}(0)}{n!}
an=n!f(n)(0)
一般点处同理得
a
n
=
f
(
n
)
(
a
)
/
n
!
a_n=f^{(n)}(a)/n!
an=f(n)(a)/n!。但"能写出系数"不等于"等于原函数":真正的判据是余项
R
N
(
x
)
→
0
R_N(x)\\to0
RN(x)→0(拉格朗日余项
=
f
(
N
+
1
)
(
ξ
)
(
N
+
1
)
!
(
x
−
a
)
N
+
1
=\\frac{f^{(N+1)}(\\xi)}{(N+1)!}(x-a)^{N+1}
=(N+1)!f(N+1)(ξ)(x−a)N+1)。
e
x
e^{x}
ex(系数
1
/
n
!
1/n!
1/n!)、
sin
x
\\sin x
sinx(奇数阶交替)都由此手推可得;而展开在多大范围成立,取决于余项何时不再趋于
0
0
0——正是收敛半径要回答的问题。
OK,本篇先到这里,如有疑问,欢迎评论区留言讨论,祝各位功力大涨,技术更上一层楼!!!
网硕互联帮助中心


![P8699 [蓝桥杯 2019 国 B] 排列数|普及+-网硕互联帮助中心](https://www.wsisp.com/helps/wp-content/uploads/2026/02/20260204231703-6983d36f1686d-220x150.png)



评论前必须登录!
注册