В этом примере руководства показано, как задать системы LMI в командной строке с помощью инструментов LMI Lab.
Рассмотрим стабильную передаточную функцию,
Предположим, что G имеет четыре входа, четыре выхода и шесть состояний. Рассмотрим также набор матриц D масштабирования ввода/вывода с блочно-диагональной структурой, заданной:
Следующая проблема возникает в устойчивом анализе устойчивости систем с изменяющейся во времени неопределенностью [4]. Найдите, если таковой имеется, масштабирование D с заданной структурой, таким что самый большой коэффициент усиления на частоте меньше 1.
Эта задача имеет простую формулировку LMI: Существует адекватное масштабирование D, если следующая задача выполнимости имеет решения. Найдите две симметричные матрицы и таким образом:
Можно использовать Редактор 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;
The lmivar
команды определяют две матричные переменные, X и S. The lmiterm
команды описывают термины в каждом LMI. getlmis
возвращает внутреннее представление LMISYS
этой LMI задачи.
Для получения дополнительной информации о том, как использовать эти команды, смотрите:
Для получения дополнительной информации о том, как lmivar
обновляет внутреннее представление задачи LMI, см. «Как lmivar и lmiterm управляют представлением LMI».
Описание системы LMI должно начинаться с setlmis
и заканчивается на getlmis
. Функция setlmis
инициализирует описание системы LMI. При указании новой системы вводите
setlmis([])
Добавление к существующей системе LMI с внутренним представлением LMIS0
, type
setlmis(LMIS0)
Матричные переменные объявляются по одному за раз с lmivar
и характеризуются своей структурой. Чтобы облегчить спецификацию этой структуры, LMI Lab предлагает два предопределенных типа структур вместе со средствами для описания более общих структур:
Тип 1 |
Симметричный блок диагонали структура. Это соответствует матричным переменным вида
где каждый диагональный блок Dj квадратная и либо нуль, либо полная симметричная матрица, либо скаляр матрица
Dj = d × I , d ∊ R Этот тип охватывает обыкновенные симметричные матрицы (один блок) и скалярные переменные (один блок размера один). |
Тип 2 |
Прямоугольная структура. Это соответствует произвольным прямоугольным матрицам без какой-либо конкретной структуры. |
Тип 3 |
Общие структуры. Этот третий тип используется для описания более сложных структур и/или корреляций между матричными переменными. Принцип следующий: каждая запись X задается независимо как 0, xn , или -xn, где xn обозначает n-ю переменную решения в задаче. Для получения дополнительной информации о том, как использовать Тип 3, смотрите Структурированные Матричные Переменные, а также |
В Specify LMI System матричные переменные 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
- вектор с двумя входами, в котором перечислены размерности строка и столбец переменной. Для образца прямоугольная переменная матрица 3 на 5 будет задана как
lmivar(2,[3 5])
Для удобства, lmivar
также возвращает «тег», который идентифицирует матричную переменную для последующей ссылки. Например, X и S в Specify LMI System могут быть определены как
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 делятся на три категории:
Постоянные условия, т.е. фиксированные матрицы, такие как I в левой части 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-го LMI» и − m
означает «правая сторона m-го LMI».
Вторая и третья записи идентифицируют блок, которому принадлежит термин. Для образца вектор [1 1 2 1
] указывает, что термин присоединен к блоку (1, 2).
Последняя запись указывает, какая матричная переменная участвует в термине. Эта запись 0
для постоянных членов, k
для членов с k-й матричной переменной X k и − k
для условий, связанных с (здесь X и S являются первой и второй переменными в порядке объявления).
Наконец, второй и третий аргументы lmiterm
содержите числовые данные (значения постоянного термина, внешнего фактора, или матричных коэффициентов P и Q для переменного <reservedrangesplaceholder3> <reservedrangesplaceholder2> <reservedrangesplaceholder1> условий или 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.
getlmis
| lmiterm
| lmivar
| setlmis