更改

跳到导航 跳到搜索
添加379字节 、 2025年12月31日 (三) 23:00
第482行: 第482行:     
===算法===
 
===算法===
−
一、计算无[[谱污染]][[特征值]]的算法<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[[算子]]的准确[[特征值]]和[[特征函数]],核心解决传统EDMD的[[谱污染]]问题。
+
残差DMD算法的核心思路是:通过数据驱动的方式求解近似Koopman矩阵<math>K_{\text{EDMD}}</math>,再基于此筛选出“靠谱”的Koopman候选特征对(<math>\lambda, g</math>)——筛选的核心依据就是前文定义的残差<math>\text{res}(\lambda, g)</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_K}</math>(观测函数)、<math>\epsilon>0</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的[[谱污染]]问题。
   −
输出:<math>\{(\lambda_j, g_j) \mid res(\lambda_j, g_j) \leq \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_K}</math>、判定是否是真特征值的阈值<math>\epsilon>0</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>\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>(\Psi_X^* W \Psi_Y)g = \lambda(\Psi_X^* W \Psi_X)g</math>,得到候选[[特征值]]和[[特征函数]]。
+
# 求解广义[[特征值]]<math>(\Psi_X^* W \Psi_Y)g = \lambda(\Psi_X^* W \Psi_X)g</math>,得到候选[[特征值]]和[[特征函数]]。
 
# 计算每个候选[[特征值]]的残差<math>res(\lambda_j, g_j)</math>(衡量它们与真实Koopman[[算子]]的契合度)。
 
# 计算每个候选[[特征值]]的残差<math>res(\lambda_j, g_j)</math>(衡量它们与真实Koopman[[算子]]的契合度)。
 
# 丢弃残差大于<math>\epsilon</math>的[[伪特征值]],保留满足精度的有效[[特征值]]。
 
# 丢弃残差大于<math>\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>-[[伪谱]],弥补[[特征值]]无法反映的谱分布信息。
 
二、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_K}</math>(观测函数)、<math>\epsilon>0</math>(残差阈值)、<math>\{z_1,...,z_k\} \subset \mathbb{C}</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_K}</math>、判定是否是真特征值的阈值<math>\epsilon>0</math>、谱区域网格点<math>\{z_1,...,z_k\} \subset \mathbb{C}</math>
−
 
  −
输出:<math>\{z_j \mid \tau_j < \epsilon\}</math>(<math>\epsilon</math>-[[伪谱]]估计,<math>\tau_j</math>为网格点<math>z_j</math>的最小残差)、<math>\{g_j \mid \tau_j < \epsilon\}</math>(对应[[伪谱]]区域的<math>\epsilon</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>\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_K}} res(z_j, \Psi g)</math>(转化为广义[[SVD]]问题)。
 
# 对每个网格点<math>z_j</math>,求解最小残差<math>\tau_j = \min_{g \in \mathbb{C}^{N_K}} res(z_j, \Psi g)</math>(转化为广义[[SVD]]问题)。
 
# 筛选出最小残差<math>\tau_j < \epsilon</math>的网格点,构成<math>\epsilon</math>-[[伪谱]]。
 
# 筛选出最小残差<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>
    
===例子===
 
===例子===
761

个编辑

导航菜单