47
ВВЕДЕНИЕ В MATLAB Учебное пособие СанктПетербург 2006 ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ Государственное образовательное учреждение высшего профессионального образования САНКТПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ Л. А. Мироновский, К. Ю. Петрова

ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

  • Upload
    vothuan

  • View
    235

  • Download
    4

Embed Size (px)

Citation preview

Page 1: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

ВВЕДЕНИЕ В MATLAB

Учебное пособие

Санкт�Петербург2006

ФЕДЕРАЛЬНОЕ АГЕНТСТВО ПО ОБРАЗОВАНИЮ

Государственное образовательное учреждениевысшего профессионального образования

САНКТ�ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТАЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ

Л. А. Мироновский, К. Ю. Петрова

Page 2: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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

Page 3: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

3

ПРЕДИСЛОВИЕ

Учебное пособие написано на основе работы [6], вышедшей более10 лет назад. За это время в структуре и командах пакета MATLABпроизошли заметные изменения, а сам он прочно занял лидирующееположение среди математических пакетов, ориентированных на ре�шение научно�технических и инженерных задач. В его составе по�явилась система визуального моделирования SIMULINK – эффектив�ное и удобное средство для моделирования систем, заданных струк�турными схемами.

К настоящему времени выпущено много руководств и справочни�ков по MATLAB [1–6, 10–12, 14], содержащих подробное описаниеего обширной системы команд (их общее число давно перевалило затысячу), расширений и приложений. Однако большинство из этихруководств неудобны для начинающего пользователя из�за обилияпредставленного материала и перегруженности деталями.

Настоящее пособие предназначено для первоначального знаком�ства с MATLAB и SIMULINK и содержит элементарные сведения опакете. В первую очередь это относится к разделам 1–3, где даютсяминимальные сведения о MATLAB и SIMULINK, необходимые длявыполнения лабораторных работ по курсу «Моделирование». Разде�лы 4–6 предназначены для более глубокого знакомства с пакетом, вних подробнее описываются его графические и математические воз�можности, файловая система, типы данных. Из многочисленныхтулбоксов MATLAB в пособии кратко рассмотрены лишь некоторые,в частности CONTROL, SYMBOLIC и OPTIMIZATION.

Page 4: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

4

1. ЭЛЕМЕНТАРНЫЕ СВЕДЕНИЯ О ПАКЕТЕ

1.1. Структура пакета

Пакет MATLAB широко используется во всем мире при решениизадач, связанных с матричными вычислениями. Название пакета об�разовано путем сокращения от MATrix LABoratory (матричная лабо�ратория). Операции и команды в MATLAB достаточно естественны ианалогичны математической записи формул на бумаге. MATLAB со�здавался как пакет программ, реализующих наиболее эффективныевычислительные алгоритмы линейной алгебры. Он организован та�ким образом, чтобы пользователь имел возможность применять приработе обычный математический язык.

В настоящее время пакет MATLAB представляет собой развитуюинтегральную программную среду, включающую собственный языкпрограммирования. Он дает пользователю возможность быстро вы�полнять различные операции над векторами и матрицами, такие какумножение и обращение матриц, вычисление определителей, нахож�дение собственных чисел и векторов. Кроме того, в MATLAB входятоперации вычисления обычных функций (алгебраических, тригоно�метрических, логических), решения алгебраических и дифференци�альных уравнений, операции построения графиков и ряд других.

MATLAB является языком высокого уровня. По отдельным егокомандам можно выполнять такие сложные операции, как нахожде�ние корней полиномов, решение линейных и нелинейных алгебраи�ческих уравнений, моделирование линейных динамических систем.Указанные операции являются элементарными функциямиMATLAB.

Помимо ядра, содержащего вычислительные алгоритмы общегоназначения, в пакете MATLAB реализовано несколько десятков такназываемых тулбоксов (библиотек специализированных подпрог�рамм), предназначенных для решения разнообразных практическихзадач. Например, тулбокс SYMBOLIC предназначен для выполнениясимвольных вычислений, а тулбокс CONTROL – для расчета и моде�лирования систем автоматического управления.

Page 5: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

5

����

������

���������

��� ��

��������

��������

����������

����� ��

���

������ ���

������

������

����������

��� ���

����������

������

��� �����

������������

���������

������

!�����������

�"����

#�����

��� �����

#��$��� �

��%

#�����

������ ���

&�$��� ����

'������

������

������� �

�������

����

��(������

�!)��

������ �

!�����

���

�������

!#

!���

� "������

#����� %�� �

Ри

с. 1

.1

Page 6: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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

Page 7: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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

Page 8: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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 имеется ряд команд, облегчающих формирование век�торов и матриц:

Page 9: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В 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 и различные ее модификации. Она может вызываться с однимили несколькими входными аргументами.

Page 10: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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

Page 11: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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

Page 12: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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 находится ранг матри�цы. Он определяется максимальным размером ее минора с ненуле�вым определителем и одновременно указывает на число линейно не�зависимых строк (столбцов) матрицы.

Page 13: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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. В частности, видим, чтопри транспонировании матрицы обратная матрица тоже транспони�руется.

Page 14: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В 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 для работы с полиномамиприведен ниже:

,

,

Page 15: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В 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

Page 16: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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 �

Page 17: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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

Page 18: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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:

Page 19: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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.

Page 20: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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 � получаем

Page 21: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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. Если он установлен, то имеется воз�

Page 22: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В 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.

Page 23: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В 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:

Page 24: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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]),

Page 25: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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� � � � (траектория точ�ки, лежащей на окружности, которая катится по внутреннейстороне другой окружности, радиус которой в четыре раза боль�ше).

Page 26: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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�программу, которая определяет типтелосложения по росту и весу (для мужчин и женщин) и построить

Page 27: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В 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);

Page 28: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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;

где знак тильда означает логическое отрицание.Рассмотрите стратегии: обход табло по спирали до центра; обход

“змейкой” (строка за строкой).

Page 29: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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) к

Page 30: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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.

Page 31: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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). На экране появится текст:

Page 32: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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. Моделирование линейных систем

Главная цель моделирования – получение реакции системы на теили иные входные сигналы. Входные воздействия могут быть стан�

Page 33: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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, достаточно набрать

Page 34: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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, совпадающий с по�лученным выше.

Page 35: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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).

Page 36: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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 имеются функции для исследования сис�тем в частотной области. К основным частотным характеристикамотносятся амплитудно�частотная характеристика (АЧХ), фазочас�тотная характеристика (ФЧХ) и амплитудно�фазовая характерис�

Page 37: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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, например:

Page 38: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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).

Page 39: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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

Page 40: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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 описания в пространстве состоя�ний:

Page 41: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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�модель этой системы и найдем ее нули и полюсы:

Page 42: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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.

Page 43: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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.

Page 44: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

44

а. Механическая система с трением.

�� �

��������� �������

������� ��� ��������

� ��� ���������������

����������������������

Входной сигнал – сила F, выход – координата x или скорость

.x� � �б. Электрическая схема (параллельный колебательный контур).

� �� � � �� � � � �

� � � � � � �

в. Электрическая схема (последовательный колебательный контур).

��

��

� �

� � �� ��

� �

� �

Численные значения параметров L, m принять равными числу буквв Вашей фамилии; R, � – числу букв в имени/10; с, k – числу букв вотчестве.

Указание. При построении математической модели использоватьуравнения:

��

Page 45: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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);

Page 46: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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 с, далее машин�ное решение «разваливается».

б. Совместная реализация управления и системы. Входной сигнал

Page 47: ВВЕДЕНИЕ В MATLAB - ict.edu.ruict.edu.ru/ft/005611/Mironovskiy_Petrova1.pdf · программирования. ... 1.2. Начало ... В matlab имеется ряд

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.