Compute lower bounds on the worst-case $\mathcal{H}_\infty$ norm for real perturbations.
Description
This routine computes lower bounds on the worst-case $\mathcal{H}_\infty$ norm for an interconnection between a nominal LTI system $M(s)$ and a block-diagonal operator $\Delta=diag\left(\Delta_1,\dots,\Delta_N\right)$, where $\Delta_i=\delta_iI_{n_i}$ and $\delta_i$ is real. Lower bounds are first computed on a rough frequency grid. A series of quadratic programming problems is then solved using these results as an initialization.
Let $\mathcal{B}_{\bf\Delta}$ be the set of all admissible block-diagonal operators $\Delta$ such that $|\delta_i|<1$ for all $i=1,\dots,N$. Assume that the interconnection between $M(s)$ and $\Delta$ is stable for all $\Delta\in\mathcal{B}_{\bf\Delta}$. Let $\mathcal{F}_u(M(s),\Delta)$ denote the transfer matrix from $e$ to $y$, which must be square (see make_square). The worst-case $\mathcal{H}_\infty$ norm is defined by:
$$\max_{\Delta\in\mathcal{B}_{\bf\Delta}} \|\mathcal{F}_u(M(s),\Delta)\|_\infty$$
where the $\mathcal{H}_\infty$ norm can be computed either on the imaginary axis or on the boundary of a truncated sector.
Note: The aim is not to compute a lower bound as a function of frequency but to compute a lower bound over the whole frequency range. The frequency for which the largest singular value of the transfer matrix from $e$ to $y$ is maximum is left free during the optimization and can be very far from the initial one. Thus, a rough initial grid is usually sufficient to capture the most critical frequencies.
Syntax
[lbnd,wc,pert,tab]=hinflb_real(sys,blk{,options})
Input arguments
The first two input arguments are mandatory:
sys | LTI object describing the nominal system $M(s)$. |
blk | Matrix defining the structure of the block-diagonal operator $\Delta=diag\left(\Delta_1,...,\Delta_N\right)$. Its first 2 columns must be defined as follows 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)))] . |
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=-10 . |
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. |
target | The algorithm is interrupted if a lower bound is found which is greater than options.target. The default value is options.target=Inf. |
trace | Trace of execution. The default value is options.trace=1 . |
warn | Warnings display. The default value is options.warn=1 . |
wpar | If zero, frequency is treated as an additional parameter in $\Delta$ and the problem is solved on the intervals [grid(1) grid(2)],...,[grid(end-1) grid(end)] . The default value is options.wpar=0 . |
prec | Level of precision of the final result (options.prec=2 $\Leftrightarrow$ good precision, options.prec=1 $\Leftrightarrow$ faster but potentially less precise). The default value is options.prec=1 . |
local | If zero, the algorithm focuses on the global worst-case configuration. Otherwise, it also tries to detect local maxima, but the probability to determine the global worst-case configuration is lower. The default value is options.local=0 . |
method | $1\times 2$ array defining the method used for the line search:
|
Output arguments
lbnd | Best lower bound on the worst-case $\mathcal{H}_\infty$ norm on the considered frequency interval $\Omega$. |
wc | Frequency $\omega_c$ in rad/s for which lbnd has been computed. |
pert | Associated value of $\tilde{\Delta}$: unless lbnd=0 , the largest singular value of $\mathcal{F}_u(M(\omega_c),\tilde{\Delta})$ is equal to lbnd , where $M(\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 ). |
tab | Structured variable with fields:
|
Example
System with 10 states and 2 uncertainties. The last two inputs and outputs correspond to the performance channel:sys=rss(10,5,5);
sys=ss(sys.a-0.1*eye(10),sys.b/10,sys.c/10,sys.d/100);
blk=[-2 0;-1 0];
options.sector=[-0.05 0]; [lbnd,wc,pert,tab]=hinflb_real(sys,blk,options); max(svd(lft(pert,calc_freq_resp(sys,wc,options.sector))))-lbnd
See also
mulb
mulb_1real
mulb_nreal
mulb_mixed
gen_grid
display_sector
Reference
[1] | C. Roos, "A practical approach to worst-case $\mathcal{H}_\infty$ performance computation", in Proceedings of the IEEE Multiconference on Systems and Control, Yokohama, Japan, September 2010, pp. 380-385. |