动态模式分解(DMD)

本文详细介绍了动态模式分解(DMD),它可使用相干结构求解或近似动力学系统,将其转换为模式叠加。文中给出了DMD的正式描述,介绍了exact DMD算法,还探讨了Y = AX在差分方程和微分方程组两种情况下对动态系统的解释,展示了DMD在无方程式建模中的应用。

在这里插入图片描述

本文地址:https://goodgoodstudy.blog.youkuaiyun.com/article/details/111873026

动态模式分解

动态模式分解(Dynamic Mode Decomposition,DMD)使用随时间增长、衰减和振荡的相干结构来求解或近似动力学系统。将相干结构称为DMD模式。换句话说,DMD将动力学系统转换为模式的叠加,每个模式的强度由特征值控制。

令人惊讶的是,尽管识别DMD模式和特征值的数学过程是纯线性的,但系统本身却可以是非线性的!

有一个合理的理论基础可以证明非线性系统可以用一组模式和特征值对来描述。在这里不多做讨论,感兴趣的话,可以阅读 Koopman 算子及其与DMD的联系123

DMD不仅是分析系统内部运行情况的有用诊断工具,而且还可以用于预测系统的未来状态。所需要的只是模式和特征值。

正式描述

考虑一组 n n n 个数据对 { ( x 0 , y 0 ) , ( x 1 , y 1 ) , … , ( x n , y n ) } \{(x_0, y_0), (x_1, y_1), \ldots, (x_n, y_n)\} {(x0,y0),(x1,y1),,(xn,yn)},其中 x i x_i xi y i y_i yi 是长度为 m m m 的列向量。现在,我们定义两个 m × n m \times n m×n 矩阵:
X = [ x 0 x 1 … x n ] , Y = [ y 0 y 1 … y n ] X = \begin{bmatrix}x_0 & x_1 & \ldots & x_n\end{bmatrix}, Y = \begin{bmatrix}y_0 & y_1 & \ldots & y_n\end{bmatrix} X=[x0x1xn],Y=[y0y1yn]

如果我们将符号 A A A 定义为
A = Y X † A = YX^{\dagger} A=YX
其中 X † X^{\dagger} X X X X的伪逆4,则对 ( X , Y ) (X, Y) (X,Y) 的动态模式分解由 A A A 的特征分解给出:即DMD模式和特征值是A的特征向量和特征值。

上面的定义来自 (Tu et al)2 ,被称为 exact DMD。它是当前最通用的定义,可以应用于满足给定要求的任何数据集。

在这篇文章中,我们对A满足(或近似满足)方程 y i = A x i , ∀ i y_i = Ax_i, \forall i yi=Axi,i的情况最感兴趣:
Y = A X Y =AX Y=AX
X X X 是一组输入向量, Y Y Y是相应的输出向量集合。 DMD的这种表述非常强大,因为它为分析(和预测)控制方程未知的动力学系统提供了一种便捷的方法。

DMD算法

乍一看,寻找 A = Y X † A = YX^{\dagger} A=YX 的特征分解的任务似乎没什么大不了的。确实,当 X X X Y Y Y 的大小合理时,从 Numpy 或 MATLAB 调用pinveig方法可以解决问题。当 A ∈ R m × m A \in \mathbb{R}^{m \times m} ARm×m 确实很大时,特征分解可能变得麻烦。

幸运的是,借助 exact DMD算法,可以将问题分解为如下几个子任务。

  1. X X X 奇异值分解,可以选择同时执行低阶截断:
    X = U Σ V ∗ X =U\Sigma V^∗ X=UΣV易知 X † = V Σ − 1 U ∗ , A = Y V Σ − 1 U ∗ X^{\dagger} = V\Sigma^{-1} U^∗, A = YV\Sigma^{-1} U^∗ X=VΣ1U,A=YVΣ1U.

  2. 计算 A ~ \tilde{A} A~,即将完整矩阵 A A A 投影到 U U U 上:
    A ~ = U ∗ A U = U ∗ Y X † U = U ∗ Y V Σ − 1 \tilde{A} = U^*AU = U^*YX^{\dagger}U=U^*YV\Sigma^{-1} A~=UAU=UYXU=UYVΣ1

  3. 计算 A ~ \tilde{A} A~ 的特征值 λ i \lambda_i λi 和特征向量 w i w_i wi
    A ~ W = W Λ \tilde{A}W =W\Lambda A~W=WΛ

  4. W W W Λ \Lambda Λ 重构 A A A 的特征分解。 A A A的特征值等于 A ~ \tilde{A} A~ 的特征值。 A A A 的特征向量由 Φ \Phi Φ 的列给出:
    A Φ = Φ Λ , Φ = Y V Σ − 1 W A\Phi = \Phi \Lambda,\Phi = YV\Sigma^{-1}W AΦ=ΦΛΦ=YVΣ1W
    因为
    A Φ = Y V Σ − 1 U ∗ Y V Σ − 1 W = Y V Σ − 1 A ~ W = Y V Σ − 1 W Λ = Φ A \begin{aligned} A\Phi &= YV\Sigma^{-1} U^∗YV\Sigma^{-1}W \\ &= YV\Sigma^{-1}\tilde{A} W \\ &= YV\Sigma^{-1} W \Lambda \\ &= \Phi A \end{aligned} AΦ=YVΣ1UYVΣ1W=YVΣ1A~W=YVΣ1WΛ=ΦA

在参考文献12中可以找到对该算法推导的更深入的解释。以上是 exact DMD模式。

从理论上讲, Φ ∘ = U W \Phi^\circ = UW Φ=UW Φ \Phi Φ 的另一推导,也称为 projected DMD 模式:
A Φ ∘ = Y V Σ − 1 U ∗ U W = Y V Σ − 1 W = U U ∗ Y V Σ − 1 W = U A ~ W = U W Λ = Φ ∘ Λ \begin{aligned} A\Phi^\circ &= YV\Sigma^{-1} U^∗UW \\ &= YV\Sigma^{-1}W \\ &=U U^∗YV\Sigma^{-1} W \\ &= U \tilde{A} W \\ &= U W \Lambda \\ &= \Phi^\circ \Lambda \end{aligned} AΦ=YVΣ1UUW=YVΣ1W=UUYVΣ1W=UA~W=UWΛ=ΦΛ

动态系统

本文仅考虑方程式 Y = A X Y = AX Y=AX 的两种解释。

第一种解释是 A A A定义了一个差分方程:
x i + 1 = A x i x_{i + 1} = Ax_i xi+1=Axi
在这种情况下,算子 A A A 动态系统状态 x i x_i xi 在时间上向前迈出了一步。

假设我们有一个时间序列 D D D
D = [ x 0 x 1 … x n + 1 ] D = \begin{bmatrix}x_0 & x_1 & \ldots & x_{n+1}\end{bmatrix} D=[x0x1xn+1]
其中 x i x_i xi 是在时间步 i i i 处定义系统的 m m m 维状态的列向量。可以这样定义 X X X Y Y Y
X = [ x 0 … x n ] , Y = [ x 1 … x n + 1 ] X = \begin{bmatrix}x_0 & \ldots & x_{n}\end{bmatrix}, \quad Y = \begin{bmatrix} x_1 & \ldots & x_{n+1}\end{bmatrix} X=[x0xn],Y=[x1xn+1]
这样,来自 X X X Y Y Y 的每对列向量对应于差分方程式的单次迭代:
Y = A X Y = AX Y=AX
使用DMD,计算特征分解 A Φ = Φ Λ AΦ=ΦΛ AΦ=ΦΛ。掌握了DMD模式和特征值,动态系统的状态方程可写成:
x k + 1 = A x k = Φ Λ Φ † x k x_{k+1} = Ax_k = ΦΛΦ^\dagger x_k xk+1=Axk=ΦΛΦxk
因此系统状态关于时间步 k k k 的表达式为:
x k = Φ Λ k Φ † x 0 x_k =ΦΛ^kΦ^\dagger x_0 xk=ΦΛkΦx0
若离散时间步长为 Δ t Δt Δt,连续时间 t t t 中的对应函数为
x ( t ) = Φ Λ t / Δ t Φ † x ( 0 ) x(t) = ΦΛ^{t/\Delta t}Φ^\dagger x(0) x(t)=ΦΛt/ΔtΦx(0)

真正令人惊讶的是,仅使用数据就及时定义了显式函数!这是无方程式建模的一个很好的例子。

本文讨论的 Y = A X Y = AX Y=AX 的第二种解释是 A A A定义了一个微分方程组:
x ˙ = A x \dot{x}= Ax x˙=Ax
在这种情况下,矩阵 X X X Y Y Y 将由向量场的 n n n 个样本组成: X X X 的第 i i i 列是位置向量 x i x_i xi Y Y Y 的第 i i i 列是速度向量 x ˙ \dot{x} x˙

在计算DMD之后,时间函数与之前差分方程的情形非常相似。如果 x ( 0 ) x(0) x(0) 是任意初始条件,而 t t t 是连续时间,则
x ( t ) = Φ exp ⁡ ( Λ t ) Φ † x ( 0 ) x(t) = Φ\exp(Λt) Φ^\dagger x(0) x(t)=Φexp(Λt)Φx(0)

参考文献

在这里插入图片描述


  1. Kutz, J. Nathan. Data-driven modeling & scientific computation: methods for complex systems & big data. OUP Oxford, 2013. ↩︎ ↩︎

  2. Tu, Jonathan H., et al. “On dynamic mode decomposition: theory and applications.” arXiv preprint arXiv:1312.0041 (2013). ↩︎ ↩︎ ↩︎

  3. Wikipedia contributors. “Composition operator.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 28 Dec. 2015. Web. 24 Jul. 2016. ↩︎

  4. Wikipedia contributors. “Moore–Penrose pseudoinverse.” Wikipedia, The Free Encyclopedia. Wikipedia, The Free Encyclopedia, 12 May. 2016. Web. 24 Jul. 2016. ↩︎

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

颹蕭蕭

白嫖?

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值