Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dynamic Mode Decomposition

Dynamic Mode Decomposition

SVD(特異値分解)を用いたDynamic Mode Decompositionの話

E2dd989b2ba0f83d8a981b9cb3197bf1?s=128

mocobt

May 02, 2021
Tweet

Transcript

  1. Dynamic Mode Decomposition 1 Dynamic Mode Decomposition About Dynamic Mode

    Decomposition ( 動的モード分解): ⼒学系の近似⼿法の⼀つ。DMD と略す。 Dynamic Mode Decomposition 時間 によって変化する動的システムの⼊⼒ と出⼒ に対して、 時間間隔 でsampling して得られる 個の列を考える。 ただし、 とする。 このとき、 は「1 timestep 毎の空間上の点の個数」であり、 は「timestep 数」である。 ここで、⾏列 について、対象とする動的システムが線形であるときに限り、 を満たす⾏列 が考えられる。 Dynamic Mode Decomposition とは、この を求める⼿法である。 なお、流体のDynamics をDMD により近似する際には、⼊⼒と出⼒に対して共通の系列 ( ただし、 ) を⽤いることが多い。 例えば、各 は格⼦法の各格⼦点上の物理量を表す。 すなわち、 として、 t ∈ R x(t) ∈ Rn y(t) ∈ Rn Δt ∈ R m (x ,y ),(x ,y ),...,(x ,y ) 1 1 2 2 m m x ≜ k x(kΔt), y ≜ k y(kΔt) (k = 1,2,...,m) n m X ≜ [x ,x ,...,x ], Y ≜ 1 2 m [y ,y ,...,y ] ∈ 1 2 m Rn×m Y = AX A ∈ Rn×n A {z ,z ,...,z } 0 1 m z ∈ k Rn zk x = k z ,y = k−1 k zk X ≜ [z ,z ,...,z ] 0 1 m−1 Y ≜ [z ,z ,...,z ] 1 2 m
  2. Dynamic Mode Decomposition 2 とする。 A の求め⽅ 計算⼒学で⽤いられる は⼤きいため、 (

    は の疑似逆⾏列) は計算し難い。 そのため、以下の⼿順で を求める。 以下にPython によるコード例を⽰す。 # 1. X: [n, m], Y: [n, m] X, Y = remove_bias(X, Y) # 2. U: [n, r], sigma: [r] (diagonal), V: [m, r] U, sigma, V = svd(X, r) # 3. A_tilde: [r, r] A_tilde = U.T.conj() @ Y @ V * (1.0 / s) # 4. W: [r, r], Lambda: [r] W, Lambda = calc_eig(A_tilde) # 5. modes: [n, r] modes = ((Y @ V) * (1.0 / 2)) @ W 1. からBias を取り除く (Optional) Debias DMD のReference: 2. に対してSVD を適⽤し、低位成分を取り除く ただし、 は複素共役を表し、 , , とする。 なお は「SVD を適⽤した後、低位成分を取り除いた の近似のrank 」である。 左特異値ベクトル⾏列 はPOD Proper orthogonal decomposition; 固有直交分解) modes であり、 の各列から成るベクトル群は正規直交系である。すなわち、 である。 同様に、 である。 低位成分を取り除くためのReference: 3. を により射影し、 を求める はPOD modes から成る座標系上での動的システムの低次元線形モデルであり、以下を満たす。 n A ≜ YX† X† X A X, Y X X ≃ UΣV ∈ ∗ Rn×m ∗ U ∈ Cn×r Σ ∈ r×r Cr×r V ∈ Cm×r r X U U U U = ∗ I ∈ Rr×r V V = ∗ I ∈ Rr×r A U A ~ ≜ A ~ U AU = ∗ U YVΣ ∈ ∗ −1 Rr×r A ~ = y ~ k A ~ x ~ k
  3. Dynamic Mode Decomposition 3 ただし、 である。 4. の固有値 と固有ベクトル を求める

    ここで、 の各列 は固有ベクトルであり、 は対⻆成分に固有値 を含む対⻆⾏列である。 5. と から の固有値分解を再構成する の固有値は の固有値と⼀致することが知られている。 また、 は の固有ベクトルDMD mode) となる。 これを⽰す。 命題: 以上により得られた はそれぞれ の固有値, 、固有ベクトルである。 証明: から、 の擬似逆⾏列 は と表せる。 よって にこれを代⼊して、 が得られる。 ただし、 とする。 この を に代⼊すると、 が得られる。 ここで、 ( ただし ) として、 と置くと、 が得られる。 以上の議論により、 は の固有値 に対応する固有ベクトルである。□ 以上で求めた固有値、固有ベクトルにより を復元することができる。 の各列を とすると、 が成り⽴つので、 とすれば良い。 また、得られた固有値、固有ベクトルにより未来の状態を近似したい場合、 として、以下の式で近似できる。 ここで、 は各mode の初期振幅とし、 は対⻆成分に を持つ対⻆⾏列とする。 補⾜ y = k U ,x = y ~ k k Ux ~ k A ~ λi wi W = A ~ WΛ W ∈ Rr×r w ∈ i R (0 ≤ r i < r) Λ ∈ Rr×r λ (0 ≤ i i < r) W Λ A A A ~ φ ≜ i YVΣ w ∈ λi 1 −1 i R (0 ≤ n i < r) A (φ ,λ ) i i A X ≃ UΣV ∈ ∗ Rr×m X X† X = † VΣ U ∈ −1 ∗ Rm×r A ≜ YX ∈ † Rn×r A = YVΣ U = −1 ∗ BU∗ B ≜ YVΣ ∈ −1 Rn×r B = A ~ U YVΣ ∈ ∗ −1 Rr×r = A ~ U B ∗ w = A ~ i λ w i i λ = i  0 φ = i Bw λi 1 i Aφ = i BU Bw = λi 1 ∗ i B w = λi 1 A ~ i Bw = i λ φ i i φi A λi A Φ ∈ Rn×r φ ∈ i R (0 ≤ n i < r) AΦ = ΦΛ A = ΦΛΦ† ω = k ln(λ )/Δt k x(t) ≈ φ exp(ω t)b = k=1 ∑ r k k k Φexp(Ωt)b bk Ω = diag(ω) ωk
  4. Dynamic Mode Decomposition 4 のscaling 必要に応じて は適当なscalar でscaling し、 とすることが多い。

    DMD の呼び⽅ 以上の定義で ( もしくは ) を導出する⽅法をexactDMD と呼ぶ。 これに対し、 とする⽅法をprojectedDMD と呼ぶ。 「慣習的に2 通りの表現⽅法が存在する」程度の認識で良い。 DMD の直感的な図⽰ ⼤まかな流れは以下の図がわかりやすい Reference 中の『Dynamic Mode Decomposition: Data-Driven Modeling of Complex Systems 』の Chapter2 より引⽤) 固有値の値によって対応するmode がどのような振る舞いをしているかがわかる。 φi φi φ ≜ i YVΣ w ∈ −1 i Rn φi φ ^i φ ≜ i Uw ∈ i R (0 ≤ n i < r)
  5. Dynamic Mode Decomposition 5 固有値が1 より⼤きい場合 → 発散 固有値が1 の場合

    → 定常的 固有値が1 未満の場合 → 減衰 に対する制約 を満たす ⾃体に⾮負成約を加えたい場合は別の⼿段で を導出する必要がある。 Data-Driven Analysis of Dynamical Systems Based on the Koopman Operator : A Machine Learning Perspective Data-Driven Analysis of Dynamical Systems Based on the Koopman Operator : A Machine Learning Perspective 武⽯, 直也 University of Tokyo( 東京⼤学) 20180322 https://ci.nii.ac.jp/naid/500001363310 Reference Dynamic Mode Decomposition | Society for Industrial and Applied Mathematics Data-driven dynamical systems is a burgeoning field-it connects how measurements of nonlinear dynamical systems and/or complex systems can be used with well-established methods in dynamical systems theory. This is a critically important new direction https://epubs.siam.org/doi/book/10.1137/1.9781611974508 Dynamic Mode Decomposition in Python The Dynamic Mode Decomposition DMD is a relatively recent mathematical innovation that can convert a dynamical system into a superposition of modes whose dynamics are governed by eigenvalues. In this post, I demonstrate how http://www.pyrunner.com/weblog/2016/07/25/dmd-python/ 動的モード分解に関する覚書 - とつとつとしてろうとせず 注意 以下の記述は私的な備忘録であり、内容の正確さに関しては⼀切保証いたしませんので、悪しからず。 はじめに 流体解析など の分野でデータ解析や縮約 ... https://iqujack-lequina.hatenablog.com/entry/2018/05/20/%E5%8B%95%E7%9A%84%E3%83%A2%E3%83%BC%E3%83% 89%E5%88%86%E8%A7%A3%E3%81%AB%E9%96%A2%E3%81%99%E3%82%8B%E8%A6%9A%E6%9B%B8 A Y = AX A A