Этот учебный пример показывает, как задать системы 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