# wcnorm

Worst-case norm of uncertain matrix

## Description

The norm of an uncertain matrix generally depends on the values of its uncertain elements. The maximum norm possible over all allowable values of the uncertain elements is called the worst-case norm.

example

maxnorm = wcnorm(mat) computes lower and upper bounds on the worst-case norm of an uncertain matrix and returns them in a structure with fields LowerBound and UpperBound.

example

[maxnorm,maxnormunc] = wcnorm(mat) also returns a structure that contains the values of the uncertain elements of mat that result in the worst-case norm.

example

[maxnorm,maxnormunc,info] = wcnorm(mat) also returns a structure that contains information about the sensitivities of the worst-case norm to the ranges of the uncertain elements.

example

[___] = wcnorm(mat,opt) specifies options for the worst-case computation, where opt is created using wcOptions.

## Examples

collapse all

Construct an uncertain matrix and compute the worst-case norm of the matrix and of its inverse. These computations let you accurately estimate the worst-case, or the largest, value of the condition number of the matrix.

a = ureal('a',5,'Range',[4 6]);
b = ureal('b',3,'Range',[2 10]);
c = ureal('c',9,'Range',[8 11]);
d = ureal('d',1,'Range',[0 2]);

M = [a b;c d];
Mi = inv(M);

maxnormM = wcnorm(M)
maxnormM = struct with fields:
LowerBound: 14.7199
UpperBound: 14.7227

maxnormMi = wcnorm(Mi)
maxnormMi = struct with fields:
LowerBound: 2.5963
UpperBound: 2.5968

The condition number of M must be less than the product of the two upper bounds for all values of the uncertain elements of M. Conversely, the condition number of the largest value of M must be at least equal to the condition number of the nominal value of M. Compute these bounds on the worst-case value of the condition number.

condUpperBound = maxnormM.UpperBound*maxnormMi.UpperBound;
condLowerBound = cond(M.NominalValue);
[condLowerBound condUpperBound]
ans = 1×2

5.0757   38.2312

The range between these lower and upper bounds is fairly large. You can get a more accurate estimate. Recall that the condition number of an n-by-m matrix M can be expressed as an optimization, where a free norm-bounded matrix $\Delta$ tries to align the gains of M and inv(M):

$\begin{array}{c}\kappa \left(M\right)=\underset{\Delta \in {C}^{m×m}}{\mathrm{max}}\left({\sigma }_{\mathrm{max}}\left(M\Delta {M}^{-1}\right)\right)\\ {\sigma }_{\mathrm{max}}\left(\Delta \right)\le 1\end{array}$

If M is uncertain, then the worst-case condition number involves further maximization over the possible values of M. Therefore, you can compute the worst-case condition number of an uncertain matrix by using a ucomplexm uncertain element and using wcnorm to carry out the maximization.

Create a 2-by-2 ucomplexm element with nominal value 0.

Delta = ucomplexm('Delta',zeros(2,2));

The range of values represented by Delta includes 2-by-2 matrices with the maximum singular value less than or equal to 1.

Create the expression involving M, Delta, and inv(M).

H = M*Delta*Mi;
opt = wcOptions('MussvOptions','m5');
[maxKappa,wcu,info] = wcnorm(H,opt);
maxKappa
maxKappa = struct with fields:
LowerBound: 26.8406
UpperBound: 38.2349

Verify that the values in wcu make the condition number as large as maxKappa.LowerBound.

cond(usubs(M,wcu))
ans = 26.9629

## Input Arguments

collapse all

Uncertain matrix, specified as a uss model, umat matrix, genss model with uncertain elements, or genmat matrix with uncertain elements, or an array of such models or matrices.

Options for the worst-case computation, specified as an options set created using wcOptions.

## Output Arguments

collapse all

Bounds on worst-case norm, returned as a structure with the following fields.

• LowerBound — Lower bound on worst-case norm, returned as a positive scalar.

• UpperBound — Upper bound on worst-case norm, returned as a positive scalar.

Values of uncertain elements resulting in the worst-case norm, returned as a structure whose field names are the names of the uncertain elements of mat and whose field values are is the corresponding value of that element, such that maxnorm.LowerBound = norm(usubs(mat,maxnormunc)).

Information about the sensitivity of the worst-case norm to the uncertain elements, returned as a structure with the following fields.

• Model — Index of model with largest norm, when mat is an array of uncertain matrices

• WorstPerturbation — Structure of worst-case uncertainty values. info.WorstPerturbation is the same as maxnormunc.

• Sensitivity — Sensitivity of the worst-case norm to each uncertain element, returned as a structure when the 'Sensitivity' option of opt is 'on'. The fields of info.Sensitivity are the names of the uncertain elements in mat. Each field contains a percentage that measures how much the uncertainty in the corresponding element affects the worst-case norm. For example, if info.Sensitivity.p is 50, then a given fractional change in the uncertainty range of element p causes half as much fractional change in the worst-case norm.

If the 'Sensitivity' option of opt is off (the default setting), then info.Sensitivity is NaN.

• BadUncertainValues — Same as WorstPerturbation.

• ArrayIndex — Same as Model.

See wcgain.

## Version History

Introduced before R2006a