sysr = mor.lti(sys)
sysr = mor.lti(sys,r)
sysr = mor.lti(sys,r,opt)
[sysr,info] = mor.lti(sys,r,opt)
sysr = mor.lti(sys,r)
performs the approximation of sys
with a rational function sysr
defined by a realization of order r
. The input sys
can either be
sys = ss(A,B,C,D)
(or sys = dss(A,B,C,D,E)
) sys = {A,B,C,D}
(or sys = {A,B,C,D,E}
)sys = {w_i,H_i}
mor.learn
[sysr,info] = mor.lti(sys,r)
provides additional output informations, function of the employed method.[sysr,info] = mor.lti(sys,r,opt)
allows you to specify additional options for the optimizer.
sys | Dynamical system or input-output data to be approximated. More specifically sys can either be
|
r | Order of the approximating realization (positive interger). |
opt | Optional arguments, given as a structure. Here a list of available options
|
'ITIA' |
'ISTIA' |
'LOEWNER' |
Description | |
Suitable for... | Very-large scale and sparse state-space models |
Large-scale and dense state-space models |
Input-output frequency-domain data |
|
opt.checkH2 |
✔ | ✔ | opt.checkH2 is used to check at each iteration if the mismatch error H2-norm is improved. Note that this optiion should be set true if the model to be reduced is stable.(boolean, default false ) |
|
opt.maxIter |
✔ | ✔ | opt.maxIter is used to specify the maximal number of iterations.(positive integer, default 30 ) |
|
opt.restart |
✔ | ✔ | opt.restart is used to specify the number of restart. Note that adding restart may lead to non-reproducible results as a random shift point set is used.(positive integer, default 0 ) |
|
opt.tol |
✔ | ✔ | opt.tol is used to specify the tolerance of the algorithm stopping criteria.(positive real, default 1e-2 ) |
|
opt.checkROMevo |
✔ | ✔ | checkROMevo is used as an additional stopping criteria. It checks the H2-norm variation.(boolean, default true ) |
|
opt.shiftPoint |
✔ | ✔ | opt.shiftPoint is used to specify the shift point initial selection for the iterative scheme.(positive real vector r x 1, default automatically selected) |
|
opt.Li |
✔ | ✔ | opt.Li is used to specify the left interpolation diections.(positive real ny x r, default automatically selected) |
|
opt.Ri |
✔ | ✔ | opt.Ri is used to specify the right interpolation diections.(positive real nu x r, default automatically selected) |
|
opt.forceRHP |
✔ | ✔ | opt.forceRHP is used to enforce right hand side shift selection.(boolean, default false ) |
|
opt.eigen |
✔ | ✔ | opt.eigen is used to specify the r_eig < r eigenvalues to be kept. When specified, the algorithm search the closest eigenvelues to the one of opt.eigen .(complex vector r_eig x 1, default [] ) |
|
opt.gram |
✔ | opt.gram is used to specify the Gramian used in the optimization. It can be the controllability 'c' or the observability 'o' one.(string, default 'o' ) |
||
opt.freqBand |
✔ | ✔ | opt.freqBand is used to focus the approximation over the frequency opt.freqBand = [w1 w2] where w1 < w2 (in rad/s).(1 x 2 positive real vector, default [0 inf] ) |
|
opt.filter |
✔ | opt.filter is used to perform a digital filtering of the input data contained in sys = {w_i,H_i} , using Savitzky-Golay digital filtering. (positive integer greater than 1, default 1 ) |
||
opt.sample |
✔ | opt.sample is used to perform an under sampling of the data sys = {w_i,H_i} . (positive integer greater than 1, default 1 ) |
sysr | Rational approximation model of order r . More specifically sysr is provided as a state-space ODE (DAE) realization. |
info | Additional output informations, depending on the involved method. Structure of data. |
Both ITIA and ISTIA routines are iterative fixed point procedures that should converge to a local optimum point, in the sense of the H2-norm. The two methods are iterative procedures. The 'ITIA'
is well adapted to very large-scale models and the 'ISTIA'
is efficient for medium-scale. However, as presented on the adanced features below, the 'ISTIA'
offers a wide range of properties and features to approximate a model, preserves the model stability and is relatively faster and more robust in medium-scale cases.
LOEWNER is a one shot interpolation method that does not involve any iteration. As it is a data-driven approach, no norm optimality can be obtained.
The methods developped in the toolbox are oriented to stable systems. Unstable models can still be approximated using 'ITIA'
methods, but no guarantee can be given on the results.
In general, if possible, we advise any user to decompose the stable and unstable part of the model (the unstable part typically contains non-negative eigenvalues). To this aim, one may use the mor.learn
method, which will perform the decomposition. Still, if it is not possible, one should go with the 'ITIA'
method.
As pointed above, the ITIA and ISTIA routines are mainly adressed to stable LTI models. Therefore, in case of model including unstable, limit of stability eigenvalues or polynomial terms, it is preferable to separate them from the model to reduce (see also mor.learn
). The LOEWNER approach is suited to any transfer functions but does not provide any optimality guaranty in term of mismatch error.
The mor.lti
interface automatically selects the approximation options, including the method. Still, in some cases, depending on the type of model, it can be interesting to select the method. Our experience encourages users to try the following strategy for the opt.method
field:
'ITIA'
algorithm should be invoked.
'ISTIA'
'ITIA'
'ITIA'
and then to approximate it over the desired range using 'ISTIA'
.
When a model is descibed in a descriptor form, the left hand side matrix before the derivative term can be different from identity. The mor.lti
interface treats this problem and can be able to produce a reduced model by invoking the method as follows: sysr = mor.lti(dss(A,B,C,D,E),r)
or sysr = mor.lti({A,B,C,D,E},r)
.
However, in the case where the E
matrix is singular (rank deflective), the model frequency response might present a polynomial part. This case is a quite specific problem and no guarantee can be given in the actual version of the toolbox.
In the case where the E
matrix is invertivle, no issue should be pointed.
From a practical point of view, when a descriptor model has to be approximated, we will use the 'ITIA'
method rather than the 'ISTIA'
one. In addition, in the presence of polynomial part and rank deflective E
matrix, the LOEWNER approach may beconsidered if the frequency response can be computed.