| 第300行: |
第300行: |
| | 2.寻找一个近似线性算子A | | 2.寻找一个近似线性算子A |
| | | | |
| − | 我们假设存在一个线性算子A,使得 xₖ₊₁ ≈ A * xₖ。换句话说,A能够近似地描述系统一步的演化。 | + | 我们假设存在一个线性算子A,使得 <math>x_k+1 ≈ A * x_k</math>。换句话说,A能够近似地描述系统一步的演化。 |
| − | 那么,整个矩阵关系可以写为: X’ ≈ A X | + | |
| | + | 那么,整个矩阵关系可以写为: <math>X’ ≈ A X</math> |
| | + | |
| | + | 3.求解A(使用奇异值分解,SVD) |
| | + | 直接求A很困难(因为数据维度可能很高)。 |
| | + | DMD 的巧妙之处在于,它不去直接计算庞大的 A,而是寻找其主导的特征值和特征模式。 |
| | + | 对矩阵X进行奇异值分解(SVD):<math> X = U Σ V*</math> |
| | + | |
| | + | U:左奇异向量矩阵,包含了数据的主要空间模式。 |
| | + | |
| | + | Σ:奇异值矩阵(对角矩阵),表示这些模式的重要性。 |
| | + | |
| | + | V*:右奇异向量矩阵的共轭转置,包含了时间动力学的信息。 |
| | + | |
| | + | SVD 可以帮我们降维,只保留前 r个重要的模式(即低秩近似)。 |
| | + | |
| | + | 4.在降维空间计算 Ã |
| | + | 庞大的A矩阵可以被投影到降维后的空间(由 U 的列张成)上,得到一个简化的小矩阵 Ã。 |
| | + | |
| | + | 公式为:<math> Ã = U* X' V Σ⁻¹ </math> |
| | + | Ã 可以看作是 A 在主要模式上的一个“精华版”。 |
| | + | |
| | + | 5.计算 Ã 的特征值和特征向量 |
| | + | 求解 Ã 的特征分解: Ã W = W Λ |
| | + | Λ 是一个对角矩阵,其对角线元素就是特征值 λᵢ。这些特征值决定了每个模式的动态行为(增长/衰减/振荡的频率)。 |
| | + | W 的列是对应的特征向量。 |
| | + | |
| | + | 6.重建 DMD 模式(Spatial Modes) |
| | + | Ã的特征向量 W 是在降维空间里的。我们需要把它们映射回原始空间,得到真正的空间模式 Φ。 |
| | + | 公式为: Φ = X' V Σ⁻¹ W |
| | + | Φ 的每一列就是一个 DMD 模式。它代表了数据中一种特定的空间结构。 |
| | + | |
| | + | 7.预测与重构 |
| | + | 任何一个时间点的状态都可以用这些 DMD 模式的线性组合来近似表示: |
| | + | xₖ ≈ Φ Λᵏ⁻¹ b |
| | + | b 是初始振幅向量,可以通过初始条件 x₁求得: b = Φ⁺ x₁(⁺ 表示伪逆)。 |
| | + | Λᵏ⁻¹ 中的特征值 λᵢ决定了第 i个模式随时间如何演化。|λ|>1模式增长,|λ|<1模式衰减,λ是复数则产生振荡。 |
| | | | |
| | ==扩展DMD== | | ==扩展DMD== |