← 返回《人工智能数学基础》
📑 查看全课大纲(第 13 / 93 节)
  1. 1.概论和集合的定义
  2. 2.逼疯康托的实数集理论
  3. 3.常用不等式与映射
  4. 4.函数及特殊函数
  5. 5.序列极限的定义
  6. 6.序列极限的性质与夹逼定理
  7. 7.重要极限
  8. 8.无穷小量,无穷大量和一组重要的阶的比较关系
  9. 9.聚点原理
  10. 10.函数极限及其性质
  11. 11.重要极限与等价无穷小
  12. 12.连续函数
  13. 13.导数的概念(那些年,扛起牛顿的胡克)
  14. 14.定义法求导
  15. 15.函数四则运算的导数与反函数求导法则
  16. 16.复合函数,隐函数,参数式求导
  17. 17.不定式求导之“洛必达与伯努利的师生情”
  18. 18.一阶微分
  19. 19.高阶导数
  20. 20.高阶微分
  21. 21.罗尔中值定理与拉格朗日中值定理
  22. 22.柯西空降科学院遭排挤
  23. 23.泰勒公式与泰勒的克妻属性
  24. 24.利用泰勒展开唯一性定理计算泰勒展开
  25. 25.泰勒公式的余项估计
  26. 26.极值问题与导数
  27. 27.函数凹凸性
  28. 28.无卵用的渐近线与函数作图
  29. 29.不定积分的定义
  30. 30.第一换元法
  31. 31.第二换元法
  32. 32.分部积分法
  33. 33.有理式积分
  34. 34.三角替换
  35. 35.定积分的概念
  36. 36.定积分的性质与积分中值定理
  37. 37.变上限定积分
  38. 38.微积分基本定理之“高斯教你如何优雅地装逼”
  39. 39.定积分的换元法
  40. 40.奇偶函数与周期函数的定积分
  41. 41.曲线求长与不可求长曲线(海岸线居然算不出长度?)
  42. 42.旋转体体积
  43. 43.旋转体侧面积
  44. 44.极坐标下图形的面积(数学系常用表白曲线)
  45. 45.欧式空间
  46. 46.点列极限,开集与闭集
  47. 47.多元函数的定义
  48. 48.多元函数的极限
  49. 49.多元连续函数
  50. 50.一阶偏导数
  51. 51.高阶偏导数
  52. 52.全微分
  53. 53.方向导数与梯度
  54. 54.链式法则
  55. 55.一阶全微分形式的不变性与高阶微分
  56. 56.多元函数的泰勒公式
  57. 57.隐函数存在定理与逆映射存在定理
  58. 58.多元函数的极值
  59. 59.矩阵基础知识
  60. 60.行列式的定义与特殊矩阵的行列式
  61. 61.行列式的性质
  62. 62.行列式按k行展开
  63. 63.线性方程组初步与高斯消元法
  64. 64.齐次线性方程组与Cramer法则
  65. 65.线性空间
  66. 66.线性相关与线性无关
  67. 67.向量组的秩
  68. 68.矩阵的秩与线性方程组有解的充要条件
  69. 69.齐次线性方程组的解集结构
  70. 70.非齐次线性方程组解集结构
  71. 71.基与维数
  72. 72.矩阵的乘法
  73. 73.特殊矩阵
  74. 74.矩阵乘积的秩与行列式
  75. 75.矩阵的逆
  76. 76.正交矩阵
  77. 77.矩阵对角化与特征值特征向量
  78. 78.实对称矩阵对角化
  79. 79.二次型与正定矩阵
  80. 80.LU分解
  81. 81.Cholesky分解
  82. 82.SVD分解
  83. 83.线搜索
  84. 84.步长
  85. 85.最速下降法和牛顿法
  86. 86.共轭梯度法
  87. 87.拟牛顿法
  88. 88.无约束优化
  89. 89.若干知识点补充(一)
  90. 90.若干知识点补充(二)
  91. 91.凸优化问题
  92. 92.对偶问题(一)
  93. 93.对偶问题(二)

导数的概念(那些年,扛起牛顿的胡克)

约 15 分钟

📺 正在播放小象官方高清录播(支持倍速与清晰度调节)

导数的概念(那些年,扛起牛顿的胡克)

小象实战讲义 · 人工智能数学基础

在人工智能的建模与优化过程中,我们常常需要分析函数值如何随输入变化,这种“变化率”是理解模型行为、设计优化算法的核心。本节将从物理学、经济学等领域的直观概念出发,引出变化率的统一数学模型——导数,并给出其严格的数学定义与几何意义,为后续学习微分、梯度下降等关键内容奠定基础。

💡 核心导读

本节你将掌握:

  1. 变化的统一描述:理解速度、斜率、边际税率等概念背后共同的“变化率”思想。
  2. 导数的精确定义:学习如何用极限工具,从平均变化率过渡到瞬时变化率,从而定义导数。
  3. 导数的几何图像:将抽象的导数与曲线切线的斜率联系起来,建立直观的几何理解。
  4. 导数的多种记法:熟悉 f(x)f’(x)dfdx\frac{df}{dx} 等不同记号的来源与含义。
  5. 可导与连续的关系:了解函数在某点可导所需满足的基本条件。

从直观变化率到数学抽象

在各个学科领域,我们都在不约而同地研究一个量关于另一个量的变化快慢,即“变化率”。

  • 物理学中的速度与加速度:位移 ss 关于时间 tt 的变化率是速度 vv;速度 vv 关于时间 tt 的变化率是加速度 aa,即 dvdt=a\frac{dv}{dt} = a
  • 电学中的电流:电荷量 qq 关于时间 tt 的变化率是电流 II,即 I=dqdtI = \frac{dq}{dt}
  • 几何中的斜率:对于直线 y=kx+by=kx+b,纵坐标 yy 关于横坐标 xx 的变化率是斜率 kk。对于曲线,我们关心其上某一点处切线的斜率。
  • 经济学中的边际税率:税收 TT 关于收入 II 的变化率,反映了收入微增时税负的变化快慢。

这些例子表明,“变化率”是一个普适的需求。数学家希望从中抽象出一个统一的数学模型,来研究变化率本身的定义、性质与计算方法。这个模型就是导数

导数的定义

平均变化率与瞬时变化率

设函数 y=f(x)y = f(x) 在区间 (a,b)(a, b) 内有定义,x0(a,b)x_0 \in (a, b)。当自变量 xxx0x_0 变化到 x0+Δxx_0 + \Delta x (Δx0\Delta x \neq 0) 时,函数值相应地从 f(x0)f(x_0) 变化到 f(x0+Δx)f(x_0 + \Delta x)。我们称:

  • Δx\Delta x 为自变量的增量
  • Δy=f(x0+Δx)f(x0)\Delta y = f(x_0 + \Delta x) - f(x_0) 为函数的增量

比值 ΔyΔx\frac{\Delta y}{\Delta x} 反映了在区间 [x0,x0+Δx][x_0, x_0+\Delta x] 上,函数 f(x)f(x) 关于 xx平均变化率。它的几何意义是连接点 (x0,f(x0))(x_0, f(x_0)) 和点 (x0+Δx,f(x0+Δx))(x_0+\Delta x, f(x_0+\Delta x))割线的斜率。

导数的精确定义

为了刻画函数在 x0x_0 这一点的瞬时变化率,我们让 Δx\Delta x 无限趋近于 0,考察平均变化率的极限。

定义(导数):如果极限 limΔx0ΔyΔx=limΔx0f(x0+Δx)f(x0)Δx\lim_{\Delta x \to 0} \frac{\Delta y}{\Delta x} = \lim_{\Delta x \to 0} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x} 存在,则称函数 y=f(x)y = f(x) 在点 x0x_0可导,并称此极限值为 f(x)f(x) 在点 x0x_0 处的导数,记作 f(x0)f’(x_0),即 f(x0)=limΔx0f(x0+Δx)f(x0)Δxf’(x_0) = \lim_{\Delta x \to 0} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x} 导数 f(x0)f’(x_0) 也被称为微商,记作 dydxx=x0\left.\frac{dy}{dx}\right|{x=x_0}dfdxx=x0\left.\frac{df}{dx}\right|{x=x_0}。其中符号 ddx\frac{d}{dx} 是莱布尼茨引入的微分算子,直观表示“关于 xx 求导”。

单侧导数与可导的充要条件

有时我们需要考虑从一侧趋近的情况,由此定义单侧导数。

定义(左、右导数)

  • 右导数f+(x0)=limΔx0+f(x0+Δx)f(x0)Δxf’+(x_0) = \lim{\Delta x \to 0^+} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x}
  • 左导数f(x0)=limΔx0f(x0+Δx)f(x0)Δxf’-(x_0) = \lim{\Delta x \to 0^-} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x}

定理:函数 f(x)f(x) 在点 x0x_0 处可导的充分必要条件是,其左导数 f(x0)f’-(x_0) 和右导数 f+(x0)f’+(x_0) 都存在且相等。

导函数

如果函数 y=f(x)y=f(x) 在开区间 (a,b)(a, b) 内的每一点都可导,那么就称 f(x)f(x)(a,b)(a, b) 内可导。这时,对于 (a,b)(a, b) 内的每一个 xx,都对应着一个确定的导数值 f(x)f’(x),这就构成了一个新的函数,称为 f(x)f(x)导函数,简称导数,记作 f(x)f’(x)yy’dydx\frac{dy}{dx}

导数的几何意义

回顾导数的定义式: f(x0)=limΔx0f(x0+Δx)f(x0)Δxf’(x_0) = \lim_{\Delta x \to 0} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x} 其分子 Δy\Delta y 是函数值的差,分母 Δx\Delta x 是自变量的差。当 Δx0\Delta x \to 0 时,割线 PQPQ(其中 P=(x0,f(x0))P=(x_0, f(x_0)), Q=(x0+Δx,f(x0+Δx))Q=(x_0+\Delta x, f(x_0+\Delta x)))的极限位置,就是曲线在点 PP 处的切线

因此,导数 f(x0)f’(x_0) 的几何意义是曲线 y=f(x)y=f(x) 在点 (x0,f(x0))(x_0, f(x_0)) 处的切线的斜率

如果 f(x0)>0f’(x_0) > 0,切线斜率为正,函数在该点附近呈上升趋势;如果 f(x0)<0f’(x_0) < 0,则呈下降趋势。如果 f(x0)=0f’(x_0) = 0,则切线是水平的。

根据点斜式方程,曲线 y=f(x)y=f(x) 在点 (x0,f(x0))(x_0, f(x_0)) 处的切线方程为: yf(x0)=f(x0)(xx0)y - f(x_0) = f’(x_0)(x - 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}")

📝 动手练一练

  1. 根据定义求导:利用导数定义 f(x0)=limΔx0f(x0+Δx)f(x0)Δxf’(x_0) = \lim_{\Delta x \to 0} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x},求函数 f(x)=3x+2f(x) = 3x + 2x=1x=1 处的导数。 参考答案: 根据定义计算: f(1)=limΔx0f(1+Δx)f(1)Δx=limΔx0[3(1+Δx)+2][3×1+2]Δx=limΔx03+3Δx+25Δx=limΔx03ΔxΔx=limΔx03=3\begin{aligned} f’(1) &= \lim_{\Delta x \to 0} \frac{f(1 + \Delta x) - f(1)}{\Delta x} \ &= \lim_{\Delta x \to 0} \frac{[3(1+\Delta x) + 2] - [3\times1 + 2]}{\Delta x} \ &= \lim_{\Delta x \to 0} \frac{3 + 3\Delta x + 2 - 5}{\Delta x} \ &= \lim_{\Delta x \to 0} \frac{3\Delta x}{\Delta x} \ &= \lim_{\Delta x \to 0} 3 = 3 \end{aligned} 所以,f(1)=3f’(1) = 3

  2. 求切线方程:已知函数 y=1xy = \frac{1}{x},求该曲线在点 (2,12)(2, \frac{1}{2}) 处的切线方程。 参考答案: 先求导数 y=1x2y’ = -\frac{1}{x^2}。在 x=2x=2 处,导数值(切线斜率)k=y(2)=14k = y’(2) = -\frac{1}{4}。利用点斜式,切线方程为: y12=14(x2)y - \frac{1}{2} = -\frac{1}{4}(x - 2),化简得 y=14x+1y = -\frac{1}{4}x + 1

本章小结

本节我们建立了导数的核心概念:

  • 导数的本质是函数在某一点的瞬时变化率,它统一了物理、几何、经济等领域中关于“变化快慢”的描述。
  • 导数的定义基于极限:f(x0)=limΔx0f(x0+Δx)f(x0)Δxf’(x_0) = \lim_{\Delta x \to 0} \frac{f(x_0 + \Delta x) - f(x_0)}{\Delta x}。可导的充要条件是左、右导数存在且相等。
  • 导数的几何意义是曲线在对应点处切线的斜率。这为我们将抽象的代数变化与直观的几何图形联系起来提供了桥梁。
  • 导数的记法主要有 f(x)f’(x)(拉格朗日记法)和 dfdx\frac{df}{dx}(莱布尼茨记法),后者在表示复合函数求导、多元函数偏导时尤为方便。

行动清单 学完本节,你可以立即:

  1. 重述概念:尝试用自己的话向他人解释“为什么导数能表示瞬时速度或切线斜率”。
  2. 符号转换:给定一个函数,如 s(t)=t2s(t)=t^2,练习用两种不同的记号写出其在 t=3t=3 处的导数。
  3. 代码验证:运行并理解本节提供的 Python 代码,尝试修改函数(如改为 f(x)=sin(x)f(x)=\sin(x))和切点位置,观察切线与曲线的变化。

— 小象教研组

配套学习资源与课件
  • 第4章讲义:导数(PDF · 3.6MB)
    下载
🎁 免费学习资源

领取《小象 11GB VIP 课件资料包与大厂真题手册》

包含全套实战 Jupyter 源码、清洗后数据集、大厂高频面试真题与专属学员答疑交流群。

  • 完整 Python / 数据分析 Jupyter 实战源码
  • 大厂真实业务数据集与练习题
  • 微信扫码添加课程顾问,免费获取网盘下载链接
微信二维码:扫码添加课程顾问微信扫码添加顾问