引言
微积分是科学的语言,而微分是其灵魂。从一维导数到流形上的切映射,微分的本质始终是一个线性映射。我们不再满足于把它看作简单的斜率或变化率,而是将其视为局部最优的线性逼近。
本文将系统梳理微积分中一系列重要概念:导数、微分、雅可比矩阵、方向导数、梯度、链式法则、Hessian 矩阵以及切映射等,揭示它们背后的统一结构。更重要的是,我们将用 Python 代码可视化这些概念,让你直观地看到微分如何'线性化'非线性函数。
所有代码均基于 Python 3 + NumPy + Matplotlib 编写,可直接在本地环境运行观察图形变化。
1. 一维导数的重新解读——从'数'到'线性映射'
1.1 传统定义的局限
对于一元函数 $f:\mathbb{R}\to\mathbb{R}$,导数通常定义为: $$ f'(x)=\lim_{h\to 0}\frac{f(x+h)-f(x)}{h} $$ 这个定义直观地告诉我们:导数就是瞬时变化率。但它容易让人误以为导数仅仅是一个标量数值,忽略了其作为变换的本质。
1.2 微分的最佳定义:线性近似
真正统一的定义是:存在一个线性映射 $df_x:\mathbb{R}\to\mathbb{R}$,使得当 $h$ 趋于 0 时,函数的增量可以表示为: $$ f(x+h) = f(x) + df_x(h) + o(h) $$ 这里的 $o(h)$ 是高阶无穷小项。在一维情况下,$df_x(h) = f'(x) \cdot h$。这意味着导数 $f'(x)$ 实际上定义了如何将输入的小扰动 $h$ 线性地映射到输出的扰动上。这种视角将微分从'计算结果'提升到了'变换工具'的高度。
2. 多维情形下的推广
当我们进入多元函数领域,比如 $f:\mathbb{R}^n\to\mathbb{R}^m$,情况变得更加丰富,但核心逻辑不变。
2.1 雅可比矩阵与全微分
对于向量值函数,微分表现为一个矩阵,即雅可比矩阵(Jacobian Matrix)。它包含了所有一阶偏导数,描述了输入空间中的微小变化如何在输出空间中线性传播。
假设 $F: \mathbb{R}^n \to \mathbb{R}^m$,其微分 $DF_x$ 就是一个 $m \times n$ 的矩阵。在实际编程中,我们往往不需要手动推导每一个元素,利用自动微分库或数值差分即可高效获取。
2.2 梯度的几何意义
对于标量场 $f:\mathbb{R}^n\to\mathbb{R}$,梯度 $ abla f$ 是雅可比矩阵的行向量形式。它指向函数增长最快的方向,其模长代表该方向上的最大变化率。理解这一点对于优化算法至关重要。
3. Python 可视化实战
理论需要实践的验证。下面我们通过一段代码,可视化一元函数在某点附近的线性化过程。
import numpy as np
import matplotlib.pyplot as plt
# 定义目标函数 f(x) = x^2
f = lambda x: x ** 2
# 计算导数 f'(x) = 2x
df = lambda x: 2 * x
# 设定展开点 a
a = 2.0
# 生成数据范围
x = np.linspace(a - , a + , )
y_true = f(x)
L = f(a) + df(a) * (x - a)
plt.figure(figsize=(, ))
plt.plot(x, y_true, label=, color=)
plt.plot(x, L, , label=, color=)
plt.scatter([a], [f(a)], color=, zorder=)
plt.title()
plt.legend()
plt.grid()
plt.show()


