Этот учебный пример показывает, как задать системы LMI в командной строке с помощью инструментов LMI Lab.
Рассмотрите устойчивую передаточную функцию,
Предположим, что G имеет четыре входных параметров, четыре выходных параметров и шесть состояний. Считайте также набор матриц масштабирования ввода/вывода D с диагональной блоком структурой данным:
Следующая проблема возникает в устойчивом анализе устойчивости систем с изменяющейся во времени неопределенностью [4]. Найдите, если таковые имеются, масштабирование D с заданной структурой, такой что самое большое усиление через частоту меньше 1.
Эта проблема имеет простую формулировку LMI: Там существует соответствующее масштабирование D, если следующая проблема выполнимости имеет решения. Найдите две симметричных матрицы и таким образом, что:
Можно использовать Редактор 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 должно начаться с setlmis
и закончите getlmis
. Функциональный setlmis
инициализирует системное описание LMI. При определении новой системы ввести
setlmis([])
Прибавлять к существующей системе LMI с внутренним представлением LMIS0
Ввод
setlmis(LMIS0)
Матричные переменные объявляются по одному с lmivar
и характеризуются их структурой. Чтобы упростить спецификацию этой структуры, LMI Lab предлагает два предопределенных типа структуры наряду со средними значениями, чтобы описать более общие структуры:
Тип 1 |
Симметричная структура диагонали блока. Это соответствует матричным переменным формы
где каждый диагональный блок Dj является квадратным и является или нулем, полной симметрической матрицей или диагональной матрицей
Dj = d × I, d ∊ R Этот тип охватывает обычные симметричные матрицы (один блок) и скалярные переменные (один блок размера один). |
Тип 2 |
Прямоугольная структура. Это соответствует произвольным прямоугольным матрицам без какой-то конкретной структуры. |
Тип 3 |
Общие структуры. Этот третий тип используется, чтобы описать более сложные структуры и/или корреляции между матричными переменными. Принцип следующие: каждая запись X задана независимо или как 0, xn, или как –xn, где xn обозначает энную переменную решения в проблеме. Для получения дополнительной информации о том, как использовать Тип 3, смотрите Структурированные Матричные Переменные, а также |
В Задают Систему LMI, матричные переменные X и S имеют Тип 1. Действительно, оба симметричны, и S наследовал диагональную блоком структуру D. А именно, S имеет форму
Инициализируйте описание и объявите эти две матричных переменные.
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
запись на страницах с описанием для получения дополнительной информации).
После объявления матричных переменных с lmivar
, нас оставляют с определением термина содержимое каждого LMI. Вспомните, что условия LMI попадают в три категории:
Постоянные условия, т.е. зафиксированные матрицы как я в левой стороне LMI S> I.
Переменные условия, т.е. условия, включающие матричную переменную. Например, ATX и CTSC в выражении:
Переменные условия имеют форму PXQ, где X переменная, и P, Q дают, матрицы вызвали левые и правые коэффициенты, соответственно.
Внешние факторы.
При описании термина содержимое LMI задайте только условия в блоках на или выше диагонали. Внутренние факторы, являющиеся симметричным, это достаточно, чтобы задать целый LMI. Определение всех блоков приводит к дублированию недиагональных условий, следовательно в создании различного LMI. В качестве альтернативы можно описать блоки на или ниже диагонали.
Условия LMI заданы по одному с lmiterm
. Например, LMI
описан
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
для включения условий (здесь 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.
getlmis
| lmiterm
| lmivar
| setlmis