exponenta event banner

Укажите систему LMI в командной строке

В этом учебном примере показано, как указать системы LMI в командной строке с помощью инструментов LMI Lab.

Укажите систему LMI

Рассмотрим стабильную передаточную функцию,

G (s) = C (sI-A) -1B.

Предположим, что G имеет четыре входа, четыре выхода и шесть состояний. Рассмотрим также набор матриц D масштабирования ввода/вывода с блок-диагональной структурой, задаваемой:

D = (d10000d10000d2d300d4d5).

Следующая проблема возникает в анализе надежной устойчивости систем с изменяющейся во времени неопределенностью [4]. Найдите, если есть, масштабирование D с заданной структурой, так что наибольшее усиление на частоте DG (s) D-1 меньше 1.

Эта проблема имеет простую формулировку LMI: существует адекватное масштабирование D, если следующая проблема осуществимости имеет решения. Найдите две симметричные матрицы X∈R6×6 и S=DTD∈R4×4 такие, что:

(ATX + XA + CTSCXBBTX-S) < 0,

X > 0,

S > 1.

Редактор LMI можно использовать для указания проблемы LMI, описанной в этих выражениях, как показано в разделе Указание LMI с помощью графического интерфейса редактора LMI. Либо определите его в командной строке с помощью lmivar и lmiterm, следующим образом.

В этом примере используются следующие значения для A, B и C.

A = [  -0.8715    0.5202    0.7474    1.0778   -0.9686    0.1005;
       -0.5577   -1.0843    1.8912    0.2523    1.0641   -0.0345;
       -0.2615   -1.7539   -1.5452   -0.2143    0.0923   -2.4192;
        0.6087   -1.0741    0.1306   -2.5575    2.3213    0.2388;
       -0.7169    0.3582   -1.4195    1.7043   -2.6530   -1.4276;
       -1.2944   -0.6752    1.6983    1.6764   -0.3646   -1.7730 ];
  
B = [       0    0.8998   -0.2130    0.9835;
            0   -0.3001         0   -0.2977;
      -1.0322         0   -1.0431    1.1437;
            0   -0.3451   -0.2701   -0.5316;
      -0.4189    1.0128   -0.4381         0;
            0         0   -0.4087         0];
 
C = [      0    2.0034         0    1.0289    0.1554    0.7135;
      0.9707    0.9510    0.7059    1.4580   -1.2371    0.3174;
           0         0    1.4158    0.0475   -2.1935    0.4136;
     -0.4383    0.6489   -1.6045    1.7463   -0.3334   -0.5771];

Определение переменных LMI X и S, а затем укажите условия каждого LMI.

setlmis([]) 
X = lmivar(1,[6 1]); 
S = lmivar(1,[2 0;2 1]);

% 1st LMI 
lmiterm([1 1 1 X],1,A,'s');
lmiterm([1 1 1 S],C',C); 
lmiterm([1 1 2 X],1,B); 
lmiterm([1 2 2 S],-1,1);

% 2nd LMI 
lmiterm([-2 1 1 X],1,1);

% 3rd LMI
lmiterm([-3 1 1 S],1,1); 
lmiterm([3 1 1 0],1);

LMISYS = getlmis;

lmivar команды определяют две матричные переменные, X и S. lmiterm команды описывают термины в каждом LMI. getlmis возвращает внутреннее представление LMISYS этой проблемы LMI.

Дополнительные сведения об использовании этих команд см. в разделе:

Дополнительные сведения о том, как lmivar обновляет внутреннее представление проблемы LMI, см. раздел Как lmivar и lmiterm Управление представлением LMI.

Инициализация системы LMI

Описание системы LMI должно начинаться с setlmis и заканчиваются на getlmis. Функция setlmis инициализирует описание системы LMI. При указании новой системы введите

setlmis([])

Добавление к существующей системе LMI с внутренним представлением LMIS0, тип

setlmis(LMIS0)

Задание переменных LMI

Переменные матрицы объявляются по одному с помощью lmivar и характеризуются своей структурой. Для упрощения спецификации этой структуры LMI Lab предлагает два предопределенных типа структуры, а также средства для описания более общих структур:

Тип 1

Симметричная блок-диагональная структура. Это соответствует матричным переменным формы

X = (D10... 00D2⋱⋮⋮⋱⋱00... 0Dr)

где каждый диагональный блок Dj является квадратным и равен нулю, полной симметричной матрице или скалярной матрице

Dj = d × I , dR

Этот тип охватывает обычные симметричные матрицы (один блок) и скалярные переменные (один блок размера один).

Тип 2

Прямоугольное строение. Это соответствует произвольным прямоугольным матрицам без какой-либо конкретной структуры.

Тип 3

Общие конструкции. Этот третий тип используется для описания более сложных структур и/или корреляций между матричными переменными. Принцип следующий: каждая запись X независимо указывается как 0, xn или -xn, где xn обозначает n-ю переменную решения в задаче. Дополнительные сведения об использовании типа 3 см. в разделе Переменные структурированной матрицы, а также в разделе lmivar запись на ссылочных страницах.

В параметре «Указать систему LMI» переменные матрицы X и S имеют тип 1. Действительно, оба симметричны и S наследует блок-диагональную структуру D. В частности, S имеет вид

S = (s10000s10000s2s300s3s4).

Инициализируйте описание и объявите эти две матричные переменные.

setlmis([])
lmivar(1,[6 1]);     % X 
lmivar(1,[2 0;2 1]); % S

В обоих lmivar команды, первый ввод определяет тип структуры, а второй ввод содержит дополнительную информацию о структуре переменной:

  • Для матричной переменной X типа 1 этот второй вход является матрицей с двумя столбцами и таким количеством строк, как диагональные блоки в X. Первый столбец перечисляет размеры диагональных блоков, а второй столбец определяет их характер с помощью следующего соглашения:

    1: полный симметричный блок

    0: скалярный блок

    -1: нулевой блок

    Во второй команде, например,[2 0;2 1] означает, что S имеет два диагональных блока, первый из которых является скалярным блоком 2 на 2, а второй - полным блоком 2 на 2.

  • Для матричных переменных типа 2 второй вход lmivar является вектором с двумя входами, перечисляющим размеры строки и столбца переменной. Например, переменная прямоугольной матрицы 3 на 5 будет определена как

    lmivar(2,[3 5])
    

Для удобства, lmivar также возвращает «тег», который идентифицирует переменную матрицы для последующей ссылки. Например, X и S в задании системы LMI могут быть определены

X = lmivar(1,[6 1]); 
S = lmivar(1,[2 0;2 1]);

Идентификаторы X и S являются целыми числами, соответствующими ранжированию X и S в списке матричных переменных (в порядке объявления). Здесь их ценности были бы X=1 и S=2. Обратите внимание, что эти идентификаторы все еще указывают на X и S после удаления или создания экземпляра некоторых переменных матрицы. Наконец, lmivar может также возвращать общее число переменных принятия решений, выделенных до сих пор, а также зависимость матричной переменной от этих переменных принятия решений по входу (см. lmivar запись в справочных страницах для получения более подробной информации).

Указание отдельных LMI

После объявления переменных матрицы с помощью lmivar, нам остается указать содержание терминов каждого LMI. Напомним, что термины LMI подразделяются на три категории:

  • Постоянные члены, т.е. фиксированные матрицы, такие как I в левой части LMI S > I.

  • Члены переменной, то есть члены, включающие переменную матрицы. Например, ATX и CTSC в выражении:

    (ATX + XA + CTSCXBBTX − S) < 0

    Переменные члены имеют вид PXQ, где X является переменной, и P, Q даны матрицы, называемые левым и правым коэффициентами соответственно.

  • Внешние факторы.

При описании содержания термина LMI укажите только термины в блоках на диагонали или выше. Внутренние факторы являются симметричными, этого достаточно для указания всего LMI. Задание всех блоков приводит к дублированию смещенных по диагонали членов, следовательно, к созданию другого LMI. Можно также описать блоки на диагонали или под ней.

Термины LMI указываются по одному с lmiterm. Например, LMI

(ATX + XA + CTSCXBBTX − S) < 0

описывается

lmiterm([1 1 1 1],1,A,'s'); 
lmiterm([1 1 1 2],C',C); 
lmiterm([1 1 2 1],1,B); 
lmiterm([1 2 2 2],-1,1);

Эти команды последовательно объявляют термины ATX + XA, CTSC, XB и -S. В каждой команде первым аргументом является вектор из четырех элементов, перечисляющий характеристики члена следующим образом:

  • Первая запись указывает, какому LMI принадлежит этот термин. Стоимость m означает «левая сторона m-го LMI», и −m означает «правая сторона m-го LMI».

  • Вторая и третья записи идентифицируют блок, которому принадлежит термин. Например, вектор [1 1 2 1] указывает, что термин присоединен к блоку (1, 2).

  • Последняя запись указывает, какая переменная матрицы участвует в члене. Эта запись 0 для постоянных членов, k для членов, включающих k-ю матричную переменную Xk, и −k для терминов, включающих XkT (здесь X и S являются первой и второй переменными в порядке объявления).

Наконец, второй и третий аргументы lmiterm содержат числовые данные (значения постоянного члена, внешнего фактора или матричных коэффициентов P и Q для переменных членов PXQ или PXTQ). Эти аргументы должны ссылаться на существующие переменные MATLAB ® и быть действительными. Спецификации LMI со сложными коэффициентами см. в разделе Комплексные LMI .

Некоторые краткие описания приведены для упрощения описания термина. Во-первых, блоки по умолчанию равны нулю. Во-вторых, в диагональных блоках дополнительный аргумент 's' позволяет задать сопряженное выражение AXB + BTXTAT с одним lmiterm команда. Например, первая команда определяет ATX + XA как «симметризацию» XA. Наконец, скалярные значения допустимы как краткие для скалярных матриц, т.е. матриц вида αI со скаляром α. Таким образом, постоянный член вида αI может быть указан как «скалярный» α. Это также относится к коэффициентам P и Q переменных членов. Размеры скалярных матриц выводятся из контекста и по умолчанию устанавливаются в 1. Например, третий LMI S > I в задании матричных переменных структур описывается

lmiterm([-3 1 1 2],1,1);      % 1*S*1 = S 
lmiterm([3 1 1 0],1);         % 1*I = I

Напомним, что по конвенции S рассматривается как правая сторона неравенства, которая оправдывает -3 в первой команде.

Наконец, для улучшения читаемости часто удобно присоединять идентификатор (тег) к каждой переменной LMI и матрицы. Идентификаторы переменных возвращаются lmivar и идентификаторы LMI устанавливаются функцией newlmi. Эти идентификаторы можно использовать в lmiterm для ссылки на данную переменную LMI или матрицу. Для системы LMI с параметром Specify LMI System это выглядит следующим образом:

setlmis([]) 
X = lmivar(1,[6 1]); 
S = lmivar(1,[2 0;2 1]);

BRL = newlmi; 
lmiterm([BRL 1 1 X],1,A,'s'); 
lmiterm([BRL 1 1 S],C',C);
lmiterm([BRL 1 2 X],1,B); 
lmiterm([BRL 2 2 S],-1,1);

Xpos = newlmi; 
lmiterm([-Xpos 1 1 X],1,1);

Slmi = newlmi;
lmiterm([-Slmi 1 1 S],1,1);
lmiterm([Slmi 1 1 0],1);

Когда система LMI полностью определена, получите внутреннее представление проблемы.

LMISYS = getlmis;

Это возвращает внутреннее представление LMISYS этой системы LMI. Это описание проблемы MATLAB может быть передано другим функциям LMI-Lab для последующей обработки. Команда getlmis должен использоваться только один раз и после объявления всех матричных переменных и терминов LMI.

Здесь идентификаторы X и S указывает на переменные X и S, в то время как теги BRL, Xpos, и Slmi указывают на первый, второй и третий LMI соответственно. Обратите внимание, что -Xpos относится к правой стороне второго LMI. Аналогично, -X указывает на транспозицию переменной X.

См. также

| | |

Связанные примеры

Подробнее