You are here

Routine mulb_mixed

Compute (skew-)$\mu$ lower bounds for mixed perturbations.

Description

This routine computes (skew-)$\mu$ lower bounds for an interconnection between a nominal LTI system $M(s)$ and a block-diagonal operator $\Delta(s)=diag\left(\Delta_1(s),\dots,\Delta_N(s)\right)$, where $\Delta_i(s)=\delta_iI_{n_i}$ ($\delta_i$ real or complex), or $\Delta_i(s)$ is a stable and proper real-rational unstructured transfer function. A power algorithm is run at each point of a frequency grid. The considered stability region can be bounded either by the imaginary axis or by a truncated sector.

This routine can also be used to solve a worst-case $\mathcal{H}_\infty$ performance problem, which is nothing but a specific skew-$\mu$ problem. A fictitious stable and proper real-rational unstructured transfer matrix $\Delta_c(s)$ is first added between the output $y$ and the input $e$, and its size is then minimized under the constraint that there exists a value of $\Delta(s)\in\mathcal{B}_{\bf\Delta}$ such that the interconnection between $M(s)$ and $diag(\Delta(s),\Delta_c(s))$ is unstable. An example is given at the bottom of this page. In this case, the output argument lbnd is a lower bound on the worst-case $\mathcal{H}_\infty$ norm of the transfer matrix from $e$ to $y$.

Syntax

[lbnd,wc,pert,tab]=mulb_mixed(sys,blk{,options})

Input arguments

The first two input arguments are mandatory:

sys LTI object describing the nominal system $M(s)$. It can also be a 2-D or 3-D numeric array corresponding to the frequency response of $M(s)$ on a grid.
blk Matrix defining the structure of the block-diagonal operator $\Delta(s)=diag\left(\Delta_1(s),...,\Delta_N(s)\right)$. Its first 2 columns must be defined as follows for all $i=1,...,N$:

  • blk(i,1:2)=[-ni 0] $\Rightarrow$ $\Delta_i(s)=\delta_iI_{n_i}$ with $\delta_i$ real.
  • blk(i,1:2)=[ni 0] $\Rightarrow$ $\Delta_i(s)=\delta_iI_{n_i}$ with $\delta_i$ complex,
  • blk(i,1:2)=[ni ni] $\Rightarrow$ $\Delta_i(s)$ is a $n_i\times n_i$ LTI system.

A third column can be used to specify skew uncertainties:

  • blk(i,3)=0 $\Rightarrow$ $\overline{\sigma}(\Delta_i(j\omega))\le 1$ for all $\omega\in\Omega$,
  • blk(i,3)=1 $\Rightarrow$ $\overline{\sigma}(\Delta_i(j\omega))\le 1/$lbnd for all $\omega\in\Omega$, where lbnd is maximized.

If none, blk(i,3) is set to 1 for all $i=1,...,N$.

The third input argument options is an optional structured variable with fields:

freq Frequency interval $\Omega$ in rad/s on which the lower bound is to be computed. The default value is options.freq=[0 10*max(abs(eig(sys)))]. This parameter is ignored if sys is a numeric array.
grid Frequency grid in rad/s ($1\times m$ array). It can also be a negative integer -$m$, in which case a $m$-point grid is automatically generated from $\Omega$. The default value is options.grid=-50. This parameter is ignored if sys is a numeric array.
sector Vector $[\alpha\ \xi]$ or $[\alpha\ \xi\ \omega_c]$ characterizing the considered truncated sector (see display_sector for a complete description). The default value is options.sector=[0 0], which means that the left half plane is considered. This parameter is ignored if sys is a numeric array.
target The algorithm is interrupted if a lower bound is found which is greater than options.target. The default value is options.target=Inf.
epsilon A (skew-)$\mu$ lower bound $\tilde{\mu}$ is acceptable if a perturbation $\tilde{\Delta}$ of norm 1/$\tilde{\mu}$ and a frequency $\omega_c$ are found, which satisfy $|\mbox{det}(I-M(j\omega_c)\tilde{\Delta})|<\epsilon$, where $M(j\omega_c)$ is the frequency response of $M(s)$ at $j\omega_c$ (or at the corresponding point on the boundary of the truncated sector defined by options.sector). The default value is options.epsilon=1e-8.
trace Trace of execution. The default value is options.trace=1.
warn Warnings display. The default value is options.warn=1.
power Tuning parameters of the power algorithm (1x4 array). At each frequency:

  • a run using the previous results as an initialization is performed if options.power(1) is nonzero.
  • a run with a deterministic initialization is performed if options.power(2) is nonzero.
  • options.power(3) runs are performed with a random initialization.
  • at most options.power(4) iterations are performed at each run.

The default value is options.power=[1 0 1 100].

refine If nonzero, the initial frequency grid is refined near peak values of the (skew-)$\mu$ lower bound. The default value is options.refine=1. This parameter is ignored if sys is a numeric array.

Output arguments

lbnd Best (skew-)$\mu$ lower bound on the considered frequency interval $\Omega$.
wc Frequency $\omega_c$ in rad/s for which lbnd has been computed.
pert Unless lbnd=0, every perturbation $\tilde{\Delta}(s)$ whose frequency response $\tilde{\Delta}(\omega_c)$ at $j\omega_c$ (or at the corresponding point on the boundary of the truncated sector defined by options.sector) is equal to pert satisfies $\mbox{det}(I-M(\omega_c)\tilde{\Delta}(\omega_c))\approx 0$, where $M(\omega_c)$ is the frequency response of $M(s)$.
tab Structured variable with fields:

  • lbnd: other (skew-)$\mu$ lower bounds ($m\times 1$ array).
  • wc: associated frequencies in rad/s ($m\times 1$ array).
  • pert: associated destabilizing perturbations ($n\times n\times m$ array, where $n=\displaystyle\sum_{i=1}^{N}{n_i}$).

Examples

1. Computation of a skew-$\mu$ lower bound

System with 10 states and 3 uncertainties. The second one is kept inside the unit ball:
sys=rss(10,5,5)/100;
blk=[-2 0 1;-1 0 0;2 2 1];
options.sector=[0.1 0];
[lbnd,wc,pert]=mulb_mixed(sys,blk,options);lbnd
display_sector(options.sector,lft(sys,pert));

One of the eigenvalues of the interconnection lies just outside the considered sector.
abs(det(eye(5)-calc_freq_resp(sys,wc,options.sector)*pert))
The value of $\mbox{det}(I-M(\omega_c)\tilde{\Delta}(\omega_c))$ is almost equal to 0.

2. Computation of a lower bound on the worst-case $\mathcal{H}_\infty$ norm

System with 10 states and 2 uncertainties, which are both kept inside the unit ball. The third block of $\Delta(s)$ corresponds to the performance channel:
blk=[-2 0 0;-1 0 0;2 2 1];
[lbnd,wc,tab]=mulb_mixed(sys,blk,options);lbnd

See also

mulb
mulb_1real
mulb_nreal
hinflb_real
gen_grid
display_sector

Reference

[1] G. Ferreres and V. Fromion, "Robustness analysis using the $\nu$ tool", in Proceedings of the 35th IEEE Conference on Decision and Control, Kobe, Japan, December 1996, pp. 4566-4571.