📑 查看全课大纲(第 17 / 93 节)
- 1.概论和集合的定义
- 2.逼疯康托的实数集理论
- 3.常用不等式与映射
- 4.函数及特殊函数
- 5.序列极限的定义
- 6.序列极限的性质与夹逼定理
- 7.重要极限
- 8.无穷小量,无穷大量和一组重要的阶的比较关系
- 9.聚点原理
- 10.函数极限及其性质
- 11.重要极限与等价无穷小
- 12.连续函数
- 13.导数的概念(那些年,扛起牛顿的胡克)
- 14.定义法求导
- 15.函数四则运算的导数与反函数求导法则
- 16.复合函数,隐函数,参数式求导
- 17.不定式求导之“洛必达与伯努利的师生情”
- 18.一阶微分
- 19.高阶导数
- 20.高阶微分
- 21.罗尔中值定理与拉格朗日中值定理
- 22.柯西空降科学院遭排挤
- 23.泰勒公式与泰勒的克妻属性
- 24.利用泰勒展开唯一性定理计算泰勒展开
- 25.泰勒公式的余项估计
- 26.极值问题与导数
- 27.函数凹凸性
- 28.无卵用的渐近线与函数作图
- 29.不定积分的定义
- 30.第一换元法
- 31.第二换元法
- 32.分部积分法
- 33.有理式积分
- 34.三角替换
- 35.定积分的概念
- 36.定积分的性质与积分中值定理
- 37.变上限定积分
- 38.微积分基本定理之“高斯教你如何优雅地装逼”
- 39.定积分的换元法
- 40.奇偶函数与周期函数的定积分
- 41.曲线求长与不可求长曲线(海岸线居然算不出长度?)
- 42.旋转体体积
- 43.旋转体侧面积
- 44.极坐标下图形的面积(数学系常用表白曲线)
- 45.欧式空间
- 46.点列极限,开集与闭集
- 47.多元函数的定义
- 48.多元函数的极限
- 49.多元连续函数
- 50.一阶偏导数
- 51.高阶偏导数
- 52.全微分
- 53.方向导数与梯度
- 54.链式法则
- 55.一阶全微分形式的不变性与高阶微分
- 56.多元函数的泰勒公式
- 57.隐函数存在定理与逆映射存在定理
- 58.多元函数的极值
- 59.矩阵基础知识
- 60.行列式的定义与特殊矩阵的行列式
- 61.行列式的性质
- 62.行列式按k行展开
- 63.线性方程组初步与高斯消元法
- 64.齐次线性方程组与Cramer法则
- 65.线性空间
- 66.线性相关与线性无关
- 67.向量组的秩
- 68.矩阵的秩与线性方程组有解的充要条件
- 69.齐次线性方程组的解集结构
- 70.非齐次线性方程组解集结构
- 71.基与维数
- 72.矩阵的乘法
- 73.特殊矩阵
- 74.矩阵乘积的秩与行列式
- 75.矩阵的逆
- 76.正交矩阵
- 77.矩阵对角化与特征值特征向量
- 78.实对称矩阵对角化
- 79.二次型与正定矩阵
- 80.LU分解
- 81.Cholesky分解
- 82.SVD分解
- 83.线搜索
- 84.步长
- 85.最速下降法和牛顿法
- 86.共轭梯度法
- 87.拟牛顿法
- 88.无约束优化
- 89.若干知识点补充(一)
- 90.若干知识点补充(二)
- 91.凸优化问题
- 92.对偶问题(一)
- 93.对偶问题(二)
不定式求导之“洛必达与伯努利的师生情”
约 28 分钟
不定式求导之“洛必达与伯努利的师生情”
小象实战讲义 · 人工智能数学基础
在掌握了导数的定义和基本求导法则后,我们面临一个现实问题:如何计算那些形式“怪异”的极限?例如,当分子分母都趋于0或无穷时,极限的商究竟是多少?这些“不确定”的形式被称为不定式。本节将系统介绍不定式的概念,并引入微积分中一个强大而著名的工具——洛必达法则,它将求极限问题巧妙地转化为求导问题。学完本节,你将能系统性地处理 0/0、∞/∞ 等各类不定式极限,为后续学习泰勒展开、最优化等高级主题扫清计算障碍。
💡 核心导读
本节将沿以下路径展开:
- 认识不定式:明确哪些极限形式无法直接通过极限四则运算得出,如
∞-∞、0×∞、0/0、∞/∞、1^∞、0^0、∞^0。 - 洛必达法则:掌握解决
0/0型和∞/∞型不定式的核心定理,理解其使用前提和几何直观。 - 法则的应用与陷阱:通过典型例题学习如何应用洛必达法则,并识别其适用条件,避免误用。
- 背后的故事:了解洛必达法则背后一段关于洛必达与伯努利家族的趣闻,增添学习趣味。
- 知识体系回顾:串联本章关于导数、求导法则与洛必达法则的核心要点,形成完整知识网络。
一、 何为不定式?
设函数 与 在 时的极限分别为 和 。
- 若 和 都是有限数,则根据极限的四则运算法则,, , ()的极限可以确定。
- 但当 和 中至少有一个是 或无穷大时,某些运算的极限结果将变得“不确定”,我们称之为不定式。
常见的七种不定式类型如下:
- 型:例如, 时, 与 均趋于 ,但 的极限是 ;而 与 均趋于 ,但 的极限却是 。结果依赖于函数趋于无穷的“速度”(阶)。
- 型: 与无穷大的乘积,结果取决于谁是“更高阶”的无穷小或无穷大。
- 型:两个无穷小量之比的极限,这是微分学思想的起源。
- 型:两个无穷大量之比的极限。
- 型:底数趋于1,指数趋于无穷。
- 型:底数趋于0,指数趋于0。
- 型:底数趋于无穷,指数趋于0。
后三种幂指函数不定式,通常可以通过取对数转化为 型,进而可能转化为 或 型。
核心问题:对于这些不定式,极限是否存在?如果存在,如何计算?
二、 洛必达法则:破解 0/0 与 ∞/∞ 的利器
历史上,微积分的先驱们为求解这些不定式极限付出了巨大努力。最终,一个以法国贵族数学家洛必达命名的法则提供了系统性的解决方案。不过,这个法则的真正发现者是其家庭教师——约翰·伯努利。两人之间“一个愿买,一个愿卖”的协议,以及伯努利家族内部的竞争轶事,构成了微积分史上一段有趣的插曲。但无论如何,洛必达法则本身是一个极其优美而强大的工具。
2.1 0/0 型的洛必达法则
定理(0/0型洛必达法则): 设函数 和 在点 的某个去心邻域内可导,且满足:
- , ;
- ;
- ( 为有限数或 )。
则有
要点说明:
- 的推广:定理中的 可以替换为 , , , 或 ,结论依然成立。
- 几何直观:在
0/0型极限点附近,原函数 和 都非常接近0,它们的变化率(导数)之比 决定了它们趋于0的“相对速度”,从而决定了比值 的极限。 - 使用步骤:验证是否为
0/0型 → 分别对分子分母求导 → 求导后比值的极限 → 若极限存在或为无穷,则此极限即为原极限。
例1:求极限 。
解:当 时,分子 ,分母 ,为 0/0 型不定式。应用洛必达法则:
例2:求极限 。
解:当 时,,,为 ∞×0 型。将其转化为 0/0 型:
此时分子分母均趋于0,为 0/0 型。应用洛必达法则:
2.2 ∞/∞ 型的洛必达法则
定理(∞/∞型洛必达法则): 设函数 和 在点 的某个去心邻域内可导,且满足:
- ;
- ;
- ( 为有限数或 )。
则有
其使用要点与 0/0 型完全相同。
例3:比较对数函数与幂函数的增长阶。求 ,其中 。
解:这是 ∞/∞ 型。应用洛必达法则: 结论:当 时,对数函数 的增长速度慢于任何正幂函数 。
例4:比较指数函数与幂函数的增长阶。求 ,其中 。
解:这是 ∞/∞ 型。连续应用洛必达法则。注意到每求一次导,分子 的指数减1,而分母 始终不变。经过有限次(例如 次,)求导后,分子将变为常数或趋于0,分母仍为 。因此: 结论:当 时,指数函数 的增长速度快于任何幂函数 。
import numpy as np
import matplotlib.pyplot as plt
# 验证例3和例4的结论:比较函数增长速度
x = np.linspace(1, 100, 1000)
ln_x = np.log(x)
x_pow_01 = x**0.1
x_pow_2 = x**2
exp_x = np.exp(x/10) # 对e^x进行缩放以便在同一量级下观察
plt.figure(figsize=(12, 5))
plt.subplot(1, 2, 1)
plt.plot(x, ln_x, label='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>ln</mi><mo></mo><mi>x</mi></mrow><annotation encoding="application/x-tex">\ln x</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.6944em;"></span><span class="mop">ln</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord mathnormal">x</span></span></span></span>', linewidth=2)
plt.plot(x, x_pow_01, label='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>x</mi><mn>0.1</mn></msup></mrow><annotation encoding="application/x-tex">x^{0.1}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8141em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">0.1</span></span></span></span></span></span></span></span></span></span></span></span>', linewidth=2)
plt.xlabel('x')
plt.ylabel('y')
plt.title('对数函数 vs. 幂函数 (<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>x</mi><mn>0.1</mn></msup></mrow><annotation encoding="application/x-tex">x^{0.1}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8141em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight">0.1</span></span></span></span></span></span></span></span></span></span></span></span>)')
plt.legend()
plt.grid(True, alpha=0.3)
plt.subplot(1, 2, 2)
plt.plot(x, x_pow_2, label='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">x^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8141em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span>', linewidth=2)
plt.plot(x, exp_x, label='<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>e</mi><mrow><mi>x</mi><mi mathvariant="normal">/</mi><mn>10</mn></mrow></msup></mrow><annotation encoding="application/x-tex">e^{x/10}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.888em;"></span><span class="mord"><span class="mord mathnormal">e</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.888em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">x</span><span class="mord mtight">/10</span></span></span></span></span></span></span></span></span></span></span></span> (缩放后)', linewidth=2) # 注意是缩放后的e^x
plt.xlabel('x')
plt.ylabel('y')
plt.title('幂函数 (<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>x</mi><mn>2</mn></msup></mrow><annotation encoding="application/x-tex">x^2</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.8141em;"></span><span class="mord"><span class="mord mathnormal">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8141em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span>) vs. 指数函数 (<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><msup><mi>e</mi><mrow><mi>x</mi><mi mathvariant="normal">/</mi><mn>10</mn></mrow></msup></mrow><annotation encoding="application/x-tex">e^{x/10}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.888em;"></span><span class="mord"><span class="mord mathnormal">e</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.888em;"><span style="top:-3.063em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">x</span><span class="mord mtight">/10</span></span></span></span></span></span></span></span></span></span></span></span>, 缩放)')
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()
# 数值计算极限趋势
print("当x较大时,ln(x) / x^0.1 的值:")
for val in [10, 50, 100, 500]:
print(f"x={val}: {np.log(val) / (val**0.1):.6f}")
print("\n当x较大时,x^2 / e^(x/10) 的值:")
for val in [10, 30, 50, 80]:
print(f"x={val}: {(val**2) / np.exp(val/10):.6f}")2.3 使用洛必达法则的注意事项与陷阱
洛必达法则并非万能,使用时必须严格检查前提条件。
- 验证不定式类型:必须是
0/0或∞/∞型才能直接应用。其他类型需先变形。 - 验证导数之比的极限存在:法则要求 存在(或为无穷)。如果 不存在且不为无穷,则不能推出原极限不存在,只能说明洛必达法则在此失效,需改用其他方法。
- 反例: 是
∞/∞型。若误用洛必达: 极限不存在。但原极限可通过化简求得:。
- 反例: 是
- 可多次使用,但需步步验证:每次使用前,都要确认新的分式是否仍满足
0/0或∞/∞型,并且求导后的极限是否存在。- 错误示范:。第一次洛必达后得到 ,此式极限不存在。若强行第二次洛必达,会得到错误结果 。而实际上,原极限为 (分子分母同除以 可得)。
三、 本章核心要点回顾与串联
本节是《导数》一章的收官之作,我们来串联所有核心知识点:
导数的本源:导数定义为函数在某点的瞬时变化率,是如下极限: 其几何意义是曲线切线的斜率,物理意义是变化率(如速度)。
求导的武器库:
- 基本公式:初等函数(幂、指、对、三角、反三角)的导数公式必须熟记。
- 四则运算法则:, , 。
- 链式法则:复合函数求导的基石,。
- 衍生技巧:基于等式两边同时求导,可求解隐函数、反函数、参数方程确定的函数的导数。
极限计算的终极武器之一:洛必达法则。它专门用于求解
0/0和∞/∞型不定式极限,其核心思想是: 它将复杂的极限计算转化为相对容易的求导计算。
📝 动手练一练
基础题:计算极限 。 参考答案:此为
0/0型。应用洛必达法则两次。综合题:计算极限 。(提示:幂指函数 ,先化为
0×∞型,再转化为∞/∞或0/0型) 参考答案:设 ,则 。 应用洛必达法则: 因此,,故 。
本章小结
本节我们深入探讨了微积分中处理极限问题的关键技巧。从识别七类不定式出发,重点掌握了破解 0/0 与 ∞/∞ 型不定式的洛必达法则,并通过例题和注意事项明确了其正确用法。最后,我们将导数定义、求导法则与洛必达法则串联起来,构成了完整的单变量微分学基础框架。
学完本节,你的行动清单是:
- 记忆与辨析:熟记七种不定式形式,并能将非
0/0、∞/∞型(如0×∞,1^∞)通过代数变形转化为这两种基本型。 - 规范应用:面对极限题,养成先判断类型,再验证洛必达法则使用条件,最后规范书写的解题习惯,特别注意避免对“振荡不存在”的极限误用法则。
- 体系构建:合上书本,尝试画出从导数定义到洛必达法则的完整知识脉络图,确保每个知识点(定义、几何意义、求导公式、法则)都能在图中找到位置和联系。
— 小象教研组
- 第4章讲义:导数(PDF · 3.6MB)下载
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问