2. 动力系统建模基础
DeepONet 要学的是“函数到函数”的映射,而动力系统恰好提供了最自然的映射来源:给定一个初值、边界条件或外部输入函数,系统会演化出一条状态轨迹或一个时空场。要把这条映射关系讲清楚,先得把动力系统的数学描述方式梳理一遍——用什么方程描述、条件加在哪里、状态如何组织、典型系统长什么样。这一节的目标不是推导解法,而是建立一套“看到物理问题就能写出算子学习目标”的判断框架。
一、ODE 与 PDE:两种描述尺度
常微分方程(ODE)描述的是状态随时间变化、空间维度被集中或忽略的系统。一般形式可写为
du/dt = f(u, t; θ), u(t₀) = u₀
其中 u 是有限维状态向量,θ 是系统参数。振子、电路、化学反应器、多体机械系统都属于这一类。ODE 的解是一条随时间演化的轨迹 u(t),输入是初值 u₀ 和参数 θ,输出是整条轨迹。
偏微分方程(PDE)则保留空间分布,状态是时空场 u(x, t)。典型形式如热传导方程 u_t = α u_xx、反应扩散方程 u_t = D u_xx + R(u)、Navier–Stokes 方程等。PDE 的解是一个定义在时空域上的场,输入除了初值 u(x,0) 之外,还包括边界条件、源项、系数场(如扩散系数 D(x)、速度场)。
这个区别直接决定了 DeepONet 的输入输出形状:ODE 场景下分支网络接收初值向量或参数向量,主干网络接收时间坐标 t;PDE 场景下分支网络往往接收初值场或边界条件场的采样,主干网络接收时空坐标 (x, t)。
二、初值问题与边值问题
仅有方程不足以确定解,必须附加定解条件。初值问题(IVP)在 t = t₀ 处给定 u(t₀) = u₀,适合描述“从某个初始状态出发向前演化”的过程,振子、混沌系统、化学反应动力学都是 IVP。边值问题(BVP)则在空间边界上给定条件,例如一维稳态热传导中 u(0) = T_L、u(L) = T_R,或者更一般的 Neumann、Robin 条件。
对算子学习而言,IVP 与 BVP 的差别体现在“哪些量是输入函数”:IVP 中初值函数 u₀(x) 是典型的分支输入;BVP 中边界函数 g(x) 或边界通量是分支输入。很多工程问题同时含初值和边界条件,此时分支网络需要同时编码两类函数,通常做法是把它们拼接成多通道输入,或在分支网络内部用两个子分支分别处理再融合。
三、状态空间表示
高阶 ODE 可以化为一阶系统。以阻尼振子 m u'' + c u' + k u = F(t) 为例,令 x₁ = u、x₂ = u',得到
dx₁/dt = x₂
dx₂/dt = -(k/m) x₁ - (c/m) x₂ + F(t)/m
写成向量形式 dx/dt = A x + B F(t),状态 x ∈ ℝ²。状态空间表示的价值在于:它把“系统当前的全部信息”压缩成一个向量,未来演化只依赖这个向量和输入,这就是马尔可夫性。对 DeepONet 来说,状态向量是天然的有限维输入;对 PDE,状态空间是无穷维函数空间,实际实现时通过离散网格或模态截断变成有限维。
状态空间还揭示了参数的角色:A、B 中的 m、c、k 是系统参数,改变参数会改变整个解算子。若希望一个 DeepONet 同时覆盖多个参数取值,参数应作为分支网络的额外输入通道,而不是固定在某一个训练集里。
四、典型动力系统案例
振子。无阻尼简谐振子 u'' + ω²u = 0 的解是正弦振荡,周期由 ω 决定;加阻尼后振幅指数衰减;加周期驱动力后可能出现共振。振子适合作为入门案例,因为解的行为直观、参数影响清晰,可以先用它验证 DeepONet 是否能学到“初值 → 轨迹”的映射。
反应扩散系统。一维形式 u_t = D u_xx + R(u),其中 R(u) 常取 Logistic 型 R(u) = r u(1 - u)。这类系统能产生行波、斑图、front 传播等结构。对算子学习而言,扩散系数 D、反应速率 r、初值分布 u₀(x) 都是可变的输入函数或参数,输出是 u(x,t)。
流体。以不可压 Navier–Stokes 为例,状态是速度场和压力场,输入包括初速度场、边界速度、外力。流体问题的解算子维度高、非线性强,是检验 DeepONet 表达能力的重要场景,通常需要配合降维或分块策略。
五、把物理问题翻译成算子学习目标
下面这张图把本节的核心逻辑串起来:从方程类型和定解条件出发,确定输入函数与输出场,再落到 DeepONet 的分支/主干结构上。
以阻尼振子为例走一遍这个流程:方程 m u'' + c u' + k u = F(t),取 m = 1、k = 4、c = 0.3,初值 u(0) = u₀、u'(0) = 0,这是 IVP。状态向量 x = (u, u'),分支输入是 u₀(若同时变化 c,则 c 也进入分支),主干输入是 t,输出是 u(t)。训练数据可由数值积分生成:对 u₀ 在 [0.5, 2.0] 内取若干采样点,每个 u₀ 用四阶 Runge–Kutta 以 dt = 0.01 积分到 T = 10,得到一组轨迹。DeepONet 学习的是“u₀ ↦ u(·)”这个解算子,训练完成后对区间内新的 u₀ 直接前向预测,无需重新积分。
再看一维反应扩散:u_t = D u_xx + r u(1 - u),x ∈ [0, 1],边界取零通量,初值 u₀(x) 为分段常数。这里分支输入是 u₀(x) 在若干传感器点上的采样值(例如均匀取 50 个点),主干输入是 (x, t)。若 D 和 r 也作为可变参数,则把它们归一化后拼接到分支输入末尾。输出是 u(x,t),训练标签来自有限差分求解器在网格上的解。
六、本节要点回顾
- ODE 给出轨迹型解,PDE 给出场型解,二者决定主干网络的输入是 t 还是 (x, t)。
- IVP 的典型输入是初值函数,BVP 的典型输入是边界函数;混合问题需同时编码两类输入。
- 状态空间表示把高阶系统化为一阶向量系统,状态向量是有限维分支输入的自然来源。
- 振子、反应扩散、流体分别代表低维轨迹、时空斑图、高维非线性场三类学习难度,适合由易到难组织实验。
- 把物理问题翻译成算子学习目标的关键动作:识别已知函数、识别查询坐标、确定输出场,再对应到分支/主干网络。
完成这一节的梳理后,后续搭建 DeepONet 时就有了明确的输入输出约定:分支网络接收什么、主干网络接收什么、标签从哪里来、泛化边界在哪里。这些约定会在数据生成、网络设计和误差评估各环节反复用到。