| 第451行: |
第451行: |
| | | | |
| | ===理论=== | | ===理论=== |
| − | 给定一组观测函数<math>\{\psi_1, \dots, \psi_{N_K}\} \subset D(\mathcal{K})(D(\mathcal{K})</math>为<math>\mathcal{K}</math>的定义域),如一系列的多项式,EDMD 的目标是在子空间<math>V_{N_K} = \text{span}\{\psi_1, \dots, \psi_{N_K}\}</math>上近似<math>\mathcal{K}</math>的作用,即满足<ref name=Colbrook_2023 /><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>\{\psi_1, \dots, \psi_{N_K}\} \subset D(\mathcal{K})(D(\mathcal{K})</math>为<math>\mathcal{K}</math>的定义域),如一系列的多项式,EDMD 的目标是在子空间<math>V_{N_K} = \text{span}\{\psi_1, \dots, \psi_{N_K}\}</math>上近似<math>\mathcal{K}</math>的作用,定义[[向量]]值特征映射<math>\Psi(\boldsymbol{x}) = [\psi_1(\boldsymbol{x}), \dots, \psi_{N_K}(\boldsymbol{x})] \in \mathbb{C}^{1 \times N_K}</math>,则子空间<math>V_{N_K}</math>中的任意观测函数g可表示为<math>g(\boldsymbol{x}) = \sum_{j=1}^{N_K} \psi_j(\boldsymbol{x}) g_j = \Psi(\boldsymbol{x}) \boldsymbol{g}</math>,其中<math>\boldsymbol{g} \in \mathbb{C}^{N_K}</math>为系数[[向量]]。满足<ref name=Colbrook_2023 /><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>[\mathcal{K}\psi_j](\boldsymbol{x}) = \psi_j(F(\boldsymbol{x})) \approx \sum_{i=1}^{N_K} (K_{\text{EDMD}})_{ij} \psi_i(\boldsymbol{x}), \quad 1 \leq j \leq N_K.</math> | | :<math>[\mathcal{K}\psi_j](\boldsymbol{x}) = \psi_j(F(\boldsymbol{x})) \approx \sum_{i=1}^{N_K} (K_{\text{EDMD}})_{ij} \psi_i(\boldsymbol{x}), \quad 1 \leq j \leq N_K.</math> |
| | | | |
| − | 定义[[向量]]值特征映射<math>\Psi(\boldsymbol{x}) = [\psi_1(\boldsymbol{x}), \dots, \psi_{N_K}(\boldsymbol{x})] \in \mathbb{C}^{1 \times N_K}</math>,则子空间<math>V_{N_K}</math>中的任意观测函数g可表示为<math>g(\boldsymbol{x}) = \sum_{j=1}^{N_K} \psi_j(\boldsymbol{x}) g_j = \Psi(\boldsymbol{x}) \boldsymbol{g}</math>,其中<math>\boldsymbol{g} \in \mathbb{C}^{N_K}</math>为系数[[向量]]。
| + | 基于这个近似,我们可以把Koopman算子<math>\mathcal{K}</math>对任意观测函数 g 的作用拆分成两部分:一部分是用上述近似得到的“可表示项”,另一部分是近似带来的“误差项(残差)”<math>r(g, \boldsymbol{x})</math>,即为: |
| | | | |
| − | 由此可将Koopman[[算子]]对g的作用分解为:
| + | :<math>[\mathcal{K}g](\boldsymbol{x}) = \Psi(F(\boldsymbol{x})) \boldsymbol{g} = \Psi(\boldsymbol{x}) (K_{\text{EDMD}} \boldsymbol{g}) + \underbrace{\sum_{j=1}^{N_K} \psi_j(F(\boldsymbol{x})) g_j - \Psi(\boldsymbol{x}) (K_{\text{EDMD}} \boldsymbol{g})}_{r(g, \boldsymbol{x})}.</math> |
| | | | |
| − | :<math>[\mathcal{K}g](\boldsymbol{x}) = \Psi(F(\boldsymbol{x})) \boldsymbol{g} = \Psi(\boldsymbol{x}) (K_{\text{EDMD}} \boldsymbol{g}) + \underbrace{\sum_{j=1}^{N_K} \psi_j(F(\boldsymbol{x})) g_j - \Psi(\boldsymbol{x}) (K_{\text{EDMD}} \boldsymbol{g})}_{r(g, \boldsymbol{x})}.</math>
| + | 残差项衡量的是“用子空间<math>V_{N_K}</math>近似Koopman算子作用”的误差大小。通常情况下,<math>V_{N_K}</math>并非<math> \mathcal{K} </math>的不变子空间,因此不存在能使<math>\displaystyle{ r(g, \boldsymbol{x}) }</math>对所有<math>\displaystyle{ g \in V_{N_K} }</math>和<math>\boldsymbol{x} \in \Omega</math>均为零的<math>\displaystyle{ K_{\text{EDMD}} }</math>。 |
| | | | |
| − | 通常情况下,<math>V_{N_K}</math>并非<math> \mathcal{K} </math>的不变子空间,因此不存在能使<math>\displaystyle{ r(g, \boldsymbol{x}) }</math>对所有<math>\displaystyle{ g \in V_{N_K} }</math>和<math>\boldsymbol{x} \in \Omega</math>均为零的<math>\displaystyle{ K_{\text{EDMD}} }</math>。此时,EDMD 通过最小化 “残差项<math>\displaystyle{ r(g, \boldsymbol{x}) }</math>的积分范数” 确定<math>\displaystyle{ K_{\text{EDMD}} }</math>,即求解以下优化问题:
| + | 因此,EDMD的核心任务就变成了:找到一个最优的矩阵<math>K_{\text{EDMD}}</math>,让这个残差项的整体误差最小。为了量化“整体误差”,我们用“积分范数”来衡量,对应的优化问题就是: |
| | | | |
| | :<math>\displaystyle{ \arg\min_{B \in \mathbb{C}^{N_K \times N_K}} \left\{ \int_{\Omega} \max_{\substack{g \in \mathbb{C}^{N_K}, \\ \|\boldsymbol{g}\|=1}} |r(g, \boldsymbol{x})|^2 d\omega(\boldsymbol{x}) = \int_{\Omega} \|\Psi(F(\boldsymbol{x})) - \Psi(\boldsymbol{x}) B\|_{\ell^2}^2 d\omega(\boldsymbol{x}) \right\} }</math> | | :<math>\displaystyle{ \arg\min_{B \in \mathbb{C}^{N_K \times N_K}} \left\{ \int_{\Omega} \max_{\substack{g \in \mathbb{C}^{N_K}, \\ \|\boldsymbol{g}\|=1}} |r(g, \boldsymbol{x})|^2 d\omega(\boldsymbol{x}) = \int_{\Omega} \|\Psi(F(\boldsymbol{x})) - \Psi(\boldsymbol{x}) B\|_{\ell^2}^2 d\omega(\boldsymbol{x}) \right\} }</math> |
| | | | |
| − | 其中<math>\|\mathbf{ · }\|_2</math>表示[[向量]]的标准欧几里得范数。实际计算中无法直接对上式的求积分,因此通过 “积分规则”(以<math>\displaystyle{ \{x_j\}_{j=1}^M }</math>为[[节点]],<math>\boldsymbol{y}^{(j)} = F(\boldsymbol{x}^{(j)}) </math>,<math>\displaystyle{ \{w_j\}_{j=1}^M }</math>为权重,<math>M </math>为[[初始条件]]数量)近似积分,将上式转化为加权[[最小二乘]]问题: | + | 其中<math>\|\mathbf{ · }\|_2</math>表示[[向量]]的标准欧几里得范数。不过实际计算中无法直接对上式的求积分(状态空间连续,无法遍历所有状态),因此通过 “数值积分规则”(以<math>\displaystyle{ \{x_j\}_{j=1}^M }</math>为[[节点]],<math>\boldsymbol{y}^{(j)} = F(\boldsymbol{x}^{(j)}) </math>,<math>\displaystyle{ \{w_j\}_{j=1}^M }</math>为权重,<math>M </math>为[[初始条件]]数量)近似积分。通过这种方式,把连续的积分转化为离散的加权和,原来的优化问题就变成了更容易计算的“[[加权最小二乘问题]]”: |
| | | | |
| | :<math>\arg\min_{B\in\mathbb{C}^{N_K \times N_K}} \sum_{j=1}^{M} w_j \|\Psi(y^{(j)}) - \Psi(x^{(j)})B\|_{\ell_2}^2</math> | | :<math>\arg\min_{B\in\mathbb{C}^{N_K \times N_K}} \sum_{j=1}^{M} w_j \|\Psi(y^{(j)}) - \Psi(x^{(j)})B\|_{\ell_2}^2</math> |
| | | | |
| − | 该问题的[[解析解]]可表示为:
| + | 该问题有[[解析解]],这个解就是我们要找的最优近似矩阵<math>K_{\text{EDMD}}</math>,可表示为: |
| | | | |
| | :<math>\displaystyle{ K_{\text{EDMD}} = (\Psi_X^* W \Psi_X)^\dagger (\Psi_X^* W \Psi_Y) }</math> | | :<math>\displaystyle{ K_{\text{EDMD}} = (\Psi_X^* W \Psi_X)^\dagger (\Psi_X^* W \Psi_Y) }</math> |
| | | | |
| − | 其中 “<math>\displaystyle{ \dagger }</math>” 表示[[伪逆]],<math>\displaystyle{ W = \text{diag}(w_1, \dots, w_M) }</math>(对角权重矩阵),<math>\displaystyle{ \Psi_X }</math>和<math>\displaystyle{ \Psi_Y }</math>为矩阵,即, | + | 其中 “<math>\displaystyle{ \dagger }</math>” 表示[[伪逆]],<math>\displaystyle{ W = \text{diag}(w_1, \dots, w_M) }</math>(对角权重矩阵),<math>\displaystyle{ \Psi_X }</math>和<math>\displaystyle{ \Psi_Y }</math>为矩阵,是把所有节点的特征映射向量堆叠起来形成的矩阵——简单说就是“每个行对应一个节点,每个列对应一个观测函数”,具体形式为: |
| | | | |
| | <math>\displaystyle{ \Psi_X = \begin{pmatrix} \Psi(\boldsymbol{x}^{(1)}) \\ \vdots \\ \Psi(\boldsymbol{x}^{(M)}) \end{pmatrix}, \quad \Psi_Y = \begin{pmatrix} \Psi(\boldsymbol{y}^{(1)}) \\ \vdots \\ \Psi(\boldsymbol{y}^{(M)}) \end{pmatrix} }</math> | | <math>\displaystyle{ \Psi_X = \begin{pmatrix} \Psi(\boldsymbol{x}^{(1)}) \\ \vdots \\ \Psi(\boldsymbol{x}^{(M)}) \end{pmatrix}, \quad \Psi_Y = \begin{pmatrix} \Psi(\boldsymbol{y}^{(1)}) \\ \vdots \\ \Psi(\boldsymbol{y}^{(M)}) \end{pmatrix} }</math> |
| | | | |
| − | 故对于<math>\displaystyle{ \mathcal{K} }</math>的候选特征对 <math>(\lambda, g) </math>(<math>\lambda \in \mathbb{C} </math>是候选[[特征值]],<math>g = \Psi \boldsymbol{g} \in V_{N_K}</math>是基于字典的候选[[特征函数]]),残差定义为: | + | 故对于<math>\displaystyle{ \mathcal{K} }</math>的候选特征对 <math>(\lambda, g) </math>(<math>\lambda \in \mathbb{C} </math>是候选[[特征值]],<math>g = \Psi \boldsymbol{g} \in V_{N_K}</math>是基于字典的候选[[特征函数]]),为了衡量这个候选特征对的“靠谱程度”(也就是它偏离真实特征对的程度),我们定义了残差: |
| | | | |
| | :<math>\text{res}(\lambda, g)^2 = \frac{\sum_{j,k=1}^{N_K} \overline{g_j} g_k \left[ (\Psi_Y^* W \Psi_Y)_{jk} - \lambda (\Psi_Y^* W \Psi_X)_{jk} - \overline{\lambda} (\Psi_X^* W \Psi_Y)_{jk} + |\lambda|^2 (\Psi_X^* W \Psi_X)_{jk} \right]}{\sum_{j,k=1}^{N_K} \overline{g_j} g_k (\Psi_X^* W \Psi_X)_{jk}}</math> | | :<math>\text{res}(\lambda, g)^2 = \frac{\sum_{j,k=1}^{N_K} \overline{g_j} g_k \left[ (\Psi_Y^* W \Psi_Y)_{jk} - \lambda (\Psi_Y^* W \Psi_X)_{jk} - \overline{\lambda} (\Psi_X^* W \Psi_Y)_{jk} + |\lambda|^2 (\Psi_X^* W \Psi_X)_{jk} \right]}{\sum_{j,k=1}^{N_K} \overline{g_j} g_k (\Psi_X^* W \Psi_X)_{jk}}</math> |