更改

删除9,130字节 、 2026年1月11日 (星期日)
第418行: 第418行:  
==残差DMD==
 
==残差DMD==
   −
在[[动力系统]]研究中,Koopman[[算子]]理论通过全局[[线性化]]为分析[[非线性系统]]提供框架,但传统方法如EDMD面临[[谱污染]]、[[连续谱]]处理不足和高维挑战等局限。残差动态[[模式分解]](ResDMD<ref name=Colbrook_2023>Colbrook, M. J., Ayton, L. J. & Szőke, M. Residual dynamic mode decomposition: Robust and verified koopmanism. J. Fluid Mech. 955, A21 (2023).</ref><ref name=Colbrook_2024>Colbrook, M. J. & Townsend, A. Rigorous data‐driven computation of spectral properties of koopman operators for dynamical systems. Commun. Pure Appl. Math. 77, 221–283 (2024).</ref> 通过引入残差计算[[机制]],构建Koopman[[算子]]<math>\mathcal{K}</math>及其伴随[[算子]]与自身的乘积<math>\mathcal{K}^* \mathcal{K}</math>的[[Galerkin近似]],有效区分真实[[特征值]]与[[伪特征值]],解决了EDMD因有限维假设和离散化误差导致的谱失真问题,详情请查阅[[残差DMD]]。
+
在[[动力系统]]研究中,Koopman[[算子]]理论通过全局[[线性化]]为分析[[非线性系统]]提供框架,但传统方法如EDMD面临[[谱污染]]、[[连续谱]]处理不足和高维挑战等局限。残差动态[[模式分解]](ResDMD<ref name=Colbrook_2023>Colbrook, M. J., Ayton, L. J. & Szőke, M. Residual dynamic mode decomposition: Robust and verified koopmanism. J. Fluid Mech. 955, A21 (2023).</ref><ref name=Colbrook_2024>Colbrook, M. J. & Townsend, A. Rigorous data‐driven computation of spectral properties of koopman operators for dynamical systems. Commun. Pure Appl. Math. 77, 221–283 (2024).</ref> 通过引入残差计算[[机制]](计算特征值偏离真实特征对的程度),构建Koopman[[算子]]<math>\mathcal{K}</math>及其伴随[[算子]]与自身的乘积<math>\mathcal{K}^* \mathcal{K}</math>的[[Galerkin近似]],有效区分真实[[特征值]]与[[伪特征值]],解决了EDMD因有限维假设和离散化误差导致的谱失真问题,详情请查阅[[残差DMD]]。
−
 
  −
===[[伪特征值]]的出现===
  −
 
  −
为什么会出现谱污染问题呢?原本特征值谱告诉我们的是,动力系统里有哪些增长、衰减或振荡的模式,但有时候会出现虚假的特征值。这些特征值对应着动力系统里并不真实存在的模式,是虚假的规律。为此,我们有了[[伪特征值]](Pseudo-eigenvalues)这样的概念。[[伪特征值]]指的是当使用有限维矩阵近似来表示无限维 Koopman 算子 <math>\mathcal{K}</math> 时,所计算出的[[特征值]] <math>\lambda</math> 有可能并不属于真实 Koopman 算子的谱 <math>\sigma(\mathcal{K})</math>。
  −
 
  −
'''定义(矩阵的[[伪特征值]]):'''在严格的数学框架下,[[伪特征值]]通常通过<math>\epsilon</math>-伪谱来定义。它描述了矩阵在受到扰动时,其[[特征值]]可能出现的区域。该区域包含了真实的特征值和虚假的特征值。对于一个有限维矩阵 <math>A</math> 和 <math>\epsilon > 0</math>,<math>A</math> 的<math>\epsilon</math>-伪谱定义为<ref name=Colbrook_2023 />: 
  −
 
  −
:<math> 
  −
\sigma_\epsilon(A) = \{ \lambda \in \mathbb{C} : \|(A - \lambda I)^{-1}\| \geq 1/\epsilon \} = \bigcup_{\|B\| \le \epsilon} \sigma(A + B) 
  −
</math> 
  −
 
  −
其中 <math>\sigma(A + B)</math> 表示矩阵 <math>A + B</math> 的[[特征值]]集合。这表明<math>\epsilon</math>-伪谱是[[复平面]]上的一个区域,包含了所有可能由大小不超过 <math>\epsilon</math> 的扰动所产生的[[特征值]]。 
  −
 
  −
'''定义(算子的伪特征值):'''对于可能无界的 Koopman 算子 <math>\mathcal{K}</math>,其<math>\epsilon</math>-伪谱的定义需要更加严谨,具体如下<ref name=Colbrook_2023 />: 
  −
 
  −
:<math> 
  −
\sigma_\epsilon(\mathcal{K}) := \text{cl} \left( \left\{ \lambda \in \mathbb{C} : \|(\mathcal{K} - \lambda)^{-1}\| > 1/\epsilon \right\} \right) = \text{cl} \left( \bigcup_{\|\mathcal{B}\| < \epsilon} \sigma(\mathcal{K} + \mathcal{B}) \right) 
  −
</math> 
  −
 
  −
其中 <math>\text{cl}</math> 表示[[集合]]的闭包。该定义刻画了对于任意给定的精度 <math>\epsilon</math>,能够以小于 <math>\epsilon</math> 的残差近似满足[[特征值]]方程的标量 <math>\lambda</math> 的[[集合]]。<math>\epsilon</math>反应的就是观测空间偏离不变子空间的程度。如果<math>\epsilon=0</math>,那么伪谱中所有的特征值一定都是真实的特征值。关于<math>\epsilon</math>的具体计算,下文关于残差DMD的原理的内容中有更进一步的介绍。
  −
 
  −
例如,设有一个平凡的对角线[[线性系统]],其[[特征值]]<math>\lambda \in \{1, 2, 5\}</math>,[[特征向量]]<math>\xi_j</math>为坐标方向<math>x_j</math>,以及一个对前两个[[特征向量]]进行混合的简单观测:
  −
 
  −
:<math> \frac{d}{dt} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} = \begin{bmatrix} 1 & 0 & 0 \\ 0 & 2 & 0 \\ 0 & 0 & 5 \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ x_3 \end{bmatrix} </math> <math> \quad \text{选择观测函数为} \quad y =  x_1 + x_2. </math>
  −
 
  −
该观测函数本身张成的空间并不是 Koopman 算子的不变子空间,所以产生了误差<math>\epsilon</math>,其大小反应的是该观测空间与Koopman不变子空间之间的距离。在这种情况下,数据驱动算法试图用单一的增长率来拟合混合了不同增长率的数据,从而预测出一个[[伪特征值]] <math>5</math>。这实际上是前两个[[特征值]]<math>\lambda=1</math>和<math>\lambda=2</math>的和,因为测量是前两个[[特征向量]]之和。该[[特征值]]属于上述[[伪谱]]定义的[[集合]]内,但不是系统真实的[[特征值]]。
  −
 
  −
因此,在实际应用中选取观测函数时,采取一些手段避免[[过拟合]]是非常重要的。除了观测函数选取不当,在数据驱动算法中,如果数据量没有足够多,或者数据[[采样]]相比于原本的[[连续动力学]]过于离散化,也会造成[[伪特征值]]出现的问题。
      
===理论===
 
===理论===
第489行: 第461行:  
残差DMD算法的核心思路是:通过数据驱动的方式求解近似Koopman矩阵<math>K</math>,再基于此筛选出“靠谱”的Koopman候选特征对(<math>\lambda, g</math>)——筛选的核心依据就是前文定义的残差<math>\text{res}(\lambda, g)</math>,残差越小说明候选特征对越接近真实情况。
 
残差DMD算法的核心思路是:通过数据驱动的方式求解近似Koopman矩阵<math>K</math>,再基于此筛选出“靠谱”的Koopman候选特征对(<math>\lambda, g</math>)——筛选的核心依据就是前文定义的残差<math>\text{res}(\lambda, g)</math>,残差越小说明候选特征对越接近真实情况。
   −
一、计算无[[谱污染]][[特征值]]的算法<ref name=Colbrook_2024>Colbrook, M. J. & Townsend, A. Rigorous data‐driven computation of spectral properties of koopman operators for dynamical systems. Commun. Pure Appl. Math. 77, 221–283 (2024).</ref>:近似得到的矩阵容易出现伪特征值,故此算法是用来判断矩阵的特征值是不是伪特征值,解决传统EDMD的[[谱污染]]问题。
+
计算无[[谱污染]][[特征值]]的算法<ref name=Colbrook_2024>Colbrook, M. J. & Townsend, A. Rigorous data‐driven computation of spectral properties of koopman operators for dynamical systems. Commun. Pure Appl. Math. 77, 221–283 (2024).</ref>:近似得到的矩阵容易出现伪特征值,故此算法是用来判断矩阵的特征值是不是伪特征值,解决传统EDMD的[[谱污染]]问题。
    
'''输入:'''系统变量的初始状态<math>\{x^{(j)}\}_{j=1}^M</math>、系统变量的下一时刻状态<math>\{y^{(j)}=F(x^{(j)})\}_{j=1}^M</math>、每个点对应的权重<math>\{w_j\}_{j=1}^M</math>、观测函数<math>\{\psi_j\}_{j=1}^{N}</math>、判定是否是真特征值的阈值<math>\epsilon>0</math>
 
'''输入:'''系统变量的初始状态<math>\{x^{(j)}\}_{j=1}^M</math>、系统变量的下一时刻状态<math>\{y^{(j)}=F(x^{(j)})\}_{j=1}^M</math>、每个点对应的权重<math>\{w_j\}_{j=1}^M</math>、观测函数<math>\{\psi_j\}_{j=1}^{N}</math>、判定是否是真特征值的阈值<math>\epsilon>0</math>
第499行: 第471行:     
'''输出:'''残差小于阈值的准确特征值对<math>\{(\lambda_j, g_j) \mid res(\lambda_j, g_j) \leq \epsilon\}</math>
 
'''输出:'''残差小于阈值的准确特征值对<math>\{(\lambda_j, g_j) \mid res(\lambda_j, g_j) \leq \epsilon\}</math>
−
  −
二、ResDMD计算ε-[[伪谱]]估计算法<ref name=Colbrook_2024>Colbrook, M. J. & Townsend, A. Rigorous data‐driven computation of spectral properties of koopman operators for dynamical systems. Commun. Pure Appl. Math. 77, 221–283 (2024).</ref>:扩展上个算法的功能,计算Koopman[[算子]]的<math>\epsilon</math>-[[伪谱]],弥补[[特征值]]无法反映的谱分布信息。
  −
  −
'''输入:'''系统变量的初始状态<math>\{x^{(j)}\}_{j=1}^M</math>、系统变量的下一时刻状态<math>\{y^{(j)}=F(x^{(j)})\}_{j=1}^M</math>、每个点对应的权重<math>\{w_j\}_{j=1}^M</math>、观测函数<math>\{\psi_j\}_{j=1}^{N}</math>、判定是否是真特征值的阈值<math>\epsilon>0</math>、谱区域网格点<math>\{z_1,...,z_k\} \subset \mathbb{C}</math>
  −
  −
# 计算三个核心矩阵:<math>\Psi_X^* W \Psi_X</math>、<math>\Psi_X^* W \Psi_Y</math>、<math>\Psi_Y^* W \Psi_Y</math>(<math>\Psi_X/\Psi_Y</math>为字典在<math>x/y</math>上的取值矩阵,<math>W</math>为权重对角矩阵)。
  −
# 对每个网格点<math>z_j</math>,求解最小残差<math>\tau_j = \min_{g \in \mathbb{C}^{N}} res(z_j, \Psi g)</math>(转化为广义[[SVD]]问题)。
  −
# 筛选出最小残差<math>\tau_j < \epsilon</math>的网格点,构成<math>\epsilon</math>-[[伪谱]]。
  −
  −
'''输出:'''<math>\epsilon</math>-[[伪谱]]估计,<math>\tau_j</math>为网格点<math>z_j</math>的最小残差<math>\{z_j \mid \tau_j < \epsilon\}</math>、对应[[伪谱]]区域的<math>\epsilon</math>-近似[[特征函数]]<math>\{g_j \mid \tau_j < \epsilon\}</math>
  −
  −
===例子===
  −
[[高斯迭代映射]]是一类具有复杂[[非线性动力学]]行为的实值[[动力系统]],因[[分岔]]图呈现[[类似]] “鼠标” 的特征而成为验证[[非线性]]算法的经典案例。该映射的[[非线性]]源于指数项<math>\exp(-\alpha x^2)</math>,当参数<math>\alpha</math>和<math>\beta</math>取特定值时,系统会表现出从周期运动到复杂[[分岔]]的过渡,其 Koopman [[算子]]的谱结构包含离散[[特征值]]与潜在的[[连续谱]]成分,对算法的谱分辨能力提出挑战。
  −
  −
实验<ref name=Colbrook_2024>Colbrook, M. J. & Townsend, A. Rigorous data‐driven computation of spectral properties of koopman operators for dynamical systems. Commun. Pure Appl. Math. 77, 221–283 (2024).</ref>采用的[[高斯迭代映射]]定义为:<math>F(x) = \exp(-\alpha x^2) + \beta</math>
  −
  −
式中,<math>\alpha=2</math>;<math>\beta=-1-\exp(-\alpha)</math>。映射的[[状态空间]]限制为<math>\Omega=[-1,0]</math>,采用标准[[勒贝格测度]]([[Lebesgue measure]])<math>\omega</math>描述状态分布。
  −
  −
观测字典用<math>[-1,0]</math>区间的[[勒让德多项式]],具体形式为:<math>\psi_j(x) = c_j P_j(2x+1)</math>
  −
  −
其中:<math>P_j</math>为j次[[勒让德多项式]];<math>c_j</math>为[[归一化]]系数,使字典在<math>L^2(\Omega, \omega)</math>空间内满足<math>\langle \psi_i, \psi_j \rangle = \delta_{ij}</math><math>(\delta_{ij}</math>为[[克罗内克函数]]),减少基函数间的冗余干扰。实验中固定字典规模<math>N_K=40</math>。
  −
  −
实验数据为<math>\{(x^{(j)}, y^{(j)})\}_{j=1}^M</math>,其中<math>(y^{(j)}=F(x^{(j)})</math>(F为[[高斯迭代映射]])。
  −
  −
下图展示了[[高斯迭代映射]][[伪谱]]图与随着数据点𝑀数量增加,不同求积法则下Galerkin矩阵Ψ*<small>𝑋</small>𝑊Ψ<small>𝑌</small>的收敛情况。下图中左图验证 ResDMD 的[[谱污染]]剔除能力,以[[复平面]](横轴<math>Re(\lambda)</math>、纵轴<math>Im(\lambda)</math>)为背景,黑色曲线是[[伪谱]]轮廓,分别对应<math>\epsilon=0.001,0.01,0.1,0.3</math>的<math>\epsilon</math>- [[伪谱]],定义为:<math>\sigma_\epsilon(K) = cl\left(\{\lambda \in \mathbb{C} \mid \|(K - \lambda)^{-1}\| > 1/\epsilon\}\right)</math>。其中<math>cl(\cdot)</math>表示[[集合]]的闭包。
  −
  −
品红色圆点为传统 EDMD [[特征值]],大量[[特征值]]位于[[伪谱]]之外,这些是离散化导致的[[谱污染]](虚假[[特征值]]),无法反映系统真实[[动力学]],例如虚部 > 0.5的[[特征值]]对应不存在的高频[[振荡]],与[[高斯迭代映射]]的实际[[动力学]]矛盾。蓝色叉号为ResDMD 筛选[[特征值]],所有[[特征值]]均位于<math>\epsilon=0.01</math>的[[伪谱]]内。下图右图体现不同积分规则的性能差异,以 “数据点数量M” 为横轴、“核心矩阵元素最大绝对误差” 为纵轴(对数坐标),误差定义为:
  −
  −
:<math>err = \max_{1 \leq j,k \leq N} \left| (\Psi_X^* W \Psi_Y)_{jk} - \langle K\psi_k, \psi_j \rangle \right|</math>,
  −
  −
其中<math>\langle K\psi_k, \psi_j \rangle</math>为 Koopman [[算子]][[内积]]的真实值(作为误差基准)。结果显示不同积分规则的收敛速率差异显著:高斯-勒让德规则指数收敛;梯形规则<math>O(M^{-2})</math>;黎曼和规则<math>O(M^{-1})</math>;[[蒙特卡洛]]规则<math>O(M^{-1/2})</math>。
  −
  −
[[文件:ResDMDGussian.png|无|高斯迭代映射结果图<ref name=Colbrook_2024 />|缩略图|600x600像素]]<br>
      
==核DMD==
 
==核DMD==
761

个编辑