| 第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> |
| | | | |
| | ===例子=== | | ===例子=== |