ml_ct_dss_lqgbt
LQG balanced truncation for descriptor systems.
Contents
Syntax
[Ar, Br, Cr, Dr, Er, info] = ml_ct_dss_lqgbt(A, B, C, D, E) [Ar, Br, Cr, Dr, Er, info] = ml_ct_dss_lqgbt(A, B, C, D, E, opts)
[rom, info] = ml_ct_dss_lqgbt(sys) [rom, info] = ml_ct_dss_lqgbt(sys, opts)
Description
This function computes the generalized linear-quadratic Gaussian balanced truncation for a descriptor system of the form
E*x'(t) = A*x(t) + B*u(t), (1) y(t) = C*x(t) + D*u(t). (2)
Therefore, first an additive decomposition of the system is performed using the matrix disk function, such that
[ Ei 0 ] [ Ai 0 ] [ Ci ] E2 = [ ], A2 = [ ], B2 = [ Bi, Bp ], C2 = [ ], [ 0 Ep ] [ 0 Ap ] [ Cp ]
with (Ei, Ai, Bi, Ci, D) belonging to the polynomial part and (Ep, Ap, Bp, Cp, 0) belonging to the strictly proper part. Now, the two generalized continuous-time Riccati equations
Ap*Pp*Ep' + Ep*Pp*Ap' + Bp*Bp' - (Ep*Pp*Cp' + Bp*M') * inv(Rb) * (Ep*Pp*Cp' + Bp*M')' = 0, Ap'*Qp*Ep + Ep'*Qp*Ap + Cp'*Cp - (Bp'*Qp*Ep + M'*Cp)' * inv(Rc) * (Bp'*Qp*Ep + M'*Cp) = 0
are solved for the reduction of the strictly proper part, with
Rb = I + M*M', Rc = I + M'*M,
where M = D - Ci * inv(Ai) * Bi. Also, the two generalized discrete-time Lyapunov equations
Ai*Pi*Ai' - Ei*Pi*Ei' - Bi*Bi' = 0, Ai'*Qi*Ai - Ei'*Qi*Ei - Ci'*Ci = 0
are solved for the reduction of the polynomial part. As result, a reduced-order system of the form
Er*x'(t) = Ar*x(t) + Br*u(t), (3) y(t) = Cr*x(t) + Dr*u(t) (4)
is computed, such that for the original transfer function G with the (right) coprime factorization G = N*inv(M) and the reduced-order transfer function Gr with an r-th order strictly proper part and the (right) coprime factorization Gr = Nr*inv(Mr) it holds
||[N; M] - [Nr; Mr]||_{\infty} <= 2 * (Hsvp(r+1)/sqrt(1 + Hsvp(r+1)^2) + ... + Hsvp(n)/sqrt(1 + Hsvp(n)^2)),
with Hsvp the vector containing the characteristic LQG singular values of the system.
Input
- A - matrix from (1) with dimensions n x n
- B - matrix from (1) with dimensions n x m
- C - matrix from (2) with dimensions p x n
- D - matrix from (2) with dimensions p x m
- E - matrix from (1) with dimensions n x n
- sys - structure or state-space object, containing the descriptor system's matrices:
Entry | Meaning |
A | matrix from (1) with dimensions n x n |
B | matrix from (1) with dimensions n x m |
C | matrix from (2) with dimensions p x n |
D | matrix from (2) with dimensions p x m |
E | matrix from (1) with dimensions n x n |
- opts - structure, containing the following optional entries:
Parameter | Meaning |
Beta | nonnegative scalar, used as shift of the in Bass' algorithm for better conditioning if StabMethod == 'lyap' is chosen only used if RiccatiSolver = 'newton' default: 0.1 |
caredlopts | structure, containing the optional parameters for the Riccati equation sign function solver, only used if RiccatiSolver = 'sign', see ml_caredl_sgn_fac default: struct() |
careopts | structure, containing the optional parameters for the computation of the continuous-time algebraic Riccati equations, only used if RiccatiSolver = 'newton', see ml_care_nwt_fac default: struct() |
DecompEig | positive scalar, overestimation of the absolute value of the largest finite eigenvalue of s*E - A, if set, replaces the computation with DecompTol default: [] |
DecompTol | nonnegative scalar, tolerance multiplied with the largest singular value of E to determine the smallest non-quasi-zero singular value of E default: log(n)*eps |
gdlyapdlopts | structure, containing the optional parameters for the computation of the generalized discrete-time Lyapunov equations, see ml_gdlyapdl_smith_fac default: struct() |
ImproperTrunc {!} | nonnegative scalar, tolerance multiplied with the largest proper Hankel singular value of the system to truncate the improper part, if 0 no improper balanced truncation is performed default: log(n)*eps |
Index | nonnegative integer, index of the descriptor system used to set an upper bound on the size of the reduced improper part, Inf if unknown default: Inf |
infdecopts | structure, containing the optional parameters for the decomposition of the finite and infinite parts of the system using the disk function and subspace extraction method, see ml_disk and ml_getqz default: struct() |
Method {!} | character array, determining algorithm for the computation of the reduced-order model
|
Order {!} | positive integer, order of the resulting reduced-order model chosen by the user if 'order' is set for OrderComputation default: min(10,length(Hsvp)) + Nu + Ni |
OrderComputation {!} | character array, determining the method for the computation of the size of the reduced-order model
|
RiccatiSolver | character array, determining the solver for the dual Riccati equations
|
stabdecopts | structure, containing the optional parameters for the decomposition of the stable and unstable parts of the system using the sign function and subspace extraction method, only used if RiccatiSolver = 'newton', see ml_signm and ml_getqz default: struct() |
StabMethod | character array, determining the method of stabilization of the system, only used if RiccatiSolver = 'newton'
|
stabmethodopts | structure, containing the optional parameters for the sign function based Lyapunov or Bernoulli equation solver used for the stabilization, only used if RiccatiSolver = 'newton', see ml_cabe_sgn or ml_lyap_sgn default: struct() |
StoreProjection | {0, 1}, used to disable/enable storing of the computed projection matrices W and T default: 0 |
Tolerance {!} | nonnegative scalar, tolerance used for the computation of the size of the reduced-order model by an absolute error bound if 'tolerance' is set for OrderComputation default: 1.0e-02 |
Note: Parameters marked with {!} may also be a cell array containing multiple arguments. In this case an cell array of the same size is returned with one entry computed for each input argument and the marked fields of the info struct are cells as well. When multiple arguments are given as cells, they are expected to have the same length.
Output
- Ar - matrix of (3) with dimensions r x r
- Br - matrix of (3) with dimensions r x m
- Cr - matrix of (4) with dimensions p x r
- Dr - matrix of (4) with dimensions p x m
- Er - matrix of (3) with dimensions r x r
- rom - structure or state-space object, containing the reduced-order descriptor system:
Entry | Meaning |
A | matrix from (3) with dimensions r x r |
B | matrix from (3) with dimensions r x m |
C | matrix from (4) with dimensions p x r |
D | matrix from (4) with dimensions p x m |
E | matrix from (3) with dimensions r x r |
- info - structure, containing the following information:
Entry | Meaning |
AbsErrBound {!} | computed error bound for the absolute error of the (right) coprime factorization in H-infinity norm |
Hsvi | a vector, containing the computed Hankel singular values of the improper part of the system |
Hsvp | a vector, containing the computed characteristic LQG singular values of the proper part of the system |
infoCARE_C | structure, containing information about the Newton solver for the regulator Riccati equation, see ml_care_nwt_fac |
infoCARE_O | structure, containing information about the Newton solver for the filter Riccati equation, see ml_care_nwt_fac |
infoCAREDL | structure, containing information about the sign function solver for the dual Riccati equations, see ml_caredl_sgn_fac |
infoADTF | structure, containing information about the additive decomposition of the system into its infinite, finite stable and finite anti-stable parts, see ml_ct_dss_adtf |
infoGDLYAPDL | structure, containing information about the generalized discrete-time Lyapunov equation solver for the improper Gramians, see ml_gdlyapdl_smith_fac |
infoPARTSTAB_C | structure, containing information about the partial stabilization used for the controllability Riccati equation, see ml_ct_dss_partstab |
infoPARTSTAB_O | structure, containing information about the partial stabilization used for the observability Riccati equation, see ml_ct_dss_partstab |
Nf {!} | Dimension of the finite reduced part in the reduced-order model |
Ni {!} | Dimension of the improper part in the reduced- order model |
T {!} | projection matrix used as right state-space transformation to obtain the resulting block system, if opts.StoreProjection == 1 |
W {!} | projection matrix used as left state-space transformation to obtain the resulting block system, if opts.StoreProjection == 1 |
Reference
See Also