泰勒公式
小象实战讲义 · 人工智能数学基础
在人工智能的数学工具箱中,我们常常需要用一个简单的函数来近似一个复杂的函数,尤其是在局部区域内。本节将学习的泰勒公式,正是实现这一目标的强大工具。它将函数在某一点的信息(函数值及各阶导数值)转化为一个多项式,从而在局部用这个多项式来逼近原函数。学完本节,你将能够理解泰勒公式的构造原理,掌握常见函数的麦克劳林展开,并理解其在近似计算和理论分析中的核心作用。
💡 核心导读
本节我们将沿着以下路径深入泰勒公式:
- 定义与形式:理解泰勒公式的核心思想——用多项式逼近函数,并掌握其标准形式(带佩亚诺余项)。
- 唯一性定理:掌握泰勒展开的唯一性,这是利用已知展开式推导新展开式的理论基础。
- 常见函数的麦克劳林展开:推导并记忆几个最关键的展开式,如 ex, sinx, cosx, ln(1+x) 等。
- 函数奇偶性与展开式的关系:观察并总结奇函数和偶函数的麦克劳林展开式所具有的独特对称性。
- 间接求展开式的方法:学习通过求导、积分或变量替换等技巧,从已知展开式推导新函数(如 arctanx, arcsinx)展开式的方法。
泰勒公式的定义与证明
泰勒公式的核心思想是:如果一个函数 f(x) 在点 x0 处足够光滑(即具有足够高阶的导数),那么我们就可以在 x0 附近用一个多项式来近似它,并且这个多项式完全由 f(x) 在 x0 处的函数值和各阶导数值决定。
定理(带佩亚诺余项的泰勒公式):设函数 f(x) 在点 x0 处具有 n 阶导数(n≥1),则存在 x0 的一个邻域,对于该邻域内的任意 x,有 f(x)=Pn(x)+Rn(x) 其中 Pn(x) 称为 f(x) 在 x0 处的 n 次泰勒多项式,其表达式为: Pn(x)=f(x0)+f′(x0)(x−x0)+2!f′′(x0)(x−x0)2+⋯+n!f(n)(x0)(x−x0)n 而 Rn(x) 称为 佩亚诺 (Peano) 型余项,它满足: Rn(x)=o((x−x0)n)(x→x0) 即余项是比 (x−x0)n 更高阶的无穷小量。
当 x0=0 时,上述公式称为 麦克劳林 (Maclaurin) 公式: f(x)=f(0)+f′(0)x+2!f′′(0)x2+⋯+n!f(n)(0)xn+o(xn)(x→0)
证明思路:要证明 f(x)−Pn(x)=o((x−x0)n),等价于证明极限 x→x0lim(x−x0)nf(x)−Pn(x)=0 这是一个 00 型未定式。由于 f(x) 在 x0 处具有 n 阶导数,我们可以连续使用 n−1 次洛必达法则。经过计算,极限最终化为 n!1x→x0lim[f(n−1)(x)−f(n−1)(x0)−f(n)(x0)(x−x0)]/(x−x0) 根据 n 阶导数的定义,上式极限为 0,从而完成了证明。
泰勒展开的唯一性与间接求法
泰勒公式有一个非常重要的性质——唯一性,它为我们提供了一种间接求泰勒展开式的强大方法。
定理(泰勒展开的唯一性):如果函数 f(x) 在 x0 处具有 n 阶导数,并且可以表示为以下形式: f(x)=a0+a1(x−x0)+a2(x−x0)2+⋯+an(x−x0)n+o((x−x0)n)(x→x0) 那么,这些系数 ak 必定是泰勒公式所确定的系数,即 ak=k!f(k)(x0),k=0,1,2,…,n
这意味着,只要你能通过任何方法(代数变形、已知展开式组合等)将 f(x) 写成关于 (x−x0) 的多项式加上一个 o((x−x0)n) 项的形式,那么这个多项式就一定是它的泰勒多项式。这避免了每次都去计算复杂的高阶导数。
常见函数的麦克劳林展开
掌握几个基本初等函数的麦克劳林展开式至关重要。以下是几个最常用的展开式(均带佩亚诺余项)。
指数函数 ex 由于 (ex)(k)=ex,且 e0=1,所以 f(k)(0)=1。代入麦克劳林公式: ex=1+x+2!x2+3!x3+⋯+n!xn+o(xn)(x→0)
正弦函数 sinx 正弦函数的 n 阶导数为 sin(n)x=sin(x+2nπ)。在 x=0 处,其值为 sin(2nπ)。当 n 为偶数时,此项为 0;当 n 为奇数 2k+1 时,其值为 (−1)k。因此展开式中只含有奇次幂项: sinx=x−3!x3+5!x5−7!x7+⋯+(2k+1)!(−1)kx2k+1+o(x2k+2)(x→0) 注意:余项的阶数可以比最后一项的阶数高一阶。
余弦函数 cosx 类似地,cos(n)x=cos(x+2nπ)。在 x=0 处,当 n 为奇数时,此项为 0;当 n 为偶数 2k 时,其值为 (−1)k。因此展开式中只含有偶次幂项: cosx=1−2!x2+4!x4−6!x6+⋯+(2k)!(−1)kx2k+o(x2k+1)(x→0)
自然对数 ln(1+x) 其 k 阶导数为 f(k)(x)=(−1)k−1(1+x)k(k−1)!。在 x=0 处,f(k)(0)=(−1)k−1(k−1)!。代入公式: ln(1+x)=x−2x2+3x3−4x4+⋯+(−1)n−1nxn+o(xn)(x→0)
幂函数 (1+x)α (α∈R) 其 k 阶导数为 f(k)(x)=α(α−1)⋯(α−k+1)(1+x)α−k。在 x=0 处,f(k)(0)=α(α−1)⋯(α−k+1)。这是一个非常重要的展开式,称为 二项式展开的推广: (1+x)α=1+αx+2!α(α−1)x2+⋯+n!α(α−1)⋯(α−n+1)xn+o(xn)(x→0)
观察与记忆技巧:注意 sinx 是奇函数,其展开式只包含奇次幂项;cosx 是偶函数,其展开式只包含偶次幂项。这是一个普遍规律:奇(偶)函数的麦克劳林展开式必然只包含奇(偶)次幂项。这可以帮助我们检查和记忆展开式。
间接法求展开式示例
利用唯一性定理和已知展开式,我们可以通过求导、积分、变量替换等操作,轻松求得更多函数的展开式,而无需重复计算高阶导数。
示例:求 arctanx 的麦克劳林展开式
- 我们知道 dxdarctanx=1+x21。
- 利用几何级数展开(即 (1+x)α 在 α=−1 时的特例,并将 x 替换为 x2): 1+x21=1−x2+x4−x6+⋯+(−1)nx2n+o(x2n+1)(x→0)
- 根据唯一性定理,上式就是 1+x21 的麦克劳林展开式。
- 对上式两边从 0 到 x 积分(常数项由 arctan0=0 确定): arctanx=∫0x1+t21dt=∫0x[1−t2+t4−⋯+(−1)nt2n+o(t2n+1)]dt=x−3x3+5x5−7x7+⋯+2n+1(−1)nx2n+1+o(x2n+2)(x→0) 同样,我们得到了一个只含奇次幂项的展开式,符合 arctanx 是奇函数的性质。
类似地,可以通过对 1−x21 的展开式积分得到 arcsinx 的展开式。这些技巧在学习了不定积分后会更加得心应手。
📝 动手练一练
利用唯一性求展开式:已知 ex 和 sinx 的麦克劳林展开式,求函数 f(x)=exsinx 到 x3 项的麦克劳林展开式(即写出 x3 及以下的所有项,并加上 o(x3))。
参考答案: 将 ex 和 sinx 展开到 x3 项: ex=1+x+2x2+6x3+o(x3) sinx=x−6x3+o(x3) 两者相乘,只保留 x3 及以下的项: exsinx=(1+x+2x2+6x3)(x−6x3)+o(x3)=(x−6x3)+(x2−6x4)+(2x3−12x5)+(6x4−36x6)+o(x3)=x+x2+(−61+21)x3+o(x3)=x+x2+31x3+o(x3)(x→0)
验证奇偶性规律:写出 coshx=2ex+e−x 的麦克劳林展开式的前四项(到 x4 项)。观察其是否符合该函数的奇偶性规律。
参考答案: 利用 ex 和 e−x 的展开式: ex=1+x+2!x2+3!x3+4!x4+o(x4) e−x=1−x+2!x2−3!x3+4!x4+o(x4) 两者相加除以2: coshx=21(ex+e−x)=1+2!x2+4!x4+o(x4)=1+2x2+24x4+o(x4)(x→0) 展开式中只含有偶次幂项(常数项视为 x0),这与 coshx 是偶函数的性质一致。
# 使用 sympy 验证泰勒展开式
import sympy as sp
# 定义符号变量
x = sp.symbols('x')
n = 4 # 展开到4阶
# 1. 验证 e^x 的展开式
f_exp = sp.exp(x)
taylor_exp = sp.series(f_exp, x, 0, n+1).removeO() # 展开到x^n,并移除余项符号
print("e^x 的麦克劳林展开(到 x^4):")
print(sp.simplify(taylor_exp))
print("理论公式:1 + x + x^2/2 + x^3/6 + x^4/24")
print("-" * 40)
# 2. 验证 sin x 的展开式
f_sin = sp.sin(x)
taylor_sin = sp.series(f_sin, x, 0, n+1).removeO()
print("sin x 的麦克劳林展开(到 x^4):")
print(sp.simplify(taylor_sin))
print("理论公式:x - x^3/6")
print("-" * 40)
# 3. 验证动手练习1的结果:e^x * sin x
f_product = sp.exp(x) * sp.sin(x)
taylor_product = sp.series(f_product, x, 0, 4).removeO() # 展开到x^3
print("e^x * sin x 的麦克劳林展开(到 x^3):")
print(sp.simplify(taylor_product))
print("理论计算得到:x + x^2 + x^3/3")
print("-" * 40)
# 4. 验证 cosh x 的展开式
f_cosh = sp.cosh(x)
taylor_cosh = sp.series(f_cosh, x, 0, n+1).removeO()
print("cosh x 的麦克劳林展开(到 x^4):")
print(sp.simplify(taylor_cosh))
print("理论公式:1 + x^2/2 + x^4/24")
本章小结
本节我们深入探讨了分析学中极其重要的工具——泰勒公式。
要点回顾:
- 核心思想:用多项式在局部逼近复杂函数,多项式系数由函数在该点的各阶导数值唯一确定。
- 两种形式:带佩亚诺余项的泰勒公式(定性描述逼近误差阶数)是基础;后续还会学习带拉格朗日余项的泰勒公式(定量描述误差)。
- 唯一性定理:是间接法求泰勒展开的“尚方宝剑”,允许我们通过代数运算、求导积分等手段,从已知展开式推导出新展开式。
- 常见展开式:必须熟练掌握 ex, sinx, cosx, ln(1+x), (1+x)α 的麦克劳林展开式及其收敛域(本节均为 x→0 的局部性质)。
- 奇偶对称性:奇(偶)函数的麦克劳林展开式必然只含奇(偶)次幂项,这是一个有效的记忆和检验工具。
行动清单: 学完本节,你可以立即:
- 推导练习:亲自动手,不查资料,从定义出发推导出 ex 和 cosx 的麦克劳林展开式。
- 组合应用:尝试利用 ex 和 ln(1+x) 的展开式,推导 eln(1+x)=1+x 的展开式,并验证其正确性,体会唯一性定理的妙用。
- 编程验证:运行并理解本节提供的 Python 代码,尝试修改代码,验证 ln(1+x) 或 (1+x)0.5(即 1+x)的展开式。
泰勒公式是连接局部性质与全局行为的桥梁,在机器学习的最优化算法(如牛顿法)、物理模型的线性化、信号处理等领域有着根本性的应用。牢牢掌握它,就握紧了一把打开高阶数学与应用大门的钥匙。
— 小象教研组