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

Wk

VectorArray 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_approx

LowRankOperator 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.