跳转至

高等数学(五)多元函数微积分

章节概述

多元函数微积分研究多个自变量的函数的极限、连续、导数和积分。本章将介绍多元函数的基本概念、偏导数、方向导数、梯度和重积分。

学习目标

  • 理解多元函数的概念
  • 掌握偏导数的计算方法
  • 理解方向导数和梯度的概念
  • 学会计算重积分
  • 了解多元函数微积分的应用

(一)多元函数

多元函数的定义

多元函数是指有多个自变量的函数,如:

z = f(x, y)
w = f(x, y, z)

二元函数的极限

函数 f(x, y) 在点 (x₀, y₀) 处的极限定义为:

lim((x,y)→(x₀,y₀)) f(x, y) = L

重要说明:二元函数的极限存在要求沿任意路径趋近时极限都相同。

二元函数的连续性

函数 f(x, y) 在点 (x₀, y₀) 处连续,当且仅当: 1. f(x₀, y₀) 存在 2. lim((x,y)→(x₀,y₀)) f(x, y) 存在 3. lim((x,y)→(x₀,y₀)) f(x, y) = f(x₀, y₀)

多元函数的偏导数

高阶偏导数:

∂²f/∂x² = ∂(∂f/∂x)/∂x
∂²f/∂x∂y = ∂(∂f/∂y)/∂x
∂²f/∂y∂x = ∂(∂f/∂x)/∂y
∂²f/∂y² = ∂(∂f/∂y)/∂y

克莱罗定理:如果二阶混合偏导数连续,则 ∂²f/∂x∂y = ∂²f/∂y∂x

(二)偏导数

偏导数的定义

函数 z = f(x, y) 对 x 的偏导数为:

∂f/∂x = lim(Δx→0) [f(x+Δx, y) - f(x, y)] / Δx

同理,对 y 的偏导数为:

∂f/∂y = lim(Δy→0) [f(x, y+Δy) - f(x, y)] / Δy

计算方法

计算偏导数时,将其他变量视为常数,只对目标变量求导。

全微分

函数 z = f(x, y) 的全微分为:

dz = (∂f/∂x)dx + (∂f/∂y)dy

可微的充分条件:如果偏导数 ∂f/∂x 和 ∂f/∂y 在点 (x₀, y₀) 处连续,则函数在该点可微。

复合函数的偏导数(链式法则)

设 z = f(u, v),u = φ(x, y),v = ψ(x, y),则:

∂z/∂x = (∂f/∂u)(∂u/∂x) + (∂f/∂v)(∂v/∂x)
∂z/∂y = (∂f/∂u)(∂u/∂y) + (∂f/∂v)(∂v/∂y)

隐函数的偏导数

对于隐函数 F(x, y) = 0,有:

dy/dx = -Fₓ/Fᵧ

对于隐函数 F(x, y, z) = 0,有:

∂z/∂x = -Fₓ/Fz
∂z/∂y = -Fᵧ/Fz

实例分析

实例1:求 f(x, y) = x² + y² 的偏导数

import math

def f(x, y):
    """函数 f(x, y) = x² + y²"""
    return x**2 + y**2

def partial_x(func, x, y, h=1e-6):
    """对 x 的偏导数"""
    return (func(x + h, y) - func(x - h, y)) / (2 * h)

def partial_y(func, x, y, h=1e-6):
    """对 y 的偏导数"""
    return (func(x, y + h) - func(x, y - h)) / (2 * h)

x, y = 2, 3
fx = partial_x(f, x, y)
fy = partial_y(f, x, y)

print(f"∂f/∂x 在 (2, 3) 处: {fx:.4f} (理论值: 4.0)")
print(f"∂f/∂y 在 (2, 3) 处: {fy:.4f} (理论值: 6.0)")

实例2:求 f(x, y) = sin(xy) 的偏导数

def f2(x, y):
    """函数 f(x, y) = sin(xy)"""
    return math.sin(x * y)

x, y = 1, 2
fx = partial_x(f2, x, y)
fy = partial_y(f2, x, y)

print(f"∂f/∂x 在 (1, 2) 处: {fx:.4f}")
print(f"∂f/∂y 在 (1, 2) 处: {fy:.4f}")

(三)方向导数与梯度

方向导数的定义

函数 f(x, y) 在点 (x₀, y₀) 沿方向 u = (cos α, cos β) 的方向导数为:

Dᵤf = ∂f/∂x · cos α + ∂f/∂y · cos β

梯度的定义

函数 f(x, y) 的梯度为:

∇f = (∂f/∂x, ∂f/∂y)

梯度的性质

  1. 梯度方向是函数增长最快的方向
  2. 梯度的长度表示最大增长率
  3. 梯度垂直于等值线(面)

梯度的应用

1. 梯度下降法(最优化)

xₙ₊₁ = xₙ - α∇f(xₙ)
其中 α 是学习率。

2. 方向导数与梯度的关系

Dᵤf = ∇f · u = |∇f| · cos θ
其中 θ 是梯度方向与指定方向的夹角。

def gradient(func, x, y, h=1e-6):
    """
    计算函数的梯度

    参数:
        func: 二元函数
        x, y: 点的坐标
        h: 步长

    返回:
        tuple: (∂f/∂x, ∂f/∂y)
    """
    fx = partial_x(func, x, y, h)
    fy = partial_y(func, x, y, h)
    return (fx, fy)

def gradient_descent(func, x0, y0, alpha=0.01, iterations=1000):
    """
    梯度下降法寻找函数最小值

    参数:
        func: 二元函数
        x0, y0: 初始点
        alpha: 学习率
        iterations: 迭代次数

    返回:
        tuple: (最小值点, 最小值)
    """
    x, y = x0, y0

    for _ in range(iterations):
        grad = gradient(func, x, y)
        x -= alpha * grad[0]
        y -= alpha * grad[1]

    return (x, y), func(x, y)

def directional_derivative(func, x, y, u1, u2):
    """
    计算方向导数

    参数:
        func: 二元函数
        x, y: 点的坐标
        u1, u2: 方向向量

    返回:
        float: 方向导数
    """
    grad = gradient(func, x, y)
    return grad[0] * u1 + grad[1] * u2

实例分析

实例:计算 f(x, y) = x² + y² 在 (1, 1) 处沿方向 (1/√2, 1/√2) 的方向导数

x, y = 1, 1
u1, u2 = 1/math.sqrt(2), 1/math.sqrt(2)

grad = gradient(f, x, y)
du = directional_derivative(f, x, y, u1, u2)

print(f"梯度: ({grad[0]:.4f}, {grad[1]:.4f})")
print(f"方向导数: {du:.4f}")

(四)重积分

二重积分的定义

函数 f(x, y) 在区域 D 上的二重积分为:

∬ᴰ f(x, y) dσ

计算方法

1. 直角坐标系

将二重积分转化为累次积分:

∬ᴰ f(x, y) dxdy = ∫[a, b] ∫[y₁(x), y₂(x)] f(x, y) dy dx

2. 极坐标系

对于圆形区域或被积函数含有 x²+y² 时,使用极坐标更方便:

∬ᴰ f(x, y) dxdy = ∬ f(r cos θ, r sin θ) · r dr dθ

3. 换元法

设变换 x = x(u, v), y = y(u, v),雅可比行列式为:

J = |∂(x,y)/∂(u,v)| = |∂x/∂u  ∂x/∂v|
                    |∂y/∂u  ∂y/∂v|

则:

∬ f(x, y) dxdy = ∬ f(x(u,v), y(u,v)) · |J| du dv

三重积分

直角坐标系:

∭_Ω f(x, y, z) dxdydz

柱面坐标系(适合柱形区域):

x = r cos θ, y = r sin θ, z = z
dxdydz = r dr dθ dz

球面坐标系(适合球形区域):

x = r sin φ cos θ, y = r sin φ sin θ, z = r cos φ
dxdydz = r² sin φ dr dφ dθ

数值计算方法

def double_integral(func, x_range, y_range, nx=100, ny=100):
    """
    数值计算二重积分

    参数:
        func: 被积函数
        x_range: x 的范围 [a, b]
        y_range: y 的范围 [c, d]
        nx: x 方向的分割数
        ny: y 方向的分割数

    返回:
        float: 积分的近似值
    """
    a, b = x_range
    c, d = y_range

    hx = (b - a) / nx
    hy = (d - c) / ny

    result = 0
    for i in range(nx):
        x = a + (i + 0.5) * hx
        for j in range(ny):
            y = c + (j + 0.5) * hy
            result += func(x, y) * hx * hy

    return result

实例分析

实例:计算 ∬ᴰ (x² + y²) dxdy,其中 D = [0, 1] × [0, 1]

def integrand(x, y):
    """被积函数 f(x, y) = x² + y²"""
    return x**2 + y**2

result = double_integral(integrand, [0, 1], [0, 1])
print(f"∬ᴰ (x² + y²) dxdy ≈ {result:.6f}")
print(f"理论值: 2/3 ≈ {2/3:.6f}")

实战练习

练习1:计算偏导数

求 f(x, y) = e^(xy) + sin x 的偏导数

def f_exercise(x, y):
    """函数 f(x, y) = e^(xy) + sin x"""
    return math.exp(x*y) + math.sin(x)

x, y = 1, 2
fx = partial_x(f_exercise, x, y)
fy = partial_y(f_exercise, x, y)

print(f"∂f/∂x 在 (1, 2) 处: {fx:.6f}")
print(f"∂f/∂y 在 (1, 2) 处: {fy:.6f}")

练习2:计算二重积分

计算 ∬ᴰ sin(x + y) dxdy,其中 D = [0, π] × [0, π]

def integrand2(x, y):
    """被积函数 f(x, y) = sin(x + y)"""
    return math.sin(x + y)

result = double_integral(integrand2, [0, math.pi], [0, math.pi])
print(f"∬ᴰ sin(x + y) dxdy ≈ {result:.6f}")

练习3:梯度下降法

用梯度下降法求 f(x, y) = x² + y² 的最小值

def f_optimize(x, y):
    """目标函数 f(x, y) = x² + y²"""
    return x**2 + y**2

# 使用梯度下降法
(x_min, y_min), f_min = gradient_descent(f_optimize, 5, 5, alpha=0.1, iterations=100)
print(f"梯度下降法结果:")
print(f"最小值点: ({x_min:.6f}, {y_min:.6f})")
print(f"最小值: {f_min:.6f}")
print(f"理论最小值: (0, 0), f = 0")

练习4:极坐标下的二重积分

计算 ∬ (x² + y²) dxdy,其中 D 是单位圆

def polar_double_integral(func, r_range, theta_range, nr=100, ntheta=100):
    """
    极坐标下的二重积分

    参数:
        func: 被积函数 f(r, theta)
        r_range: r 的范围 [r_min, r_max]
        theta_range: theta 的范围 [theta_min, theta_max]
    """
    r_min, r_max = r_range
    theta_min, theta_max = theta_range

    dr = (r_max - r_min) / nr
    dtheta = (theta_max - theta_min) / ntheta

    result = 0
    for i in range(nr):
        r = r_min + (i + 0.5) * dr
        for j in range(ntheta):
            theta = theta_min + (j + 0.5) * dtheta
            result += func(r, theta) * r * dr * dtheta

    return result

# 计算 ∬ (x² + y²) dxdy = ∬ r² · r dr dθ
result = polar_double_integral(lambda r, theta: r**2, [0, 1], [0, 2*math.pi])
print(f"极坐标积分: ∬ (x² + y²) dxdy ≈ {result:.6f}")
print(f"理论值: π/2 ≈ {math.pi/2:.6f}")

章节小结

本章介绍了多元函数微积分的基本概念:

  1. 多元函数:理解多元函数的定义和连续性
  2. 偏导数:掌握偏导数的计算方法,理解全微分
  3. 方向导数与梯度:理解概念,掌握计算方法
  4. 重积分:学会计算二重积分和三重积分
  5. 坐标变换:掌握极坐标、柱面坐标、球面坐标下的积分

多元函数微积分是处理多变量问题的重要工具。

常见计算公式总结

概念 公式 说明
偏导数 ∂f/∂x, ∂f/∂y 对单个变量求导
全微分 dz = (∂f/∂x)dx + (∂f/∂y)dy 近似计算
梯度 ∇f = (∂f/∂x, ∂f/∂y) 最速上升方向
方向导数 Dᵤf = ∇f · u 沿指定方向的变化率
二重积分 ∬ f(x,y) dxdy 曲顶柱体体积

下一步

继续学习第六章:微分方程,学习常微分方程的求解方法。


重点提醒: - 偏导数的计算是多元函数微积分的基础 - 梯度方向是函数增长最快的方向 - 重积分可以通过累次积分计算 - 多元函数微积分在优化和物理中有广泛应用