Задайте систему 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 попадают в три категории:

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

  • Переменные термины, i.e., термины, включающие матричную переменную. Например, 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-ую матричную переменную Xk и −k для включения терминов XkT (здесь X и S первые и вторые переменные в порядке объявления).

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

Некоторое сокращение обеспечивается, чтобы упростить спецификацию термина. Во-первых, блоки являются нулем по умолчанию. Во-вторых, в диагонали блокирует дополнительный аргумент 's' позволяет вам задавать спрягаемое выражение AXB + BTXTAT с синглом lmiterm команда. Например, первая команда задает ATX + XA как “симметризация” XA. Наконец, скалярные значения позволены как сокращение для скалярных матриц, i.e., матрицы формы α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 в то время как теги BRLxpos , и Slmi укажите на первый, второй, и третий LMI, соответственно. Обратите внимание на то, что –Xpos относится к правой стороне второго LMI. Точно так же –X указал бы на перемещение переменной X.

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

| | |

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

Больше о