mor.lti

Interface for LTI stable dynamical model and input-output data reduction/approximation.

Syntax

sysr = mor.lti(sys)
sysr = mor.lti(sys,r)
sysr = mor.lti(sys,r,opt)
[sysr,info] = mor.lti(sys,r,opt)

Description

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

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

Input arguments

General standard user arguments

sys Dynamical system or input-output data to be approximated. More specifically sys can either be
  • a state-space ODE (DAE) realization described as sys = ss(A,B,C,D) (or sys = dss(A,B,C,D,E))
  • a matrix set describing an ODE (or DAE) described as sys = {A,B,C,D} (or sys = {A,B,C,D,E})
  • a set of N pulsations of an nu inputs, ny outputs responses described sys = {w_i,H_i}
r Order of the approximating realization (positive interger).
opt Optional arguments, given as a structure. Here a list of available options
  • opt.ensureStab is used to ensure the stability of the reduced order model sysr.
    (boolean, default false)
  • opt.extraInfo is used to provide additional informations of the involved algorithm to the output field info.
    (boolean, default false)
  • opt.ioNormalize is used to normalize the input-output in order to mean the H2-norm over each matrix transfer and thus to mean the amplitudes of each tranfer (this option is helpfull when all transfer hould be equally matched).
    (boolean, default false)
  • opt.method is used to specify the approximation method: 'ITIA', 'ISTIA', 'LOEWNER'.
    (string, default automatic)
  • opt.verbose is used to specify whether the algorithms should display additional information.
    (boolean, default false)

Advanced user arguments

We consider a model to be a very large-scale scale one when its dimension is larger than 2,000 states. In general, for memory limitations, they are stored as sparse matrices rather than state-space model. Refer to the tips at the end of the page for additional remarks.
'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)

Output arguments

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.

Notes and tips

About ITIA, ISTIA and LOEWNER algorithms

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.

What about model reduction of finite LTI model with unstable part?

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.

What about model reduction finite LTI model with unstable, limit and polynomial terms?

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.

How to reduce a stable ODE / DAE model, which method to use?

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:

As a consequence, if one aims at reducing a very large-scale model described by sparse matrices over a frequency-limited band, it is adviced to first approximate it over the entire spectrum using 'ITIA' and then to approximate it over the desired range using 'ISTIA'.

What about DAE?

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.

Examples

Examples are given on the Systems represented by linear ODE / DAE and Systems described by frequency-domain input-output data pages.