更改

删除2,332字节 、 2025年11月15日 (六) 15:25
第242行: 第242行:     
==动力学模式分解(DMD)==
 
==动力学模式分解(DMD)==
−
 
+
动力学模式分解(DMD,Dynamic Mode Decomposition)最初由 Schmid
−
动力学模式分解是对Koopman模式分解的一种近似。这意味着,DMD的特征值将近似Koopman算子的特征值,DMD中的模式将近似Koopman算子的模式,DMD中的振幅将近似Koopman算子特征函数在初始条件下的取值。
  −
 
  −
动力学模式分解(DMD)最初由 Schmid
   
<ref name=Schmid_2008>P. J. Schmid and J. Sesterhenn, Dynamic mode decomposition of numerical and experimental data, in 61st Annual Meeting of the APS Division of Fluid Dynamics, American Physical Society, 2008. (Cited on pp. 249, 258)</ref>
 
<ref name=Schmid_2008>P. J. Schmid and J. Sesterhenn, Dynamic mode decomposition of numerical and experimental data, in 61st Annual Meeting of the APS Division of Fluid Dynamics, American Physical Society, 2008. (Cited on pp. 249, 258)</ref>
 
<ref name=Schmid_2010>P. J. Schmid, Dynamic mode decomposition of numerical and experimental data, J. Fluid Mech., 656 (2010), pp. 5--28. (Cited on pp. 231, 237, 238, 249, 250, 255, 258, 284, 292)</ref>
 
<ref name=Schmid_2010>P. J. Schmid, Dynamic mode decomposition of numerical and experimental data, J. Fluid Mech., 656 (2010), pp. 5--28. (Cited on pp. 231, 237, 238, 249, 250, 255, 258, 284, 292)</ref>
第253行: 第250行:  
<ref name=Tu_2014> </ref>
 
<ref name=Tu_2014> </ref>
 
<ref name=Kutz_2016>J. N. Kutz, S. L. Brunton, B. W. Brunton, and J. L. Proctor, Dynamic Mode Decomposition: Data-Driven Modeling of Complex Systems, SIAM, Philadelphia, 2016, https://doi.org/10.1137/1.9781611974508. (Cited on pp. 231, 249, 251, 252, 256, 278, 284)</ref>
 
<ref name=Kutz_2016>J. N. Kutz, S. L. Brunton, B. W. Brunton, and J. L. Proctor, Dynamic Mode Decomposition: Data-Driven Modeling of Complex Systems, SIAM, Philadelphia, 2016, https://doi.org/10.1137/1.9781611974508. (Cited on pp. 231, 249, 251, 252, 256, 278, 284)</ref>
−
[368, 435, 225]。Rowley 等人
+
[368, 435, 225]。
 +
 
 +
2009年Rowley 等人
 
<ref name=Rowley_2009>C. W. Rowley, I. Mezi\' c, S. Bagheri, P. Schlatter, and D. Henningson, Spectral analysis of nonlinear flows, J. Fluid Mech., 645 (2009), pp. 115--127. (Cited on pp. 231, 237, 238, 246, 249, 255, 256, 258, 259, 284, 292)</ref>
 
<ref name=Rowley_2009>C. W. Rowley, I. Mezi\' c, S. Bagheri, P. Schlatter, and D. Henningson, Spectral analysis of nonlinear flows, J. Fluid Mech., 645 (2009), pp. 115--127. (Cited on pp. 231, 237, 238, 246, 249, 255, 256, 258, 259, 284, 292)</ref>
 
[368] 建立了 DMD 与 Koopman 算子的首次联系。DMD 算法最初是为了从高维时间序列数据中识别时空相干结构而开发的,这些结构在流体动力学中常见。DMD 基于计算高效的奇异值分解(SVD),在流体动力学中也称为本征正交分解(POD),因此它为高维数据提供了可扩展的降维。SVD 根据每个模式捕获原始数据方差的程度对模式进行分层排序;这些模式即使在数据的时间顺序被打乱时也保持不变。相比之下,DMD 模式是 SVD 模式的线性组合,这些组合被专门选择以提取在时间上具有相同相干线性行为的空间相关结构,表现为以固定频率振荡并伴随增长或衰减。因此,DMD 可以被视为空间上的 SVD/POD 与时间上的傅里叶变换的结合,结合了每种方法的优点  
 
[368] 建立了 DMD 与 Koopman 算子的首次联系。DMD 算法最初是为了从高维时间序列数据中识别时空相干结构而开发的,这些结构在流体动力学中常见。DMD 基于计算高效的奇异值分解(SVD),在流体动力学中也称为本征正交分解(POD),因此它为高维数据提供了可扩展的降维。SVD 根据每个模式捕获原始数据方差的程度对模式进行分层排序;这些模式即使在数据的时间顺序被打乱时也保持不变。相比之下,DMD 模式是 SVD 模式的线性组合,这些组合被专门选择以提取在时间上具有相同相干线性行为的空间相关结构,表现为以固定频率振荡并伴随增长或衰减。因此,DMD 可以被视为空间上的 SVD/POD 与时间上的傅里叶变换的结合,结合了每种方法的优点  
第261行: 第260行:     
===DMD算法的详细步骤===
 
===DMD算法的详细步骤===
 +
假设有一个系统,每隔一段时间 Δt就测量一次系统的状态。比如,一个网格上有 100x100 个点,每个点的温度、压力等数据组成一个很长的向量。采样测量了 m+1个时间点。
 +
下图是一张关于DMD算法在流体流动应用上的示意图。
 +
图中左侧展示了一系列实验图像,时间t从上到下增加,表示流体流经圆柱体时的动态变化。
 +
中间部分是数据收集和处理过程,通过矩阵运算将实验数据转换为适合分析的形式。
 +
右侧展示了DMD的应用,包括诊断和时间动力学预测,以及未来状态的预测。图中使用红色虚线标注了过去和未来的时间线,并有彩色图形表示动态模式。
   −
假设我们有一个系统,我们每隔一段时间 Δt就测量一次系统的状态。比如,一个网格上有 100x100 个点,每个点的温度、压力等数据组成一个很长的向量。我们测量了 m+1个时间点。
+
[[文件:DMD算法图3.1.png|410x410px|替代=]]
−
 
  −
1.组建数据矩阵
  −
 
  −
·将每个时间点的测量数据(一个很长的向量)排成一列。
  −
 
  −
·把前<math>m</math>个时间点的数据组成矩阵<math> X: X = [x_1, x_2, ..., x_m] </math>
     −
·把后<math>m</math>个时间点的数据组成矩阵<math> X': X' = [x_2, x_3, ..., x_{m+1}] </math>
+
DMD算法:
   −
·直观理解:<math>X'</math>中的每一列都是<math>X</math>中对应列在下一个时间点的状态。
+
1.组建矩阵X和X'
 +
如上图中间的“collect data”.
   −
2.寻找一个近似线性算子A,并求解A(使用奇异值分解,SVD)
+
2.对矩阵X进行奇异值分解(SVD):<math> X = U Σ V*</math>
   −
我们假设存在一个线性算子A,使得 <math>x_{k+1} ≈ A * x_k</math>。换句话说,A能够近似地描述系统一步的演化。
+
通过SVD可以降维,只保留前 r个重要的模式(即低秩近似)。
   −
那么,整个矩阵关系可以写为: <math>X’ ≈ A X</math>
+
3.计算Ã: Ã = U* X' V Σ⁻¹  
−
 
  −
直接求A很困难(因为数据维度可能很高)。
  −
 
  −
DMD 的巧妙之处在于,它不去直接计算庞大的 A,而是寻找其主导的特征值和特征模式。
  −
 
  −
对矩阵X进行奇异值分解(SVD):<math> X = U Σ V*</math>
  −
 
  −
<math>U</math>:左奇异向量矩阵,包含了数据的主要空间模式。
  −
 
  −
<math>Σ</math>:奇异值矩阵(对角矩阵),表示这些模式的重要性。
  −
 
  −
<math>V*</math>:右奇异向量矩阵的共轭转置,包含了时间动力学的信息。
  −
 
  −
SVD 可以帮我们降维,只保留前 r个重要的模式(即低秩近似)。
  −
 
  −
3.在降维空间计算 Ã,并计算 Ã 的特征值和特征向量
  −
 
  −
庞大的A矩阵可以被投影到降维后的空间(由 U 的列张成)上,得到一个简化的小矩阵 Ã。
  −
 
  −
公式为: Ã = U* X' V Σ⁻¹  
      
à 可以看作是 A 在主要模式上的一个“精华版”。
 
à 可以看作是 A 在主要模式上的一个“精华版”。
   −
求解 Ã 的特征分解: Ã W = W Λ
+
4.计算Ã 的特征分解: Ã W = W Λ
    
Λ 是一个对角矩阵,其对角线元素就是特征值 <math>λᵢ</math>。这些特征值决定了每个模式的动态行为(增长/衰减/振荡的频率)。
 
Λ 是一个对角矩阵,其对角线元素就是特征值 <math>λᵢ</math>。这些特征值决定了每个模式的动态行为(增长/衰减/振荡的频率)。
第308行: 第287行:  
W的列是对应的特征向量。
 
W的列是对应的特征向量。
   −
4.重建 DMD 模式(Spatial Modes)
+
5.DMD 模式(Spatial Modes)
−
 
  −
Ã的特征向量W是在降维空间里的。我们需要把它们映射回原始空间,得到真正的空间模式 <math>Φ</math>。
  −
 
  −
公式为: <math>Φ = X' V Σ⁻¹ W </math>
  −
 
  −
<math>Φ</math>的每一列就是一个 DMD 模式。它代表了数据中一种特定的空间结构。
  −
 
  −
5.预测与重构
  −
 
  −
任何一个时间点的状态都可以用这些 DMD 模式的线性组合来近似表示:
  −
<math>x_k ≈ Φ Λᵏ⁻¹ b </math>
  −
 
  −
b是初始振幅向量,可以通过初始条件 <math>x_1</math>求得: <math>b = Φ⁺ x_1(⁺ 表示伪逆)</math>。
  −
 
  −
<math>Λᵏ⁻¹</math> 中的特征值 <math>λᵢ</math>决定了第 i个模式随时间如何演化。<math>|λ|>1</math>模式增长,<math>|λ|<1</math>模式衰减,<math>λ</math>是复数则产生振荡。
  −
 
  −
下图是一张关于DMD算法在流体流动应用上(雷诺数为100)的示意图。图中左侧展示了一系列实验图像,时间t从上到下增加,表示流体流经圆柱体时的动态变化。中间部分是数据收集和处理过程,通过矩阵运算将实验数据转换为适合分析的形式。右侧展示了DMD的应用,包括诊断和时间动力学预测,以及未来状态的预测。图中使用红色虚线标注了过去和未来的时间线,并有彩色图形表示动态模式。
  −
 
  −
[[文件:DMD算法图3.1.png|410x410px|替代=]]
  −
 
  −
 
      
==扩展DMD==
 
==扩展DMD==
235

个编辑