外观
Frechet 导数和 Gateaux 导数
在有限元、PDE 约束优化和伴随方法里,经常会看到“一阶变分”“线性化”“方向导数”“Jacobian”等说法。它们背后常用的两个概念是 Gateaux 导数和 Frechet 导数。
粗略地说:
- Gateaux 导数关心沿某个方向的变化率;
- Frechet 导数关心映射在一点附近能否被一个有界线性算子统一近似。
定义和区别
设 X,Y 是赋范线性空间,F:X→Y。给定 u∈X 和方向 v∈X,如果极限
t→0limtF(u+tv)−F(u)
存在,就称它为 F 在 u 处沿方向 v 的 Gateaux 方向导数,记作
δF(u)[v]=dtdF(u+tv)t=0.
也就是说,Gateaux 导数把问题限制在直线
ϕ(t)=F(u+tv)
上,再对一元函数 ϕ 在 t=0 处求导。定义本身只要求固定方向上的一维极限存在。
相比之下,Frechet 导数不是只看某一条直线,而是要求一个统一的一阶近似。这个要求和有限维可微的形式一致。
设 f:Rn→R。如果 f 在 x 处可微,那么对小扰动 h 有
f(x+h)=f(x)+∇f(x)⋅h+o(∥h∥).
这里的核心结构是
函数增量=线性主部+高阶小量.
Frechet 导数就是把这个结构推广到 Banach 空间或 Hilbert 空间。若存在有界线性算子 L:X→Y,使得
F(u+h)=F(u)+Lh+o(∥h∥X),h→0,
等价地,
∥h∥X→0lim∥h∥X∥F(u+h)−F(u)−Lh∥Y=0,
则称 F 在 u 处 Frechet 可微,L 称为 F 在 u 处的 Frechet 导数,记作
F′(u)=L.
两者的关键差别在“逐方向”和“统一”。Gateaux 导数只看每个固定方向 v 上的极限;Frechet 导数要求同一个有界线性算子 L 同时近似所有足够小的扰动,并且余项满足
F(u+h)−F(u)−Lh=o(∥h∥).
所以可以把两者理解为:
Gateaux 导数回答“沿这个方向的斜率是多少”;Frechet 导数回答“这个映射在这个点附近有没有真正的一阶线性近似”。
强弱关系
Frechet 可微可以推出 Gateaux 方向导数存在。如果 F′(u)=L,则对任意方向 v,
δF(u)[v]=F′(u)v=Lv.
这是因为由 Frechet 可微可写
F(u+h)=F(u)+Lh+r(h),∥h∥X∥r(h)∥Y→0.
取 h=tv,就有
tF(u+tv)−F(u)=Lv+tr(tv),
而最后一项随 t→0 消失。因此方向导数存在,并且正好等于 Lv。
反过来不成立:映射可能沿每条直线都有方向导数,但这些方向导数拼不成一个稳定的线性近似。例如
f(x,y)=⎩⎨⎧x4+y2x2y,0,(x,y)=(0,0),(x,y)=(0,0).
沿直线 (x,y)=t(a,b),
tf(ta,tb)−f(0,0)=t2a4+b2a2b.
若 b=0,极限为 a2/b;若 b=0,极限为 0。也就是说,在原点沿任意方向的方向导数都存在,但由此得到的方向导数不是方向 (a,b) 的线性函数,因此不能作为 Frechet 导数。
在 PDE 和有限元里,这一区别很重要。组装矩阵、解线性系统、做 Newton 迭代或伴随计算时,需要的是能统一作用在任意增量上的线性算子,而不只是某条方向上的斜率。
变分和数值方法
变分问题里常写
δJ(u)[u~]=dtdJ(u+tu~)t=0.
这里的 u~ 是对当前状态 u 的扰动方向。若 J Frechet 可微,则
δJ(u)[u~]=J′(u)u~.
对残差算子 F(u,q)=0,若状态和参数分别扰动为
u↦u+tu~,q↦q+tδq,
则一阶变分可写成
δF(u,q)[u~,δq]=dtdF(u+tu~,q+tδq)t=0.
如果 F 对两个变量 Frechet 可微,就进一步有
δF(u,q)[u~,δq]=Fu(u,q)u~+Fq(u,q)δq.
离散以后,Fu 对应常说的 Jacobian 或 tangent matrix,Fq 对应参数到残差的灵敏度矩阵。
这也是数值方法更偏爱 Frechet 导数的原因。比如非线性方程
F(u)=0
的 Newton 迭代需要解
F′(uk)δu=−F(uk),
再更新
uk+1=uk+δu.
这里的 F′(uk) 必须能作用在任意增量 δu 上,而不只是给出某个方向上的斜率。伴随方法也是类似:若目标函数为 J(u,q),约束为 F(u,q)=0,则状态对参数的灵敏度满足
Fuu~+Fqδq=0.
为了避免对每个参数方向都直接求 u~,可以引入伴随变量,把梯度计算转化为包含 Fu∗ 的伴随方程。这个过程成立的前提,是 Fu 具有清楚的线性算子意义。
因此工程计算里虽然常用 Gateaux 方向导数写一阶变分,但真正落到矩阵和算法上,通常默认这个变分来自 Frechet 导数,或者至少具有足够好的线性和连续性质。
这套语言也能解释“导数”“梯度”和“Jacobian”的关系。在有限维情形里:
- 标量函数 f:Rn→R 的 Frechet 导数是线性泛函,通过欧氏内积可表示成梯度 ∇f;
- 向量函数 F:Rn→Rm 的 Frechet 导数可表示成 Jacobian 矩阵;
- Gateaux 导数就是 Jacobian 作用在某个方向上:
δF(x)[v]=F′(x)v=JF(x)v.
在 Hilbert 空间里,如果线性泛函 J′(u) 连续,那么由 Riesz 表示定理,可以找到一个梯度 ∇J(u),使得
J′(u)v=(∇J(u),v).
所以“导数”和“梯度”不是一回事:导数本质上是线性泛函或线性算子;梯度是借助内积表示出来的空间元素。换一个内积,梯度的具体表达也会变,这也是优化里需要注意的一点。
小结
| 概念 | Gateaux 导数 | Frechet 导数 |
|---|---|---|
| 核心问题 | 沿某个方向的变化率 | 整体的一阶线性近似 |
| 定义方式 | 一维极限 | 带余项估计的线性近似 |
| 方向控制 | 逐方向 | 对所有小扰动统一控制 |
| 结果 | 方向导数 δF(u)[v] | 有界线性算子 F′(u) |
| 数值含义 | 常用于推导变分 | 常对应 Jacobian 或 tangent matrix |
一句话概括:
Gateaux 导数是沿方向看的导数;Frechet 导数是能否线性化的导数。
版权所有
版权归属:Guisong Wu