Worst-case norm of uncertain matrix
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.
Worst-Case Norm and Condition Number of an Uncertain Matrix
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 tries to align the gains of
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
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
ans = 26.9629
mat — Uncertain matrix
uss model |
umat matrix |
genss model |
genmat matrix | array
Uncertain matrix, specified as a
genss model with uncertain elements, or
matrix with uncertain elements, or an array of such models or matrices.
maxnorm — Bounds on worst-case norm
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.
maxnormunc — Values of uncertain elements resulting in worst-case norm
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
info — Information about sensitivity of worst-case norm
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
matis an array of uncertain matrices
WorstPerturbation— Structure of worst-case uncertainty values.
info.WorstPerturbationis the same as
Sensitivity— Sensitivity of the worst-case norm to each uncertain element, returned as a structure when the
'on'. The fields of
info.Sensitivityare 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.pis 50, then a given fractional change in the uncertainty range of element
pcauses half as much fractional change in the worst-case norm.
optis off (the default setting), then
BadUncertainValues— Same as
ArrayIndex— Same as
Introduced before R2006a