LFRT version 2.0: approximations
It is often quite easy to guess a good approximation of a given LFR-object, for example from engineering knowledge or by using order reduction tools. This page shows how to use order reduction tools for approximation (reduclfr). Then, it is shown how to evaluate precisely the approximation errors (udistlfr) so that additional parameters can be defined for modelling these approximation errors (bnds2lfr). Function reduclfrThe following academic example will be considered (note the small terms that will be removed after approximation).
lfrs a b c
S1 = [3+0.001*a^5-b*c a^4*c;a*b*c^3+2 a^2-0.001*b*c^3+1];
size(S1)
LFR-object with 2 output(s), 2 input(s) and 0 state(s).
Uncertainty blocks (globally (23 x 23)):
Name Dims Type Real/Cplx Full/Scal Bounds
a 12x12 LTI r s [-1,1]
b 3x3 LTI r s [-1,1]
c 8x8 LTI r s [-1,1]
The function reduclfr is used for automatic approximation. This function searches the best tolerance argument of the order reduction algorithms implemented in the functions minlfr or minlfr1. The second argument of reduclfr defines the expected maximum amount of approximation error, the third argument 'a' means that we consider absolute error. S2 = reduclfr(S1,0.01,'a'); Initial size :23 Dichotomy:16>16>16>16>12>12>12>12>12>12>12>12>12>2>12> End because order "oscillations" size(S2) LFR-object with 2 output(s), 2 input(s) and 0 state(s). Uncertainty blocks (globally (12 x 12)): Name Dims Type Real/Cplx Full/Scal Bounds a 6x6 LTI r s [-1,1] b 2x2 LTI r s [-1,1] c 4x4 LTI r s [-1,1]
Function udistlfrThe 3rd and 4th output arguments of udistlfr give element-wise outer-bounds of approximation errors. [distu,dist2,mindiff,maxdiff] = udistlfr(S1,S2); Diff. entries (1,1) -> Percent: 100 Diff. entries (1,2) -> No uncertainties Diff. entries (2,1) -> No uncertainties Diff. entries (2,2) -> Percent: 100 disp(mindiff); -0.0012 0 0 -0.0012 disp(maxdiff); 0.0012 0 0 0.0012
Function bnds2lfrIt remains to replace the approximation errors by additional normalized real parameters.
syserr = bnds2lfr('s_',mindiff,maxdiff);
S3 = S2 + syserr;
size(S3)
LFR-object with 2 output(s), 2 input(s) and 0 state(s).
Uncertainty blocks (globally (14 x 14)):
Name Dims Type Real/Cplx Full/Scal Bounds
a 6x6 LTI r s [-1,1]
b 2x2 LTI r s [-1,1]
c 4x4 LTI r s [-1,1]
s_1_1 1x1 LTI r s [-0.0012252,0.0012252]
s_2_2 1x1 LTI r s [-0.0012221,0.0012221]
In conclusion, S1 was reduced from order 23 to 14. Two additional parameters
s_1_1 and s_2_2 represent the approximation error in order to
offer a guarantee that worst cases are not missed if µ-analysis is applied to S3.
|