mussvextract

Извлеките структуру muinfo, возвращенную mussv

Резюме

[VDelta,VSigma,VLmi] = mussvextract(muinfo)

Описание

Структурированное вычисление сингулярного значения формы

[bounds,muinfo] = mussv(M,BlockStructure) 

возвращает подробную информацию в структуре muinfo. mussvextract используется, чтобы извлечь сжатую информацию в muinfo в удобочитаемую форму.

Самый общий вызов mussvextract извлекает три применимых количества: VDelta, VSigma и VLmi. VDelta используется, чтобы проверить нижнюю границу. VSigma используется, чтобы проверить верхнюю границу Newlin/Young и имеет поля DLeft, DRight, GLeft, GMiddle и GRight. VLmi используется, чтобы проверить верхнюю границу LMI и имеет поля Dr, Dc, Grc и Gcr. Отношение/интерпретация этих количеств с числовыми результатами в bounds описано ниже.

Информация о верхней границе

Верхняя граница основана на доказательстве, что det(I - M*Delta) является ненулевым для всех блочно-структурированных матриц Delta с нормой, меньшей, чем 1/bounds(1). Метод Newlin/Young состоит из нахождения скаляра β и матрицы D и G, сопоставимый с BlockStructure, таким что

σ¯((I+GL2) 14(DLMDR1βjGM)(I+GR2) 14)1

Здесь DL, DR, GL, GM и GR соответствуют DLeft, DRight, GLeft, GMiddle и полям GRight соответственно.

Поскольку некоторые блоки неуверенности и M не должны быть квадратными, матрицы, D и G имеют несколько различных проявлений. На самом деле, в формуле выше, существует левый и правый D и G, а также средний G. Любой такой β является верхней границей mussv(M,BlockStructure).

Это верно, что, если BlockStructure будет состоять только из комплексных блоков, то все матрицы G будут нулем, и выражение выше упрощает до

σ¯(DLMDR1)β.

Метод LMI состоит из нахождения скаляра β и матрицы D и G, сопоставимый с BlockStructure, таким что

MDrMβ2Dc+j(GcrMMGrc)0

отрицателен полуопределенный. Снова, D и G имеют несколько различных проявлений, чтобы совпадать с размерностями строки и столбца M. Любой такой β является верхней границей mussv(M,BlockStructure). Если BlockStructure будет состоять только из комплексных блоков, то все матрицы G будут нулем и отрицательной полуопределенностью M, ´Dr M-β2Dc достаточен, чтобы вывести верхнюю границу.

Информация о нижней границе

Нижняя граница mussv(M,BlockStructure) основана на нахождении “маленького” (надо надеяться, самое маленькое) блочно-структурированный матричный VDelta, который заставляет det(I - M*VDelta) равняться 0. Эквивалентно, матричный M*VDelta имеет собственное значение, равное 1. Это всегда будет верно, что нижняя граница (bounds(2)) будет обратной величиной norm(VDelta).

Примеры

Предположим, что M является комплексной матрицей 4 на 4. Возьмите блочную структуру, чтобы быть двумя комплексными блоками 1 на 1 и одним комплексным блоком 2 на 2.

rng(0,'twister')
M = randn(4,4) + sqrt(-1)*randn(4,4); 
BlockStructure = [1 1;1 1;2 2]; 

Можно вычислить границы на структурированное сингулярное значение с помощью команды mussv и извлечь масштабирующиеся матрицы с помощью mussvextract.

[bounds,muinfo] = mussv(M,BlockStructure); 
[VDelta,VSigma,VLmi] = mussvextract(muinfo); 

Можно сначала проверить верхнюю границу Newlin/Young с информацией, извлеченной от muinfo. Соответствующими масштабированиями является Dl и Dr.

Dl = VSigma.DLeft 
Dl =

    1.0000         0         0         0
         0    0.7437         0         0
         0         0    1.0393         0
         0         0         0    1.0393

Dr = VSigma.DRight 
Dr =

    1.0000         0         0         0
         0    0.7437         0         0
         0         0    1.0393         0
         0         0         0    1.0393

[norm(Dl*M/Dr) bounds(1)] 
ans =

    6.2950    6.2950

Можно сначала проверить верхнюю границу LMI с информацией, извлеченной от muinfo. Соответствующими масштабированиями является Dr и Dc.

Dr = VLmi.Dr; 
Dc = VLmi.Dc; 
eig(M'*Dr*M - bounds(1)^2*Dc) 
ans =

  -0.0000 - 0.0000i
 -17.7242 - 0.0000i
 -33.8550 + 0.0000i
 -41.2013 - 0.0000i

Обратите внимание на то, что VDelta совпадает со структурой, заданной BlockStructure, и норма VDelta соглашается с нижней границей,

VDelta 
VDelta =

   0.1301 - 0.0922i        0                  0                  0          
        0            -0.0121 - 0.1590i        0                  0          
        0                  0            -0.0496 - 0.0708i   0.1272 - 0.0075i
        0                  0             0.0166 - 0.0163i   0.0076 + 0.0334i
[norm(VDelta) 1/bounds(2)] 
ans =

    0.1595    0.1595

и что M*VDelta имеет собственное значение точно в 1.

eig(M*VDelta) 
ans =

   1.0000 - 0.0000i
  -0.2501 - 0.1109i
   0.0000 + 0.0000i
  -0.3022 + 0.2535i

Сохраните матрицу тем же самым, но измените BlockStructure, чтобы быть повторным, действительным скалярным блоком 2 на 2, и два комплекса 1 на 1 блокируются. Запустите mussv с опцией 'C', чтобы сжать верхнюю границу.

BlockStructure2 = [-2 0; 1 0; 1 0]; 
[bounds2,muinfo2] = mussv(M,BlockStructure2,'C'); 

Можно сравнить вычисленные границы. Обратите внимание на то, что bounds2 должен быть меньшим, чем bounds, потому что набор неуверенности, заданный BlockStructure2, является собственным подмножеством заданного BlockStructure.

[bounds; bounds2] 
ans =

    6.2950    6.2704
    5.1840    5.1750

Можно извлечь D, G и Delta от muinfo2 с помощью mussvextract.

[VDelta2,VSigma2,VLmi2] = mussvextract(muinfo2); 

Как прежде, можно сначала проверить верхнюю границу Newlin/Young с информацией, извлеченной от muinfo. Соответствующими масштабированиями является Dl, Dr, Gl, Gm and Gr.

Dl = VSigma2.DLeft; 
Dr = VSigma2.DRight; 
Gl = VSigma2.GLeft; 
Gm = VSigma2.GMiddle; 
Gr = VSigma2.GRight; 
dmd = Dl*M/Dr/bounds2(1) - sqrt(-1)*Gm; 
SL = (eye(4)+Gl*Gl)^-0.25; 
SR = (eye(4)+Gr*Gr)^-0.25; 
norm(SL*dmd*SR) 
ans =

    1.0000

Можно сначала проверить верхнюю границу LMI с информацией, извлеченной от muinfo. Соответствующими масштабированиями является Dr, Dc, Grc and Gcr.

Dr = VLmi2.Dr; 
Dc = VLmi2.Dc; 
Grc = VLmi2.Grc; 
Gcr = VLmi2.Gcr; 
eig(M'*Dr*M - bounds(1)^2 *Dc + j*(Gcr*M-M'*Grc)) 
ans =

 -69.9757 + 0.0000i
 -11.2139 - 0.0000i
 -19.2766 - 0.0000i
 -40.2869 - 0.0000i

VDelta2 совпадает со структурой, заданной BlockStructure, и норма VDelta2 соглашается с нижней границей,

VDelta2 
VDelta2 =

   0.1932                  0                  0                  0          
        0             0.1932                  0                  0          
        0                  0            -0.1781 - 0.0750i        0          
        0                  0                  0             0.0941 + 0.1688i
[norm(VDelta2) 1/bounds2(2)] 
ans =

    0.1932    0.1932

и что M*VDelta2 имеет собственное значение точно в 1.

eig(M*VDelta2) 
  ans =

 1.0000 + 0.0000i
  -0.4328 + 0.1586i
   0.1220 - 0.2648i
  -0.3688 - 0.3219i

Смотрите также

Представлено до R2006a