研一数学基础复习笔记(六):变分法到底在“变”什么?

1. 为什么面试前要看这个问题?

前面几篇主要整理了线性代数相关内容,包括矩阵、分块矩阵、基、特征值和矩阵指数。

这些内容可以帮助我们理解离散系统:

$$ \mathbf{K}\mathbf{u} = \mathbf{F} $$

或者动力系统:

$$ \dot{\mathbf{x}} = \mathbf{A}\mathbf{x} $$

但力学问题最开始往往并不是一个矩阵方程,而是连续体问题。比如杆、梁、板、壳或者三维弹性体,它们的未知量通常是位移函数、应力函数或温度函数。

这时会出现一个更基本的问题:

真实的位移函数到底是怎么确定的?

从微分方程角度看,可以通过平衡方程来确定。
从变分原理角度看,可以通过能量泛函的极值来确定。

这就是变分法的核心思想。

普通函数极值问题是:
找一个数 $x$,使函数 $f(x)$ 取极值。

变分问题是:
找一个函数 $y(x)$,使泛函 $J[y]$ 取极值。

所以变分法“变”的不是一个数,而是一个函数。

这一篇的重点就是理解:

变分法是如何从“泛函取极值”推出“控制微分方程”的。

在力学中,这对应着从最小势能原理推出平衡方程,从 Hamilton 原理推出动力学方程,从弱形式推出有限元方程。


2. 核心概念

2.1 从函数极值说起

在普通微积分中,如果要研究函数 $f(x)$ 的极值,通常会令:

$$ f'(x) = 0 $$

这是因为在极值点附近,函数的一阶变化应该为零。

例如设 $x=a$ 是极值点,则在 $a$ 附近做 Taylor 展开:

$$ f(x)-f(a) = f'(a)(x-a) + \frac{1}{2}f''(a)(x-a)^2 + \cdots $$

如果 $a$ 是极值点,那么对任意足够小的扰动 $x-a$,函数值的一阶变化都不应该导致函数继续增大或减小。

因此必须有:

$$ f'(a) = 0 $$

这就是普通函数极值的基本条件。

变分法其实是这个思想的推广。

普通极值问题中,变量是一个数。
变分问题中,变量是一个函数。


2.2 什么是泛函?

普通函数是把一个数映射成一个数:

$$ x \mapsto f(x) $$

而泛函是把一个函数映射成一个数:

$$ y(x) \mapsto J[y] $$

例如:

$$ J[y] = \int_{x_0}^{x_1} F(x,y,y')\,dx $$

这里 $J$ 的输入不是某一个数,而是整个函数 $y(x)$。

因此 $J[y]$ 称为泛函。

在力学中,能量通常就是泛函。比如总势能、作用量、混合能等,都是某个未知函数的函数。

举例来说,如果 $w(z)$ 是杆件的轴向位移函数,那么总势能可以写成:

$$ S[w] = \int_0^L \left[\frac{1}{2}kw^2 + \frac{1}{2}EF(w')^2 \right] dz - Pw(L) $$

这里 $S$ 不是关于某一个数的函数,而是关于整个位移函数 $w(z)$ 的泛函。


2.3 变分到底是什么?

变分可以理解为对函数进行一个小扰动。

假设真实函数是 $y(x)$,给它加上一个小扰动:

$$ y(x,\varepsilon) = y(x) + \varepsilon \eta(x) $$

其中:

  • $\varepsilon$ 是一个很小的参数;
  • $\eta(x)$ 是任意扰动函数;
  • 如果端点固定,则要求 $\eta(x_0)=0$,$\eta(x_1)=0$。

当 $\varepsilon$ 变化时,$y(x,\varepsilon)$ 就是一族函数。

把它代入泛函:

$$ J(\varepsilon) = \int_{x_0}^{x_1} F(x,y(x,\varepsilon),y'(x,\varepsilon))\,dx $$

原来的泛函极值问题,就转化成了普通函数 $J(\varepsilon)$ 的极值问题。

如果 $y(x)$ 是使泛函取极值的函数,那么在 $\varepsilon=0$ 处应该满足:

$$ \frac{dJ}{d\varepsilon}\bigg|_{\varepsilon=0} = 0 $$

这就是一阶变分为零:

$$ \delta J = 0 $$

所以可以这样理解:

变分就是研究函数发生任意微小扰动时,泛函的一阶变化。


2.4 欧拉-拉格朗日方程

考虑泛函:

$$ J[y] = \int_{x_0}^{x_1} F(x,y,y')\,dx $$

其中 $y’=dy/dx$。

如果端点固定:

$$ y(x_0) = y_0,\quad y(x_1) = y_1 $$

则满足泛函极值的函数 $y(x)$ 应该满足欧拉-拉格朗日方程:

$$ \frac{\partial F}{\partial y} - \frac{d}{dx}\left(\frac{\partial F}{\partial y'}\right) = 0 $$

这个方程非常重要。

它说明:

如果一个函数使泛函取极值,那么这个函数必须满足一个对应的微分方程。

也就是说,变分法可以从能量形式推出控制方程。


3. 关键公式

3.1 泛函的一阶变分

对泛函:

$$ J[y] = \int_{x_0}^{x_1} F(x,y,y')\,dx $$

进行变分:

$$ \delta J = \int_{x_0}^{x_1} \delta F\,dx $$

由链式法则:

$$ \delta F = \frac{\partial F}{\partial y}\delta y + \frac{\partial F}{\partial y'}\delta y' $$

所以:

$$ \delta J = \int_{x_0}^{x_1} \left(\frac{\partial F}{\partial y}\delta y + \frac{\partial F}{\partial y'}\delta y'\right) dx $$

又因为:

$$ \delta y' = \frac{d}{dx}(\delta y) $$

所以:

$$ \delta J = \int_{x_0}^{x_1} \left[\frac{\partial F}{\partial y}\delta y + \frac{\partial F}{\partial y'}\frac{d}{dx}(\delta y)\right] dx $$

3.2 分部积分

上式中第二项含有 $\delta y$ 的导数。为了利用 $\delta y$ 的任意性,需要通过分部积分把导数转移到另一项上:

$$ \int_{x_0}^{x_1} \frac{\partial F}{\partial y'}\frac{d}{dx}(\delta y)\,dx = \left.\frac{\partial F}{\partial y'}\delta y\right|_{x_0}^{x_1} - \int_{x_0}^{x_1} \delta y \frac{d}{dx}\left(\frac{\partial F}{\partial y'}\right) dx $$

代回去可得:

$$ \delta J = \int_{x_0}^{x_1} \delta y \left[ \frac{\partial F}{\partial y} - \frac{d}{dx}\left(\frac{\partial F}{\partial y'}\right) \right] dx + \left.\frac{\partial F}{\partial y'}\delta y\right|_{x_0}^{x_1} $$

如果端点固定,则:

$$ \delta y(x_0)=0,\quad \delta y(x_1)=0 $$

边界项消失,因此:

$$ \delta J = \int_{x_0}^{x_1} \delta y \left[ \frac{\partial F}{\partial y} - \frac{d}{dx}\left(\frac{\partial F}{\partial y'}\right) \right] dx $$

因为 $\delta y$ 在区间内部具有任意性,要使 $\delta J=0$,必须有:

$$ \frac{\partial F}{\partial y} - \frac{d}{dx}\left(\frac{\partial F}{\partial y'}\right) = 0 $$

这就是欧拉-拉格朗日方程。


3.3 变分过程的核心逻辑

整个推导过程可以概括为:

$$ \delta J = 0 \quad \Longrightarrow \quad \int_{x_0}^{x_1}\delta y(\cdots)\,dx = 0 \quad \Longrightarrow \quad (\cdots)=0 $$

其中最关键的是:

因为 $\delta y$ 是任意的,所以括号中的表达式必须为零。

这一步是变分法的核心。

它把“泛函极值条件”变成了“微分方程”。


4. 和力学/数值计算的联系

4.1 最小势能原理

讲义中用弹性支撑轴向拉杆作为例子。

设杆长为 $L$,左端固定,右端受拉力 $P$。杆的轴向位移为 $w(z)$,轴向刚度为 $EF$,并受到刚度为 $k$ 的分布弹簧支撑。

应变为:

$$ \varepsilon_z = \frac{dw}{dz} = w' $$

轴力为:

$$ N(z) = EFw' $$

弹簧支撑力为:

$$ R(z) = kw(z) $$

杆件的总势能可以写成:

$$ S[w] = \int_0^L \left[\frac{1}{2}kw^2 + \frac{1}{2}EF(w')^2\right] dz - Pw(L) $$

其中:

  • 第一项 $\frac{1}{2}kw^2$ 是弹簧势能密度;
  • 第二项 $\frac{1}{2}EF(w’)^2$ 是杆件拉伸变形能密度;
  • $-Pw(L)$ 是外力势能。

最小势能原理说:

在所有满足边界条件的可能位移中,使总势能取最小值的位移就是真实位移。

这就是力学中的变分思想。


4.2 从总势能推出平衡微分方程

对总势能进行变分:

$$ \delta S = \int_0^L \left(kw\delta w + EFw'\delta w'\right) dz - P\delta w(L) $$

对第二项进行分部积分:

$$ \int_0^L EFw'\delta w'\,dz = \left.EFw'\delta w\right|_0^L - \int_0^L EFw''\delta w\,dz $$

于是:

$$ \delta S = \int_0^L \delta w(kw - EFw'')\,dz + \left.EFw'\delta w\right|_0^L - P\delta w(L) $$

左端固定,因此:

$$ w(0)=0,\quad \delta w(0)=0 $$

右端自然边界条件为:

$$ EFw'(L)=P $$

因此边界项可以抵消,剩下:


研一数学基础复习笔记(六):变分法到底在“变”什么?
http://zncddh.cn/2026/05/03/研一数学基础复习笔记(六):变分法到底在“变”什么?/
作者
creativity
发布于
2026年5月3日
许可协议