<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel>
<title>Conan Xu · 博客</title>
<link>https://conanxu-math.github.io/</link>
<description>数学、代码与持续学习。Mathematics, code, and lifelong learning.</description>
<language>zh-CN</language>
<atom:link href="https://conanxu-math.github.io/feed.xml" rel="self" type="application/rss+xml"/>
<item><title>从梯度到变分：一阶条件、约束与离散化</title><link>https://conanxu-math.github.io/blog/optimization-variations-and-discretization/</link><guid>https://conanxu-math.github.io/blog/optimization-variations-and-discretization/</guid><pubDate>Wed, 14 Oct 2026 00:00:00 +0800</pubDate><description>&lt;p&gt;在有限维优化中，我们经常写下 \(\nabla f(x)=0\)。到了变分法，条件变成 \(\delta\mathcal J/\delta x=0\)，随后又出现 Euler–Lagrange 方程。它们究竟是什么关系？约束优化中的 KKT 条件又该放在哪里？&lt;/p&gt;

&lt;p&gt;理解这几个对象，可以从同一个动作开始：&lt;strong&gt;选定一个候选对象，沿允许的方向作小扰动，再看目标的一阶变化。&lt;/strong&gt; 候选对象可以是向量，也可以是一整条函数。对象空间改变了，一阶条件的表达方式也随之改变。&lt;/p&gt;

&lt;p&gt;这篇笔记沿着这条主线，把方向导数、第一变分、Euler–Lagrange、约束乘子和 Galerkin 离散化连接起来。&lt;/p&gt;

&lt;h2 id=&quot;1-共同起点是允许扰动的一阶变化&quot;&gt;1. 共同起点是允许扰动的一阶变化&lt;/h2&gt;

&lt;p&gt;设一个扰动方向为 \(h\)，并且对正负足够小的 \(\varepsilon\)，\(x+\varepsilon h\) 都是允许的候选对象。如果 \(x^\star\) 是局部极值点，那么一元函数&lt;/p&gt;

\[\varepsilon\longmapsto f(x^\star+\varepsilon h)\]

&lt;p&gt;在 \(\varepsilon=0\) 处也取得局部极值。因此它的导数为零：&lt;/p&gt;

\[Df(x^\star)[h]=0.\]

&lt;p&gt;当这个结论对所有允许方向成立时，就得到驻点条件。这里的“正负扰动都允许”很关键：在不等式约束的边界上，可行方向可能只有一侧，一阶条件就不一定是等式。&lt;/p&gt;

&lt;p&gt;整条推导可以按四步理解：&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;选定候选对象所在的空间。&lt;/li&gt;
  &lt;li&gt;明确允许的扰动方向。&lt;/li&gt;
  &lt;li&gt;计算目标的一阶变化。&lt;/li&gt;
  &lt;li&gt;要求该变化满足相应的一阶最优性条件。&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;驻点条件通常是局部最优的必要条件。要进一步判定最小值，还需要凸性、二阶条件等信息。&lt;/p&gt;

&lt;h2 id=&quot;2-有限维优化为什么得到梯度为零&quot;&gt;2. 有限维优化为什么得到梯度为零&lt;/h2&gt;

&lt;p&gt;考虑可微的无约束问题&lt;/p&gt;

\[\min_{x\in\mathbb R^n} f(x).\]

&lt;p&gt;对任意 \(h\in\mathbb R^n\)，定义&lt;/p&gt;

\[Df(x)[h]
=
\left.
\frac{\mathrm d}{\mathrm d\varepsilon}
f(x+\varepsilon h)
\right|_{\varepsilon=0}.\]

&lt;p&gt;在欧氏内积下，导数可以写成&lt;/p&gt;

\[Df(x)[h]=\nabla f(x)^\top h.\]

&lt;p&gt;如果 \(x^\star\) 是局部极小点，那么&lt;/p&gt;

\[\nabla f(x^\star)^\top h=0,
\qquad \forall h\in\mathbb R^n.\]

&lt;p&gt;取 \(h=\nabla f(x^\star)\)，便得到&lt;/p&gt;

\[\|\nabla f(x^\star)\|^2=0,
\qquad
\boxed{\nabla f(x^\star)=0}.\]

&lt;p&gt;比“梯度为零”更基本的说法是 &lt;strong&gt;\(Df(x^\star)=0\)&lt;/strong&gt;。导数 \(Df(x)\) 是作用在方向 \(h\) 上的线性泛函；梯度则是借助内积对这个泛函作出的向量表示。&lt;/p&gt;

&lt;h2 id=&quot;3-变分法把优化对象换成整个函数&quot;&gt;3. 变分法把优化对象换成整个函数&lt;/h2&gt;

&lt;p&gt;现在让候选对象是一整条函数 \(x(\cdot)\)，目标是一个泛函：&lt;/p&gt;

\[\mathcal J[x]\in\mathbb R.\]

&lt;p&gt;这时需要区分三个符号：&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;符号&lt;/th&gt;
      &lt;th&gt;含义&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;\(t\)&lt;/td&gt;
      &lt;td&gt;函数内部的独立坐标，常表示时间或空间位置&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;\(x(t)\)&lt;/td&gt;
      &lt;td&gt;函数在位置 \(t\) 的取值&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;\(x(\cdot)\)&lt;/td&gt;
      &lt;td&gt;作为整体的函数，即优化问题的一个候选对象&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;令 \(\mathcal A\) 表示候选函数集合，\(V\) 表示允许扰动的线性空间。先考虑仿射形式&lt;/p&gt;

\[\mathcal A=x_b+V.\]

&lt;p&gt;这里 \(x_b\) 是一个固定的可行函数。它可以承担非零边界值，而扰动 \(\eta\in V\) 保持边界条件。对 \(x\in\mathcal A\) 作扰动：&lt;/p&gt;

\[x_\varepsilon(t)=x(t)+\varepsilon\eta(t).\]

&lt;p&gt;假设 \(\mathcal J\) 对这些扰动 Fréchet 可微，其第一变分为&lt;/p&gt;

\[\delta\mathcal J[x;\eta]
:=
D\mathcal J[x][\eta]
=
\left.
\frac{\mathrm d}{\mathrm d\varepsilon}
\mathcal J[x+\varepsilon\eta]
\right|_{\varepsilon=0}.\]

&lt;p&gt;局部极值点的一阶条件是&lt;/p&gt;

\[\boxed{
D\mathcal J[x^\star][\eta]=0,
\qquad \forall\eta\in V.
}\]

&lt;p&gt;它与有限维的 \(Df(x^\star)[h]=0\) 具有相同结构。&lt;/p&gt;

&lt;h3 id=&quot;第一变分与泛函导数的区别&quot;&gt;第一变分与泛函导数的区别&lt;/h3&gt;

&lt;p&gt;首先得到的对象是&lt;/p&gt;

\[D\mathcal J[x]\in V^*,\]

&lt;p&gt;即扰动空间上的连续线性泛函。如果 \(V\) 是 Hilbert 空间，Riesz 表示给出相应的梯度：&lt;/p&gt;

\[D\mathcal J[x][\eta]
=
\langle\operatorname{grad}_V\mathcal J[x],\eta\rangle_V.\]

&lt;p&gt;梯度因此依赖所选内积，而零导数这个驻点条件不依赖它的表示方式。&lt;/p&gt;

&lt;p&gt;在常见的 \(L^2\) 配对下，如果存在 \(g\in L^2\) 满足&lt;/p&gt;

\[D\mathcal J[x][\eta]
=
\int_{t_0}^{t_1}g(t)\eta(t)\,\mathrm dt,
\qquad \forall\eta\in V,\]

&lt;p&gt;就把这个代表函数记作&lt;/p&gt;

\[g(t)=\frac{\delta\mathcal J}{\delta x}(t).\]

&lt;p&gt;当 \(V\) 在 \(L^2\) 中稠密时，对所有扰动第一变分为零便等价于 \(g=0\) 几乎处处。固定端点问题中的光滑、紧支撑扰动就足以作出这样的判断。&lt;/p&gt;

&lt;p&gt;一般的函数空间导数未必能由一个普通的 \(L^2\) 函数表示。遇到这种情况，可以继续使用 \(D\mathcal J[x][\eta]\) 或弱形式。&lt;/p&gt;

&lt;h2 id=&quot;4-从第一变分推导-eulerlagrange-方程&quot;&gt;4. 从第一变分推导 Euler–Lagrange 方程&lt;/h2&gt;

&lt;p&gt;考虑标量函数的积分型泛函&lt;/p&gt;

\[\mathcal J[x]
=
\int_{t_0}^{t_1}
\mathcal L\bigl(t,x(t),\dot x(t)\bigr)\,\mathrm dt,
\qquad
\dot x=\frac{\mathrm dx}{\mathrm dt}.\]

&lt;p&gt;设 \(\mathcal L\) 为 \(C^2\)，端点固定：&lt;/p&gt;

\[x(t_0)=a,\qquad x(t_1)=b.\]

&lt;p&gt;可以在满足这些端点条件的 \(C^1\) 函数中考虑极值问题。允许的扰动满足&lt;/p&gt;

\[\eta(t_0)=\eta(t_1)=0.\]

&lt;p&gt;若所讨论的极值函数进一步属于 \(C^2\)，可以进行下面的经典推导：&lt;/p&gt;

\[\begin{aligned}
\delta\mathcal J[x;\eta]
&amp;amp;=
\left.
\frac{\mathrm d}{\mathrm d\varepsilon}
\int_{t_0}^{t_1}
\mathcal L(t,x+\varepsilon\eta,\dot x+\varepsilon\dot\eta)
\,\mathrm dt
\right|_{\varepsilon=0}
\\
&amp;amp;=
\int_{t_0}^{t_1}
\left(
\frac{\partial\mathcal L}{\partial x}\eta
+
\frac{\partial\mathcal L}{\partial\dot x}\dot\eta
\right)\,\mathrm dt.
\end{aligned}\]

&lt;p&gt;对含有 \(\dot\eta\) 的项分部积分：&lt;/p&gt;

\[\begin{aligned}
\int_{t_0}^{t_1}
\frac{\partial\mathcal L}{\partial\dot x}\dot\eta\,\mathrm dt
&amp;amp;=
\left[
\frac{\partial\mathcal L}{\partial\dot x}\eta
\right]_{t_0}^{t_1}
\\
&amp;amp;\quad-
\int_{t_0}^{t_1}
\frac{\mathrm d}{\mathrm dt}
\left(\frac{\partial\mathcal L}{\partial\dot x}\right)
\eta\,\mathrm dt.
\end{aligned}\]

&lt;p&gt;固定端点使边界项消失，于是&lt;/p&gt;

\[\delta\mathcal J[x;\eta]
=
\int_{t_0}^{t_1}
\left[
\frac{\partial\mathcal L}{\partial x}
-
\frac{\mathrm d}{\mathrm dt}
\left(\frac{\partial\mathcal L}{\partial\dot x}\right)
\right]\eta\,\mathrm dt.\]

&lt;p&gt;该式必须对所有允许的扰动为零。由变分基本引理，&lt;/p&gt;

\[\boxed{
\frac{\partial\mathcal L}{\partial x}
-
\frac{\mathrm d}{\mathrm dt}
\left(\frac{\partial\mathcal L}{\partial\dot x}\right)=0.
}\]

&lt;p&gt;这就是 Euler–Lagrange 方程。整体乘以 \(-1\)，也可以写成常见的&lt;/p&gt;

\[\frac{\mathrm d}{\mathrm dt}
\left(\frac{\partial\mathcal L}{\partial\dot x}\right)
-
\frac{\partial\mathcal L}{\partial x}=0.\]

&lt;p&gt;在上述光滑、固定端点的设定下，&lt;/p&gt;

\[\frac{\delta\mathcal J}{\delta x}
=
\frac{\partial\mathcal L}{\partial x}
-
\frac{\mathrm d}{\mathrm dt}
\left(\frac{\partial\mathcal L}{\partial\dot x}\right).\]

&lt;p&gt;因此，Euler–Lagrange 是这个积分型泛函的驻点条件的具体展开。若端点可变，分部积分产生的边界项就要一起处理，并给出相应的自然边界条件。&lt;/p&gt;

&lt;h2 id=&quot;5-对速度求偏导是什么意思&quot;&gt;5. 对速度求偏导是什么意思&lt;/h2&gt;

&lt;p&gt;把积分密度先写成一个普通的多元函数&lt;/p&gt;

\[\mathcal L(t,q,v).\]

&lt;p&gt;求偏导时，\(t,q,v\) 是独立自变量。先对第三个变量 \(v\) 求偏导，再代入 \(q=x(t)\)、\(v=\dot x(t)\)，就得到 \(\partial\mathcal L/\partial\dot x\)。&lt;/p&gt;

&lt;p&gt;例如，质量 \(m&amp;gt;0\) 为常数，取力学中的&lt;/p&gt;

\[\mathcal L(x,\dot x)=\frac12m\dot x^2-V(x).\]

&lt;p&gt;那么&lt;/p&gt;

\[\frac{\partial\mathcal L}{\partial\dot x}=m\dot x,
\qquad
\frac{\partial\mathcal L}{\partial x}=-V&apos;(x).\]

&lt;p&gt;Euler–Lagrange 方程给出&lt;/p&gt;

\[m\ddot x+V&apos;(x)=0.\]

&lt;p&gt;势能对应的力为&lt;/p&gt;

\[F(x)=-V&apos;(x),\]

&lt;p&gt;所以它正是 \(m\ddot x=F(x)\)。这里导出的是作用量的驻点方程；驻点是否为最小值还要另外判断。&lt;/p&gt;

&lt;h2 id=&quot;6-维数取决于自由度坐标的角色也要分清&quot;&gt;6. 维数取决于自由度，坐标的角色也要分清&lt;/h2&gt;

&lt;p&gt;对象写成函数、带有 \(t\)，并不意味着它一定是无限维的。例如&lt;/p&gt;

\[V_n=\operatorname{span}\{\phi_1(t),\ldots,\phi_n(t)\},\]

&lt;p&gt;其中基函数线性无关。任意元素都可写成&lt;/p&gt;

\[x_n(t)=\sum_{k=1}^n c_k\phi_k(t).\]

&lt;p&gt;自由变量只有 \(n\) 个系数，所以 \(V_n\) 是 \(n\) 维空间。所有二次多项式&lt;/p&gt;

\[x(t)=c_0+c_1t+c_2t^2\]

&lt;p&gt;就构成一个三维函数空间。相反，序列空间 \(\ell^2\) 中的对象虽然没有写出连续变量 \(t\)，仍然是无限维的。&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;维数由独立自由度决定，而不是由符号中有没有 \(t\) 决定。&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;坐标 \(t\) 用来读取函数内部的取值。一个函数 \(x(\cdot)\) 可以作为整体固定下来，而其不同位置的值 \(x(t)\) 仍然不同，这与固定向量的不同分量取值不同是同一个道理。&lt;/p&gt;

&lt;p&gt;当目标含有 \(\dot x\) 时，导数还会把相邻位置耦合起来：&lt;/p&gt;

\[\dot x(t)\approx
\frac{x(t+\Delta t)-x(t)}{\Delta t}.\]

&lt;p&gt;如果还要描述优化过程自身的演化，可以另用参数 \(\tau\)。在 \(L^2\) 梯度存在、且相应演化有意义时，梯度流形式上写成&lt;/p&gt;

\[\frac{\partial x_\tau(t)}{\partial\tau}
=
-
\frac{\delta\mathcal J}{\delta x}[x_\tau](t).\]

&lt;p&gt;这里 \(t\) 是对象内部的坐标，\(\tau\) 是优化过程的演化参数。改变表示梯度所用的内积，也会改变下降方向。&lt;/p&gt;

&lt;h2 id=&quot;7-kkt-与函数空间乘子的位置&quot;&gt;7. KKT 与函数空间乘子的位置&lt;/h2&gt;

&lt;p&gt;无约束有限维问题和无约束变分问题，分别得到梯度驻点条件和第一变分驻点条件。引入约束以后，还要把可行性及约束的对偶变量纳入一阶系统。&lt;/p&gt;

&lt;h3 id=&quot;有限维约束与-kkt&quot;&gt;有限维约束与 KKT&lt;/h3&gt;

&lt;p&gt;考虑&lt;/p&gt;

\[\min_x f(x),
\qquad
g_i(x)\leq 0,\quad h_j(x)=0.\]

&lt;p&gt;对应的 Lagrangian 为&lt;/p&gt;

\[\mathscr L(x,\lambda,\nu)
=
f(x)+\sum_i\lambda_i g_i(x)+\sum_j\nu_j h_j(x).\]

&lt;p&gt;在适当的约束正则条件下，局部极小点满足 KKT 条件：&lt;/p&gt;

\[\begin{aligned}
\nabla_x\mathscr L(x^\star,\lambda^\star,\nu^\star)&amp;amp;=0,
\\
g_i(x^\star)&amp;amp;\leq 0,
&amp;amp;
h_j(x^\star)&amp;amp;=0,
\\
\lambda_i^\star&amp;amp;\geq 0,
&amp;amp;
\lambda_i^\star g_i(x^\star)&amp;amp;=0.
\end{aligned}\]

&lt;p&gt;这些条件分别表达驻点性、原始可行性、对偶可行性和互补松弛。&lt;/p&gt;

&lt;h3 id=&quot;动态约束为什么引入伴随函数&quot;&gt;动态约束为什么引入伴随函数&lt;/h3&gt;

&lt;p&gt;函数空间中也可以引入约束乘子。有限个标量约束对应标量乘子；算子约束的乘子属于其约束值空间的对偶。对于常见的光滑动态约束，乘子表现为随时间变化的伴随函数。&lt;/p&gt;

&lt;p&gt;考虑固定终止时刻 \(T\)、固定初始状态 \(x(0)=x_0\)、自由终端状态的问题：&lt;/p&gt;

\[\min_{x(\cdot),u(\cdot)}
\Phi(x(T))+\int_0^T L(x,u,t)\,\mathrm dt,
\qquad
\dot x=F(x,u,t).\]

&lt;p&gt;引入 \(\lambda(t)\)，构造&lt;/p&gt;

\[\begin{aligned}
\mathscr A[x,u,\lambda]
&amp;amp;=
\Phi(x(T))
\\
&amp;amp;\quad+
\int_0^T
\left[L(x,u,t)+\lambda^\top(F(x,u,t)-\dot x)\right]
\,\mathrm dt.
\end{aligned}\]

&lt;p&gt;使用最小化问题的符号约定，定义&lt;/p&gt;

\[H(x,u,\lambda,t)=L(x,u,t)+\lambda^\top F(x,u,t).\]

&lt;p&gt;在正常乘子存在、各函数足够光滑、控制取内部值的情形，对 \(\lambda,x,u\) 分别要求一阶驻点，得到&lt;/p&gt;

\[\boxed{
\dot x=H_\lambda=F,\qquad
\dot\lambda=-H_x,\qquad
H_u=0.
}\]

&lt;p&gt;对 \(x\) 的变分还产生终端项。由于 \(x(T)\) 自由，它给出&lt;/p&gt;

\[\boxed{\lambda(T)=\nabla\Phi(x(T)).}\]

&lt;p&gt;这展示了最优控制中状态方程、伴随方程和控制驻点条件的来源。若控制受集合约束，控制条件必须相应调整，不能一律使用 \(H_u=0\)；完整的 Pontryagin 原理还要处理控制集合上的极值条件及正常、异常乘子。&lt;/p&gt;

&lt;p&gt;因此，两条路线应当这样理解：&lt;strong&gt;Euler–Lagrange 是积分型泛函驻点条件的展开；KKT 是约束优化的一阶乘子系统。&lt;/strong&gt; 函数空间乘子进一步通向最优控制中的伴随变量。它们共享一阶变分的思路，但各自需要相应的对象空间与约束条件。&lt;/p&gt;

&lt;h2 id=&quot;8-galerkin-把函数空间条件连接到系数梯度&quot;&gt;8. Galerkin 把函数空间条件连接到系数梯度&lt;/h2&gt;

&lt;p&gt;选取允许扰动空间中的有限维子空间&lt;/p&gt;

\[V_n=\operatorname{span}\{\phi_1,\ldots,\phi_n\}\subset V.\]

&lt;p&gt;对于候选集合 \(\mathcal A=x_b+V\)，令&lt;/p&gt;

\[x_n(t)=x_b(t)+\sum_{j=1}^n c_j\phi_j(t).\]

&lt;p&gt;固定端点问题中，\(x_b\) 满足端点条件，\(\phi_j\) 在两端为零。这样，无论系数如何变化，边界条件都保持成立。&lt;/p&gt;

&lt;p&gt;定义关于系数的有限维目标&lt;/p&gt;

\[F_n(c)=\mathcal J\!\left[x_b+\sum_{j=1}^n c_j\phi_j\right].\]

&lt;p&gt;链式法则给出&lt;/p&gt;

\[\boxed{
\frac{\partial F_n}{\partial c_i}
=D\mathcal J[x_n][\phi_i].
}\]

&lt;p&gt;由于导数对扰动线性，而基函数张成 \(V_n\)，于是&lt;/p&gt;

\[\begin{aligned}
\nabla_c F_n(c)=0
&amp;amp;\Longleftrightarrow
D\mathcal J[x_n][\phi_i]=0,\quad i=1,\ldots,n
\\
&amp;amp;\Longleftrightarrow
D\mathcal J[x_n][\eta_n]=0,\quad \forall\eta_n\in V_n.
\end{aligned}\]

&lt;p&gt;这就是变分问题的 Galerkin 驻点条件。它要求残余的一阶作用在所选扰动子空间上为零。对每个给定的 \(V_n\)，上述等价关系是精确的；离散解随空间加密是否收敛，则需要另外的分析。&lt;/p&gt;

&lt;h3 id=&quot;系数梯度还受内积影响&quot;&gt;系数梯度还受内积影响&lt;/h3&gt;

&lt;p&gt;即使驻点条件等价，系数的欧氏梯度也不一定就是函数梯度的展开系数。&lt;/p&gt;

&lt;p&gt;用 \(L^2\) 内积定义 \(V_n\) 上的梯度 \(g_n\)：&lt;/p&gt;

\[D\mathcal J[x_n][\eta_n]
=\langle g_n,\eta_n\rangle_{L^2},
\qquad
g_n=\sum_{j=1}^n a_j\phi_j.\]

&lt;p&gt;令&lt;/p&gt;

\[M_{ij}=\langle\phi_j,\phi_i\rangle_{L^2}.\]

&lt;p&gt;那么&lt;/p&gt;

\[(\nabla_c F_n)_i
=\sum_j M_{ij}a_j,
\qquad
\boxed{a=M^{-1}\nabla_c F_n.}\]

&lt;p&gt;这里 \(M\) 是基函数的 Gram 矩阵，在有限元中通常称为质量矩阵。只有基函数关于该内积正交归一时，才有 \(M=I\)。这也解释了为什么“同一个驻点问题”可以对应不同的梯度下降方向。&lt;/p&gt;

&lt;h2 id=&quot;9-把这些语言放在一起的用处&quot;&gt;9. 把这些语言放在一起的用处&lt;/h2&gt;

&lt;p&gt;首先，Euler–Lagrange 不必作为一个孤立公式记忆。先计算第一变分，再处理边界项，就能知道方程及边界条件从哪里来；遇到高阶导数或多个场变量，也可以沿同样的思路推导。&lt;/p&gt;

&lt;p&gt;其次，弱形式与数值方法之间的联系变得自然。第一变分先作用在允许的测试函数上，再把测试空间限制到有限个基函数，就得到系数问题。有限元和变分型谱方法经常使用这条路径。&lt;/p&gt;

&lt;p&gt;最后，导数、梯度和乘子的角色也更清楚：导数描述目标对扰动的一阶响应，内积把它表示成梯度，乘子则把约束纳入一阶系统。&lt;/p&gt;

&lt;h2 id=&quot;10-一张对应表&quot;&gt;10. 一张对应表&lt;/h2&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;结构&lt;/th&gt;
      &lt;th&gt;有限维优化&lt;/th&gt;
      &lt;th&gt;函数空间变分&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;候选对象&lt;/td&gt;
      &lt;td&gt;\(x\in\mathbb R^n\)&lt;/td&gt;
      &lt;td&gt;整个函数 \(x(\cdot)\in\mathcal A\)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;目标&lt;/td&gt;
      &lt;td&gt;\(f(x)\in\mathbb R\)&lt;/td&gt;
      &lt;td&gt;\(\mathcal J[x]\in\mathbb R\)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;允许扰动&lt;/td&gt;
      &lt;td&gt;\(h\in\mathbb R^n\)&lt;/td&gt;
      &lt;td&gt;\(\eta\in V\)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;一阶变化&lt;/td&gt;
      &lt;td&gt;\(Df(x)[h]\)&lt;/td&gt;
      &lt;td&gt;\(D\mathcal J[x][\eta]\)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;驻点条件&lt;/td&gt;
      &lt;td&gt;对所有 \(h\)，\(Df(x)[h]=0\)&lt;/td&gt;
      &lt;td&gt;对所有 \(\eta\)，\(D\mathcal J[x][\eta]=0\)&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;内积表示&lt;/td&gt;
      &lt;td&gt;欧氏梯度 \(\nabla f\)&lt;/td&gt;
      &lt;td&gt;所选内积下的函数梯度&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;积分型问题&lt;/td&gt;
      &lt;td&gt;关于有限个变量的方程&lt;/td&gt;
      &lt;td&gt;弱形式；足够光滑时得到 Euler–Lagrange 方程&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;约束处理&lt;/td&gt;
      &lt;td&gt;KKT 乘子系统&lt;/td&gt;
      &lt;td&gt;函数空间乘子、伴随条件&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;有限维近似&lt;/td&gt;
      &lt;td&gt;系数向量 \(c\)&lt;/td&gt;
      &lt;td&gt;\(x_n=x_b+\sum_i c_i\phi_i\)&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;最值得记住的是：&lt;strong&gt;先看优化对象，再看允许扰动，最后看一阶变化。&lt;/strong&gt; 梯度为零、Euler–Lagrange、KKT 和 Galerkin，各自回答了这条主线上的不同问题。&lt;/p&gt;

&lt;h2 id=&quot;继续阅读&quot;&gt;继续阅读&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;Gilbert Strang：&lt;a href=&quot;https://ocw.mit.edu/courses/18-086-mathematical-methods-for-engineers-ii-spring-2006/e94c05947ed036cd6ad0150102087062_am72.pdf&quot;&gt;Calculus of Variations，7.2 节&lt;/a&gt;，可对照第一变分与弱、强形式。&lt;/li&gt;
  &lt;li&gt;Stephen Boyd、Lieven Vandenberghe：&lt;a href=&quot;https://web.stanford.edu/~boyd/cvxbook/bv_cvxbook.pdf&quot;&gt;Convex Optimization，5.5.3 节&lt;/a&gt;，讨论 KKT 条件及其适用背景。&lt;/li&gt;
  &lt;li&gt;Lawrence C. Evans：&lt;a href=&quot;https://math.berkeley.edu/~evans/control.course.pdf&quot;&gt;An Introduction to Mathematical Optimal Control Theory，第 4 章&lt;/a&gt;，可继续阅读伴随变量、Pontryagin 原理与横截条件。不同文献的 Hamiltonian 符号约定可能不同。&lt;/li&gt;
&lt;/ul&gt;
</description></item><item><title>把教材、提问和学习资料放在一起</title><link>https://conanxu-math.github.io/blog/course-copilot/</link><guid>https://conanxu-math.github.io/blog/course-copilot/</guid><pubDate>Tue, 13 Oct 2026 00:00:00 +0800</pubDate><description>&lt;p&gt;读一本需要认真推导的教材时，阅读往往会自然地分出许多支线：这个概念是什么意思，上一章的条件在这里怎么用，能否找一个例子，以及刚刚想明白的内容应该记在哪里。&lt;/p&gt;

&lt;p&gt;VeryMath 智慧教材把这些活动放在一个共同的工作区里：一边保留教材，一边围绕正在读的内容提问和整理资料。&lt;/p&gt;

&lt;h2 id=&quot;先有教材再开始对话&quot;&gt;先有教材，再开始对话&lt;/h2&gt;

&lt;p&gt;这个项目采用个人部署的方式。使用者导入自己的教材 PDF，在浏览器中阅读，并连接自己已有的 Coding Agent。&lt;/p&gt;

&lt;p&gt;教材是学习过程的主线。用户可以围绕当前页、某段选文、一个章节或者整本书发起任务，让讲解和资料整理始终有具体的上下文。&lt;/p&gt;

&lt;p&gt;与不断把片段复制到不同聊天窗口相比，这种组织方式提供了一个更连续的阅读入口。&lt;/p&gt;

&lt;h2 id=&quot;一个工作台里的几种学习活动&quot;&gt;一个工作台里的几种学习活动&lt;/h2&gt;

&lt;p&gt;根据公开项目说明，工作台支持围绕教材进行讲解、知识点出题、思维导图和知识图谱整理，也可以生成 LaTeX 课件。&lt;/p&gt;

&lt;p&gt;这些能力服务于不同的学习需要：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;讲解&lt;/strong&gt;帮助拆开概念、定理与例题中的关键步骤。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;练习&lt;/strong&gt;把“似乎看懂了”变成一次实际尝试。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;思维导图和知识图谱&lt;/strong&gt;帮助回顾章节结构与概念关系。&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;课件与笔记&lt;/strong&gt;把当前理解整理成可以再次阅读的材料。&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;具体教学任务由连接的 Agent 完成。部署环境、所选模型和可用工具会影响实际结果；生成的公式、推导和关键数字仍需要结合原书核对。&lt;/p&gt;

&lt;h2 id=&quot;资料留在自己的工作区&quot;&gt;资料留在自己的工作区&lt;/h2&gt;

&lt;p&gt;教材、阅读位置、对话和生成资料保存在本机的课程目录中。辅助讲义、习题解答和参考资料也可以放在对应课程下面，供后续阅读使用。&lt;/p&gt;

&lt;p&gt;这里需要区分“本地保存”与“模型处理”：本地保存描述的是课程资料的存放方式；向远程 Agent 提问时，发送给该服务的内容仍取决于使用者选择的 Agent 和请求。&lt;/p&gt;

&lt;p&gt;这个工作台也需要本地服务来连接 Agent。它不是把一个静态网页上传后，就能完整运行的工具。&lt;/p&gt;

&lt;h2 id=&quot;让工具围绕一个真实问题展开&quot;&gt;让工具围绕一个真实问题展开&lt;/h2&gt;

&lt;p&gt;一个有用的学习工具，不只提供许多按钮，还需要帮助使用者把注意力留在当前的问题上。&lt;/p&gt;

&lt;p&gt;读到哪里、引用了什么、生成的资料放在哪一章——这些细节决定了一次提问能否变成持续的学习过程。VeryMath 的一个清晰出发点，就是用教材和课程目录把这些活动连接起来。&lt;/p&gt;

&lt;h2 id=&quot;继续阅读&quot;&gt;继续阅读&lt;/h2&gt;

&lt;p&gt;本文是根据公开 README 整理的项目导读。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/ConanXu-math/course-copilot&quot;&gt;VeryMath 智慧教材项目仓库&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/ConanXu-math/course-copilot/blob/main/docs/user-guide.md&quot;&gt;安装与使用说明&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;开始使用时，建议先阅读安装说明，再选择自己已经熟悉的 Agent。&lt;/p&gt;
</description></item><item><title>当迭代绕了一圈：三块 ADMM 的反例</title><link>https://conanxu-math.github.io/blog/admm-counterexample/</link><guid>https://conanxu-math.github.io/blog/admm-counterexample/</guid><pubDate>Tue, 13 Oct 2026 00:00:00 +0800</pubDate><description>&lt;p&gt;有些迭代算法的失败，很容易看出来：数值越来越大，最后溢出。但还有一种更不显眼的情况——迭代始终停留在一个有限区域里，不断经过同一组状态，却始终没有走向问题的解。&lt;/p&gt;

&lt;p&gt;三块 ADMM 的这个项目，关心的就是后一种情形。&lt;/p&gt;

&lt;h2 id=&quot;问题从哪里来&quot;&gt;问题从哪里来&lt;/h2&gt;

&lt;p&gt;ADMM 是一种把优化问题拆开、交替求解的方法。把一个问题分成更多块，常常让每一步更容易计算，但也会改变整个迭代的性质。一个看起来很自然的推广，未必继承原方法的收敛保证。&lt;/p&gt;

&lt;p&gt;这里的具体问题是：当第三个约束块恰好是单位阵时，未经修正的直接三块 ADMM，是否就能得到相应的收敛保证？&lt;/p&gt;

&lt;p&gt;公开仓库给出了两个固定的凸二次规划实例。它们都具有唯一的 KKT 点，但直接三块 ADMM 可以产生有界、非 KKT 的周期轨道。这说明，第三块是单位阵这一结构，本身不足以排除这样的失败。&lt;/p&gt;

&lt;h2 id=&quot;两个周期两个不同的结论&quot;&gt;两个周期，两个不同的结论&lt;/h2&gt;

&lt;p&gt;第一个实例给出一条最小周期为 &lt;strong&gt;66&lt;/strong&gt; 的轨道。从一个特定的初始状态出发，迭代经过 66 步精确返回原状态，然后继续重复。&lt;/p&gt;

&lt;p&gt;第二个实例的最小周期为 &lt;strong&gt;23&lt;/strong&gt;。除了周期本身，项目还给出了一个局部的吸引性结论：在相应缩减状态空间的一个开放不变集合内，初始状态会按周期相位趋近这条非 KKT 轨道。&lt;/p&gt;

&lt;p&gt;这两个结论回答的问题不完全相同。前者说明某个指定初始化会一直循环；后者进一步描述了一个固定问题上，一部分邻近初始化的行为。它们都不能被扩大为所有初始化、所有问题数据的结论。&lt;/p&gt;

&lt;h2 id=&quot;从看起来在循环到精确验证&quot;&gt;从“看起来在循环”到精确验证&lt;/h2&gt;

&lt;p&gt;数值实验可以帮助找到候选轨道，但有限精度下看起来重合的状态，还不是精确的周期证明。&lt;/p&gt;

&lt;p&gt;从现象走向明确结论，需要回答几个具体问题：&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;每一步是否确实遵循原来的算法更新？&lt;/li&gt;
  &lt;li&gt;投影或分支选择所需的条件是否全部成立？&lt;/li&gt;
  &lt;li&gt;走完一个周期后，状态是否精确回到起点？&lt;/li&gt;
  &lt;li&gt;这个周期是否还能缩短？&lt;/li&gt;
  &lt;li&gt;周期轨道上的状态为何不是 KKT 点？&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;公开项目为这些问题提供了可重新计算的精确验证材料。周期 66 的实例还有不同实现之间的交叉检查；周期 23 的实例使用有理数数据，并给出了局部不变集合的验证。&lt;/p&gt;

&lt;h2 id=&quot;ai-辅助发现之后还需要什么&quot;&gt;AI 辅助发现之后，还需要什么&lt;/h2&gt;

&lt;p&gt;这个项目也记录了 AI 辅助寻找反例的过程。这里有一个很值得保留的区分：找到候选、解释现象、验证结论，是相互联系但不同的工作。&lt;/p&gt;

&lt;p&gt;计算能指出值得追踪的方向，数学分析则要说明结论在什么条件下成立。一个完整的研究记录，应当让读者知道哪部分是探索，哪部分已有明确论证。&lt;/p&gt;

&lt;p&gt;对这个问题来说，最有价值的产物不是一张“似乎不收敛”的曲线，而是一个可清楚陈述、可逐项检查的具体反例。&lt;/p&gt;

&lt;h2 id=&quot;继续阅读&quot;&gt;继续阅读&lt;/h2&gt;

&lt;p&gt;本文是根据公开仓库整理的项目导读，不包含新的证明。&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/ConanXu-math/identity-slack-admm-cycle-certificate&quot;&gt;项目仓库与验证说明&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://arxiv.org/abs/2608.14396&quot;&gt;对应论文：arXiv:2608.14396&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;阅读时可以先看仓库中的结论范围，再选择数学论证或验证代码作为入口。&lt;/p&gt;
</description></item>
</channel></rss>
