用Python来学微积分24-洛必达法则
洛必达法则:轻松搞定不定式极限的魔法棒
今天咱们来学习数学分析里超重要的一个法则——洛必达法则!这玩意儿就像是解决不定式极限问题的魔法棒,掌握了它,很多看似复杂的极限问题都能迎刃而解啦。
一、什么是不定式极限
在开始讲洛必达法则之前,首先搞清楚什么是不定式极限。简单来说呢,当我们在求极限的时候,会遇到像 00\frac{0}{0}00 型或者 ∞∞\frac{\infty}{\infty}∞∞ 型这样的形式,就叫做不定式极限。比如说,当 xxx 趋近于某个值的时候,分子和分母都趋近于 0 或者都趋近于无穷大,这种极限就不好直接算出来。那咋办呢?这时候洛必达法则就闪亮登场啦!
二、洛必达法则是啥
洛必达法则是这样的:如果函数 f(x)f(x)f(x) 和 g(x)g(x)g(x) 满足一定条件:
- limx→x0f(x)=0\lim \limits_{x \to x_0} f(x) = 0x→x0limf(x)=0,limx→x0g(x)=0\lim \limits_{x \to x_0} g(x) = 0x→x0limg(x)=0(这是 00\frac{0}{0}00 型的情况);或者 limx→x0f(x)=∞\lim \limits_{x \to x_0} f(x) = \inftyx→x0limf(x)=∞,limx→x0g(x)=∞\lim \limits_{x \to x_0} g(x) = \inftyx→x0limg(x)=∞(这是 ∞∞\frac{\infty}{\infty}∞∞ 型的情况)。
- 在点 x0x_0x0 的某个去心邻域内 f′(x)f'(x)f′(x) 和 g′(x)g'(x)g′(x) 都存在,且 g′(x)≠0g'(x) \neq 0g′(x)=0。
- limx→x0f′(x)g′(x)\lim \limits_{x \to x_0} \frac{f'(x)}{g'(x)}x→x0limg′(x)f′(x) 存在或为无穷大。
那么就有 limx→x0f(x)g(x)=limx→x0f′(x)g′(x)\lim \limits_{x \to x_0} \frac{f(x)}{g(x)} = \lim \limits_{x \to x_0} \frac{f'(x)}{g'(x)}x→x0limg(x)f(x)=x→x0limg′(x)f′(x)。
这里要注意哦,limx→x0f(x)g(x)\lim \limits_{x \to x_0} \frac{f(x)}{g(x)}x→x0limg(x)f(x) 必须是 00\frac{0}{0}00 或 ∞∞\frac{\infty}{\infty}∞∞ 型不定式,而且要是算出来 limx→x0f′(x)g′(x)\lim \limits_{x \to x_0} \frac{f'(x)}{g'(x)}x→x0limg′(x)f′(x) 还是 00\frac{0}{0}00 或 ∞∞\frac{\infty}{\infty}∞∞ 型,还可以继续用洛必达法则呢。但要是算不出来极限状态,或者极限振荡不存在,那洛必达法则就没用了,得换别的方法。
三、手动求解案例
为了让大家更直观地理解洛必达法则的应用,我们先来看一个手动求解的实例。求 limx→0sinxx\lim \limits_{x \to 0} \frac{\sin x}{x}x→0limxsinx,这就是个典型的 00\frac{0}{0}00 型不定式极限。
根据洛必达法则,对分子分母分别求导。由于 (sinx)′=cosx(\sin x)' = \cos x(sinx)′=cosx,(x)′=1(x)' = 1(x)′=1,所以 limx→0sinxx=limx→0cosx1=1\lim \limits_{x \to 0} \frac{\sin x}{x} = \lim \limits_{x \to 0} \frac{\cos x}{1} = 1x→0limxsinx=x→0lim1cosx=1。
四、Python 案例演示
接下来,我们使用 Python 来验证一下这个结果。在 Python 里,我们可以使用 sympy 库来进行符号计算。首先得安装 sympy 库哦,要是还没安装,可以在命令行输入 pip install sympy。
下面是代码示例:
import sympy# 定义符号变量
x = sympy.Symbol('x')# 定义函数
f = sympy.sin(x)
g = x# 计算极限
limit_result = sympy.limit(f / g, x, 0)
print(limit_result)
运行这段代码,输出结果为 1,与我们手动计算的结果完全一致。
再举个 ∞∞\frac{\infty}{\infty}∞∞ 型的例子,求 limx→+∞lnxx\lim \limits_{x \to +\infty} \frac{\ln x}{x}x→+∞limxlnx。
手动计算的话,对分子分母求导,(lnx)′=1x(\ln x)' = \frac{1}{x}(lnx)′=x1,(x)′=1(x)' = 1(x)′=1,所以 limx→+∞lnxx=limx→+∞1x1=limx→+∞1x=0\lim \limits_{x \to +\infty} \frac{\ln x}{x} = \lim \limits_{x \to +\infty} \frac{\frac{1}{x}}{1} = \lim \limits_{x \to +\infty} \frac{1}{x} = 0x→+∞limxlnx=x→+∞lim1x1=x→+∞limx1=0。
用 Python 代码验证:
import sympy# 定义符号变量
x = sympy.Symbol('x')# 定义函数
f = sympy.log(x)
g = x# 计算极限
limit_result = sympy.limit(f / g, x, sympy.oo)
print(limit_result)
运行代码后,同样会得到 0 的结果。
五、更多 Python 案例
下面我们通过更多的 Python 案例来进一步巩固对洛必达法则的理解。
(1)求 limx→0ex−1x\lim \limits_{x \to 0} \frac{e^x - 1}{x}x→0limxex−1
手动计算:(ex−1)′=ex(e^x - 1)' = e^x(ex−1)′=ex,(x)′=1(x)' = 1(x)′=1,则 limx→0ex−1x=limx→0ex1=1\lim_{x \to 0} \frac{e^x - 1}{x} = \lim_{x \to 0} \frac{e^x}{1} = 1limx→0xex−1=limx→01ex=1。
Python 代码:
import sympyx = sympy.Symbol('x')
f = sympy.exp(x) - 1
g = x
limit_result = sympy.limit(f / g, x, 0)
print(limit_result)
运行代码后,会得到 1 的结果。
(2)求 limx→0+xlnx\lim \limits_{x \to 0^+} x \ln xx→0+limxlnx(这是 0⋅∞0 \cdot \infty0⋅∞ 型,得变形为 lnx1x\frac{\ln x}{\frac{1}{x}}x1lnx 这种 ∞∞\frac{\infty}{\infty}∞∞ 型再用洛必达法则)
手动计算:变形后,(lnx)′=1x(\ln x)' = \frac{1}{x}(lnx)′=x1,(1x)′=−1x2(\frac{1}{x})' = -\frac{1}{x^2}(x1)′=−x21,则 limx→0+lnx1x=limx→0+1x−1x2=limx→0+(−x)=0\lim_{x \to 0^+} \frac{\ln x}{\frac{1}{x}} = \lim_{x \to 0^+} \frac{\frac{1}{x}}{-\frac{1}{x^2}} = \lim_{x \to 0^+} (-x) = 0limx→0+x1lnx=limx→0+−x21x1=limx→0+(−x)=0。
Python 代码:
import sympyx = sympy.Symbol('x')
f = sympy.log(x)
g = 1 / x
limit_result = sympy.limit(f / g, x, 0, dir='+')
print(limit_result)
运行代码后,会得到 0 的结果。
六、总结与互动
通过对洛必达法则的理论讲解以及手动计算和 Python 验证的案例分析,相信大家对洛必达法则已经有了较为清晰的认识。洛必达法则虽然功能强大,但在使用时务必严格遵循其条件。
大家不妨亲自选取一些不定式极限的题目,分别采用手动计算和 Python 验证的方式来练习,以加深对该法则的理解和运用能力。若在学习过程中遇到任何疑问,或者有独特的解题思路和有趣的发现,欢迎在评论区留言分享。如果觉得这篇文章对您有所帮助,烦请您点赞、关注,后续我还会为您带来更多精彩的数学知识分享!
往期精彩回顾:
- 用Python来学微积分22-费马定理
- 用Python来学微积分23-微分中值定理
专栏导航目录 《程序员AI之路:从Python起步》完全学习导航
完整代码已开源 ai-learning-path,欢迎Star和Fork!
下期预告:在下一篇文章中,我们将开始学习洛必达法则。
参考资料:
- 扈志明《微积分》教材
互动邀请:如果你对本章内容有独特的理解或在实际应用中遇到过有趣的问题,欢迎在评论区分享交流!
