pymor.algorithms.dmd

Module Contents

pymor.algorithms.dmd.dmd(X, Y=None, modes=None, atol=None, rtol=None, cont_time_dt=None, type='exact', order='magnitude', svd_method='method_of_snapshots', return_A_approx=False, return_A_tilde=False)[source]

Dynamic Mode Decomposition.

See Algorithm 1 and Algorithm 2 in [TRL+14].

Parameters:
  • X – The VectorArray for which the DMD algorithm is performed. If Y is given, X and Y are the left resp. right snapshot series.

  • Y – The VectorArray of the right snapshot series.

  • modes – Maximum number of singular vectors of X to take into account.

  • atol – Absolute truncation tolerance for singular values of X.

  • rtol – Relative truncation tolerance for singular values of X.

  • cont_time_dt – If not None, return continuous-time DMD eigenvalues with scaling log(lambda) / dt.

  • type

    • ‘standard’: uses the standard definition to compute the dynamic modes

      Wk = U * evecs, where U are the left singular vectors of X.

    • ’exact’ : computes the exact dynamic modes, Wk = (1/evals) * Y * V * Sigma_inv * evecs.

  • order – Sort DMD eigenvalues either by 'magnitude' or 'phase'.

  • svd_method – Which SVD method from svd_va to use ('method_of_snapshots' or 'qr_svd').

  • return_A_approx – If True, the approximation of the operator A with AX=Y is returned as a LowRankOperator.

  • return_A_tilde – If True the low-rank dynamics are returned.

Returns:

  • WkVectorArray containing the dynamic modes. The number of computed modes is given by the SVD truncation rank determined by the modes, atol and rtol arguments.

  • evals – Discrete or continuous time DMD eigenvalues.

  • A_approxLowRankOperator containing the approximation of the operator A with AX=Y. Only provided if return_A_approx is True.

  • A_tilde – Low-rank dynamics. Only provided if return_A_tilde is True.