Worst-case norm of uncertain matrix
maxnorm = wcnorm(m) [maxnorm,wcu] = wcnorm(m) [maxnorm,wcu] = wcnorm(m,opts) [maxnorm,wcu,info] = wcnorm(m) [maxnorm,wcu,info] = wcnorm(m,opts)
The norm of an uncertain matrix generally depends on the values of its uncertain elements. Determining the maximum norm over all allowable values of the uncertain elements is referred to as a worst-case norm analysis. The maximum norm is called the worst-case norm.
As with other uncertain-system analysis tools, only bounds on the worst-case norm are computed. The exact value of the worst-case norm is guaranteed to lie between these upper and lower bounds.
mat is a
uss with M uncertain elements.
The results of
[maxnorm,maxnormunc] = wcnorm(mat)
maxnorm is a structure with the following
Lower bound on worst-case norm, positive scalar.
Upper bound on worst-case norm, positive scalar.
maxnormunc is a structure that includes values
of uncertain elements and maximizes the matrix norm. There are M field
names, which are the names of uncertain elements of
The value of each field is the corresponding value of the uncertain
element, such that when jointly combined, lead to the norm value in
The following command shows the norm:
A third output argument provides information about sensitivities of the worst-case norm to the uncertain elements ranges.
[maxnorm,maxnormunc,info] = wcnorm(mat)
The third output argument
info is a structure
with the following fields:
Index of model with largest gain (when
Structure of worst-case uncertainty values. The fields
|Same as |
|Same as |
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) maxnormMi = wcnorm(Mi)
maxnormM = struct with fields: LowerBound: 14.7199 UpperBound: 14.7227 maxnormMi = struct with fields: LowerBound: 2.5963 UpperBound: 2.5975
The condition number of
M must be less
than the product of the two upper bounds for all values of the uncertain
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
Compute these bounds on the worst-case value of the condition number.
condUpperBound = maxnormM.UpperBound*maxnormMi.UpperBound; condLowerBound = cond(M.NominalValue); [condLowerBound condUpperBound]
ans = 5.0757 38.2414
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
be expressed as an optimization, where a free norm-bounded matrix Δ tries
to align the gains of
M is uncertain, then the worst-case condition
number involves further maximization over the possible values of
Therefore, you can compute the worst-case condition number of an uncertain
matrix by using a
ucomplexm uncertain element
wcnorm to carry out the maximization.
Create a 2-by-2
with nominal value 0.
Delta = ucomplexm('Delta',zeros(2,2));
The range of values represented by Δ includes 2-by-2 matrices with the maximum singular value less than or equal to 1.
Create the expression involving
H = M*Delta*Mi;
wcnorm use multiple restarts. This option
can further improve the lower bound computation.
opt = wcOptions('MussvOptions','m5'); [maxKappa,wcu,info] = wcnorm(H,opt); maxKappa
maxKappa = struct with fields: LowerBound: 26.8406 UpperBound: 38.2579
Verify that the values in
the condition number as large as
ans = 26.9629