当前位置: 首页 > news >正文

动态模式分解(DMD)

在这里插入图片描述

本文地址:https://goodgoodstudy.blog.csdn.net/article/details/111873026

文章目录

  • 动态模式分解
  • 正式描述
  • DMD算法
  • 动态系统
  • 参考文献

动态模式分解

动态模式分解(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. ↩︎

相关文章:

  • 使用 Unbound 创建DNS服务器
  • 最优奇异值硬阈值 SVHD
  • FTP服务器关于断点续传权限的防范问题
  • HAMILTONIAN SYSTEMS AND TRANSFORMATIONS IN HILBERT SPACE (KOOPMAN, 1931)
  • 使用Bind配置DNS Load Balancing
  • Koopman 算子理论参考文献
  • 计算一阶导数的四阶中心差分格式
  • Hankel alternative view of Koopman (HAVOK) analysis
  • SharePoint列表导入/导出命令
  • 奇怪吸引子图鉴
  • 百度网盘提速
  • 全球十大交响乐团
  • Stacked Broad Learning System: From Incremental Flatted Structure to Deep Model
  • 深入了解TOMCAT SERVER
  • linux 笔记
  • Android框架之Volley
  • Docker 1.12实践:Docker Service、Stack与分布式应用捆绑包
  • ES6--对象的扩展
  • ES6语法详解(一)
  • Promise面试题2实现异步串行执行
  • SOFAMosn配置模型
  • spring-boot List转Page
  • Vue.js 移动端适配之 vw 解决方案
  • 记录一下第一次使用npm
  • 你真的知道 == 和 equals 的区别吗?
  • 如何将自己的网站分享到QQ空间,微信,微博等等
  • 深度学习入门:10门免费线上课程推荐
  • 线上 python http server profile 实践
  • 栈实现走出迷宫(C++)
  • 带你开发类似Pokemon Go的AR游戏
  • ​比特币大跌的 2 个原因
  • ​马来语翻译中文去哪比较好?
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (27)4.8 习题课
  • (zt)最盛行的警世狂言(爆笑)
  • (备忘)Java Map 遍历
  • (笔记)Kotlin——Android封装ViewBinding之二 优化
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)php新闻发布平台 毕业设计 141646
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。
  • (转)linux自定义开机启动服务和chkconfig使用方法
  • (转)平衡树
  • .NET Remoting Basic(10)-创建不同宿主的客户端与服务器端
  • .NET单元测试
  • .NET构架之我见
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .Net中间语言BeforeFieldInit
  • .net中我喜欢的两种验证码
  • @Autowired多个相同类型bean装配问题
  • @DateTimeFormat 和 @JsonFormat 注解详解
  • @html.ActionLink的几种参数格式
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [Android] Upload package to device fails #2720