Download as pdf or txt
Download as pdf or txt
You are on page 1of 4

Exercise 1: Computing µ

1 Purpose

Compute upper and lower bounds for the structured singular value of constant matrices. Note
the dependence of µ∆ (M ) on the particular structure ∆, and verify the correctness of the
bounds produced by the calculation.

2 Commands

mussv upper and lower bounds for µ∆ (M )


mussvextract extract verification (D, G scalings, perturbation)

Calling Syntax for mussv:

≫ [bnds,muinfo] = mussv(mat,blk);
≫ [bnds,muinfo] = mussv(mat,blk,opt);
≫ [VDelta,VSigma,VLmi] = mussvextract(muinfo);

Description

mat Matrix to calculate µ of


blk block structure information about the set ∆; the number of perturbation blocks, their
sizes and types. For example:
The block structure   


 δ1 0 0 0 



   

 0 δ2 0 0 

  

∆ :=   : δi ∈ C
 0 0 δ3 0 
   

 


   

 

0 0 0 δ4 

is represented by the array

≫ blk = [1 1;1 1;1 1;1 1];

The block structure n o


∆ := diag [∆1 ∆2 δ3 ] : ∆1 ∈ C3×2 , ∆2 ∈ C4×5 , δ3 ∈ C ,
is represented by the array

1
≫ blk = [3 2;4 5;1 1];

The block structure


  
 δ1 I3

 0 0 


  
2×2
∆ :=  0 ∆2 0  : δ1 , δ3 ∈ C, ∆2 ∈ C 
 

   
 
 0 0 δ3 I2 

is represented by the array

≫ blk = [3 0;2 2;2 0];

The block structure


  
 δ1

 0 0 0 



   

 0 δ2 0 0 

  

∆ :=   : δi ∈ C, i = 1, 2, δj ∈ R, j = 3, 4.
 0 0 δ3 0 
   

 


   

 

0 0 0 δ4 

is represented by the array

≫ blk = [1 1;1 1;-1 0;-1 0];

The block structure


n o
∆ := diag [∆1 ∆2 δ3 I3×3 ] : ∆1 ∈ C3×2 , ∆2 ∈ C4×5 , δ3 ∈ R ,

is represented by the array

≫ blk = [3 2;4 5;-3 0];

Finally, the block structure


  
δ I 0 0
 1 3×3

 

  

∆ :=  0 ∆2 0  : δ1 ∈ C, δ3 ∈ R, ∆2 ∈ C2×2
 

   

 
 0 0 δ3 I2×2 

is represented by the array

≫ blk = [3 0;2 2;-2 0];

2
3 Upper Bound

For easier math equations below, use notation as:

• let β := bnd(1, 1), the returned upper bound;


• let ∆ denote the block structure as defined by blk;
• let M denote the matrix in mat.

The upper bound satisfies µ∆ (M ) ≤ β. The fields of VLmi are Dr, Dc, Grc and Gcr. They
will satisfy:

1. Dr = Dr∗ ≻ 0, Dc = Dc∗ ≻ 0
1/2 1/2
2. Dc ∆ = ∆Dr for every ∆ ∈ ∆
3. Gcr = G∗cr , Grc = G∗rc
4. Grc ∆ = ∆∗ Gcr for all ∆ ∈ ∆
5. M ∗ Dr M − β 2 Dc + j (Gcr M − M ∗ Grc )  0

Together, these imply µ∆ (M ) ≤ β, as was derived in the handouts.

Of course, if there are no real blocks, then Gcr = Grc = 0, and equivalently
 
σ̄ Dr1/2 M Dc−1/2 = β

4 Lower Bound

For easier math equations below, use notation as:

• let α := bnd(1, 2), the returned lower bound;


• let ∆ denote the returned perturbation, VDelta.

The lower bound satisfies α ≤ µ∆ (M ). This is verified by checking 3 things:

1. ∆ ∈ ∆
1
2. σ̄ (∆) = α

3. det (I − M ∆) = 0, equivalently, that M ∆ has an eigenvalue at 1

3
5 Example

Verify all of this on some random complex matrices.

≫ mat = crandn(11,12);
≫ blk = [-3 0;2 0;4 2;-2 0;1 2];
≫ [bnds,muinfo] = mussv(mat,blk);
≫ [VDelta,VSigma,VLmi] = mussvextract(muinfo);
≫ % check the conditions above

6 Options

There are a few options which yield better lower and upper bounds, at the expense of more
computation. Use a 3rd argument

≫ [bnds,muinfo] = mussv(mat,blk,’f’);
≫ [bnds,muinfo] = mussv(mat,blk,’a’);
≫ [bnds,muinfo] = mussv(mat,blk,’m2’);
≫ [bnds,muinfo] = mussv(mat,blk,’m9’);
≫ [bnds,muinfo] = mussv(mat,blk,’am7’); % both

The argument ’f’ uses a fast, approximate algorithm to optimize the D and G scales. The
upper bound is usually inferior (larger) to the default.

By contrast, the argument ’a’ improves the upper bound, but uses additional computational
time.

The argument ’m2’ - ’m9’ improves the lower bound, by trying the power iteration more
than once, each time starting from a new random vector. It then takes the best answer that
it gets.

7 Questions

Which block structures seem to benefit from the extra computation that the ’a’ and ’m’
options require?

How much time does this add to the computation, as a percentage?

You might also like