ВВЕДЕНИЕ В MATLAB
Учебное пособие
Санкт�Петербург2006
ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ
Государственное образовательное учреждениевысшего профессионального образования
САНКТ�ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТАЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
Л. А. Мироновский, К. Ю. Петрова
2
УДК 681.3.06ББК 22.18
М64
Мироновский, Л. А
М64 Введение в MATLAB: Учеб. пособие/ Л. А. Мироновский,К. Ю. Петрова; ГУАП. – СПб., 2006. – 164 с.: ил.ISBN 5�8088�0176�1
Изложены структура, организация и язык программированияинтегрированного математического пакета MATLAB. Описаны ос�новные функции ядра пакета и некоторых тулбоксов (CONTROL,SYMBOLIC, SIGNAL, OPTIMIZATION). Рассмотрена методика ре�шения задач линейной алгебры, оптимизации, линейных и нели�нейных дифференциальных уравнений. Описано применение сис�темы SIMULINK для структурного моделирования систем автома�тического управления. Изложение сопровождается большим коли�чеством примеров.
Учебное пособие предназначено студентам, обучающимся по на�правлениям 220100, 552800, а также родственным специальностями направлениям.
Рецензенты:кафедра прикладной информатики Международного банковского института;
доктор технических наук, профессор В. А. Слаев
Утвержденоредакционно�издательским советом университета
в качестве учебного пособия
© ГОУ ВПО «Санкт�Петербургскийгосударственный университетаэрокосмического приборостроения»,2006
ISBN 5�8088�0176�1
3
ПРЕДИСЛОВИЕ
Учебное пособие написано на основе работы [6], вышедшей более10 лет назад. За это время в структуре и командах пакета MATLABпроизошли заметные изменения, а сам он прочно занял лидирующееположение среди математических пакетов, ориентированных на ре�шение научно�технических и инженерных задач. В его составе по�явилась система визуального моделирования SIMULINK – эффектив�ное и удобное средство для моделирования систем, заданных струк�турными схемами.
К настоящему времени выпущено много руководств и справочни�ков по MATLAB [1–6, 10–12, 14], содержащих подробное описаниеего обширной системы команд (их общее число давно перевалило затысячу), расширений и приложений. Однако большинство из этихруководств неудобны для начинающего пользователя из�за обилияпредставленного материала и перегруженности деталями.
Настоящее пособие предназначено для первоначального знаком�ства с MATLAB и SIMULINK и содержит элементарные сведения опакете. В первую очередь это относится к разделам 1–3, где даютсяминимальные сведения о MATLAB и SIMULINK, необходимые длявыполнения лабораторных работ по курсу «Моделирование». Разде�лы 4–6 предназначены для более глубокого знакомства с пакетом, вних подробнее описываются его графические и математические воз�можности, файловая система, типы данных. Из многочисленныхтулбоксов MATLAB в пособии кратко рассмотрены лишь некоторые,в частности CONTROL, SYMBOLIC и OPTIMIZATION.
4
1. ЭЛЕМЕНТАРНЫЕ СВЕДЕНИЯ О ПАКЕТЕ
1.1. Структура пакета
Пакет MATLAB широко используется во всем мире при решениизадач, связанных с матричными вычислениями. Название пакета об�разовано путем сокращения от MATrix LABoratory (матричная лабо�ратория). Операции и команды в MATLAB достаточно естественны ианалогичны математической записи формул на бумаге. MATLAB со�здавался как пакет программ, реализующих наиболее эффективныевычислительные алгоритмы линейной алгебры. Он организован та�ким образом, чтобы пользователь имел возможность применять приработе обычный математический язык.
В настоящее время пакет MATLAB представляет собой развитуюинтегральную программную среду, включающую собственный языкпрограммирования. Он дает пользователю возможность быстро вы�полнять различные операции над векторами и матрицами, такие какумножение и обращение матриц, вычисление определителей, нахож�дение собственных чисел и векторов. Кроме того, в MATLAB входятоперации вычисления обычных функций (алгебраических, тригоно�метрических, логических), решения алгебраических и дифференци�альных уравнений, операции построения графиков и ряд других.
MATLAB является языком высокого уровня. По отдельным егокомандам можно выполнять такие сложные операции, как нахожде�ние корней полиномов, решение линейных и нелинейных алгебраи�ческих уравнений, моделирование линейных динамических систем.Указанные операции являются элементарными функциямиMATLAB.
Помимо ядра, содержащего вычислительные алгоритмы общегоназначения, в пакете MATLAB реализовано несколько десятков такназываемых тулбоксов (библиотек специализированных подпрог�рамм), предназначенных для решения разнообразных практическихзадач. Например, тулбокс SYMBOLIC предназначен для выполнениясимвольных вычислений, а тулбокс CONTROL – для расчета и моде�лирования систем автоматического управления.
5
����
������
���������
��� ��
��������
��������
����������
����� ��
���
������ ���
������
������
����������
��� ���
����������
������
��� �����
������������
���������
������
!�����������
�"����
#�����
��� �����
#��$��� �
��%
#�����
������ ���
&�$��� ����
'������
������
������� �
�������
����
��(������
�!)��
������ �
!�����
���
�������
!#
!���
� "������
#����� %�� �
Ри
с. 1
.1
6
Вместе с пакетом MATLAB поставляется также среда для визу�ального моделирования структурных схем SIMULINK, технологияработы в которой в значительной степени копирует технику модели�рования на аналоговых вычислительных машинах.
Общая структура системы MATLAB поясняется рис. 1.1. Его вер�хняя часть соответствует ядру MATLAB, содержащему быстро вы�полняемые встроенные функции (сложение, умножение, тригономет�рические и другие базовые функции) и так называемые m�функции,алгоритмы выполнения которых написаны на языке MATLAB. Сле�ва внизу показано семейство тулбоксов, каждый из которых содер�жит несколько десятков m�функций, справа – среда SIMULINK и свя�занные с ней средства (расширения и библиотеки блоков для разныхприложений).
1.2. Начало работы
Запуск и элементарные операции
При запуске MATLAB, как правило, открывается интерфейс, ко�торый содержит меню, панель инструментов и два окна – командноеокно (Command Window) и окно рабочего пространства (Workspace).В случае если командное окно или окно рабочего пространства отсут�ствует, их можно активизировать во вкладке меню “View”.
Команды вводятся в диалоговом режиме непосредственно в команд�ное окно. Например, для того чтобы вычислить значение sin30�, надо вкомандном окне набрать текст sin(pi/6) и нажать клавишу Enter. Наэкране появится ответ ans=0.5. Если мы хотим построить график фун�кции y=sint на интервале 0 10t� � , то сначала следует сформироватьмассив значений аргумента (для этого в командном окне набираемt=0:.1:10;), а затем набираем текст y=sin(t); plot(t, y). Разделительныйзнак «точка с запятой» ставится, чтобы не выводить на экран результа�ты промежуточных вычислений. После нажатия Enter в графическомокне появится график синусоиды (рис. 1.2). При желании его можноснабдить надписями и нанести координатную сетку (команда grid).
В дальнейшем обе переменные t, y (каждая из них представляетсобой массив из 101 числа) сохраняются в рабочем пространствеMATLAB и доступны для использования.
Вместо того чтобы набирать команды в окне MATLAB, их можнозаписать в текстовый файл с расширением .m (он называется m�файлили файл�сценарий). Имя файла может быть любым, напримерvova.m. Для того чтобы запустить файл сценарий, достаточно набратьего имя (без расширения) в командном окне: >> vova
7
Чтобы MATLAB «увидел» файл, либо поместите его в стандар�тный рабочий каталог, например C:\MATLAB \work\, либо укажитепуть к нему.
В разобранном примере использовалась функция sin. В составMATLAB входят команды для вычисления более 50 элементар�ных функций. Обозначения наиболее употребительных из них при�ведены ниже:
X ± Y X^2 EXP SIN ASIN SINHX*Y SQRT LOG COS ACOS COSHX / Y ABC LOG10 TAN ATAN ASINH
В первом столбце перечислены команды для выполнения четырехарифметических действий. Второй столбец содержит операции возведе�ния в квадрат, извлечения квадратного корня и взятия абсолютной ве�личины (для комплексных чисел – модуля). Для вычисления каждойиз этих функций нужно в круглых скобках указать значение аргумента(например, sqrt(4) даст ответ 2).
В третьем столбце перечислены команды для получения экспонентыи логарифмов (натурального и десятичного), например exp(1) даст числое = 2,71828… Четвертый и пятый столбцы содержат прямые и обратныетригонометрические функции, а в последнем, шестом столбце находят�ся команды для вычисления гиперболических функций, которые в рус�ской технической литературе обозначаются символами sh, ch, arcsh.Заметим, что аргумент функций sin, cos должен указываться в радиа�нах, если задавать его в градусах (degree), то надо использовать коман�ды sind, cosd (впервые они появились в MATLAB 7). Например, sin(pi/6) и sind(30) дадут один и тот же результат ans = 0.5000. Аргументомкаждой из функций может быть число или вектор (набор чисел,
� � � � � ��
��
����
�
���
�
>>t=0:.1:10; y=sin(t); plot(t,y), grid
Рис. 1.2
8
массив). Например, набрав sind([0, 30, 90]) получим ans=0 0.5000 1.0000.Для оперативного получения справок об этих и других командах ис�
пользуется команда help. Например, набрав
>> help sind,
получим справку:
SIND Sine of argument in degrees. SIND(X) is the sine of the elements of X,expressed in degrees.
For integers n, sind(n*180) is exactly zero, whereas sin(n*pi) reflects theaccuracy of the floating point value of pi.
See also asind, sin.
Ввод числовых данных
Перечислим несколько простых команд для ввода числовых данныхв виде векторов и матриц. Самый простой способ формирования векто�ров и матриц в MATLAB заключается в непосредственном вводе их эле�ментов с клавиатуры. Например, набирая на клавиатуре данныеХ =[1 2 �3 8 5 6], получаем одномерный массив (вектор�строку) Х из шестиэлементов.
Формирование вектора�строки из равноотстоящих значений аргументавыполняется с помощью команды x=x0:h:xn. По умолчанию шаг h прини�мается равным 1. Например, команда x=0:10 дает целые числа от 0 до 10,а x=0:0.1:10 задает набор значений аргумента от нуля до 10 с шагом 0.1.
Двумерные массивы задаются в виде матриц, при этом строки разде�ляются символом «точка с запятой». Элементы одной и той же строкимогут разделяться как пробелами, так и запятыми:
>> a=[1 2 3; 4 5 6; 7 8 9] >> a=[1 ,2, 3; 4, 5, 6; 7, 8, 9]a =1 2 3 a = 1 2 3
4 5 6 4 5 67 8 9 7 8 9
Для доступа к элементам массива используются круглые скобки:
>> a(1,1) >> a(3,3) >> b=[1 2 3 4 5]; b(4)ans = 1 ans = 9 ans = 4
Для получения строки или столбца матрицы используется сим�вол «двоеточие»:
>> a(:,1) >> a(2,:) >> b(1:3) >> b(3:end)ans = 1 ans = 4 5 6 ans = 1 2 3 ans = 3 4 5
4 7
В MATLAB имеется ряд команд, облегчающих формирование век�торов и матриц:
9
linspace zeros eyelogspace ones diag
Команда linspace используется для получения набора равноотсто�ящих значений аргумента. Например, х=linspace(xmin,xmax) создастмассив из 100 значений аргумента между точками хmin и xmax. Еслитребуется иметь другое число точек, например N точек на интервалеот 0 до 10, следует записать x=linspace(0,10,N). Аналогичные модифи�кации имеет команда logspaсe, обеспечивающая логарифмическоерасположение точек массива.
Для создания некоторых распространенных матриц имеются ко�манды zeros, ones, eye и diag. Команды zeros и ones создают мат�рицы, заполненные нулями и единицами. Так, по командaм A=zeros(3) и B=ones(3) будут сформированы матрицы
A = 0 0 0 B = 1 1 10 0 0 1 1 10 0 0 1 1 1,
а по командам C=zeros(1,4) и D=ones(1,4) – векторы�строки
C=0 0 0 0 и D=1 1 1 1.
Команда eye предназначена для создания единичной матрицы(она часто обозначается буквой I, название которой произноситсякак слово «eye») или ее фрагмента.
>> E=eye(3) >> G=eye(2,7)E= 1 0 0 G=
0 1 0 1 0 0 0 0 0 00 0 1 0 1 0 0 0 0 0
Команда eye(size(A)) даст единичную матрицу того же размера,что и матрица А.
Команда diag имеет два различных назначения. Если ее аргу�ментом является матрица, то результатом будет вектор, содержа�щий элементы, стоящие на диагонали. Если же аргументом явля�ется вектор, то команда diag создает матрицу с заданной диагона�лью и остальными нулевыми элементами.
Например, применяя команду diag к приведенной выше матри�це В, получим строку [1 1 1], а повторное применение командыdiag даст единичную матрицу Е.
1.3. Построение графиков
Основное средство для построения графиков в MATLAB – это коман�да plot и различные ее модификации. Она может вызываться с однимили несколькими входными аргументами.
10
Стандартный вариант ее вызова – это plot(x,y), где x и y – два масси�ва чисел, содержащие абсциссы и ординаты точек графика функции y= f(x). Выше был приведен пример построения графика синусоиды,аналогично строятся графики любых других функций. При этом вы�черчивание осей и выбор масштабов по ним производится автомати�чески. В случае, если вызов команды plot производится с одним аргу�ментом в формате plot(y), координатами x служат индексы массива y.
Для того чтобы снабдить рисунок координатной сеткой, исполь�зуется команда grid. Вызов ее без параметров осуществляет переклю�чение режимов «с сеткой»/«без сетки», а задание grid on и grid offявно указывает, следует включить сетку или отключить.
Иногда на одном графике требуется нарисовать несколько кри�вых. В этом случае в команде plot указывают несколько пар аргумен�тов (по числу функций) plot(х1, у1, х2, у2, ..., хn, уn), где х1, у1; х2, у2 ит. д. – пары векторов. Каждой паре x, y будет соответствовать свойграфик, при этом они могут быть заданы векторами разной длины.
Пример. Пусть требуется построить графики затухающих коле�баний 0,2( ) sintx t e t�� , 0,2( ) costy t e t�� , причем аргумент t изменяет�ся от 0 до 10 с шагом 0,1. Это делается с помощью следующей группыкоманд:
>>t=0:.1:10; x=exp(�.2*t).*sin(t); y=exp(�.2*t).*cos(t); plot(t, x, t, y), grid.
Результат показан на рис. 1.3. Использование точки перед зна�ком * (умножение) при вычислении переменных х, y, указывает напоэлементное перемножение массивов чисел (каждая из функцийsin t, cos t, e–0,2t, представлена вектором из 101 точек).
Добавляя команду plot(x,y), grid, получим график логарифмичес�кой спирали, показанный на рис. 1.4.
���� � ��� �
������������
�
���
���
���
���
�
���
��
��
��
��
���
���� �
���� �
���� �
� �
��� �
��� �
��� �
��� �
� �
Рис. 1.3 Рис. 1.4
11
После того как график выведен на экран, его можно озаглавить,обозначить оси, сделать текстовую разметку, для чего использу�ются команды title, xlabel, ylabel, text. Например, чтобы нанестиобозначения осей на последний график, надо набрать xlabel('x'),ylabel('y').
В команде plot в одиночных кавычках можно использовать до�полнительный аргумент, указывающий тип символов для постро�ения графика. Так plot(X1,Y1,':',X2,Y2,'+') использует символ двоето�чия для первой кривой и символ + для втоpой. Цвет линий такжеможет задаваться пользователем. Например, команды plot(X,Y,'r') иplot(X,Y,'+g') используют красную линию для получения первого гра�фика и зеленые метки + для второго. Справку о возможных вари�антах типов линий, точек и цветов можно получить, набрав helpplot.
Команда plot строит графики на плоскости. MATLAB позволяеттакже наглядно изображать линии и поверхности в трехмерном про�странстве. Для изображения линий в пространстве используется ко�манда plot3. Получим, например, график винтовой линии, котораязадается уравнениями x=sint; y=cost; z=t. Возьмем диапазон измене�ния параметра 0 10t� � � с шагом 0,02�:
>>t = 0:pi/50:10*pi; plot3(sin(t),cos(t),t);
Результат показан на рис. 1.5.Три стандартные поверхности – сфера, эллипсоид и цилиндр – стро�
ятся с помощью команд sphere, ellipsoid, cylinder соответственно. Ре�зультат выполнения первой из них показан на рис. 1.6.
��
�
�
��
�
��
��
��
��
��
�
��
�
�
��
�
���
����
�
���
�
�
Рис. 1.5 Рис. 1.6
12
Дополнительные сведения о графических возможностях MATLABможно найти в подразд. 1.7 и 4.1.
1.4. Матричные операции
MATLAB имеет обширный арсенал матричных операций. К про�стейшим из них относятся сложение и умножение, вычисление рангаи определителя, а также обращение матрицы.
Элементарные операции над матрицами перечислены ниже:
A±B A' trace inv
A*B det rank pinv
Для сложения и вычитания матриц одинакового размера ис�пользуются знаки + и –, например, С=А+В. Умножение матриц обо�значается звездочкой: C = A*B. Оно допускается, если число строкматрицы А равно числу столбцов матрицы В. При этом в общемслучае A*B � B*A.
Напомним, что матричное умножение вычисляется по известномуправилу «строка на столбец». В частности, произведение матриц вто�рого порядка находится по формуле
11 12 11 12 11 11 12 21 11 12 12 22
21 22 21 22 21 11 22 21 22 12 22 22
.a a b b a b a b a b a b
a a b b a b a b a b a b
� �� � � � � �� � � �� � � � � �
Для MATLAB такое умножение – элементарная операция. Приве�дем простой пример:
>>A=[1 2; 3 4] >>B=[5 6; 7 8] >>C=A*B >>CT=B'*A'1 2 5 6 19 22 19 433 4 7 8 43 50 22 50
Простейшей матричной операцией является транспонирование (стро�ки заменяются столбцами). Например, результатом транспонированиявектора�строки будет вектор�столбец. В MATLAB транспонированиеобозначается штрихом. В последней колонке приведена транспониро�ванная матрица С, она равна произведению транспонированных мат�риц A и B, взятых в обратном порядке.
По команде trace(A) вычисляется след матрицы А, т. е. сумма еедиагональных элементов. Полезно помнить, что он равняется такжесумме ее собственных чисел. По команде rank находится ранг матри�цы. Он определяется максимальным размером ее минора с ненуле�вым определителем и одновременно указывает на число линейно не�зависимых строк (столбцов) матрицы.
13
Следующая матричная операция – вычисление определителя, осу�ществляется командой det. Как известно, определитель матри�
цы Aa b
c d
� �� � �� �
размера 2 2 равен det A ad bc� � .
Формула для определителя третьего порядка имеет вид
1 2 3
1 2 3 1 2 3 2 3 1 3 1 2 3 2 1 1 3 2 2 1 3
1 2 3
det .
a a a
b b b a b c a b c a b c a b c a b c a b c
c c c
� �� � � � � � � �� �� ��
Обращение квадратной матрицы А производится по команде inv(A).Она является основной при решении системы линейных алгебраи�ческих уравнений.
Напомним формулу для вычисления обратной матрицы
1 *1A A ,
det A� �
где А* – присоединенная матрица, составленная из алгебраическихдополнений Aij матрицы A. В соответствии с этой формулой процеду�ра вычисления обратной матрицы содержит 2 шага.
Шаг 1. Каждый элемент aij матрицы A заменяется его алгебраичес�ким дополнением Aij, т. е. определителем матрицы, получаемой вы�черкиванием соответствующей строки и столбца. Если сумма индек�сов i+j нечетна, определитель берется с минусом.
Шаг 2. Полученная матрица транспонируется и делится на опре�делитель исходной матрицы.
В частности, для матрицы второго порядка получаем
11
.a b d b
c d c aad bc
� �� � � ��� � � ���� � � �
Пример 1. Ниже приведены результаты выполнения упомянутыхопераций для матрицы A третьего порядка.
>> A=[1 2 3; 0 1 4; 0 0 1] >> A' >> det(A) >> inv(A) >> inv(A')1 2 3 1 0 0 1 1 –2 5 1 0 00 1 4 2 1 0 0 1 –4 –2 1 00 0 1 3 4 1 0 0 1 5 –4 1
В первой строке приведены команды, набираемые в рабочем окне,во второй – ответы, которые даст MATLAB. В частности, видим, чтопри транспонировании матрицы обратная матрица тоже транспони�руется.
14
Типичная задача линейной алгебры – решение системы линейныхуравнений. На матричном языке она сводится к тому, чтобы найтивектор X, удовлетворяющий равенству AX B� , где матрица A и век�тор�столбец B заданы. Решение этого уравнения имеет вид 1X A B�� .
Для получения такого решения в пакете MATLAB достаточно набрать
>>X=inv(A)*B либо >>X=(A^�1)*B.
Разумеется, для выполнения этих операций матрица A должнабыть невырожденной. В случае, если система уравнений AX = B недо�определена или переопределена, решение получают с помощью ко�манды pinv, выполняющей псевдообращение матрицы А. Можно так�же использовать знак деления – косую черту (slash и backslash).
Пример 2. Требуется решить систему трех уравнений с тремя не�известными:
2
2 2 2
2 2 5.
x y z
x y z
x y z
� � �� � �
� � �
В данном случае матрицы А и В имеют вид
1 1 1 2
A 2 2 1 , B 2 .
1 2 2 5
� � � �� � � �� �� � � �� � � �� � � �
Вводя их в MATLAB и набирая >>X=inv(A)*B, получим:
>>A=[1 1 1; 2 2 1; 1 2 2] >>B=[2; 2; 5] >>X=inv(A)*BA=1 1 1 B= 2 X= �1
2 2 1 2 11 2 2 5 2
Следовательно, решение системы имеет вид x=–1, y=1, z=2.
1.5. Работа с полиномами
В состав MATLAB входит ряд команд, позволяющих выполнятьразличные операции с полиномами от одной переменной, включаяпоиск корней, умножение и деление полиномов, построение полино�ма, проходящего через заданные точки и др. Полином описываетсястрокой своих коэффициентов в порядке от старшего к младшему.Так, полином 3 2 5x x� � будет представлен вектором [1 0 –2 5].
Перечень основных команд MATLAB для работы с полиномамиприведен ниже:
,
,
15
roots conv polyvalpoly deconv residue
Дадим краткие пояснения к ним.Команда roots предназначена для отыскания корней полинома. На�
пример, чтобы решить квадратное уравнение 2 5 6 0x x� � � , следуетнабрать r=roots([1 5 6]), результатом будут значения корней r=[�2; �3].
Функция poly выполняет обратную операцию – строит полиномпо заданным корням. Так, p=poly([�2 �3]) даст p=[1 5 6]. Если в каче�стве входного аргумента функции poly фигурирует квадратная мат�рица, то результатом будет ее характеристический полином.
Следует иметь в виду, что вычисление корней полиномов высокойстепени с помощью команды roots может сопровождаться заметнымипогрешностями, поэтому пользоваться ей следует с осторожностью.
Пример 1 (демонстрация ошибок при вычислении корней). Всекорни полинома 8( 1)x � вещественны и равны –1. Сформируем этотполином командой poly и найдем его корни командой roots.
>>p=poly(�ones(1, 8)), r=roots(p),p = 1 8 28 56 70 56 28 8 1r = �1.0203; �1.0142±0.0144i; �0.9998±0.0201i; �0.9858±0.0140i; –0.9801
В результате получили комплексные числа, причем их модуль от�личается от единицы на 2%. Если учесть, что MATLAB работает с32�разрядной сеткой, это очень большая погрешность.
В наглядной форме ошибки вычисления корней показаны на рис. 1.7.
����� ����� �� ����� ���������������������������������
�
�����
����
�����
����
��������
�
Рис. 1.7
16
Он получен путем пятикратного применения пары команд roots/poly,когда по корням восстанавливался полином, снова искались его кор�ни и т. д. Кружок в центре рис. 1.7 соответствует истинным корнямполинома
8( 1)x � , а звездочками помечены значения корней, вычис�ленные в процессе итераций.
% Корневой тестn=8; r=�ones(1,n); clg, hold on
for i=1:5,p=poly(r), r=roots(p),plot(r,'*','LineWidth',2)
endplot(�1,0,'o','LineWidth',2),grid on; hold off
Избежать подобных ошибок можно, переходя к символьным вы�числениям (для этого необходимо наличие тулбокса SYMBOLIC).
>> r=–ones(1,8); p=poly(r) % численное представление% полинома
p = 1 8 28 56 70 56 28 8 1>> P=poly2sym(p), % символьное представление
% полиномаP =x^8+8*x^7+28*x^6+56*x^5+70*x^4+56*x^3+28*x^2+8*x+1>>R=solve(P); R' % решение уравненияR'=[ �1, �1, �1, �1, �1, �1, �1, �1] % найденные корни
Как видим, символьный решатель уравнений solve дал точныйответ. К сожалению, его возможности ограничены только уравнени�ями, допускающими аналитическое решение.
Для того чтобы построить график полинома, надо предваритель�но вычислить его значения в точках заданного интервала. Для этойцели служит функция polyval (сокращение от polynomial value). На�пример, чтобы построить график полинома 2 5 6y x x� � � на интер�вале 5 5x� � � следует набрать
>> x= �5:0.1:5; p=[1 5 6]; y=polyval(p, x); plot(x, y), grid.
В результате будет получен график, который пересекает ось абс�цисс в точках х1= –3, х2= –2 (это найденные выше корни полинома).
Для умножения полиномов предназначена функция conv (сокра�щение от convolution). Рассмотрим произведение двух квадратныхтрехчленов:
2 21 2
4 3 21 2
3 2; 4 5 1;
4 17 24 13 2.
P x x P x x
P P P x x x x
� � � � � �
� � � � � � �
( ) 0.P x �
17
Вычислим коэффициенты результирующего полинома четвертойстепени в MATLAB:
>> Р1=[1 3 2]; Р2=[4 5 1]; Р= conv(P1,P2).
Получим ответ: Р= 4 17 24 13 2.Обратная операция – деление полиномов – выполняется по ко�
манде deconv. Результат операции деления полиномов представляетсобой частное и остаток.
Пример 2. Найдем целую часть и остаток неправильной рацио�нальной дроби
4 3 22
2 2
4 17 24 14 4 24 5 1 .
3 2 3 2
x x x x xx x
x x x x
� � � � �� � � �
� � � �
Выполним это деление в MATLAB:>> num=[4 17 24 14 4]; den=[1 3 2]; [q,r]=deconv(num,den),
Результат будет иметь видq = 4 5 1, r = 0 0 0 1 2.
Здесь вектор q характеризует целую часть деления, а вектор r –остаток.
Отношение двух полиномов относится к классу так называемыхдробно�рациональных функций. Именно такой вид имеют, напри�мер, передаточные функции систем автоматического управления. Сними часто приходится делать две типовые операции – разложениепередаточной функции в сумму элементарных дробей и обратное дей�ствие – сложение элементарных дробей, т. е. приведение их к общемузнаменателю.
В MATLAB обе эти операции могут быть выполнены с помощьюкоманды residue.
Пример 3. Пусть требуется разложить на элементарные дроби ра�циональную функцию
1 22
1 2
5.
3 2
k kx
x r x rx x
�� �
� �� �
При «ручном» счете сначала находят числа r1, r2 – это корни зна�менателя: r1= –2, r2= –1. Затем для определения неизвестных коэф�фициентов k1, k2 приравнивают числители правой и левой час�тей: 1 25 ( 1) ( 2).x k x k x� � � � �
Отсюда 1 2 1 21, 2 5.k k k k� � � � Решая эту систему, находим
1 23, 4.k k� � �Выполним указанное разложение с помощью команды residue. Ее
входными аргументами являются числитель num и знаменатель den
18
исходной дроби, выходными аргументами – векторы R, K, содержа�щие коэффициенты знаменателей и числителей элементарных дро�бей (полюсы и вычеты исходной функции). Набрав
>>num=[1 5]; den=[1 3 2]; [K, R]=residue(num, den),
получим результат K=[�3 4], R=[�2 �1].Следовательно, искомое разложение имеет вид
2
5 4 3.
1 23 2
x
x xx x
�� �
� �� �
В общем случае корни знаменателя могут оказаться комплексны�ми и кратными; кроме того, исходная дробь может быть неправиль�ной (порядок числителя больше или равен порядку знаменателя). Обособенностях применения команды в этих случаях можно узнать спомощью справки help residue.
При вызове с синтаксисом [num, den]=residue(R, K, P) командавыполняет обратное действие – находит сумму элементарных дро�бей, характеризуемых параметрами R, K и полиномом Р, заданнымвектором своих коэффициентов. Одно из применений этого вари�анта команды – сложение комплексно�сопряженных пар дробейдля получения вещественных элементарных дробей второго поряд�ка.
1.6. Собственные числа и векторы
С необходимостью вычисления собственных чисел и векторовприходится сталкиваться при решении многих физических и тех�нических задач, таких как определение осей эллипсоида инерциитяжелого тела, определение собственных частот колебаний элек�трических и механических систем, решение систем дифференци�альных уравнений, приведение линейных систем к каноническо�му виду.
Напомним, что собственными числами или собственными значе�ниями квадратной матрицы А называются корни ее характеристи�ческого полинома. Характеристический полином находим, раскры�вая определитель
� � 11 1 0det A E ,n n
na a a�
�
�� � � � � � � � ��
где Е – единичная матрица, n – размерность матрицы А.Приравнивая его нулю, получим характеристическое уравнение
матрицы А.Найдем характеристический полином при n=2:
19
� �� �
� � � �
11 1211 22 12 21
21 22
211 22 11 22 12 21
det
.
a aa a a a
a a
a a a a a a
��� � � �� �� � �� �� �
� � � � � � �
Заметим, что коэффициент при� равен следу матрицы А, взятомус минусом, а свободный член равен ее определителю. Поэтому харак�теристическое уравнение можно записать в виде
2 trA det A 0.� �� � �Корни 1 2,� � этого уравнения и будут собственными числами мат�
рицы А.В MATLAB для получения характеристического полинома матри�
цы А можно воспользоваться командой poly(A). Ее результатом будетвектор коэффициентов характеристического полинома. Корни этогополинома находим командой roots.
Найдем, например, собственные числа матрицы 1 2
:0 3
� �� �� �
>>A=[1 2; 0 3]; p=poly(A); L=roots(p)
В результате выполнения этих команд на экран будут выведенысобственные числа 1 и 3.
Более короткий путь получения собственных чисел состоит в при�менении команды eig (от немецкого «eigen» – собственный). Для на�шего примера, вводя код L=eig(A), получаем вектор�столбец собствен�ных чисел с элементами 1; 3. Отметим, что матрица А в примере былатреугольной, поэтому собственные числа равны ее диагональным эле�ментам.
Перейдем к определению собственных векторов квадратной матри�цы. Вектор H называется собственным вектором матрицы А, если в ре�зультате его умножения на матрицу он не изменяет своего направле�ния, а лишь удлиняется или укорачивается.
Алгебраическая запись этого условия имеет вид
AH = �H или (A– �E)H = 0, (*)
где коэффициент � показывает, во сколько раз изменяется длина векто�ра. Для того чтобы однородная система (*) имела ненулевое решение H,необходимо, чтобы определитель системы равнялсянулю: � �det A E 0.�� � Последнее равенство представляет собой харак�теристическое уравнение матрицы A. Следовательно, его кор�ни 1, , ,n� �� т. е. собственные числа, надо поочередно подставлять вуравнение (*), чтобы найти собственные векторы, причем каждому соб�ственному числу i� будет отвечать свой собственный вектор Hi.
20
Замечание 1. Если все собственные числа 1, , n� �� различны, тоу матрицы A будет n линейно независимых собственных векторов H1,…, Hn.
Замечание 2. Поскольку определитель системы (A –� iE)Hi = 0 равеннулю, то одно из уравнений этой системы будет линейной комбинациейдругих, т. е. «лишним» и его следует отбросить. Решение оставшейсясистемы будет определено с точностью до произвольной константы. Гео�метрически это означает, что если H1 – собственный вектор матрицы A,то и k H1, где k – любое число, также собственный вектор. В пакетеMATLAB при вычислении собственных векторов константа k обычновыбирается так, чтобы собственные векторы имели единичную длину(чтобы сумма квадратов их компонент равнялась единице).
Замечание 3. Если матрица A – симметрична, то ее собственныечисла вещественны, а собственные векторы – ортогональны. У не�симметричных матриц все или часть собственных чисел и векторовмогут оказаться комплексными.
Чтобы найти собственные векторы матрицы в пакете MATLAB,надо использовать команду eig с двумя выходными параметрами[H,L]=eig(A). При этом столбцами матрицы H будут служить собствен�ные векторы матрицы A, а диагональными элементами матрицы L –соответствующие им собственные числа.
Пример 1. Дана матрица второго порядка 1 2
A .3 2� �� � �� �
Чтобы най�
ти ее собственные числа, выписываем характеристический полином
� � � �� � 21 2det A E 1 2 6 3 4.
3 2��� ��� � � � � �� � � � � � �� �� �
Его корни вещественны 1 21, 4.� � � � �Матричное уравнение для определения первого собственного век�
тора имеет вид
1 11 1 1
2 2
1 2AH H , .
3 2h hh h� � � �� �� � � �� � � �� �� � �
Ему соответствует система двух скалярных уравнений:
1 2 1 1 2
1 2 2 1 2
2 , 2 2 0,
3 2 , 3 3 0.
h h h h h
h h h h h
� � � � �� ��� �� � � � �� �
Они отличаются только постоянным множителем и эквивалент�ны уравнению 1 2 0.h h� � Принимая, например, 1 1,h � получаем
21
2 1,h � � т. е. первый собственный вектор равен 11
H .1
� �� � ��� �Аналогичным образом получаем систему уравнений для определе�
ния второго собственного вектора:
1 2 1 1 2
1 2 2 1 2
2 4 , 3 2 0,
3 2 4 , 3 2 0.
h h h h h
h h h h h
� � � � �� ��� �� � � �� �
Полагая 1 2,h � получаем 2 3,h � т. е. второй собственный вектор
равен 22
H .3� �� � �� �
Заметим, что его можно записать также в
виде 21
H3/2� �� � �� �
или 22/3
H .1
� �� � �� �Решим эту задачу в MATLAB с помощью команд
>> A=[1 2;3 2]; [H,D]=eig(A)
В результате получаем матрицы:
A H D1 2 –0.7071 –0.5547 –1 03 2 0.7071 –0.832 0 4
Заметим, что MATLAB выдал нормированные собственные векторы.Пример 2. Найдем характеристический полином и собственные
числа матрицы третьего порядка
3 2 1
B 2 1 1 .
1 1 1
� �� �� � �� �� �
Используя команды poly и eig, получаем
>>B=[3 2 1; 2 1 1; 1 1 1] >>v=poly(B) >>eig(B) B=3 2 1 2 1 1 v=1 �5 1 1 ans= �0.3489 0.6041 4.7448 1 1 1
Второй коэффициент характеристического полинома, взятый с об�ратным знаком, равен сумме собственных чисел и следу матрицы B.
1.7. Символьные вычисления в MATLAB
Для проведения символьных вычислений необходим тулбоксSYMBOLIC пакета MATLAB. Если он установлен, то имеется воз�
22
можность выполнять аналитические преобразования формул с бук�венными коэффициентами, производить численные расчеты без ок�руглений, строить графики функций, заданных в неявной форме.
Формирование символьных переменных производится команда�ми sym и syms, например sym(2) или syms x y z. После этого можновводить математические выражения, содержащие эти числа или пе�ременные.
Перечень основных символьных алгебраических операций приве�ден ниже:
det rank inv expand simple solvediag poly eig factor collect numden
Первые три столбца содержат перечень операций над матрицами,которые могут выполняться как в числовой, так и в символьной фор�ме. Например, набрав в командном окне текст
>>syms a b c d; A=[a b;c d], D=det(A)
и нажав Enter, получим ответ
� �� � �� �� �,A , D * * .,
a b a d b cc d
По команде P=poly(A) получим символьную запись характеристи�ческого полинома матрицы
2 ( ) ,P x a d x ad bc� � � � �
а команды inv и eig дают возможность найти в символьном виде об�ратную матрицу, собственные числа и собственные векторы.
Пример 1. Найдем символьные выражения собственных чисел,собственных векторов и характеристического полинома для матриц А,В из двух предыдущих примеров. Преобразуем эти матрицы к сим�вольному виду
>> A=sym(A); [H,D]= eig(A), B=sym(B), V=poly(B)
A=sym(A) H D B=sym(B) V=poly(B)[1 2] [�1 , 1] [�1, 0] B= [ 3, 2, 1] V=x^3�5*x^2+x+1[3 2] [ 1, 3/2] [ 0, 4] [ 2, 1, 1]
[ 1, 1, 1]
Когда используются символьные вычисления собственных векто�ров, MATLAB берет одну из компонент собственного вектора равнойединице. Заметим, что хотя собственные числа матрицы В веществен�ны, команда eig(sym(B)) дает для них комплексные выражения, кото�рые не удается упростить средствами MATLAB.
23
Три последние столбца содержат команды, применяемые для пре�образования и упрощения символьных формул. Так, команда expandраскрывает скобки, команда factor, наоборот, пытается факторизо�вать выражение (разложить его на множители), команда collect при�водит подобные члены. Например, команда expand (a+b)^2 даст ответa^2+2*a*b+b^2, а команда factor(a^2�b^2) даст ответ (a+b)*(a�b). Есте�ственно, надо предварительно объявить символьные переменные ко�мандой: sym a b.
Команды simple и simplify используются для упрощения формул,например, набрав
>>sym(x), y=simple(sin(x)^ 2+cos(x)^ 2),
получим ответ y=1.Особо следует выделить команду solve, которая позволяет решать
алгебраические уравнения, включая нахождение корней полиномов,решение линейных и нелинейных систем уравнений.
Пример 2. Найдем в символьном виде корни квадратного уравне�ния 2 2 0.x bx c� � � Набрав
>>syms x b c; solve('x^2+2*b*x+c=0', x),
получаем ответ: ans= �b+(b^2�c) ̂ (1/2), �b�(^2�c) ̂ (1/2), что соответству�
ет школьной формуле 21,2 .x b b ac� � � �
Команда numden служит для выделения числителя и знаменате�ля дробно�рациональных выражений.
Пример 3. Найдем с ее помощью сумму элементарных дробей
� �� � 2
1 2 3 5 3 5.
1 3 1 3 4 3
p p
p p p p p p
� �� � �
� � � � � �
Вводя текст
>>syms p; [num,den]=numden(1/(p+1)+2/(p+3)),
получаем ответ: num=3*p+5, den=(p+1)*(p+3).Раскрывая последнее выражение с помощью команды expand
>>den=expand(den), получаем den=p^2+4*p+3, что совпадает со знаме�нателем суммы дробей.
Отметим еще команды преобразования полиномов из символьноговида в числовой и обратно sym2poly и poly2sym, а также команды doubleи vpa, служащие для перевода символьных данных в числовые. Напри�мер, P=sym2poly(den) даст P=[1 4 3], а результатом команд A=sym([1 2; 23]), L=eig(A), L1=double(L) будут символьная матрица А, символьный век�тор собственных чисел L и его числовое значение L1:
24
A=[1, 2] L=2+5^(1/2) L1=4.2361[2, 3] 2–5^(1/2) �0.2361
О применении команд laplace и ilaplace для выполнения прямого иобратного преобразования Лапласа будет сказано позже.
В тулбоксе SYMBOLIC есть два удобных средства для построенияграфиков, они вызываются командами ezplot и funtool. Имя первойиз них читается как ‘easy plot’, она предназначена для построенияграфиков функций, заданных аналитически. На рис. 1.8 приведенпример ее использования для построения графика синуса и функции
sin cos2y x x� � .
��� ���
���
��
��
��
��
�� �
���� �
�� �
���� �
� �
��� �
� �
�
�� � �������� � ��
��� ��
���
���
���
��
��
��
��
�� �
���� �
� �
��� �
� �
�
��� � � ��
�������� � �� � � � �� ������ ��� ���� ����� �
Рис. 1.8
Функция ezplot позволяет также рисовать графики функций,заданных неявно либо параметрически. Например, для того что�бы изобразить гиперболу, заданную уравнением 2 2 1x y� � , доста�точно набрать ezplot('x^2�y^2�1'). Можно также указать пределы, вкоторых будет изображена функция, например команда ezplot('�x^3+2*x+1',[�2,3]) нарисует график полинома 3 2 1x x� � � наинтервале [�2, 3].
Для изображения функций, заданных параметрически,( ), ( ),x f t y g t� � команда вызывается в формате ezplot('f(t)', 'g(t)', [t0,
t1]). Пусть, например, требуется нарисовать на плоскости (x, y) кри�вую, заданную уравнениями:
x = 2t – 4t3, y = t2 – 3t4.
Набирая в командной строке код
>>ezplot('2*t�4*t^3','t^2�3*t^4',[–1.5,1.5]),
25
получаем кривую, показанную на рис. 1.9. В математической теориикатастроф она известна как «ласточкин хвост».
�
���� �� ���� � ��� � �������
��
����
�
�
�
����� � � ���� ���
�� � �
Рис. 1.9
Второе графическое средство тулбокса SYMBOLIC – это функцио�нальный калькулятор funtool. Он позволяет выполнять различныеманипуляции с двумя функциями f(x) и g(x) от одной переменной,например складывать их, перемножать, интегрировать.
Задачи и упражнения
1. Кривые на плоскости. Используя команду plot, построить гра�фики заданных плоских кривых:
а) кардиоида 2cos cos2 , 2sin sin2x t t y t t� � � � (траектория точ�ки, лежащей на окружности, которая катится по кругу того же ради�уса);
б) нефроида 3cos cos3 , 3sin sin3x t t y t t� � � � (траектория точ�ки, лежащей на окружности, которая катится по кругу, радиус кото�рого в два раза больше);
в) дельтоида 2cos cos2 , 2sin sin2x t t y t t� � � � (траекторияточки, лежащей на окружности, которая катится по внутрен�ней стороне другой окружности, радиус которой в три раза боль�ше);
г) астроида 3cos cos3 , 3sin sin3x t t y t t� � � � (траектория точ�ки, лежащей на окружности, которая катится по внутреннейстороне другой окружности, радиус которой в четыре раза боль�ше).
26
2. Собственные векторы. Дана матрица 1 3
2A .
0a a
a� �� � �� �
Требуется
найти ее собственные векторы и написать MATLAB�программу, ко�торая при заданных 1 2 3, ,a a a находит собственные векторы и изоб�ражает их на плоскости.
3. Три матрицы. Для заданных матриц найти характеристичес�кие полиномы, собственные числа и собственные векторы:
а)1 24
;3 18
�� �� �� �� �
б)
4 1 2
2 1 2 ;
1 1 1
�� �� �� �� �� �� �� �
в)
0 1 0
0 0 1 .
1 1 1
� �� �� �� �� � �� �
Ответ:
а) �2+19�+90 б) �3+6�2+11�+6 в) �3+ �2+ �+1 [�1,�2] =[�9 �10] [�1,�2,�3 ] = [�1 �2 �3] [�1, �2, �3 ] = [�1 i � i]
3 8
H .1 3
�� �� � ��� �
1 1 1
H 1 0 1 .
1 1 0
� �� �� � �� �� �
1 1 1
H 1 .
1 1 1
i i
� �� �� � �� �� �� �� �
4. Типы телосложения. Существуют три типа телосложения: ас�тено�торакальный (худой, тощий), мышечный (атлетический) и ди�гестивный (толстый, тучный).
Астено�торакальные люди выносливы, способны к монотоннымдлительным нагрузкам. Они хороши для бега на длинные дистан�ции, лыж, гребли, велосипеда, спортивной ходьбы. По натуре этостайеры – и в спорте и в жизни. Дигестивные люди хорошо справля�ются с интенсивными импульсными нагрузками, у них широкие ко�сти и сильные мышцы. Спорт – толкание ядра, штанга. По натуреэто спринтеры. В жизни они энергичны, подвижны, легко переклю�чаются с одного дела на другое.
Чтобы определить тип телосложения, используется формулаT=P/H3 , где P – вес в килограммах, Н – рост в метрах. Чем вышеT, тем плотнее (упитаннее) человек. Для мужчин, если T <11,5, тотип астено�торакальный; если 11,5< T <13, то тип мышечный;если T >13, то тип дигестивный. Для женщин границы сдвинутына 1 вверх.
Требуется составить MATLAB�программу, которая определяет типтелосложения по росту и весу (для мужчин и женщин) и построить
27
кривые, которые делят плоскость (P, H) на области, соответствую�щие каждому типу.
5. Вложенные корни. Функция ( )y n определена равенством
( ) 1 2 3 ...y n n� � � � � . Требуется составить MATLAB�програм�
му для ее вычисления, найти (9)y и построить график ( )y n .Решение. Найти (9)y можно, набрав в командном окне явную
формулу
>>y=sqrt(1+sqrt(2+sqrt(3+sqrt(4+sqrt(5+sqrt(6+sqrt(7+sqrt(8+sqrt(9))))))))),
что даст ответ y =1.7579.Для вычисления результата при любом n составим программу�
функцию sqrt1234, используя оператор for.
function y=sqrt1234(n)%задача про вложенные корниy(n)=sqrt(n);for i=n�1:�1:1,
y(i)=sqrt(i+y(i+1));endy=y(1);
Вычисляя sqrt1234(9), вновь получим ans=1.7579.Для построения графика y(n) составим программу�сценарий sqr.
%Program sqr% программа sqr.m использует функцию sqrt1234(n)for j=1:10,
y(j)=sqrt1234(j);end,plot(y,'*'), grid
6. Световое табло. Сто светящихся кнопок расположены в видеквадрата 10 10. При нажатии любой кнопки данная кнопка и все,находящиеся с ней в одном ряду и в одном столбце, меняют своесостояние на противоположное (светящиеся гаснут, а несветящи�еся загораются). Какое наименьшее число кнопок нужно нажать,чтобы все кнопки оказались погашенными, если сначала они всесветились?
Для проведения экспериментов в MATLAB составьте программу,позволяющую проверять разные стратегии нажатия кнопок.
Указание. Исходное состояние табло изобразим матрицей10 10
>> a0=ones(10);
28
a0=1 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 11 1 1 1 1 1 1 1 1 1
После нажатия кнопки a(k,l) исходная матрица a0 преобразуетсяпо правилу
>>a0(k,:)=~a0(k,:);a0(:,l)=~a0(:,l);a0(k,l)=~a0(k,l);a=a0;
где знак тильда означает логическое отрицание.Рассмотрите стратегии: обход табло по спирали до центра; обход
“змейкой” (строка за строкой).
29
2. МОДЕЛИРОВАНИЕ ЛИНЕЙНЫХ СИСТЕМ В MATLAB
2.1. Способы описания линейных систем
Прежде чем рассматривать вопросы моделирования динамическихсистем в MATLAB, напомним основные определения. Рассмотримсистему S с входом u и выходом y (рис. 2.1). Если мгновенное значе�ние выхода y(t) зависит не только от мгновенного значения входаu(t), но и от предыстории, система называется динамической.
Системы с одним входом и одним выходом обозначаются английс�кой аббревиатурой SISO – Single Input Single Output. Системы с не�сколькими входами и выходами (рис. 2.2) обозначаются MIMO –Multiple Input Multiple Output. В этом случае входы и выходы систе�
мы часто записывают в виде векторов, например 1 1
2 2
, .u y
u yu y
� � � �� �� � � �� � � �
�� �
�
���
�� �
���
��� �
Рис. 2.1 Рис. 2.2
Понятие динамической системы весьма широко. Наиболее хоро�шо изученными и удобными для анализа являются линейные стаци�онарные динамические системы (LTI – Linear Time Invariant systems).
Для исследования и моделирования таких систем предназначентулбокс CONTROL, входящий в семейство специальных библиотекпакета MATLAB. Он содержит около 60 команд, служащих для фор�мирования линейных моделей, их анализа, преобразования и моде�лирования.
В данном разделе ограничимся рассмотрением линейных систем содним входом и одним выходом (см. рис. 2.1). Они могут быть зада�ны передаточной функцией или матричным описанием в простран�стве состояния.
Напомним, что передаточной функцией линейной системы назы�вается отношение изображения по Лапласу выходного сигнала y(p) к
30
изображению по Лапласу входного сигнала и(p) при нулевых началь�
ных условиях:( )
( ) .( )
y pQ p
u p� Например, передаточная функция интег�
ратора равна 1,
p передаточная функция апериодического звена ,
1
k
Tp �
передаточная функция идеального колебательного звена 2 2.
k
p ��Передаточная функция линейной системы n�го порядка представ�
ляет собой отношение двух полиномов
11 0
11 0
( )( ) , .
( )
m mm m
n nn n
b p b p bB pQ p m n
A p a p a p a
�
�
�
�
� � �� � �� � �
��
Корни z1, …, zm числителя B(p) называются нулями системы (zeros),корни p1, .., pn знаменателя A(p) – полюсами системы (poles). Знаниенулей и полюсов позволяет представить описание системы в виде
1
1
( ) ( )( ) ,
( ) ( )m
n
p z p zQ p k
p p p p
� � � ��
� � � ���
где коэффициент /m nk b a� .В MATLAB полиномы B(p) и A(p) представляются векторами�стро�
ками их коэффициентов: num=[bm, …, b0] и den=[an, …, a0], а нули иполюсы – векторами�столбцами z и р: z=[z1, …, zm]', p=[p1, …, pn]'. На�пример, для передаточной функции третьего порядка
2
3 2
2 6 4( )
3 5 2
p pQ p
p p p
� ��
� � �
имеем num=[2 �6 4], den=[1 3 5 2].Для создания модели, заданной в виде передаточной функции,
используется конструктор tf (от Transfer Function). Его входнымипараметрами являются массивы коэффициентов числителя и знаме�нателя, например по команде sys=tf(2,[3 1]) будет сформирована сис�
тема sys с передаточной функцией 2
.3 1p �
Доступ к числителю и зна�
менателю объекта, заданного в виде передаточной функции, можнополучить, обращаясь к полям num и den. Так, набрав sys.num{1}, по�лучим ответ ans=0 2, а набрав sys.den{1}, получим ans=3 1.
31
Другой способ задания линейных систем – описание в про�странстве состояний. Оно включает четыре матрицы A, B, C, D иимеет вид
X=AX+BU, Y=CX+DU,�
где U, Y – векторы входных и выходных сигналов,1
X [ ... ]Tnx x� –
вектор состояния, A, B, C, D – постоянные матрицы. Если у системыодин вход и один выход, то B – вектор�столбец, C – вектор�строка,D – число (часто равное нулю).
Для того чтобы создать в MATLAB объект, заданный описанием впространстве состояний, используется конструктор ss (от State Space– пространство состояний). Его входными параметрами служат мат�рицы A, B, C, D системы.
Пример. Объект второго порядка описывается уравнениями
1 1 2
2 1 2
1 2
2 ,
3 5 4 ,
7 .
x x x
x x x u
y x x
� � �
� � �
� �
��
Им соответствуют следующие матрицы описания в пространствесостояний:
� �2 1 0A , B , C 1 7 , D 0.
3 5 4�� � � �� � � �� � � ��
Чтобы ввести это описание в MATLAB, следует набрать текст:
>>A=[�2, 1; 3, �5]; B=[0; 4]; C=[1, 7]; D=0; sys=ss(A, B, C, D).
Доступ к полям a, b, c, d созданного ss�объекта можно получитьтак же, как к полям num и den tf�объекта, например набрав sys.c,получим ответ ans=1 7.
Мы рассмотрели два способа представления линейных моделей вMATLAB – с помощью передаточной функции Q(p) (tf�модель) и впространстве состояний X=AX+BU,� Y=CX+DU (ss�модель). Анали�тическая связь между этими описаниями дается формулой
1Q( ) C( E A) B D.p p �� � �
В MATLAB переход от ss�модели к tf�модели можно осуществить,используя конструктор tf с аргументом в виде исходной ss�модели.Обратный переход выполняется при помощи команды ss с аргумен�том в виде tf�модели. Выполним переход к передаточной функциидля нашего примера, набрав sys1=tf(sys). На экране появится текст:
32
transfer function 2
28 60,
7 7
s
s s
�
� � извещающий о том, что сформирована
tf�модель sys1 с указанной передаточной функцией.Если после этого ввести команду sys2=ss(sys1), то мы снова полу�
чим ss�модель, однако матрицы A, B, C, D в ней будут уже иными:
� �7 3.5 8, , 3.5 3.75 , 0.
2 0 0a b c d
� �� � � �� � � �� � � �
Тем не менее системы sys и sys2 эквивалентны, поскольку у ниходинаковые передаточные функции (в этом можно убедиться с по�мощью команды tf(sys2)). Они представляют собой две различныереализации одной и той же системы в пространстве состояний.
В MATLAB имеется еще один способ описания систем – нуль�по�люсное или zpk�описание. Оно получается в результате разложенияна множители числителя и знаменателя передаточной функции.
Zpk�представление передаточной функции имеет вид
1
1
( ) ... ( )( ) ,
( ) ... ( )m
n
p z p zQ p k
p p p p
� � � ��
� � � �
где m nk b a� – коэффициент усиления (gain). Такое описание созда�ется конструктором zpk, который можно использовать также дляперехода от ss�модели или tf�модели к zpk�описанию.
В частности, выполняя команду sys3=zpk(sys2), получим систему сописанием
28( 2,143).
( 5,791)( 1,209)
s
s s
�� �
Доступ к отдельным элементам zpk�модели осуществляется также, как и для tf�моделей, например sys3.z даст ans=[�2.1429], т. е. нулисистемы.
Отметим возможность объединения нескольких моделей в болеесложные системы. Например, произведение sys=sys1*sys2 означаетпоследовательное соединение систем sys1 и sys2, а сумма sys=sys1+sys2означает их параллельное соединение. Можно использовать такжезнаки вычитания и деления – , /.
2.2. Моделирование линейных систем
Главная цель моделирования – получение реакции системы на теили иные входные сигналы. Входные воздействия могут быть стан�
33
дартными (единичный скачок, импульс, синусоида) либо произволь�ными, когда входной сигнал формируется как некоторая функциявремени.
В теории линейных систем широко используются две временныехарактеристики систем – импульсная весовая функция и импульс�ная переходная характеристика. Импульсной весовой функцией q(t)называется реакция системы на входной сигнал в виде дельта�функ�ции, т. е. на бесконечно короткий импульс единичной площади, дей�ствующий в момент времени t = 0.
Импульсной переходной характеристикой (переходной функци�ей) h(t) называется реакция системы на входной сигнал в виде еди�ничной ступеньки (такой сигнал может рассматриваться, как интег�рал от дельта�функции). Весовая и переходная функции связаны со�
отношением d( ) ( ).d
q t h tt
�
Изображения по Лапласу дельта�функции и единичного скачкаравны 1 и 1/p соответственно. Изображение весовой функции по Лап�ласу равно передаточной функции системы, а изображение переход�ной характеристики равно передаточной функции, деленной на р.
Отсюда вытекает возможность получения весовой функции с по�мощью обратного преобразования Лапласа от передаточной функ�
ции. Например, передаточная функция интегратора1
( ) ,Q pp
� поэто�
му его весовая функция q(t)=1; передаточная функция апериодичес�
кого звена ( ) ,b
Q pp a
��
поэтому его весовая функция имеет
вид ( ) .atq t be�� Аналогично, для колебательного звена с передаточ�
ной функцией2 2
( )k
Q pp k
��
для весовой функции получа�
ем ( ) sin .q t kt�Эта возможность отыскания весовой функции по известной пере�
даточной функции реализуется в MATLAB командой ilaplace тулбок�са SYMBOLIC, выполняющей обратное преобразование Лапласа(inverse Laplace). В частности, для получения весовой функции коле�бательного звена достаточно набрать syms k p; q=ilaplace(k/(p2+k2)),чтобы получить результат q=sin(k*t). Команда laplace служит длявыполнения обратной операции. Например, чтобы получить изобра�жение по Лапласу функции sin10t, достаточно набрать
34
>>sym p, t; y=laplace(sin(10*t), t,p).
Получаем ответ: y=10/(p^2+100), т. е. 2
10( ) .
100y p
p�
�Другой путь аналитического получения весовой и переходной фун�
кций связан с символьным решением дифференциальных уравнений.Если система задана описанием в пространстве состояний (ss�модель)
X=AX b , cX,u y� ��
то дифференциальные уравнения для весовой функции q и переход�ной характеристики h имеют вид
X=AX, cX, X(0) b;
X=AX b, cX, X(0) 0.
q
h
� �
� � �
��
Например, описание в пространстве состояний апериодического
звена с передаточной функцией ( )b
Q pp a
��
имеет вид
, .x ax bu y x� � � ��
Его весовая функция является решением дифференциального урав�нения
0, (0) ,x ax x b� � ��
откуда ( ) .atq t be�� Для получения переходной функции надо решитьнеоднородное дифференциальное уравнение
, (0) 0.x ax b x� � ��
Его решение получаем, складывая общее решение однородногоуравнения at
однx Ce�� и частное решение неоднородного уравнения/ :частx a b� �
� �( ) / 1 .at atah t Ce a b e
b� �� � � �
Постоянная С найдена из начального условия h(0) = 0.Этот способ отыскания весовой и переходной функций может быть
реализован в MATLAB с помощью команды dsolve тулбоксаSYMBOLIC. Чтобы получить функцию h(t) для нашего примера, нуж�но набрать
>>syms a b; h=dsolve('Dx+a*x=b, x(0)=0').
На дисплее появится ответ h=b/a�exp(�a*t)*b/a, совпадающий с по�лученным выше.
35
В библиотеке CONTROL весовая и переходная характеристикиполучаются путем прямого численного моделирования. Соответ�ствующие команды называются impulse и step, это сокращения отimpulse function (импульсная функция) и step function (переход�ная функция). Для выполнения этих операций во всех случаяхнеобходимо предварительно ввести исходную информацию о сис�теме в виде tf�модели или ss�модели, а также сформировать массивравноотстоящих моментов времени t, задающий временной интер�вал моделирования.
Существует несколько модификаций команды impulse. Простей�шая из них имеет вид impulse(sys), ее результатом является графиквесовой функции. Если набрать impulse(sys,10), то график будет пост�роен на интервале 0 10t� � (в предыдущем случае MATLAB сам опре�делял длительность интервала).
Более содержательные варианты этой команды получаются,если использовать выходные параметры (их число можно задаватьот одного до трех). Наиболее полный вариант имеет вид[y,t,X]=impulse(sys,t), он предполагает, что sys – это ss�модель. Здесьt – массив точек времени, который нужно сформировать заранее(например, t=0:.1:10), y – выходной сигнал, Х – вектор состояния.Если моделируется система второго порядка на указанном интер�вале времени, то массив Х будет содержать два столбца по 101 чис�лу в каждом. Первый столбец – это отсчеты функции х1(t), второй– отсчеты функции х2(t). Столбец у будет содержать 101 значениевыходного сигнала у(t).
Для построения графиков этих сигналов нужно использовать ко�манды plot(t,y), plot(t,X), plot(t,X(:,1)). В первом случае будет выведенграфик функции у(t), во втором – графики обеих переменных х1(t),х2(t), в третьем – график одной переменной х1(t). Команда plot(X(:,1),X(:,2)) построит траекторию на фазовой плоскости 2 1( ).x f x� .
Функция step обеспечивает получение переходной функции моде�ли, т. е. реакции на входной сигнал в виде единичной ступеньки. Онаимеет те же модификации, что и impulse:
>>step(sys), step(sys,T), y=step(sys,t), [y,t,X]=step(sys,t).
Здесь, как и раньше, в качестве второго входного аргумента мож�но указывать либо число T (последний момент времени), либо массивt (все точки временного интервала).
Аналогичный синтаксис имеет и команда initial (от initial condition– начальные условия). Она позволяет моделировать свободное дви�жение системы, заданной своим матричным описанием, из началь�ных условий Х0 (входной сигнал при этом не подается и=0).
36
Просто initial(sys,X0) строит график выходного сигнала, в более пол�ном варианте используются три выходных параметра[y,t,X]=initial(sys,X0,t).
Основная команда, применяемая для моделирования линейныхсистем – это команда lsim (от linear simulation – линейное моделиро�вание). Она обеспечивает получение реакции модели на произволь�ный входной сигнал и(t), представленный массивом своих отсчетов.Простейшая модификация этой команды lsim(sys,u,t) выводит графиквыходного сигнала системы. Естественно, предварительно надо сфор�мировать массив времени t, входной сигнал и ввести описание систе�мы sys. Например, задав:
>>t=0:1:10; u=sin(t); sys=tf(1,[1 1]; lsim(sys,u,t),
получим реакцию апериодического звена с передаточной функци�
ей1
1p � на входной сигнал u=sint при 0 10t� � .
Другие модификации этой команды могут использовать выход�ные параметры и начальные условия:
>>y=lsim(sys,u,t), [y,t,X]=lsim(sys,u,t), [y,t,X]=lsim(sys,u,t,X0).
Последний вариант требует задания системы sys в виде ss�модели.Построение графиков производится с помощью команды plot, напри�мер plot(t,u,t,y).
В пакете MATLAB имеется еще ряд возможностей для расчета от�клика линейных систем на известные входные воздействия. К нимотносятся:
использование матричной экспоненты для получения весовой ипереходной функций (команда expm);
вычисление интеграла свертки входного сигнала и весовой функ�ции системы (команда trapz);
аналитическое решение дифференциальных уравнений (командаdsolve тулбокса SYMBOLIC);
использование прямого и обратного преобразований Лапласа (ко�манды laplace и ilaplace тулбокса SYMBOLIC);
структурное моделирование в SIMULINK.Часть из них будет рассмотрена в следующих разделах.
2.3. Частотные характеристики
В библиотеке CONTROL имеются функции для исследования сис�тем в частотной области. К основным частотным характеристикамотносятся амплитудно�частотная характеристика (АЧХ), фазочас�тотная характеристика (ФЧХ) и амплитудно�фазовая характерис�
37
тика (АФХ), называемая также диаграммой Найквиста. Все они мо�гут быть получены из передаточной функции системы Q(p) после фор�
мальной подстановки p i� � , где 1,i � � � – вещественная пере�
менная, изменяющаяся в пределах от нуля до бесконечности. С фи�зической точки зрения� – это частота синусоидального сигнала, по�даваемого на вход системы, а Q(i� ) – Фурье�изображение соответ�ствующего выходного сигнала.
Число ( ) ( ) ( )Q i a ib� � � � � – комплексное, оно может быть изобра�жено на комплексной плоскости с помощью вектора с координатами(a, b) (рис. 2.3).
�� �
��
�
�
��������
� �
�
�
�
Рис. 2.3
Длина этого вектора определяется формулой 2 2 ,A a b� � а угол �
– соотношением tg .ba
� � �
Если изменять частоту� от нуля до бесконечности, конец вектораопишет некоторую траекторию на комплексной плоскости. Она на�зывается амплитудно�фазовой характеристикой системы или годог�рафом Найквиста (в последнем случае берут �� � � �� ).
Зависимость длины вектора от частоты А(� ) называется ампли�тудно�частотной характеристикой, а зависимость �(� ) – фазочас�тотной характеристикой. Графики АЧХ и АФХ часто рисуют в лога�рифмическом или полулогарифмическом масштабе. Логарифмичес�кая амплитудная характеристика (ЛАХ) описывается форму�лой 1020 log ( )A � и изображается в логарифмическом масштабе. ЛАХи АФХ, построенные в логарифмическом масштабе, называются взарубежной литературе диаграммами Боде.
Опишем процедуру получения этих характеристик в MATLAB.Будем считать, что система задана своей tf�моделью и сформированвектор частот W, например:
38
>>sys=tf([1 1], [1 1 1]); W=0: .1: 10;
Для получения частотного отклика (frequency response) Q(i�) ис�пользуется команда freqresp. В нашем примере передаточная функ�ция и частотный отклик имеют вид
2 2
1 1( ) , ( ) .
1 1
p iQ p Q i
p p i
� � �� � �
� � � � ��
По команде H=freqresp(sys,W) будет вычислен массив комплексныхчисел, содержащих 101 значение функции Q(i� ).
Команда plot(H(:)) построит зависимость мнимой части этих чиселот вещественной, т. е. график АФХ (рис. 2.4).
� ��� ��� ��� ��� � ��� �����������������������������
�
�
Рис. 2.4
� � � � � ���
���
�
���
� � � � � � ��������������������������������
�
�
Рис. 2.5 Рис. 2.6
Для построения графиков АЧХ и ФЧХ надо найти модуль и аргу�мент этих чисел, для чего служат команды abs и angle:
>>A=abs(H(:)); f=angle(H(:)); plot(W,A), plot((W,f).
39
Результат показан на рис. 2.5, 2.6; из них видно, что с ростом часто�ты АЧХ стремится к нулю, а ФЧХ – к величине ��/2.
Более короткий путь построения частотных характеристик – исполь�зование команд nyquist и bode. Команда nyquist(sys) построит диаграм�му Найквиста, т. е. АФХ (при этом рассматриваются как положитель�ные, так и отрицательные частоты). По команде bode(sys) будут постро�ены графики АЧХ и ФЧХ в логарифмическом масштабе.
Еще один способ построения графиков частотных характеристик, атакже импульсной и переходной функций – это использование специ�ального графопостроителя тулбокса CONTROL, который вызываетсякомандой ltiview.
2.4. Анализ линейных систем
К классическим задачам исследования линейных систем относятсяотыскание нулей и полюсов передаточной функции, а также анализ ус�тойчивости, ограниченности, управляемости и наблюдаемости. Корот�ко охарактеризуем команды библиотеки CONTROL, предназначенныедля решения этих задач:
pole eig ctrb gram dcgainzero(tzero) pzmap obsv minreal roots
Наиболее известный способ проверки устойчивости связан с вы�числением полюсов системы, т. е. корней ее характеристическогоуравнения.
Критерий устойчивости. Для того чтобы линейная система былаустойчивой, необходимо и достаточно, чтобы все корни характеристи�ческого уравнения лежали в левой полуплоскости.
Пример 1 (анализ устойчивости и ограниченности). Дана неодно�родная система дифференциальных уравнений:
2 4 ,
2 .
x y x a
y x y b
� � �� � �
��
Требуется проанализировать ее устойчивость и выяснить, при ка�ких значениях постоянных a и b все решения системы ограничены.
Решение. Запишем систему в матричной форме X=AX+B,� где
4 2A , B
2 1ab
�� � � �� �� � � ��� � � � и найдем корни ее характеристического уравне�
ния, т. е. собственные числа матрицы А:
>> A=[�4 2;2 �1]; eig(A)ans=�5 0
40
Одно из собственных чисел отрицательно, а другое лежит на мни�мой оси, следовательно, однородная система находится на границеустойчивости.
Для ответа на вопрос об ограниченности неоднородной системынайдем ее аналитическое решение с помощью команды dsolve:
>> syms a b;s=dsolve('Dx=2*y�4*x+a,Dy=2*x�y+b')s = x: [1x1 sym]
y: [1x1 sym]>> x=s.xx =2/5*exp(�5*t)*C1�1/10*b+1/5*a+2/5*t*b+1/5*t*a+1/2*C2>> y= s.yy =�1/5*exp(�5*t)*C1+4/5*t*b+2/5*t*a+C2
Приведем подобные члены и перейдем к обычной нотации:
51 2
51 2
( 2 ) 2 ,
2( 2 ) 2 .
t
t
x a b t c e a c
y a b t c e c
�
�
� � � � �
� � � �
Решение будет ограниченным, если a = –2b, тогда5 5
1 2 1 22 , 2 .t tx c e a c y c e c� �� � � � �Нули и полюсы системы, заданной передаточной функцией –
это просто корни iz и ip полиномов, стоящих в числителе и знаме�нателе. Поэтому для вычисления вектора нулей z и вектора полю�сов p передаточной функции Q(p) = num/den могут использоватьсякоманды z = roots(num); p = roots(den). Если система sys задана какtf�модель или ss�модель, то используются команды p=pole(sys),z=zero(sys). Для нахождения полюсов допустимо также использо�вание команды p=eig(sys), что эквивалентно команде p=eig(sys.a),т. е. вычислению собственных чисел матрицы А. Функция tzero(от transfer zeros – передаточные нули) позволяет находить нулисистемы по матрицам описания в пространстве состоянийz=tzero(A,B,C,D).
Функция pzmap предназначена для одновременного вычисле�ния нулей и полюсов. Если набрать [p, z]=pzmap(sys), то будут вы�ведены столбцы p и z полюсов и нулей, а просто pzmap(sys) показы�вает расположение нулей и полюсов на комплексной плоскости(на графике нули изображаются ноликами, а полюсы – крестика�ми).
При анализе управляемости и наблюдаемости линейных системиспользуются матрицы управляемости R и наблюдаемости D, пост�роенные на основе матриц A, B, C описания в пространстве состоя�ний:
41
1
1
C
CAR [B, AB, ..., A B], D .
...
CA
n
n
�
�
� �� �� �� � � �� �� �� �
Приведем соответствующие критерии.Критерий управляемости. Для того чтобы система была управ�
ляемой необходимо и достаточно, чтобы матрица управляемостиимела полный ранг: rankR = n.
Критерий наблюдаемости. Для того чтобы система была наблю�даемой необходимо и достаточно, чтобы матрица наблюдаемостиимела полный ранг: rankD = n.
Критерий минимальности. Для того чтобы система была мини�мальной необходимо и достаточно, чтобы обе матрицы R и D имелиполный ранг: rankR = n, rankD = n.
Формирование матриц управляемости и наблюдаемости произво�дится с помощью команд ctrb и obsv (от controlability и observability).Их синтаксис одинаков: R=ctrb(sys), D=obsv(sys). В качестве аргумен�тов можно использовать непосредственно матрицы A, B, C описанияв пространстве состояний, например R=ctrb(A, B), D=obsv(A, C) илиR=ctrb(sys.a, sys.b), D=obsv(sys.a, sys.c). Для вычисления ранга этихматриц используется команда rank.
Другой способ проверки управляемости и наблюдаемости опира�ется на вычисление рангов так называемых грамианов управляемос�ти и наблюдаемости. Для их нахождения служит команда gram, до�полнительные сведения о ней можно найти в подразд. 4.4, 4.5.
Если система неуправляема или ненаблюдаема, то ее порядок мо�жет быть понижен путем удаления неуправляемых и ненаблюдае�мых подсистем. У SISO�систем это эквивалентно сокращению совпа�дающих нулей и полюсов передаточной функции. Для этой цели ис�пользуется команда minreal (от minimal realization).
Ее можно использовать с одним и двумя входными аргументами:sys1=minreal(sys) и sys1=minreal(sys, eps). Второй аргумент позволяетуказывать допуск �, задающий степень близости сокращаемых ну�лей и полюсов.
Пример 2 (анализ минимальности). Рассмотрим систему с переда�
точной функцией 2
1( ) .
3 2
pQ p
p p
��
� � Она имеет один нуль z1= –1 и два
полюса р1= – 1, р2= – 2. Система неминимальна, поскольку р1= z1.Сформируем tf�модель этой системы и найдем ее нули и полюсы:
42
>>s=tf([1 1],[1 3 2]) >>zero(s) >>pole(s) >>eig(s) >>[p, z]=pzmap(s)s + 1 �1 �2 �2 p =�2 z =�1
—————— �1 �1 �1
s2 + 3 s + 2
Расположение нулей и полюсов на комплексной плоскости можно по�лучить, набрав команду pzmap(s) без выходного аргумента (на рис. 2.7 по�люсы помечены крестиками, нуль – ноликом).
�� ���� �� ���� ���
����
�
���
�
�������� ��
���������
������������
Рис. 2.7
Оба полюса отрицательны, следовательно, система устойчива.Наличие диполя (совпадающего нуля и полюса) в точке (–1, 0) гово�рит о неминимальности системы.
Перейдем к ss�модели и проанализируем ее управляемость и на�блюдаемость, используя команды ctrb, obsv и rank:
>>s1 = ss(s) >>R=ctrb(s1) >>D=obsv(s1) >>rank(R) >>rank(D)a = �3 � 2 b = 2 R = 2 � 6 D = 0.5 0.5
1 0 0 c = 0.5 0.5 0 2 �1 �1 2 1
Анализируя ранги матриц R и D, заключаем, что система s1 управ�ляема, но ненаблюдаема, следовательно, ее порядок может быть по�нижен.
Найдем передаточную функцию минимальной реализации:
q=minreal(s), получаем ответ q 1.
2s�
� К тому же результату прихо�
дим, сокращая числитель и знаменатель исходной передаточной функ�ции ( )Q p на общий множитель р+1.
43
Заметим, что статический коэффициент усиления при переходе кминимальной реализации не изменился:
>>K=dcgain(s) >>k=dcgain(q)K=0.5 k=0.5
Весовая и переходная функции также остаются прежними. В этомможно убедиться с помощью команд impulse(s, q), step(s, q), по которымбудут построены графики указанных функций для обеих систем.
Команды ctrb и obsv можно использовать при работе с символьнымивыражениями, например, когда часть элементов матриц A, b, c заданы вбуквенном виде.
Пример 3 (анализ управляемости и наблюдаемости системы третье�го порядка). Объект управления задан описанием в пространстве состо�яний
X� = AX + bu, y = cX, � �1 2
2 3
1
1 0
A 0 0 , , 1 1 1
0 1 1
a a
a b a c
a
�� � � �� � � �� � � �� � � �� � � ��
,
где X�R3 – вектор состояний, u, y – входной и выходной сигналы.Требуется проанализировать его управляемость и наблюдаемость.Решение. Вводим исходные символьные матрицы:
>> syms a1 a2 a3 real>> A=[�a1 1 0;0 –a2 0;0 1 �a1]; b=[a2;a3;1]; с=[1 1 1];
Формируем матрицы управляемости и наблюдаемостиR=[b, Ab, A2b], D = [cT, (cA)T, (cA2)T]T:
>> R=ctrb(A, b) >> D=obsv(A, c),[a2, �a1*a2+a3, �a1*(�a1*a2+a3)�a2*a3] [1, 1, 1]
[a3, �a2*a3, a2^2*a3 ] [�a1, 2�a2, �a1]
[1, a3�a1, �a2*a3�a1*(a3�a1)] [a1^2, �2*a1�(2�a2)*a2, a1^2]
Вычисляем определители: det(R)=0, det(D)=0. Оба определителя рав�ны нулю, следовательно, система неуправляема и ненаблюдаема.
Вырожденность матрицы наблюдаемости очевидна (ее первый и тре�тий столбцы совпадают). Вырожденность матрицы управляемости «наглаз» обнаружить значительно сложнее.
Задачи и упражнения
1. Для приведенных ниже систем второго порядка найти диффе�ренциальное уравнение, передаточную функцию, весовую функцию,описание в пространстве состояний и выполнить моделирование вMATLAB.
44
а. Механическая система с трением.
�� �
��������� �������
������� ��� ��������
� ��� ���������������
����������������������
�
Входной сигнал – сила F, выход – координата x или скорость
.x� � �б. Электрическая схема (параллельный колебательный контур).
� �� � � �� � � � �
� � � � � � �
�
в. Электрическая схема (последовательный колебательный контур).
��
��
�
�
� �
� � �� ��
� �
� �
Численные значения параметров L, m принять равными числу буквв Вашей фамилии; R, � – числу букв в имени/10; с, k – числу букв вотчестве.
Указание. При построении математической модели использоватьуравнения:
��
45
второй закон Ньютона
,ma v kx F� � � �
где , ;v x a x� �� ��законы Кирхгофа и Ома
1( ), , / ( ), , , .L C R L c R R C Li i i i t u u u u i u z p z R z z Lp
Cp� � � � � � � � � �
2. Используя команду dsolve, найти решение дифференциальногоуравнения
0,x x x x� � � ���� �� �
с начальными условиями: a) 0 0 01, 2;x x x� � � ��� � б) 0 0 060, 0.x x x� � �� ��Ответ: а) sintx e t�� � ,
б) 30( sin cos )tx e t t�� � � � 30 42,4sin( 45 )t oe t� � � .
3. Решить в символьном виде следующие дифференциальные урав�нения:
а) 2 4, (0) 1, (0) 2, (0) 2;x x x x x x� � � � � � ���� �� � � ��
б) 2 sin( ), (0) (0) 0.x n x a nt x x� � �� � ��� �
Ответ: а) ( ) 4 3 2 ,tx t t e� � �
б) � �2( ) sin cos cos( ) .
2
ax t nt nt nt
n� � � ��
4. Найти реакцию апериодического звена с передаточной функци�
ей1
( )Q pp a
��
на входной сигнал ,tu e��� 0 � t � T. Определить мак�
симум выходного сигнала. Выполнить численное и символьное моде�лирование в MATLAB, приняв a = 1; b = 2; T = 3.
Решение.а. Программа моделирования в MATLAB (тулбокс CONTROL):
a = 1; b = 2; T = 3; % Задание параметровt = linspace(0, T); u = exp(�b*t); % Входной сигналsys = tf(1, [1 a]); % Описание системыy = lsim(sys, u, t); % Моделированиеym = max(y); plot(t, y). % Вывод результатов
б. Аналитическое решение (тулбокс SYMBOLIC);
46
� �1( ) at ty t e e
a� ��� �
� �.
При a� � (особый случай) решение принимает вид
2
1( ) ; ( ) .
( )aty p y t te
p a�� �
�
При этом tM = 1/a, y(tM) = 1/ae.5. Дано дифференциальное уравнение y(4) – y = e–t с начальными
условиями: 0 0 0 03, 5.25, 7.5, 5.75.y y y y� � � � � �� �� ��� Найти аналити�ческое решение в MATLAB. Рассмотреть три варианта численногомоделирования и сравнить их по точности.
Возможная техническая интерпретация задачи – управление не�устойчивым объектом, считая у отклонением, а u = e–t – управле�нием.
Ответ: Аналитическое решение исходного уравнения:(5 0,25 ) 2costy t e t�� � � .
Отметим, что в решение не вошла неустойчивая мода C1et. Этоозначает, что программное управление e–t обеспечивает колебатель�ное движение объекта около неустойчивого положения равновесия.На практике неизбежно появление малых отклонений, которые современем будут лавинообразно нарастать.
Три варианта численного моделирования
а. Раздельная реализация управления и системы.
� � � � � ����
��
�
�
�
�
�
�
���� �������������������� ����
�������������
���� ����
����������������������
��� ����������
! ���"���#��� �����#$%� ���
��%� �����!��&'�(�
Компьютер выдает правильное решение при Т< 8 с, далее машин�ное решение «разваливается».
б. Совместная реализация управления и системы. Входной сигнал
47
u = e–t формируется с помощью апериодического звена, в качествевектора b используется вектор Х0. Общий порядок системы равен 5.Ранг матрицы управляемости 4R [b,Ab,...,A b]� равен 4, т. е. реали�зация неминимальна. Тем не менее теперь правильное решение со�храняется втрое дольше (на интервале 25 с.).
в. Дальнейшего увеличения точности решения можно достичь,если выполнить редукцию и перейти к минимальной реализации 4�го порядка. В пакете MATLAB такая редукция выполняется с помо�щью команды minreal. Аналитически редукцию можно выполнить,вычислив передаточную функцию
4 3 2
4
5,75 1,75 2,25 2,25 4( )
( 1)( 1)
p p p pQ p
p p
� � � � ��
� �
и затем сократив числитель и знаменатель на общий множитель р–1.