## Documentation Center |

Specify term content of LMIs

lmiterm(termID,A,B,flag)

`lmiterm` specifies the
term content of an LMI one term at a time. Recall that *LMI
term* refers to the elementary additive terms involved in
the block-matrix expression of the LMI. Before using `lmiterm`,
the LMI description must be initialized with `setlmis` and
the matrix variables must be declared with `lmivar`.
Each `lmiterm` command adds one extra term to the
LMI system currently described.

LMI terms are one of the following entities:

outer factors

constant terms (fixed matrices)

variable terms

*AXB*or*AX*^{T}*B*where*X*is a matrix variable and*A*and*B*are given matrices called the term coefficients.

When describing an LMI with several blocks, remember to specify **only the terms in the blocks on or below the diagonal** (or
equivalently, only the terms in blocks on or above the diagonal).
For instance, specify the blocks (1,1), (2,1), and (2,2) in a two-block
LMI.

In the calling of `lmiterm`, `termID` is
a four-entry vector of integers specifying the term location and the
matrix variable involved.

where positive p is for terms on the *left-side* of
the *p*-th LMI and negative p is for terms on the *right-side* of
the *p*-th LMI.

Recall that, by convention, the left side always refers to the
smaller side of the LMI. The index `p` is relative
to the order of declaration and corresponds to the identifier returned
by `newlmi`.

where `x` is the identifier of the matrix variable `X` as
returned by `lmivar`.

The arguments `A` and `B` contain
the numerical data and are set according to:

Type of Term | A | B |
---|---|---|

outer factor | matrix value of | omit |

constant term C | matrix value of | omit |

variable term
| matrix value of (1 if | matrix value of |

Note that identity outer factors and zero constant terms need not be specified.

The extra argument `flag` is optional and concerns
only conjugated expressions of the form

(*AXB*) + (*AXB ^{T}*)
=

in *diagonal blocks*. Setting `flag
= 's'` allows you to specify such expressions with a single `lmiterm` command.
For instance,

lmiterm([1 1 1 X],A,1,'s')

adds the symmetrized expression *AX* + *X ^{T}*

lmiterm([1 1 1 X],A,1) lmiterm([1 1 1 -X],1,A')

Aside from being convenient, this shortcut also results in a more efficient representation of the LMI.

Consider the LMI

where *X*_{1}, *X*_{2} are
matrix variables of Types 2 and 1, respectively, and *x*_{3} is
a scalar variable (Type 1).

After initializing the LMI description with `setlmis` and
declaring the matrix variables with `lmivar`, the
terms on the left side of this LMI are specified by:

lmiterm([1 1 1 X2],2*A,A') % 2*A*X2*A' lmiterm([1 1 1 x3],-1,E) % -x3*E lmiterm([1 1 1 0],D*D') % D*D' lmiterm([1 2 1 -X1],1,B) % X1'*B lmiterm([1 2 2 0],-1) % -I

Here `X1, X2, X3` should be the variable identifiers
returned by `lmivar`.

Similarly, the term content of the right side is specified by:

lmiterm([-1 0 0 0],M) % outer factor M lmiterm([-1 1 1 X1],C,C','s') % C*X1*C'+C*X1'*C' lmiterm([-1 2 2 X2],-f,1) % -f*X2

Note that *CX*_{1}*C ^{T}* +

Was this topic helpful?