- Authors

- Name
- Youngju Kim
- @fjvbn20031
- 工程数学完全征服 4:向量微积分
工程数学完全征服 4:向量微积分
向量微积分(Vector Calculus)是贯穿物理学、电磁学、流体力学,乃至现代机器学习的核心数学工具。本文从梯度(gradient)、散度(divergence)、旋度(curl)等概念出发,系统梳理格林定理、高斯散度定理、斯托克斯定理这三大积分定理。
1. 向量函数与向量场
向量值函数
向量值函数(vector-valued function)接收标量参数 ,输出空间中的一个向量。
例如螺旋曲线(helix)可表示为:
切向量与法向量
曲线 的切向量(tangent vector)由微分求得。
单位切向量为 ,主法向量(principal normal vector)为 。
向量场
向量场(vector field)是把空间中每一点对应到一个向量的函数。
典型的向量场示例:
- 重力场:
- 电场:
- 流体速度场:
import numpy as np
import matplotlib.pyplot as plt
# 2D 向量场可视化
x = np.linspace(-2, 2, 15)
y = np.linspace(-2, 2, 15)
X, Y = np.meshgrid(x, y)
# 旋转向量场: F = (-y, x)
U = -Y
V = X
fig, ax = plt.subplots(figsize=(6, 6))
ax.quiver(X, Y, U, V, color='steelblue', alpha=0.8)
ax.set_title('Rotational Vector Field F = (-y, x)')
ax.set_xlabel('x')
ax.set_ylabel('y')
plt.tight_layout()
plt.show()
2. 标量场与梯度 (Gradient)
方向导数
标量场 沿单位向量 方向的方向导数定义为:
梯度向量
梯度(gradient)表示标量场增长最快的方向及其大小。
物理意义:
- 的方向: 增长最快的方向
- :该方向上的变化率(梯度大小)
- 垂直于等值面(level surface)
示例: 若 ,则
import numpy as np
import matplotlib.pyplot as plt
import sympy as sp
# 用 SymPy 计算梯度
x_s, y_s = sp.symbols('x y')
f = x_s**2 + y_s**2 + x_s * y_s
grad_x = sp.diff(f, x_s)
grad_y = sp.diff(f, y_s)
print("grad_x =", grad_x) # 2x + y
print("grad_y =", grad_y) # x + 2y
# 用 NumPy 可视化
x = np.linspace(-2, 2, 20)
y = np.linspace(-2, 2, 20)
X, Y = np.meshgrid(x, y)
f_val = X**2 + Y**2
U = 2 * X # df/dx
V = 2 * Y # df/dy
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
c = axes[0].contourf(X, Y, f_val, 20, cmap='viridis')
axes[0].contour(X, Y, f_val, 10, colors='white', alpha=0.5)
plt.colorbar(c, ax=axes[0])
axes[0].set_title('f(x,y) = x² + y² (等高线)')
axes[1].quiver(X, Y, U, V, color='red', alpha=0.7)
axes[1].set_title('Gradient ∇f = (2x, 2y)')
plt.tight_layout()
plt.show()
3. 散度 (Divergence)
散度的定义
向量场 的散度(divergence)是一个标量值。
物理意义
散度表示单位体积内流体流出(或被吸入)的量。
- :该点是源(source) — 流体向外流出
- :该点是汇(sink) — 流体向内流入
- :不可压缩流动(incompressible flow) — 流体守恒
示例: 若 ,则
不可压缩流动的典型例子: 时
import sympy as sp
x, y, z = sp.symbols('x y z')
# 向量场 F = (x^2, y^2, z^2)
P = x**2
Q = y**2
R = z**2
divergence = sp.diff(P, x) + sp.diff(Q, y) + sp.diff(R, z)
print("div F =", divergence) # 2x + 2y + 2z
4. 旋度 (Curl)
旋度的定义
向量场 的旋度(curl)是一个向量值。
展开后得到
物理意义与保守场
- 旋度表示流体质点局部的旋转(rotation)或涡度(vorticity)。
- 若 ,则称为无旋(irrotational)或保守场(conservative field)。
- 保守场必存在势函数 ,满足 。
与麦克斯韦方程组的关系
法拉第定律:
安培-麦克斯韦定律:
import sympy as sp
x, y, z = sp.symbols('x y z')
# 向量场 F = (y*z, x*z, x*y)
P = y * z
Q = x * z
R = x * y
curl_x = sp.diff(R, y) - sp.diff(Q, z)
curl_y = sp.diff(P, z) - sp.diff(R, x)
curl_z = sp.diff(Q, x) - sp.diff(P, y)
print("curl F =", (curl_x, curl_y, curl_z))
# 结果: (0, 0, 0) => 保守场
5. 线积分 (Line Integrals)
标量函数的线积分
将曲线 参数化为 ,,则
向量场的线积分(功)
向量场 使质点沿曲线 移动时所做的功(work):
路径无关性
在满足 的保守场中,线积分与路径无关。
也就是说,只要知道起点和终点,就能计算出功。
import numpy as np
from scipy.integrate import quad
# F = (2x, 2y), 曲线: r(t) = (t, t^2), t in [0,1]
def work_integrand(t):
x_t = t
y_t = t**2
# F(r(t)) = (2x, 2y) = (2t, 2t^2)
Fx = 2 * x_t
Fy = 2 * y_t
# r'(t) = (1, 2t)
dx = 1
dy = 2 * t
return Fx * dx + Fy * dy
work, _ = quad(work_integrand, 0, 1)
print(f"Work = {work:.4f}") # = 2.0 (与路径无关: phi = x^2+y^2, phi(1,1)-phi(0,0) = 2)
6. 面积分 (Surface Integrals)
标量函数的面积分
对参数曲面 :
通量 (Flux)
向量场 穿过曲面 的通量(flux):
它表示单位时间内穿过曲面的流体量(体积流量)。
7. 格林定理 (Green's Theorem)
定理
对简单闭曲线 及其所围区域 ,若 、 具有连续偏导数,则
(其中 沿 的边界以逆时针方向环绕)
面积计算的应用
利用格林定理,可以把闭曲线内部的面积转化为线积分来求解。
流体力学中的应用
在二维流动中,格林定理被用来定量描述环量(circulation)与通量。
import numpy as np
from scipy.integrate import dblquad
# Green's theorem 验证
# C: 以原点为中心、半径为 1 的单位圆
# P = -y, Q = x => dQ/dx - dP/dy = 1 + 1 = 2
# 二重积分: 2 * pi * 1^2 = 2*pi
# 线积分: ∮ (-y dx + x dy) = 2 * area = 2*pi
result, _ = dblquad(
lambda y, x: 2.0, # integrand = dQ/dx - dP/dy
-1, 1,
lambda x: -np.sqrt(1 - x**2),
lambda x: np.sqrt(1 - x**2)
)
print(f"Double integral = {result:.5f}") # ≈ 6.28318 = 2*pi
8. 高斯散度定理 (Divergence Theorem)
定理
对体积 及其边界面 ,若 具有连续偏导数,则
其中 为外向单位法向量。
物理意义
体积内的总散度(源/汇之和) = 穿过边界面流出的总通量
电场高斯定律
这是散度定理的直接应用,用于从电荷分布计算电场。
import sympy as sp
x, y, z = sp.symbols('x y z')
# F = (x^3, y^3, z^3), 半径为 1 的球
P, Q, R = x**3, y**3, z**3
div_F = sp.diff(P, x) + sp.diff(Q, y) + sp.diff(R, z)
print("div F =", div_F) # 3x^2 + 3y^2 + 3z^2
# 用球坐标积分: 球内部 3*(x^2+y^2+z^2) dV = 3 * (4/5)*pi (半径为 1)
# 答案: 12*pi/5
print("Expected flux =", 12 * sp.pi / 5)
9. 斯托克斯定理 (Stokes' Theorem)
定理
对已定向的曲面 及其边界曲线 :
- 左边: 沿 的线积分(环量,circulation)
- 右边: 的旋度(curl)在 上的面积分
与格林定理的关系
格林定理是斯托克斯定理在二维情形下的特例。当 是 -平面上的区域 、且 时
安培定律
利用斯托克斯定理,可以将其转化为微分形式 。
import numpy as np
# Stokes 定理数值验证
# F = (-y, x, 0), S: 半径 R=1 的半球面 (z >= 0), C: 单位圆
# curl F = (0, 0, dQ/dx - dP/dy) = (0, 0, 2)
# 面积分: 2 * area(S 投影) = 2 * pi
# 线积分: ∮ F·dr = ∮ (-y dx + x dy) = 2 * 面积(圆) = 2*pi
R = 1.0
# 线积分 (数值)
t = np.linspace(0, 2 * np.pi, 10000)
x_c = R * np.cos(t)
y_c = R * np.sin(t)
dx = np.gradient(x_c, t)
dy = np.gradient(y_c, t)
F_dot_dr = (-y_c) * dx + x_c * dy
line_integral = np.trapz(F_dot_dr, t)
print(f"Line integral ≈ {line_integral:.5f}") # ≈ 2*pi ≈ 6.28318
print(f"2*pi = {2*np.pi:.5f}")
10. 工程与 AI 应用
流体力学 (CFD)
计算流体力学(Computational Fluid Dynamics)中,纳维-斯托克斯(Navier-Stokes)方程以散度和旋度为核心。
不可压缩条件:
麦克斯韦方程组 (电磁学)
| 定律 | 微分形式 | 物理意义 |
|---|---|---|
| 高斯电场定律 | 电荷是电场的源 | |
| 高斯磁场定律 | 不存在磁单极子 | |
| 法拉第定律 | 变化的磁场感应出电场 | |
| 安培-麦克斯韦 | 电流与变化的电场感应出磁场 |
计算机图形学
3D渲染中用于光照计算的法向量(normal vector),与面积分中的 是同一个概念,直接应用于Phong着色、凹凸贴图等技术。
机器学习中的梯度下降法
梯度下降法(gradient descent)沿梯度 的反方向更新参数。
这正是向量微积分中的梯度概念,被直接应用到高维参数空间。
Physics-Informed Neural Networks (PINNs)
PINNs 把物理方程(偏微分方程)纳入损失函数,用自动微分计算向量微积分算子(梯度、散度、旋度)。
其中 例如是 这样的不可压缩条件违反惩罚项。
11. Python 综合实现示例
import numpy as np
import matplotlib.pyplot as plt
from scipy.integrate import dblquad, quad
import sympy as sp
print("=== 向量微积分 Python 计算示例 ===\n")
# --- 1. 梯度计算 ---
x_s, y_s, z_s = sp.symbols('x y z')
f = x_s**3 + y_s**2 * z_s - x_s * y_s
grad = [sp.diff(f, var) for var in (x_s, y_s, z_s)]
print("1. 梯度 (Gradient)")
print(f" f = {f}")
print(f" ∇f = {grad}\n")
# --- 2. 散度计算 ---
P = x_s**2 * y_s
Q = y_s**2 * z_s
R = z_s**2 * x_s
divergence = sp.diff(P, x_s) + sp.diff(Q, y_s) + sp.diff(R, z_s)
print("2. 散度 (Divergence)")
print(f" F = ({P}, {Q}, {R})")
print(f" div F = {divergence}\n")
# --- 3. 旋度计算 ---
curl_x = sp.diff(R, y_s) - sp.diff(Q, z_s)
curl_y = sp.diff(P, z_s) - sp.diff(R, x_s)
curl_z = sp.diff(Q, x_s) - sp.diff(P, y_s)
print("3. 旋度 (Curl)")
print(f" curl F = ({sp.simplify(curl_x)}, {sp.simplify(curl_y)}, {sp.simplify(curl_z)})\n")
# --- 4. 格林定理数值验证 ---
# P = -y, Q = x, 单位圆盘
# 二重积分: ∬ (1 + 1) dA = 2 * pi
result, _ = dblquad(
lambda y, x: 2.0,
-1, 1,
lambda x: -np.sqrt(max(0, 1 - x**2)),
lambda x: np.sqrt(max(0, 1 - x**2))
)
print("4. 格林定理验证")
print(f" 二重积分 ≈ {result:.5f}, 2π ≈ {2*np.pi:.5f}\n")
# --- 5. 可视化 ---
x_arr = np.linspace(-2, 2, 20)
y_arr = np.linspace(-2, 2, 20)
X, Y = np.meshgrid(x_arr, y_arr)
fig, axes = plt.subplots(1, 3, figsize=(15, 5))
# 梯度场
U1 = 2 * X
V1 = 2 * Y
axes[0].quiver(X, Y, U1, V1, color='crimson', alpha=0.7)
axes[0].set_title('Gradient of x²+y²')
# 涡旋场 (curl != 0)
U2 = -Y
V2 = X
axes[1].quiver(X, Y, U2, V2, color='steelblue', alpha=0.7)
axes[1].set_title('Rotational Field (-y, x)')
# 发散场 (source)
U3 = X
V3 = Y
axes[2].quiver(X, Y, U3, V3, color='forestgreen', alpha=0.7)
axes[2].set_title('Source Field (x, y)')
plt.tight_layout()
plt.savefig('vector_fields.png', dpi=120)
plt.show()
12. 小测验
Q1. 标量场 f 的梯度向量 ∇f 相对于等值面(level surface)指向什么方向?
答案:指向等值面的垂直(法线)方向。
解释:梯度向量 ∇f 指向 f 增长最快的方向,这个方向总是垂直于等值面 f = c。由方向导数公式 D_u f = ∇f · u 可知,对于等值面上的切线方向 t,有 D_t f = 0,因此 ∇f ⊥ t。
Q2. 若向量场 F 在所有点上的散度都为 0 (div F = 0),这种流动称为什么?
答案:称为不可压缩流动(incompressible flow),或称为无源(solenoidal)向量场。
解释:div F = ∇·F = 0 意味着单位体积内流体的净流入流出量为零。密度近乎恒定的流体(如水)的流动即属此类,这一条件源自连续性方程(continuity equation)。磁场 B 同样满足 ∇·B = 0,因此也是无源向量场。
Q3. 在格林定理 ∮C P dx + Q dy = ∬D (∂Q/∂x - ∂P/∂y) dA 中,如何求出闭曲线 C 所围内部的面积?
答案:令 P = -y/2、Q = x/2,即可得到 A = (1/2) ∮C (x dy - y dx) 来求出面积。
解释:取 P = -y/2、Q = x/2 时,∂Q/∂x - ∂P/∂y = 1/2 + 1/2 = 1。于是 ∬D 1 dA = A,面积被直接算出。这一方法是测量学(surveying)中仅凭顶点坐标计算多边形面积的鞋带公式(shoelace formula)的基础。
Q4. 在斯托克斯定理 ∮C F·dr = ∬S (∇×F)·n dS 中,若 curl F = 0,线积分等于多少?
答案:等于 0。
解释:若 curl F = ∇×F = 0,则右边的面积分为 0,因此对任意闭合路径的线积分也为 0。这意味着 F 是保守场(conservative field),存在势函数 φ 使得 F = ∇φ。因此功与路径无关,只取决于起点和终点 (∫C F·dr = φ(B) - φ(A))。
Q5. 高斯散度定理在电磁学中如何应用?
答案:用于推导高斯电场定律 ∯S E·dA = Q/ε₀。
解释:将散度定理 ∯S E·dA = ∭V (∇·E) dV 与微分形式的高斯定律 ∇·E = ρ/ε₀ 结合,可得 ∭V (ρ/ε₀) dV = Q_enc/ε₀。也就是说,穿过闭合曲面的总电通量等于内部总电荷量除以 ε₀。据此可以轻松计算具有高度对称性的电荷分布(球、圆柱、平面)所产生的电场。
参考资料
- Kreyszig, E. — Advanced Engineering Mathematics (第10版), Wiley. 向量微积分与工程数学的标准教材。
- MIT OCW 18.02 — Multivariable Calculus (Denis Auroux). ocw.mit.edu
- Stewart, J. — Calculus: Early Transcendentals (第9版), Cengage. 线积分、面积分、向量定理相关章节。
- SciPy Documentation — 用
scipy.integrate模块进行多重积分的数值计算。scipy.org - SymPy Documentation — 符号微分/积分库。sympy.org
- Griffiths, D.J. — Introduction to Electrodynamics (第4版), Cambridge. 麦克斯韦方程组与向量微积分的物理应用。