📑 查看全课大纲(第 13 / 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.对偶问题(二)
导数的概念(那些年,扛起牛顿的胡克)
约 15 分钟
导数的概念(那些年,扛起牛顿的胡克)
小象实战讲义 · 人工智能数学基础
在人工智能的建模与优化过程中,我们常常需要分析函数值如何随输入变化,这种“变化率”是理解模型行为、设计优化算法的核心。本节将从物理学、经济学等领域的直观概念出发,引出变化率的统一数学模型——导数,并给出其严格的数学定义与几何意义,为后续学习微分、梯度下降等关键内容奠定基础。
💡 核心导读
本节你将掌握:
- 变化的统一描述:理解速度、斜率、边际税率等概念背后共同的“变化率”思想。
- 导数的精确定义:学习如何用极限工具,从平均变化率过渡到瞬时变化率,从而定义导数。
- 导数的几何图像:将抽象的导数与曲线切线的斜率联系起来,建立直观的几何理解。
- 导数的多种记法:熟悉 、 等不同记号的来源与含义。
- 可导与连续的关系:了解函数在某点可导所需满足的基本条件。
从直观变化率到数学抽象
在各个学科领域,我们都在不约而同地研究一个量关于另一个量的变化快慢,即“变化率”。
- 物理学中的速度与加速度:位移 关于时间 的变化率是速度 ;速度 关于时间 的变化率是加速度 ,即 。
- 电学中的电流:电荷量 关于时间 的变化率是电流 ,即 。
- 几何中的斜率:对于直线 ,纵坐标 关于横坐标 的变化率是斜率 。对于曲线,我们关心其上某一点处切线的斜率。
- 经济学中的边际税率:税收 关于收入 的变化率,反映了收入微增时税负的变化快慢。
这些例子表明,“变化率”是一个普适的需求。数学家希望从中抽象出一个统一的数学模型,来研究变化率本身的定义、性质与计算方法。这个模型就是导数。
导数的定义
平均变化率与瞬时变化率
设函数 在区间 内有定义,。当自变量 从 变化到 () 时,函数值相应地从 变化到 。我们称:
- 为自变量的增量。
- 为函数的增量。
比值 反映了在区间 上,函数 关于 的平均变化率。它的几何意义是连接点 和点 的割线的斜率。
导数的精确定义
为了刻画函数在 这一点的瞬时变化率,我们让 无限趋近于 0,考察平均变化率的极限。
定义(导数):如果极限 存在,则称函数 在点 处可导,并称此极限值为 在点 处的导数,记作 ,即 导数 也被称为微商,记作 {x=x_0} 或 {x=x_0}。其中符号 是莱布尼茨引入的微分算子,直观表示“关于 求导”。
单侧导数与可导的充要条件
有时我们需要考虑从一侧趋近的情况,由此定义单侧导数。
定义(左、右导数):
- 右导数:+(x_0) = \lim{\Delta x \to 0^+} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x}
- 左导数:-(x_0) = \lim{\Delta x \to 0^-} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x}
定理:函数 在点 处可导的充分必要条件是,其左导数 -(x_0) 和右导数 +(x_0) 都存在且相等。
导函数
如果函数 在开区间 内的每一点都可导,那么就称 在 内可导。这时,对于 内的每一个 ,都对应着一个确定的导数值 ,这就构成了一个新的函数,称为 的导函数,简称导数,记作 , 或 。
导数的几何意义
回顾导数的定义式: 其分子 是函数值的差,分母 是自变量的差。当 时,割线 (其中 , )的极限位置,就是曲线在点 处的切线。
因此,导数 的几何意义是曲线 在点 处的切线的斜率。
如果 ,切线斜率为正,函数在该点附近呈上升趋势;如果 ,则呈下降趋势。如果 ,则切线是水平的。
根据点斜式方程,曲线 在点 处的切线方程为:
import numpy as np
import matplotlib.pyplot as plt
import sympy as sp
# 演示导数的几何意义:求函数在某点的切线
x = sp.symbols('x')
f_expr = x**2 # 定义函数 f(x) = x^2
x0 = 1.5 # 切点横坐标
# 使用 sympy 计算函数值和导数值(切线斜率)
f = sp.lambdify(x, f_expr, 'numpy')
f_prime_expr = sp.diff(f_expr, x) # 求导函数
f_prime = sp.lambdify(x, f_prime_expr, 'numpy')
y0 = f(x0)
k = f_prime(x0) # 切线斜率
# 生成曲线和切线的数据点
x_vals = np.linspace(0, 3, 100)
y_vals = f(x_vals)
# 切线方程: y = y0 + k*(x - x0)
y_tangent = y0 + k * (x_vals - x0)
# 绘制图像
plt.figure(figsize=(8, 6))
plt.plot(x_vals, y_vals, label=f'<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></mrow><annotation encoding="application/x-tex">y = x^2</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.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_vals, y_tangent, 'r--', label=f'切线: <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi><mo>=</mo><mrow><mi>k</mi><mo>:</mo><mn>.1</mn><mi>f</mi></mrow><mo stretchy="false">(</mo><mi>x</mi><mo>−</mo><mrow><mi>x</mi><mn>0</mn></mrow><mo stretchy="false">)</mo><mo>+</mo><mrow><mi>y</mi><mn>0</mn><mo>:</mo><mn>.1</mn><mi>f</mi></mrow></mrow><annotation encoding="application/x-tex">y = {k:.1f}(x - {x0}) + {y0:.1f}</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:1em;vertical-align:-0.25em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0315em;">k</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">.1</span><span class="mord mathnormal" style="margin-right:0.1076em;">f</span></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"><span class="mord mathnormal">x</span><span class="mord">0</span></span><span class="mclose">)</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.8889em;vertical-align:-0.1944em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0359em;">y</span><span class="mord">0</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">.1</span><span class="mord mathnormal" style="margin-right:0.1076em;">f</span></span></span></span></span>', linewidth=1.5)
plt.scatter([x0], [y0], color='red', s=50, zorder=5) # 标记切点
plt.text(x0+0.1, y0-0.2, f'<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mrow><mi>x</mi><mn>0</mn></mrow><mo separator="true">,</mo><mrow><mi>y</mi><mn>0</mn><mo>:</mo><mn>.2</mn><mi>f</mi></mrow><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">({x0}, {y0:.2f})</annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="katex-base"><span class="katex-strut" style="height:1em;vertical-align:-0.25em;"></span><span class="mopen">(</span><span class="mord"><span class="mord mathnormal">x</span><span class="mord">0</span></span><span class="mpunct">,</span><span class="mspace" style="margin-right:0.1667em;"></span><span class="mord"><span class="mord mathnormal" style="margin-right:0.0359em;">y</span><span class="mord">0</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mrel">:</span><span class="mspace" style="margin-right:0.2778em;"></span><span class="mord">.2</span><span class="mord mathnormal" style="margin-right:0.1076em;">f</span></span><span class="mclose">)</span></span></span></span>', fontsize=12)
plt.xlabel('<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>x</mi></mrow><annotation encoding="application/x-tex">x</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></span></span>', fontsize=14)
plt.ylabel('<span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>y</mi></mrow><annotation encoding="application/x-tex">y</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></span></span>', fontsize=14)
plt.title('导数的几何意义:切线的斜率', fontsize=16)
plt.legend(fontsize=12)
plt.grid(True, alpha=0.3)
plt.axis('equal')
plt.xlim(0, 3)
plt.ylim(0, 9)
plt.show()
# 打印导数值
print(f"在 x = {x0} 处:")
print(f" 函数值 f({x0}) = {y0:.4f}")
print(f" 导数值 f'({x0}) = {k:.4f}")
print(f" 切线斜率 k = {k:.4f}")📝 动手练一练
根据定义求导:利用导数定义 ,求函数 在 处的导数。 参考答案: 根据定义计算: 所以,。
求切线方程:已知函数 ,求该曲线在点 处的切线方程。 参考答案: 先求导数 。在 处,导数值(切线斜率)。利用点斜式,切线方程为: ,化简得 。
本章小结
本节我们建立了导数的核心概念:
- 导数的本质是函数在某一点的瞬时变化率,它统一了物理、几何、经济等领域中关于“变化快慢”的描述。
- 导数的定义基于极限:。可导的充要条件是左、右导数存在且相等。
- 导数的几何意义是曲线在对应点处切线的斜率。这为我们将抽象的代数变化与直观的几何图形联系起来提供了桥梁。
- 导数的记法主要有 (拉格朗日记法)和 (莱布尼茨记法),后者在表示复合函数求导、多元函数偏导时尤为方便。
行动清单 学完本节,你可以立即:
- 重述概念:尝试用自己的话向他人解释“为什么导数能表示瞬时速度或切线斜率”。
- 符号转换:给定一个函数,如 ,练习用两种不同的记号写出其在 处的导数。
- 代码验证:运行并理解本节提供的 Python 代码,尝试修改函数(如改为 )和切点位置,观察切线与曲线的变化。
— 小象教研组
- 第4章讲义:导数(PDF · 3.6MB)下载
领取《小象 11GB VIP 课件资料包与大厂真题手册》
包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。
- ✔完整 Python / 数据分析 Jupyter 实战源码
- ✔大厂真实业务数据集与练习题
- ✔微信扫码添加课程顾问,免费获取网盘下载链接
微信扫码添加顾问