fit()#
- DiscreteModel.fit(states, nextstates=None, inputs=None)[source]#
Learn the model operators from data.
The operators are inferred by solving the regression problem
\[\min_{\Ohat}\sum_{j=0}^{k-1}\left\| \fhat(\qhat_j, \u_j) - \zhat_{j} \right\|_2^2 = \min_{\Ohat}\left\| \D\Ohat\trp - [~\zhat_0~~\cdots~~\zhat_{k-1}~]\trp \right\|_F^2\]where \(\zhat_j = \fhat(\qhat_j, \u_j)\) is the model and
\(\qhat_j\in\RR^r\) is a measurement of the state,
\(\u_j\in\RR^m\) is a measurement of the input, and
\(\zhat_j\in\RR^r\) is a measurement of the next state iteration after \(\qhat_j\),
\(\Ohat\in\RR^{r\times d(r,m)}\) is the operator matrix such that \(\fhat(\q,\u) = \Ohat\d(\qhat,\u)\) for some data vector \(\d(\qhat,\u)\in\RR^{d(r,m)}\), and
\(\D\in\RR^{k\times d(r,m)}\) is the data matrix given by \([~\d(\qhat_0,\u_0)~~\cdots~~\d(\qhat_{k-1},\u_{k-1})~]\trp\),
See the
opinf.operators
module for further explanation.The strategy for solving the regression, as well as any additional regularization or constraints, are specified by the
solver
.- Parameters:
- states(r, k) ndarray
Snapshot training data. Each column is a single snapshot.
- nextstates(r, k) ndarray or None
Next iteration training data. Each column
nextstates[:, j]
is the iteration followingstates[:, j]
. IfNone
, usenextstates[:, j] = states[:, j+1]
.- inputs(m, k) or (k,) ndarray or None
Input training data. Each column
inputs[:, j]
corresponds to the snapshotstates[:, j]
. May be a one-dimensional array ifm=1
(scalar input).
- Returns:
- self