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

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

Задайте систему LMI

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

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

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

D=(d10000d10000d2d300d4d5).

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

Эта проблема имеет простую формулировку LMI: Там существует соответствующее масштабирование D, если следующая проблема выполнимости имеет решения. Найдите две симметричных матрицы XR6×6 и S=DTDR4×4 таким образом, что:

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

X>0,

S>1.

Можно использовать Редактор LMI, чтобы указать, что проблема LMI, описанная этими выражениями, как показано в, Задает LMIs с Редактором 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=(D1000D2000Dr)

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

Dj = d × IdR

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

Тип 2

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

Тип 3

Общие структуры. Этот третий тип используется, чтобы описать более сложные структуры и/или корреляции между матричными переменными. Принцип следующие: каждая запись X задана независимо или как 0, xn, или как –xn, где xn обозначает энную переменную решения в проблеме. Для получения дополнительной информации о том, как использовать Тип 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 является вектором 2D записи листинг размерностей строки и столбца переменной. Например, прямоугольная матричная переменная 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 на страницах с описанием для получения дополнительной информации).

Определение отдельного LMIs

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

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

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

    (ATX+XA+CTSCXBBTXS)<0

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

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

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

Условия LMI заданы по одному с lmiterm. Например, LMI

(ATX+XA+CTSCXBBTXS)<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-th LMI” и −m означает “правую сторону m-th LMI”.

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

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

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

Некоторое сокращение обеспечивается, чтобы упростить спецификацию термина. Во-первых, блоки являются нулем по умолчанию. Во-вторых, в диагонали блокируется, дополнительный аргумент '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 Задают Систему LMI, это было бы похоже:

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.

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

| | |

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

Больше о