DMD with control

Derived module from dmdbase.py for dmd with control.

Reference: - Proctor, J.L., Brunton, S.L. and Kutz, J.N., 2016. Dynamic mode decomposition with control. SIAM Journal on Applied Dynamical Systems, 15(1), pp.142-161.

class DMDc(svd_rank=0, tlsq_rank=0, opt=False, svd_rank_omega=-1)[source]

Bases: pydmd.dmdbase.DMDBase

Dynamic Mode Decomposition with control. This version does not allow to manipulate the temporal window within the system is reconstructed.

Parameters
  • svd_rank (int or float) – the rank for the truncation; If 0, the method computes the optimal rank and uses it for truncation; if positive interger, the method uses the argument for the truncation; if float between 0 and 1, the rank is the number of the biggest singular values that are needed to reach the ‘energy’ specified by svd_rank; if -1, the method does not compute truncation.

  • tlsq_rank (int) – rank truncation computing Total Least Square. Default is 0, that means no truncation.

  • opt (bool or int) – argument to control the computation of DMD modes amplitudes. See DMDBase. Default is False.

  • svd_rank_omega (int or float) – the rank for the truncation of the aumented matrix omega composed by the left snapshots matrix and the control. Used only for the _fit_B_unknown method of this class. It should be greater or equal than svd_rank. For the possible values please refer to the svd_rank parameter description above.

property B

Get the operator B.

Returns

the operator B.

Return type

numpy.ndarray

property basis

Get the basis used to reduce the linear operator to the low dimensional space.

Returns

the matrix which columns are the basis vectors.

Return type

numpy.ndarray

fit(X, I, B=None)[source]

Compute the Dynamic Modes Decomposition with control given the original snapshots and the control input data. The matrix B that controls how the control input influences the system evolution can be provided by the user; otherwise, it is computed by the algorithm.

Parameters
  • X (numpy.ndarray or iterable) – the input snapshots.

  • I (numpy.ndarray or iterable) – the control input.

  • B (numpy.ndarray or iterable) – matrix that controls the control input influences the system evolution.

reconstructed_data(control_input=None)[source]

Return the reconstructed data, computed using the control_input argument. If the control_input is not passed, the original input (in the fit method) is used. The input dimension has to be consistent with the dynamics.

Parameters

control_input (numpy.ndarray) – the input control matrix.

Returns

the matrix that contains the reconstructed snapshots.

Return type

numpy.ndarray

property svd_rank_omega