📑 查看全课大纲(第 28 / 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.对偶问题(二)
无卵用的渐近线与函数作图
约 24 分钟
渐近线与函数作图
小象实战讲义 · 人工智能数学基础
在掌握了利用导数分析函数局部性质(如单调性、极值、凹凸性)后,我们还需要理解函数在定义域边界或无穷远处的整体趋势。本节将介绍一个刻画这种“远方”行为的工具——渐近线,并系统性地梳理函数作图的完整流程。学完本节,你将能够分析复杂函数在无穷远处的渐近行为,并综合运用导数、极限等工具,绘制出函数图像的关键特征草图。
💡 核心导读
本节你将学到:
- 渐近线的定义与分类:理解水平、垂直和斜渐近线的几何与代数含义。
- 斜渐近线的代数求法:掌握通过计算极限来求解斜渐近线方程的标准方法。
- 函数作图的系统流程:梳理从定义域分析到渐近线判断的完整作图步骤。
- 综合应用实例:通过一个有理函数,实战演练如何结合导数分析与渐近线判断绘制函数图像。
渐近线:函数图像的“远方指南”
渐近线描述了一条曲线在无限延伸时,与某条直线无限接近的趋势。从几何上看,若曲线 上动点 沿曲线趋于无穷远时,该点到某定直线 的距离趋于 ,则称直线 为曲线的一条渐近线。
根据直线的方向,渐近线主要分为三类:
- 水平渐近线:若 或 ,则直线 是曲线的一条水平渐近线。
- 垂直渐近线:若 (或 ),或 (或 ),则直线 是曲线的一条垂直渐近线。
- 斜渐近线:若曲线在无穷远处与一条非水平也非垂直的直线 无限接近,则该直线为斜渐近线。
我们熟悉的函数 有两条渐近线:(水平渐近线,因 时函数值趋于 )和 (垂直渐近线,因 时函数值趋于无穷)。函数 则是将图像向右平移了一个单位,其渐近线变为 和 。
斜渐近线的代数求法
对于更一般的情形,如何求一条曲线的斜渐近线 呢?其核心思想是“同阶线性增长,差距趋于常数”。
假设当 时,函数 与直线 无限接近。这意味着:
- 增长率相同(同阶): 与 的增长率在无穷远处应趋于一个常数 。 该极限必须存在且为有限值( 且 )。
- 差距趋于常数:函数值与线性部分 的差值应趋于常数 。 该极限也必须存在(为有限值)。
同理,可以讨论 时的斜渐近线,只需将上述极限中的 替换为 即可。
求法总结: 欲求 时的斜渐近线 :
- 计算 。若极限不存在或为无穷,则无斜渐近线。
- 若 存在且有限,再计算 。
- 得到渐近线方程 。
水平渐近线可视为 的特殊情况,垂直渐近线则需单独分析函数在有限点处的极限行为。
函数作图的系统流程
绘制一个陌生函数的图像,应遵循一套系统性的分析流程,以确保捕捉到所有关键特征。
- 确定定义域:明确函数在哪些点有定义,哪些点无定义(如分母为零、偶次根号下为负等)。
- 分析特殊点:
- 间断点:对于无定义的点,计算其左极限 和右极限 ,判断间断类型。若单侧极限为无穷,则该处可能存在垂直渐近线 。
- 不可导点:对于如 在 处的情况,需分别计算左导数 -(a) 和右导数 +(a),以了解该点附近的切线行为。
- 利用一阶导数分析单调性与极值:
- 计算 。
- 解方程 ,找出稳定点(驻点)。
- 根据 在各区间的正负,判断函数的单调递增() 或单调递减() 区间。
- 结合单调性的变化,确定极值点(如从左增右减判断为极大值点)。
- 利用二阶导数分析凹凸性与拐点:
- 计算 。
- 解方程 ,找出可能的拐点候选。
- 根据 在各区间的正负,判断函数的凹凸性: 为凸(开口向上), 为凹(开口向下)。
- 确认 在候选点两侧变号,则该点为拐点(凹凸性改变的点)。
- 分析无穷远处的行为与渐近线:
- 计算 和 ,判断是否存在水平渐近线。
- 若水平渐近线不存在,尝试用前述方法判断是否存在斜渐近线。
- 综合步骤 2 中找出的垂直渐近线。
- 综合绘图:将以上所有信息(定义域边界、特殊点坐标、极值点、拐点、单调区间、凹凸区间、渐近线)整合到坐标系中,用光滑曲线连接,绘制出函数图像的草图。
这个过程虽然系统,但经验丰富的学习者往往对基本初等函数的图像非常熟悉,可以快速把握复合函数的整体形态。系统分析的价值在于处理陌生、复杂的函数。
综合实例:绘制 的图像
让我们用上述流程分析函数 。
1. 定义域:分母不为零,故定义域为 。 是间断点。
2. 分析特殊点(间断点): 计算 处的单侧极限: 因此, 是一条垂直渐近线。
3. 求渐近线(无穷远处):
- 判断是否有斜渐近线: 故存在斜渐近线 。同理可证 时也是同一条渐近线。
4. 一阶导数与单调性、极值: 令 ,得稳定点 和 。分母 (),故符号由分子 决定。
| 区间 | ||||
|---|---|---|---|---|
| 符号 | ||||
| 单调性 | 递增 | 递减 | 递减 | 递增 |
| 结论 | 处取极大值 | 处取极小值 |
5. 二阶导数与凹凸性、拐点: (具体求导过程略,可利用商法则或化简化简后求导)。 令 ,方程无解。 的符号由分母 决定:
- 当 时,,函数为凸(凹向上)。
- 当 时,,函数为凹(凹向下)。 不在定义域内,故该函数没有拐点。
6. 综合绘图:
- 画出垂直渐近线 和斜渐近线 。
- 标出极值点 (极大)和 (极小)。
- 根据单调性:图像从左远方递增至 ,然后递减并逼近 两侧的无穷远;从 右侧正无穷远处递减至 ,然后递增并沿 方向延伸。
- 根据凹凸性:在 区间图像是凹的,在 区间图像是凸的。
最终可以勾勒出函数图像的双支形状。
import numpy as np
import matplotlib.pyplot as plt
import sympy as sp
# 定义符号变量和函数
x = sp.symbols('x')
f_expr = x**2 / (x - 1)
f = sp.lambdify(x, f_expr, 'numpy')
# 计算导数
f_prime_expr = sp.diff(f_expr, x)
f_double_prime_expr = sp.diff(f_prime_expr, x)
print("函数 f(x) =", f_expr)
print("一阶导数 f'(x) =", f_prime_expr)
print("二阶导数 f''(x) =", f_double_prime_expr)
# 计算渐近线
# 斜渐近线斜率 k
k = sp.limit(f_expr / x, x, sp.oo)
print(f"\n斜渐近线斜率 k = limit(f(x)/x, x->oo) = {k}")
# 斜渐近线截距 b
b = sp.limit(f_expr - k*x, x, sp.oo)
print(f"斜渐近线截距 b = limit(f(x)-{k}*x, x->oo) = {b}")
print(f"斜渐近线方程为: y = {k}*x + {b}")
# 垂直渐近线:寻找使分母为零的点
denom = sp.denom(f_expr)
vertical_asym = sp.solve(denom, x)
print(f"\n垂直渐近线: x = {vertical_asym[0]}")
# 数值绘图
x_vals_left = np.linspace(-5, 0.9, 100) # 避开 x=1
x_vals_right = np.linspace(1.1, 5, 100)
y_vals_left = f(x_vals_left)
y_vals_right = f(x_vals_right)
# 渐近线
x_asym = np.linspace(-5, 5, 400)
y_slant_asym = k * x_asym + b # 斜渐近线
plt.figure(figsize=(10, 6))
plt.plot(x_vals_left, y_vals_left, 'b-', label=r'<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><msup><mi>x</mi><mn>2</mn></msup><mi mathvariant="normal">/</mi><mo stretchy="false">(</mo><mi>x</mi><mo>−</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">y=x^2/(x-1)</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.0359em;">y</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:1.0641em;vertical-align:-0.25em;"></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 class="mord">/</span><span class="mopen">(</span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mord">1</span><span class="mclose">)</span></span></span></span>', linewidth=2)
plt.plot(x_vals_right, y_vals_right, 'b-', linewidth=2)
plt.plot(x_asym, y_slant_asym, 'r--', label=r'斜渐近线 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><mi>x</mi><mo>+</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">y=x+1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.0359em;">y</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.6667em;vertical-align:-0.0833em;"></span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">+</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span>', alpha=0.7)
plt.axvline(x=vertical_asym[0], color='g', linestyle='--', label=r'垂直渐近线 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding="application/x-tex">x=1</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.4306em;"></span><span class="mord mathnormal">x</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:0.6444em;"></span><span class="mord">1</span></span></span></span>', alpha=0.7)
# 标记极值点
plt.scatter([0, 2], [f(0), f(2)], color='red', zorder=5, label='极值点')
plt.text(0, f(0)+0.3, '(0,0) 极大', ha='center')
plt.text(2, f(2)+0.3, '(2,4) 极小', ha='center')
plt.xlim(-5, 5)
plt.ylim(-10, 10)
plt.xlabel('x')
plt.ylabel('y')
plt.title(r'函数 <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><mfrac><msup><mi>x</mi><mn>2</mn></msup><mrow><mi>x</mi><mo>−</mo><mn>1</mn></mrow></mfrac></mrow><annotation encoding="application/x-tex">y = \frac{x^2}{x-1}</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:0.625em;vertical-align:-0.1944em;"></span><span class="mord mathnormal" style="margin-right:0.0359em;">y</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">=</span><span class="mspace" style="margin-right:0.2778em;"></span></span><span class="katex-base"><span class="katex-strut" style="height:1.4213em;vertical-align:-0.4033em;"></span><span class="mord"><span class="mopen nulldelimiter"></span><span class="mfrac"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:1.0179em;"><span style="top:-2.655em;"><span class="pstrut" style="height:3em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mathnormal mtight">x</span><span class="mbin mtight">−</span><span class="mord mtight">1</span></span></span></span><span style="top:-3.23em;"><span class="pstrut" style="height:3em;"></span><span class="frac-line" style="border-bottom-width:0.04em;"></span></span><span style="top:-3.394em;"><span class="pstrut" style="height:3em;"></span><span class="katex-sizing reset-size6 size3 mtight"><span class="mord mtight"><span class="mord mtight"><span class="mord mathnormal mtight">x</span><span class="msupsub"><span class="vlist-t"><span class="vlist-r"><span class="vlist" style="height:0.8913em;"><span style="top:-2.931em;margin-right:0.0714em;"><span class="pstrut" style="height:2.5em;"></span><span class="katex-sizing reset-size3 size1 mtight"><span class="mord mtight">2</span></span></span></span></span></span></span></span></span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.4033em;"><span></span></span></span></span></span><span class="mclose nulldelimiter"></span></span></span></span></span> 及其渐近线图像')
plt.legend()
plt.grid(True, alpha=0.3)
plt.show()📝 动手练一练
- 求渐近线:求函数 的所有渐近线方程。
- 分析作图:对于函数 ,请分析其定义域、单调性、极值、凹凸性、拐点及渐近线,并简要描述其图像的大致形状。
参考答案:
垂直渐近线:分母为零时 ,即 。计算 ,故 是垂直渐近线。 斜渐近线:因为分子次数比分母高一次,存在斜渐近线。 。 。 故斜渐近线为 。
定义域:,即 。 导数:,令 得 。 单调性与极值:当 或 时,,函数递增;当 或 时,,函数递减。 为极大值点,; 为极小值点,。 二阶导数与凹凸性:。当 时,,函数为凸;当 时,,函数为凹。 不在定义域,无拐点。 渐近线: 为垂直渐近线(因 )。由于 ,故 是斜渐近线。 图像描述:图像由两支组成,均以 和 为渐近线。在第三象限有一支,从 下方逼近,在 达到极大后下降并逼近负 轴;在第一象限有一支,从正 轴上方下降,在 达到极小后上升并逼近 。
本章小结
本节我们系统学习了函数作图的两个重要方面:远方行为的刻画(渐近线)与系统性的作图流程。
要点回顾:
- 渐近线分为水平、垂直和斜渐近线,它们分别描述了函数在无穷远处或间断点附近的极限行为。
- 斜渐近线 的求解依赖于两个极限: 和 。
- 函数作图是一个逻辑严密的系统工程,需依次考察:定义域、特殊点(间断、不可导)、一阶导数(单调、极值)、二阶导数(凹凸、拐点)以及无穷远处的渐近行为,最后综合所有信息绘图。
行动清单:
- 掌握求法:面对一个新函数,尝试按照“垂直→水平/斜”的顺序,求出其所有渐近线。
- 流程化分析:选取一个复杂的有理函数(如 ),严格按照本节介绍的六步作图流程,在纸上逐步分析并画出草图。
- 代码验证:使用 Python 的 SymPy 库(如示例代码)对你分析的函数进行符号求导、求极限,并用 Matplotlib 绘制图像,验证你的分析结果。
— 小象教研组
- 第6章讲义:泰勒公式(PDF · 5.1MB)下载
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问