Main Content

simplify

Simplify representation of uncertain object

Syntax

B = simplify(A)
B = simplify(A,'full')
B = simplify(A,'basic')
B = simplify(A,'class')

Description

B = simplify(A) performs model-reduction-like techniques to detect and eliminate redundant copies of uncertain elements. Depending on the result, the class of B may be lower than A. The AutoSimplify property of each uncertain element in A governs what reduction methods are used. After reduction, any uncertain element which does not actually affect the result is deleted from the representation.

B = simplify(A,'full') overrides all uncertain element's AutoSimplify property, and uses 'full' reduction techniques.

B = simplify(A,'basic') overrides all uncertain element's AutoSimplify property, and uses 'basic' reduction techniques.

B = simplify(A,'class') does not perform reduction. However, any uncertain elements in A with zero occurrences are eliminated, and the class of B may be lower than the class of A.

Examples

Create a simple umat with a single uncertain real parameter. Select specific elements, note that result remains in class umat. Simplify those same elements, and note that class changes.

p1 = ureal('p1',3,'Range',[2 5]); 
L = [2 p1]; 
L(1) 
UMAT: 1 Rows, 1 Columns 
L(2) 
UMAT: 1 Rows, 1 Columns 
  p1: real, nominal = 3, range = [2  5], 1 occurrence 
simplify(L(1)) 
ans = 
     2 
simplify(L(2)) 
Uncertain Real Parameter: Name p1, NominalValue 3, Range [2  5] 

Create four uncertain real parameters, with a default value of AutoSimplify('basic'), and define a high order polynomial [1].

m = ureal('m',125000,'Range',[100000 150000]); 
xcg = ureal('xcg',.23,'Range',[.15 .31]); 
zcg = ureal('zcg',.105,'Range',[0 .21]); 
va = ureal('va',80,'Range',[70 90]); 
cw = simplify(m/(va*va)*va,'full') 
UMAT: 1 Rows, 1 Columns 
   m: real, nominal = 1.25e+005, range = [100000  150000],
1 occurrence 
  va: real, nominal = 80, range = [70  90], 1 occurrence               
cw = m/va; 
fac2 = .16726*xcg*cw*cw*zcg - .17230*xcg*xcg*cw ... 
      -3.9*xcg*cw*zcg - .28*xcg*xcg*cw*cw*zcg ... 
      -.07*xcg*xcg*zcg + .29*xcg*xcg*cw*zcg ... 
      + 4.9*xcg*cw - 2.7*xcg*cw*cw ... 
      +.58*cw*cw - 0.25*xcg*xcg - 1.34*cw ... 
      +100.1*xcg -14.1*zcg - 1.91*cw*cw*zcg ... 
      +1.12*xcg*zcg + 24.6*cw*zcg ... 
      +.45*xcg*xcg*cw*cw - 46.85 
UMAT: 1 Rows, 1 Columns 
    m: real, nominal = 1.25e+005, range = [100000  150000],
18 occurrences 
   va: real, nominal = 80, range = [70  90], 8 occurrences                
  xcg: real, nominal = 0.23, range = [0.15  0.31], 18 occurrences         
  zcg: real, nominal = 0.105, range = [0  0.21], 1 occurrence 

The result of the high-order polynomial is an inefficient representation involving 18 copies of m, 8 copies of va, 18 copies of xcg and 1 copy of zcg. Simplify the expression, using the 'full' simplification algorithm

fac2s = simplify(fac2,'full') 
UMAT: 1 Rows, 1 Columns 
    m: real, nominal = 1.25e+005, range = [100000  150000],
4 occurrences 
   va: real, nominal = 80, range = [70  90], 4 occurrences               
  xcg: real, nominal = 0.23, range = [0.15  0.31], 2 occurrences         
  zcg: real, nominal = 0.105, range = [0  0.21], 1 occurrence 

which results in a much more economical representation.

Alternatively, change the AutoSimplify property of each parameter to 'full' before forming the polynomial.

m.AutoSimplify = 'full'; 
xcg.AutoSimplify = 'full'; 
zcg.AutoSimplify = 'full'; 
va.AutoSimplify = 'full'; 

You can form the polynomial, which immediately gives a low order representation.

cw = m/va; 
fac2f = .16726*xcg*cw*cw*zcg - .17230*xcg*xcg*cw ... 
      -3.9*xcg*cw*zcg - .28*xcg*xcg*cw*cw*zcg ... 
      -.07*xcg*xcg*zcg + .29*xcg*xcg*cw*zcg ... 
      + 4.9*xcg*cw - 2.7*xcg*cw*cw ... 
      +.58*cw*cw - 0.25*xcg*xcg - 1.34*cw ... 
      +100.1*xcg -14.1*zcg - 1.91*cw*cw*zcg ... 
      +1.12*xcg*zcg + 24.6*cw*zcg ... 
      +.45*xcg*xcg*cw*cw - 46.85 
UMAT: 1 Rows, 1 Columns 
    m: real, nominal = 1.25e+005, range = [100000  150000],
4 occurrences 
   va: real, nominal = 80, range = [70  90], 4 occurrences               
  xcg: real, nominal = 0.23, range = [0.15  0.31], 2 occurrences         
  zcg: real, nominal = 0.105, range = [0  0.21], 1 occurrence 

Create two real parameters, da and dx, and a 2-by-3 matrix, ABmat, involving polynomial expressions in the two real parameters.

da = ureal('da',0,'Range',[-1 1]); 
dx = ureal('dx',0,'Range',[-1 1]); 
a11 = -.32 + da*(.8089 + da*(-.987 + 3.39*da)) + .15*dx; 
a12 = .934 + da*(.0474 - .302*da); 
a21 = -1.15 + da*(4.39 + da*(21.97 - 561*da*da)) ... 
     + dx*(9.65 - da*(55.7 + da*177)); 
a22 = -.66 + da*(1.2 - da*2.27) + dx*(2.66 - 5.1*da); 
b1 = -0.00071 + da*(0.00175 - da*.00308) + .0011*dx; 
b2 = -0.031 + da*(.078 + da*(-.464 + 1.37*da)) + .0072*dx; 
ABmat = [a11 a12 b1;a21 a22 b2] 
UMAT: 2 Rows, 3 Columns 
  da: real, nominal = 0, range = [-1  1], 19 occurrences 
  dx: real, nominal = 0, range = [-1  1], 2 occurrences 

Use 'full' simplification to reduce the complexity of the description.

ABmatsimp = simplify(ABmat,'full') 
UMAT: 2 Rows, 3 Columns 
  da: real, nominal = 0, range = [-1  1], 7 occurrences 
  dx: real, nominal = 0, range = [-1  1], 2 occurrences 

Alternatively, you can set the parameter's AutoSimplify property to 'full'.

da.AutoSimplify = 'full'; 
dx.AutoSimplify = 'full'; 

Now you can rebuild the matrix

a11 = -.32 + da*(.8089 + da*(-.987 + 3.39*da)) + .15*dx; 
a12 = .934 + da*(.0474 - .302*da); 
a21 = -1.15 + da*(4.39 + da*(21.97 - 561*da*da)) ... 
     + dx*(9.65 - da*(55.7 + da*177)); 
a22 = -.66 + da*(1.2 - da*2.27) + dx*(2.66 - 5.1*da); 
b1 = -0.00071 + da*(0.00175 - da*.00308) + .0011*dx; 
b2 = -0.031 + da*(.078 + da*(-.464 + 1.37*da)) + .0072*dx; 
ABmatFull = [a11 a12 b1;a21 a22 b2] 
UMAT: 2 Rows, 3 Columns 
  da: real, nominal = 0, range = [-1  1], 7 occurrences 
  dx: real, nominal = 0, range = [-1  1], 2 occurrences 

Limitations

Multidimensional model reduction and realization theory are only partially complete theories. The heuristics used by simplify are that - heuristics. The order in which expressions involving uncertain elements are built up, eg., distributing across addition and multiplication, can affect the details of the representation (i.e., the number of occurrences of a ureal in an uncertain matrix). It is possible that simplify's naive methods cannot completely resolve these differences, so one may be forced to work with “nonminimal” representations of uncertain systems.

Algorithms

simplify uses heuristics along with one-dimensional model reduction algorithms to partially reduce the dimensionality of the representation of an uncertain matrix or system.

References

[1] Varga, A. and G. Looye, “Symbolic and numerical software tools for LFT-based low order uncertainty modeling,” IEEE International Symposium on Computer Aided Control System Design, 1999, pp. 5-11.

[2] Belcastro, C.M., K.B. Lim and E.A. Morelli, “Computer aided uncertainty modeling for nonlinear parameter-dependent systems Part II: F-16 example,” IEEE International Symposium on Computer Aided Control System Design, 1999, pp. 17-23.

Version History

Introduced before R2006a

See Also

| | | |