![]() |
KerMor
0.9
Model order reduction for nonlinear dynamical systems and nonlinear approximation
|
Describes how scaling is implemented in KerMor.
Oftentimes appropriate scaling is important when dealing with physical constants etc. KerMor allows to scale both state space and time.
The base dynamical system structure of KerMor is as follows:
\begin{align} x'(t) &= f(x(t),t,\mu) + B(t,\mu)u(t)\\ x(0) &= x_0(\mu)\\ y(t) &= C(t,\mu)x(t) \end{align}
Now scaling can be performed on x(t)
level. The models.BaseDynSystem.StateScaling property can be set either to a scalar value or a vector of the size of system's full dimension, denoting the scaling of each dimension individually.
When state space scaling is used, the given real/unscaled initial values will be transformed according to the scaling, and the resulting output C(t,\mu)
will be provided with the re-scaled state variables. This is realized by a diagonal matrix S
in the following way:
\begin{align} x'(t) &= f(x(t),t,\mu) + B(t,\mu)u(t)\\ x(0) &= S^{-1}x_0(\mu)\\ y(t) &= C(t,\mu)Sx(t) \end{align}
When reduced models are created from full models, the scaling is included in the reduced model, as the scaling process is possibly of a high dimension and thus not suitable for online computations. The system below shows how the online matrices are computed for reduced models:
\begin{align} z'(t) &= W^tf(Vz(t),t,\mu) + \underbrace{W^tB(t,\mu)}_{\tilde{B(t,\mu)}}u(t)\\ z(0) &= \underbrace{W^tS^{-1}}_{\tilde{W_s}}x_0(\mu)\\ y(t) &= \underbrace{C(t,\mu)SV}_{\tilde{C(t,\mu)}}z(t) \end{align}
Time scaling in KerMor is easy. The models.BaseModel.dt and models.BaseModel.T determine the real simulation times, and the models.BaseModel.tau scalar the time scaling. The scaled times are used automatically inside the simulations. This means all components must expect scaled times if scaling is used.
t_i
. Using the models.BaseModel.simulate method will yield the re-scaled time steps.