321

MATLAB для студента

  • Upload
    mau

  • View
    271

  • Download
    12

Embed Size (px)

Citation preview

Page 1: MATLAB для студента
Page 2: MATLAB для студента

А. М. ПоловкоП. Н. Бутусов

M f t T L A B

ДЛЯ СТУДЕНТА

Санкт-Петербург

«БХВ-Петербург»

2005

Page 3: MATLAB для студента

УДК 681.3.06(075.8)ББК 32.973.26-018.2я73

П52

Половко А. М., Бутусов П. Н.П52 MATLAB для студента. — СПб.: БХВ-Петербург,

2005. — 3 2 0 с : ил.

ISBN 5-94157-595-5

Содержится описание компьютерных технологий решенияматематических задач с помощью системы MATLAB. Приво-дятся примеры на все методы, изложенные в книге. Представ-лены варианты задач для индивидуального обучения. Описа-ны методики решения задач управления и создания приложе-ний для решения типовых задач.

Для студентов, аспирантов, преподавателей технических вузови специалистов, применяющих математические вычисления

в профессиональной деятельности

УДК 681.3.06(075.8)ББК32.973.26-018.2я73

Группа подготовки издания:

Главный редактор Екатерина Кондукова

Зам. главного редактора Людмила Еремеевская

Зав. редакцией Григорий Добин

Редактор Анна Кузьмина

Компьютерная верстка Ольги Сергиенко

Корректор Зинаида Дмитриева

Дизайн обложки Игоря Цырульникова

Зав. производством Николай Тверских

Лицензия ИД № 02429 от 24.07.00. Подписано в печать 12.07.05.Формат 60х901/,в. Печать офсетная. Усл. печ, л. 20.

Тираж 4000 экз. Заказ No 1196"БХВ-Петербург", 194354, Санкт-Петербург, ул. Есенина, 5Б.

Санитарно-эпидемиологическое заключение на продукциюNe 77.99.02.953.Д.006421.11.04 от 11.11.2004 г. выдано Федеральной службой

по надзору в сфере защиты прав потребителей и благополучия человека.

Отпечатано с готовых диапозитивовв ГУП "Типография "Наука"

199034, Санкт-Петербург, 9 линия, 12

ISBN 5-94157-595-5 © Половко А. М., Бутусов П. R, 2005© Оформление, издательство "БХВ-Петербург", 2005

Page 4: MATLAB для студента

Оглавление

Введение 11

Глава 1. Основы интерфейса MATLAB 15

1.1. Окна системы MATLAB 161.1.1. Окно Command Window 161.1.2. Окно Workspace 181.1.3. Окно Current Directory 191.1.4. Окно Command History 201.1.5. Окно Launch Pad 20

1.2. Главное меню системы -. 211.2.1. Меню File 211.2.2. Меню Edit 231.2.3. Меню View 241.2.4. Меню Web 241.2.5. Меню Window 251.2.6. Меню Help 25

1.3. Панель инструментов '. 25

Глава 2. Язык общения с MATLAB 27

2.1. Символы и операторы языка 272.1.1. Специальные символы 272.1.2. Операторы отношения 292.1.3. Логические операторы 31

2.2. Числа, переменные, функции языка 322.2.1. Числа в MATLAB 322.2.2. Переменные и константы 34

Page 5: MATLAB для студента

Оглавление

2.3. Функции и команды общения 352.3.1. Команды управления окном 362.3.2. Сообщение об ошибках и их исправление 362.3.3. Сохранение результатов вычислений 372.3.4. Завершение работы 38

Глава 3. Создание приложений для решения типовых

задач 39

3.1. Постановка задачи 393.2. Знакомство с инструментом 41

3.2.1. Меню и панель инструментов 43Меню Layout 43Меню Tools 44

3.2.2. Панель элементов управления 443.3. Файлы, генерируемые системой в процессе создания

приложения 453.4. Работа над приложением 47

3.4.1. Первый этап 483.4.2. Второй этап 513.4.3. Третий этап 54

Глава 4. Специальные вычисления 61

4.1. Табулирование функции 614.2. Вычисление суммы элементов массива чисел 644.3. Вычисление произведения элементов чисел 654.4. Вычисление производных 664.5. Вычисление пределов 694.6. Разложение функции в степенной ряд 724.7. Определение экстремумов функции 77

4.7.1. Функция fmin ('fun', xl, х2) 804.7.2. Функция fmin ('fun', xl, x2, options) 82

4.8. Интегральные преобразования 834.8.1. Преобразование Лапласа 83

Функция Laplace(F) 85Функция Laplace(F,s) 87Функция Laplace(F,w,s) 87

4.8.2. Решение дифференциальных уравнений с помощьюпреобразования Лапласа 884.8.3. Обратное преобразование Лапласа 90

Page 6: MATLAB для студента

Оглавление

Глава 5. Вычисление математических функций 93

5.1. Элементарные функции 935.1.1. Алгебраические и арифметические функции 945.1.2. Тригонометрические функции 985.1.3. Обратные тригонометрические функции 995.1.4. Гиперболические функции 1005.1.5. Обратные гиперболические функции 1015.1.6. Функции комплексного аргумента 102

5.2. Специальные математические функции 1045.2.1. Гамма-функция 1045.2.2. Бета-функция (Эйлеров интеграл первого рода) 1065.2.3. Функции ошибок 1075.2.4. Интегральная показательная функция 1095.2.5. Функции Эйри 1095.2.6. Функции Лежандра 1125.2.7. Функции Бесселя 113

5.3. Функции пользователя 114

Глава 6. Алгебра векторов и матриц 116

6.1. Создание векторов и матриц , 1166.2. Преобразование матриц 118

6.2.1. Вызов на экран и замена элементов матрицы 1186.2.2. Изменение размера вектора или матрицы 1196.2.3. Математические операции с векторами и матрицами 121

Определитель матрицы : 121Транспонирование матрицы 122След матрицы 122Обратная матрица 123Единичная матрица 123Образование матрицы с единичными элементами 124Образование матрицы с нулевыми элементами 125Вектор равноотстоящих точек 126Перестановка элементов матрицы 126Создание матрицы с заданной диагональю 127Создание массивов со случайными элементами 129Поворот матрицы 132Выделение треугольных частей матрицы 133Вычисление магического квадрата 134

6.3. Математические операции над векторами и матрицами 1356.3.1. Примеры образования функций от векторов и матриц 138

Page 7: MATLAB для студента

Оглавление

Глава 7. Визуализация вычислений 140

7.1. Двухмерная графика 1407.1.1. Функция plot(x,y) 1417.1.2. Функция plot (x,y,s) 1427.1.3. Функция plot(xl,yl,sl, x2,y2,s2, ...,xn,yn,sn) 1467.1.4. Функции построения графиков в логарифмическоммасштабе 1507.1.5. Графики в полярной системе координат 1517.1.6. Создание гистограмм 152

7.2. Трехмерная графика 153

Глава 8. Алгоритмы и технологии решения уравнений 156

8.1. Алгоритмы решения алгебраических и трансцендентныхуравнений 1568.1.1. Метод дихотомии (половинного деления) 1568.1.2. Метод хорд 1578.1.3. Метод касательных 1598.1.4. Комбинированный метод (метод хорд и касательных) 1618.1.5. Метод итераций 162

8.2. Технология решения алгебраических и трансцендентныхуравнений в среде MATLAB 1668.2.1. Технология решения уравнений с помощью функцииsolveQ 1668.2.2. Технология определения вещественных корней уравненияс помощью §утя\тл fzero() 1698.2.3. Технология определения корней многочлена с помощьюфункции rootsQ 1748.2.4. Варианты алгебраических и трансцендентных уравненийдля индивидуальных заданий или решений 175

8.3. Методы решения систем алгебраических уравнений 1758.3.1. Решение систем линейных алгебраических уравнений 182

Выбор начальных приближений 186Условия сходимости итерационного процесса 186Признак окончания вычислений 188

8.3.2. Алгоритмы метода итерации 1888.3.3. Сравнительная оценка точных и итерационных методов 190

8.4. Компьютерные технологии решения систем линейныхалгебраических уравнений в среде MATLAB 1908.4.1. Решение системы линейных уравнений с помощьюопределителей 191

Page 8: MATLAB для студента

Оглавление

8.4.2. Матричный метод решения систем линейных уравнений.... 1928.4.3. Решение систем линейных уравнений с помощью функцииsolve() 194

8.5. Компьютерные технологии решения систем нелинейныхуравнений 196Функция cqs() 198

8.6. Варианты уравнений для индивидуального решения 199Задание 1. Решение систем линейных алгебраическихуравнений 199Задание 2. Решение систем нелинейных алгебраическихуравнений 204

Глава 9. Решение дифференциальных уравнений.... 205

9.1. Формулировка задачи 2059.2. Приближенные аналитические методы решениядифференциальных уравнений 206

9.2.1. Метод последовательного дифференцирования 2069.2.2. Метод неопределенных коэффициентов 2089.2.3. Метод последовательных приближений 209

9.3. Численные методы решения дифференциальных уравнений 2109.3.1. Метод Эйлера 2109.3.2. Усовершенствованные методы Эйлера 212

Метод Эйлера— Коши 212Усовершенствованный метод Эйлера 212Усовершенствованный метод Эйлера — Кошис итерационной обработкой результатов 213

9.3.3. Метод Рунге — Кутты 2139.4. Компьютерные технологии решения дифференциальныхуравнений 216

Глава 10. Алгоритмы и технологии вычисленияинтегралов 220

10.1. Методы и алгоритмы вычисления интегралов 22010.1.1. Формулы прямоугольников 22110.1.2. Формула трапеций 22110.1.3. Формула парабол (Симпсона) 222

10.2. Численные методы вычисления интеграла в системе MATLAB. 22310.2.1. Метод трапеций 223

Функция cumtrapz(x,y) 226Функция trapzfy) 228Функция trapz(x,y) 229

Page 9: MATLAB для студента

8 Оглавление

10.2.2. Численное интегрирование с помощью квадратурныхформул 231

Метод парабол (Симпсона) 231Функция quad('fim',a,b) 232Функция quad('fun',a,b,tol) 232Функция ablquad('fun',a,b,c,d) 233Функция quad8('fun',a,b) , 234

10.3. Аналитические методы вычисления интеграла 23610.3.1. Функция intQ вычисления неопределенногои определенного интегралов 23610.3.2. Вычисление кратных интегралов 23910.3.3. Вычисление несобственных интегралов 240

10.4. Примеры вычисления интегралов 241

Глава 11. Методы и компьютерные технологииинтерполяции 248

11.1. Элементы теории 24811.1.1. Выбор вида функции интерполяции 250

Графоаналитический способ 250Способ линеаризации нелинейных функций 254Анализ табличных разностей 255Использование специальных программ автоматизацииинтерполяции 256

11.1.2. Определение коэффициентов функции интерполяции 25711.1.3. Проверка адекватности модели 257

11.2. Интерполяция точная в узлах. Универсальный метод 25811.2.1. Интерполяция линейными функциями 25811.2.2. Интерполяция нелинейными функциями 26211.2.3. Сплайн-интерполяция 26411.2.4. Интерполяция точная в узлах 265

11.3. Интерполяция, приближенная в узлах (аппроксимация) 26711.3.1. Функция isqcurvefitO 26711.3.2. Полиномиальная аппроксимация 27011.3.3. Интерполяция кубическими полиномами 272

Глава 12. Компьютерные технологии решения задачуправления 274

12.1. Задачи управления 27412.2. Функции MATLAB для создания передаточных функций

звеньев системы 27512.2.1. Функция tf() 27512.2.2. ФункцииpoleQ и zeroQ 277

Page 10: MATLAB для студента

Оглавление

12.2.3. Функции rootsQ wpolyQ 27912.2.4. Функция convQ 28012.2.5. ФункцияpolyvalQ 281

12.3. Операции с передаточными функциями звеньев 28312.3.1. Сложение передаточных функций 28312.3.2. Функция pzmapO 28412.3.3. Функция seriesQ 28612.3.4. ФункцияparallelQ 28712.3.5. ФункцияfeedbackO 28812.3.6. Функция minrealQ 292

12.4. Исследование переходных процессов в системах управления 29312.4.1. Функция step() 295

12.5. Частотные характеристики системы 29612.5.1. Амплитудно-фазовая характеристика системы 29912.5.2. Диаграмма Никольса 300

12.6. Пример анализа динамики системы управления 30212.6.1. Образование передаточной функции разомкнутойсистемы '. 30312.6.2. Определение нулей и полюсов передаточнойфункции G(S) 30312.6.3. Расположение нулей и полюсов на комплекснойплоскости 30412.6.4. Анализ устойчивости системы 30412.6.5. Исследование качества переходного 30412.6.6. Получение передаточной функции замкнутой системы... 30612.6.7. Определение нулей и полюсов передаточной функциизамкнутой системы и расположение их на комплекснойплоскости 30612.6.8. Переходные процессы замкнутой системы с жесткойотрицательной обратной связью 30812.6.9. Исследование устойчивости и качества переходныхпроцессов системы управления при гибкой отрицательнойобратной связи 308

12.7. Индивидуальные задания для исследования динамики системуправления 30912.7.1. Задание 1 30912.7.2. Задание 2 314

Постановка задачи....: 314Варианты индивидуальных заданий и передаточныхфункций 315

Литература 318

Page 11: MATLAB для студента
Page 12: MATLAB для студента

Введение

Компьютерная алгебра— новое научное направление в инфор-матике. Его появление тесно связано с созданием универсальныхматематических программных средств символьной математики,таких как Mathematica, Maple, Derive, Mathcad, MATLAB и др.

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

Уникальность системы MATLAB определяется следующими ееособенностями:

• система ориентирована на матричные операции;

• наличие большого числа библиотечных функций, делающихее одновременно специализированной математической систе-мой, предназначенной для решения ряда научных и инженер-ных задач (анализ и синтез систем управления, теория нечет-ких множеств, планирование эксперимента и многих другихзадач);

• возможность диалога с другими математическими системами(Maple, Mathcad, MS Excel) расширяет возможности MATLAB,ликвидирует один из ее недостатков — слабую, по сравнениюс другими системами, символьную математику.

В результате этих особенностей MATLAB — одна из наиболеемощных математических систем, пользующаяся большой попу-лярностью пользователей.

Page 13: MATLAB для студента

12 Введение

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

Настоящая книга предназначена для широкого, круга пользовате-лей. Ее особенностями являются:

• подробное изложение компьютерных технологий решения ма-тематических задач, а не только перечисление функцийMATLAB, предназначенных для решения математических за-дач;

• большое количество примеров: практически на каждый из ма-тематических методов;

• краткое изложение сущности математических методов реше-ния задач в среде MATLAB;

• отсутствие в книге сведений о системе MATLAB, не имеющихпрямого отношения к решению математических задач (исто-рия создания, инсталляция системы, специальная графикаи т. п.);

• краткость и одновременно ясность и достаточная полнота из-ложения компьютерных технологий решения математическихзадач;

• ориентация на студента технического вуза.

Книгу целесообразно использовать при проведении упражненийна персональном компьютере, например, по вычислительной ма-тематике, информатике и многим другим предметам.

При проведении лабораторных работ по общетехническим и спе-циальным дисциплинам, требующим элементов научных иссле-дований, без универсальных программных систем не обойтись.Здесь будет полезна система MATLAB.

Систему MATLAB целесообразно использовать при обработкерезультатов лабораторных работ по любому из предметов, гдеони проводятся.

Книга просто необходима студенту при курсовом и дипломномпроектировании. Она должна занять достойное место в библио-

Page 14: MATLAB для студента

Введение 13

теке студента уже с первого курса, где он проходит обучение поматематике и информатике.

Не следует только думать, что если книга адресована студенту, тоона ограничена по содержанию. Это далеко не так. Ее спецификалишь в методике изложения компьютерных технологий решенияматематических задач: большое число примеров, индивидуаль-ных заданий, наличие сведений из теории решения математиче-ских задач, простота и краткость изложения.

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

Книга будет полезна преподавателям, аспирантам и соискателям,научным работникам и всем, кому по роду деятельности прихо-дится решать математические задачи.

Page 15: MATLAB для студента
Page 16: MATLAB для студента

ГЛАВА 1

Основы интерфейса MATLAB

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

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

• главное меню системы;

• кнопки панели инструментов;

• окна системы;

• редактор файлов;

• общение с приложениями;

• графическая система;

• справочная система

и многое другое.

Все это можно изучить и активно им пользоваться только в про-цессе решения задачи. Изучать элементы интерфейса в полномобъеме в начале работы с системой смысла не имеет.

Page 17: MATLAB для студента

16 Глава 1

В данной главе в конспективной форме описываются только из-начально необходимые окна системы, главное меню и панель ин-струментов.

1.1. Окна системы MATLABОбщение пользователя с системой происходит посредством пятиокон. Рассмотрим каждое из них.

1.1.1. Окно Command WindowОкно Command Window (Окно команд) является для пользова-теля наиболее важным. Посредством этого окна (рис. 1.1) вводят-ся математические выражения, получаются результаты вычисле-ний, а также выдаются сообщения, посылаемые системой. Данноеокно становится доступным пользователю сразу же после запускапрограммы. Математические выражения пишутся в команднойстроке после знака приглашения » .

Наберем в строке ввода выражение

» х=2+3

Для выполнения действия нажмем клавишу <Enter>. Результатвиден на рис. 1.1.

Если мы захотим исправить одну из цифр, то у нас ничего не по-лучится. Невозможность редактирования ранее введенной коман-ды простой установкой курсора в нужную строку является однойиз особенностей системы MATLAB. Для того чтобы отредакти-ровать ранее введенную команду, необходимо установить курсорв строку ввода и воспользоваться клавишами <Т> и <i>. Этиклавиши позволяют пролистать стек введенных ранее команд иоставить в строке ту команду, которая необходима. Командуможно выполнить сразу (нажав клавишу <Enter>) или после ре-дактирования.

Окно команд имеет еще два управляющих элемента, в правомверхнем углу. Это кнопка закрытия окна [х], а расположеннаялевее — кнопка отделения окна от интерфейса системы [TJ- По-

Page 18: MATLAB для студента

Основы интерфейса MATLAB 17

еле нажатия на эту кнопку окно становится автономным, имею-щим собственное меню. Возврат окна в общий интерфейс проис-ходит посредством выбора из его главного меню пунктов View |Dock Command Window (Вид | Пристыковать окно команд). За-метим, что такими же кнопками снабжены оставшиеся четыреокна, поэтому о них (кнопках) в дальнейшем мы упоминать небудем.

— Рабочая область

D GS

Е

— Окно команд

-li-Li

lujj-j

~3J

•ach Cecba. Type "htlp toolbox_paiA_cache" tot, «eLecc '-1UTLAB Help" Ito» Uie H«lp мпц.

I * » , •м за-.>& •«'»'

— Окно истории команд

— Вкладка для переходав окно текущего каталога .

Рис. 1.1. Главное окно системы

Рассмотренное окно является основным и, в принципе, при рабо-те с системой MATLAB можно было бы обойтись без других.

Page 19: MATLAB для студента

18 Глава 1

Однако наличие остальных окон делают диалог с компьютеромлегким и комфортным.

1.1.2. Окно WorkspaceВ процессе работы используются переменные различных типов.Созданные переменные хранятся в специально отведенной облас-ти памяти компьютера. Они не исчезают сами по себе, а толькопри выходе из программы или с помощью специальных команд.

Кнопка запускаSimulink

Раскрывающийся списоки кнопка установкитекущего каталога

— Окно текущего каталога

Окно запуска приложений

Рис. 1.2. Окно Workspace

Page 20: MATLAB для студента

Основы интерфейса MATLAB 19

При этом переменные (точнее их значения) можно использоватьв любом вводимом нами математическом выражении. ОкноWorkspace (Рабочая область) предоставляет пользователю спи-сок всех переменных, хранящихся в рабочем пространстве(рис. 1.2). Выбрать можно любую переменную, просмотреть еесодержимое или выполнить какие-либо другие действия.

Упомянутые действия выполняются посредством контекстногоменю (нужно щелкнуть правой кнопкой мыши по имени пере-менной в списке).

1.1.3. Окно Current DirectoryОкно Current Directory (Текущий каталог) является аналогомизвестной программы Проводник, но имеет для MATLAB своеособое предназначение (рис. 1.3).

f-te E* View Wab V

Import Oats...

5etP$№.... Preference*..,

1 вд* setup...Print....

. 0 . ,

E**MATIAB

x-2+3

:^Sfv i«j 0 J$ M

tWOw IMp "

M M Gcm+o

ы.ч.

» * It.™»

•" i

TUJI Urn

. double «

..: i M

j

u

»

aiftg Toolbox P

о aet stAiced

х-г+з

1

select 'I

Type "help tuolbox^path cftche" tot BOIC info.

UTLfcB Help" from the Kelp menu.

Рис. 1.З. Окно Current Directory

Page 21: MATLAB для студента

20 Глава 1

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

1.1.4. Окно Command HistoryВсе команды, которые набираются в командной строкеCommand Window (Окно команд), автоматически образуют спи-сок, который и выводится в окне Command History (Историякоманд). Чем полезен этот список? Если появилась необходи-мость повторить ранее выполненную команду, то она отыскива-ется в списке Command History (История команд), и, дваждыщелкнув по ней левой кнопкой мыши, можно команду выпол-нить.

Можно выполнить нужную последовательность команд из ко-мандной строки и получить соответствующую последователь-ность команд в Command History (История команд). Нескольки-ми простыми действиями полученная последовательность можетбыть преобразована в программу. Содержимое данного окна нетеряется после выхода из системы и выключения компьютера.Удалить список команд можно только с помощью меню.

1.1.5. Окно Launch PadОкно Launch Pad (Панель запуска) содержит дерево файловойсистемы, где отображены только установленные на компьютерепрограммные продукты, входящие в систему MATLAB. С по-мощью этого окна можно запустить любой из них. Те же дейст-вия легко осуществить посредством кнопки Start (Пуск), распо-ложенной в левом нижнем углу окна MATLAB.

Page 22: MATLAB для студента

Основы интерфейса MATLAB 21

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

Главное меню MATLAB содержит следующие шесть пунктов:

• File (Файл) — работа с файлами;

• Edit (Правка) — редактирование;

• View (Вид) — управление окнами;

• Web — связь с фирмой-разработчиком через Интернет;

• Window (Окно) — связь с окнами системы;

• Help (Справка) — связь со справочной системой MATLAB.

Рассмотрим главное меню системы, его команды и операции.

1.2.1. Меню FileМеню содержит большое число команд. Будем их называть вдальнейшем пунктами главного меню системы.

Пункт New (Создать) предоставляет возможность создать новыйобъект, а именно:

• M-File (М-файл) — файл с расширением т , в который запи-сываются программы; ,

• Figure (Фигура) — специальное окно для вывода графическойинформации. При решении математических задач обычно ис-пользуются функции, которые создают такие окна автомати-чески, поэтому данный пункт меню при визуализации вычис-лений используется редко;

• Model (Модель) — модель Simulink;

Page 23: MATLAB для студента

22 Глава 1

• GUI— графический интерфейс пользователя (Graphical Userinterface), используется для создания собственных приложе-ний.

Пункт Open (Открыть) позволяет выполнить открытие сущест-вующего объекта посредством стандартного диалогового окна.Открытие объекта можно также осуществить из окна CurrentDirectory (Текущий каталог).

Пункт Close Current Directory (Закрыть текущий каталог) за-крывает окно текущего каталога.

Пункт Import Data (Импортировать данные) производит импортв среду MATLAB разнородных данных (анимационные ролики,звуковые файлы, числовые данные в различных форматах и т. д.).

Пункт Save Workspace As (Сохранить рабочую область как)выполняет сохранение рабочей области. Созданные и используе-мые переменные хранятся в специальной рабочей области(Workspace). При выходе из программы рабочая область автома-тически уничтожается вместе со всеми переменными. Чтобы это-го не происходило, необходимо сохранить рабочую область надиске в виде файла с расширением mat. Проще всего это сделатьпосредством пункта меню Save Workspace As (Сохранить рабо-чую область как), можно также использовать командуsave имя_файла.mat. В дальнейшем сохраненная рабочая областьзагружается либо с помощью пункта меню Import Data (Импор-тировать данные), либо командой load имя_файла.

Пункт Set Path (Задать путь) организовывает работу с путямидоступа. При обращении к конкретному файлу (например, кфункции) система MATLAB не требует указания пути. Это про-исходит потому, что MATLAB использует специальный списокпапок с путями доступа к ним. Когда вводится имя файла(с целью его поиска), система автоматически просматривает всеизвестные ей папки, имеющиеся в списке. При инсталляцииMATLAB список путей доступа строится автоматически. Для со-хранения файлов во вновь созданной папке необходимо внестиимя папки и путь доступа в общий список с помощью пункта ме-ню Set Path (Задать путь). При вызове данного пункта появляетсядиалоговое окно с элементами управления (кнопками и списком).

Page 24: MATLAB для студента

Основы интерфейса MATLAB 23

Наиболее актуальными являются кнопки Add Folder (Добавитьпапку), Add With Subfolders (Добавить вместе с вложеннымипапками). Нажав одну из кнопок, можно указать путь к желаемойпапке, после чего она будет добавлена к списку путей доступа.Кнопка Save сохраняет сделанные изменения.

Пункт Preferences (Настройка) изменяет некоторые свойства ра-бочей среды системы MATLAB.

Следующие три пункта меню: Page Setup (Параметры страницы),Print (Печать) и Print Selection (Печать выделенной области)служат для вывода информации на принтер, являются стандарт-ными для многих пакетов и объяснений не требуют.

Меню File (Файл) имеет список последних открывавшихся фай-лов. Он содержит имена файлов с путями доступа и позволяетзагрузить эти файлы двойным щелчком мыши.

Пункт Exit MATLAB (Выход) позволяет завершить работу с про-граммой.

1.2.2. Меню EditПункты Undo (Отменить), Redo (Повторить), Cut (Вырезать),Сору (Копировать), Paste (Вставить), Select All (Выделить все) иFind (Найти) полностью соответствуют своему стандартномупредназначению и в комментариях не нуждаются. Первые пять изперечисленных пунктов меню продублированы кнопками на па-нели инструментов.

Пункт Paste Special (Специальная вставка) используется для об-мена с внешними программами (например, MS Excel), числовымиданными посредством буфера обмена.

Пункт Clear Command Window (Очистить окно команд) очища-ет командное окно.

Пункт Clear Command History (Очистить историю команд)очищает окно предыстории.

Пункт Clear Workspace (Очистить рабочую область) очищаетрабочую область от хранящихся в ней переменных.

Page 25: MATLAB для студента

24 Глава 1

1.2.3. Меню ViewСреда системы MATLAB располагает несколькими рабочими ок-нами. Поэтому необходимо иметь инструмент, позволяющийуправлять появлением, расположением и содержимым этих окон.Таким инструментом является меню View (Вид).

Пункт Desktop Layout (Разметка рабочего стола) помогает задатьколичество и расположение окон путем исполнения пунктовподменю.

Пункт Undock (Отстыковать) позволяет сделать автономным (от-делить окно от интерфейса системы) выделенное в данный мо-мент (активное) окно. После выбора данного пункта надпись ме-няется на Dock (Пристыковать) с названием активного окна. Ме-няется также на противоположную и функция пункта меню.Теперь при его выборе автономное окно снова прикрепляется кобщему окну системы.

Следующая группа пунктов меню с названиями окон являетсягруппой переключателей. Каждый из этих пунктов может сделатьвидимым или невидимым соответствующее окно.

Пункт Current Directory Filter (Фильтр текущего каталога) име-ет подменю пунктов-переключателей. С помощью этих переклю-чателей можно выводить в окно Current Directory (Текущий ка-талог) определенные типы файлов.

Пункт Workspace View Options (Параметры отображения рабо-чей области) позволяет менять состав информации о переменныхв списке окна Workspace (Рабочая область). Здесь можно такжеотсортировать список переменных по различным критериям.

1.2.4. Меню WebМеню Web позволяет, при наличии подключения к Интернету,заходить в различные разделы сайта фирмы-изготовителя про-граммного продукта. Здесь можно ознакомиться с новой инфор-мацией о системе, скачать ее, получить консультацию по интере-сующим вопросам. Для осуществления последних двух возмож-ностей необходимо быть зарегистрированным пользователем.

Page 26: MATLAB для студента

Основы интерфейса MATLAB 25

Кроме того, выбрав пункт MATLAB File Exchange (Расширения),можно иметь свободный доступ к огромной библиотеке откры-тых примеров использования MATLAB для решения большогоспектра задач.

1.2.5. Меню WindowОтображает список всех открытых дополнительных окон и слу-жит для оперативного перехода к нужному окну. Это могут бытьграфические окна или окна, содержащие текст программы (рабо-чие окна в этом списке не отображаются). Пункт меню Close All(Закрыть все) позволяет закрыть все окна, кроме рабочих.

1.2.6. Меню HelpСодержит большое количество полезной информации о MATLABна английском языке.

1.3. Панель инструментовКнопки панели инструментов обеспечивают выполнение боль-шинства необходимых команд решения математических задач.Всплывающие подсказки при обращении к кнопкам сообщают обих содержании.

Кнопки панели инструментов имеют следующие назначения:

• New file (Создать) — выводит окна редактора файлов;

• Open file (Открыть) — открывает окна загрузки файлов;

• Cut (Вырезать) — вырезает выделенный файл и помещаетв буфер обмена;

• Сору (Копировать) — копирует выделенный файл в буферобмена;

• Paste (Вставить) — переносит фрагмент из буфера обмена встроку ввода;

• Undo (Отменить) — отменяет результат предыдущей опера-ции;

Page 27: MATLAB для студента

26 Глава 1

• Workspace Browser (Просмотр рабочей области)— выводитокно ресурсов рабочей области;

• Path Browser (Просмотр пути) — выводит окно файловойструктуры;

• New Simulink Model (Создать модель Simulink)— создаетмодель Simulink;

• Help Window (Справка) — открывает окна справки.

Page 28: MATLAB для студента

X

ГЛАВА 2

Язык общения с MATLAB

2.1. Символы и операторы языкаОператоры языка — это символы операций над данными, назы-ваемыми операндами. В MATLAB применяются все общеприня-тые операнды. Однако некоторые из них имеют ряд особенно-стей. Следует всегда иметь в виду, что большинство операторовязыка MATLAB относится к матричным операциям. Например,операторы * и / вычисляют произведение и частное от делениядвух массивов векторов и матриц. Если же необходимо вычис-лить почленное умножение или деление массивов, то следуетприменять операторы . * и ./. В MATLAB также используетсяоператор деления справа налево (\ или . \).

Подробно эти и другие, часто используемые операторы языкас большим числом примеров, рассмотрены в главе 6.

Полный список операторов можно получить по команде help ops.

2.1.1. Специальные символыСпециальными являются следующие символы языка MATLAB:

• ( ) — круглые скобки;

• [ ] — квадратные скобки;

• { } — фигурные скобки;

• . — десятичная точка;

Page 29: MATLAB для студента

28 Глава 2

• ,- •— точка с запятой;

• : — двоеточие;

• , — разделитель (запятая);

• .. — родительский каталог;

• . . . — продолжение строки;

• % — комментарий;

• ! — вызов команды операционной системы;

• = — присвоение;

• ' — кавычка.

Рассмотрим назначение специальных символов.

• : — оператор образования массива данных переменной; фор-мирует из векторов и матриц подвекторы и подматрицы.Представляется в следующих формах:

• i:k — аналог вектора [i, i + 1, i + 2, ..., к], например, 1:5 —[12 3 4 5];

• i : j : k — аналог оператора i : k, существует при j > 0, k > iили при J <0, i > k;

• м (:, i) — выбирается i-й столбец из матрицы м;

• M(i,:) — выбирается i-я строка из матрицы м;

• м(:,:)—аналогичен м (:);

• M(i:k) — а н а л о г и ч е н M(i), M ( i + i ) , M(i+2), ..., M(k);

• M ( : , i , k ) — аналогичен M ( : , i ) , M ( : , i + 1 ) , M(: , i + 2 ) , ...,

M ( : , k ) ;

• M(:) — представление массива м в виде столбца;

• м (:,:, к) — к-я строка трехмерного массива м.

• Оператор круглые скобки ( ) используется для задания аргу-ментов функции, порядка выполнения операций в математи-ческих выражениях, указания индексов элементов вектораили матрицы. Например: sin(x), (x-i)/(x+i), x(v), x(i),M(A,B), M(:,i).

Page 30: MATLAB для студента

Язык общения с MATLAB 29

• Оператор квадратные скобки [ ] формирует векторы и матри-цы, например: [12 3 4], [1,2,3; 3 5 2].

• Оператор фигурные скобки { } применяется для формирова-ния массивов ячеек.

• Десятичная точка (.) служит для отделения целой части числаот дробной. Кроме того, она применяется как знак указанияопераций над элементами символьных переменных. Примеры:3.2, .15, 2 . * 1 о д ( х ) + х . Л 2 - х . / с о з ( х ) .

• Точка с запятой (,-) применяется в конце операторов для по-давления вывода информации на экран, а также внутри круг-лых скобок для отделения строк матрицы.

• Запятая (,) используется для разделения элементов вектора иматрицы.

• Знак процента (%) воспринимается программой как началокомментария.

• Символ равенства (=) является знаком присваивания имениматематическому выражению: х=[1 2 3 4 5], x=cos(a), х=2.5.

• Одиночная кавычка (') применяется для указания того, чтоматематическое выражение содержит символьные перемен-ные, например: Y='x+exp(-a)+i=o\

• Знак восклицания (!) указывает, что за ним следует командаоперационной системы.

• Знак из двух точек (..) определяет, что осуществляется пере-ход на один уровень вверх по дереву каталогов (родительскийкаталог).

• Знак три точки (и более) (. . .) — продолжение строки. Его ис-пользуют при переносе текста на другую строку.

2.1.2. Операторы отношенияОператоры отношения служат для сравнения двух операндов.Если операнды одинаковы, то программа возвращает 1 (True),в противном случае — 0 (False).

Page 31: MATLAB для студента

30 Глава 2

Правила записи операндов приведены в табл. 2.1.

Таблица 2.1. Операторы отношения

Функция

eq

пе

I t

gt

l e

ge

Имя оператора

Равно

Не равно

Меньше

Больше

Меньше или равно

Больше или равно

Обозначение

==

<

>

<=

>=

Примеры

а=Ь

а~=Ь

х<у

х>у

х<=у

х>=у

Операторы = и ~= сравнивают действительные и комплексныепеременные. При этом сравниваются действительные и ком-плексные части числа.

Операторы <, <=, >, >= при сравнении комплексных чисел сравни-вают только действительные части числа.

Примеры представлены в табл. 2.2.

Таблица 2.2. Примеры использования операторов отношения

Выражение

» 5==5

» 3~=3

» 2+3i==2+i

» 2+3i==2+3i

» 2+3i~=2+3i

Функция

» eq(5, 5)

» ne(3, 3)

» eq(2+3i, 2+i)

» eq(2+3i, 2+3i)

» ne(2+3i, 2+3i)

Результат

ans =1

ans =0

ans =0

ans =1

ans =0

Page 32: MATLAB для студента

Язык общения с MA TLAB 31

Таблица 2.2 (окончание)

Выражение

» 3 . 2 O . 2 1

» 2 .3+8i<2.4+i

» 3 .8-3i>5+i

» 3<2.999

» 3>=2.999

Функция

» l t ( 3 . 2 < 3 . 2 1 )

» l t ( 2 . 3 + 8 i , 2 .4+i)

» g t ( 3 . 8 - 3 1 , 5+i)

» l e ( 3 , 2.999)

» g e ( 3 , 2.999)

Результат

ans -

1

ans =

1

ana =

0

ans =

0

ans =

1

2.1.3. Логические операторыЛогические операторы предназначены для реализации логиче-ских операций: дизъюнкции (ИЛИ), конъюнкции (И), инверсии(НЕ), исключающего ИЛИ.

Правила записи операторов приведены в табл. 2.3.

Таблица 2.3. Логические функции и операторы

Функция

and

or

not

xor

Имя

И

ИЛИ

НЕ

ИЛИ НЕ

Оператор

&

I

~

-

Пример 2.1

» 3 | ' х '

ans =

1

Page 33: MATLAB для студента

32 Глава 2

» ' X ' I ~ ' X '

ans •

- 1

» 'x '&~'x '

ans =

0

» x l = [ l , 2 , a , 4 ] ;

» x 2 = [ l , 0 , 0 , 1 ] ;

» a n d ( x l , x 2 ) и л и » xl&x2

ans =

1 0 0 1

» o r ( x l , x 2 ) и л и » x l | x 2

ans =

1 1 1 1

» n o t ( x l ) и л и » ~xl

ans =

0 0 0 0

» not(x2) и л и » ~x2

ans =

0 1 1 0

» x o r ( x l , x 2 )

ans =

0 1 1 0

Из примеров видно, что программа числа и символы, отличныеот нуля, воспринимает как 1.

2.2. Числа, переменные,функции языка

2.2.1. Числа в MATLABЧисла в MATLAB могут быть положительными и отрицательны-ми, целыми и дробными, действительными и комплексными. Онимогут представляться с фиксированной и плавающей точкой,с мантиссой и порядком (в научной форме).

Page 34: MATLAB для студента

Язык общения с MATLAB 33_

Особенности представления чисел в MATLAB:

• мнимая единица кодируется с помощью двух символов: iили j ;

• целая часть числа от дробной отделяется точкой;

• отделение порядка числа от мантиссы осуществляется симво-лом е;

• знак + положительного числа не ставится, знаки + и - положи-тельного и отрицательного чисел называются унарными.

Формат чисел определяет их вид на экране монитора. А все вы-числения в MATLAB осуществляются в формате двойной точно-сти. Ввод чисел выполняется в любом формате по желанию поль-зователя.

Устанавливается формат чисел с помощью следующих команд:

• format chort — короткое представление (5 знаков числа);

• format chort e — короткое представление в экспоненциаль-ной форме (5 знаков мантиссы, 3 знака порядка);

• format lonq — длинное представление числа (15 знаков);

• format lonq e — длинное представление в экспоненциальнойформе (15 знаков мантиссы, 3 знака порядка);

• format hex — шестнадцатеричный формат;

• format bank — представление в денежном выражении (2 знакапосле точки).

| Пример 2.2 !

Необходимо представить число 5/7 во всех форматах.

Решение:

• format chort—0.7143;

• format chort e—7.1429e-00l;

• format lonq—0.71428571428571;

• format lonq e—7.142857342857143e-00l;

• format bank — 0.71.

2 3ак. 1196

Page 35: MATLAB для студента

34 Глава 2

2.2.2. Переменные и константыПеременные — это символы, используемые для обозначения не-которых хранимых данных. Переменная имеет имя, называемоеидентификатором. Данные могут менять свои значения, а иден-тификатор остается прежним. В MATLAB количество символовидентификатора ограничено и равно 31.

Имя переменной начинается с буквы и может состоять из букв,цифр и некоторых (допустимых) символов.

В процессе решения задач переменные могут занимать многопамяти компьютера. Для очистки памяти от переменных вMATLAB используется функция clear, которая имеет синтаксис:

• clear — уничтожение всех переменных;

• clear х — уничтожение переменной х;

• clear а ь с — уничтожение семейства переменных.

Константа— это численное значение уникального имени,имеющего математический смысл. Наиболее часто в MATLABиспользуются следующие константы:

• pi — число л;

• inf — машинная бесконечность;

• ans — имя переменной, хранящей результат вычисления и вы-свечиваемой на экране в следующем виде: ans=;

• NaN — нечисловой характер данных (Not a Number);

• eps — погрешность операций с числами с плавающей точкой52

• reaimin — минимальное число с плавающей точкой (2 1 0 2 2 ) ;

• reaimax — максимальное число с плавающей точкой (21022).

{ Пример 2.3

» pi/2ans =

1.5708

Page 36: MATLAB для студента

Язык общения с MATLAB 35

» sin(1.2)/sin(O)

ans =

inf

» (2-2)/(1-1)

ans =

NaN

» eps

ans =

2.2204e-016

» realrain

ans =

2.2251e-308

» realmax

ans =

1.7977e3O8

Математическое выражение, взятое в одиночные кавычки, не вы-числяется. Оно воспринимается как сочетание символов. Такоевыражение может быть преобразовано в числовое. Об этом мыузнаем в дальнейшем при решении задач.

2.3. Функции и команды общенияПонятие "функция" весьма обширно. В математике — это любое

выражение, у которого имеется имя, например у = 2х + sin (х) - 1 .

Математические функции могут быть элементарными, специаль-ными и функциями пользователя. В компьютерной алгебре функ-цией часто называют процедуру решения стандартной задачи,например, solve — имя функции решения уравнений. Математи-ческие функции достаточно подробно описаны в главе 5. Функ-ции компьютерной алгебры описываются в процессе решенияматематических задач. В следующих разделах будут представле-ны функции общения с компьютером, независимо от того, какаярешается задача. Такими функциями являются команды управле-ния окнами, редактирования, сохранения результатов решениязадачи, завершения работы.

Page 37: MATLAB для студента

36 Глава 2

2.3.1. Команды управления окномДля очистки экрана набирается команда и нажимается клавиша<Enter>. Такими командами в MATLAB являются:

• c i c — очищает окно, оставляя лишь знак приглашения »в верхнем левом углу экрана;

• home — аналогична команде d c ;

• echo on al l — вывод на экран текста т-файлов;

• echo off a l l — отключение вывода на экран текста т-файлов;

• echo <имя_файла> on — вывод на экран файла сценария;

• echo <имя_файла> of — выключение режима вывода на экранфайла сценария;

• echo <имя_файла>— смена режима вывода на противополож-ный;

• more on — режим постраничного вывода;

• more off — отключение режима постраничного вывода.

2.3.2. Сообщение об ошибкахи их исправлениеПри наличии ошибок в выражениях или командах MATLAB нетолько не выдает решение, но и указывает на наличие ошибки. Изтекста иногда можно понять сущность ошибки, но чаще коммен-тарии бывают настолько общими, что трудно установить место исодержание ошибки.

В MATLAB используются два вида информации об ошибке: пре-дупреждение и сообщение о ней.

При предупреждении процесс вычислений не прекращается, нона экран выдается текст, предупреждающий о том, что ответ мо-жет быть ошибочным.

При сообщении об ошибке вычисления прекращаются.

В случае неопределенности результатов вычисления появляетсясообщение NaN, что означает неопределенность, например, вида0/0 или оо/оо.

Page 38: MATLAB для студента

Язык общения с MA TLAB 37

При делении числа на ноль появляется сообщение "Warning:Devide by Zero".

Следует при этом иметь в виду, что машинный ноль и бесконеч-ность имеют значения 10" и 10 соответственно.

Напомним, что устранение ошибки наиболее целесообразно непутем набора нового правильного выражения, а редактированиемошибочного.

В MATLAB применяется оригинальный способ редактированияпосредством повторного исполнения команд. С помощью клавиш<Т> и <i> можно, перелистывая строки ранее введенных выра-жений или команд, найти необходимое выражение и либо отре-дактировать его, либо выполнить повторно. Например, пусть не-обходимо вычислить выражение хе~х +х2 -1 при значении хот 0 до 2 с шагом 0.2.

Программа будет иметь вид:

» х = 0 : 0 . 2 : 2 ;

» у=х*ехр(-х)+х Л 2-1

Пусть теперь необходимо вычислить при тех же значениях аргу-

мента следующую функцию: хех - х2 + 1 .

Для решения задачи достаточно, нажимая многократно клавишу<t>, вызвать исходное выражение и отредактировать его. Посленажатия клавиши <Enter> получим ответ.

Клавиши <—»> и <<—> перемещают курсор вправо и влево наодин символ соответственно. Комбинация клавиш <Ctrl>+<—>>,<Ctrl>+<<—> перемещает курсор на одно слово вправо и влевосоответственно.

2.3.3. Сохранение результатов вычисленийВ рабочей области памяти хранятся результаты решения задачи.Их сохранение осуществляется с помощью функции save, кото-рая имеет вид:

• safe fname— сохранение рабочей области всех переменныхв файле с именем fname.mat;

Page 39: MATLAB для студента

38 Глава 2

• safe fname x — сохранение переменной х;

• safe fname x, y, z — сохранение переменных х, у, z.

С помощью функции save нельзя сохранить весь текст, которыйнаходится на экране после решения задачи. Запрет объясняетсяпросто. При решении задачи экран, как правило, загружен оши-бочными функциями, неверными данными, сообщениями обошибках и т. п. Все это хранить нет надобности, поэтому функ-ция этого и не делает.

Для того чтобы сохранить необходимые строки решения задачи,пользователь должен убрать с экрана все ненужное. Для этого ондолжен воспользоваться редактором и отладчиком и получитьтекст без синтаксических и прочих ошибок. Такой текст сохраня-ется в виде файла с расширением т .

Впрочем, сохранить неотредактированный текст в полном объеметоже можно. Для этого необходимо воспользоваться командойdiary.

Сохраненный с помощью функции savt текст можно вызвать дляпродолжения решения задачи. Для этого служит функция load.

2.3.4. Завершение работыЗавершение работы с системой MATLAB осуществляется с по-мощью команд quit, exit или нажатием комбинации клавиш<Ctrl>+<0>.

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

Page 40: MATLAB для студента

X

ГЛАВА 3

Создание приложенийдля решения типовых задач

Данную главу при первом чтении целесообразно пропустить.К ней следует вернуться после изучения остальных глав книги,когда может потребоваться собственное приложение для решенияпользовательских задач.

3.1. Постановка задачиС помощью MATLAB можно не только работать с окном Com-mand Window (Окно команд) и создавать собственные функции,но и разрабатывать свои приложения и даже делать их независи-мыми. Такие независимые приложения не требуют установкисистемы MATLAB, что очень удобно. В данной главе излагаютсяспособы и описываются инструменты, позволяющие достаточнопросто и быстро разрабатывать программы с пользовательскиминтерфейсом, предназначенным для решения определенногокласса задач. На протяжении всей главы в качестве примера бу-дем создавать приложение, позволяющее получить график анали-тического выражения в заданном интервале, найти и обозначитьточку пересечения с осью абсцисс, найти локальный минимум взаданном интервале. Описанная задача содержит следующие ос-новные шаги:

• ввод аналитического выражения;

• ввод значений границ интервала;

Page 41: MATLAB для студента

40 Глава 3

• построение графика выражения;

• визуальный анализ графика;

• автоматический расчет и обозначение на графике искомыхточек.

Задача намеренно упрощена для большего акцента именно на ин-струментальных средствах.

Технология решения любой задачи тесно связана с конструкциейинтерфейса компьютерной программы, предназначенной для ре-шения задачи.

Опишем желаемый вид интерфейса более подробно.

1. Для решения поставленной задачи прежде всего необходимообеспечить ввод аналитического выражения и значений гра-ниц интервала. Подразумевается, что выражение будет пред-ставлять собой функцию одной переменной. Для указанныхцелей предусмотрим поля ввода: одно для выражения, дру-гое — для значения границ.

| -• i function minimum and zeroEquation

:

Г

10.80.60.40.2

0-0.2-0.4•0.6-0.8.

-1-3

\

' • • • « • • • '

/

-

у

f'/I

}I

\

(7 GridXIS GiidY

Style

Рис. З.1. Элементы интерфейса

Page 42: MATLAB для студента

Создание приложений для решения типовых задач 41_

2. Построение графика, расчет и визуализацию точки локальногоминимума, расчет и визуализацию точки пересечения с нуле-вой осью обеспечим тремя соответствующими кнопками.

3. Предусмотрим графическое окно для визуализации данных ианалитических выражений.

4. Предусмотрим управляющие элементы вспомогательного ха-рактера, такие как элемент управления координатной сеткой,изменения некоторых характеристик графика (стиля, толщинылиний, цвета).

В результате элементы интерфейса будут иметь вид, показанныйна рис. 3.1.

3.2. Знакомство с инструментомДля того чтобы приступить к работе по созданию приложения,выберем пункт меню File | New | GUI (Файл | Создать | GUI').Появится диалоговое окно, изображенное на рис. 3,2.

1GIJIDI Quick StartCreate New GUI . Open ExistinQ GUI

Recenty opened files:->. D \MATLAB6p5\woriAbook figф, D:\MATUB6pS\worWbook.fig

D:Wrchwe\DAQ\SoundRecorderDemo\worKtprojects\283terc\phase2\daq2axisfield.fig^D:№rchive\DAQ\SoundRecorderDemo\wo[|flprojectsU83\srrtphasendaq2axis.flg$. DHMATLAB6p5\worktoook1 .fig•ф, D:WATLA,B6p5\worktoook3.dBф. D:\MATLAB6p5lworWbook2.fig^ D:iMATlAB6p5\external\external_ai:t<1 .fig

Рис. З.2. Стартовое диалоговое окно

1 Graphical User Interface — графический интерфейс пользователя.

Page 43: MATLAB для студента

42 Глава 3

Окно имеет две вкладки: Create New GUI (Создать GUI) и OpenExisting GUI (Открыть GUI). Поскольку мы только приступаемк работе, нас интересует первая вкладка, а именно пункт BlankGUI (Default) (Новый GUI (по умолчанию)) в списке GUIDETemplates (Шаблоны GUI). После выбора указанных опций на-жмем кнопку ОК. Откроется программа GUIDE (рис. 3.3). Имен-но этот инструмент и предназначен для визуального конструиро-вания интерфейса приложения, а также для программированияфункций, размещаемых на нем элементов.

Познакомимся с элементами управления самой среды GUIDE.

ГМеню г Панель

инструментов

•J untitledJinFile Edit View ' Layout Tools [jelpD с* У

n|.xj

и«•ftpял

и

К!

и—

Панельэлементовуправления

Заготовкаграфическогоинтерфейса

Рис. 3.3. Окно среды GUIDE

Page 44: MATLAB для студента

Создание приложений для решения типовых задач 43

3.2.1. Меню и панель инструментовМеню имеет стандартное назначение. Наиболее используемыеего пункты продублированы кнопками на панели инструментов.Многие пункты меню имеют те же названия и назначения, что и вменю системы MATLAB, которое описано в главе 1. Рассмотримтолько те пункты, которые нам еще неизвестны.

Пункт Edit | Duplicate (Правка | Дублировать) позволяет быстрополучить копию выделенного элемента управления и разместитьего в области заготовки графического интерфейса.

Пункт View | Property Inspector (Вид | Инспектор свойств) выво-дит на экран список свойств выделенного элемента. Позволяетредактировать значения свойств. Продублирован на панели инст-рументов кнопкой |ц§|.

Пункт View | Object Browser (Вид | Просмотр объектов) выводитна экран дерево управляющих элементов (объектов), располо-женных на графическом интерфейсе. Двойной щелчок мышью поназванию объекта позволяет вызвать список свойств этого объек-та. Продублирован на панели инструментов кнопкой \*£\.

Пункт View | М-Ше Editor (Вид | Редактор m-файлов) позволяетпросматривать и редактировать файл, в котором содержитсятекст программ, реализующих функцию элементов управления.Продублирован на панели инструментов кнопкой ПЯ. При взаи-модействии пользователя с элементами графического интерфейсапроисходят действия, которые реализуются запрограммирован-ными функциями.

Меню Layout

Пункт Layout | Snap to Grid (Разметка | Привязать к сетке) наде-ляет объекты свойством притягиваться к сетке, нанесенной награфический интерфейс.

Оставшиеся четыре пункта меню Layout (Разметка) переносятобъекты на задний или передний план в случае, если эти объектывзаимно перекрываются.

Page 45: MATLAB для студента

44 Глава 3

Меню ToolsПункт Tools | Run (Сервис | Запуск) запускает программу на вы-полнение. Позволяет оперативно проверить правильность функ-ционирования создаваемой программы. Продублирован на пане-ли инструментов кнопкой |>. | .

Пункт Tools | Align Objects (Сервис | Выровнять объекты) вызы-вает диалоговое окно, позволяющее выровнять взаимное распо-ложение объектов. Продублирован на панели инструментовкнопкой

Пункт Tools | Grid and Rulers (Сервис | Сетка и линейки) вызы-вает диалоговое окно, позволяющее показать или скрыть сетку,вертикальную и горизонтальную линейки. Позволяет установитьразмер ячейки сетки и включить/выключить режим притягиванияобъектов к сетке.

Пункт Tools | Menu Editor (Сервис | Редактор меню) позволяетпосредством диалогового окна конструировать основное и кон-текстные меню. Продублирован на панели инструментов кноп-

Пункт Tools | Tab Order Editor (Сервис | Редактор перехода по<Tab>) вызывает диалоговое окно, позволяющее установить по-рядок активизации элементов интерфейса при помощи нажатияклавиши <ТаЬ> в работающем приложении.

Пункт Tools | GUI Options (Сервис | Параметры GUI) позволяетзадавать некоторые свойства приложения. Нас вполне устроятустановки по умолчанию.

3.2.2. Панель элементов управленияПанель предназначена для выбора и размещения на поле графи-ческого интерфейса следующих элементов управления (см.рис. 3.3):

• [ It | — переход в режим выделения объектов, расположенных

на графическом интерфейсе;

— кнопка;

Page 46: MATLAB для студента

Создание приложений для решения типовых задач 45

• [®j — переключатель;

• [5П — поле ввода текстовой информации;

• [«•] — полоса прокрутки;

• [Щ — список;

• Ш\ — вывод информации в виде графиков и диагра мм;

• Я — кнопка-переключатель;

• ШЦ — флажок;

• [ 5 ] — метка (текстовое поле без возможности редактиро-

вания);

• f 3] — рамка;

• Еэ] — раскрывающийся список.

3.3. Файлы, генерируемые системойв процессе создания приложенияВ момент выбора опции Blank GUI (Default) (Новый GUI (noумолчанию)) в окне GUIDE Templates (Шаблоны GUI), появ-ляющемся после выбора пункта меню File | New | GUI (Файл |Создать | GUI), система автоматически создает два файла, имею-щие имя приложения с расширениями fig и т . Первый из них со-держит информацию об элементах управления, размещенных вобласти графического интерфейса, второй — программы, кото-рые будут реагировать на действия пользователя с элементамиуправления. Упомянутые файлы не только создаются автомати-чески, они также изменяются самой системой в процессе работыпользователя над приложением. Что необходимо знать об этихфайлах? Если о fig-файле пользователю вполне достаточно знать,что такой файл просто существует, то с m-файлом необходиморазобраться подробнее.

В списке свойств каждого управляющего элемента, размещенно-го в области графического интерфейса, имеется свойство callback.

Page 47: MATLAB для студента

46 Глава 3

В качестве значения этого свойства записывается имя функции(подпрограммы), которая выполняется при возникновении науправляющем элементе его основного события. Для кнопки та-ким событием является ее движение вверх при отпускании послещелчка мышью. Для полосы прокрутки — перемещение движка,и т. д. Это событие вызывает на исполнение функцию (подпро-грамму), записанную в m-файле приложения. Каждый управ-ляющий элемент может реагировать на несколько событий, номы рассмотрим только основное — Callback.

В качестве упражнения проделаем следующее. Создадим управ-ляющий элемент "кнопка". Для этого щелкнем мышью по кноп-ке [Щ на панели элементов управления, а затем — в желаемомместе области графического интерфейса. В ней появится изобра-жение собственно кнопки в обрамлении. Обрамление свидетель-ствует о том, что данный элемент выделен и позволяет произво-дить с ним определенные действия: перемещать, изменять разме-ры и т. д. Мы произведем на кнопке двойной щелчок мышью, чемвызовем на экран список свойств данного элемента. Крайне важ-но сразу же задать значение свойства Tag элемента. В дальней-шем это очень упростит нам работу с данным элементом из дру-гих подпрограмм. Установим значение свойства Tag равнымmyButton. После этого заглянем в m-файл нашего приложения инайдем там следующие строки:

• % Executes on button press in myButton — выполняется

при нажатии на кнопку (если точнее, то при отпускании ее);

• function myButton_Callback(hObject, eventdata, handles);

Ф % hObject handle to myButton — описатель КНОПКИ;

• % eventdata reserved — зарезервировано и не используется;

• % handles s t ructure with handles — структура, содержащаяописатели всех элементов.

Самой важной здесь является строка с заголовком функции (под-программы):

function myButton_Callback(hObject, eventdata, handles)

Заголовок этой функции был записан системой автоматическив момент создания управляющего элемента "кнопка". Заголовок

Page 48: MATLAB для студента

Создание приложений для решения типовых задач 47_

сопровождается строками комментариев, начинающихся с сим-вола %.

Название функции myButtoncallback говорит о том, что функцияобслуживает событие callback элемента myButton. Функция со-держит три параметра, краткое описание которых дано вкомментариях. Мы же обсудим их подробнее.

Функция представляет собой запись какого-либо алгоритма наязыке программирования. Практически во всех функциях мы бу-дем обращаться к элементам управления (объектам) и их свойст-вам. Изменяя соответствующие свойства различных объектов,можно их скрывать и показывать, изменять цвет, строить графикии многое другое. Для того чтобы все это проделывать, необходи-мо знать, как обратиться к объекту и какими он обладает свойст-вами. Информацию о свойствах объекта можно получить из спи-ска свойств в GUI справочной системы MATLAB, а также из ис-точников [8, 9]. Обратиться к объекту из тела функции можнодвумя способами.

• Способ первый. Обращение к текущему объекту (объекту,событие Callback которого обрабатывается в данный момент).Обращение производится посредством аргумента hobject, ко-торый является описателем текущего объекта.

• Способ второй. Использование аргумента handles, которыйявляется структурой, содержащей описатели всех элементовуправления (объектов).

Поясним вышесказанное в процессе построения нашего прило-жения.

3.4. Работа над приложениемРаботу над приложением начнем с "чистого листа". Для этогозакроем GUI, если он был открыт. Затем выполним действия посозданию заготовки нового интерфейса, как это было описано вразд. 3.2. Для облегчения понимания выполняемых действийпредлагается разбить нашу задачу на несколько этапов:

• первый этап — построение графика аналитического выраже-ния в заданном интервале;

Page 49: MATLAB для студента

48 Глава 3

• второй этап— решение задач поиска корня и локального ми-нимума;

• третий этап — создание дополнительных элементов управ-ления.

3.4.1. Первый этапНа этом этапе создадим две области ввода текста: область вводавыражения и область границ интервала, а также оси для выводаграфика и кнопки для построения графика. Перед созданием ука-занных элементов рекомендуется открыть список свойств теку-щего (выделенного) элемента, для чего следует нажать кноп-ку [gj| (Property Inspector). Далее создание каждого из элемен-тов советуем осуществлять в такой последовательности:

1. Щелкнуть мышью на панели элементов управления по нуж-ному элементу.

2. Щелкнуть мышью в нужном месте в области заготовки интер-фейса (появится собственно элемент в обрамлении).

3. Более точно позиционировать элемент с помощью мыши иликлавиш управления курсором (если это необходимо).

4. Потянуть мышью в нужную сторону за соответствующий мар-кер в углу обрамления элемента и изменить его размеры (еслиэто необходимо).

5. Установить значение свойства Tag в списке свойств элемента.(Значение свойства Tag является идентификатором (уникаль-ным именем) элемента. Система автоматически присваиваеткаждому элементу свое уникальное имя, но нам нужно, чтобыимя это было более осмысленным.)

6. Удалить присвоенное по умолчанию значение свойства stringи установить новое (если это необходимо).

Теперь поочередно создадим две области ввода текста и областиввода оси графика. Для первой области ввода текста свойству Tagприсвоим значение edEquation, ДЛЯ второй — edlnterval, ДЛЯосей — ахму, одновременно очистив значения свойства s t r i n gкаждого из элементов (рис. 3.4).

Page 50: MATLAB для студента

Создание приложений для решения типовых задач 49

-. |—

HrfiiiirfcnSiUBff8?

! I Bu!!QnDo*»nFc)i| • CDala

QeleteFcnEnableIdnflilNameitS'zeor.tjni:

- HoilrantalAllgnmentinterruptibleLIstboxTop

-TegTaolflp Slimj

MS; Sans Serifj

[5 8 28.7Ь9 7в.2 1.531

|D 01 0.1|

Рис. 3.4. Создание областей ввода

Работа над первыми тремя элементами закончена. Теперь созда-дим кнопку. Выполним все шаги рекомендуемой последователь-ности действий, присвоив свойству Tag кнопки значение btnPlot,а свойству string — значение Plot. Запустим приложение кноп-кой ["•] панели инструментов. Перед запуском система предло-жит присвоить имя приложению и сохранить его (по умолчаниюв папке ...\Work), что мы и сделаем. После запуска приложенияпроверим функциональность его элементов. Введем выражение(например, sin(x)), границы (-3, з) и нажмем кнопку. Мы уви-дим, что элементы функционируют, но при этом ничего не про-исходит.

Для построения графика необходимо, чтобы при нажатии КНОПКИ

выполнилась определенная последовательность команд. Длязаписи такой последовательности надо вызвать на редактирова-ние m-файл нашего приложения, нажав кнопку |-S | панели инст-рументов. Тот же результат можно получить, щелкнув правой

Page 51: MATLAB для студента

50 Глава 3

кнопкой мыши по кнопке и выбрав в появившемся контекстномменю View Callbacks | Callback (Отобразить Callback-функции |Callback). В открывшемся содержимом m-файла нужно найти имяфункции, которая обслуживает событие Callback, возникающеепри нажатии кнопки btnPiot. Далее, под найденным именемфункции запишем необходимую последовательность команд.В результате получим:

% Executes on button press in btnPiot.function btnPlot_Callback(hObject, eventdata, handles);% hObject handle to btnPiot (see GCBO);% eventdata reserved — to be defined in a future version ofMATLAB;% handles structure with handles and user data (see GUIDATAinterval=str2num(get(handles.edlnterval,'String'));f=inline(get(handles.edEq,'String'));fplot(f,interval);

Co структурой заголовка мы уже знакомы. Прокомментируемвведенную последовательность команд.

get(handles.edlnterval,'String')

Функция get () позволяет считывать конкретное свойство(в нашем случае string) конкретного объекта (в нашем случаеполе ввода интервала). Обратите внимание на способ обращенияк объекту — через структуру handles, которая передается в функ-цию в качестве параметра. После handles через точку записыва-ется идентификатор нужного объекта — handles. edlnterval.

Функция str2num() преобразует строковое значение в числовое,полученное значение присваивается переменной interval.

В качестве аргумента функции inline о используется функцияget о:

inline(get(handles.edEq,'String'))

которая позволяет получить значение поля ввода аналитическоговыражения (собственно выражение). Функция inline () опера-тивно преобразует строку, содержащую выражение, в функцию.После такого преобразования к полученной функции можно об-ращаться так же, как и к любой встроенной. Например, можно

Page 52: MATLAB для студента

Создание приложений для решения типовых задач 51

получить значение функции при заданном значении аргумента —f(2), поскольку результат работы inline о присвоен перемен-ной f.

Выражение fpiottf, interval) позволяет построить график функ-ции f в заданном интервале (interval) в текущих осях.

Точки с запятой в конце каждой из строк позволяют подавитьвывод результата в командное окно MATLAB.

Запустим наше приложение кнопкой | ^ | панели инструментов,введем выражение (например, sin(x)) и границы интервала (на-пример, -з, з), разделенные пробелом. Получим результат, изо-браженный на рис. 3.1.

Основа приложения готова. Далее мы будем шаг за шагом вно-сить усовершенствования и узнавать новые возможностиMATLAB. Переходим к следующему этапу разработки нашегоприложения.

3.4.2. Второй этапНачнем с создания кнопок Min и Zero (см. рис. 3.1}. Как созда-ются кнопки, мы уже знаем. Напомним только, что обязательнонадо присвоить значения свойствам Tag и string каждой из кно-пок. Для первой из кнопок это будут, соответственно, значенияMin и btnMin, для второй — Zero и btnZero. После того, как все этопроделано, запустим наше приложение и убедимся, что кнопкиприсутствуют и нажимаются.

Теперь пришло время наделить наши кнопки необходимымифункциями. Займемся кнопкой Min. При нажатии этой кнопкинаша программа должна рассчитать и нанести на построенныйграфик точку локального минимума исследуемого аналитическо-го выражения.

Войдем в режим редактирования m-файла приложения и найдемзаголовок функции, обслуживающей событие callback управ-ляющего элемента btnMin. Под заголовком запишем последова-тельность команд. Результат будет выглядеть следующим об-разом:

Page 53: MATLAB для студента

52 Глава 3

% Executes on button press in btnMin.

function btnMin_Callback(hObject, eventdata, handles)

% hObject handle to btnMin (see GCBO)

% eventdata reserved — to be defined in a future version ofMATLAB

% handles structure with handles and user data (see GUIDATA)

interval=str2num(get(handles.edlnterval,'String'));

xl=interval(1);

x2=interval(2);

f=inline(get(handles.edEq, 'String')) ;

x=fminbnd(f,xl,x2) ;

y=f (x);

plot(x,y,'r.','MarkerSize',25);

Первая строка нам уже знакома.

interval=str2num(get(handles.edlnterval, 'String')) ;

С ее помощью мы получаем вектор-строку, содержащую числен-ные значения границ интервалов.

Во второй и третьей строках мы обращаемся к элементам векто-ра-строки interval no индексам и присваиваем значения первогои второго элементов переменным xl и х2 соответственно:

xl=interval(1);x2=interval(2) ;

Выражение

f=inline(get(handles.edEq,'String'));

получает содержимое поля edEquation и преобразует его в функ-цию:

x=fminbnd(f,xl, x2)

Здесь мы используем встроенную функцию fminbndo, котораяосуществляет поиск локального минимума функции одной пере-менной на заданном интервале. Полученный результат присваи-ваем переменной х:

y=f(x);

Page 54: MATLAB для студента

Создание приложений для решения типовых задач 53

Подставляем найденную абсциссу локального минимума в каче-стве аргумента функции f о и находим соответствующую орди-нату.

Описание функции plot о:

p l o t ( x , у , ' г . ' , ' M a r k e r S i z e ' , 2 5 )

Строим точку с заданными координатами х, у. Точка имеет фор-му круга красного цвета, что определено аргументом встроеннойфункции plot о — ' г . ' (г — от англ. red, . — круг). Размер точ-ки задан числовым значением свойства MarkerSize.

При нажатии кнопки btnzero программа должна рассчитать и на-нести на построенный график точку локального минимума ис-следуемого аналитического выражения.

Программа обработки свойства Callback кнопки btnzero выглядитаналогично предыдущей:

% Executes on button press in btnZerofunction btnZero_Callback(hObject, eventdata, handles)% hObject handle to btnZero (see GCBO)% eventdata reserved — to be defined in a future version ofMATLAB% handles structure with handles and user data (see

GUIDATA)

interval=str2num(get(handles.edlnterval,'String'));

xl=interval(1);

x2=interval(2);

f=inline(get(handles.edEq,'String'});

x=fzero(f,(xl+x2)/2);

y=f (x);

p l o t ( x , y , ' g . ' , ' M a r k e r S i z e ' , 2 5 )

Программа должна рассчитать и нанести на построенный графикточку пересечения с нулем (корень) исследуемого аналитическо-го выражения.

Программа содержит строку

x=fzero(f,(xl+x2)/2);

со встроенной функцией f zero (). Функция используется для при-ближенного вычисления корня уравнения по заданному началь-

Page 55: MATLAB для студента

54 Глава 3

ному приближению (см. главу 8). В качестве параметров f zero озадаются функция, построенная на основе аналитическоговыражения, и середина заданного интервала.

После внесения описанных изменений в программу проверим ееработоспособ ность.

3.4.3. Третий этапСоздадим элементы управления, выводящие и убирающие коор-динатную сетку и изменяющие стиль, толщину и цвет построен-ной кривой. Для управления появлением и удалением координат-ной сетки воспользуемся элементами управления CheckBox (т. е.флажками). Создадим два таких элемента (рис. 3.5) и присвоимкаждому из них значения свойствам Tag и string. Для первогоэлемента сьх и Gridx соответственно; для второго — cbY и GridYсоответственно.

После внесения изменений в текст программы получим:

% Executes on button press in cbX.

function cbX_Callback(hObject, eventdata, handles)

% hObject handle to cbX (see GCBO)

% eventdata reserved — to be defined in a future version of

MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of cbX

if get(hObject,'Value')

set(gca,'XGrid','on')

else

set(gca,'XGrid','off')

end

% Executes on button press in cbY.

function cbY_Callback(hObject, eventdata, handles)

% hObject handle to cbY (see GCBO)

% eventdata reserved - to be defined in a future version ofMATLAB

% handles structure with handles and user data (see

GUIDATA)

% Hint: get(hObject,'Value') returns toggle state of cbY

Page 56: MATLAB для студента

Создание приложений для решения типовых задач 55

i f g e t ( h O b j e c t , ' V a l u e ' )

s e t ( g c a , ' Y G r i d ' , ' o n ' )

e l s e

s e t ( g c a , ' Y G r i d ' , ' o f f )

end

Как видно, программы полностью идентичны. Используя конст-рукцию if...else, мы осуществляем выбор между выражениямиs e t (gca, 'XGrid ' , ' o n ' ) И s e t (gca, ' X G r i d ' , ' o f f ' ) . Выбор прОИСХО-

дит на основании результата, полученного выполнением командыget(hobject, 'Value'). С помощью этой команды получаем значе-ние свойства value текущего элемента. Это свойство может иметьтолько два значения — 0 или 1. Если получена единица, то вы-полняется первая команда— set (gca, 'XGrid', 'on') (ВЫВОДИТСЯкоординатная сетка), если ноль — команда set (gca, 'XGrid', 'of f')и else (скрывается координатная сетка).

Рассмотрим подробнее конструкцию set (). Функция set () позво-ляет установить значение конкретного свойства указанного объ-екта. В данном случае мы обращаемся к функции gca о (осущест-вляет доступ к свойствам текущих осей) и присваиваем свойствуосей XGrid (координатная сетка вдоль оси х) значение ' on' (вклю-чено) или 'off (выключено).

Наиболее универсальным управляющим элементом автор считаетраскрывающийся список (в системе MATLAB он называетсяPopup Menu). Данный элемент более удобен, чем простой списокList Box, т. к. занимает меньше места в области разрабатываемогоинтерфейса приложения. Раскрывающийся список по своейфункциональности может заменить элементы управления RadioButton (переключатель) и slider (полоса прокрутки), что с успе-хом используют авторы демонстрационных примеров MATLAB.В нашем приложении присутствуют сразу три раскрывающихсясписка — элементы изменения стиля, толщины и цвета.

Создание элемента начинается, как обычно, с его размещения иподгонки размеров известным нам способом. Затем задаетсясвойство Tag элемента (в нашем случае — pmstyle, pmwidth иpmCoior). Задание свойства string раскрывающегося списка имеет

Page 57: MATLAB для студента

56 Глава 3

свои особенности. При щелчке мышью на кнопке рядом со свой-ством string в окне свойств элемента возникает следующее окно(рис. 3.5), в котором необходимо ввести название каждого пунктасписка. Название записывается одной строкой и отделяется отследующей нажатием клавиши <Enter>.

О 1# t b , * a i > BamgDelaled- BusvAcUon

Ы

1 H.T.M jcenl

Position - [89.8 2.92318.- SaiectmnHighnght -r j on" StringTa9••ToottipSlnng

"UlCcnlettMenu.• Units

wjcopupmemjprnColor

Яшми,IMil ioi

4 fltti^SB

Рис. 3.5. Окно свойств элемента

После создания трех раскрывающихся списков внесем измененияв программу. Программы обработки события callback каждого изсписков идентичны. Они имеют вид:

% Executes on selection change in pmStyle.function pmStyle_Callback(hObject, eventdata, handles)% hObject handle to pmStyle (see GCBO)% eventdata reserved — to be defined in a future version ofMATLAB% handles structure with handles and user data (see GUIDATA)

Page 58: MATLAB для студента

Создание приложений для решения типовых задач 57

% Hints: contents = get(hObject,'String') returns pmStyle

contents as cell array

% contents{get(hObject,'Value')} returns selected item from

pmStyle

Num=get(hObject,'Value');

switch Num

case 1

set(handles.line,'LineStyle','-') ;

case 2

set(handles.line, 'LineStyle', ' — ' ) ;

case 3

set(handles.line,'LineStyle',':');

case 4

set(handles.line,'LineStyle','-.');

end

% Executes on selection change in pmWidth.

function pmWidth_Callback(hObject, eventdata, handles)

% hObject handle to pmWidth (see GCBO)

% eventdata reserved — to be defined in a future version of

MATLAB

% handles structure with handles and user data (see GUIDATA)

% Hints: contents = get(hObject,'String') returns pmWidth

contents as cell array

% contents{get(hObject,'Value')} returns selected item from

pmWidth

Num=get(hObject,'Value');

switch Num

t case 1

set(handles.line,'LineWidth',1);

case 2

set(handles.line,'LineWidth',2);

case 3

set(handles.line,'LineWidth',3);

case 4

set(handles.line,'LineWidth', 4) ;

end

% Executes on selection change in pmColor.

function pmColor_Callback(hObject, eventdata, handles)

% hObject handle to pmColor (see GCBO)

% eventdata reserved — to be defined in a future version of

MATLAB

Page 59: MATLAB для студента

58

% handles structure with handles

% Hints: contents = get(hObject,contents as cell array

% contents(get(hObject,'Value')}pmColor

Num=get(hObject,'Value');

switch Num

case 1

set(handles.line,

case 2

set(handles.line,

case 3

set(handles.line,

case 4

set(handles.line,

case 5

set(handles.line,

case 6

set(handles.line,

case 7

set(handles.line,

end

Выражение

Num=get(hObject,'Value');

'Color'

'Color'

'Color'

'Color'

'Color'

'Color'

'Color'

and user data (s

'String') returns

returns selected

,'cyan');

,'red');

,'green');

,'blue');

,'magenta') ;

, 'yellow');

,'white');

Глава 3

эе GUIDATA)

pmColor

item from

получает значение свойства value текущего элемента и присваи-вает его переменной Num. Значение свойства value содержит но-мер строки списка, выбранной пользователем. Конструкцияswitch...case позволяет выполнить команду, которая соответству-ет номеру выбранной строки. А именно:

switch Num

case 1

set(handles.line,'LineStyle','-');

case 2

set(handles.line,'LineStyle','—');

case 3

set(handles.line,'LineStyle',':');

Page 60: MATLAB для студента

Создание приложений для решения типовых задач 59

case 4

set(handles.line,'LineStyle','-.');

end

Действие команды заключается в присвоении свойствамLineStyle, LineWidth И Color нужных значений. К объекту, СВОЙ-СТВО которого изменяется, мы обращаемся посредством структу-ры handles. line, которую получили в качестве параметра функ-ции обработки события callback. Идентификатор line указываетна кривую графика. Тонкость заключается в том, что этот иден-тификатор-указатель мы должны создать, активизировать и вне-сти в структуру handles самостоятельно на этапе построения гра-фика. Для этого внесем изменения в текст программы функции

Обработки События Callback КНОПКИ btnPlot.

% Executes on button press in btnPlot.

function btnPlot_Callback(hObject, eventdata, handles)

% hObject handle to btnPlot (see GCBO)

% eventdata reserved — to be defined in a future version of

MATLAB

% handles structure with handles and user data (see GUIDATA)

cla

interval=str2num(get(handles.edlnterval, 'String'));

f=inline(get(handles.edEq,'String'));

[x,y]=fplot(f,interval);

handles.line=plot(x, y, 'c-') ;

guidata(gcbo, handles) ;

hold on

Поясним суть изменений.

[x, y]=fplot (f, interval) ;

Такая форма использования функции fploto позволяет получитьзначения координат точек графика без вывода самого графика.

Выражение

h a n d l e s . l i n e = p l o t ( х , у , ' с - ' ) ;

присваивает указатель на кривую, построенную с помощьюфункции plot () идентификатору line структуры handles. Дело втом, что функция fplot () на это не способна.

Page 61: MATLAB для студента

60 Глава 3

В строке

guidata(gcbo,handles) ;

обновленная структура handles сохраняется, что дает возмож-ность использовать эти обновления в других функциях.

В строке cla очищаются текущие оси.

Наше приложение почти готово. Осталось только нанести неко-торые поясняющие надписи, например, Equation. Для этого вос-пользуемся элементом stat ic Text (кнопка S ) . Создадим эле-мент обычным способом и присвоим его свойству string нужноетекстовое значение, при этом можно довольствоваться значениемсвойства Tag, присвоенным по умолчанию. Заметим, что данныйэлемент имеет множество изменяемых свойств (например,FontName, Fontsize), манипулируя которыми можно придатьнадписи нужный вид.

Page 62: MATLAB для студента

X

ГЛАВА 4

Специальные вычисления

В данной главе излагаются способы и компьютерные технологиивычисления сумм и произведений ряда чисел, представлениефункций в табличной форме, вычисление производных, преде-лов, особых точек, разложение функций в степенные ряды.

Заканчивается глава описанием преобразования Лапласа и при-менением его для решения линейных дифференциальных уравне-ний.

Способы иллюстрируются большим количеством примеров.

4.1. Табулирование функцииМатематическая функция может быть представлена в виде фор-мулы, таблицы, графика. Табличное представление функции не-обходимо в следующих случаях:

• определение погрешности интерполяции;

• вычисление табличных разностей с целью определения степе-ни интерполяционного полинома;

• определение области изоляции корня;

• оценка численных значений функции в широком диапазонеаргументов.

В системе MATLAB табулирование функции осуществляется спомощью функции subs (), которая имеет вид:subs(f , х, x l)

Page 63: MATLAB для студента

62 Глава 4

где:

• f — функция, заданная аналитически;

• х — аргумент функции f;

• xi — вектор значений аргумента х, при которых определяетсязначение функции f.

Переменная xl может представляться в виде вектора или при по-стоянном шаге в виде: хн : Ах : хк, где х н — начальное значениеxl, Ах — шаг, хк — конечное значение xl.

Технология табулирования функции f(x):

1. Определение группы символьных переменных с помощьюфункции syms.

2. Образование вектора xl.

3. Ввод функции табулирования у - f(x).

4. Образование функции табулирования subs.

5. Получение решения путем нажатия клавиши <Enter>.

i Пример 4.1

Приведем примеры табулирования функции у = ех для xl в диа-

пазоне [0; 1] с постоянным шагом h = 0.2 и в случае, когдаxl = [0, 0.5, 1, 2, 5].

Программы решения задачи и ответы имеют вид:

» syms х, xl, у;

» xl = 0 : 0.2 : 1;

» у = ехр(х);

» subs(у, х, xl)

ans •

1.0000 1.2214 1.4918 1.8221 2.2255 2.7183

» xl = [ 0, 0.5, 1, 2, 5 ];

» у = ехр(х);

» subs(у, х, xl)

ans =

1.0000 1.6487 2.7183 7.3891 148.4132

Page 64: MATLAB для студента

Специальные вычисления 63

Функция subs о позволяет табулировать одновременно несколькофункций. Для этого необходимо функцию у представить в видематрицы табулируемых функций, например,

у = [ е х р ( х ) ; х . Л 2 ; з д . п ( х ) ] .

MATLAB позволяет табулировать функции, используя матрич-ные операции и не обращаясь к функции subs. Технология вы-числений в этом случае состоит в выполнении следующих опера-ций:

1. Определение символьных переменных с помощью функцииsyms.

2. Образование вектора аргумента х.

3. Образование матрицы, элементами которой являются аргу-мент х и табулируемые функции.

4. Получение решения путем нажатия клавиши <Enter>.

5. При необходимости получение решения в столбик использу-ется функция у' (транспонирование).

Покажем технологию на примере.

; Пример 4.2 |

Пусть необходимо табулировать функции ех, sinx, cosx в диа-пазоне изменения х, равном [0; I], с шагом 0.2. Решение следуетполучить в виде матрицы.

Решение:

» syms х, у;

» х = 0 : 0.2 : 1;» у = [ х; е х р ( х ) ; s i n ( x ) ; cos(x) ]

У =0 0.2000 0.4000 0.6000 0.8000 1.00001.0000 1.2214 1.4918 1.8221 1.2255 2.71830 0.1987 0.3984 0.5646 0.7174 0.84151.0000 0.9801 0.9211 0.8253 0.6967 0.5403

» у '0 1.0000 0 1.0000

0.2000 1.2214 0.1987 0.9801

Page 65: MATLAB для студента

64 Глава 4

0.4000 1.4918 0.3984 0.9211

0.6000 1.8221 0.5646 0.8253

0.8000 1.2255 0.7174 0.6967

1.0000 2.7183 0.8415 0.5403

4.2. Вычисление суммы элементовмассива чиселВычисление суммы элементов массива чисел осуществляется вMATLAB с помощью функций sum о и cumsumt), которые имеютследующий синтаксис:

sum(x)cumsum(x)

где х — вектор или матрица элементов суммирования.

Если х — вектор, то функция sum(x) выдает значение суммы эле-ментов вектора. Если х — матрица, то откликом будет вектор,элементами которого являются суммы каждого столбца матрицы.

Функция cumsum(x) возвращает суммы элементов и все промежу-точные результаты суммирования.

Приведем примеры суммирования на все указанные выше случаи.

j Пример 4.3

» х = 1 : 1 0 0 0 ;

» 3 " sum(x)

s =

500500

» х = [ 1, 4, 9, 16, 25 ] . Л 2 ;

» s = sum(x)

s =

97 9

» х = [ 1, 2, 3 , 4, ; 2 , 3 , 4, 5 ; 3 , 4, 5, 6 ; 4, 5, 6, 7 ] ;

» s = sum(x)

Page 66: MATLAB для студента

Специальные вычисления 65

s

>:

s

1 0

> s -

=

1

3

6

1 0

1 4 1 8

c u m s u m ( x )

2

5

9

1 4

3

7

1 2

1 8

2 2

4

9

1 5

2 2

4.3. Вычисление произведенияэлементов чиселВычисление произведения элементов массива осуществляется спомощью функций prod( ) и cumprodf ), имеющих следующийсинтаксис:

prod(x)cumprod(x)

где х — вектор или матрица элементов.

Если х — вектор, то функция prod(x) вычисляет произведениеэлементов вектора. Если х — матрица, то откликом будет вектор,элементами которого являются произведения элементов каждогостолбца матрицы.

Функция cumprod(x) дополнительно возвращает частичные про-изведения элементов вектора или столбцов матрицы.

Ниже приведены примеры вычисления произведения ряда чисел.

; Пример 4.4

Необходимо вычислить:

• произведение чисел от 1 до 10;

• произведение элементов вектора [1,4/9,16,25];

• произведение квадратов элементов вектора [1,4, 9,16,25];

• частичные произведения столбцов матрицы [1,2,3,4,-

2,3,4,5; 3,4,5,6; 4,5,6,7].

ЗЗак. 1196

Page 67: MATLAB для студента

66 Глава 4

Решение.

»

»р

»

»

р

»

»

р

»

»

р

х = 1 : 10;

Р = prod(x)

=

3628800

х = [ 1, 4,

Р = prod(x)

=

14400

х = [ 1, 4,

Р = prod(x)

=

207360000

х = [ 1, 2,

9,

9,

3,

Р = cumprod(x)

=

1 2

2 6

6 24

24 120

3

12

60

360

16, 25 ];

16, 25 ]. Л2;

4 ; 2, 3, 4, 5 ; 3, 4, 5, 6 ; 4

4

20

120

840

, 5, 6, 7 ];

4.4. Вычисление производныхВ MATLAB производная находится с помощью следующейвстроенной функции:

d i f f ( f , х , п)

где:

• f — дифференцируемая функция;

• х — аргумент функции (переменная дифференцирования);

• п — порядок производной (по умолчанию n=i).

Технология вычисления производной:

1. Определение символьных переменных с помощью функцииsums ().

Page 68: MATLAB для студента

Специальные вычисления 67

2. Ввод функции дифференцирования f .

3. Ввод функции diff(f,x,n) с конкретными значениями х и п.

4. Получение решения после нажатия клавиши <Enter>.

Будем иллюстрировать методику на примерах.

| Пример 4.5 |

Пусть необходимо найти первую и третью производные функцииЛ: cos Л: . Процедуры вычисления производных имеют вид:

» sybs х, п;

» у = х * cos (x) ;

» diff(y, x)

ans =

- sin (x) * х + cos (x)

» diff(у, х, 3)

ans =

sin (x) * x — 3 cos (x)

Функция diff(f,x,n) позволяет вычислять производные функ-ций, содержащих символьные переменные.

• •

Пример 4.6

Далее приведены решения для следующих трех функций:

Ух = ах2,

Уг = и*

X

Для функции у2 вычислена третья производная.

» syms а х п;

» y l = а * х Л 2;» у2 = п Л х;» уЗ = ехр ( - а * хЛ5) + log (а л п + х А а) — а * п / ( х А 3 ) ;

Page 69: MATLAB для студента

_6S Глава 4

» zl = diff (yl, x)

zl =

2 * a * x

» z2 = diff (y2, x, 3)

z2 =

плх * log (n)

Л3

» z3 = diff (y3, x)

z3 =

-5 * a * хл4 * exp (-a * х

л5) + a * x

A(a-l) / (a

An + х

ла)

+ 3 * a * п/хл4

Функция дифференцирования имеет следующие особенности.Если переменная дифференцирования х в выражении diff отсут-ствует, а функция имеет вид diff (f), то программа не выдаетошибки. Она осуществляет дифференцирование по переменнойфункции f в порядке, обратном алфавиту.

Например, если функция f содержит переменные а, ь, с, то диф-ференцирование будет выполнено по переменной с. Если приэтом в составе аргументов содержится переменная х, то она имеетабсолютный приоритет, независимо от ее положения в алфавитепеременных.

I Пример 4.7

Приведем примеры на все перечисленные случаи.» syms a b с х w;

» diff(а + ЬЛ2)

ans =

2 * b

» diff(a + с * ЬЛ3)

ans =

ЬЛ3

» diff(а * w + с * ЬЛ3)

ans =

а

» diff(х * а * w + ЬЛ3)

ans =

а * w

Page 70: MATLAB для студента

Специальные вычисления 69

Функция f может быть вектором и матрицей. В таких случаяхоткликом будет также вектор или матрица, элементами которойбудут производные от исходных функций, образующих векторили матрицу.

! Пример 4.8

» syms а х;» у = [ х * s i n ( x ) ; х Л 5 ; ехр(а * х) ] ;

» d i f f (у, х)ans =

cos (x) * х + s i n (x)5 * х"4а * ехр (а * х)

4.5. Вычисление пределовРассмотрим конкретный пример.

Пример 4.9,,.., , ; ; , , _ , ...,..,.,.,'.;..,* 1 i

Вычислим значение функции

sinxу =

Xв диапазоне значений х, равном [0; 1], с шагом 0.2. Решение име-ет вид:» х = 0 : 0.2 : 1;

» у = sin (x)./х

У =

NaN 0.9933 0.9735 0.9411 0.8967 0.8415

Ответ ошибочный. Программа не выдала значение функции прих=о, восприняв процедуру деления на ноль как недопустимую.Между тем, здесь имеет место неопределенность вида 0/0 ифункция

sin 0 _

0

Page 71: MATLAB для студента

70 Глава 4

В подобных случаях при практических расчетах пользователюприходится анализировать результат программы. Искать пределфункции, используя правило Лопиталя. Системы компьютернойалгебры позволяют находить пределы функции, в том числе и вслучаях, когда имеют место неопределенности вида 0/0, 0/оо,°о/О, оо/оо.

В MATLAB пределы вычисляются с помощью функции limit о,имеющей синтаксис:

limit(f, x, xO)

где:

• f — функция, предел которой определяется;

• х — аргумент функции f;

• хО — предельное значение х.

Наиболее часто пределы вычисляются при х=о или при х=оо. Сим-вол оо кодируется в MATLAB словом inf.

I Пример 4.10

Найти пределы функций:

ух =

Уг =

sinx

X

(•-

0 -

. - >

X

х)

lnx

при х -» 0,

при х—> оо ,

при х—> 1.

Решения будут иметь вид:

» syms x;» l i m i t ( s i n ( x ) / x , х, 0)

ans =

1

Page 72: MATLAB для студента

Специальные вычисления 71

» limit((1 - ехр(-х))./х, х, inf)

ans =

О

» limit((1 - х)./log (x)), х, 1)

ans =

-1

В табл. 4.1 приведены задачи на определение пределов функции.Примеры иллюстрируют возможности системы MATLAB.

Таблица 4.1. Функции и значения их пределов

1

2

3

4

5

6

7

8

Функция

(1+х)7

(ax + b'Y

[ 2 J

Й

1-е-"'

log(l-/)

1-я"

a n

1-е""2 0 2 - е -

Предельноезначение аргумента

00

0

00

1

00

0

0

оо

Ответ

1

1

NaN

1

—а

In aa

a

Page 73: MATLAB для студента

72 Глава 4

Таблица

9

10

Функция

х-аIn (jc-uf + 1)

х-2

Предельноезначение аргумента

а

2

4.1 (окончание)

Ответ

1

-и2 In п

4.6. Разложение функциив степенной ряд

Разложение функции у = /(х) в степенной ряд осуществляется

по формуле Тейлора:

Лx) = f(a)

Г(*) \п J(a)• + ....

П\

В формуле используются следующие обозначения:

• а —значение аргумента х функции y = f(x), вокруг которо-

го происходит разложение в ряд;

• f{a) > f'(a)> f"(a)> •••» f(a) — значения функции и ее произ-

водных в точке а.

При а = 0 формула называется рядом Маклорена и имеет вид:

2! п\

Разложение функции в степенной ряд реализуется в системеMATLAB с помощью функции Taylor (), которая имеет вид:

Taylor (f(x), x, xO, n)

Page 74: MATLAB для студента

Специальные вычисления 73

где:

• f (х) — функция, разлагаемая в степенной ряд;

• х — аргумент функции f (x);

• хо — значение х, вокруг которого происходит разложениефункции f (х);

• п — число членов разложения.

Технология разложения функции в ряд:

1. Определение символьных переменных с помощью функцииsyms().

2. Ввод функции y = f(x).

3. Ввод функции Taylor (у, х,хО,п).

4. Получение решения путем нажатия клавиши <Enter>.

В качестве примера разложим в ряд Тейлора функции

>•, =sin;c,

уъ = sinh х,

sinjc

I Пример 4.11

Выполним разложение вокруг хО=о с числом членов п - 5.

Решение имеет вид:

» syms х, y l , у2, уЗ, у4, у5, уб, п;

» y l = s i n ( x ) ; у2 = е х р ( х ) ; уЗ = s i n h ( x ) ;

» у4 = (3 * х + 1) (2 хЛ2 + 5 х + 1) ;

Page 75: MATLAB для студента

74 Глава 4

» у5 = log(x); уб = sin(x)./х;

» zl = Taylor(yl, x, 0, 5)

zl =

x - 1/6 . xA3

» z2 = Taylor (y2, x, 0, 5)

z2 =

1 + x + 1/2 . хл2 + 1/6 , x"3 + 1/24 . х

л4

» z3 = Taylor(y3, x, 0, 5)

z3 =

x + 1/6 . хл3

» z4 = Taylor (y4, x, 0, 5)

z4 -

1 - 2 * x + 8 . x"2 - 36 . хл3 + 164 . х

л4

» z5 = Taylor(y5, x, 0, 5)

z5 =

Решения нет.

» z6 = Taylor (уб, x, 0, 5)

z6 =

1 - 1/6 . хл2 + 1/120 . х

л4

Обратим внимание на то, что степенные ряды функций sinx иsinhx имеют только два члена, в то время как функция Taylor осодержит п = 5. Это объясняется тем, что четные производныефункции sin Л: равны нулю.

Функцию у5 - In х программа не разложила в степенной ряд во-

круг х=о потому, что In 0 не существует.

При разложении функции в степенной ряд всегда возникают сле-дующие вопросы:

• Возможно ли разложение данной функции в степенной ряд?

• Какое число членов ряда должно быть для обеспечения тре-буемой точности?

• Как найти погрешности степенного ряда?

Ответим на эти вопросы.

Page 76: MATLAB для студента

Специальные вычисления 75

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

Необходимое число членов ряда зависит от вида функции и зна-чения аргумента.

Рассмотрим типичные случаи.

Случай 1. Ряд знакопеременный, а члены ряда убывают по вели-чине.

В этом случае ряд обладает следующим свойством: сумма от-брошенных членов ряда не превосходит последнего оставленногочлена. В таком случае определить число членов ряда можно наосновании анализа общего члена ряда. В качестве примера рас-смотрим убывающий знакопеременный ряд функции е~'х. Общийчлен этого ряда имеет вид:

И " —•

Так как все отброшенные члены ряда не превосходят этого, то,задавшись погрешностью е, можно найти число п из условия:

л!

Пусть, например, х = 1.5* Б = 0.01 . Тогда

«! = — или и! = 1.5ях100.е

Решая это уравнение, получим п « 6 .

Случай 2. Ряд знакопеременный, х большое. В этом случае свой-ство частичной суммы ряда сохраняется, но ряд сходится мед-ленно и число членов ряда может быть очень большим.

Случай 3. Ряд не знакопеременный. В этом случае общих правилвыбора числа членов не существует.

Page 77: MATLAB для студента

76 Глава 4

Погрешность ряда можно оценить при компьютерных технологи-ях, по крайней мере, следующими способами:

• табулированием исходной функции и функции, полученной врезультате разложения в степенной ряд;

• построением графиков функций;

• вычислением ошибок.

Рассмотрим первый способ на примере.

Пример 4.12

Разложим функцию у = ех в ряд Тейлора при п = 3, 4, 5:

у,

у, -\

х2

2

х2

—2

х2

х3

о

х3

—6

х3

х4

—24

х3

— + — + — +2 6 24 120

Выполним табуляцию функций у = ех, у

нии х в диапазоне от о до 2 с шагом h=o. 2.

Программа на языке системы MATLAB имеет вид:

у4 и у5 при измене-

»»>>

>>»»»

»Z

syms х.

X =

У =

узу4

У5

z -

Z'

=

X

0

0.

0 :

у, уЗ, у4,

0.2 : 2;

ехр(х);

- 1

= 1

- 1

[ х

2000

+ х + х.л2.

+ х + х.л2.

+ х + х.Л2.

; у; уЗ; у4

У1.0000

J 1.2214

уь;

/2 + х.~

/2 + х.л

/2 + х.л

; у5 ];

уз1.0000

1.2213

3.

3.

3.

/6;

/6 + х.

/6 + х.

у4

1.0000

1.2214

М./24;л4./24 +

У5

1.0000

1.2214

х.л5./120;

Page 78: MATLAB для студента

Специальные вычисления 77

0.4000

0.6000

0.8000

1.0000

1.2000

1.4000

1.6000

1.8000

2.0000

1.4918

1.8221

2.2255

2.7183

3.3201

4.0552

4.9530

6.0496

7.3891

1.4907

1.8160

2.2053

2.6667

3.2080

3.8373

4.5627

5.3920

6.3330

1.4917

1.8214

2.2224

2.7083

3.2944

3.9974

4.8357

5.8294

7.0000

1.4918

1.8220

2.2251

2.7167

3.3151

4.0422

4.9231

5.9869

7.2667

Из решения видно, что погрешности рядов при п = 3, 4, 5 доста-точно большие, они уменьшаются с увеличением числа членов п.

Наглядное представление о погрешностях рядов можно получить,если представить функции в виде графиков. Этот способ позво-ляет визуально установить область значений х, в которой разло-жение допустимо.

Наиболее эффективным методом оценки погрешности ряда явля-ется определение среднеквадратических погрешностей. Этот ме-тод подробно рассмотрен в главе 11.

4.7. Определениеэкстремумов функцииКлассическим способом определения экстремума (максимума

или минимума) функции у- f(x) является определение корня ее

производной. В системе MATLAB этот метод может быть реали-зован с помощью функций

diff(f, x)solve('fun', x)

Первая определит производную, а вторая значение х, при которомнаходится экстремум функции f (х).

Покажем технологию определения максимума функции системойMATLAB по этому методу на примере.

Page 79: MATLAB для студента

78 Глава 4

| Пример 4.13

Пусть функция имеет вид: у = хе х. Требуется определить коор-

динаты ее максимума.

Решение задачи.

1. Определение области xi < х < х2 нахождения максимумафункции.

Представим функцию в виде графика:

» х = 0 : 0 .1 : 3 ;

» у .«• х. * ехр(-х) ;

» p l o t (х, у)

График функции приведен на рис. 4.1.

Из рис. 4.1 видно, что областью изоляции максимума функцииможет быть 0.5 < х < 1.5.

«> figure 1File Edit View

0.4 r~

Insertkj

loob Desktop

- A

Windov•

i H e l p

D E

0.35

0.3

0.25

0.2

0.15

0.1

0.05

°0 0.5 1.5" 2.5

Рис. 4.1. График функции у-хе

Page 80: MATLAB для студента

Специальные вычисления 79

2. Вычисление производной функции у = хе~х:

» syms х, у, z;

» z = d i f f (у, х)

z =

ехр (-х) - х ехр (-х)

3. Определение корня производной:

» s o l v e ( ' е х р ( - х ) - х * ехр(-х) = 0 ' , х)

ans =

1

4. Определение значения функции:

» к « 1;» у = х. * ехр(-х)

У =0.3679

MATLAB имеет встроенную функцию, позволяющую определитькоординаты экстремума функции, не вычисляя корня производ-ной. Такой функцией является fmin () в нескольких вариантахреализации.

Вычисление минимума функции в MATLAB осуществляется спомощью следующих встроенных функций:

fmin ('fun', xl, x2)

fmin ('fun', xl, x2, options)

fmin ('fun', xl, x2, options, PI, ..., P10)

В этих функциях приняты следующие обозначения:

• 'fun' — взятая в одинарные кавычки функция, минимум ко-торой определяется;

• xl, х2 — область значений аргументаг в которой находитсяминимум функции 'fun1;

• options — вектор, содержащий компоненты управления про-цессом решения задачи, например: options (1) — вывод значе-ний промежуточных итераций, options (2) — задание погреш-

Page 81: MATLAB для студента

80 Глава 4

ностей итераций (по умолчанию le-04), options (14) — зада-ние числа итераций (по умолчанию 500).

4.7.1. Функция fmin ('fun', x1, x2)Эта функция определяет значение аргумента х минимума функ-ции ' fun' из диапазона xl < х < х2.

Приведем примеры определения локального минимума функции.

| Пример 4.14

Пусть дана нелинейная функция

у = 2х-4х + 6,

координаты локального минимума которой необходимо опреде-лить.

Решение. Определим область значений xl < х < х2, для чего соз-дадим график функции:

» х = 0 : 0 .1 : 6;

» у = 2 . Л х - 4 . х + 6;

» p l o t ( x , у)

График показан на рис. 4.2.

Из рис. 4.2 видно, что областью значений аргумента X, в которойнаходится минимум функции, может быть 2 < х < 4. Теперь дляопределения х воспользуемся функцией fmin('fun',xi,x2):

» х - fmin ( '2 Л х - 4 * х + 6 ' , 2, 4)

х =

2.5288

Найдем значение локального минимума:

» х = 2 . 5 2 8 8 ;

» У = 2 . Л х - 4 * х + 6

Y =

1.6557

Page 82: MATLAB для студента

Специальные вычисления 81

File. Edit View Insert Tools Desktop Window Help

Рис. 4.2. График функции ^ = 2х - 4x + 6

Таким образом, координатами локального минимума функцииявляются (2.5288, 1.6557).

Функция fmine fun1,xi,x2) позволяет определять также макси-

мум функции y = f(x). Для этого необходимо перед функцией

у = f(x) поставить знак минус.

{ Пример 4.15

В качестве примера определим максимум рассмотренной выше

функции у = хе~х:

» syms x;» fminC-x * exp (-X)1, 0.5, 1.5)ans =

1

Page 83: MATLAB для студента

82 Глава 4

4.7.2. Функция fmin ('fun', x1, x2, options)Покажем результаты этой функции на примере.

! Пример 4.16

Нужно определить минимум

Решение:

» syms x;» [х, o p t i o n s ]X =

2.5288

o p t i o n s =columns 1

0 0.0001

columns 11

0 0

У =

= fmin('2.Л

thround 10

функции

= 2х - Ax + 6.

x - 4 * x + 6'

0.0001 0.0000 0 0 0thround 18

0 500.000 0 0.0000

, 2, 4,

1.6557

0.10000

[0.1 e - 8])

0 11.0000

0

На восьмом месте приведено максимальное значение функции,равное 1.6557, на десятом показано число выполненных итераций(11), на четырнадцатом— заданное максимальное число итера-ций (500 по умолчанию).

В MATLAB имеется возможность решения задач минимизациифункций нескольких переменных. Такими встроенными функ-циями являются:

fmins('fun', х0)

[х, options] = fmins('fun', x0)

fmins('fun', xO, options)

В этих функциях приняты следующие обозначения:

• 'fun' — многопараметрическая функция у = /(х[,х2,...,хп);

• х0 — вектор начальных значений;

• options — вектор компонентов управления решением задачи.

Page 84: MATLAB для студента

Специальные вычисления 83

• Используется три параметра:

• options (1) — вывод результатов промежуточных итераций;

• options (2) — задание погрешностей вычисления аргумента(по умолчанию 1е-04);

• options (14)— задание максимального количества итера-ций (по умолчанию 200п, где п — число переменных).

4.8. Интегральные преобразованияИнтегральные преобразования находят широкое применение прирешении дифференциальных уравнений, вычислении предельныхзначений функции f(x), исследовании динамики систем управ-ления, систем массового обслуживания и во многих других тех-нических и научных задачах.

Наиболее популярными являются преобразования Лапласа, Кар-сона и z-преобразование.

Здесь рассматривается только преобразование Лапласа, реализо-ванное в системе MATLAB.

4.8.1. Преобразование ЛапласаПреобразование Лапласа функции f(x) имеет вид:

L{f{x)}=]f{x)e-"dx, (4.1)- С О

где f(x) — функция, преобразование Лапласа которой необхо-

димо найти.

Если аргументом функции является время /, то преобразованиеЛапласа имеет вид:

L{f(t)} = ]f(t)e-«dt. (4.2)о

Получим преобразование Лапласа для некоторых простых функ-ций.

Page 85: MATLAB для студента

84

Пусть

Тогда на основании (4.2) имеем:

, ч_ lae-,,d

0

а

Глава 4

Z(sin(cof)) = Jsin(<B/)g ''dt = -1

о

Преобразование Лапласа производной и-го порядка имеет вид:

где х('0) — значение i-й производной при t = 0.

Преобразование Лапласа для интеграла имеет вид:

С помощью преобразования Лапласа можно существенно упро-стить решение ряда задач, связанных с определением пределовфункции. Для этого служат следующие предельные теоремы:

(4.3)

л->0

В книгах и справочниках приводятся преобразования Лапласамногих функций. Эти результаты легко получить с помощью сис-тем компьютерной алгебры.

Page 86: MATLAB для студента

Специальные вычисления 85

В системе MATLAB преобразование Лапласа функции /(/)

осуществляется с помощью следующих встроенных функций:

• Laplace (F) — преобразование Лапласа символьной перемен-ной F;

• Laplace (F, s) — преобразование Лапласа по формуле (4.2);

• Laplace (F,со, s) — преобразование Лапласа по переменной со .

Функция Laplace(F)

Если функция F является аргументом /, то преобразование Лап-ласа осуществляется по формуле (4.2). Если же в F аргумент /отсутствует, то преобразование Лапласа осуществляется по пере-менной в соответствии с алфавитом переменных функции F.

Рассмотрим этот случай на примере.

Пример 4.17

Пусть необходимо найти преобразование Лапласа функции F = а .

Решение:

» syms a;» Laplace(a)ans =

s2

Этот ответ не совпадает с известными значениями преобразова-ния Лапласа постоянной а . Известно, что

который получается в результате преобразования по форму-ле (4.2):

Page 87: MATLAB для студента

86 Глава 4

В данном примере функция F не содержит переменной /, по-этому функция Laplace (F) вычисляет преобразование Лапласа попеременной а :

—nl » 1 •

Если необходимо найти преобразование Лапласа переменной п,представляющей собой число, например, п = 2, то функцияLaplace (F) решения не дает. Это объясняется тем, что в данномслучае в выражении F отсутствует переменная интегрирования.

| Пример 4.18

Пусть функция f{t} = a + bc, т.е. не содержит в качестве аргу-

мента /. Найдем преобразование Лапласа этой функции с по-

мощью функции Laplace (F):

» syms a» Laplace (a

ans =

а Ь

» Laplace(а

ans =

а с

» Laplace (a

ans =

a d

7+7

» Laplace(а

ans =

a w

7+7

b

+ ь

+ d

+ d

+ w

с t

* с)

* с)

* w)

* t)

Page 88: MATLAB для студента

Специальные вычисления 87

Из примера видно, что функция Laplace (F) не воспринимает пре-образуемые выражения как постоянные величины. Преобразова-ния Лапласа получаются путем интегрирования выражений соот-ветственно по переменным с, d, w, t, т. е. в обратном алфавитномпорядке буквенных символов. При этом абсолютным приорите-том обладает переменная t .

Функция Laplace(F,s)

Эта функция аналогична функции Laplace (F). Ее отличие в том,что она позволяет находить преобразование Лапласа для случаячисленных значений функции F .

I Пример 4.19 I

» L a p l a c e ( 3 . 5 , s)

ans =

мsФункция Laplace(F,w,s)

Функция отличается от предыдущих тем, что в интегрируемойфункции F указывается переменная интегрирования со. Функ-ция обеспечивает прямое преобразование Лапласа по формуле:

(4.4)

Пример 4.20

>> gyms a b с х s t;

» Laplace(a, t, s)

ans щ

a

s» Laplace(t * exp (-a * t), t, s)

Page 89: MATLAB для студента

88 Глава 4

(s + a)2

» l a p l a c e (a + b * с, b , s)

ans =

а с

4.8.2. Решениедифференциальных уравнений с помощьюпреобразования ЛапласаПреобразование Лапласа находит широкое применение при ре-шении задач, связанных с анализом дифференциальных уравне-ний. Приведем один из таких примеров.

Пусть имеется многоканальная система массового обслуживанияс отказами. Интенсивность потока заявок на обслуживание X,интенсивность обслуживания заявки ц, число обслуживающихканалов л = 2 .

Такая система может находиться в следующих состояниях:

• 50 — начальное состояние системы, когда она свободна от

обслуживания (заявок нет);

• 5, — обслуживается одна заявка, второй обслуживающий ор-

ган свободен от обслуживания;

• s2 — обслуживаются две заявки, оба обслуживающих органазаняты обслуживанием, очередной заявке будет отказано в об-служивании.

Так как время поступления заявки на обслуживание и время об-служивания являются величинами случайными, то эффектив-ность такой системы характеризуется вероятностями состояний.Эти вероятности могут быть получены путем решения следую-щей системы дифференциальных уравнений:

Page 90: MATLAB для студента

Специальные в ы ч и с л е н и я 8 9

dt 1 W

Будем определять вероятности состояний при следующих на-чальных условиях:

Представим систему дифференциальных уравнений в преобразо-ваниях Лапласа:

Так как Ро (0) = 1, а Р] (0) = Р2 (0) = 0, то после очевидных преоб-

разований получим:

=0

Аргумент л' в выражениях для Р опущен для краткости урав-нений.

Полученная система уравнений является алгебраической с посто-янными коэффициентами.

Состояние s2 является отказовым для очередной заявки на об-

служивание. Тогда вероятность Рс (/) того, что заявка будет при-

Page 91: MATLAB для студента

90 Глава 4

нята на обслуживание в произвольный момент времени t, равна

сумме вероятностей состояний sQ и s], т. е.

Система MATLAB позволяет решать системы алгебраическихуравнений в аналитическом виде (см. главу 8). Полученное намирешение имеет вид:

s2

А

Xs + 2Xд

Д

Найдем теперь финальные вероятности состояний, воспользо-вавшись предельными теоремами (4.3)

.v->0На основании этой теоремы имеем:

Л, + 2/. ц + 2 ц

Полученная формула позволяет определить готовность системыпринять заявку на обслуживание в любой момент времени t. Так,например, если интенсивность потока заявок равна интенсивно-

4сти обслуживания, т. е. X - д , то Рс = — = 0.8 .

4.8.3. Обратное преобразование ЛапласаДля получения решения системы дифференциальных уравненийво временной области необходимо полученное решение в преоб-разованиях Лапласа представить в функции t.

Page 92: MATLAB для студента

Специальные вычисления 91

Обратное преобразование Лапласа имеет вид:

15+ко

\ F{s)e"ds. (4.5)^ Л ' 5-(ю

Существуют таблицы обратных преобразований различныхфункций. Однако при наличии универсальных программныхсредств символьной математики обращаться к ним нет необхо-димости.

В MATLAB обратное преобразование Лапласа находится с по-мощью функции iLapiace (), которая имеет вид:

iLaplace(L(s), t)

где:

• L (s) — прямое преобразование Лапласа;

• t -— аргумент искомой функции f (t).

Технология получения обратного преобразования Лапласа такова:

1. Создание группы символьных объектов с помощью функции

syms ().

2. Набор и ввод функции his),

3. Набор И ввод функции iLapiace (L (s), t ) .

4. Получение решения путем нажатия клавиши <Enter>.Рассмотрим технологию обратного преобразования Лапласа напримере.

[ Пример 4.21 !

Необходимо получить оригинал функции

a + b sОД-

Решение:

» syms a b s t L;» L = (a + b * s) / Б Л 2;

» iLapiace(L, t )

Page 93: MATLAB для студента

92 Глава 4

ans =

a t + b

Пример 4.22

Получим теперь оригинал функции Рс (s) решения системы диф-

ференциальных уравнений массового обслуживания.

Пусть X = и. = 1. Тогда

Получение оригинала функции Рс (s):

» syms s t P;» P = (s"2 + 5 * s + 4) / ( s * (sA2 + 5 * s + 5) ) ;» iLaplace (P, t)ans =

4 1 - - 1 / ? -- 1- + - U > cos h ( - / 5 0 + ^ — e " 2 ' sin h ( -

Преобразование Лапласа позволило найти решение в виде фор-мулы. В этом его главное достоинство.

Page 94: MATLAB для студента

ГЛАВА 5 \ v

L i

Вычислениематематических функций

Основными видами математических функций являются:

• элементарные функции;

• специальные функции;

• функции пользователя.

Приведем перечень функций и покажем способы их вычисления.

5.1. Элементарные функции

Математические функции представляются в виде fun(x), гдеfun — имя функции, х — аргумент в виде числа, вектора или мат-рицы. Числа, элементы вектора или матрицы могут быть вещест-венными или комплексными. Если число комплексное, то привычислении абсолютного значения х откликом будет модулькомплексного числа.

Технология вычисления элементарных функций предельно про-ста: осуществляется ввод функции с заданным значением аргу-мента х и нажимается клавиша <Enter>. На экране появится ответв виде числа, вектора или матрицы.

Далее приводятся элементарные функции и их вычисления в сис-теме MATLAB.

Page 95: MATLAB для студента

94 Глава 5

5.1.1. Алгебраические и арифметическиефункции• abs (х) — абсолютное значение х.

Переменная х может быть вещественным или комплекснымчислом, вектором или матрицей. Если х — число комплексное,то ответом будет модуль комплексного числа.

\ Пример 5.1

Найти с помощью функции abs (x) абсолютное значение чиселследующих векторов и матриц:

Yl=[-3,5], Y2=[2, -3, 2+3i, i ] ,

Y3=[2, -3; 1, 2+3i; -2, -5].

Решение:

» Yl=[-3,5];

» Y2=[2, -3,

» Y3=[2, -3;

» abs(Yl)

ans =

3 5

» abs(Y2)

ans =

2.0000

» abs(Y3)

ans =

2.0000

1.0000

2.0000

2+3i, i];

1, 2+3i; -2, -5]

3.0000 3.6056

3.000

3.6056

5.0000

1.0000

• exp(x)—экспоненциальная функция.

Вычисляет значение ех, если аргумент х —г вещественное чис-ло. Если х — комплексное, то вычисляет так называемую ком-плексную экспоненту:

е2 =ex (cosjv + /sin>•),

где z = х + iy .

Page 96: MATLAB для студента

Вычисление математических функций 95

\ Пример 5.2

Найти экспоненциальную функцию для следующих аргу-ментов:

[12 3 4 5], [2.5+71, -1, 1],

[-1, 0.1, i ; 3+1.2i, - i , 5; - 0.5, 0.5, 2].

Решение:

» Yl = [1, 2, 3, 4, 5);» Y2 = [2.5+ 7i, -1, 1];» Y3 = [-1, 0.1, i ; 3+1.2i, - i , 5; - 0.5, 0.5, 2];» exp(Yl)ans =

2.7183 7.3891 20.0855 54.5982 148.4132» exp(Y2)ans =

9.1844 + 8.0037i 0.3679 2.7183

» exp(Y3)

ans =

l.Oe+002*

0.0037 0.0111 0.0054+0.0084i

0.0728+0.1872i 0.0054-0.0084i 1.4841

0.0061 0.0165 0.0739

• Логарифмические функции log (x), loglO (x), log2 (x).

Вычисляются логарифмы чисел с основанием е , 10, 2.

Аргумент х может быть числом положительным и отрица-тельным, вектором и матрицей. В случае вектора или матрицывычисляют логарифм каждого элемента. Если число ком-плексное z = x + iy или отрицательное, то вычисляют так на-зываемый комплексный логарифм:log(z) = log(abc(z) + i atan2 (y,x))

! Пример 5.3

Найти значения log(x), loglO(x), iog2 (x) при следующих зна-чениях x:

x=[l 2 3 4 5], x=l+2i, x=-5.

Page 97: MATLAB для студента

96 Глава 5

Решение:

» Y1 = [1 2 3 4 5];» Y2 = l+2i;» Y3 = -5;» log (YDans =

0 0.6931 1.0986 1.3863 1.6094» loglO(Yl)ans =

0 0.3010 0.4771 0.6021 0.6990» log2(Yl)ans =

0 1.0000 1.5850 - 2.0000 2.3219» log(Y2)ans =

0.8047 + 1.107-li» loglO(Y2)ans =

0.3495 + 0.4808i

» log2(Y2)

ans =

1.1610 + 1.59731

» log(Y3)

ans =

1.6094 + 3.1416i

» logl0(Y3)

ans =

0.6990 + 1.3644i

» log2(Y3)

ans =

2.3219 + 4.5324i

• sqrt (x) — корень квадратный из х.

При этом аргумент х может быть числом, вектором или мат-рицей. Если х — вектор или матрица, то функция возвращаеткорень квадратный из каждого элемента вектора или матрицы.Если число отрицательное или комплексное, то результатомбудет комплексное число.

Page 98: MATLAB для студента

Вычисление математических функций 97

I Пример 5.4 |

Найти корень квадратный из следующих значений х:

x l = -7, х2 = [ 1 , 2, 3 + 4 . 5 i ] ,

хЗ = [ 1 , 3, 5; - 2 , i , 4; 7, 3, 1 ] .

Решение:

» xl = -7;» х2 = [1 2 3 + 4 . 5 i ] ;» хЗ = [1 3 5; -2 i 4; 7 3 1 ] ;» s q r t ( x l )ans =

0+2.6458i» s q r t ( x 2 )

ans =

1.0000 1.4142 2.0504+1.0973i» s q r t ( x 3 )

ans •

1.0000 1.7321 2.23610 + 1.4142i 0.7071 + 0 . 7 0 7 H 2.00002.6458 1.7321 1.0000

• mod (x, у) — результатом является остаток от деления х на у.

! Пример 5.5 !

Необходимо найти остаток от деления х на у, если

x l=5, y l=3; x2=-12, y2=7; x3=8+4i, уЗ=2.

Решение:

» zl=mod(xl,yl)ans =

2» z2=mod(x2,y2)ans =

2» z3=mod(x3,y3)ans -

Ответа нет

4 3ак. 1196

Page 99: MATLAB для студента

98 Глава 5

5.1.2. Тригонометрические функции

Тригонометрические функции sinx, cos л;, tgx, ctgx, sec л:,

cosec x представляются в MATLAB в следующем виде:

sin(x)c o s ( х )

t g ( x )

c o t ( z )

s e c (x)

e s c ( x )

Аргумент x может быть числом положительным и отрицатель-ным, вещественным и комплексным, вектором и матрицей.

Покажем процедуры вычисления тригонометрических функцийна примерах.

; Пример 5.6

» s i n ( [ l , 2 , 0 , p i / 2 ] )

arts =

0.8415 0.9093 0 1.0000

» cos([-0.6, pi/6, pi/2])

ans =

0.8253 0.8660 0.0000

» tan([2+3i, pi/2, 0])

ans =

1.06+16

-0.000.0 + O.OOOOi 1.6363 0

» cot([l, pi/2, 3, 4])

ans =

0.6421 0.0000 -7.0153 0/8637

» sec([l, 2, 2.5; -1, 3, 2.1; 0.5, 6, -2])

ans •

1.8508 -2.4030 -1.2482

1.8508 -1.0101 -1.9808

1.1395 1.0415 -2.4030

» csc([i, 0, -2, pi/4])

ans »

0 -0.8509i inf -1.0998 1.4142

Page 100: MATLAB для студента

Вычисление математических функций 99

5.1.3. Обратныетригонометрические функцииОбратные тригонометрические функции arcsinx, arccosx,

arctg x, arcctg x, arcsec x, arccosec x в системе MATLAB пред-

ставляются в следующем виде:

asin(x) atan(x) asec(x)acos(x) acot(x) acsc (x)

Аргумент x может быть числом положительным и отрицатель-ным, представлять собой вектор или матрицу. Если х — векторили матрица, то откликом будет также вектор или матрица, эле-ментами которых являются значения обратных тригонометриче-ских функций. Следует иметь в виду, что действительными зна-чениями х функций asin(x) и acos (x) являются числа из диапазо-на [-1; 1]. При этом значения asin(x) находятся и диапазоне

— ; — , a acos(x) в диапазоне [0;л]. Для случая деиствитель-L 2 2 Jных значений х, находящихся вне области [-1; 1], функцииasin(x) и acos (x) являются комплексными.Если х — комплексное число, то обратная тригонометрическаяфункция также будет числом комплексным.

Пример 5.7

» a s i n ( [ 1 , 0, -2, - 0 . 5 ] )

ans =

1.5708 0 1.5708 - 1.31701 -0.5236

» acos( [ 1 , 0, -2 , - 0 . 5 , i ] )

ans =

0 1.5708 3.1416 - 1.3170i 2.0944 1.5708 - 0.8814i

» a t a n ( [ l , 0, 2 , - 0 , 5 , i ] )

ans =

-0.7854 0 1.1071 -0.4 636 NAN + NANi

» a c o t ( [ - l , 0, 2, - 0 . 5 + i ] )

ans =

-0.7854 1.5708 0.4636 -1.1071 NAN + NANi

Page 101: MATLAB для студента

100 Глава 5

» asec([1, 0, 2, -0.5])

ans =

О 0 + infi 1.0472 3.1416-1.3170i

» acsc([l, 0, 2, -0.5,, i])

ans =

1.5708 NAN-infi 0.5236 -1.5708 + 1.3170i 0 - 0.8814i

5.1.4. Гиперболические функцииГиперболические функции sh x, ch x, th x, cth x, sch x, csch x

имеют вид:sinh(x)cosh(x)

tanh(x)coth(x)

sech(x)csch(x)

Они выражаются через экспоненциальные функции и имеют видследующих формул:

sh x =ex-e~x

ch x--

th x = •

cth x = •

и 2е'Хs c h * = 3 T " 7 '

e +1csch x =

2ех

Аргумент х может быть положительным и отрицательным, веще-ственным и комплексным числом, вектором и матрицей. Элемен-ты вектора и матрицы могут быть вещественными или комплекс-ными числами.

Page 102: MATLAB для студента

Вычисление математических функций 101

\ Пример 5.8

» s i n h ( [ О , 1, - 1 , 0 . 7 , 5 ] )

a n s =

О 1 .1752 - 1 . 1 7 5 2 0 . 7 5 8 6 7 4 . 2 0 3 2

» c o s h ( [ 0 , 1, - 1 , 2, 3 + 0 . 5 1 ] )

ans =

1.0000 1 . 5 4 3 1 1 . 5 4 3 1 3 . 7 6 2 2 8 . 8 3 5 2 + 4 . 8 0 2 8 i

» t a n h ( [ 0 , 1, - 1 , 0 . 7 , 5 ] )

ans =

О 0 . 7 6 1 6 - 0 . 7 6 1 6 0 . 6 0 4 4 0 . 9 9 9 9

» c o t h ( [ 0 , 1, - 1 , 2, 3 + 0 . 5 i ] )

ans = •

i n f 1 .3130 - 1 . 3 1 3 0 1 . 0 3 7 3 1.0027 - 0 . 0 0 4 2 i

» s e c h ( [ O , 1, - 1 , 0 . 7 , 5 ] )

a n s =

1.0000 0 . 6 4 8 1 0 . 6 4 8 1 0 . 7 9 6 7 0 . 0 1 3 5

» c s c h ( [ O , 1, - 1 , 2, 3 + 0 . 5 i ] )

ans =

i n f 0 . 8 5 0 9 - 0 . 8 5 0 9 0 . 2 7 5 7 0 . 0 8 7 4 - 0 . .0480i

5.1.5. Обратные гиперболические функцииОбратные гиперболические функции arsh*, arch*, arthx,

arcth x, arsch x, arcsch x представляются в системе MATLAB в

следующем виде:

asinh(x) atanh(x) asech(x)acosh(x) acoth(x) acsch(x)

Обратные гиперболические функции выражаются через лога-рифмические и гиперболические функции и имеют вид:

arsh х = In(v* 2 +1 + х I,

arch (x) = i a r o o o s (x),

a r t h (x) = - i a r c t a n ( ix ) ,

a r c t h (x) = - i a r c c o t (-ix),

Page 103: MATLAB для студента

102 Глава 5

a r s c h ( x ) = i a r c c o s ( 1 / x ) ,

Jx2 + 1 sh(x) + 1arcsch x = In .

x

Аргумент x может быть числом вещественным и комплексным,вектором и матрицей.

Если х представлен в виде вектора или матрицы, то результат вы-числений также представляется в виде вектора или матрицы.

Пример 5.9

» asinh( [0, 1, -3, 2+3i] )

arts =

О 0.8814 -1.8184 1.9686 + 0.9647i

» acosh([0, 1, -3, 2+3i])

ans =

0 + 1.5708i 0 1.7627 + 3.1416i 1.9834 + l.OOOli

» atanh([0, 1, -3, 2+3i] )

ans =

0 NaN + NaNi -0.3466 + 1.5708i 0.1469 + 1.3390i

» acoth([0, 1, -3, 2+3i])

ans =

0 + 1.5708i NaN + NaNi -0.3466 0.1469 - 0.2318i

» asech([0, 1, -3, 2+3i])

ans =

inf 0 0 + 1.9106i 0.2313 - 1.4204i

» acsc(([0, 1, -3, 2=3i])

ans =

NaN + NaNi 0.8814 -0.3275 0.1574 - 0.2300i

5.1.6. Функции комплексного аргументаПусть комплексное число представлено в виде:

z = a + Ы .

Основными функциями комплексного аргумента в MATLAB яв-ляются:abs(z) imaq(z) phase(z)real(z) . conj(z)

Page 104: MATLAB для студента

Вычисление математических функций 103

Функция abs (z) вычисляет модуль комплексного числа:

М = л/а2 + Ь2 .

Откликами функций reai(z) и imag(z) являются соответственновещественная и мнимая часть комплексного числа.

Функция conj (z) определяет комплексно-сопряженное число ар-гумента Z.

Функция phase (z) вычисляет фазу комплексного числа

aФ = arctg—.

b

Аргумент z может быть числом, вектором или матрицей. Если zявляется вектором или матрицей, то функция комплексного ар-гумента также выдает вектор или матрицу, элементы которой яв-ляются реализациями соответствующей функции.

I Пример 5.10 j•;,... _,.,.; • \ .....„., , ., ,.,,, „.,,„ i •„. £» abs([2, 3+2i, 5i, -1+i])

ans =

2 3.6056 5 1.4142

» real([-3+2i, 2-3i])

ans =

-3 2

» imaq([-3+2i, 2-3i])

ans =

2 -3

» conj([-3+2i, 2-3i])

ans =

-3.0000-2.OOOOi 2.0000+30000i

» phase([-3+2i, 2-3i])

ans =

2.5536 5.3004

Page 105: MATLAB для студента

104 Глава 5

5.2. Специальныематематические функцииСпециальные математические функции часто приходится исполь-зовать при решении широкого класса научных и практическихзадач. Это решение дифференциальных уравнений специальноговида, вычисление интегралов, задачи вероятностного характера имногое другое. Существует большое число специальных функ-ций. Их подробное описание приводится в книгах [9, 15, 16].В системе MATLAB реализованы не все функции. Из имеющихсямы ограничимся изучением только тех, которые наиболее частомогут использоваться студентами вузов. Технология вычисленияспециальных функций в системе MATLAB практически не отли-чается от технологии вычисления элементарных функций. Поль-зователь вводит имя функции и значения аргументов. Нажимаетклавишу <Enter> и получает значение специальной функции. Приэтом аргументом может быть число, вектор или матрица. Еслиаргументом является вектор или матрица, то откликом также бу-дет вектор или матрица того же размера. При этом функция вы-числяется для каждого элемента вектора или матрицы.

5.2.1. Гамма-функцияГамма-функция имеет много интегральных представлений. Вотодно из них:

Это представление справедливо при целом п. Гамма-функция вэтом случае отождествляется с факториалом целого числа, приэтом справедливыми являются следующие выражения:

Г{я + 1)=иГ(я),

Г(1) = Г(2) = 1,

Page 106: MATLAB для студента

Вычисление ма тема тических функций 105

Гамма-функция существует для случая п целого и дрюбного, по-ложительного и отрицательного, действительного и комплекс-ного.

Гамма-функция в MATLAB имеет представление для случаятолько действительного положительного п.

Синтаксис гамма-функции таков:

gamma (n) ,

где п —действительное положительное число.

i Пример 5.11

Необходимо вычислить гамма-функцию вектора [0,, 1, 2, б,-3, 4.2].

Решение:

» п=[0, 1, 2, 6, - 3 , 4.2])ans -

inf 1.0000 1.0000 120.0000 inf 7.7567

Из примера видно, что гамма-функцию чисел 0 и -3 программане вычисляет (в результате получается inf— бесконечность).Следует иметь в виду, что при вычислении факториала целогочисла

gamma(n)=(n-l)!

Если, например, необходимо вычислить 5!, то функция gamma()будет иметь ВИД: gamma (6).

Page 107: MATLAB для студента

106 Глава 5

В системе MATLAB гамма-функция имеет следующие два вари-анта:

gammainc(x, n)

gammaln(n)

Функция gammainc(x,n) вычисляет неполную гамма-функциюэлементов х, п.

Элементы х и п должны быть вещественными и положительными.

Функция gammaln(n) возвращает логарифм числа gamma (n).

Пример 5.12

» gammainc(3, 2)

ans =

0.8009

» gammaln([2, 3.5, 7.3, 15])

ans =

0 1.2010 7.1479 25.1912

» gammaln([2, 3; 7.3, 1; 4, 12.5])

ans =

0 0.6931

7.1479 0

1.7918 18.7343

5.2.2. Бета-функция(Эйлеров интеграл первого рода)Бета-функция представляется в виде следующего интеграла:

Она имеет большое число различных интегральных представле-ний. При практических расчетах наиболее часто бета-функциявычисляется через гамма-функции:

Page 108: MATLAB для студента

Вычисление математических функций 107

Система MATLAB имеет следующие варианты этой функции:

b e t a ( x , у)

b e t a i n c ( z , x, у)

b e t a l n ( x , у)

Функция beta (х, у) возвращает бета-функцию при положитель-ных значениях х, у.

Функция betainc(z,x,y) возвращает неполную бета-функциюдействительных аргументов х, у. Аргумент z должен быть в ин-тервале [0; 1].

Функция betaln(x,y) вычисляет натуральный логарифм бета-функции.

: • • • • • • • • • • • • • • " • • :

! Пример 5.13

» b e t a ( 2 , 4)

ans =

0.0500

» b e t a i n c ( 0 . 5 , 2, 4)

ans =

0.0125» b e t a l n ( 2 , 4)ans =

-2.9957

5.2.3. Функции ошибокСистема MATLAB имеет следующие варианты функций ошибок:

• erf (x) — функция ошибок, определяемая по выражению:

2erf(x)-— \e'2dt;

Page 109: MATLAB для студента

108 Глава 5

• erfc(x) — остаточная функция ошибок, определяемая выраже-нием:

erfc(x) = I -erf (x) = -т= \/dt;4%\

• erfcx (x) — масштабированная функция ошибок, вычисляемаяпо следующему выражению:

erfcx [х) = ех erfc(;c);

• erfinv(x) — вычисляет обратную функцию ошибок при усло-вии -1 < х < 1.

Аргумент х в функциях ошибок может быть числом, вектором иматрицей. Элементами вектора и матрицы являются действи-тельные числа (положительные и отрицательные).

Пример 5.14

Пусть функция х является вектором х=[2 -о.з 4.5 о.6]. Необ-ходимо определить все виды ошибок.

Решение и его результаты будут иметь вид:

» erf (х) .

ans =

0.9953 -0.3286 1.0000 0.6039

» erfc(x)

ans =

0.0047 1.3286 0.0000 0.3961

» erfcx(x)

ans =

. 0.2554 1.4537 0.1225 0.5678

» erfinv(x)

ans =

NaN -0.2725 NaN 0.5951

В последнем случае решения нет (NaN) для значений х=2 и х=4.5.Эти числа находятся вне диапазона допустимых значений.

Page 110: MATLAB для студента

Вычисление математических функций 109

5.2.4. Интегральнаяпоказательная функцияСуществует большое число интегральных показательных функ-ций. В MATLAB реализована только одна из них, котораяимеет вид:

В системе MATLAB эта функция представляется так:

expint(x)

где х — число, вектор или матрица, элементами которых могутбыть положительные и отрицательные, действительные и ком-плексные числа.

I Пример 5.15 |

» e x p i n t ( [ 1 , 2, - 3 , 6 .2, 2+31])

ans =

0.2194 0.0489 -9.9338-3.1416i 0.0003 0.0248 + 0.0203i

» e x p i n t ( [ 1 . 2 , 3; 2, 7 . 5 ; l - 2 i , 0.7])

ans =

0.1564 0.0130

0.0489 0.0001

-0.1268 + 0 . 0 3 5 И 0.3738

5.2.5. Функции ЭйриФункция Эйри является решением дифференциального уравне-ния второго порядка

Существуют два вида функции Эйри — первого и второго рода.

Page 111: MATLAB для студента

110 Глава 5

Функция первого рода Ai(x, «) при х = 0 имеет вид:

в противном случаеЛ I

С х З 6 -£>х3 6

Ai(x, «) = •2тг

где:

1

Функция второго рода

в противном случае

ВЦ

о {Зк)

- ( .Х£о (ЗА: +

Bi(jt,

х, п)-

?г) при х

34/3 х

СхЗ | / 34

!

О'

= 0

шК

Dx

имеет вид

1

2/3

5

где:

й (3*)!

Page 112: MATLAB для студента

Вычисление математических функций ///

В системе MATLAB функции Эйри представляются в следующемвиде:

• airy(z) — функция Эйри первого рода;

• airy (k, z) — функция Эйри второго рода.

Аргументы функции имеют значения:

• z — число, вектор или матрица, элементы которых являютсяположительными или отрицательными, действительными иликомплексными числами;

• к — определяет следующие варианты результатов:

• к=о выдает результат тот же, что и функция airy (z);

• k=i выдает производную функции Эйри первого рода;

• к=2 выдает функцию Эйри второго рода;

• к=з выдает производную функции Эйри второго рода.

В системе MATLAB функции Эйри вычисляются при одном фик-сированном значении суммы ряда п.

| Пример 5.16

» у=[0, 3.2, -3.2, 2+3i];

» airy(у)

ans =

0.3550 0.0046 0.4174 + O.OOOOi 0.0081 + 0.1312i

» airy(0,y)

ans =

0.3550 0.0046 0.4174 + O.OOOOi 0.0081 + 0.1312i

» airy(l,y)

ans =

-0.2500 -0.0085 0.0650 - O.OOOOi 0.0967 - 0.2320i

» airy(2,y)

ans =

0.6149 19.5870 -0.0539 - O.OOOOi -0.3964 - 0.5697i

» airy(3,y)

ans =

0.4483 33.2577 -0.7541 + O.OOOOi 0.3495 - 1.1053i

Page 113: MATLAB для студента

1 1 2 Г л а в а 5

5.2.6. Функции ЛежандраФункция Лежандра имеет вид:

где

1 сГ(хг-\)

р(х)=—'L2"и! dx"

Вычисление функции в системе MATLAB осуществляется с по-мощью встроенной функции, имеющей вид:

l e q e n d r e ( n , х ) ,

где:

• п — целое число, не превосходящее 256;

• х — аргумент, значение которого удовлетворяет условию-1 < х < 1 .

Функция возвращает массив чисел размерности п + \ для каждогоаргумента х.

Аргумент х может быть числом или вектором.

Пример 5.17;;

»

ans

»

ans

leqender(3,

=

-0.4375

-0.3248

5.6250

-9.7428

leqender(3,

0.4375

-0.3248

-5.6250

0.5)

[-0.5, 0.2,

-0.2800

1.1758

2.8800

0.1])

-0.1475

1.4179

1.4850

-9.7428 -14.1091 -14.7756

Page 114: MATLAB для студента

Вычисление математических функций 113

5.2.7. Функции БесселяФункции Бесселя являются решением следующего дифференци-ального уравнения:

7г d2y(z) ,

где L — неотрицательное значение постоянной.

Функции JL (JC) и J, (z) образуют множество решений диффе-

ренциального уравнения. Эти решения имеют вид:

• функция Бесселя первого рода

! 4У - on Л I

£ \

2) i

где F(Z + k + \) —гамма-функция;

• функция Бесселя второго рода

JL(z)cos(Ln)-J(^

sin (Ln)

• функции Бесселя третьего рода можно вычислить, используяфункции первого и второго рода:

В системе MATLAB функции Бесселя определяются с помощьюследующих встроенных функций:

• bessei j (n, z) — определяет функцию Бесселя первого рода;

• bessely (n, z) — определяет функцию Бесселя второго рода.

В выражениях z — массив чисел, которые могут быть вещест-венными и комплексными, п —- порядок массива, является чис-лом вещественным и положительным.

Page 115: MATLAB для студента

114 Глава 5

Решение выдается для каждого элемента массива г.

Если z положительно, то результат будет вещественным.

Пример 5.18

» А=[2, 1,5];

>> В-Ц-21, 3,5] ;

» besselj(А,В)

ans =

-0.2611 - 0.7623i 0.3391 0.2611

» bessely(A,В)

ans =

-0.7512 0.1240i 0.3247 -0.4537

Существуют другие функции Бесселя и их модификации. С нимиможно познакомиться в книгах [9, 15, 16].

5.3. Функции пользователяРешение практических задач, как правило, связано с вычисле-ниями по одним и тем же алгоритмам при различных исходныхданных. В таких ситуациях полезно иметь в памяти компьютерафункции пользователя, обращаясь к которым получать решение,подобно тому, как мы обращаемся к элементарным или специ-альным функциям. Создание функции пользователя осуществля-ется так, как описано ниже.

1. Вызов окна редактора m-файлов путем нажатия кнопки NewM-File (Создать m-файл).

2. Ввод строки

f u n c t i o n Z = ехрхр(х)

Ключевое слово function объявляет новую функцию, имя ко-торой ехрхр, а ее параметр — х. Символ z определяет значениефункции при аргументе х. На экране образуется введенное вы-ражение.

3. Задание новой функции (функции пользователя). ПустьZ = ехр(х)/х

Page 116: MATLAB для студента

Вычисление математических функций 115

Наберем это выражение на клавиатуре. Оно отобразится наэкране окна редактора т-файлов.

4. Сохранение функции пользователя осуществляется нажатиемкнопки Save (Сохранить) на панели инструментов.В результате появится новое окно. В поле File name (Имяфайла) отобразится имя созданной функции ехрхр. Для сохра-нения функции на диске достаточно щелкнуть мышью покнопке Save (Сохранить).

5. Закрытие окна редактора т-файлов.

Функция пользователя z=exp(x) /x создана.

Для вычисления функции при данном аргументе х достаточнонабрать имя функции и значение аргумента в круглых скобках:z=expxp(i). На экране получим значение функции z=exp(i)/i.

Система MATLAB имеет ряд функций, не относящихся к элемен-тарным, специальным и функциям пользователя. К ним принад-лежат функции поразрядной обработки, обработки множеств,времени и даты. Они достаточно подробно описаны в [9].

Page 117: MATLAB для студента

X

ГЛАВА 6

Алгебравекторов и матриц

6.1. Создание векторов и матрицВектор или матрица состоят из имени и элементов, заключенныхв квадратные скобки. Элементы вектора отделяются запятымиили пробелами. Элементами вектора могут быть числа положи-тельные и отрицательные, действительные и комплексные.

Пример 6.1

» V = [ l , 2 , - 3 , - 7 , 1 2 ]

» V=[3 2+3i l - 2 i -5]

Для вывода вектора на экран нажимается клавиша <Enter>. От-кликом будут элементы вектора без квадратных скобок, отделен-ные друг от друга пробелами. Для нашего примера они будутиметь вид:

-з 12

3.0000 2.0000 + 3.0000i 1.0000 - 2.0000i -5.0000

Элементами матрицы, так же как вектора, могут быть числа по-ложительные и отрицательные, действительные и комплексные.В строках матрицы они отделяются запятыми или пробелами, астроки отделяются точкой с запятой (,-).

Page 118: MATLAB для студента

Алгебра векторов и матриц 117

\ Пример 6.2

» М=[1 - 2 3 ; 2 3 - 4 ; - 3 4 5]

После нажатия клавиши <Enter> на'экране появится следующаяматрица:

м -

12

-3

-234

3-4

5

» M=[7-2

А теперь матрица выглядит так:

м -7.0000 - 2.0000i1.0000l.OOOOi

1.2,2

,0000 +.0000.0000

l.OOOOi 127

— 1

.0000

.0000

.00001

Если элементы вектора или матрицы являются числами, отли-чающимися друг от друга на постоянный шаг, то вектор или мат-рицу можно образовать проще.

: • • " V " •• ,.j Пример 6.3

V = [ l : 4 ]

v =

1 2 3 4

М = [ 1 : 3 ; 2 : 4 ; 7 : 9 ]

М =

1 2 32 3 47 8 9

Здесь решение получено для случая постоянного шага, равного 1.

При постоянном шаге, отличном от единицы, процедуры образо-вания вектора и матрицы и отклики имеют вид:

Page 119: MATLAB для студента

118

» V = [ l : 0 . 2 : 2 ]V =

1.0000 1.2000 1.4000 1.» M = [ 1 : 0 . 2 : 1 . 8 ; 2 : 0 . 4 : 3 . 6 ; 1:5]

V =

1.0000 1.2000 1.4000 1.

2.0000 2.4000 2.8000 3.

1.0000 2.0000 3.0000 4.

6.2. ПреобразованиеСистема MATLAB позволяет:

6000

600020000000

1,

135

,8000

.8000

.6000

.0000

матриц

Глава 6

2.0000

• заменить элементы вектора или матрицы без их редактиро-вания;

• изменить размер вектора или матрицы;

• преобразовать матрицу в иной вид;

• образовать матрицу специального вида.

6.2.1. Вызов на экрани замена элементов матрицыДля вызова на экран элементов вектора или матрицы достаточноуказать их имя и координаты в круглых скобках (номер строки иномер столбца вектора).

\ Пример 6.4

» V=[l 2 3 7 12];» V(4)V =

7>> №-[1,3,7; 2 6 12; -4 8 3 ] ;» M(l,3)М =

Для замены элемента необходимо указать имя элемента или мат-рицы, его координаты и присвоить этому имени новое значение

Page 120: MATLAB для студента

Алгебра векторов и матриц 119

элемента. После нажатия клавиши <Enter> на экране будет ото-бражен вектор или матрица с новым значением элемента.

I Пример 6.5 !i .. i ........iПусть вектор и матрица— те же, что и в предыдущем примере.Заменим третий элемент вектора (со значением з) на 12, а эле-мент матрицы, находящийся во второй строке и третьем столбце(со значением 12), — на -7.

Решение:

» V(3) = 12v(3) =

1 2 12 7 12» М ( 2 , 3 ) = -7

М =

1 3 7

2 6 - 7

6.2.2. Изменение размера вектораили матрицыИзменение размера вектора проще всего осуществить путем егоредактирования. Изменение размера матрицы легче выполнитьпосредством удаления или добавления строк и столбцов мат-рицы.

Удаление строки или столбца осуществляется с помощью знакадвоеточия (.-), который ставится в круглых скобках после имениматрицы:

• м (:, п) — удалить строку п;

• м (т,:) — удалить столбец т.

\ Пример 6.6

Пусть матрица имеет вид:

м =1

Page 121: MATLAB для студента

120 Глава 6

2 7 43 12 -7

Необходимо удалить вторую строку и третий столбец.

Решение будет иметь вид:

» М ( : , 2 )

м

»м

=13

М(3,

=

1

3

2

12

:)

2

12

3

-7

Увеличить размер матрицы можно посредством объединения ма-лых матриц в большую. Эта процедура называется конкатенаци-ей. Она осуществляется путем образования матрицы из имен ма-лых матриц. При этом допускаются алгебраические операции надименами. Рассмотрим эти методы на примерах.

| Пример 6.7

Пусть имеется три следующих вектора:

Vl=[l 2 3],V2=[3 -2 1],V3=[7 6 2].

Образуем матрицу из этих векторов. Векторы следует рассматри-вать как элементы матрицы. Тогда получим:

» M=[V1; V2; V3]

На экране матрица из векторов vi, v2, v3:

м =1 2 33 - 2 17 6 2

Выполним теперь операцию конкатенации. Создадим из полу-ченной матрицы матрицу размером 6x6. Для этого образуем триновых матрицы: м+з, м-5 и м*2.

Page 122: MATLAB для студента

Алгебра векторов и матриц 121

Процедуры имеют

» Z=[M,z -

137

-4-2

2

М+3;

2

-2

6

-3

-7

1

: М-5,

31

2

-2

-4

-3

вид:

М*2]

4

6

10

2

6

14

51

9

4

-4

12

6

4

5

6

2

4

6.2.3. Математические операциис векторами и матрицами

Определитель матрицы

Определитель матрицы вычисляется с помощью функции

det{M)

где м — матрица, элементами которой могут быть вещественныеи комплексные числа.

Г " "•••-•••••; • : - - • : •••- • • • - • • ••••" ;

| Пример 6.8 |

» М=[2 3 - 1 ; 1 -6 2;1 3 5 ] ;

» det(M)

ans =

-90

» M=[l+2i, 3, - 2 . 5 ; i , - 1 , 5; 3, 5, 0 ] ;

» det(M)

ans =

12.5000 - 62.5000i

Рассмотрим функции системы MATLAB, позволяющие преобра-зовать векторы и матрицы, создавать новые матрицы, выполнятьматематические операции над элементами векторов и матриц.При практических расчетах такие действия бывают необходимы,если расчеты сводятся к матричным операциям.

Page 123: MATLAB для студента

122 Глава 6

Транспонирование матрицыТранспонированной называется матрица, у которой строки сталистолбцами, а столбцы строками исходной матрицы.

Транспонирование осуществляется следующим представлениемисходной матрицы: м', где м — исходная матрица.

! Пример 6.9

Пусть исходная матрица имеет вид:

"2 7

3 - 4 2

5 1 -5

Получим транспонированную матрицу:

» М=[1 2 7 ; 3 -4 2 ; 5 1 - 5 ] ;

» Z=M'

Z =

1 3 5

2 - 4 1

7 2 - 5

След матрицыСледом матрицы называется сумма ее диагональных элементов.Вычисляется с помощью функции trace о, которая имеет вид:

trace(M)

где м — матрица.

\ Пример 6.10 I• . . ; ; •

Пусть матрица имеет вид: м=[2 б - 1 ; 2 4 8; 1 -2 3].

Ее диагональными элементами являются 2, 4, 3, а их сумма рав-на 9.

Page 124: MATLAB для студента

Алгебра векторов и матриц 123

Решение имеет вид:

» М = [ 2 , 6 , - 1 ; 2 , 4 , 8 ; 1 , - 2 , 3] ;

» Z=trace(M)

Z =

9

Обратная матрицаОбратной называется матрица, полученная в результате деленияединичной матрицы Е на исходную:

Получают обратную матрицу с помощью функции invO, имею-щей вид:

inv(M)

где м — исходная квадратичная матрица.

| Пример 6.11

» М=[1, - 1 , 3 ; 2, 11, 7; - 3 , 5, 4 ] ;

» Z=inv(M)

Z =0.0539 0.1138 -0.2395

-0.1737 0.0778 -0.0060

0.2575 -0.0120 0.0778

Единичная матрицаФункциями создания единичной матрицы являются:

• eye (n) — определяет единичную матрицу размером пхп;

• eye(m,n)— определяет единичную матрицу размером mxn

с единицами в диагонали и с нулями в остальных элементахматрицы;

• eye (size (м)) — определяет единичную матрицу с тем же раз-мером, что и матрица м.

Page 125: MATLAB для студента

124 Глава 6

! Пример 6.12 I

» М=еуеМ =

1

0

0

» М=еуе

М =

1

0

0

» М=[1

(3)

0

1

0

( 3 , 4 )

0

1

0

1 2 3

» Z = e y e ( s i z e

Z =

1

0

0

0

0

1

0

0

0

0

1

0

0

1

; 2,

(ММ

0

01

0

0

0

0

2, - 3 ,

0

0

0

1

О, 1, 3 , 0 ; 1, 2, 3, 4 ] ;

Образование матрицыс единичными элементамиМатрица с единичными элементами реализуется следующимифункциями:

• ones (n) — образует матрицу размером пхп, все элементы ко-торой равны единице:

• ones (m, n) — образует единичную матрицу размером mxn;

• ones (size (м)) — образует единичную матрицу такого же раз-мера, как и матрица м.

| Пример 6.13

» M=ones(3)

М =

1 1 1

1 1 1

1 1 1

Page 126: MATLAB для студента

Алгебра векторов и матриц 125

» M=ones(3,4)м =

1 1 1 1

1 1 1 1

1 1 1 1

» М=[3, 2, 1, 7; 6, 1, - 2 , 4 ] ;

» Z= o n e s ( s i z e ( M ) )

Z =

1 1 1 1

1 1 1 1

Образование матрицы с нулевыми элементамиМатрицы с нулевыми элементами формируются следующимифункциями:

• zeros (n) — создает матрицу размером пхп с нулевыми элемен-тами;

• zeros (m,n)— образует матрицу размером mxn с нулевымиэлементами;

• zeros (size (M)) — возвращает матрицу с нулевыми элемента-ми того же размера, что и матрица м.

I Пример 6.14 |: У, ............... , , . I

» M = z e r o s ( 3 )

М -

0 0 0

0 0 0

0 0 0

» M = z e r o s ( 3 , 4 )

М =

0 0 0 0

0 0 0 0

0 0 0 0

» М=[1, 2 , 3 ; 2, 3 , 4 ; 3 , 4, 5] ;

» M = z e r o s ( s i z e ( M ) )

М -

0 0 0

0 0 0

0 0 0

Page 127: MATLAB для студента

126 Глава 6

Вектор равноотстоящих точекВектор равноотстоящих точек формирует массив точек в диапа-

зоне [а; Ъ\. Реализуется следующими функциями:

• linspace (a,b) — создает массив из 100 точек, распределенных

равномерно в диапазоне [a; b\;

• linspace (a,b,n) — создает массив из п точек, равномерно рас-

пределенных в диапазоне [а; Ь].

I Пример 6.15

» R = l i n s p a c e ( l , 2 )

R =

1.0000 1.0101 1.0202 1.9899 2.0000

» R=linspace(l,10,5)

R =

1.0000 3.2500 5.5000 7.7500 10.0000

Перестановка элементов матрицыПерестановка столбцов и строк матрицы осуществляется с по-мощью следующих функций:

• fl ipir (M) — осуществляет перестановку столбцов матрицы мотносительно вертикальной оси;

• f lipud (M) — осуществляет перестановку строк матрицы отно-сительно горизонтальной оси.

Пример 6.16

» М = [ 1 , 2, 3 , 4 ; 3 , 1, 4, 2]М = '

1 2 3 4

3 1 4 2» Z = f l i p i r ( M )

Z =

4 3 2 12 4 1 3

Page 128: MATLAB для студента

Алгебра векторов и матриц 127_

» W=flipud(M)

W =3 1 4 21 2 3 4

В MATLAB имеется также функция перестановки элементов, ко-торая из вектора v, состоящего из п элементов, образует матрицу,состоящую из п! столбцов, т. е. число строк соответствует всемперестановкам элементов вектора V. Функция имеет вид:

perms(V)

где v — вектор, состоящий из п элементов.

! Пример 6.17•. , . !

» V = [ 2 , l , 7 ] ;

» P = p e r m s ( V )

Р =

7 1 2

7 2 1

1 7 2

1 2 7

2 1 7

2 7 1

Создание матрицы с заданной диагональюСистема MATLAB имеет функции, позволяющие из элементоввектора v создавать матрицу с заданной диагональю.

Такими функциями являются:

• M=diaq (v, к) — образует матрицу м, в одной из диагоналей ко-торой находятся элементы вектора v. При к = 0 элементы век-тора находятся в главной диагонали, при к > 0 — в к-й верхнейдиагонали, при к < 0 — в к-й нижней диагонали. Остальныеэлементы квадратной матрицы м являются нулями;

• M=diaq(V) — образуется квадратная матрица, в которой наглавной диагонали стоят элементы вектора v;

• v=diaq(M,K) — образует вектор-столбец v из к-й диагоналиматрицы м;

Page 129: MATLAB для студента

128 Глава 6

• v=diaq(M) — возвращает главную диагональ матрицы м в видевектора v.

• : •-•••

\ Пример 6.18

V=[l, 0, 2, - 7 ] ;

M=diaq(V,0)

M =0 0 0

0 0 0 0

Z =

0 00 0

Z=diaq(V,

0 0

0 01 0

0 0

0 0

0 0

V=diaq(M,

1

0

2-7

20

-2)

0

0

0

0

2

0

0)

0-7

0

0

0

0

0

-7

0

0

0

0

0

0

0

0

0

0

0

M = [ l , 2 , - 3 , 5 ; - 2 , б, 4, 7 ; 1, 0, 4, - 2 ] ;

V = d i a q ( M , 1 )

2

4

—2

V=diaq(M)

Page 130: MATLAB для студента

Алгебра векторов и матриц 129

Создание массивов со случайными элементамиГенерирование случайных чисел в системе MATLAB осуществ-ляется с помощью функции, которая создает случайные числа,равномерно распределенные на интервале [0; 1]. Функция имеетследующие варианты:

• rand (n) — создает матрицу случайных чисел размером

• rand(m,n) — создает матрицу случайных чисел размером

• rand(m,n,p,...) — формирует массив случайных чисел с нор-мальным законом распределения;

• rand (size (А)) — генерирует массив случайных чисел разме-ра А;

• rand— генерирует единственное случайное число, распреде-ленное по равномерному закону, нажимая многократно кла-виши <t> (стек функции rando) и <Enter>, получим множест-во случайных чисел из диапазона [0; 1], распределенных поравномерному закону;

• rand с state ') — генерирует вектор случайных чисел, состоя-щий из 35 значений, с равномерным законом распределения.

Состояние генератора случайных чисел можно менять. Для этогосуществуют следующие варианты функции:

• rand с s ta te ' , о) — генератор устанавливается в исходное на-чальное состояние;

• rand с state *,s) — генератор устанавливается в некоторое со-стояние S.

Пример 6.19

» Z=rand(4)Z =

0.4449

0.6946

0.6213

0.7948

» M=[l, 2, :

0 . 9 5 6 8

0 . 5 2 2 6

0 . 8 8 0 1

0 . 1 7 3 0

3; 2 , 4 ,

» Z=rand(size(M))

5 3ак. 1196

0 . 9 7 9 7

0 . 2 7 1 4

0 . 2 5 2 3

0 . 8 7 5 7

1 ] ;

0 . 7 3 7 3

0 . 1 3 6 5

0 . 0 1 1 8

0 . 8 9 2 9

Page 131: MATLAB для студента

130 Глава 6

z =0.6614 0.4692 0.9883

0.2844 0.0648 0.5828

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

Программа будет иметь следующий вид:

» X=rand(800, 1);» Y=rand(800, 1);» plot(X, Y, ' . ' )

График показан на рис. 6.1.

File Edit View Insert Toolsо ss в в . с» ;®.<a>

0.9

0.8

0.7

0.6

•0.50.4

0.3

0.2

0.1

' ' ': '.

* »•"• • • *•-» * * • *••

- . ' , • ; . " , •

0 0.1 0.2

D e s k t o p

f ®

v "

*

• /

1 i . :

0 . 3

W i n d o w H e l p

«:: D Ш

.•. ** ••

«. •

• • • • * * • * :

0 . 4 0 . 5

н а

'• ' •:;---.*V \% • "

. '., ** .- ... *•*''." ."-.•' ' ».*.

. . c . . % • • . • * • • • ' . -

. / ' : V . } • " . \ : ' :

I t •• * ' • • ' • • •

0 , 6 0 . 7 0 . B 0 . 9 1

Рис. 6.1. Точки со случайными значениями координат х и у,распределенными по равномерному закону

Система MATLAB имеет датчик случайных чисел с нормальнымзаконом распределения, с математическим ожиданием, равным

Page 132: MATLAB для студента

Алгебра векторов и матриц 13j_

нулю, и среднеквадратическим отклонением, равным 1. Генери-рование случайных чисел осуществляется с помощью следующихфункций:

• randn — генерирует одно случайное число, нажимая последо-вательно клавиши <Т> и <Enter>, можно получить семействослучайных чисел;

• randn (n) — матрица случайных чисел размером пхп;

• randn (m,n) — матрица случайных чисел размером mxn;

• randnfm,n,p...)— массив случайных чисел с нормальнымзаконом распределения;

• randn (size (В)) — генерирует случайные числа размером в; вможет быть вектором или матрицей;

• randn('state') — возвращает вектор с двумя элементами приданном состоянии генератора случайных чисел;

• randn('state',о) — возвращает генератор в начальное (нуле-вое) состояние;

• randn (' s ta te ' , s) — устанавливает состояние генератора s.

| Пример 6.20

» Z=randn(2,Z =

0.78530.4353

3)

0.0.

71049508

0.0.

70731.381

Система позволяет по данным датчика случайных чисел постро-ить график— гистограмму нормального распределения случай-ных чисел.

Программа имеет следующий вид:» Y=randn(n,l);» hist(y,m)

где n — количество случайных чисел, m— число интерваловв диапазоне случайных чисел.

Page 133: MATLAB для студента

132 Глава 6

Пример 6.21

Построить гистограмму случайных чисел при п = 20000 иm = 100.

В этом случае программа будет иметь вид:

» Y=randn(20000,1);» hist(Y,100)

Ответ представлен на рис. 6.2.

Fife Ed* View [nsert Tools Desktop Window HelpD :св>:Н S ; k : ®- Q <"/ ® ! ч? • • Ш и D

BOO

500

400

300

200

100

-5 -A'

I

- J i l l3 - 2

I k

-

-

-

• -

-

-

3 1 2 3 4

Рис. 6.2. График нормального закона распределения случайных чисел

Поворот матрицы

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

Поворот матрицы осуществляет функция rot (), имеющая вид:

rot90(M, К)

Page 134: MATLAB для студента

Алгебра векторов и матриц 133

где:

• м — матрица;

• к — число, указывающее на величину поворота матрицы вградусах, кратных 90°.

Если к = 1, то поворот осуществляется на 90°, при к = 2 — на 180°и т. д.

Поворот выполняется против часовой стрелки.

При к = 1 функция имеет вид:

rot90(M)

Пример 6.22

» М=[1, 2, 3 ; 2, 3 , 4 ; 3, 4, 5] ;

» Z = r o t 9 0 ( M , 2 )

Z -

5 4 3

4 3 2

3 2 1

Выделение треугольных частей матрицыВыделение треугольных частей матрицы выполняется с помощьюследующих функций:

• t r i l (м) — создает нижнюю треугольную часть матрицы,остальные элементы являются нулями;

• t r i i (м, к ) — создает нижнюю часть диагонали, начинаяс к-й;

• triu(M) — создает верхнюю часть матрицы м;

• triu(M,K) — создает верхнюю часть матрицы м, начинаяс к-й диагонали.

Пример 6.23

» М=[1, 4, 3 ; 7, 2 , 2 ; 6, 1, 5]

М =

1 4 3

Page 135: MATLAB для студента

134 Глава 6

z =

z =

76

Z-tr i l

1

7

6

z - t r i l

00

0

21

(M)

0

2

1

(M,

4

0

0

25

0

0

5

1)

32

0

Вычисление магического квадрата

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

Матрица, называемая магическим квадратом, представляет со-бой квадратную матрицу размером nxn(n>3), у которой суммастрок, столбцов и главных диагоналей является одной и той жевеличиной.

Функция имеет вид:i

magic(n)

где п — размер квадратной матрицы.

Пример 6.24

M=magic(3)

М =

8 1 63 5 74 9 2

Page 136: MATLAB для студента

Алгебра векторов и матриц 135

6.3. Математические операциинад векторами и матрицамиНад векторами и матрицами можно выполнять практически всете операции, что и над числами: сложение и вычитание, умноже-ние и деление, вычисление элементарных функций, таких каквозведение в степень, извлечение квадратного корня, вычислениелогарифма, вычисление тригонометрических функций. При этомматричными операторами являются почти все арифметическиеоператоры (табл. 6.1).

Таблица 6.1. Таблица матричных операторов MATLAB

Функция

plus

minus

times

mtimes

mpower

power

mzdivide

mldivide

rdivide

ldivide

Название

Плюс (сложение матриц)

Минус (вычитание матриц)

Почленное умножениемассивов чисел

Матричное умножение

Возведение матрицы в степень

Почленное возведениеэлементов матрицы в степень

Деление матриц слева направо

Обратное деление матриц

Почленное деление элементовматрицы слева направо

Почленное деление элементовматрицы справа налево

Оператор

+

-

Л

/

\

. /

Л

Синтаксис

М1+М2

М1-М2

Ml.*М2

М1*М2

М1ЛХ

М1.АХ

М1/М2

М1\М2

Ml./М2

Ml.\М2

Приведем примеры выполнения матричных операций.

Page 137: MATLAB для студента

136 Глава 6

Даны следующие матрицы:

М =

Воспользуемся матричными функциями, приведенными в табл. 6.1,и выполним операции, соответствующие этим функциям:

1

2

2

2

3

1

5

1

4

, N =

2

1

3

0

5

3

3

4

1

plus(M,N) =

3

3

5

-

mtimes(M, N) =

mpower(M, 2) =

mrdivide(M, N) =

mldivide(M, N) =

-

rdivide(M,N) =

2

8

4

19

10

17

"15

10

12

r

8

5

5

25

18

17

13

14

11

0.9

-0.14

r

1.02

16"

19

14

27"

17

27_

0.7

0.18

0.26

0.9524 2.

-0.4286 0.

0.5

2

0.3810 -0

0.6667

inf

0.6

0.3333

minus(M, N) =

times(M,N) =

power (M, 2) =

-0.5"

0.7

-0.1

5714 -0.3810"

1429 1.5714

5714 0.0476

1.667'

0.25

4

-1

1

-1

~2

2

6

"l

4

4

2

-2

-2

0

15

3

4

9

1

2

-3

3

15"

4

4

25'

1

16

Page 138: MATLAB для студента

Алгебра векторов и матриц 137

l d i v i d e ( M , N ) = 0.5

1.5

О

1.6667

3

0.6

4

0.25

Все эти действия будут успешно выполнены, если вместо функ-ций воспользоваться соответствующими операторами.

Пример 6.25

»»

м.

М=[1 2N=[2 0

*N =

2 =

"2

2

6

15

10

12

5; 23 ; 1

0

15

3

13

14

11

3 ].; 2 1 4 ]5 4 ; 3 3 1]

1 5 '

4

4

2 7 "

17

2 7

Аналогичные операции выполняются над векторами. Покажемэто на примере.

Г"""" ' ••""!•••••••••-•>•;•.; vv,...-.-.......-.-:..;..--~."..-.. •;,-. ...........3i Пример 6.26 \

Пусть даны два вектора:

» Vl=[l, 2, 4, 7];» V2=[-2, 3, 1, 5]

Процедуры вычислений и результаты будут иметь вид:

» V1+V2

[-1 5 5 12]Vl-V2=[3 - 1 3 2]Vl.*V2=[-2 6 4 35]У 1 . Л 2 = [ 1 4 16 49]

Page 139: MATLAB для студента

138 Глава 6

V1/V2=1.1O2 6

Vl\ V2 =

- 0 . 2 8 5 7 0.4286 0.1429 0 .7143

VI./V2=[-0.5000 0.6667 4.0000 1.4000]

VI.\V2=[-2.0000 1.5000 0.2500 0.7143]

6.3.1. Примеры образования функцийот векторов и матриц

Приведем примеры образования элементарных функций \пх, е'\sinx из вектора и матрицы.

| Пример 6.27

Пусть вектор N имеет вид: N- [1 з 5 7 9 ].

Образуем функции In N, eN, sin N.

Решение будет иметь вид:

» N=[1, 3, 5, 7, 91;» Z=log(N)

0 1.0986 1.6094 1.9459 2.1972» Z=exp(N)Z =

1 . 0 е + 003

0.0027 0.0201 0.1484 1.0966 8.1031

» Z=sin(N)

Z =

0.8415 0.1411 -0.9589 0.6570 0.4121

| Пример 6.28

Пусть матрица имеет вид: к=[1, 2, 7; 3, -2, 6].

Необходимо вычислить функции: In К , е"к , ек + 2К + К 2 .

Page 140: MATLAB для студента

Алгебра векторов и матриц 139

Процедуры ввода и результаты вычисления имеют вид:

» К=[1, 2, 7; 3, -2, 6];

» Z=log(K)

Z =

О

1.0986

Z=exp(-K)

0.3679

0.0498

0.6931

0.6931

0.1353

7.3891

Z -

Z=exp(K)+2*K+K.A2

1.0е + 003

0.0057 0.0154

0.0351 0.0001

3.1416i

0.0009

0.0025

1.1596

0.4514

1.19459

1.7918

Page 141: MATLAB для студента

ГЛАВА 7

Визуализация вычислений

Система MATLAB имеет богатые возможности графическогопредставления информации. Она позволяет строить двухмерныеи трехмерные графики функций, заданных в аналитическом виде,в виде векторов и матриц; дает возможность построения множе-ства функций на одном графике; позволяет представлять графикиразными цветами, типами точек и линий и в различных системахкоординат.

Система способна строить диаграммы, гистограммы и графикиспециальных функций.

Мы ограничимся рассмотрением лишь двухмерной и трехмернойграфики универсальных математических функций.

Более детально с графической системой MATLAB можно озна-комиться по литературным источникам, например, [9].

7.1. Двухмерная графикаОсновными функциями двухмерной графики являются:

p l o t ( x , у)

p l o t ( x , у, s)

p l o t ( x l , y l , s i , x2, y2, s2, . . . , xn, yn, sn)

Page 142: MATLAB для студента

Визуализация вычислений 141

где:

• х — аргумент функции, задаваемой в виде вектора;

• у — функция, представленная в аналитическом виде или в ви-де вектора илц матрицы;

• s — вектор стилей графика; константа, определяющая цветлиний графика, тип точек и тип линии;

• xi, х2,..., хп — аргументы п функций, изображаемых на одномграфике;

• yi, у2, ..., уп — функции, изображаемые на одном графике.

Рассмотрим более подробно функции двухмерной графики иприведем примеры.

7.1.1. Функция plot(x,y)Функция позволяет строить график при задании функции

У = /(х) в аналитическом виде, в виде вектора или матрицы.

В математических расчетах находит широкое применение. Наи-более часто используется в следующих случаях:

• выбор области изоляции корня уравнения / ( л ) = 0;

• определение координат особых точек функции (максимумов,минимумов, точек перегиба, разрывов непрерывностей);

• проверка достоверности выбора функции интерполяции;

• качественная оценка точности представления функции сте-пенным рядом.

i Пример 7.1 !I.;Дана функция

у = Зх-9х + 6.

Определить область изоляции корня уравнения

3*-9х + 6 = 0

и другие особые точки функции.

Page 143: MATLAB для студента

142 Глава 7

Решение:

» х = 0 : 0 .1 : 3 .5 ;

» у = 3. л х - 9 . х + 6;

» p l o t (x,y)

График функции приведен на рис. 7.1. Из рисунка видно, чтофункция имеет два корня и минимум. При этом областями изоля-ции корней может быть: 0.5 < xi < 1.5, 2 < х2 < 3. Минимумфункции расположен в области 1.5 < х < 2.5.

Теперь можно искать корни уравнения и минимум функции.

File Ed» View Insert Tools PesWtop Window Help

0 0.5 1 1.5. 2 2.5

Рис. 7.1. График функции у = ¥ -9х + 6

7.1.2. Функция plot (x,y,s)Функция аналогична функции plot (x, у) и отличается лишь нали-чием вектора констант з, определяющего цвет линий графика,тип точек и линий функции, т. е. стиль графика. Стиль графика sможно не задавать.

Page 144: MATLAB для студента

Визуализация вычислений 143

В табл. 7.1 приведены стили графиков системы MATLAB.

Таблица 7.1. Стили графиков

Тип точки

о

X

+*SDV,Л, < , >

р

н

Точка

Окружность

Крест

Плюс

Звездочка

Квадрат

Ромб

Треугольник вверх,вниз, влево, вправо

Пятиугольник

Шестиугольник

Цвет линии

Y

М

С

R

G

В

W

К

Желтый

Фиолетовый

Голубой

Красный

Зеленый

Синий

Белый

Черный

Тип линии

-

- .

- -

Сплошная

Двойнойпунктир

Штрих-пунктир

Штриховая

При задании стиля символ s представляется в виде вектора, эле-ментами которого являются: тип точки, цвет линии и тип линии,разделенные запятыми и выделенные одиночными кавычками.Например:

p l o t ( x , у, ' [ 'R' , • . ' , ' - . ' ] )

Это график красного цвета (R), ТОЧКИ графика в виде звездочек(*), линии штрихпунктирные (-.).

На рис. 7.2 показан график функции у = 3х - 9х + 6, выполненный

в этом стиле.

! Пример 7.2

Астроном Хаббл обнаружил, что галактики удаляются от Землитем быстрее, чем дальше они от нее расположены. Данные опытаХаббла приведены в табл. 7.2.

Page 145: MATLAB для студента

144 Глава 7

exFileD

ШШ

V

25

20

15

10

5

0

иипдикsw Insert Tools

- " * • +

' • " • *

0 . 5

Е 1 Ш ШDesktop Window

1 1.5

• • '

H e l o

p i • - •

* -

i

, * '

• * -

*

2 Z 5 3

i

-

-

3 5

Рис. 7.2. График функции в стиле s

Название галактики

Дева

Пегас

Персей

Волосы Вероники

Большая медведица 1

Лев

Северная корона

Близнецы

Волопас

Большая медведица 2

Гидра

Таблица 7.2. Данные расширения

R

22

68

108

137

255

315

390

405

685

700

1100

Вселенной

V

7,5

24

32

47

93

120

134

144

245

260

380

Page 146: MATLAB для студента

Визуализация вычислений 145

В таблице обозначены:

• R — расстояние галактики от Земли, миллионов световых лет;

• V— скорость удаления галактики, сотни миль в секунду.

Необходимо выбрать вид функции интерполяции с целью опре-деления математической модели расширения Вселенной.

Решение задачи. Воспользуемся графоаналитическим методом.

Представим функцию V = f{R) в виде графика и по его виду

подберем подходящую функцию. График создадим с помощьюфункции plot (x,y,s).

Программа будет иметь вид:

» х=[22, 68, 108, 137, 255, 315, 390, 405, 685, 700, 1100];» у = [ 7 . 5 , 24, 32, 47, 93, 120, 134, 144, 254, 260, 380] ;» p l o t ( х , у , [ 'К 1 , • . • , ' - . ' ] )

График функции приведен на рис. 7.3.

File Edit View Insert Tools

400

• 350

300

250

200

150

100

50

n0 200

Desktopъ ®

400

Window Hete'*: O B в П

/

600 800 1000

-

-

-

-

-

-

1200

Рис. 7.3. График функции расширения Вселенной

Page 147: MATLAB для студента

146 Глава 7

Из рис. 7.3 видно, что функция интерполяции может быть линей-ной: V = a + bR. Остается определить коэффициенты а и Ъ, иматематическая модель расширения Вселенной будет найдена.

7.1.3. Функцияplot(x1fy1,s1, x2,y2,s2, ...,xn,yn,sn)Эта функция позволяет строить большое число математическихфункций на одном графике. Обозначения имеют следующийсмысл:

• Xi — i-й массив аргументов, заданный в виде вектора;

• yt — i-й массив значений функции для заданного массива ар-гументов;

• Si — стиль графика для i-й функции.

Стиль можно не задавать. В этом случае MATLAB выбираетстиль самостоятельно.

Функция YiUi) может задаваться в аналитическом виде. Если этафункция встроенная, то она вводится по общим правилам пред-ставления функции, имеющей символьные переменные. Еслифункция пользовательская, то необходимо создавать m-файл про-граммы на языке программирования системы MATLAB.

В качестве примера вначале построим график одиночной функ-ции и укажем на некоторые особенности его создания.

Пусть функция задана в виде табл. 7.3.

X

У

1

6.2

Таблица 7.2

2

4.1

. Таблица функции у = f(x)

3

1.9

4

0.6

Необходимо построить график функции с комментариями.

Последовательность команд будет иметь вид:

» х= [ 1 2 3 4 ] ;

» у = [ 6 . 2 , 4 . 1 , 1 . 9 , 0 . 6 ] ;

» p l o t ( x , у, ' . - q ' )

После нажатия клавиши <Enter> получим график функции.

Page 148: MATLAB для студента

Визуализация вычислений 147

При необходимости можно поместить в окне монитора заголовкии надписи, а также нанести координатную сетку, выполнив сле-дующие команды:

» title ('Our plot')

» xlabel ('X axis')

» ylabel ('Y axis')

» grid on

Все описанные выше команды построения графика приведены нарис. 7.4.

Curert ИгвЯогу: j L> WATLUftSpMwwt; "ЗУ,

32 double aicay32 double array

Л.УйУ.УРАЕУГС '

у . [ 6 . 2 , 4 . 1 , J . 9 , a . 6 ] ;

(x, у, -.-я')

t l l l e ! ' (h i i p l o t - )

Using Toolbo* Path Cache. Type "help toolbox_^p*tJi cache" foi

To s e t « t a c t e d , s e l e c t "ИАТ1АВ Help" (com the Help aenu.

t l 2 J 4 ] :{6.2, 4 . 1 , 1.9, 0 . 6 ] ;

(x, y, • . - # ' ]

J J

* 01 О

Рис. 7.4. Команды построения графика функции по табл. 7.3

В результате выполнения приведенной последовательностикоманд получим график, представленный на рис. 7.5.

Если на одном графике необходимо поместить две функции у(х)

и z^x), то команда plot () будет иметь вид:

p l o t ( x , у, х, z)

Page 149: MATLAB для студента

148 Глава 7

например:

» х = [ 1 , 2, 3, 4, 5 ] ;

» y = c o s ( x ) ;

» z=exp(-x) ;

» p l o t (х, у, х, z) .

Вывести две кривые в одно окно можно таюке, используя коман-ду hold on. После выполнения данной команды все графики будутвыводиться в одно окно. Отменить этот режим можно командойhold off.

File Ed* View Insert Tools Desktop Window Help. £ ^

Рис. 7.5. График функции, заданной табл. 7.3

Если функция представляется в символьном виде, то для по-строения ее графика используется функция ezpiot (), имеющаявид:

f='2*xA2+3*x+l'e z p i o t (f, х„, хк)

Page 150: MATLAB для студента

Визуализация вычислений 149

где f — функция, график которой необходимо построить, хн, х к —диапазон изменения аргумента.

Откликом здесь является гладкая кривая с представлением на эк-ране вида функции.

Функция plot (xi,yi,si,x2,y2,s2,... ,sn,yn, sn) необходима припроверке достоверности решения задачи интерполяции, когдасравниваются две функции: исходная, заданная в виде таблицы, ианалитическая, полученная в результате интерполяции.

! Пример 7.3 |

В результате решения задачи аппроксимации получена следую-щая математическая модель расширения Вселенной:

Результат получен по данным астронома Хаббла, приведеннымв табл. 7.2.

Ble Edit View Insert Tccls Desktop ivmdow Help• B} Q S к . Ф. £*. f) ® ( | OS

400

350

300

250 •

200 -

150 •

100

50 -

0

• 0200 400 BOO воо : юш 1200

Рис. 7.6. Графики функции расширения Вселенной

Page 151: MATLAB для студента

150 Глава 7

Построим зависимость V-f[R) по исходным данным и полу-ченной математической модели и проверим достоверность ре-зультатов моделирования.

Программа построения графиков имеет вид:

» R=[22, 68, 108, 137, 255, 315, 390, 405, 685, 700, 1100];» V=[7.5, 24, 32, 47, 93, 120, 134, 144, 254, 260, 380];» F = 0.33 * R + 0.37;» plot(R,V,R,F)

Откликом будут графики, показанные на рис. 7.6. Из рисункавидно, что графики существенно отличаются друг от друга. Дос-товерность математической модели сомнительна.

7.1.4. Функции построения графиковв логарифмическом масштабеПостроение графиков в логарифмическом масштабе необходимов следующих случаях:

• исследование устойчивости систем управления частотнымиметодами;

• исследование качества переходных процессов на основе лога-рифмических амплитудно-частотных характеристик;

• анализ помехозащищенности технических объектов;

• наглядность результатов при их графическом представлении.

В системе MATLAB построение графиков в логарифмическоммасштабе осуществляется с помощью функций:

loglogx(...)

semilogx(...)

semilogy(...)

Функция loglog () строит график в логарифмическом масштабе пообеим осям, функция semilogx о — по оси х, функцияsemilogy () — ПО ОСИ у .

Синтаксис этих функций аналогичен соответствующим функци-ям plot'().

Page 152: MATLAB для студента

Визуализация вычислений 151

7.1.5. Графики в полярной системекоординатПостроение графиков в полярной системе координат осуществля-ется в MATLAB с помощью следующих функций:

p o l a r (0, г)p o l a r ( 0 , г, з)

где:

• 0 — угол функции г (0);

• г — функция, представляющая собой радиус г (0);

• s — вектор стилей, аналогичный функции plot ().

• •. • • •• • ' ' * • • - • • ' • - : ! " -

| Пример 7.4

Построить график в полярной системе координат функции

sin

Fife Edit View Insert Tools Desktop Window Help

Рис. 7.7. График функции в полярной системе координат

Page 153: MATLAB для студента

152 Глава 7

Решение имеет вид совокупности следующих команд:

» t = 0 : pi/40:2 . pi;

» polar(t,2./sin(5*t))

График функции показан на рис. 7.7.

7.1.6. Создание гистограммГистограмма представляет собой столбиковую диаграмму, харак-теризующую число попаданий элементов вектора v в каждый из кинтервалов. Данные для гистограммы получают с помощью сле-дующих функций:

N - hist(Y)N = hist (Y, M)N = hist (Y, X)[N,X] = his t( . . .)

В функциях приняты обозначения:

• Y — вектор чисел, возвращаемых для десяти интервалов, вы-бираемых автоматически;

• м — количество интервалов;

• х — вектор.

Команда hist (.».) с синтаксисом, описанным в функциях выборачисел, строит график гистограммы.

Пример 7.5

Построить гистограмму случайных чисел, распределенных понормальному закону. Десять тысяч чисел сгенерировать с по-мощью функции randn (m, n).

Программа решения задачи имеет вид:

» х = - 3 . 5 : 0.2 : 3 .5 ;

» у = r a n d n ( 1 0 0 0 0 , 1 ) ;

» h i s t ( у , х )

График приведен на рис. 7.8.

Page 154: MATLAB для студента

Визуализация вычислений 153

File Edit view Insert Tools Desktop Wkidow Help

Рис. 7.8. Гистограмма чисел, распределенных по нормальному закону

Из графика видно, что сгенерированные числа действительноподчиняются нормальному закону.

7.2. Трехмерная графикаСистема MATLAB имеет богатые возможности построения трех-мерных графиков. Мы рассмотрим только несколько функций,позволяющих создавать трехмерные графики.

Для создания трехмерного графика z = f(x, у) необходимо

иметь матрицы значений переменных х, у.

Для этого предназначены следующие функции:

[X,Y] = meshgr id(x, у)

[X,Y] - meshgrid(x)

[X,Y,Z] = meshgridfx, у, z)

Page 155: MATLAB для студента

154 Глава 7

Функция meshgrid(x,y) — преобразует область векторов х, у в

массивы х, Y, которые используются для вычисления функции

z = f(x, у) и построения графиков.

Строки массива х являются копиями вектора х, а столбцы масси-ва Y — копиями вектора у. Это видно на следующем примере:

» [X,Y] = meshgrid (1:0.2:1.6, 12:0.5:14)X ш

1

1

1

1

Y =

12

12.5

13

13.5

14

1.2

1.2

1.2

1.2

12

12.5

13

13.5

14

1

1

1

1

12

12

12

12

14

.4

.4

.4

.4

.5

..5

1.6

1.6

1.6

1.6

12

12.5

13

13.5

14

Функция

[X,Y,Z] = meshgr id(x, у, z)

возвращает трехмерный массив для построения трехмерного гра-фика.

Графики трехмерных поверхностей строятся с помощью сле-дующих функций:

p l o t 3 ( x , у, z)

p lot3(X, Y, Z)

p l o t 3 ( X , Y, Z, S)

p l o t 3 ( x l , y l , z l , s i , x2, y2, z2, s2, . . . , xn, yn, zn, sn)

где:

• x, у, z — векторы аргументов функции;

• х, Y, z — матрицы одинакового размера;

• s — стили линий и точек графика, аналогично функцииplot ().

Page 156: MATLAB для студента

Визуализация вычислений 155

Приведенные функции строят точки трехмерного графика исоединяют их отрезками прямых в соответствии с заданным сти-лем.

Функция p lo t3(x l ,y l ,z l , s l ,x2 ,y2,z2, s2 , . . . ,xn, yn, zn,sn) строитна одном рисунке п функций.

; Пример 7.6

Построить график функции

z = In х + In у

в диапазоне аргументов [—4; 4] с шагом h = 0.1.

Решение имеет вид:

» [X,Y] = meshgrid([-4:0.1:4]);» Z = log (X) + log (Y) ;» plot3(X,Y,Z)

График трехмерной поверхности приведен на рис. 7.9.

File Edit We» Insert Tools Desktop Window Help

Рис. 7.9. График функции z = lnx+\ny

Page 157: MATLAB для студента

ГЛАВА 8

Алгоритмы и технологиирешения уравнений

8.1. Алгоритмы решенияалгебраических и трансцендентныхуравненийАлгоритм любого метода является совокупностью условий выбо-ра начального приближения, расчетных соотношений и признакаокончания вычислительного процесса.

Рассмотрим ряд алгоритмов численных методов определениякорней уравнений.

8.1.1. Метод дихотомии(половинного деления)Сущность метода состоит в следующем. Предположим, что об-

ластью изоляции корня уравнения / ( х ) = 0 является [д;й]. Тогда

за первое приближение к искомому корню х принимается:

а + Ъх\ = •

Затем вычисляются значения функции / ( х ) в точках а и х, (или

Ъ и л,). Если / ( а ) - / ( х , ) < 0 , то новой областью изоляции корня

Page 158: MATLAB для студента

Алгоритмы и технологии решения уравнений 1_57_

является [а;*,], в противном случае— [^;*i]' Равносильным

является условие / ( й ) - / ( х , ) < 0 . Если это условие выполняется,

то новой областью изоляции будет [b; лс,], в противном случае —

[а;х,].

Вторым приближением к искомому корню является:

flf + X,х-, = -••

2

если / ( а ) - / ( х , ) < 0 или

если /(Z>)-/(jt |)<0. Затем вычисляются значения функции b

при JC = X? и проверяется условие / ( ^ ) - / ( л ' 2 ) < 0 и т. д.

Признаком окончания вычислительного процесса в этом методеявляется одно из следующих условий:

/ ( * „ ) < S ИЛИ | / ( х „ ) - / ( . Х „ _ , ) | < 8 ,

где 8 — допустимая погрешность вычисления корня.

Достоинством метода является простота алгоритма и высокаяточность определения корня. Медленная сходимость итераций —основной недостаток метода.

8.1.2. Метод хордАлгоритмом метода хорд является совокупность следующих со-отношений:

• Условие выбора начального приближения:

._. _ к если / ( « ) / » < 0 и л и / ( 6 ) / » > О,

*°~[&,если f(a)f(a)>0 и л и / ( * ) / ' ( й ) < 0 .

Page 159: MATLAB для студента

158 Глава 8

• Расчетные соотношения:

""'

, если х0 = а,

если х0 = Ь.

• Признак окончания вычислительного процесса:

\х„-х„-\\-г и л и |/(*«)Ме-В алгоритме метода хорд приняты следующие обозначения:

• [a; b\ — область изоляции корня;

• / ( a ) , f(b) — значения функции уравнения / ( х ) = 0 в точ-

ках а и Ъ;

• f(a), f(b) — значения вторых производных функции

/ (лс) в точках a w Ъ\

• хл —приближение корня уравнения f(x)-Q, n = 1,2,...;

• е — погрешность вычисления корня уравнения.

Как видно из описания алгоритма, он является итерационным.Для его реализации в виде программы для ЭВМ необходимознать:

• область [a; b] изоляции корня;

• вторую производную / " (х);

• значение начального приближения, если не существует анали-

тическое выражение второй производной функции f(x).

Получить эти данные можно с помощью универсальных про-граммных средств символьной математики, существенно облег-чив труд учащегося.

Метод хорд дает возможность получить решение с необходимойточностью с меньшим числом итераций по сравнению с методомполовинного деления.

Page 160: MATLAB для студента

Алгоритмы и технологии решения уравнений 159

Его недостатками являются:

• сложность метода в связи с необходимостью вычисления вто-рой производной;

• неудовлетворительный признак окончания вычислительногопроцесса.

Последний недостаток объясняется тем, что уточнение корня на

каждой из итераций происходит по признаку \хп - Л П _ , | < Е , в то

время как сам корень х при этом не находится в области

[хя;жя_|], т. к. приближение к корню идет только от начального

приближения а или Ъ. Может оказаться, что абсолютная раз-

ность \хп - *„_, мала и удовлетворяет условию окончания

вычислительного процесса, но при этом корень х далеко

расположен от хп .

Если признаком окончания вычислительного процесса считать

условие /(х) < е , то при этом может оказаться, что значение

функции f(x) мало, а абсцисса хп далеко находится от корня х .

Отсутствие хорошего признака окончания вычислительного про-

цесса может привести к вычислению корня уравнения f(x) - О с

погрешностью, превышающей г, хотя оба условия окончаниявычислительного процесса выполнены.

8.1.3. Метод касательныхИдея метода состоит в следующем. Выбирается произвольно зна-

чение х, принадлежащее функции f(x) уравнения / ( х ) = 0.

Проводится касательная к функции в этой точке до пересеченияее с осью абсцисс. Точка пересечения касательной с осью абсцисс(обозначим ее х,) принимается за первое приближение корня.

Вычисляется значение функции /(•*,) в точке х, и вновь прово-

дится касательная в точке с координатами (x, ,/(x | ) j . Точка х2

пересечения касательной с осью абсцисс принимается за второе

Page 161: MATLAB для студента

160

приближение корня уравнения

Глава 8

= 0 и т.д. Признаком окон-

чания вычислительного процесса, как и в методе хорд, являетсявыполнение одного из условий:

k - * n - i N 8 и л и | /О) |Не-

легко получить следующую рекуррентную формулу вычисления

приближений:

Хп ~ Хп-\/ ( V . ) (8.1)

где f'(xn_]) —производная функции f(x) в точке л:,,,, .

Начальное приближение ха , как и в методе хорд, зависит от вида

функции f{x) и области изоляции корня \a;b\. При этом оказы-

вается, что оно будет противоположным значению х0 в методе

хорд. Если в методе хорд xQ =а, то в методе касательных х0 =Ь

и наоборот.

Алгоритмом метода касательных является совокупность следую-щих соотношений:

• Условие выбора начального приближения:

fa,если f(a)f"(a)>0 или f(b)f'(b)<0,0 [б, если f(a)f(a)<0 или f(b)f(b)> 0.

• Расчетное соотношение:

• Признак окончания вычислительного процесса:

\хп-х,^\<г или \/(хп)\<е.

Из алгоритма видно, что для его реализации в виде компьютер-ной программы необходимо знать:

• область [a; b] изоляции корня;

• аналитические выражения первой и второй производных;

Page 162: MATLAB для студента

Алгоритмы и технологии решения уравнений 161

• начальное приближение, если не существует аналитическоговыражения второй производной. Их определение возможно спомощью компьютерных технологий, реализуемых в универ-сальных программных средствах символьной математики.

Ограничения метода касательных: метод нельзя реализовать на

практике, если функция f(x) уравнения / ( J C ) = O не имеет пер-

вой производной. Например, уравнение 2х\-е~х +5 = 0 не может

быть решено, т. к. функция х\ не имеет производной.

Метод касательных имеет те же недостатки, что и метод хорд. По

сравнению с методом хорд он более трудоемкий, т. к. требует

вычисления в точках х0, хх, х2,..., х„ не только значений функ-

ции / ( * ) , но и ее производной. Его достоинство: во многих слу-

чаях дает высокую точность результата при малом числе ите-

раций.

8.Ф:4. Комбинированный метод(метод хорд и касательных)Существенным недостатком методов хорд и касательных являет-ся неудовлетворительный признак окончания вычислительногопроцесса. Условия

|х„-х„_,|<е и л и | / ( * „ ) | < е

не всегда обеспечивают необходимую точность определения

корня уравнения f(x) - 0.

Комбинированный способ позволяет устранить этот недостаток.Из описания методов хорд и касательных следует, что если одиниз них дает значение корня с недостатком, то другой — обяза-тельно с избытком. Эта особенность методов предоставляет воз-можность выработать хороший признак окончания вычислений иобеспечить необходимую точность результата.

Обозначим х[х) — и-е приближение корня, вычисленное по ме-

тоду хорд, х*л) — по методу касательных.

бЗак. 1196

Page 163: MATLAB для студента

162 Глава 8

Тогда для оценки погрешности вычисления корня целесообразно

воспользоваться условием -*.( ' - • ) < е , т. к. достоверно извест-

но, что в диапазоне х{

п^ - х^ обязательно находится искомый

корень.

Алгоритмом вычисления корней комбинированным методом яв-ляется совокупность следующих соотношений:

• Условия выбора начального приближения:

[я, если f(a)f"(a)>0 или f(b)f(b)< О,

[б,если f(a)f"(a)<0 или f(b)f"(b)>0.

• Расчетные соотношения:

хп =•

Л •—

{ b - x n _ { ) f { x ^ )

/ ( < / ) - / ( * „ _ , ) '

(я-х„_,)/(х,м)

если х0 = a,

если д:0 = b.

• Признак окончания вычислительного процесса:

~Хп

Недостатком метода хорд и касательных является большая еготрудоемкость. Однако при высокой производительности компью-тера этот недостаток значения не имеет.

Существенное преимущество метода заключается в его способ-ности обеспечить высокую точность определения корня при ко-нечном числе итераций.

8.1.5. Метод итераций

Исходное уравнение / ( х ) = 0 преобразуется к виду х~ц>[х). Бе-

рется из области изоляции корня [a, b\ произвольное значе-

Page 164: MATLAB для студента

Алгоритмы и технологии решения уравнений 163

ние х0, которое принимается за начальное приближение корня.

Приближения хи х2, ..., хя вычисляются по соотношениям

х, = Ц>(х0 ) , х2 = ф(дс,),..., Х„ = ф ( ^ ; , ) .

Повторяя эти процедуры многократно, можно вычислить значе-ние корня с заданной точностью.

При практическом использовании метода итераций возникаютследующие вопросы:

• Каковы условия сходимости итерационного процесса?

• Если итерационный процесс расходится, то каким образомможно обеспечить его сходимость?

• Как определить погрешность вычисления корня?

Существуют две теоремы, которые отвечают на первый вопрос.Приведем их без доказательства.

Теорема 1

Если в итерационном процессе хп -<р(хп_^ последователь-

ность ж,, х2, ..., хп имеет предел, т. е. limx,, =x , то зна-11—WO

чение х является корнем уравнения f(x) = 0.

Теорема 2

Итерационный процесс сходится, если на всем интервале

области изоляции корня [a; Z>] выполняется условие

ф'(х«<1. При этом за значение х0 принимается любое

число из области [а, й].

Теперь ответим на второй вопрос. Известны несколько способовобеспечения сходимости итераций.

Способ 1. Если итерационный процесс хп =<р(дея_,) не сходится,

то следует представить исходное уравнение / ( * ) = 0 в иной воз-

можной форме и выбрать такое из них, при котором обеспечива-

ется сходимость итерационного процесса.

Page 165: MATLAB для студента

164 Глава 8

Способ 2. Переход к обратной функции.

Представим исходное уравнение х-ц>[х) в виде y = q(x) и раз-

решим его относительно х. Получим ;c = xF(j>). Найдем произ-

водную по у функции х = Ч?(у):

1

dy

dx__±_dy <fy_ ф'(дс) '

dx

Так как при расходящемся итерационном процессе

1, то <1

и итерационный процесс yn=f{yn-\) сходится. Очевидно, что

если хк — корень уравнения у = *¥{у), то хк также будет кор-

нем уравнения х = ф(х).

Способ 3. Подбор множителя.

Предположим, что исходное уравнение /(JC) = O преобразовано к

виду х = (р(х) и ф'(х)|>1, т.е. процесс расходится. Выберем

произвольно функцию g ( x ) * 0 и умножим исходное уравнение

на g(x). Тогда получим:

f{x)-g{x) = 0

или

x = x-f(x)-g(x).

Теперьy(x) = x-f(x)-g(x).

Подберем функцию g(x) такую, чтобы удовлетворялось условие

ф'(х) < 1 во всей области изоляции корня [а; й].

Page 166: MATLAB для студента

Алгоритмы и технологии решения уравнений 165_

Признаком окончания вычислительного процесса во всех преды-дущих методах было одно из условий

F» -*,.-! P S И Л И

В методе итераций условием сходимости итерационного процес-са и обеспечения необходимой точности определения корня явля-ется

|д;„-д:„ , |<е при (а'(х)\< —.

Из описания метода итераций можно сформулировать следую-

щий алгоритм решения уравнения / ( * ) = 0 методом итераций:

• условие выбора начального приближения

а < х0 < Ъ;

• расчетное соотношение

дся =хя_,?) при условии |ф '(х) |<-;

• признак окончания вычислений

Из описания метода итераций видно, что основным его недостат-ком является сложность обеспечения сходимости итерационногопроцесса и точности определения корня.

Из описания методов дихотомии, хорд, касательных и итерацийследует, что разработка программ определения корней уравненийтребует в ряде случаев от программиста знания области изоляциикорня, первой и второй производных функций f(x), значения

начального приближения, проверки условия и обеспечения схо-димости итерационного процесса. Только при этих условиях мо-гут быть составлены программы перечисленных методов и про-ведены исследования алгоритмов. Определить область изоляциикорня и вычислить значения производных и тем более проверитьи обеспечить сходимость итерационного процесса "вручную"чрезвычайно трудно.

Page 167: MATLAB для студента

166 Глава 8

Время, затраченное на эти процедуры, будет превосходить время,необходимое для составления программ.

Здесь следует использовать универсальные программные средст-ва символьной математики, в частности систему MATLAB.

8.2. Технология решенияалгебраических и трансцендентныхуравнений в среде MATLABРешение алгебраических и трансцендентных уравнений в средеMATLAB осуществляется с помощью следующих встроенныхфункций: solve (), f zero (), roots ().

Технология решения уравнений с помощью встроенных функцийпредельно проста. Рассмотрим ее и приведем примеры.

8.2.1. Технология решения уравненийс помощью функции solveQФункция solve о представляется в следующем виде:

s o l v e ( ' f (х) ' , х)

где:

• ' f ( x ) ' — решаемее уравнение, записанное в одиночных ка-вычках;

• х — искомое неизвестное.

Уравнение / ( х ) = 0 записывается в произвольной форме. При

этом если знак равенства отсутствует, то программа воспринима-

ет уравнение в виде / (х) = 0.

Аргумент х при решении уравнения можно опустить.

Функция symso, определяющая имя символьной переменной иобязательная при решении систем уравнений, здесь может бытьопущена.

Рассмотрим технологию определения корня уравнения с по-мощью функции solve () на примерах.

Page 168: MATLAB для студента

Алгоритмы и технологии решения уравнений 167

;Пример 8.1

Пусть необходимо решить следующее уравнение:

sin х + х -1 = 0.

Программа решения уравнения имеет вид:

» Y = s o l v e ( ' s i n ( x ) + х - 1 = О 1)

После нажатия клавиши <Enter> получим следующее решение:

Y =0.510973

Функция solve о в ряде случаев позволяет определить все корни

уравнения f(x)-Q без указания начальных значений х или об-

ластей изоляции корней.

I Пример 8.2

Необходимо определить корни уравнения

2х - 4х + 3 = 0 .

Программа решения уравнения и результат имеют вид:

» Y = s o l v e ( ' 2 . л х - 4 * х + 3 = 0 ' )

Y =

1.418

3 . 4 1 3

Найдены оба корня уравнения.

Функция solve о позволяет найти не только вещественные, но и

комплексные корни уравнения / ( х ) = 0. Покажем это на при-

мере.

i Пример 8.3 ;

Пусть уравнение имеет вид:

ех - I = 0.

Page 169: MATLAB для студента

168 Глава 8

Необходимо найти корни уравнения.

Программа имеет вид:

» Y = s o l v e ( ' s i n ( x ) + log(x) + ехр(х) - 1 = 0 ' )

После нажатия клавиши <Enter> получим следующее решение:

Y =3.055 - 1.71447 i

Обратите внимание на то обстоятельство, что, найдя комплекс-ный корень уравнения, функция не выдала вещественного корня,который имеет значение: х=о.4О7.

Большое достоинство функции solve () в том, что она позволяетрешать уравнения, представленные в аналитическом виде.

1 Пример 8.4

Необходимо решить следующее уравнение:

2х-3(а-Ь) = 0.

Решение будет иметь вид:

>Лх-3*(а-Ь)=0')

Log( (3*a-3*b) /log (2)

Функция solve () имеет следующий недостаток. Она не требуетинформации о начальном значении корня или области его изоля-ции. Поэтому в случае трансцендентного уравнения и в ряде дру-гих случаев она не находит всех корней уравнения.

В качестве примера в табл. 8.1 приведены уравнения и количест-во корней в каждом из них. Функция solve () нашла только одинкорень, находящийся в столбце х.

Page 170: MATLAB для студента

Алгоритмы и технологии решения уравнений 169

Таблица 8.1. Уравнения и их корни

Уравнение

л-!+2х-2 = 0

х2 + 4siruc-2 = 0

2sin(ln*) = 0

1п(4-2л-) + ;Г-2 = 0

Число корней

4

2

6

3

X

0.555

0.463

1

1.2774

8.2.2. Технология определениявещественных корней уравненияс помощью функции fzeroQФункция f zero () имеет следующие реализации:

f z e r o C f (х) ' , х)f z e r o t ' f (х) ' , [xl, х2])f z e r o ( ' f ( х ) ' , х, t o l , t r a c e )f z e r o ( ' f ( x ) ' , [x l , x 2 ] , t o l )f z e r o C f ( x ) ' , [xl , x 2 ] , t o l , t r a c e )

В выражениях функции приняты следующие обозначения:

• ' f (х)' — решаемое уравнение, взятое в одиночные кавычки;

• х — начальное приближение (значение) искомого корня;

• [xl, х2]—область изоляции корня;

• tol — заданная погрешность вычисления корня;

• trace — значение корня в каждой итерации.

Технологию определения корней уравнения покажем на при-мерах.

I Пример 8.5

Необходимо найти корни уравнения

2х -4x + xsin,x = 0,

если известно, что корни находятся вблизи значений к-1 и х=4.

Page 171: MATLAB для студента

170 Глава 8

Решение:

» У = f z e r o ( ' 2 ^ x - 4 * х + х * s i n ( x ) ' , 1)•у

0 . 3 4 7 8

» У = f z e r o ( ' 2 A x - 4 * х + х * s i n ( x ) ' , 4)

Y =

4.4761

i Пример 8.6

Нужно определить вещественные корни уравненияi

используя функцию

fzero('y(x)', [xl,x2])

На рис. 8.1 приведен график функции.

File Edit View Imer

40

35

30

25

20

15"'Г 10

,. ь

• 0

\

- \

>

• \

-6

\ . • : • . • :

T o o l s

\

- 5

D e s k t o p W i n d o w H e l p

l o g ( 4 - 2 x ) + x 2 - 2

\

\

\

- 4 • " • " - 3 - 2 - 1

X

-

-

-

— — — 1

0 1 2

Рис. 8.1. График функции 1п(4-2х) + х 2 - 2 = 0

Page 172: MATLAB для студента

Алгоритмы и технологии решения уравнений 171

Из рис. 8.1 видно, что областями изоляции корней могут быть:

[0;-1],[1; 1.5], [1.5; 1.95].

Тогда программа определения корней и результаты решения за-дачи будут иметь вид:

» XI = f z e r o ( ' l o g ( 4 - 2 * х) + хА2 - 2 \ [ 0 , - 1 ] ) ;

» Х2 = f z e r o ( ' l o g ( 4 - 2 * х) + хЛ2 - 2 ' , [ 1 , 1 . 5 ] ) ;

» Х2 = f z e r o ( ' l o g ( 4 - 2 * х) + х л 2 - 2 ' , [ 1 . 5 , 1 . 9 5 ] ) ;» X = [x l ,x2,x3]

После нажатия клавиши <Enter> получим следующий ответ:

х -0.594 1.2774 1.9001

Это очень поучительный пример. При определении корня из об-

ласти [1.5; 1.95] мы не получали решения, выбрав область изоля-

ции [1.5; 2], затем повторно [1.5; 1.9], хотя по виду графика ко-

рень должен находиться в этих областях изоляции.

Причинами этого являются:

• в случае области изоляции [1.5; 2] log(4-2x) при х=2 не су-

ществует (log 0);

• в случае области изоляции [1.5; 1.9] решения нет потому, что

корень равен 1.9001, т. е. находится вне выбранной областиизоляции.

При задании области изоляции корня необходимо не только пра-

вильно выбрать область [д:,; х-, ], но также согласовать ее с ре-

шаемым уравнением. Значение функции f(x) должно существо-

вать во всей области [х,; х2 ] •

| Пример 8.7 |

Необходимо вычислить корень уравнения

Page 173: MATLAB для студента

172 Глава 8

из области изоляции [0; -1] с точностью

tol = [0.1,0.01,0.001,0.0001,0.00001,0.000001]

Программа решения задачи имеет вид:

» XI = f z e r o ( ' l o g ( 4 - 2 * х) + хЛ2 - 2 ' , [ 0 , - 1 , 0 . 1 ] ) ;

» Х2 - f z e r o { 4 o g ( 4 - 2 * х) + х л 2 - 2 ' , [ 0 , - 1 ] , 0 . 0 1 ) ;

» Х5 = f z e r o ( ' l o g ( 4 - 2 * х) + х л 2 - 2 1 , [ 0 , - 1 ] , 0 .00001);

» X = [Xl,x2,x3,x4,x5]

После нажатия клавиши <Enter> получим следующий ответ:

-0.6367 -0.5906 -0.5994 -0.5994 -0.5945 -0.5945

По результатам расчета видно влияние погрешности на значениекорня. Так, например, если необходимо вычислить значение кор-ня с точностью два знака после запятой, то достаточно задатьtoi=o.oi, а если с точностью четыре знака, то toi=o.ooooi.

Пример 8.8: ..!....„.„.. ,,... ,'„ .„. .„,.„;,.. , ^ ,. , {Необходимо определить корень уравнения

In (4 - 2х) + х1 - 2 = 0

из области [0;-l] с выдачей информации о каждой итерации

(число итераций не более 50).

Программа решения задачи и результат имеют вид:

» f z e r o ( ' l o g ( 4 - 2 * х) + хА2 - 2 ' , [ 0 , - 1 ] , 50)

ans =

Funt-count х f (х)

1 0 -0.613706

2 - 1 0.791759

3 -0.436657 -0.225557

4 -0.634142 0.0638411

5 -0.590577 -0.00619106

Page 174: MATLAB для студента

Алгоритмы и технологии решения уравнений 173

6

7

8

ans =

-0.5945

-0.

-0.

-0.

594428

594518

594516

-0.

1.

-3.

0.000141692

45892 e 008

13434 e 006

Корень найден с точностью 10 6 (данные седьмой и восьмой ите-раций) за 8 итераций.

Таким образом, функция fzero () позволяет найти все корни

уравнения / ( х ) = 0. Для этого необходимо знать области изоля-

ции корней. Для их определения достаточно построить график

функции y-f(x) и визуально определить области изоляции

всех корней. Существенный недостаток функции f zero о состоитв том, что она не определяет комплексных корней уравнения.

Из изложенного следует важный вывод: система MATLAB неимеет функции, которая позволила бы определить все корнитрансцендентного уравнения. Функция solve() не определяетвсех корней уравнения, т. к. она не имеет информации об областиих изоляции. Функция f zero о не находит комплексных корней.Только совместно эти функции могут найти все вещественные икомплексные корни. При этом необходимо знать область изоля-ции всех вещественных корней.

С учетом этих особенностей системы MATLAB компьютернаятехнология решения алгебраических и трансцендентных уравне-ний состоит в выполнении процедур, перечисленных ниже:

• определение области изоляции корня графоаналитическимметодом;

• определение вещественных корней уравнения с помощьюфункции f zero о при заданных значениях погрешности tol;

• определение комплексных корней уравнения с помощьюфуНКЦИИ so lve (' f (x) ' ) .

Следует при этом иметь в виду, что функция solve (' f (х)') можетвыдать некоторые, а иногда и все вещественные корни уравнения

Page 175: MATLAB для студента

174 Глава 8

8.2.3. Технология определения корнеймногочлена с помощью функции rootsQФункция roots () имеет вид:

roots(z)

где z — вектор коэффициентов многочлена.

Рассмотрим технологию решения задачи на примерах.

; Пример 8.9

Пусть необходимо определить корни многочлена

у = 2х5 - Эх* + 5х* + х2+1х + 3.

Решение имеет вид:

» Y = roots([2 - 3 5 1 7 3 ] )•у

1.2189 + 1.4110 i

1.2189 - 1.4110 i

-0.2719 + 1.0105 i

-0.2719 - 1.0105 i

-0.3940. t

В случае когда в многочлене отсутствует член хк, то принимает-ся ак = 0.

| Пример 8.10 ' |

Определить корни уравнения

Будем рассматривать выражение х ш - 1 как многочлен десятойстепени. Тогда программа вычисления корней будет иметь вид:

» z = [ l 0 0 0 0 0 0 0 0 0 -1];» у = r o o t s (z)

Page 176: MATLAB для студента

Алгоритмы и технологии решения уравнений 175

После нажатия клавиши <Enter> получим следующий ответ:

Y =

-0.8090 + 0.5878 i

-0.8090 - 0.5878 i

-0.3090 + 0.8511 i

-0.3090 - 0.8511 i

0.3090 + 0.8511 i

0.3090 - 0.8511 i

1

0.8090 + 0.5878 i

0.8090 - 0.5878 i

Замечание

Функция roots (z) не позволяет получить решение, если коэффици-енты многочлена заданы в виде символьных переменных.

8.2.4. Варианты алгебраическихи трансцендентных уравненийдля индивидуальных заданий или решенийАлгебраические уравнения для решения аналитическими мето-дами представлены в табл. 8.2.

Алгебраические и трансцендентные уравнения для решения чис-ленными методами перечислены в табл. 8.3.

8.3. Методы решения системалгебраических уравненийСистемы уравнений могут быть линейными и нелинейными,с постоянными и переменными коэффициентами. Решение такихуравнений возможно аналитическими и численными методами.Аналитические методы дают решение в общем виде. Такое реше-ние, в силу своей общности, всегда более предпочтительно, чемчисленное, которое дает ответ лишь для конкретных числовыхданных коэффициентов.

Page 177: MATLAB для студента

Таблица 8.2. Алгебраические уравнения для решения их аналитическими методами

№ п/п

1

2

3

4

Уравнение

xi-a = 0

xs+(b- а)х* - аЪхъ + ах2 + ax(b-a)-a2b = 0

х* + 2х3 (1 + а) + х2 (4а -1) - 2х(1 + а) - 4а = 0

Ответы

• л, = а , х2 = -а1'3, хъ = 6

• л, = — а , х2 = -а , X) = —Ь

(х = 0, я = 0)

• хх = -а, х2 = -а , х3 = -Ъ, х45 = ±а/

х, = 1, х2 = 1, л3 = - 2 , х4= -2а

со

Page 178: MATLAB для студента

№п/п

' 5

6

7

Уравнение

х5 -ах' +2х2-2а

х1 + ах5 - х2 - а =

г+з(ь>

= 0

0

~а)х2-аЬ3х + ЗаЬ3=0

Ответы

. х, = - 7 ^

• х,=-Га,

При а>0, Ь

• х, = 3 , х2>

• * , , 2 = ± ^

• х |2 ±4а

• Х12=±УГ

-А6 7 .' 4

, Х2 =

X, =

> 0 :

-Га

Га,

з = ±i*Ja , х

. з =

, х , -

а , х 3

а , х3

_2,/з

= 1

= 1, л

/л/5

Таблица

, х , = 3

х3 = 3 , х4

2"'Л4,5 " 2

4 - 5 = ~Т

8.2 (продолжение)

5 = ±/(-6)3

/2

108 |/6 .

2

4 \8 8 '

N1

Page 179: MATLAB для студента

Таблица 8.2 (продолжение)

№п/п

8

9

10

11

12

13

Уравнение

2'-2(а + Ь) = 0

In sin х- 2а = 0

е-2"-2а = 0

sin ax + cos ax = 0

sinar + tgox = 0

Ответы

• х =—s ^ + 11п2

\п(а + Ь) Ы(а + Ь) 2л• х = — s i + l , x , , = — s i + l t г1 In 2 2>3 In 2 In 2

JC, =asine 2", x2,=±n-asine2a

In2a• x =

2

In 2a In 2a• * i = — ^ - ' * 2 , з = — J ~

5л Зл л

4a 4a 4a

Зл , ллг, = , x2J=±-

a a

• False

5k. Зл. л .• лг,, = ± — i , х-, 4 = ± — i , x . 6 = ± — i

12 2a 3'4 2a 5'6 2a

Page 180: MATLAB для студента

Алгоритмы и технологии решения уравнений 179

5

5Sю

2

ян

О

оsXV

равн

>>

вс

+1II

••чГ

«О1

m11

ш ^•1СО 1

& *

• •

оII

|

8

_

1

Г 4

с~ >

( N

+1

-' _gII

^~

оIIа

1

ё

Г"

._

t ^

+ 1^

сз | -о1

CN

•2.3

I« I - O

с(N

~ II

• •

оII

Н•о

ч

j•el а

ся01II

-

+1

-о I а

tan

1II

оII

ел

ОО

>•;С«яа

Page 181: MATLAB для студента

Таблица 8.3. Алгебраические и трансцендентные уравнения для решения их численными методами

№ п/п

1

2

3

4

5

6

7

8

9

10

Уравнения

Алгебраические

х 4 -4л: 3 -1Од- 2 +Зл:-4 = О

хь-5х1+ 4.5 = 0

д:5-л- + 0.2 = 0

л 3 - 0.2JC 2 + 0.5* +1.5 = 0

х ' 0 - 1 = 0

д;8 + 2д:-1.5 = 0

* 4 - 2 л : 2 + 8х + 1 = 0

Л : 3 + 4 Л : 2 - 5 Х - 2 = 0

6л;8-2;Г + 3 = 0

3.5л-5 - 2.8л:3 + 7.5* - 2.5 = 0

Трансцендентные

2sin(ln|A:|) = 0

arctg(tgx) = O

4^-^1-2

sin (sin д:)

2х - 4х = 0

jr!+2x-2 = 0

1пд: + (д: + 1) 3 =0

arctg(jr-2) + x = 0

x2 + 4 s i n x - 2 = 0

х-1п(7-4л-)

Число корней

6

00

3

со

2

4

1

1

2

1

00о

00

Page 182: MATLAB для студента

Таблица 8.3 (окончание)

№ п/п

11

12

13

14

15

16

17

18

19

20

Уравнения

Алгебраические

х5 + х 4 + х 3 + х 2 + х+1 = О

\.5х5 + Пх-2\=0

2х4 -3 .5Л: 2 + 3 = 0

17х"-15х 7 +13х 4 11х 3 +9х-7 = 0

л 4 + 2х' - 1 = 0

х х - 2 1 х 2 + 55 = 0

х1 + 2 / + З г + 4х4 + 5х3 + 6х2 + 7х + 8 = 0

8х7 - 7х6 + 6х5 - 5х4 + 4х3 - Зх2 + 2х -1 = 0

х 5 0 - 1 = 0

х1 + 6х" + х5 - 4х4 + х3 - 2х2 + х -1 = 0

Трансцендентные

X

е " 6 г + З х 2 - 1 8 = 0

!п(4-2х) + х 2 - 2 = 0

3*-9х + 1 = 0

2х + In 2 x - 5.6 = 0

2 r + e t - 5 x + l = 0

Зх = с г +1.5 = 0

y - ( - D 2 = o

x + l g x - 0 . 5 = 0

2 x ! - e - r + 5 = 0

Число корней

2

2

3

2

1

2

2

1

1

4

Sгs

1се

I

1

S

00

Page 183: MATLAB для студента

182 Глава 8

Однако решение уравнений аналитическими методами крайнеограничено. Они могут быть применены лишь для решения сис-тем линейных алгебраических уравнений и в редких случаях длярешения систем нелинейных уравнений невысокого порядка.

MATLAB решает системы уравнений аналитическими и числен-ными методами.

Рассмотрим вначале математические методы решения линейныхуравнений. Это поможет нам более квалифицированно и глубокопонять компьютерные технологии решения уравнений с по-мощью MATLAB.

8.3.1. Решение системлинейных алгебраических уравненийСистему т линейных уравнений с п неизвестными можно пред-ставить в следующем виде:

ailxr+a21x2+...+a2nxn=b2, (8.2)

В этой системе х{, Х2>—» хп неизвестные, йг„ — коэффициент

в /-м уравнении приу-м неизвестном (/ = 1, 2, ..., т; j = 1, 2, ...,

п), Ъ, —свободный член/-го уравнения, /-1,2, ..., т.

В системах уравнений возможны случаи, когда число уравненийравно числу неизвестных (т = п), меньше числа неизвестных(пкп), больше числа неизвестных (т>п). При этом решениемсистемы (8.2) является любой набор чисел хх, х2, ..., хп , которыепри подстановке в систему (8.1) обращают каждое из уравненийв числовое равенство.

Количество решений может быть равно, может быть меньше илибольше числа неизвестных.

В зависимости от этого система уравнений классифицируетсяследующим образом. Система называется совместной, если она

Page 184: MATLAB для студента

Алгоритмы и технологии решения уравнений 183

имеет хотя бы одно решение, в противном случае она называетсянесовместной. Совместная система может иметь единственноерешение или бесконечное их число. Если система имеет беско-нечное число решений, ее называют неопределенной. Рассмотримпримеры таких систем.

Система уравнений

х, + 2х2 - х, = 1

! 2х] + х2+ х3 = 2

[Эх, + 2х2 + Зхъ = 5

имеет единственное решение: хх = О, х2 = 1, х3 = 1, т. е. она явля-

ется совместной и определенной.

Система

j 2х] + 4*2 - 2х3 = 2

[Зле, + 2х2 + Зх, = 5

имеет бесконечное число решений, которые удовлетворяют сле-дующим равенствам:

х, + 2хъ - 2,

2х2 -Зх, = - 1 ,

т. е. система является совместной и неопределенной. Определенылишь условия решения. В этой системе первое и второе уравне-ния идентичны.

Система

X,

2*,

Зх,

+ 2X2-

+ 4X2-

+ 6x2 - :

Х з = 1

2xj = 2

ЗХ3 - 3

не имеет ни одного решения и является несовместной.

Действительно, в этой системе будет три одинаковых уравненияпосле деления второго уравнения на 2, а третьего на 3.

Page 185: MATLAB для студента

184 Глава 8

Существует большое число различных методов решения системлинейных уравнений. Все они могут быть разделены на две груп-пы: точные методы и методы последовательных приближений.Следует при этом иметь в виду, что точными методами являютсятолько аналитические методы. Если с помощью этих методоврешать систему уравнений с числовыми коэффициентами, тоточных решений можно не получить за счет ошибок вычислений,связанных с конечной памятью компьютера.

Наиболее популярным из точных методов решения линейныхалгебраических уравнений является метод Гаусса. Метод Гауссаизучается в математике, и нет надобности его здесь описывать.Напомним только теорему Крамера.

Если определитель матрицы коэффициентов |А| системы п ли-

нейных уравнений с п неизвестными отличен от нуля, то система

имеет решение и притом единственное.

При решении системы п линейных уравнений необходимо вы-полнить следующее количество операций:

Если, например, п = 10, то число операций будет N - 970 .

Метод Гаусса может привести к существенным ошибкам при оп-ределении неизвестных А',, х2, ..., хп в случае плохо обусловлен-ных систем. Плохо обусловленной называется такая система, укоторой модуль определителя матрицы коэффициентов мал посравнению с какой-либо из норм матрицы. Нормой матрицы мо-жет быть: максимальная из сумм модулей коэффициентов строкили столбцов. Плохо обусловленные системы чувствительны кошибкам округления, которые неизбежны при компьютерныхметодах реализации алгоритма Гаусса.

Рассмотрим решение линейных алгебраических уравнений мето-дом простой итерации.

Разрешим исходную систему уравнений (8.2) относительно неиз-вестных:

Page 186: MATLAB для студента

Алгоритмы и технологии решения уравнений 185

х2 =(8.3)

2,,X

n

+hla22>

х„ = а„,х, +ап2х2 + ... + а„„_1х„_| +bjam.

В системе приняты обозначения: aik = — — , i — 1, 2,..., п, к = \,

2,..., п, п + \.

Запишем систему уравнений (8.3) в следующем виде:

х] =<р](х],х2,...,х„),

х2=(?2(х],х2,...,хп),

V-C)х2

= ф| (^10) Y(0)

,х2 ,...,

(0) v(0),х2 ,...,

х(0))

х(0)\

Пусть х[0 ), ^20), ..., х^ являются начальными приближениями.

Тогда, подставляя их в систему уравнений (8.4), получим:

(8.5)

Принимая х\]), х2^, ..., х^ в качестве первых приближений иподставляя их в исходное уравнение, получим вторые приближе-ния. Повторяя вычисления, можно получить значения неизвест-ных на любой и -й итерации.

При компьютерной реализации итерационного метода возникаютследующие вопросы:

• Как выбрать начальные приближения х\0), х{

2

0), ..., х{

п

0) ?

• Каковы условия сходимости итерационного процесса?

• На какой итерации закончить вычисления?

Page 187: MATLAB для студента

186 Глава 8

Ответы на эти вопросы совместно с расчетными соотношениямии будут алгоритмом решения систем линейных уравнений мето-дом итерации. Ответим на поставленные вопросы для случая ли-нейных систем алгебраических уравнений.

Выбор начальных приближений

Если область, в которой находятся неизвестные х] (/=1,2, ..., п),известна, то начальные значения выбираются произвольно изэтой области. Если область неизвестна, то за начальные прибли-

bi h bnжения можно взять свободные члены ——, —*-, ..., —*-.

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

Обеспечить сходимость итерационного процесса можно путемпреобразования исходной системы к эквивалентной. Эти преоб-разования можно выполнить путем перестановки уравнений, опе-раций сложения и вычисления уравнений, умножения на посто-янный коэффициент.

Рассмотрим пример. Необходимо решить методом итераций сле-дующую систему уравнений:

2Х| + Ъх2 + х, = 1

[ -7х, - 2х> + 4х3 = 6

8.*! + х2 —3*3 =12

11 15Эта система имеет решение: хх = 5, х2= — - , х3 = — .

Однако решать эту систему уравнений методом итераций опасно,т. к. здесь не обеспечены условия сходимости итераций.

Page 188: MATLAB для студента

Алгоритмы и технологии решения уравнений 187

Действительно, в первом уравнении

во втором

в третьем

Для обеспечения условий сходимости преобразуем исходнуюсистему уравнений. Второе уравнение поставим в первую строку.Тогда

7

Заметим, что первое уравнение можно заменить также третьим.

Умножим первое уравнение на 4 и сложим его со вторым. Тогдаполучим

10х2 х, = 4 .

Теперь

10 10

Это уравнение можно сделать вторым.

Для получения третьего уравнения выполним следующие преоб-разования: сложим все уравнения, полученное уравнение умно-жим на 2 и сложим со вторым. Тогда получим:

-х, + 2х2 + 8х3 = 44 .

Теперь

1 2_

8

Page 189: MATLAB для студента

188 Глава 8

условие сходимости итераций выполнено. В результате всех этихопераций получена следующая эквивалентная система уравне-ний:

-7Л:, - 2х2 + 4х, = 6

х, +10д:2 + 8х3 = 10

2х2 = 44

Теперь условия сходимости итераций выполнены полностью.Решение системы уравнений итерационным методом возможнопри начальных условиях

v ( 0 ) _ 6

v«>) _ 1 „(0) _ 4 4 _ г гХ\ - ~ _ ' Х2 ~ 1 ' ХЪ ~ "Т" '

Признак окончания вычисленийПризнаком окончания итерационного процесса из условий точно-сти можно в первом приближении считать условие:

Ди+1)-х,

(о)

где х\~"', х\" - значение к-то неизвестного соответственно на

(и + l) и (о) итерациях, е —допустимая погрешность вычисле-

Y ( U + 1 )

ния неизвестных.

Существуют два способа решения уравнений методом итераций:метод простой итерации и метод Зейделя. Пользователь не имеетвозможности выбирать метод итераций, т. к. функции и командысистемы MATLAB не различают этих методов. Метод решенияуравнений в системах символьной математики пользователю не-известен, следовательно, выбора не существует.

8.3.2. Алгоритмы метода итерацииАлгоритм метода простой итерации состоит из совокупности ус-ловий выбора начальных приближений, расчетных соотношенийи признака окончания вычислений.

Page 190: MATLAB для студента

Алгоритмы и технологии решения уравнений 189

Условие выбора начальных приближений:

Y (0) _ Л . „ (0) _Л , — , А , — • - А.

-«22

Расчетные соотношения:

„(о)

Признак окончания вычислений:

<8 .

В алгоритме простой итерации все значения неизвестных на шагеи +1 вычисляются по их значениям на предыдущем шаге и.

В алгоритме Зейделя результаты вычисления х, на шаге и +1

используются для вычисления х2, х3, ..., хп на этом же шаге; ре-

зультаты вычисления х2 на шаге и + 1 используются для вычис-

ления неизвестных х3, х4,..., хп на этом же шаге и т. д. Расчет-

ные соотношения имеют вид:

(о) (о)2 '•••' хп

(о+1) (и) (и)\

, ,х2 ,...,хп у

(u+l) _ m / r ( u + l ) (и+1) и \

Очевидно, что алгоритм Зейделя позволяет получить решение сбольшей точностью, чем алгоритм простой итерации при том жечисле итераций.

Page 191: MATLAB для студента

190 Глава 8

8.3.3. Сравнительная оценкаточных и итерационных методовВ методе простой итерации на одну итерацию необходимо вы-

полнить приблизительно 2п2 арифметических операций типа

сложения и умножения, в то время как по методу Гаусса для ре-

шения системы п уравнений необходимо выполнить — и3 опера-

ций. Тогда очевидно, что метод итераций более целесообразный

для случая, когда возможно получить решение задачи не более

1чем за —и итерации, т. е. он выгоден при решении уравнении

больших размерностей.

Логическая схема итерационных методов очень проста, поэтомукомпьютерные программы короче, чем в методе Гаусса.

Итерационные методы позволяют распараллеливать алгоритм,что дает возможность эффективно решать уравнения на много-процессорных компьютерах.

Недостатки итерационных методов в том, что они требуют отпользователя проверки условий сходимости итераций, и если ус-ловия не выполняются, то преобразовывать исходные уравненияк виду, когда обеспечивается сходимость итерационного процес-са. Кроме этого, итерационные методы требуют выбора началь-ных приближений. Все это существенно усложняет компьютер-ные технологии решения уравнений.

8.4. Компьютерные технологиирешения систем линейныхалгебраических уравненийв среде MATLABРассмотрим следующие способы решения систем линейныхуравнений средствами MATLAB:

• способ вычисления определителей матрицы коэффициентовсистемы уравнений;

Page 192: MATLAB для студента

Алгоритмы и технологии решения уравнений 191

• матричный способ;

• с помощью функции solve ();

• с помощью встроенной функции nnls ().

8.4.1. Решение системы линейных уравненийс помощью определителейПусть D — главный определитель матрицы коэффициентов сис-темы уравнений, dk — частный определитель, образованный за-меной коэффициентов при к -м неизвестном системы уравненийна коэффициенты правых частей уравнений (свободных членов).Тогда неизвестное хк вычисляется по выражению:

D

Приведем примеры решения уравнений методом определителей.

! Пример 8.11

Необходимо решить следующую систему линейных уравнений:

2х, + х2 - Зд:3 = 1

щ - х2 + 2д:3 =18

I X] i- J * 2 -I- Л3 — J

Методом определителей решение системы будет иметь вид:

1

18

3

1

-1

5

-3

2

1

1

18

3

_з21

217

1-1

5

1183

D D D

217

1-15

_з21

Page 193: MATLAB для студента

192 Глава 8

Теперь представим определители в виде матриц:

dxl = [1, 1, -3; 18, -1, 2; 3, 5, 1]dx2 = [2, 1, -3; 1, 18, 2; 7, 3, 1]dx3 = [2, 1, 1; 1, -1, 18; 7, 5, 3]D = [2, 1, -3; 1, -1, 2; 7, 5, 1]

Тогда программа вычисления неизвестных будет иметь вид:

» xl = det(dxl) / det(D);

» х2 = det(dx2) / det(D);

» хЗ = det(dx3) / det(D);

» X = [xl, x2, x3]

X •

6.7111 -9.0222 1.1333

Недостаток метода определителей состоит в том, что он требуетобразования числа матриц на одну больше, чем число неизвест-ных.

8.4.2. Матричный метод решения системлинейных уравненийПусть А — матрица коэффициентов системы уравнений, В —вектор свободных членов, X — вектор неизвестных. Тогда неиз-вестные определяются по одному любому из следующих выра-жений:

X = А \ В

X = i n v ( A ) * В

! Пример 8.12

Решить систему уравнений предыдущего примера:

2х] + х2 - Зх3 = 1

х, - х2+ 2х3 = 18

7х] +5х2+ х3=3

Page 194: MATLAB для студента

Алгоритмы и технологии решения уравнений 193

В данном случае

А =

2 1 - 3

1 -1 2

7 5 1

= [Х],х2,х3]

Тогда решение будет иметь вид:

» А = [2,1,-3; 1,-1,2; 7,5,1];

» В = [1;18;3];

» X = inv (A) * В

ans =

6.7111

-9.0222

1.1333

MATLAB позволяет решать системы линейных уравнений в ана-литическом виде, когда коэффициенты уравнений являются сим-вольными переменными. Для этого необходимо определить сим-вольные переменные с помощью встроенной функции syms x, гдех — перечень символьных переменных, которые отделяются про-белами.

! Пример 8.13

Необходимо решить следующую систему уравнений:

(ох, + Ьх2 = 1

ex, +dx2=3

Решение:

» syms а Ь с d;

» А = [ a , b ; c , d ] ;

» В = [ 1 ; 3 ] ;

» X = inv (А) * В

7 3ак. 1196

Page 195: MATLAB для студента

194 Глава 8

Запишем ответ в виде, удобном для чтения:

d ЪЪ

ad - be ad - be

с За• + •

ad -be ad - be

Программа позволяет решать уравнения в случае, когда коэффи-циенты являются числами комплексными.

! Пример 8.14L... .*:.'; L;1..; ;. : ....:........Решить следующую систему уравнений:

[-х, + 2х2 = 3 - 2г

Решение имеет вид:

» А = [ 2 , 3 + i ; - 1 , 2] ;

» В = [ - 1 ; 3 - 2Д.] ;

» X = i n v ( A ) * В

X =

- 1 . 7 6 + 0 . 6 8 i

0 . 6 2 - 0 . 6 6 i

8.4.3. Решение систем линейных уравненийс помощью функции solvef)Функция solve () в случае решения систем уравнений имеет вид:

solve («fj.1, 'f2\ . . . , 'fn ')solve ('fi', 'f2', . . . , 'fn\ x l f x2, . . . , xn)

где:

• ' f i' — i-Q уравнение системы, /=1,2,..., n;

• ху — /-e неизвестное, / = 1,2, ..., n.

Каждое уравнение системы берется в одинарные кавычки и отде-ляется от предыдущего запятой.

Page 196: MATLAB для студента

Алгоритмы и технологии решения уравнений 195

Перед функцией solve о необходимо с помощью функции symsопределить символьные переменные.

Технологию решения системы уравнений рассмотрим на при-мере.

| Пример 8.15

Пусть необходимо решить следующую систему уравнений:

Зх+ у- z = 3

х+ у+ z = 0.5

Программа решения системы уравнений имеет вид:

» syms х у z;

» Y = s o l v e ( ' 3 * x + y - z = 3 ' , ' - 5 * x + 3 * y + 4 * z = l ' , 'x+y+z=0,5 ')

После нажатия клавиши <Enter> получим ответ в следующемвиде:

х : [ l x l sym]

у : [ l x l sym]

z : [ l x l sym]

Программа задачу решила, но не выдала значения неизвестных х,у, z. Для их получения необходимо воспользоваться командойY.k, где к— имя неизвестного. В нашем'случае решение будетиметь вид:

» Y.X

ans =-.10714

» Y.yans =

1.96428» Y.zans =

-1.35714

Page 197: MATLAB для студента

196 Глава 8

Можно также использовать функцию

vpa (Y. к,п)

где:

• к — искомое неизвестное;

• п — число знаков ответа.

Получим решение с числом знаков п=5:

» vpa(Y.x, 5)

ans =

0.10714

» vpa(Y.y, 5)

ans =

1.9642

» vpa(Y.z, 5)

ans =

1.3571

8.5. Компьютерные технологиирешения системнелинейных уравненийРешение систем нелинейных уравнений в MATLAB осуществля-ется функцией fsolve (), которая имеет вид:

fsolve ( ' f i le ' , xO)

где file — система уравнений, сохраненная в т-файле.

• - • • • • • • ; • • • ; ; • ; • • . . . . . , , , . . • » • • • :

| Пример 8.16 |

Пусть необходимо решить следующую систему нелинейныхуравнений:

х, + хъ =6.5

Page 198: MATLAB для студента

Алгоритмы и технологии решения уравнений 197

Представим систему уравнений в виде функции пользователя сименем myfun и сохраним ее в файле myfun.m.

Пусть содержимое файла имеет вид:

Funct F = myfun (x)F - [ х ( 1 ) * х ( 2 ) + х ( 3 ) - 6 . 5 ; Х ( 1 ) * х ( 2 ) Л 4 + х ( 3 ) - 1 6 7 ;

х ( 1 ) * х ( 2 ) л 6 + х ( 3 ) - 1 4 7 0 ]

Программа и результаты решения имеют вид:

» хО = [ 1 ; 1 ; 1 ] ;

» X = f s o l v e ( ' m y f u n ' , хО)

После нажатия клавиши <Enter> получим следующее решение:

х -2.1512

2.9678

0.1157

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

Такими функциями ЯВЛЯЮТСЯ: bicq(), cqs(), qmresf), qmr(). Опи-

шем кратко эти функции и приведем примеры решения системлинейных уравнений.

Функция bicq () имеет вид:

b i c q ( A , В)

где:

• А — матрица коэффициентов системы уравнений;

• в — вектор свободных членов.

Функция вычисляет неизвестные методом итераций.

За начальные приближения по умолчанию принимает нулевойвектор длиной п, где п — число неизвестных. Количество ите-раций определяется либо по максимальному их числу (20 по

Page 199: MATLAB для студента

198 Глава 8

умолчанию), либо по достижению относительной погрешности(по умолчанию КГ6).

Функция имеет несколько модификаций. Приведем две:

• bicq(A,B,toi) — выдает решение с погрешностью toi;

• bicq(A,в, tol,maxit)— выдает решение с погрешностью toiпри заданном числе итераций.

! Пример 8.17

Пусть необходимо решить следующую систему уравнений:

fl.5*, +2.7*2+0.75*3=1.8

6JC, — х2+ 3*з = - 1 ^

X] + 1х2 - 4х3 = 3

Решение выполним с помощью функции bicq() и ее модифика-ций при tol-1.е-4 И maxit=15.

Решение:

» А = [ 1 . 5 2 . 7 0 . 7 5 ; 6 - 1 3 ; 1 7 -4 ] ;

» В = [ 1 . 8 ; - 1 ; 3 ] ;

» y l = b i c q ( A , В) ;

» у2 = b i c q ( A , B , 0 . 0 0 0 1 ) ;

» уЗ = b i c q ( A , B , 0 . 0 0 0 1 , 1 5 ) ;

» Y = [ y l , y 2 , уЗ]

Y =

- 0 . 2 5 2 4 - 0 . 2 5 2 4 - 0 . 2 5 2 4

0 . 6 9 4 9 0 . 6 9 4 9 0 . 6 9 4 9

0 . 4 0 3 0 0 . 4 0 3 0 0 . 4 0 3 0

Во всех случаях ответ одинаков. Это объясняется тем, что дан-ный ответ при используемом числе итераций является точным.

Функция cqs()Функция cqs () представляется в следующем виде:

c q s (А, В)

c q s (А, В, t o i )

c q s ( А , В, t o i , m a x i t )

Page 200: MATLAB для студента

Алгоритмы и технологии решения уравнений 199_

Этой функцией реализуется так называемый квадратичный ме-тод сопряженных аргументов. Итерационный процесс начинает-ся с нулевой итерации (нулевой вектор начальных значений).Число итераций определяется по одному из следующих при-знаков:

• число итераций задается пользователем;

• сходимость итерационного процесса;

• погрешность результата.

;| Пример 8.18

Необходимо решить с помощью функции cqs() систему уравне-ний предыдущего примера. Решение необходимо получить, ис-пользуя функцию

c q s ( А , В )

и ее модификации.

Программа решения задачи такая же, как и в примере 8.16, толь-ко имя функции будет не bicq (), a cqs (). Ответ получается преж-ним, поэтому нет смысла его приводить.

Функции qmreso и qmr() решают систему линейных уравненийметодом итераций, используя соответственно метод минимиза-ции обобщенной невязки и метод квазиминимизации невязки [9].Они имеют те же модификации, что и функция bicq о. Техноло-гия решения уравнений не отличается от рассмотренных выше.

8.6. Варианты уравненийдля индивидуального решенияДалее приводятся два задания для индивидуального решениясистем уравнений с помощью MATLAB.

Задание 1. Решение системлинейных алгебраических уравненийРешить приведенные в табл. 8.4 системы уравнений матрич-ным методом, методами Гаусса и Ньютона, методом итераций.

Page 201: MATLAB для студента

Таблица 8.4. Системы линейных уравнений

1

3

5

7

9

Система уравнений

1.5*,- 0.8*2+ 4.25*. =5.1

• 1.2*,+7.18*2- 3.2л:3=4.2

0 . 5 * , - 1 . 5 * 2 + 7 . 1 Д Г 3 = — 1 . 2

Г-1.32*, + 2.15*2 + 7.6Л, = -1.4

J2.62x,+6.1x2-4.12*3=5.6

|8.3*,-2.84*2-1.5*з=-6.5

[ 7 . 1 2 * , - 6 . 6 6 * 2 + 2 . 6 Х 3 = - 3 . 1

j-1.76*, + 6.5х2 -0.87x3 =2.85

[0.65JC, + 0.87х, - 8.7х3 = 5.56

[9.2Ц-1.84х2 +0.7*3 =-3.2

|-6.17х, +8.5х2 -2.87х3 =-3.75

[ 0 . 7 Л , + 0 . 8 7 * , - 8 . 7 * . = 2 . 6 4

6 . 9 * , + 2 . 3 * 2 + 1 . 2 1 * 3 = 3 . 1

• -*,+2.3* 2 -3.4*з =-2.3

0.21*,+0.43*2-6.3*3=3.6

2

4

6

8

10

Система уравнений

["6.7*,-0.6*2 + 0.83*з =6.8

JO.8*,+1.1*2-7.2*з =5.2

[1.2*,-5.4*2+ 0.54*з =-3.2

0.5Ц -10.2*2 -3.62*з =-2.05

3.09*, +1.23*2 - 4Мхз = - 5-6

3.2*,-2.31*2-8.4*3=6.1

[6.4*, -0.73*2 + 2.1*3=3.8

|-1.07*,+3.8*2-1.5*з =-1-2

[2.7*,-3.1*,+4.2*з =-7.5

Г4.3*,-1.2*2+10.3*3=4.2

|о.2Ц+6.2*2+3.54*з =5.1

[-0.31*,-0.52*2+ 3.6*з =-2.1

[12.4*,-0.56*2+4.2*з =6.3

| -0.65*. + 4.4*2 +1.5*з = 1.5

[1.5*,+2.1*2-2.8*з = 1.7

Page 202: MATLAB для студента

Таблица 8.4 (окончание)

11

13

15

17

19

Система уравнений

1.2х,+1.06х2 + 6.7х3=2.12

4.2*, -6.3х 2 -ОД», =-1.1

0.6х,+6.8х 2-0.82хз=0.83

6.5*,+2.34х 2+1.4х 3=2.8

0.5л,+ 7.3*2-2.4*3 =-3.8

8.6х, + 0.34х2 - 6.4х3 = 0.64

6х, +0.13*2-0.67*3 = 1.9

3.8х,+1.25х2-4.3хз = 6.4

0.38х,-0.64х2-3.2х3 = 5.4

6.2*, -0.52*2+2.3*з =-1.8

-4.2х,+3.4х 2 -0.5* 3 = 0.7

0.2х,+0.8х2 + 3.6х3=3.2

8.4xi-0.25*2+3.1*3 =-5.7

-0.3*,+ t6.1*2-1.54*j =3.3

-6.8*, + 1.2*2-7*3=4.5

12

14

16

18

20

Система уравнений

9.7*, +0.35* 2 -1.84*з=2.15

4.64*, -7.1*2-4.3*3=1.5

0.32*,+3.48*2-3.3х3 =-3.1

2.8х,+4.3*2-3.7х 3=5.1

-0.45*, + 8.24*2 + 4.8*3 = 5 А

О.54х, + 2.3х2 + 3.7хз=1.54

1.5х,-2.6х2 + 7хз=-11.2

6.6*,+1.3х 2-1.24хз=5.3

0.85*, -8.4*2 +4.7х 3 = 1.6

0.63*, - 0.54*2 +1.7*3 =3.6

0.65х,+4.4х2 + 0.15х3 = 2.3

1.5*, + 0.2х2 + 4.1*з = 2.8

[12*, + 4.2х2-0.8*з =-5.4

| - 4 . 1 Х 1 + 2 . 2 Х 2 - 0 . 1 6 Х З = ] . 6

[-1.6*, -4.3*2 +"8.4*з = 12,2

Page 203: MATLAB для студента

Таблица 8.5. Системы нелинейных уравнений

1

5

7

9

11

Система уравнений

fsin(jc, +X,)-1.24т, =0.1

{*,2+лг2 = 1

hg(Xlx2+0.2) = xfJO.6:*,2 + 2x\ = 1

[sinx, + 2sinx, =1[2sin3jc,+3sin3jr2=0,3

jtg (*i-*2) -4^=0[х,2 + 2х2=1

L4+x2

2-3 = 0

[x,3+^3-4 = 0

JsinAr, -JC2 =1.3

[cos^-x, =-0.82

Начальныеприближения

JC, = 0.74

x, = 0.67

x, = 0.88

* 2=0.52

Л:, =1.08

x2 = 0.06

x, = -0.5

д:2 = 0.6

x, = 0.95

д;2=1.4

x,=1.8

x 2 = - 0 . 3 5

2

4

6

8

10

12

Система уравнений

[sin(;t2 +1)-лг, =1.2

[2д:2 +COS.X, = 2

JCOS(JC 2 - l ) + jr, = 0 . 5

[ х 2 - C O S J C , = 3

|л- 2д: 2-д: 2-9 = 0

[дг,дг2 - х\ +10 = 0

I AT, + х2 — Х|Д:2 = 0

[ s i n f x , + x , ) - - 2 . 4 x + 3.2 = 0

[lxxx\-Ax2- 7.5 = 0

{ . v 2 - 3 V 2 + 4 . 5 = 0

[sin*+ 2 cos х - 0.8 = 0

[х^г+Здг,-4.5 = 0

ft)

Page 204: MATLAB для студента

Таблица 8.5 (окончание)

13

15

17

19

Система уравнений

\х1+х1

2-6х]+3 = 0

\х>-х\-6х2 = 2

{*2+е*-** = 0

\х,+ех^- = 0

Jjr,2x2-8jt,+5.5 = 0

[дг,дг2+3^2-10 = 0

|е г '+2д: 2 1пл: 1 -3 = 0

\х*хг- Зл,+5.4 = 0

Начальныеприближения

х, = 0.52

д:2=-0.37

х, = -0.7

л2=-0.35

14

16

18

20

Система уравнений

1 ^ - ^ - 1 8 . 7 5 = 0

[*, + л 2 - 8.25 = 0

[jcf+3x^-4 = 0

\х\ sin Л:, + х\ sin JT, +1 = 0

[ 2 ^ + e ( X ! + X 2 ) - 4 = 0

fsinjCj +3.5sin.x2 - 1 = 0

[2sin3jc + 3s in2x 2 -0.4 = 0

Page 205: MATLAB для студента

204 Глава 8

Сравнить результаты этих методов, указав их достоинства и не-достатки.

Примечание

При решении системы уравнений методом итераций преобразуйтеисходную систему к виду, когда итерационный процесс сходится.Решите задачу при точности определения неизвестных 3, 10 и20 знаков после запятой. Объясните результаты решения.

Задание 2. Решение системнелинейных алгебраических уравненийРешить нелинейные системы уравнений методами Ньютона иитераций (табл. 8.5).

( Примечание

В уравнениях с нечетными номерами указаны значения начальныхприближений (кроме № 17 и 19). В уравнениях с четными номераминачальные приближения должны быть определены учащимися. Таккак система уравнений имеет второй порядок, то области начальныхприближений легко найти графическим способом.

Page 206: MATLAB для студента

ГЛАВА 9

Решение дифференциальныхуравнений

9.1. Формулировка задачиПредставим дифференциальное уравнение первого порядка вследующем виде:

/ = /(*)» (9.1)

и пусть у{хо) = уо —начальные условия его решения.

Тогда решением уравнения является функция _у = ср(х), которая,

будучи подставленной в исходное уравнение, обратит его в тож-дество и одновременно будут выполняться начальные условия.Эта задача в математике называется задачей Коши.

Задача Коши при решении дифференциального уравнения «-гопорядка

/n)=f(x,y,y',...,/-">) (9.2)

формулируется аналогично, при этом должны быть удовлетворе-ны следующие п начальных условий:

(9.3)

Page 207: MATLAB для студента

206 Глава 9

При численных методах решения дифференциального уравненияп -го порядка уравнение представляется в виде системы диффе-ренциальных уравнений первого порядка, разрешенных относи-тельно производной. Такое представление осуществляется введе-нием новых переменных.

Обозначим у'=яу1, y'l=y2t..., у'п_2 = уп_] и подставим новые пе-

ременные в исходное дифференциальное уравнение.

Получим следующую систему дифференциальных уравнений:

У ~У\>

У'\ = У г.

(9.4)

У»-2=Уп-\

y(n)=f{x,y,yx,...,yn_x).

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

Существуют две группы приближенных методов: аналитическиеи численные. Рассмотрим кратко эти методы.

9.2. Приближенныеаналитические методы решениядифференциальных уравнений

9.2.1. Метод последовательногодифференцированияРешение дифференциального уравнения п-го порядка в виде(9.2) при начальных условиях (9.3) можно разложить ъряд Тепло-

Page 208: MATLAB для студента

Решение дифференциальных уравнений 207

pa. Можно доказать, что при определенных условиях ряд Тейлораявляется приближенным решением исходного дифференциально-го уравнения.

Ряд Тейлора функции jy = (p(x) имеет вид:

(9.5)

( , X o ) +

Из выражения (9.5) видно, что п его первых членов у(х0),

у'(х0),..., у^"~])(х0) известны, т.к. они являются начальными

условиями решения задачи. Это означает, что искомое прибли-женное решение дифференциального уравнения может быть за-писано в виде степенного ряда степени п-\ непосредственно (нерешая уравнения) по известным начальным условиям.

Для определения остальных членов степенного ряда (9.5) необхо-

димо знать производные у ' (х0), у(" (х 0),..., у ' (л'о),...

Производная jv(n)(x0) вычисляется из исходного дифференци-

ального уравнения (9.2), если подставить в его правую часть зна-

чения х, у, у',..., у{п~Х) из начальных условий. Производные

У"+ | >(х 0),..., yik)[x0),... можно вычислить путем последова-

тельного дифференцирования исходного уравнения (9.2) и вы-

числения правых частей производных в точках

X = XQ ,

Page 209: MATLAB для студента

208 Глава 9

Число членов степенного ряда (9.5) определяется из условия тре-буемой точностью решения дифференциального уравнения.

9.2.2. Метод неопределенныхкоэффициентовСущность метода покажем на примере решения дифференциаль-ного уравнения второго порядка вида:

y" + P{x)y' + Q(x)y = R{x) {9.6)

при начальных условиях у(х0) = у0, у'(х0 ) = у'о.

Пусть следующий степенной ряд является решением дифферен-циального уравнения (9.6):

(9.7)и=0

Тогда неизвестными решения являются коэффициенты с„. Для

их определения разложим в степенной ряд функции Р{х), Q{x),

и=0

п=0

( 9 . 8 )

п=0

Page 210: MATLAB для студента

Решение дифференциальных уравнений 209

Продифференцируем дважды искомое решение (9.7):

v'(x) = Ync х"~] , (99)

y"(x) = Yjn(n-\)cnx'"2 . (9.10)и=2

Подставим теперь (9.7), (9.8), (9.9), (9.10) в исходное уравнение(9.6). В результате получим:

оо со со со

/,=2 /,=0 я-1 »-0 «=0 ( 9 П )

л=0

Для определения коэффициентов с„ достаточно приравнять ко-эффициенты при одинаковых степенях х и решить систему ал-гебраических уравнений. Коэффициенты с0 и с, при этом опре-деляются из начальных условий. В выражении (9.11) находятсябесконечные степенные ряды. При решении практических задачограничиваются определенным числом членов рядов из условийточности результатов.

9.2.3. Методпоследовательных приближенийПриближенное решение дифференциального уравнения (9.1)можно найти по следующей рекуррентной формуле:

х

У. (*) - Уо (х) + J / ( * . У„-\ ) d x ' (9.12)*<>

где у0 (х) — начальное приближение, f(xtyn_x) — правая часть

исходного дифференциального уравнения, полученная на («-1)-м

приближении.

Page 211: MATLAB для студента

210 Глава 9

В качестве начального приближения можно взять любую функ-цию, достаточно близкую к точному решению. В качестве на-чального приближения можно взять частичную сумму степенногоряда или начальное условие у(х0).

9.3. Численные методы решениядифференциальных уравнений

9.3.1. Метод ЭйлераЧисленное решение дифференциального уравнения первого

порядка у' = f(x,y) при начальных условиях у{хо) = уо по

методу Эйлера находится в виде табл. 9.1.

Уо

Таблица 9.1.

У\

Таблица решения

хг

Уг

дифференциального уравнения

Уп

Значения х0 yQ являются начальными условиями решения урав-

нения. Первая строка таблицы при известном х0 и шаге h вы-

числяется по соотношениям:

х, = х0 + h,

х, = х, + h,

Значения функции у0, ух, •••, у„ вычисляются по рекуррентной

формуле Эйлера.

Разложим функцию >> = ф(х), являющуюся решением исходного

уравнения, в ряд Тейлора:

Page 212: MATLAB для студента

Решение дифференциальных уравнений 211

Вычислим значение функции в точке х = х, = х0 + h :

+-

Ограничиваясь первыми двумя членами разложения, получим:

У(Х{) У(ХО)+(Х]

Так как *, - х0 = h, а у (jr0) = / ( * 0 , 0 ) , то

Принимая х,, ух за начальные условия и приводя те же рассуж-

дения, что при вычислении функции у(х]), получим:

V i ' Уп-\) •

Из этих выражений видно, что значения ух, у2, ..., уп табл. 9.1могут быть вычислены по следующей рекуррентной формуле Эй-лера:

( ) (9-13)

Из вывода формулы (9.13) следует, что метод Эйлера основан на

линейном разложении функции f(x, у) на участке h с после-

дующей экстраполяцией решения за пределы этого участка.

Page 213: MATLAB для студента

212 Глава 9

Ошибка метода возникает за счет отбрасывания членов ряда Тей-

лора и имеет порядок h2.

Метод Эйлера позволяет решать системы уравнений и дифферен-циальные уравнения высокого порядка.

9.3.2. Усовершенствованные методыЭйлераМетод Эйлера дает большие погрешности, возрастающие от ите-рации к итерации. Усовершенствованные методы Эйлера даютрешение с большей точностью. Все они относятся к так называе-мым методам прогноза и коррекции.

Метод Эйлера — КошиПо этому методу дифференциальное уравнение первого порядка

вида y' = f(x,y) при начальных условиях у{хо) = уо решается

по следующей рекуррентной формуле:

где ум вычисляется по методу Эйлера, т. е.

Погрешность метода — порядка /г3.

Усовершенствованный метод ЭйлераПо этому методу дифференциальное уравнение первого порядкарешается по формуле:

гдеh2 f+l

Page 214: MATLAB для студента

Решение дифференциальных уравнений 213

Погрешность этого метода такая же, как и усовершенствованногометода Эйлера — Коши.

Усовершенствованный метод Эйлера — Кошис итерационной обработкой результатов

По этому методу дифференциальное уравнение первого порядкарешается по формуле:

В формуле (9.16) у)к

+\^ является начальным приближением ите-

рационного процесса и определяется по формуле Эйлера, т, е.

.V°+i =У,+У/{хпУ,)-

Признаком окончания итерационного процесса является условие:

Ум Ум <е. (9.17)

Из выражения (9.16) и условия (9.17) видно, что идея метода со-стоит в следующем. По формуле Эйлера (9.13) находится реше-ние на (/' + 1)-м шаге, которое является на этом шаге первым при-ближением. Данное приближение используется для образованияитерационного процесса на основе формулы усовершенствован-ного метода Эйлера— Коши. Признаком окончания итерацион-ного процесса является условие (9.17). Погрешность метода —

порядка А3 на каждом шаге итераций.

9.3.3. Метод Рунге — КуттыМетод Рунге — Кутты обладает более высокой точностью, чемметоды Эйлера за счет уменьшения методических ошибок. Идеяметода состоит в следующем.

По методу Эйлера решение дифференциального уравнения пер-вого порядка определяется из соотношения:

Page 215: MATLAB для студента

214 Глава 9

где

Тогда приращение Ду, может быть найдено путем интегриро-

вания:

У, = f y'{x,y)dx= J f(x,y)dx.

Или окончательноХМ

м=У/ + \ f{x,y)dx.

Вычислим теперь интеграл по методу прямоугольников:

Ум = У,+ {хм ~xi)f ( »У,•) = У, + ¥(*/у У,)•

Из полученного выражения видно, что вычисление интеграла пометоду прямоугольников приводит к формуле Эйлера.

Вычислим интеграл по формуле трапеций:

Ум = У\+ х . Ум

Из выражения видно, что оно совпадает с расчетной формулойусовершенствованного метода Эйлера — Коши.

Для получения более точного решения дифференциального урав-нения следует воспользоваться более точными методами вычис-ления интеграла.

В методе Рунге — Кутты искомый интеграл представляется в ви-де следующей конечной суммы:

Ум =У,+ I f (*>х,

= у, (9.18)'=!

где Pi — некоторые числа, зависящие от q ; K^h) — функции,

зависящие от вида подынтегральной функции f(x,y) и шага

интегрирования h; они вычисляются по следующим формулам:

Page 216: MATLAB для студента

Решение дифференциальных уравнений 215

Значения /;, a , p получают из соображений высокой точности

вычислений.

Формулы Рунге— Кутты третьего порядка (q = 3) имеют сле-

дующий вид:

K^hf(xi+h,yi+Ki+2K2).

Наиболее часто используется метод Рунге— Кутты четвертогопорядка, для которого расчетные формулы имеют вид:

(9.19)

Page 217: MATLAB для студента

216 Глава 9

Формулы Рунге — Кутты имеют погрешности порядка h'l+] . По-

грешность метода Рунге — Кутты четвертого порядка имеет по-

рядок И5.

9.4. Компьютерные технологиирешения дифференциальныхуравненийСистема MATLAB позволяет решать дифференциальные уравне-ния и системы высокого порядка с табличным и графическимпредставлением результатов.

Функциями решения дифференциальных уравнений являютсяode23 () и ode45 (), имеющие вид:

[t, x]=ode23('fun\ to, tf, xO)[t, x]=ode45('fun\ tO, tf, xO)[t, x]=ode23('fun\ tO.tf.xO, tol, trace)[t, x]=ode45('fun', tO.tf.xO, tol, trace)

где:

• 'fun' — имя m-файла, в котором содержатся правые частисистемы дифференциальных уравнений;

• to — начальное значение аргумента;

• tf — конечное значение аргумента;

• хО — вектор начальных условий;

• t o l — задаваемая точность, по умолчанию, для ode23() —l.e-З, для ode45() — l.e-6;

• trace — выдача промежуточных результатов.

Наиболее часто дифференциальными уравнениями описываютсяпроцессы, протекающие во времени. То.гда переменной интегри-рования является время.

Функции ode () реализуют численные методы Рунге — Куттытретьего, четвертого, пятого и шестого порядков с автоматиче-ским выбором шага.

Page 218: MATLAB для студента

Решение дифференциальных уравнений 217

Технология решения дифференциальных уравнений в системеMATLAB такова:

1. Создание новой функции, представляющей собой m-файл вы-числения правых частей системы дифференциальных урав-нений.

2. Ввод функции ode ().

3. Получение решения нажатием клавиши <Enter>.

На экране получим решение в виде таблицы с числом столбцовравном числу неизвестных.

Система позволяет получить график функции. Для этого необхо-димо воспользоваться функцией plot [t, x].

I Пример 9.1 I

Необходимо определить вероятности состояний многоканальнойсистемы массового обслуживания (СМО) с отказами. Задачаформулируется следующим образом. Система массового обслу-живания состоит из трех обслуживающих органов. Интенсив-ность потока заявок на обслуживание a = 0.1 1/ час, интенсив-ность обслуживания заявок равна /и = 1.2 1/час. Необходимо оп-ределить вероятности всех состояний системы.

Число состояний системы в данном случае равно четырем:

• 1 — система свободна от обслуживания;

• 2 — один обслуживающий орган занят обслуживанием, ос-тальные свободны;

• 3 — два обслуживающих органа заняты, один свободен;

• 4 — все три обслуживающих органа заняты, очередной заявкебудет отказано в обслуживании.

Функционирование системы можно описать следующей системойдифференциальных уравнений:

Page 219: MATLAB для студента

218 Глава 9

dt

dt

• = аЦ (/) - (а + т) Р2 (t) + 2тР3 (/),

dt J W

В системе уравнений Р} — вероятность /' -го состояния системы,

/ = 1,2,3,4.

Будем анализировать функционирование системы, начиная с со-стояния, когда система свободна от обслуживания. В этом случаеначальными условиями решения системы дифференциальныхуравнений будут:

Будем решать систему уравнений по описанной выше техно-логии.

1. Создание m-файла функции вычисления правых частей диф-ференциальных уравнений.

Пусть имя файла— sisdu.m, тогда функция может иметь сле-дующий вид:

Function CMO=sisdu(t,p)yl=-0.1.*P(l)+1.2.*P(2);у 2 = 0 . 1 . * Р ( 1 ) - 1 . 3 . * Р ( 2 ) + 2 . 4 . * Р ( 3 ) ;

у З = 0 . 1 . * Р ( 2 ) - 2 . 5 . * Р ( 3 ) + 3 . 6 . * Р ( 4 ) ;

у 4 = 0 . 1 . * Р ( 3 ) - 3 . б . * Р ( 4 ) ;

С М О = [ У 1 , у 2 , у З , у 4 ] ;

2. Ввод функции ode о :

» t0=0; tf=0;x0=[l,0,0,0];» [t,P]=ode23('sisdu'jtO, tf,xO)

Page 220: MATLAB для студента

Решение дифференциальных уравнений

3. Решение.

219

После нажатия клавиши <Enter> получим решение в виде сле-дующей таблицы:

t

0

0.0008

0.0048

0.0248

0.0907

0.1858

Р(1)

1

0.9999

0.9995

0.9976

0.9914

0.9885

Р(2)

0

0.0001

0.0005

0.0024

0.0085

0.0164

Р(3)

0

0.0000

0.0000

0.0000

0.0000

0.0001

Р(4)

0

0.0000

0.0000

0.0000

0.0000

0.0000

2.2571 0.9210 0.0758 0.0031 0.0001

3.6429 0.9202 0.0765 0.0032 0.0001

4.7109 0.9201 0.0767 0.0032 0.0001

5.9984 0.9200 0.0767 0.0032 0.0001

При желании можно воспроизвести решение в виде графика, дляэтого нужно воспользоваться функцией plot ():

» plot(t,P)

Решение системы дифференциальных уравнений позволяет сде-лать ряд важных выводов:

• время переходного процесса в системе мало, оно равно 6 ча-сам;

• система обладает высокой готовностью в любой момент "вре-мени принять заявку на обслуживание;

• вероятность обслуживания заявки в любой произвольный мо-

мент времени равна Р(\) + Р{2) + />(3) = 0.9999 .

Page 221: MATLAB для студента

ГЛАВА 1 0

Алгоритмы и технологиивычисления интегралов

10.1. Методы и алгоритмывычисления интеграловСистема MATLAB позволяет вычислять неопределенные и опре-деленные интегралы, первообразные которых заданы в виде ана-литических выражений. Она также имеет большое число спосо-бов численного интегрирования.

Численное интегрирование необходимо в следующих случаях:

• первообразная не выражается через элементарные функции;

• аналитическое выражение интеграла слишком сложное;

• подынтегральная функция задана в табличной форме или ввиде матрицы.

При вычислениях интегралов численными методами подынте-гральную функцию целесообразно представлять в наиболее про-стом виде. Это может ускорить вычисления. Упрощение подын-тегральной функции можно выполнить, воспользовавшись функ-циями simplify о и factor о. Имеют место случаи, когда системадо упрощения не может вычислить неопределенный интеграл илегко его определяет после упрощения.

Метод вычисления интеграла выбирает пользователь. В этомособенность системы MATLAB. С помощью MATLAB студентимеет возможность сравнивать различные методы численногоинтегрирования.

Page 222: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 221

Существует ряд способов численного интегрирования. Во всехтаких способах вычисление осуществляется по приближеннымформулам, называемым квадратурными. Приведем некоторыеиз них.

10.1.1. Формулы прямоугольниковФормулы прямоугольников представляются в следующем виде:

\f{x)dx =

и-1

i=0л

( 1 0 . 1 )

где:• h — шаг интегрирования;

• ук — значение подынтегральной функции при аргументе хк,

к = 0, 1,2, ..., п\

Ь-а •

• п = число частей, на которые разбивается область ин-h

тегрирования а , b .Одна из формул дает значение интеграла с избытком, другая —с недостатком. Какая из них выдает решение с избытком или снедостатком, зависит от вида подынтегральной функции.

10.1.2. Формула трапецийЭта формула имеет вид:

и-1

4=1

(Ю.2)

где:• у0 — значение подынтегральной функции при х-а;

• уп — значение подынтегральной функции при х-Ь;

• h — шаг интегрирования.

Page 223: MATLAB для студента

222 Глава 10

10.1.3. Формула парабол (Симпсона)

Эта формула имеет вид:

jf(x)dx = -(y0 +4 (10.3)

В этой формуле ординаты с нечетными индексами умножаютсяна 4, а с четными — на 2. Предполагается, что п — число четное.При нечетном п формула имеет вид:

* h= -(yo+4yl+2y2+4y3+2yi+4y5+... + 2yn_]+yn).

aКрайние ординаты имеют коэффициент, равный 1.

Существует много других квадратурных формул вычисления ин-тегралов: Котеса, Чебышева, Гаусса и др.

Вычисление интеграла с помощью квадратурных формул требуетзнания числа п области интегрирования [a; b\. Значение п вы-бирается из условий требуемой точности вычисления интеграла.Зависимости погрешности 8 от и в общем случае не существует.Поэтому для обеспечения точности программы вычисления инте-гралов используют следующий алгоритм. Определенный инте-

, hграл вычисляется дважды: с произвольными шагами пи—. Если

при этом разность интегралов мала, то вычислительный процессзаканчивается, а значением интеграла считается то, которое вы-

hчислено с шагом —, в противном случае шаг уменьшается вдвое

h hи сравниваются значения интеграла с шагами — и — и т. д.

2 4Вычисление интеграла численными методами посредствомMATLAB может оказать большую помощь учащемуся приизучении численных методов и программирования. Применяя

Page 224: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 223

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

10.2. Численные методы вычисленияинтеграла в системе MATLABВ системе MATLAB вычисление интегралов реализовано чис-ленными методами трапеций, парабол (Симпсона) и Ньютона —Котеса.

Опишем технологию вычисления этими методами.

10.2.1. Метод трапецийМетод трапеции реализован в MATLAB несколькими функция-ми, приведенными ниже.

Функция

cumtrapz(у)

осуществляет вычисление интеграла в случае, когда значенияфункции у заданы в виде вектора или матрицы неограниченныхразмеров. Откликом этой функции является п интегралов, гдеп — число элементов вектора или число элементов в каждомстолбце матрицы.

Интегралы вычисляются по методу трапеций, когда значенияфункции у состоят из одного элемента вектора (первого), двухэлементов вектора (первого и второго) и т. д. до последнего инте-грала, когда число значений у равно числу элементов вектора илиэлементов столбцов матрицы (количество элементов в каждомстолбце одинаково).

Такое вычисление интеграла называется интегрированием с на-коплением. Программа вычисляет интеграл с шагом h = 1 , Если

Page 225: MATLAB для студента

224 Глава 10

же ординаты получены с иным шагом, то результат вычисленийинтеграла нужно умножить на h.

j Пример 10.1

Пусть функция у(х) имеет значения, представленные в виде

следующего вектора: у= [1,2,3,4,5,б,7,8,9,10]. Необходимо вы-числить

jy(x)dx.

При этом a = 1, 6 = 1 , 2 , 3,..., 10.

Функция вычисления интеграла методом трапеций будет иметьвид:

» у=[1, 2, 3,4, 5, 6, 7, 8, 9 , 1 0 ] ;

» cumtrapz (у)

После нажатия клавиши <Enter> получим следующий ответ:

ans =0 1.5000 4.0000 7.5000 12.0000 17.5000 24.0000

31.5000 40.0000 49.5000

Проверим правильность вычисления интеграла:

1

Далее воспользуемся формулой трапеций (10.2):

2 2 2 2

Уо.2 2

Page 226: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 225

10

= - + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + — = = 4 9 . 5 .2 2

Возможности этой функции весьма ограничены.

Действительно, пусть необходимо вычислить интеграл вида

10\{хе~х + \nx + \}dx.о

Чтобы вычислить этот интеграл с помощью функции cumtrapz(),следует сначала вычислить 10 ординат подынтегральной функ-ции, представив их в виде вектора.

Программа вычисления интеграла с накоплением будет иметьвид:» х=1:1 :10;

» y = x * e x p ( x ) + l o g ( x ) + l ;

» cumtrapz(у)

После нажатия клавиши <Enter> получим следующий ответ:

0.0067 0.0226

Основным недостатком метода трапеций является большая по-грешность результата вычисления интеграла.

Покажем это на предыдущем примере..

Неопределенный интеграл имеет следующее точное решение:

f(хех + Inх + \)dx •= е"(дс-1)+xlrix .

Тогда определенный интеграл с накоплением, в соответствиис методом Ньютона (разность значений интеграла при верхнем инижнем пределах), будет иметь значения:

8 3ак. 1196

ans —

1

0

0

.Ое+005

.0731

0.

0.

0001

2307

0.

0.

0005

7147

0.

2.

0019

1806

Page 227: MATLAB для студента

226

06593.42

Результат

8.77520883.34

существен

функции cumtrapz ().

43,64844,

,4 67

45

169

198261

но отличается от

.34 601.7

.22

полученного

Глава 10

2027.89

С ПОМОЩЬЮ

Пример 10.2

Функция у(х) является матрицей.

» у= [1,2,3; 2, 3,4; 3,4, 5; 4,5,6] ;

» cumtrapz(у)

ans =

01.

47.

5

5

02.

610.

5

5

03.8

13.

5

5

В каждом столбце исходной матрицы получены значения инте-грала с накоплением.

Функция cumtrapz(x,y)

Эта функция выполняет интегрирование с накоплением функции

у(х) также методом трапеций. При этом х н у могут быть либо

векторами одной и той же размерности, либо х — это вектор-

столбец, а у —- матрица.

Откликом является значение интеграла с диапазоном значений х.

\ Пример 10.3

Функция у(х) задана в виде следующих векторов:

х=[1,3,7,9,10],у=[1,3,5,7,9].

Необходимо вычислить методом трапеций значение интегралас накоплением.

Решение:

» х = [ 1 , 3 , 7 , 9 , 1 0 ] ;

» у = [ 1 , 3 , 5 , 7 , 9 ] ;

» c u m t r a p z ( х , у )

Page 228: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 227

После нажатия клавиши <Enter> получим:

ans =О 4 20 32 40

Здесь вычисления значений интеграла с накоплением на f-м шагеS, осуществляется по формуле:

где:• £(_] — предыдущее значение интеграла;

^ У/> У i+\ — значения функции в начале и в конце интервалаАх;

• [9; 10] — шаг интегрирования на участке [у,; у м ].

Для нашего примера вычисления имеют вид:

• на участке вектора [l; 3]:

• на участке вектора [3; 7]:

• на участке вектора [7; 9]:

U

• на участке вектора [9; 10]:

Page 229: MATLAB для студента

228 Глава 10

Как видно из примера, функция cumtrapz(x,y) вычисляет инте-грал с накоплением при переменном шаге h.

| Пример 10.4

Функция у(х) задана в виде матрицы:

у(х)= [1 3 5; 3 5 7; 4 6 8; 4 7 9; 5 7 10]

При этом аргумент х представляет собой вектор следующего ви-да: х=[1,3, 7, 9,10].

Вычислить значения интеграла.

Программа и результат вычисления интеграла с помощью функ-ции cumtrapz (x,y) имеют вид:

» х=[1 3 7 9 1 0 ] ;

» у=[1 3 5; 3 5 7; 4 6 8; 4 7 9; 5 7 1 0 ] ;

» cumtrapz(х,у)

После нажатия клавиши <Enter> получим:

ans =

04

182630.5

08

304350

012425968.5

Функция trapz(y)

Функция возвращает значение интеграла

\y(x)dx.а

При этом у(х) может быть вектором или матрицей. Если

у(х) — матрица, то функция возвращает вектор значений инте-

грала каждого столбца матрицы.

Page 230: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 229

[Пример 10.5

Необходимо вычислить методом трапеций значение интеграла,

если функция у(х) является следующим вектором:

у = [ 1 , 3 , 5 , 7 , 9 ] . .

Решение:

» у = [ 1 3 5 7 9 ) ;

» t r a p z ( у )

ans =

20

I Пример 10.6 I

Пусть функция у(х) является матрицей, тогда программа реше-

ния будет иметь вид:

» у = [ 1 3 5 ; 3 5 7 ; 4 б 8; 4 7 9; 5 7 1 0 ] ;

» t r a p z (у)

a n s = <

14 23 3 1 . 5

Функция trapz(x,y)

Вычисляет интеграл функции у(х) по х методом трапеций. Ар-

гумент и функция задаются в виде векторов или х — в виде век-

тора, а у — в виде матрицы.

! Пример 10.7 |

Пусть аргумент х и функция у{х) заданы в виде следующих

Векторов: х=[1 3 7 9 1 0 ] , у = [ 1 3 5 7 9] .

Необходимо вычислить интеграл методом трапеций.

Решение:

» х = [ 1 3 7 9 1 0 ] ;

» у = [ 1 3 5 7 9 ] ;

» t r a p z ( x , у }

Page 231: MATLAB для студента

230 Глава 10

После нажатия клавиши <Enter> получим ответ:

ans =40

j Пример 10.8 I

Пусть аргументом функции у(х) является вектор х=[1 3 7 9 Ю],

а фуНКЦИЯ матрицей у= [1 3 5; 3 5 7; 4 6 8; 4 7 9; 5 7 10].

Вычислим значение интеграла методом трапеций, используяфункцию trapz (x, у).

Решение:

» х=[1 3 7 9 1 0 ] ;

» у=[1 3 5; 3 5 7; 4 6 8; 4 7 9; 5 7 1 0 ] ;

» t r a p z ( x , y )

ans =

30.5 50 68.5

Функции trapz (у) и trapz (х, у) допускают аналитическое задание

подынтегральной функции у{х). Однако в этом случае аргумен-

ту х должны быть присвоены численные значения во всем диа-

пазоне интегрирования.

! Пример 10.9 I

Пусть подынтегральная функция имеет вид

у(х) = хех + lnx + l .

Необходимо вычислить определенный интеграл в диапазоне от Iдо 10 с шагом 0.5.

Решение:

» х=1: 0 . 5 : 10;

» у = х . * e x p ( x ) + l o g ( x ) + l ;

» t r a p z ( у )

ans=

4.0б57е + 005

Page 232: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 231

» trapz (x,y)

ans =

2.0328е + 005

Следует иметь в виду, что при вычислении интеграла с помощьюфункции trapz (х, у) его значение зависит от шага интегриро-вания.

10.2.2. Численное интегрированиес помощью квадратурных формул

Метод парабол (Симпсона)Вычисление интеграла методом парабол осуществляется поформуле (10.3). Для его реализации в системе MATLAB исполь-зуются следующие функции: t

quad('fun', a, b)

quad('fun', a, b, tol)

quad('fun', a, b, tol, trace)

ablquad('fun', a, b, c, d)

ablquad('fun', a, b, c, d, tol)

ablquad('fun', a, b, c, d, tol, trace)

В этих функциях приняты обозначения:

• ' f u n ' — подынтегральная функция, взятая в одинарные ка-вычки;

• а, ь — пределы интегрирования;

• tol — относительная погрешность, задаваемая пользователем,по умолчанию toi=i0e-3;

• с, d — пределы интегрирования по другой переменной (внеш-ней) при вычислении двойного интеграла;

• trace — число, отличное от нуля, по которому система пока-зывает ход вычислительного процесса.

Рассмотрим перечисленные функции и приведем примеры.

Page 233: MATLAB для студента

232 Глава 10

Функция quad('fun',a,b)

Функция вычисляет определенный интеграл

\f{x)dxа

с погрешностью, не превышающей 10~3.

Подынтегральная функция f{x) представляется в аналитическом

виде с соблюдением правил записи функций в системе MATLAB.

(.'Пример 10.10 ;.'•]

Подынтегральная функция имеет вид:

f{x) = ех + х2 + 2 sin х - 5 .

Необходимо вычислить интеграл

Решение:

» у = ' е х р ( х ) + х . Л 2 + 2 * з 1 п ( х ) - 5 ' ;

» quad (у, 1,5)

После нажатия клавиши <Enter> получим следующий ответ:

ans =167.5415

Функция может быть представлена одной строкой:

» q u a d ( ' е х р ( х ) + х . Л 2 + 2 * з 1 п ( х ) - 5 ' , 1,5)

После нажатия клавиши <Enter> получим тот же ответ.

Функция quad('fun',a,b,tol)В функции quad('fun\a,b,tol) параметр tol является желаемойпогрешностью, которая представляется в виде le-n. По умолча-нию tol=l.e-3.

Page 234: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 233

г " " : • ' " • •"• ••••"••"• •• • ••

I Пример 10.11 i=.„•._..„. ". .........: : ...... .....,..„..;....:..;.....• I

Пусть подынтегральная функция имеет вид:

f(x) = ex+x2+2smx-5.Необходимо вычислить интеграл в диапазоне от 1 до 5 с погреш-ностью не выше 1(Г7.Решение:

» quad('exp(x)+x.*2+2*sin(x)-5',1,5, le-7)

После нажатия клавиши <Enter> получим ответ:

ans =167.5415

Ответ тот же, что и в примере 10.10, когда вычисление интегралавыполнялось с погрешностью не более 10 3. Это объясняется тем,что в ответе содержится только 4 значащих цифры после запятой.Отличие можно будет видеть при большем числе цифр после за-пятой.

Функция ablquad('fun',a,b,c,d)В функции

a b l q u a d ( ' f u n ' , a , b , с , d )

приняты следующие обозначения:

• ' fun' — это функция с двумя переменными;

• а, ь — пределы по внутренней переменной;

• с, d — пределы по внешней переменной.

Пример 10.12 |

Функция двух переменных имеет вид:

2 = х2+у2-2.

Необходимо вычислить интеграл2 3\\z(x,y)dxdy.

1 0

Page 235: MATLAB для студента

234

Решение:

Глава 10

» ablquad(z,l,2,0,3)

После нажатия клавиши <Enter> получаем ответ:

ans =10

Решение получено с погрешностью, не превышающей 1(Г3.

Повысим точность вычисления интеграла. Пусть toi=ie-7.

Тогда функция будет иметь вид:

» ablquad(z,l,2,0,3,l-e-7)

и после нажатия клавиши <Enter> получим:

ans =10

Ответ прежний потому, что интеграл и полученный ответ являет-ся точным решением.

Функция quad8('fun',a,b)Функция реализует метод Ньютона— Котеса восьмого порядка.Дает наиболее точное решение по сравнению с предыдущимиметодами и функциями. Имеет те же опции, что и функцияquad('fun',a,b, tol, trace).

Большое число методов и функций вычисления интегралов явля-ется достоинством системы MATLAB.

При изучении методов интегрирования студент имеет возмож-ность сравнить методы по их точности.

Сравним точность методов на примере.

| Пример 10.13

Пусть подынтегральная функция имеет вид:

у(х) = хъ + х2е~х + sinh (x) -12 .

Page 236: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 235

Необходимо вычислить интеграл в пределах от 0 до 10 методомтрапеций, парабол (Симпсона) и Ньютона— Котеса. Использо-вать функции trapz(x,y), quad('fun',a,b), quad8('fun',a,b).

Точность вычисления интеграла — по умолчанию (10~3).

Результаты вычисления интеграла приведены в табл. 10.1.

Таблица 10.1. Значения интеграла,вычисленные различными функциями

Функция

trapz(x,y)

quad С fun',0,10)

quad8('fun', 0,10)

Значения интеграла

1.3404x104 при /i = l

1.3629x104 при h = 0.5

1.3404x10" при /z = 0.1

1.3394x104 при Л = 0.01

1.3394x10"

1.3394x10"

Точное значение неопределенного интеграла имеет вид:

х*— -\2х.4

Численное значение интеграла, вычисленное по точной бормуле

в диапазоне от 0 до 10, равно 1.339422738x104.

Из примера видно, что значение интеграла практически одно ито же.

Правда, в методе трапеций шаг интегрирования должен быть неменее ^ = 0.01 .

Page 237: MATLAB для студента

236 Глава 10

10.3. Аналитические методывычисления интеграла10.3.1. Функция int() вычислениянеопределенного и определенногоинтеграловВычисление интеграла аналитическими методами осуществляет-ся в системе MATLAB с помощью функций i n t o , которые име-ют вид:

i n t ( у ( х ) )i n t ( y ( x ) , а, Ь)

где:

• у(х) — подынтегральная функция;

• а, ь — пределы интегрирования. . ,

Эти функции вычисляют:

• неопределенный интеграл;

• неопределенный интеграл с символьными переменными;

• определенный интеграл с символьными значениями пределовинтегрирования;

• определенный интеграл от алгебраических функций;

• кратные интегралы;

• несобственные интегралы.

Технология вычисления интегралов достаточно проста и состоитв следующем:

1. Определение символьных переменных с помощью функцииsyms.

2. Ввод подынтегрального выражения с присвоением ему имени;y=f(x);

3. Ввод функции int (у), если вычисляется неопределенный ин-теграл, или функции int (у, а, Ь), если вычисляется определен-ный интеграл в пределах [a; b\.

4. Получение решения путем нажатия клавиши <Enter>.

Page 238: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 237

Будем иллюстрировать

\ Пример 10.14

Необходимо вычислить

Решение:

» syms x;» у=х/(1+хЛ2);» int(Y)ans =

1/2*1од(1+хл2)

\ Пример 10.15

Вычислить интеграл:

методику на примерах решения задач.

следующий интеграл:

J Ydx-

f X dr\ „. их .а + Ьх2

Здесь имеем случай, когда подынтегральная функция задана ваналитическом виде с символьными переменными.

Решение имеет вид:

» syms х а Ь;» у=х/(а+Ь*хЛ2);» int(y)ans =

1/(2*Ь)*1од(а+Ь*хЛ2)

I Пример 10-16 \

Вычислить значение определенного интеграла

Page 239: MATLAB для студента

238 Глава 10

Здесь пределы интегрирования заданы в символьных перемен-ных.

Решение:

» syms х а Ь;

» у=х/(1+х А 2);

» i n t ( y , a , b )

ans =

l / 2 * l o g ( 1 + Ь Л 2 ) - l / 2 * l o g ( l + a A 2 )

Пример 10.17

Вычислить определенный интеграл:

х л-ах.

В данном случае подынтегральное выражение представлено ваналитическом виде, а пределы интегрирования — в виде сим-вольных переменных. Это наиболее общий случай аналитическо-го вычисления интеграла.

Решение представляется в следующем виде:

» syms х а Ь с d;

» y=x/(c+d*x A 2) ;

» i n t ( y , a , b )

ans =

l/2d* (log (c+bA2*d) - l o g (c+a"2*d) )

••

I Пример 10.18

Вычислить определенный интеграл

f *- A1 Z ИЛ ,

Решение:

» syms x;» у=х/(1+х Л 2);

Page 240: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 239

» i n t ( y , 1,5)

ans =

l/2* log(13)

Для получения решения в естественной форме достаточно акти-визировать с помощью мыши строку ответа и нажать клавишу<Enter>. Будет получен следующий ответ:

ans =1.2825

10.3.2. Вычисление кратных интеграловНаиболее просто кратный интеграл вычислить путем интегриро-вания ответа, полученного от предыдущего значения интеграла.

j Пример 10.19

Пусть необходимо вычислить двойной неопределенный интегралвида:

хdx.и-:х2

Решение путем двойного интегрирования имеет вид:

» syms x;» у = х / ( 1 - х А 2 ) ;

» Z=int(у)

Z =

-l/2* log(х-1)-1/2*1од(х+1)

» i n t ( Z )

ans =

- l / 2 * l o g ( x - l ) * ( х - 1 ) + х - 1 / 2 * 1 о д ( х + 1 ) * ( х + 1 )

Программа будет иметь более простой вид, если функцию int ()повторить п раз при и-кратном интегрировании.

Для нашего примера решение будет иметь вид:

» syms x;» у = х / ( 1 - х Л 2 ) ;

Page 241: MATLAB для студента

240 Глава 10

» i n t ( i n t ( y ) )

ans =

- l / 2 * l o g ( x - l ) * ( x - l ) + x - l / 2 * l o g ( x + l ) * ( x + 1 )

10.3.3. Вычислениенесобственных интеграловВычисления интегралов с бесконечными пределами с помощьюфункции int () имеют особенности, которые увидим при решениипримеров.

| Пример 10.20

Необходимо вычислить следующий определенный интеграл:

тгт*-sinh(5;t)Решение:

» syms x;» y=x/sinh(5*x);» int(y,0,inf)ans =

р1Л2/100

А теперь вычислим тот же интеграл, введя символьную перемен-ную a :

со

II s'mI s'mh(ax)

Повторим вычисление интеграла:

dx.

» syms х а;

» y = x / s i n h ( a * x ) ;

» i n t (у, 0 , i n f )

ans =

Решение в явном виде не получено. Причина в том, что перемен-ная а не определена. Это может быть число положительное или

Page 242: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 241

отрицательное, действительное или комплексное. Предположим,что это число действительное и положительное. Тогда программабудет иметь вид:

» syms х а;

» y=x/s inh(abs (а) *х) ;

» i n t ( y , 0 , i n f )

abs =

р1 Л 2/(4*а Л 2)

Функция i n t o позволяет вычислять достаточно сложные инте-гралы. Вот один из примеров.

I Пример 10.21 \

Требуется вычислить следующий несобственный интеграл:о ,

ах

Решение имеет вид:

» syms х а;

» у=1/(x+sqrt(хА2+а

л2))

Л3;

» int(y,O,inf)

ans «

3/(8*а/ч2)

Не нужно указывать программе на знак числа а и писать abs (a),т. к. число а возводится в квадрат и является положительным.

10.4. Примеры вычисленияинтеграловДалее приводятся задачи на интегрирование с помощью системыMATLAB. Эти задачи будут способствовать изучению компью-терных технологий вычисления интегралов. Кроме того, онивесьма оригинальны и вызывают восхищение своими ответами.Не следует огорчаться, если система выдает иное решение, чем

Page 243: MATLAB для студента

242 Глава 10

указано в ответе. Вероятнее всего, они идентичны. Попробуйтепреобразовать полученный ответ с помощью функций simplify оИ f a c t o r ( ) .

Проверить идентичность ответов можно, если подставить одно изчисленных значений переменных в подынтегральное выражениеи вычислить значение интеграла, сравнив его с численным значе-нием ответа, приведенного в таблице интегралов (табл. 10.2и 10.3).

Возможны случаи, когда система вообще не выдает решения, аоно имеется. Это доказывает лишь то, что компьютер не можетбыть более интеллектуален, чем человек; его программа не со-вершенна.

Таблица 10.2. Таблица определенных интегралов

1

2

3

4

5

6

7

Интеграл

1(1 -ох)"

1jx'-[(x + \)dx0

dx{\ + х

0 -у 1 —X

1

1 xs'mxdx

0

Ответ

4

3

(1-«Г-1а{п-\)

1 1+ —

и + 1 п

, „ 2 - 1

4 7 -.„260

ж

sin I-cos 1 = 0.301

Page 244: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 243

Таблица 10.2 (окончание)

8

9

10

Интеграл

1

\xcosxdx0

1\x"\nxdx0

1 1,fx In* ,

dxJ \ + x

Ответ

cosl-sinl-1

1

(n + \f

-0.0386

Таблица 10.3. Таблица неопределенных интегралов

1

2

3

4

5

6

7

Интеграл

h-x2

J 1 + jc4

f X

2dxh+x2

f \dx

[ " — d x^{a + bxf

I • rfr

Ответ

'ln(l + ^ 2 )2 V >

1 2-arctgx

arctg*

4 1 + x2

In ,VI + x2

2

ivo + АЛ

2(2a + to)

Uac -b2\\la + bx + ex2

Page 245: MATLAB для студента

244 Глава 10

Таблица 10.3 (продолжение)

№ Интеграл Ответ

2(b2x2-4abx-8a2)

J

aNa + cx2 1

10 dx 1 , yla + cx2 -4a

ТаIn

11 Г !

J shx-л

12

13 f ChxJ shjc-chx 2 4

14 \\ x2

v .. i ____4o I, 2a) 4 8a

15 Jsisinxcos2^ cos3*

16 sin5

17 [ !

18гл + sinx

J 1 + cosx

dx X* g 2

19ix'{x-\

Page 246: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 245

Таблица 10.3 (окончание)

20

21

22

23

24

Интеграл

(•Arsin.t ,—<&

J COS" X

j . з ' *J sin * cos*

Г jccosjc2abc .

r s i n 2 * ,1 4 Л

J cos x

jaxe~"dx

Ответ

* -InftgfA" +

7Cllcos* ^ 1,2 A))

. j +ln(tgA')2«n x

sinjc2

2

e'W 1lna-1 Incf-1

Таблица 10.4. Таблица несобственных интегралов

1

2

3

4

5

Интеграл

00

0

• dx

f * Л

Jsinh(ax)

—>8

J ( e - i r X * - i )

Ответ

(Х + 1ХДГ + - Г 4

а!

4.2

а3

, 26-аIn

Page 247: MATLAB для студента

246

6

7

8

9

10

11

12

13

14

15

16

Интеграл

оо

0

00

f X dx

• s i n h ( a x )

Таблица 10.4

00 •

\ x2"*x p e ' 1 * dx

0

? ' dx

i ^

? ^ лJ с inVi 1 л 1

0

ОС

1 x ' ^ ' ^ d x

0

j . ^ x

f *

J l - * 3 ^

Ответ

a"(a-\)\

n2

4a2

n\

2p"

In 2

P

n2

2a

— , 9>0

wl/t""""1, k>0

e - l2

Глава 10

(продолжение)

1

P

—-—ж9

Зтс16as

Page 248: MATLAB для студента

Алгоритмы и технологии вычисления интегралов 247

Таблица 10.4 (окончание)

№ Интеграл Ответ

17(ах2

-ах па

l(ac-b2

18о (х + Vx2 + а2 ] За

19\ + х3 -7te

20 2л In 2

21 |(2Ш2-1)

22 хе4 V 12

23rdx 8я1п2

242"+ie-"x ax

w!

Page 249: MATLAB для студента

ГЛАВА 1 1

Методы и компьютерныетехнологии интерполяции

11.1. Элементы теорииОсновы теории интерполяции и компьютерные технологии ре-шения задач достаточно полно изложены в [13]. Здесь приводятсялишь элементы теории.

Интерполяцией называется представление функции y = f(x)

функцией ф(х), идентичной в некоторой области значений аргу-

мента.

Функция f(x) может быть задана аналитически или в виде таб-

лицы. В зависимости от метода интерполяции функция <р(х) в

MATLAB может быть получена в аналитическом виде или в видечисел из диапазона узлов интерполяции.

Интерполяция— научная основа моделирования. Функция ин-

терполяции ф(х), полученная в аналитическом виде, есть мате-

матическая модель изучаемого объекта или явления.

Основными видами интерполяции являются: точная в узлах иприближенная в узлах.

При интерполяции, точной в узлах, значения функции у~ц>[х)

совпадают со значениями исходной функции y-f{x) в узлах

интерполяции (рис. 11.1).

Page 250: MATLAB для студента

Методы и компьютерные технологии интерполяции 249

Рис. 11.1. Интерполяция, точная в узлах

На рис. 11.1 значения функции у = /(х) обозначены точками,

совпадающими в узлах интерполяции с функцией у - ф(л:).

При интерполяции, приближенной в узлах, значения функции

у-ц>[х) не совпадают со значениями исходной функции

у = /(х) (рис. 11.2).

Л/Л ЛJ - ф (х)

Рис. 11.2. Интерполяция, приближенная в узлах

Page 251: MATLAB для студента

250 Глава 11

Интерполяция, точная в узлах, используется в тех случаях, когда

исходная функция у = /(х) задана аналитически или моделиру-

ется физическое явление при высокой точности исходных дан-

ных.

Интерполяцию, приближенную в узлах, часто называют аппрок-симацией. Она применяется в случаях, когда исходные данныефункции у = /(х), полученные экспериментально, могут содер-жать ошибки. Тогда аппроксимация позволяет получить матема-тическую модель с более высокой точностью, чем интерполяция,точная в узлах. Высокая точность аппроксимации обеспечиваетсяза счет сглаживания неточностей исходных данных.

Компьютерные технологии интерполяции любого вида состоят изследующих основных этапов:

• выбор вида функции интерполяции;

• определение коэффициентов функции интерполяции; ,

• проверка адекватности математической модели.

Далее описываются эти этапы.

11.1.1. Выбор видафункции интерполяцииЭтот этап является наиболее важным при практическом решении

задач. Вид функции интерполяции во многом определяет адек-

ватность полученной модели. Ошибка в выборе вида функции

ф(х) приводит во многих случаях к отрицательному результату

моделирования.

Рассмотрим способы выбора вида функции интерполяции.

Графоаналитический способ

Функция y = f(x) представляется в виде графика. График срав-нивается с графиками типичных математических функций и наосновании их сравнения выбирается подходящая. Перечислимчасто используемые функции и их графики.

Page 252: MATLAB для студента

Методы и компьютерные технологии интерполяции 251

• Степенная функция

График функции показан на рис. 11.3.

Ь>\

Рис. 11.3. Степенная функция у = а"

• Логарифмическая функция

у = а + Ь\пх.

График функции показан на рис. 11.4.

Рис. 11.4. Логарифмическая функция у = а + Ь\пх

Page 253: MATLAB для студента

252 Глава 11

• Дробно-линейная функция

График функции показан на рис. 11.5

Рис. 11.5. Дробно-линейная функция у =

• Показательная функция

у = аЪх.

График функции показан на рис. 11.6.

а + Ьх

k У ь>\

ь=\

• Ь<

Рис. 11.6. Показательная функция y =

Page 254: MATLAB для студента

Методы и компьютерные технологии интерполяции 253

Приведем пример выбора функции интерполяции графоаналити-ческим методом.

Пример 11.1

Пусть функция задана в виде табл. 11.1. Необходимо установитьвид функции интерполяции у = ср(х).

Таблица 11.1. Исходная функция у — fix)

X

1

2

3

4

5

У

25

7.7

3.9

2.4

1.6

ФМ

25

7.69

3.86

2.371.62

X

6

78

910

У

1.2

0.9

0.73

0.6

0.5

Ф(х)

1.19

0.915

0.729

0.59

0.499

График в виде координат точек таблицы приведен на рис. 11.7.

Из рис. 11.7 видно, что функция подобна степенной ц>(х) = ах

при Ь<0. Решая задачу интерполяции, получим: q(x) = 2.5x] 7 .

Результаты табулирования функции ф(лг) приведены в табл. 11.1.

Ах)

20

10

5 10

Рис. 11.7. Функция у = f[x], соответствующая данным табл. 11.1

Page 255: MATLAB для студента

254 Глава 11

На рис. 11.8 показаны функция интерполяции ф(х) и исходная

функция у(х), заданная в виде координат точек табл. 11.1.

у(х)

30

20

10

10 х

Рис. 11.8. Исходная функция (точки) и функция интерполяции(сплошная кривая)

Из таблицы и рисунка видим, что полученная функция интерпо-ляции может быть математической моделью объекта: сплошнаякривая проходит через точки, являющиеся координатами функ-ции f(x).

Способ линеаризации нелинейных функцийЛинеаризация нелинейных функций осуществляется путем пред-

ставления их в иной системе координат методом замены пере-

менных х и у. Покажем способы линеаризации на примерах

рассмотренных выше функций.

• Показательная функция

у = аЪх.

Прологарифмируем показательную функцию:

In у = \па + x\nb .

Page 256: MATLAB для студента

Методы и компьютерные технологии интерполяции 255

Заменой переменных In у = Y, х = Х получим линейную

функциюY = \na + X\nb.

• Степенная функция

у = ахь.

Представим функцию в виде:

In у - In а + Ъ In х.

Тогда введением новых переменных \ny = Y, \nx-X полу-чим линейную функцию

Y = \na + bX.

• Логарифмическая функция

Выравнивание осуществляется заменой переменных y = Y,

In x = X . После замены переменных получим:

Y=a+bX.

• Дробно-линейная функция

X

а + Ьх

Представим функцию в виде:

х ,— -ал-Ъх.У

хВведя новые переменные 7 = — , Х-х, получим линейную

Уфункцию

Y - а + ЪХ .

Анализ табличных разностейЭтот способ позволяет выбрать степень многочлена при полино-миальной интерполяции. Если п-е табличные разности функцииу - f(x) одинаковы, то степень многочлена будет не выше п .

Page 257: MATLAB для студента

256 Глава 11

Рассмотрим этот способ на примере.

; Пример 11.2

Предположим, что функция интерполяции является многочленоми представлена в виде табл. 11.2.

X

У

1

2.2

2

6.5

Таблица 11

3

12.8

4

21.1

.2. Таблица функции

5

31.4

6

43.7

/ W

7

58

В табл. 11.3 приведены значения табличных разностей.

Таблица 11.3. Значения табличных разностей

X

У

д ( 1 )

д ( 2 )

1

2.2

2

6.5

4.3

2

3

12.8

6.3

2

4

21.1

8.3

2

5

31.4

10.3

2

6

43.7

12.3

2

7

58

14.3

Из таблицы видно, что вторые табличные разности постоянны.Это значит, что интерполяционный полином должен быть не вы-ше второй степени, т. е.

у = а0 + ахх + а2х .

В результате решения задачи интерполяции получим:

Использование специальных программавтоматизации интерполяцииСуществуют универсальные программные средства, позволяю-щие выбрать функцию интерполяции, если исходная функцияпредставлена в табличной форме. Такими программными средст-вами являются: SIMPLE FORMULA, TableCurve, Curve Expert.

Page 258: MATLAB для студента

Методы и компьютерные технологии интерполяции 257

Эти программы выдают более тысячи различных функций с ука-занием их погрешностей. Их описание и примеры использованияприведены в [13].

11.1.2. Определение коэффициентовфункции интерполяцииСуществует большое число различных способов определения ко-эффициентов функции интерполяции. Выбор способа зависит отформулировки задачи и метода интерполяции. Система MATLABпозволяет определить коэффициенты функции интерполяцииследующими способами:

• использованием встроенных функций системы;

• решением алгебраических линейных или нелинейных урав-нений;

• непосредственным вычислением коэффициентов полиномов.

11.1.3. Проверка адекватности моделиПроверку правильности решения задачи можно осуществить сле-дующими способами:

• табулированием функции аппроксимации и сравнением ее ре-зультатов с исходными данными;

• использованием графических образов;

• вычислением погрешности математической модели.

Первые два способа будут подробно рассмотрены при решениизадач интерполяции различными методами.

Наиболее эффективным способом проверки адекватности моделиявляется вычисление погрешностей функции интерполяции.

Погрешность интерполяционной формулы оценивается абсолют-ной среднеквадратической погрешностью е и максимальной от-носительной S, которые имеют вид:

, 6 = — - 1 0 0 % , ( 1 1 Л )

Ут'ш

9 3ак. 1196

Page 259: MATLAB для студента

258 Глава 11

где:

• А, = ^ ( х , ) - ф ( х , ) ;

• у(х,) — функция, заданная в виде таблицы;

• ф(х,)—функция интерполяции;

• п — число узлов исходной функции, заданной таблично;

• утт — минимальное значение функции.

Задача считается решенной, если погрешность модели не превос-ходит заданной.

Вычисления погрешностей 8 и 8 в системе осуществляются спомощью встроенных функций. Процедуры расчета погрешно-стей рассмотрим в дальнейшем на примерах.

11.2. Интерполяция точная в узлах.Универсальный метод

11.2.1. Интерполяциялинейными функциямиУниверсальный метод требует решения систем алгебраическихуравнений. Система позволяет решать уравнения матричным ме-тодом и с помощью функции solve (). Эти методы описаны вглаве 8.

Процедуры решения задачи интерполяции универсальным мето-дом в системе покажем на примере.

I Пример 11.3

Пусть функция у = /(х) задана в виде табл. 11.4, представ-ляющей собой зависимость высоты березы Н от возраста L [13].Необходимо найти математическую модель роста березы

H = f{L).

Решим задачу методом интерполяции, точной в узлах, при огра-ниченном их числе.

Page 260: MATLAB для студента

Методы и компьютерные технологии интерполяции 259

Таблица 11.4. Зависимость высоты березы от возраста

L, лет

Я,м

Зависимость высоты березы от возраста

20

9.8

30

12.8

40

15.8

50

18.6

60

21.3

70

23.5

80

25.3

90

26.5

100

27.4

Выберем вид функции интерполяции, воспользовавшись графо-аналитическим методом.

Значения функция Н - f(L) в виде точек графика приведены на

рис. 11.9.

Я

30 •

20 •

10 •

50 100

Рис. 11.9. Координаты точек функции, заданной табл. 11.4

Из графика видно, что функцию H = f(L) можно представить

полиномом степени, не выше второй. Предположим, что интер-поляционный многочлен является многочленом второй степени:

Для определения коэффициентов многочлена составим системууравнений. Выберем из таблицы координаты (20; 9.8), (50; 18.6),(90; 26.5).

Page 261: MATLAB для студента

260 Глава 11

Тогда система уравнений будет иметь вид:

Решение системы уравнений в среде MATLAB.

Создадим группу символьных объектов:

» syms Ы Ь2 ЬЗ а Ь с t ;

Опишем уравнения системы на языке MATLAB:

» y l = ' 9 , 8 = a + 2 0 b + 2 0 2 с ' ;

» y 2 = ' 1 8 . 6 = a + 5 0 b + 5 0 2 c ' ;

» у З = ' 2 6 . 5 = а + 9 0 Ы - 9 0 2 с ' ;

Команда решения системы:

» [bl,b2fb3]=solve(yl,y2,y3)

После нажатия клавиши <Enter> получим ответ в следующемвиде:

ы=2.56

Ь2=

0.389

Ь3=

-0.00137

Проверка решения:

» s u b s ( y l , { a , b , c } , ( Ы , Ь 2 , Ь З } ) ;

» s u b s ( y 2 , { a , b , c } , { Ы , Ь 2 , Ь З } ) ;

» s u b s ( y 3 , { a , b , c } , { Ы , Ь 2 , Ь З } )

После нажатия клавиши <Enter> в каждой строке оператора subsполучим ответы:

9.8 = 9.8 18.6 = 18.6 26.5 = 26.5

Решение системы уравнений верно.

Page 262: MATLAB для студента

Методы и компьютерные технологии интерполяции 261

Таким образом, функция интерполяции имеет вид:

H(L) = -0.00137Z.2 + 0.3891 + 2.56 .

Она показана на рис. 11.10.

Я

30

20

10

50 100

Рис. 11.10. Функция интерполяции

Из рис. 11.10 видно, что функция интерполяции и координатыфункции, заданной в виде таблицы, практически совпадают.

Вычислим значения функции в узлах интерполяции, решив зада-

чу табулирования функции у — /(х):

» Pl=subs(2.56+0.389*t-.. .0.00137*t~2,t, [20,30,40,50,60,70,80,90,100])

После нажатия клавиши <Enter> получим ответ:

Р 1 =9.79 12.99 15.92 18.585 20.968 23.077 24.9126.47 27.76

Исходные данные функции у(х) представим в виде вектора:

» Р=[9.8 , 12 .8, 15 .8, 18.6, 2 1 . 3 , 2 3 . 5 , 2 5 . 3 , 2 6 . 5 , 2 7 . 4 ] ;

Page 263: MATLAB для студента

262 Глава 11

Вычислим значения погрешностей интерполяции.

» e=sum((p-pl).А2);

» E=sqrt(e)/length(P)

'Е =

0.0879

» ymin=niin (P) ;

» d=E/ymin*100

d =

0.8967

Малые абсолютная и относительная погрешности (примерно0,9%) означают, что полученная в результате интерполяции функ-ция может быть математической моделью роста березы.

11.2.2. Интерполяциянелинейными функциямиИнтерполяция точная в узлах нелинейными функциями осущест-вляется в системе с помощью функции fsolve (), которая имеетвид:

f so lve ( ' f i l e ' , х0)

где:

• хо — вектор начальных приближений;

• ' f i l e ' — имя m-файла, содержащего систему уравнений.

Рассмотрим нелинейную интерполяцию на примере.

Пример 11.4

Пример заимствован из [13]. Пусть функция f(x) задана в виде

табл. 11.5.

Таблица 11.5. Таблица функции у = / ( х )

X

У

1

6,5

2

20

3

53,5

4

167

5

473

6

1470

Page 264: MATLAB для студента

Методы и компьютерные технологии интерполяции 263

Необходимо функцию представить в виде формулы.

Выберем вид функции интерполяции, воспользовавшись графо-аналитическим методом. График функции в виде точек таблицыпоказан на рис. 11.11.

У

1500

1000 •

500

Рис. 11.11. Вид функции, представленной в виде табл. 11.5

Из рис. 11.11 видно, что функция у = /(х) похожа на степенную.

Выберем в качестве интерполяционной функцию вида

у = аЪх + с .

Так как функция содержит три неизвестных, то составим системутрех нелинейных уравнений, выбрав в качестве аргументов узлыинтерполяции х = 1, 4, 6. Тогда система уравнений будет иметьвид:

Ъ + с = 6.5

аЬ4+с = 167

аЬ6+ с = 1470

Представим эту систему уравнений в виде функции пользователяс именем файла myfun.m и сохраним его с помощью командыSave (Сохранить) меню File (Файл) или соответствующей кнопкипанели инструментов.

Page 265: MATLAB для студента

264 Глава 11

Содержимое файла может иметь вид:

Function F=myfun(x)F = [ x ( l ) * x ( 2 ) + x ( 3 ) - 6 . 5 ; x ( l ) *x(2) Л4+х (3)-167;х ( 1 ) * х ( 2 ) Л 6 + х ( 3 ) - 1 4 7 0 ] ;

Теперь воспользуемся функцией fsolve ():

» xO=[l; 1; 1];» x=fsolve('myfun', xO)

После нажатия клавиши <Enter> получим решение:

X «2.1512

2.9678

0.1157

Тогда функция интерполяции будет иметь вид:

ф(дг) = 2.1512-2.9678х +0.1157 .

11.2.3. Сплайн-интерполяцияИнтерполяция кубическими сплайнами в среде MATLAB осуще-ствляется с помощью функции spline (). Функция имеет вид:

Yi = s p l i n e (x, у, x j

где:

• х — вектор узлов интерполяции;

• у — вектор значений функции в узлах интерполяции;

• Xi— вектор аргументов функции y-f(x) из области ее оп-

ределения, задаваемый пользователем.

Вместо вектора функция y-f(x) может быть задана в виде

формулы.

Функция spline () не позволяет получить функцию интерполяциив виде формулы. В этом ее существенный недостаток.

Рассмотрим технологию интерполяции на примерах.

Page 266: MATLAB для студента

Методы и компьютерные технологии интерполяции 265

\ Пример 11.5 j

Пусть функция задана в виде табл. 11.5. Необходимо найти еезначения при х= 1.5, 2.5, 3.5, 4.5, 5.5.

Процедуры интерполяции будут иметь вид:

» х= [ 1 , 2 , 3 , 4 , 5 , 6 ] ;

» у = [ 6 . 5 , 2 0 , 5 3 . 5 , 1 6 7 , 4 7 3 , 1 4 7 0 ] ;

» x i = [ 1 . 5 , 2 . 5 , 3 . 5 , 4 - 5 , 5 . 5 ] ;

» y i = s p l i n e ( x , у, x i )

После нажатия клавиши <Enter> на экране появится ответ:

yi -15.233 29.7667 98.7 270.9958 847.7542

Пример 11.6

Пусть функцией является

заданная при * = 1, 2, 3, 4, 5. Необходимо найти ее значения прих=1.5, 1.8,2.3,3,3.5.

Программа решения задачи имеет вид:

х = [ 1 , 2 , 3 , 4 , 5 ] ;

x i = [ 1 . 5 , 1 .8 , 2 . 3 , 3, 3 . 5 ] ;

y i = s p l i n e ( x , s i n ( x ) , x i )

После нажатия клавиши <Enter> на экране ответ:

1.022 0.9843 0.7358 0.1411 -0.3414.

Из ответа видны погрешности интерполяции: значение sinx неможет быть больше единицы.

11.2.4. Интерполяция точная в узлахФункция interpio позволяет решать задачи интерполяции не-сколькими методами. Она имеет вид:

y j = i n t e r p l (x, у, x i r метод)

Page 267: MATLAB для студента

266 Глава 11

где:

• х, у — векторы значений узлов и функции;

• х4 — вектор значений аргументов, задаваемый пользователем;• метод — аргумент, позволяющий пользователю выбрать метод

интерполяции.

Методами интерполяции являются:

• 'nearest'—ступенчатая;

• ' linear' — линейная;

• 'cubic' — кубическая;

• ' spline' — кубическими сплайнами.

Если метод не указан, то реализуется линейная интерполяция.

Приведем пример решения задачи этими методами.

Г,I Пример 11.7

Функция у-/(х) задана в виде табл. 11.6.

Таблица 11.6. Значения функции у —

.V

У

2.5

1.4

3.7

2,7

8.4

5,6

11.7

7,5

20

9,1

27

13,2

38

15.3

Необходимо определить значения функции при значениях аргу-ментов х = 3, 4, 6, 10,25,30.

Далее приводятся процедуры решения задачи на ЭВМ:

» х=[2.5, 3.7, 8.4, 11.7, 20, 27, 38];

» у=[1.4, 2.7, 5.6, 7.5, 9.1, 13.2, 15.3];

» xi=[3,4, 6, 10, 25, 30] ;

» yi=interpl(х, у, xi); /

% линейная интерполяция

» yi=interpl(х, у, xi, 'linear'); % линейная интерполяция

» yi=interpl(х, у, xi, 'nearest');! ступенчатая интерполяция

» yi=interpl(х, у, xi, 'cubic'); % кубическая интерполяция

Page 268: MATLAB для студента

Методы и компьютерные технологии интерполяции 267

» yi=interpl(х, у, xi, 'spline1; % интерполяция кубическими

% сплайнами

В результате решения задачи получим следующие ответы:

• линейная интерполяция

1..9417 2.8851 4.1191 6.5212 12.0286 13.7727

• ступенчатая интерполяция

1.4 2.7 2.7 5.6 13.2 13.2

• кубическая

1.9884 2.9419 4.2606 6.3449 12.2020 14.0582

• кубическими сплайнами

1.9912 2.9666 4.3323 6.5662 11.8137 15.1007

Из результатов решения видно, что ответы разные и зависят отметода интерполяции. Какой же из них более точный? Ответ наэтот вопрос можно дать только при анализе погрешностей интер-поляции.

Функция interpi () не позволяет получить функцию интерполя-

ции ф(х) в виде формулы. В этом ее существенный недостаток.

11.3. Интерполяция, приближеннаяв узлах (аппроксимация)

11.3.1. Функция IsqcurvefitOОсуществим сглаживание неточностей исходных данных, ис-пользуя функции аппроксимации. Одной из таких функций вMATLAB является функция IsqcurvefitO, которая имеет вид:

coef=lsqcurvefit (f, х0, а, Ь)

где:

• а, ь — векторы узлов интерполяции и значений функции;

• х0 — стартовое значение параметров функции;

• f — функция аппроксимации, задаваемая пользователем.

Page 269: MATLAB для студента

268 Глава 11

Технологию решения задачи интерполяции рассмотрим на при-мере.

Пример 11.8

Стоимость G перевозки леса автопоездом в зависимости от рас-стояния 5" представлена в табл. 11.7.

S, км

G,тыс. руб.

30

6.36

40

6.85

50

7.34

Таблица

60

7.84

70

8.08

11.7. Стоимость перевозки леса

80

8.32

90

8.57

100

8.70

ПО

8.82

120

8.94

Требуется найти математическую модель стоимости перевозкилеса методом интерполяции, приближенной в узлах.

Функция G = f(S), полученная по данным табл. 11.7, приведена

на рис. 11.12.

G

10

100 s

Рис. 11.12. Зависимость стоимости перевозки леса от расстояния

Из рис. 11.12 следует, что в качестве функции интерполяцииможно выбрать полином второй степени:

G = a + bS + cS2.

Решим задачу аппроксимации полиномом второй степени, ис-пользуя функцию Isqcurvef i t ().

Page 270: MATLAB для студента

Методы и компьютерные технологии интерполяции 269

Ниже приводятся процедуры решения задачи аппроксимации ивычисления погрешностей в среде MATLAB с применениемфункции lsqcurvefit ():

» а = [ 3 0 , 4 0 , 5 0 , 6 0 , 7 0 , 8 0 , 9 0 , 1 0 0 , 1 1 0 , 1 2 0 ] ;

» Ь = [ 6 . 3 6 , 6 . 8 5 , 7 . 3 4 , 7 . 8 4 , 8 . 0 8 , 8 . 3 2 , 8. 5 7 , 8 . 7 0 , 8 . 82, 8 . 9 4 ] ;

» х О = [ 1 , 1 , 1 ] ;

» f = i n l i n e { ' х ( 3 ) * а . Л 2 + х ( 2 ) * а + х ( 1 ) ' , ' х \ ' а ' ) ;

» c o e f = l s q c u r v e f i t ( f , x 0 , a , b )

После нажатия клавиши <Enter> на экране появится ответ в видезначений полинома:

coef =4.4747 0.0719 -0.0003

Функция интерполяции найдена и имеет вид:

G = 4.4747 + 0.0719S - О.ОООЗЯ2.

Определим абсолютную Е и максимальную относительную dпогрешности интерполяции, воспользовавшись формулами (11.1):

» х = [ 3 0 , 4 0 , 5 0 , 6 0 , 7 0 , 8 0 , 9 0 , 1 0 0 , 1 1 0 , 1 2 0 ] ;

» y = s u b s ( ' 4 . 4 7 4 7 + 0 . 0 7 1 9 * t + 0 . 0 0 0 3 * t A 2 ' , ' t ' , x ) ;

» f l=y;

» f2=b;

» e = f l - f 2 ;

» E=sqrt(s)/length(f2);» d=E/min(f2)*100

После нажатия клавиши <Enter> получаем ответ:

Е =

0 . 0 2 3 1 d = 0 . 3 6 3 3 %

Низкая погрешность интерполяции является доказательствомадекватности математической модели.

Функция lsqcurvefit () достаточно универсальна. Вид функцииинтерполяции может быть не только полином л-й степени, но идругими функциями, приведенными в настоящей главе.

Page 271: MATLAB для студента

270 Глава 11

11.3.2. Полиномиальная аппроксимацияАппроксимация полиномами в среде MATLAB осуществляетсяс помощью функции poiyfit О, которая имеет вид:

p o l y f i t ( x , у, п)

где:

• х — вектор узлов интерполяции;

• у — вектор значений функции в узлах интерполяции;

• п — степень полинома.

Откликом при реализации функции poiyfit () является векторкоэффициентов полинома.

Функция y = f(x) может быть также представлена в аналитиче-

ском виде.

Приведем пример интерполяции с помощью функции poiyfit ().

; Пример 11.9

Требуется решить задачу о стоимости вывозки леса из предыду-щего примера, используя функцию poiyfit ().

Функция задана в виде табл. 11.7. Тогда процедуры интерполяциибудут иметь вид:

» х=[30,40,50,60,70,80,90,100,110,120] ;

» у = [ 6 . 3 6 , 6 . 8 5 , 7 . 3 4 , 7 . 8 4 , 8 . 0 8 , 8 . 3 2 , 8 . 5 7 , 8 . 7 , 8 . 8 2 , 8 . 9 4 ] ; •

» p = p o l y f i t ( x , у, 2)

После нажатия клавиши <Enter> ответ получим в следующемвиде:

Р --0.003 0.0719 4.4747

Тогда функцией интерполяции будет следующий полином второйстепени:

<p(G) = 4.4747 + 0.07195 - 0.0(Ш 2.

Решение совпадает с полученным в предыдущем примере.

Page 272: MATLAB для студента

Методы и компьютерные технологии интерполяции 271

Протабулируем функцию ф(С) с целью сравнения ее значений

с исходными данными.

В MATLAB имеется функция вычисления математического вы-ражения при заданных значениях аргументов. Функция имеетвид:

polyval(p, x)

где:

• р — вычисляемая функция;

• х — вектор аргументов функции.

Воспользуемся этой функцией для проверки достоверности ре-зультатов аппроксимации.

Введем функцию f=poiyvai(p,x) и нажмем клавишу <Enter>. От-кликом будет следующее решение:

f =6,3695 6.884 7.34 7.7373 8.0761 8.3564

8.5780 8.7412 8.8457 8.8917

Сравнивая решение с вектором у исходных данных, убеждаемся втом, что во всем диапазоне аргументов значения интерполяцион-ного полинома G(S) второй степени мало отличаются от значе-ний исходных данных. Это еще раз доказывает, что полученнаяфункция интерполяции может быть математической модельюоценки стоимости вывозки леса.

Система MATLAB позволяет обоснованно выбрать степень поли-нома при полиномиальной интерполяции путем вычисления таб-личных разностей. Для этой цели служит функция diff (), имею-щая вид:

diff(v, n)

где:

• v — вектор функции у(х);

• п — порядок конечных разностей.

Page 273: MATLAB для студента

272 Глава 11

Пример 11.10

Необходимо определить методом табличных разностей вид функ-ции интерполяции в случае решения предыдущей задачи о стои-мости вывозки леса.

Определим степень полинома, воспользовавшись функциейdiff (). Процедуры в системе MATLAB имеют вид:

» у=[6.36,6.85,7.34,7.84,8.08,8.32,8.57,8.7,8.82,8.94];

» diff(у,1)

ans -

0.49 0.49 0.5 0.24 0.24 0.25 0.13 0.12 0.12

» diff(у, 2)

ans =

0 0.01 -0.26 0 0.01 -0.12 -0.01 0

Табличные разности второго порядка малы и практически одина-ковы, поэтому интерполяционный полином должен быть не вышевторой степени. Этот же результат нами был получен в приме-ре 11.8.

11.3.3. Интерполяциякубическими полиномамиИнтерполяция кубическими полиномами реализуется с помощьюфункции icubic (), имеющей вид:

y i = i c u b i c ( x , у, Xi)

где:

• х, у — аргумент и функция, заданные в виде векторов, или х —в виде вектора, а у — в виде формулы;

• Xi — вектор значений аргумента, для которых вычисляетсязначение функции; xt должно быть в диапазоне значений х.

! Пример 11.11 I

Функция задана в виде табл. 11.11

Необходимо найти значение функции при значениях аргументах, =2,5, 7, 13, 17.

Page 274: MATLAB для студента

Методы и компьютерные технологии интерполяции 273

Таблица 11.8. Значения функции у = f(x)

X

У

1

1

3

2

6

5

9

8

12

10

15

14

18

19

Процедуры решения задачи в среде MATLAB имеют вид:

» х=[1 3 6 9 12 15 1 8 ] ;

» у=[1 2 5 8 10 14 1 9 ] ;

» x i=[2 5 7 13 1 7 ] ;

» y i = i c u b i c ( x , у, x i)

После нажатия клавиши <Enter> получим решение в следующемвиде:

yi =1.1246 3.0928 5.3590 10.7824 17.1211

Функция icubicO отличается от функции interpio с опциями'cubic1 и 'spline' методами интерполяции. В этом можно убе-диться по результатам решения одних и тех же задач.

При решении предыдущей задачи с помощью функции interpl ()с опцией 'cubic' получим следующий ответ:

yi =1.3524 3.8953 6.1111 11.0778 17.3666

Page 275: MATLAB для студента

ГЛАВА 1 2

Компьютерные технологиирешения задач управления

12.1. Задачи управленияПри анализе систем управления задача формулируется следую-щим образом.

Дано:

• структурная схема (блок схема) системы;

• передаточные функции звеньев системы;

• значения переменных передаточных функций.

Необходимо определить:

• устойчивость системы управления;

• качество переходных процессов;

• точность системы.

При синтезе системы управления задача формулируется иначе.Необходимо создать из имеющихся звеньев структурную схемусистемы, которая бы удовлетворяла условиям устойчивости (за-пас по фазе и амплитуде), качеству переходных процессов (формапереходного процесса, длительность, величина перерегулирова-ния) и точности.

В такой постановке решение задач анализа и синтеза весьма це-лесообразно с помощью математической системы MATLAB.

Page 276: MATLAB для студента

Компьютерные технологии решения задач управления 275

Характерными особенностями исследований с помощью MATLABявляются:

• простота;

• высокая наглядность;

• возможность получения характеристик системы практическилюбой сложности.

MATLAB позволяет:

• исследовать устойчивость системы управления (запасы устой-чивости по амплитуде и фазе);

• получать переходные и частотные характеристики системы;

• исследовать качество переходных процессов (вид переходногопроцесса и его длительность, величину перерегулирования);

• выбрать параметры звеньев системы, вид и характеристикиобратной связи с целью обеспечения требуемых динамическихсвойств системы управления.

Простота решения задач управления определяется наличием вMATLAB специальных функций. Ниже приводятся функцииMATLAB, позволяющие воспроизводить передаточные функциизвеньев и системы в целом и исследовать ее динамические свой-ства.

12.2. Функции MATLAB для созданияпередаточных функцийзвеньев системы12.2.1. Функция tf()Функция имеет вид:

tf(n, m)

где:

• п — вектор коэффициентов числителя передаточной функции;

• га— вектор коэффициентов знаменателя передаточной функ-ции.

Page 277: MATLAB для студента

276 Глава 12

Она служит для образования передаточной функции звеньев исистемы в целом.

\ Пример 12.1 i

Необходимо образовать передаточную функцию

S3+2S + l

В нашем случае векторы коэффициентов числителя и знаменате-ля передаточной функции имеют вид: n=[2,5], m=[i,o,2, l ] .

Ноль в векторе m ставится потому, что в знаменателе передаточ-

ной функции член S2 отсутствует.

Процедуры образования передаточной функции G{S) имеют

вид:

» п = [ 2 , 5 ] ;

» т = [ 1 , 0 , 2 , 1 ] ;

» q s = t f ( п , т )

После нажатия клавиши <Enter> на экране появится передаточ-ная функция в виде:

Transfer function:

2 s + 5

з Л 3 + 2 s + 1

Функцию qs=tf(n,m) можно также представить в следующемвиде:

» qs=tf([2 5],[1 0 2 1])

Числа в векторах п и т отделяются друг от друга либо запятыми,либо пробелами (как в нашем примере), а сами векторы заканчи-ваются символом (;). Символ точка с запятой подавляет вывод наэкран векторов при нажатии клавиши <Enter>.

Процедуры получения передаточной функции приведены нарис. 12.1.

Page 278: MATLAB для студента

Компьютерные технологии решения задач управления 277

I.JMATLA8Eile Edit $ew Wefe WindowD G? '-,-: Ш • •

» n>[2,5]

n «

2 5

» m=[l,0,2,1]

m •

1 0 2 1

Transfer function:2 s + 5

з л 3 + 2 s + 1

<j '•• •

-^StartJ

• . ;

: к! ? ! Current Directory:&*Ш1АВ6р5*£

•'••• 1

3( X|и±1

Рис. 12.1. Образование передаточной функции

12.2.2. Функции poleQvi zeroQФункции предназначены для определения, соответственно, по-

люсов и нулей передаточной функции G(S). Они имеют вид:

pole(qS)zero(qS)

где qs — имя передаточной функции, заданной оператором tf.

Напомним, что нулями передаточной функции называются корничислителя, а полюсами — корни знаменателя.

I Пример 12.2; i

Определить полюсы и нули передаточной функции, полученнойв примере 12.1.

Page 279: MATLAB для студента

278 Глава 12

Процедуры в MATLAB будут иметь вид:

» qs=tf([2 5],[1 0 2 1]);» P=pole(qs)

После нажатия клавиши <Enter> на экране появится ответ:

р =

0.2267 + 1.4677i

0.2267 - 1.4677i

-0.4534

» z=zero(qs)

Z =

-2.5

Процедуры определения нулей и полюсов показаны на рис. 12.2.

0е Edit View Web Window Help

-Q'GSr # • • • " * Щ ? Current Directory: JD:WIATLAB6p5twork " 3 JUsing Toolbox Path Cache. Type "help toolbox_path_cache" Eor more Info.

To get started, select "HATLAB Help" from the Help menu.

» qS-CC([2 S], [10 2 1])

Transfer function:

2 3 + 5

s"-3 + 2 3 + 1

» P=pole(qS)

P -

0.2267 + 1

0.2267 - 1

-0.4534

46771

46771

Рис. 12.2. Определение нулей и полюсов передаточной функции

Page 280: MATLAB для студента

Компьютерные технологии решения задач управления 279

12.2.3. Функции rootsQ и poly()Функции предназначены, соответственно, для вычисления корнейполинома и его восстановления по значениям корней. Эти функ-ции имеют вид:

r o o t s ( Р )

p o l y ( r )

где:

• р — вектор коэффициентов полинома;

• г — вектор корней полинома.

j Пример 12.3

Найти корни уравнения £ 3 + 3S2 + 4 и по корням восстановить

полином.

В данном случае р=[1 з о 4] и процедуры решения будут иметьвид:

» Р = [13 0 4];

» г = roots(Р)

г =

-3.3553

0.1777 + 1.0773i

0.1777 - 1.07731

» Р = poly (г)

р =

1.0000 3.0000 0.0000 4.0000

Решение показано на рис. 12.3.

Функции roots () и poly () полезно использовать для определенияполюсов и нулей в условиях, когда по каким-либо причинамфункции pole () и zero () не могут дать решения.

Page 281: MATLAB для студента

280 Глава 12

•} МА Г LAB

File Edit View Web Window Help

P G& | jv ' в Ш •"> c' : Щ i ? j Current Directory: j D:WATLAB6p5\<vorkJ

» P=[l 3 0 4]

Р •

1 3 0 4

-3.3553

0.1777 + 1.07731

0.1777 - 1.0773i

1.0000 3.0000 0.0000 4.0000

Рис. 12.3. Функции определения корней полинома и его восстановления

12.2.4. Функция convQФункция применяется для умножения полиномов. Она имеет вид:

conv(P, q)

где р, q — векторы коэффициентов полиномов P(S) и q(S).

! Пример 12.4

Умножить полиномы

= 5 + 4

Процедуры в MATLAB имеют вид:

» Р = [ 3 2 1] ;

» q = [ l 4 ] ;

Page 282: MATLAB для студента

Компьютерные технологии решения задач управления 281

» G=conv(P, q)

3 14 9 4

Или

G = 3S3 +\4S2 +9S + 4.

Процедуры умножения полиномов показаны на рис. 12.4

File

D»P •

»

4 •

»К =

±

Edit

ЩP-[3

3

l

View

2 1)

2

4]

4

G=conv(P,

3

ЕЙ!

14

J

Web Window Uelp

> t* ,- %

1

4)

9 4

f : Current Directory: |D:WATLAB6p5Work Jll j

-

Рис. 12.4. Процедуры умножения полиномов

12.2.5. Функция polyvalQФункция предназначена для вычисления значений полинома призаданном значении переменной. Она имеет вид:

polyval(n,к)

где:

• п — вектор коэффициентов полинома;

• к — значение переменной S.

Page 283: MATLAB для студента

282

Пример 12.5

Необходимо вычислить значение полинома

P(S) = 3S2 +2S + ]

при S = -2 .

Решение:

» п=[3 2 1 ] ;

» Z=polyval(n, -2)

Z =

9

Вычисление значения полинома показано на р

•ЛМАПАВ

File Edit View Web Window Help

О E? j jfc Ч^ Ш ° г < | ' Щ i ? I Current Directory: | D:»

» n=[3 2 1]

n »

3 2 1

» Z=polyval(n,-2)

9

•!Ф Start j

Рис. 12.5. Вычисление значений noj

Глава 12

же. 12.5.

. -|П1 х|

(ATL AB6p5\wor k T | J

жнома

Page 284: MATLAB для студента

Компьютерные технологии решения задач управления 283

12.3. Операции с передаточнымифункциями звеньев

12.3.1. Сложение передаточных функцийСложение передаточных функций осуществляется с помощьюоператора +.

! Пример 12.6

Сложить передаточные функции

10 _ , „ ч 2S2+l2S +

Sz+2S + 5 ч S* + 3SZ + IS + 5

Решение:

» nl=[10];» ml=[l 2 5];» zl=tf(nl,ml)

Transfer function:

10

sA2 + 2 s + 5

» n2=[2 12 15] ;

» m2=[l 3 7 5];

» z2=tf(n2,m2)

Transfer function:

2 sA2 + 12 s + 15

sA3 + 3 s

A2 + 7 s + 5

» G=zl+z2

Transfer function:

2 эЛ4 + 26 s

A3 + 79 э

Л2 + 160 s + 125

зЛ5 + 5 э

л4 + 18 Б

Л3 + 34 з

л2 + 45 s + 25

Процедуры сложения передаточных функций показаны нарис. 12.6.

Аналогично осуществляются операции вычитания, умножения иделения передаточных функций с помощью операторов -, *, /.

Page 285: MATLAB для студента

284 Глава 12

•> М ATI АН

File £di( \£iew Web Windc*

Щ ? i Current Directory. |Р:У»|ДКДВ6р5\ууак ^ [ Л

» n l = [ 1 0 ] ; m l " [ l 2 5 ] ; Z l - t f ( n l , ml)

Transfer function:

10

> + 2 s + 5

» n2«[2 12 15]; ж2-[1 3 7 Sit Z2-t£(n2, m2)гапзСе): function:

2 зл2 + 12 s + 15

sA3 + 3 з

л2 + 7 s 4- 5

» G-Z1+Z2

ransfei: function:

2 зл4 + 26 8

Л3 + 79 з'2 + 160 s + 125

SAS + 5 S

A4 + 18 3

Л3 + 34 з

л2 + 45 s + 25

Рис. 12.6. Сложение передаточных функций

12.3.2. Функция pzmapOФункция pzmapO показывает расположение полюсов и нулей пе-редаточной функции на комплексной плоскости S. Функцияимеет вид:pzmap(G)

где G — имя передаточной функции.

| Пример 12.7

Представить на плоскости S нули и полюсы функции

6S5 +18.S"4 + 25S3 + 15S2 +45 + 12G(S) = -

S5 + 6S4 + \4S* +\6S2+9S

Page 286: MATLAB для студента

Компьютерные технологии решения задач управления 285

[•AMATIAB

File /Edit View Wefe Window

. D Sr '1 IP- " '

» n=[6 18 25 75 4 12];» q»tf(n, m)Transfer function:6 JA5 + 18 sA4 + 25 SA3

s*5 + 6 sA4 + 14 3A3 H

» pzmap(q)

PIU_.II.P...._._lielp

- \Щ \ '

u=[l 6 14

+ 75 тал2 1

- 16 sA2 +

f ; Current Directory: | D;WATLAB6p5\work

16 9 2 ] ;

• 4 3 + 12

9 3 + 2

Рис. 12.7. Определение нулей и полюсов передаточной функции

• - —

. / f i g u r e N o . 1

F i l e E d i t B e "

IQ & У

. >

£

- 1

I n s e r t I o o l s

A

M n d o w H e l p

P o l e - Z e r o M a p

С

(

Real Axis

- i n ! ^f

I

Рис. 12.8. Нули и полюсы передаточной функции

Page 287: MATLAB для студента

286

Решение:

» n=[6 18 25 75 4 12];

» m=[l 6 14 16 9 2];

» q=tf (n,m)

Transfer function:

6 эл5 + 18 s

A4 + 25 з

Глава 12

S"5 + 6 s-4

» pzmap(q)

14 + 16 эл2 + 9 s + 2

Процедуры определения нулей и полюсов передаточной функциипоказаны на рис. 12.7, а ответ представлен в виде рис. 12.8 с рас-положением нулей (кружки) и полюсов (звездочки) на плоско-сти 5". Обратите внимание, что на рисунке указаны только дваполюса, хотя в знаменателе функции G(S) полином пятой сте-пени. Такой результат получен потому, что в нашем случае четы-ре корня знаменателя равны - 1 .

12.3.3. Функция seriesQФункция series () используется для образования передаточнойфункции системы, состоящей из последовательного соединениязвеньев. Она имеет вид:

series(ql, q2)

где ql и q2 — передаточные функции последовательно соединен-ных звеньев.

I Пример 12,8•.;„ ,.„„., 1 ..... '.Структурная схема системы управления показана на рис. 12.9.

R(S)ф)

u(s)<h(s)

Y(S)

Рис. 12.9. Структурная схема системы

Page 288: MATLAB для студента

Компьютерные технологии решения задач управления 287

Необходимо получить передаточную функцию системы

если передаточные функции звеньев имеют вид:

Y(S)_

Решение:

» nl=[l» ml=[l» ql=tf

» m2=[5» q2=tf

|

1]2]

(nl

0(n2

» G=seriesTransfer

s +

;;

0];,m2);(ql,q2)

function:1

u(s) s+\

R(S) S + 2 U(S) 5S2

5 s"3 + 10 sA2

Ответом является, как и следовало ожидать, произведение пере-даточных функций звеньев.

12.3.4. Функция parallel?)Функция parallel о используется для образования передаточнойфункции системы, состоящей из параллельных звеньев, и имеетвид:

parallel(ql, q2)

где ql и q2 — передаточные функции параллельно соединенныхзвеньев.

Пример 12.9

Структурная схема системы управления приведена на рис. 12.10.

Page 289: MATLAB для студента

288 Глава 12

Рис. 12.10. Структурная схема системы,состоящая из параллельных звеньев

Необходимо получить передаточную функцию системы

R(S)

если передаточные функции звеньев имеют вид:

Решение:

» nl=[l 1];» ml=[l 3 1];» ql=tf(nl,ml);» n2=[l 2];» ш2=[1 1 3 ] ;» q 2 = t f ( п 2 , т 2 ) ;» G = p a r a l l e l ( q l , q 2 )T r a n s f e r f u n c t i o n :

2 s » + 7 s A 2 + И s + 5

+ 4 sA3 + 7 sA2 + 10 s + 3

12.3.5. Функция feedbackQФункция feedback о применяется для образования передаточ-ной функции замкнутой системы по известным передаточнымфункциям разомкнутой системы и цепи обратной связи.

Page 290: MATLAB для студента

Компьютерные технологии решения задач управления 289

Она имеет вид:

feedback(q, qoc, ±1)

где:

• qoc — передаточная функция цепи обратной связи;

• ±1 — указывает вид обратной связи (-1 — положительная,+1 — отрицательная).

! Пример 12.10

Структурная схема системы управления приведена на рис. 12.11

Рис. 12.11. Структурная схема системы управления

Передаточные функции звеньев имеют вид:

G ( S )S + 2 5S2

Передаточная функция цепи обратной связи образует отрица-тельную обратную связь с коэффициентом передачи, равным 1.

Необходимо получить передаточную функцию замкнутой систе-мы управления:

Передаточная функция G(S) определяется по выражению

ЮЗак. 1196

Page 291: MATLAB для студента

290 Глава 12

Из этого выражения и структурной схемы видно, что для получе-ния передаточной функции замкнутой системы необходимо вна-чале образовать с помощью функции tf () звенья G, (S) и G7 (S),

затем посредством функции series () образовать передаточнуюфункцию разомкнутой системы и после этих процедур использо-вать функцию feedback о для образования передаточной функциизамкнутой системы.

Программа образования передаточной функции замкнутой сис-темы управления имеет вид:

» nl=[l 1] ;» ml=[l 2] ;» ql=tf(nl,ml)Transfer function:s + 1

s + 2» n2=[l];

» m2=[5 0 0];

» q2=tf(n2,m2)

Transfer function:

1

» q=series(ql,q2)

Transfer function:

s + 1

5 s~3 + 10 sA2

» feedback(q,[1])

Transfer function:

s + 1

5 s~3 + 10 s"2 + s + 1

Решение задачи приведено на рис. 12.12.

Page 292: MATLAB для студента

Компьютерные технологии решения задач управления 291

«> MATLAB *0е ЕЛ View Web Window Help

О £? , .. t * ° ' Щ ? Current Directory: |D:lMATLAB6p5\work

n l = [ l 1 ] ; m l = [ l 2 ] ; q l = t £ ( n l , ml)

Transfer function:

3 + 1

0 0 ] ; q2= t£ (n2 , m2

Transfer function:

1

l, q2)

Transfer function:3 + 1

5 3*3 + 10 3*2

» f eedback(q , [ 1 ] )

Transfer function:

s + 1

S s*3 + 10 3*2 + s + 1

Рис. 12.12. Образование передаточной функции системыс жесткой отрицательной обратной связью

Пример 12.11

Структурная схема системы управления приведена на рис. 12.13.

Необходимо получить передаточную функцию замкнутой сис-

темы

G(S) =

Page 293: MATLAB для студента

292 Глава 12

U(S)

Рис. 12.13. Структурная схема системыс гибкой отрицательной обратной связью

Передаточные функции звеньев имеют вид:

Решение:

» nl=[l 1];» ml-tl 2];» ql=tf(nl,ml);

» n2=[l 0.5];

» m2=[l];

» q2=tf(n2,m2);

» freeback(ql,q2,-l)

Transfer function:

s + 1

sA2 + 2.5 s + 2.5

12.3.6. Функция minrealQФункция minreaio позволяет выполнить сокращения передаточ-ной функции при наличии одинаковых сомножителей в числите-ле и знаменателе. Она имеет вид:

minreal(G)

где G — передаточная функция системы.

: • " !

Пример 12.12

Передаточная функция системы управления имеет вид:

G(S) = -S2 +4S + 3

3 +S2 +2S + 2'

Page 294: MATLAB для студента

Компьютерные технологии решения задач управления 293

Необходимо выполнить сокращение, если имеются одинаковыесомножители в числителе и знаменателе.

Решение. Представим функцию G[S) на языке MATLAB и вос-

пользуемся функцией minreal (). Программа будет иметь вид:

» п = [ 1 4 3] ;

» т = [ 1 1 2 2] ;

» q = t f ( n , m ) ;

» m i n e r a l ( q )

T r a n s f e r f u n c t i o n :

s + 3

12.4. Исследование переходныхпроцессов в системах управленияИсследовать переходные процессы в системах управления можноследующими методами:

• непосредственным решением дифференциальных уравнений,описывающих динамику системы управления;

• с помощью преобразования Лапласа передаточной функциисистемы;

• с помощью встроенной функции step ().

Все эти методы могут быть реализованы в системе MATLAB.

Для исследования переходных процессов с помощью преобразо-вания Лапласа необходимо получить обратное преобразованиеЛапласа передаточной функции звена Y(s) и представить его

графически, а затем по виду графика определить вид переходногопроцесса (апериодический, колебательный) и его длительность.

Для графического воспроизведения результата в MATLAB ис-пользуется функция ezpiot (), имеющая вид:

ezplot(Y(t), xn, xk)

Page 295: MATLAB для студента

294

где:

• Y(t) — функция, записанная в символьновычки);

• xn, xk — диапазон изменения аргумента, в изон изменения /.

1 Пример 12.13 '

Пусть обратное преобразование функции име<

Тогда программа воспроизведения графикаиметь вид:

» Y='0.5*exp(0.5*t)';» ezplot (Y, 0,3)

I—^——i—^mmmII I •! n imir inn" i • in»File Edit View Insert Tools Desktop Window Help

0.5 exp(0.51)

2.2

2

1.8

1.4

1.2

0.8

0.6

0.4

!

0 0.5 1 1.5 2'..:' ; ' . . . . t

Рис. 12.14. График переходного процесс

м ви;

ашем

Глава 12

ie (взята в ка-

случае диапа-

• •

;т вид

в М ^TLAB будет

//

-

-

2.5 " • • 3

а системы

Page 296: MATLAB для студента

Компьютерные технологии решения задач управления 295

После нажатия клавиши <Enter> на экране график функции(рис. 12.14) в диапазоне /, равном [0—3].

12.4.1. Функция stepOФункция step () вычисляет реакцию системы управления на еди-ничное ступенчатое воздействие. Если целью исследования явля-ется получение графика, то функция записывается в следующемвиде:

step(q, t)

где:

• q — передаточная функция системы;

• t — время функционирования системы управления.

При этом график будет получен автоматически с указанием пе-ременных по осям. Если же график необходим для иных целей сего сохранением, то функция записывается с указанием аргумен-тов в левой части, например,

[у, t ] = s t e p ( q , t )

После этого для образования графика применяется функцияplot(t,у). При этом перед функцией step{q,t) необходимо ука-зать диапазон изменения t, например, в таком виде:

t=[0:0.1:3]

т. е. от 0 до 3 с шагом 0.1.

; Пример 12.14 . j

Определить переходную характеристику системы управления,передаточная функция которой имеет вид:

2S2 + 2.5S + 5402Решение:

» nl=[5400];» п й = [ 2 2 . 5 5 4 0 2 ] ;

Page 297: MATLAB для студента

296 Глава 12

» q=tf(nl,ml)

Transfer function:

5400

2 s~2 + 2.5 s + 5402

» t=[0:0.005:3];

» [y,t]=step(q,t);

» plot(t,y)

Ответом будет график переходной характеристики, показаннойна рис. 12.15.

-> Figure No. IBe Edit Item Insert Tods Window Help

2

1.8

1.6

-41

1,2

1

0.8

0.6

0.4

0.2

0 0.5 2.5

Рис. 12.15. Переходная характеристика системы

12.5. Частотные характеристикисистемыАмплитудно-частотная и фазочастотная характеристики в системеMATLAB строятся с помощью функции bode (), имеющей вид:

Page 298: MATLAB для студента

Компьютерные технологии решения задач управления 297

bode(sys)

где sys — имя передаточной функции.

Полученные частотные характеристики называются функциямиВоде.

| • - ' : •• • - •• •

| Пример 12.15

Необходимо построить частотные характеристики звена, переда-точная функция которого имеет вид:

? \ .

5(25 + 1)

Программа решения задачи имеет вид:

» п = [ 0 . 5 1 ] ;

» т=[2 1 0 ] ;

» s y s = t f ( n , m ) ;

» bode(sys)

После нажатия клавиши <Enter> на экране появится амплитудно-частотная и фазочастотная характеристики звена (рис. 12.16).Частота имеет размерность "рад./с." и представляется в логариф-мическом масштабе. Амплитуда измеряется в децибелах, фаза —в градусах.

При построении диаграммы Боде в области желаемых частот ис-пользуется функцияl o g s p a c e ( a , b , п)

где:

• а — начальное значение частоты;

• ь — конечное значение частоты;

• п — число точек в диапазоне [а; Ъ\.

Функция bode () при этом записывается в следующем виде:

bode(sys, w)

Page 299: MATLAB для студента

298 Глава 12

File Eot View Insert Tools Desktop Window Help

Bo* Diagram

Frecjuency (racf/sec)

Рис. 12.16. Частотные характеристики звена

Яе Е * view Insert Tools Desktop Window -vi t

D G ? у а ' : fe;Ф.Щ.W® I D S . •. •

Bode Diagram

\ /

Рис. 12Л7. График функции Боде

Page 300: MATLAB для студента

Компьютерные технологии решения задач управления 299

Для нашего примера программа будет иметь вид:

» N=[0.5 1];» М=[2 1 0] ;

» s y s = t f (N, М) ;

» W = l o g s p a c e ( - l , 3 , 2 0 0 ) ;

» b o d e ( s y s , W )

После нажатия клавиши <Enter> на экране отобразятся характе-ристики в заданном диапазоне частот (рис. 12.17).

Следует иметь в виду, что в функции logspaceO значения а и ь(в нашем случае а=-1, ь = з ) — это степени 10, т. е. КГ1, 103, чтосоответствует диапазону частот 0,1—3 рад/с.

12.5.1. Амплитудно-фазоваяхарактеристика системыАмплитудно-фазовую характеристику называют диаграммойНайквиста. Она применяется для анализа устойчивости по кри-терию Найквиста. Реализуется в системе MATLAB с помощьюфункции

nyquist(sys)

где sys — имя передаточной функции.

! Пример 12.16

Необходимо построить диаграмму Найквиста звена, передаточ-ная функция которого имеет вид:

S3+2S2+S + 0.S

Программа построения диаграммы имеет вид:

» N=[0.5];» М=[1 2 1 0 . 5 ] ;

» s y s = t f (N, М) ;

» n y q u i s t ( s y s )

После нажатия клавиши <Enter> на экране появится диаграммаНайквиста, приведенная на рис. 12.18.

Page 301: MATLAB для студента

300 Глава 12

File Ed* View Insert Tods Desktop Window Helpо D B В П

Nyquist Diagram

_-JE|*J

Рис. 12.18. Диаграмма Найквиста

12.5.2. Диаграмма НикольсаСетка кривых линий на логарифмической амплитудно-фазовойдиаграмме называется диаграммой Никольса. Линиям постоян-ных значений амплитуды М соответствуют децибелы, а линиямпостоянных значений 7V = tgcp —градусы.

Диаграмма Никольса используется для исследования вопросовустойчивости автоматических систем. Для построения диаграм-мы Никольса MATLAB имеет специальную функцию:

nichols(sys, w)

где:

• sys — имя передаточной функции;

• w— частота, задаваемая пользователем в логарифмическоммасштабе.

Page 302: MATLAB для студента

Компьютерные технологии решения задач управления 301

| Пример 12.17 I

Передаточная функция системы имеет вид:

1

Программа построения диаграммы Никольса:

» п=[1];

» т=[0.2 1.2 1 0];

» sys=tf(n,m);

» w=logspace(-1,1,400);

» nichols(sys,w);

» ngrid

После нажатия клавиши <Enter> на экране — диаграмма Николь-са (рис. 12.19).

File Edit View Insert Tools Desktop Window Help

-223" -4 00 " И 35 -Э0Open-Loop Phase £deg)

Рис. 12.19. Диаграмма Никольса

Page 303: MATLAB для студента

302 Глава 12

Функция ngrid вызывается для нанесения криволинейной сеткикоординат.

12.6. Пример анализа динамикисистемы управленияСтруктурная схема системы управления приведена на рис. 12.20.

R(S)u2{s)

G2 G3

Y(S)

Рис. 12.20. Структурная схема разомкнутой системы управления

Передаточные функции звеньев имеют вид:

Кг=_£,, GJS)=

Переменные имеют значения:

АГ, =10, К2=5, 7J =1.5, Г, =3.5, Г 3 =4.7.

Необходимо исследовать:

• динамические свойства разомкнутой системы, определив ус-тойчивость системы и качество переходных процессов;

• влияние обратной связи на устойчивость и качество переход-ных процессов.

Решать поставленные задачи будем в такой последовательности:

1. Получение передаточной функции системы управления

2. Определение нулей и полюсов передаточной функции разомк-нутой системы.

3. Определение расположения нулей и полюсов на плоскости S.

4. Исследование качества переходных процессов.

Page 304: MATLAB для студента

Компьютерные технологии решения задач управления 303

5. Выбор, на основании предыдущих исследований, вида обрат-ной связи.

6. Исследование устойчивости и качества переходных процессовв системе с обратной связью.

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

» K l = 1 0 ;

» К2=5;

» Т 1 = 1 . 5 ;

» Т 2 = 3 . 5 ;

» Т 3 = 4 . 7 ;

» n l = [ K l ]

» п2=[К2]

» п З = [ Т 2

» G = z l * z 2

; m l - M I »

; m2=[Tl 1

1 ] ; m3=[T3

* z 3

T r a n s f e r f u n c t i o n :

175 s + 50

z l = t f ( n l , m l ) ;

0 ] ; z 2 = t f ( n 2 , m 2 ) ;

1 ] ; z 3 = t f ( n 3 , m 3 ) ;

7.05 sA3 + 6.2 sA2 + s

Обратите внимание на то, что в ответе имени функции G[S) нет.

Ее имя совпадает с именем произведения zi*z2*z3.

12.6.2. Определение нулей и полюсовпередаточной функции G{S)Программа имеет вид:

» P=pole (G)Р =

0

Page 305: MATLAB для студента

304 Глава 12

-0.6667-0.2128

» N0=zero(G)

Ответа не последовало. Программа не нашла нулей передаточнойфункции. В целях экономии времени не будем искать причиныотказа.

Для определения корня воспользуемся функцией roots (). Пред-

ставим числитель передаточной функции G(S) полином

1755* + 50 в векторном виде и воспользуемся функцией roots ():

» ql=[175 50];» N0=roots(ql)N0 =

-0.2857

12.6.3. Расположение нулей и полюсовна комплексной плоскостиВыполним:

» pzmap(G)

Результатом выполнения функ'ции является комплексная плос-кость S с расположением нулей (кружки) и полюсов (крестики).Значения нулей и полюсов совпадают с полученными в п. 3, чтосвидетельствует о правильности нашего решения. Комплекснаяплоскость с нулями и полюсами показана на рис. 12.21.

12.6.4. Анализ устойчивости системыАнализ полюсов и нулей передаточной функции позволяет сде-лать вывод, что исследуемая система не устойчива, т. к. один изполюсов равен нулю.

12.6.5. Исследование качества переходного

Вычислим реакцию системы управления на единичную ступенча-тую функцию, воспользовавшись функцией s tepo. На данном

Page 306: MATLAB для студента

Компьютерные технологии решения задач управления 305

File Ed» View Insert Tools Desktop Window Helpч?: a IT s a

--O- <€••-.-•-• -•->

Рис. 12.21. Расположение нулей и полюсов на комплексной плоскости

ЕСFile

35Edit

sTl

11

EH•Vlw

aa

;сг:ь

iCOG

B S DIrisert

T ' F ;

Tools Desktop' Wir

у

у'

: DSStep Response

/

Time (sec)

0 S5 40

•«

Рис. 12.22. Переходный процесс системы

Page 307: MATLAB для студента

306 Глава 12

этапе исследования нам достаточно получить лишь график реак-ции системы, поэтому не будем указывать временную областьграфика.

» step(G)

На экране (рис. 12.22)— переходный процесс, представляющийсобой возрастающую амплитуду выходного сигнала от времени.Система неустойчива.

12.6.6. Получение передаточной функциизамкнутой системыИсследуем теперь влияние обратной связи на динамику системыуправления.

Передаточная функция замкнутой системы GOS определяется

через передаточную функцию разомкнутой системы G(S) при

отрицательной обратной связи в соответствии с выражением:

G(S)GOS =

G(S)'

В MATLAB это выражение реализуется с помощью функцииfeedback (), которая в нашем случае имеет вид:

» GOS=freeback(G, [1])

Transfer function:

175 s + 50

7.05 6.2 sA2 + 176 s 50

12.6.7. Определение нулей и полюсовпередаточной функции замкнутой системыи расположение их на комплекснойплоскостиТак как числители передаточной функции замкнутой и разомкну-той систем совпадают, то определим лишь полюсы функции

и отразим нули и полюсы на плоскости S.

Page 308: MATLAB для студента

Компьютерные технологии решения задач управления 307

» POpole(GOS)PO =

-0.2967 + 4.97061-0.2967 - 4.9706i-0.2860

» pzmap(GOS)

На экране (рис. 12.23) появится комплексная плоскость S с ну-

лями и полюсами передаточной функции

File Edit View Insert Tools Desktop Window Helpо а •

Pole-Zero Map

Рис. 12.23. Нули и полюсы передаточной функции

Анализ показал, что замкнутая система управления являетсяустойчивой, ее нули и полюсы расположены в левой полуплос-кости.

Page 309: MATLAB для студента

308 Глава 12

12.6.8. Переходные процессызамкнутой системы с жесткойотрицательной обратной связью

График переходного процесса получаем после реализации функ-ции

step(GOS)

На экране — график, представляющий собой колебательный за-тухающий процесс (рис. 12.24).

1.8

О 15 »

Рис. 12.24. График переходного процесса замкнутой системы

Длительность переходного процесса т.«15с, величина перерегу-

лирования А «1.8.

12.6.9. Исследование устойчивостии качества переходных процессовсистемы управления при гибкойотрицательной обратной связиУлучшить динамику системы управления можно, используя гиб-кую обратную связь по производной.

Page 310: MATLAB для студента

Компьютерные технологии решения задач управления 309

В качестве обратной связи применим блок с передаточной функ-цией

Результаты расчетов при значениях 7 = 2 , 0.5, 0.1 таковы:

• при Т - 2 процесс апериодический с длительностью х « 12 с и

отсутствием перерегулирования;

• при Т = 0.5 процесс апериодический с длительностьют « 2 . 5 с ;

• при Т = 0.1 процесс колебательный с длительностью т«3.3с

и величиной перерегулирования А « 1.35 .

Эти исследования при желании читатель выполнит самостоя-тельно.

12.7. Индивидуальные заданиядля исследования динамикисистем управленияВ следующих разделах приводятся два индивидуальных заданияпо исследованию динамики систем управления.

В первом из них ставятся задачи образования передаточнойфункции системы, определение условий устойчивости по значе-ниям нулей и полюсов передаточной функции и образования пе-реходных характеристик системы.

Второе задание посвящено исследованиям устойчивости и каче-ства переходных процессов по переходным и частотным характе-ристикам системы.

12.7.1. Задание 1Блок-схема системы управления приведена на рис. 12.25.

Необходимо исследовать устойчивость и качество переходныхпроцессов разомкнутой системы управления, системы с жесткойи гибкой обратной связью. Решение задачи выполнить в последо-вательности, приведенной в примере разд. 12.6.

Page 311: MATLAB для студента

310 Глава 12

R(S)ux{s)

G,(S) G3(S)Y(S)

Рис. 12.25. Исходная структурная схема системы

При исследовании динамики системы управления с гибкой об-

ратной связью передаточную функцию цепи обратной связи Goc

можно выбрать из следующих вариантов:

G

Далее приведены передаточные функции звеньев системы длявариантов заданий.

• Вариант 1

-&-, G2(s) =] S(T2S + \)

К, - 2 0 , K2=2, Г,-1.5, Т2=2, Г 3=5.4, Г 4 =2.5 .

• Вариант 2

К, =30, K2=5, K3=\2, Т, =2.5, Г 2 - 0 . 8 .

• Вариант 3

AT, - 3 2 , АГ2 =16, Къ =2.5, 7] =1.5, Г2 = 5 , Г3 =1.5, Г4 - 2 .

Page 312: MATLAB для студента

Компьютерные технологии решения задач управления 311

• Вариант 4

, G J S ) ,S(T2S + \) П ' TAS + \

K,=20, K2=25, 7] =1.5, 7, = 3,7, =0.5, Г 4=1.4.

у• Вариант 5

^ , Gl(S) = ^ ^S(T2S + \)

AT, =20, ^ 2 =10, ^ з = 1 5 , T{ = 2 , Г2 =1.5, Г3 =0.5.

• Вариант 6

> 0 2 ( S ) ,G,{S)

AT, =15, K2=20, K3 = 7 , 7J = 2 , Г2 =0.5, Г3 = 3 , Г4 =1.4.

• Вариант 7

Kx =12, AT2 = 15 , 7] =1.4, Г 2 =0.4, Г 3 = 2 , Г4 = 5 .

• Вариант 8

\\, G2(S) = ^ , G3(S) = ^

ЛГ, = 5, K2 = 15, Кг = 12 , Tx = 0.8, Г2 = 0.5 , T3 = 2 .

• Вариант 9

Kt =20, K2=25, 7; =1.5, Г 2 = 3 , Г 3 =0.5, Г4=1.4

Page 313: MATLAB для студента

312 Глава 12

• Вариант 10

Кх = 5, /:2 =35, 2] =0.5, Г, = 2 , Г, =3.2, Г4 =1.5 , Г5 =0.2.

• Вариант 11

^, = 100 , К2 = 5.6, 7] = 3 , Т2 = 0.5 , Г3 = 2.5, Г4 = 5 , Г5 = 2 .

• Вариант 12

* , = ю , А:2 =20, A:3 =6.7,7] = 2 , 7 ; =0.5, r3 =0.1 .

• Вариант 13

5(715+ 1)

К| = 5, К2 = 7, К^ — 12, 7j = 0.5, 7 2 = 1.5 , Т3 = 2, 7 = 1 .f

• Вариант 14

S(T2S + \)

= 5 , К2 = 7 , #з = 1 0 ' т\ =1-2, 5Г2 =3 - 2 ' гз =1-8, 7; =2

• Вариант 15

, G2(5) , 3 ( ), 2 T2S + \ 3

Кх = 2 , АГ2 = 8, Къ = 12 , 7] = 2, Т2 = 3.5, Г3 = 0.2, Г4 = 0.5

Page 314: MATLAB для студента

Компьютерные технологии решения задач управления 313

Вариант

Kl = 20,

Вариант

IV )

16

К2=\2,

17

7,5 + 1

s)

г т —

(s){ ' S

S + \

0.5,

к

(T,SI

+ 1

J 3(o)

= 0.1,

к1

*i

I )

= 0.1,

A' ("]

•I)

= 2.

+ ),

АГ, = 5 , ^ 2 = 1 0 0 , ^ 3

= 1 - 5 ' 4 = 0 . 2 , Г 2 = 2 , Г, =1.2, Г 4 =4.2.

• Вариант 18

АГ, = 12, Л:, = 50, К3 = 2 , Тх = 0.5, Г2 = 1.5 , 73 = 2, Г4 = 2.5 .

• Вариант 19

К^12, К2= 5, К3 =50,^=2,1-, =0.5, Т3 =3.5, Т4 =2.5.

• Вариант 20

T2S

Kx = 5 , K2 = 70, Кг = 12, 7] = 0.5, T2 = 2 , Г3 = 1.5 .

• Вариант 21

G, (51) = - ^ - , G7 (S) = ^ 2 ( Г ^ + 1 ) , G3 (S) = ,(Г 45 + 1),

^ , = 5 , ^ 2 = 5 0 , AT,-.?, Т}=О.5,Т2=\.5, Г 3 = 2 , Г 4 = 0 . 8 .

Page 315: MATLAB для студента

314 Глава 12

• Вариант 22

Kx = 5 , £ 2

• Вариант 23

^ 3 = 8 , 7] = 2 , Г 2 =0.5, Г, =0.8, Г4 =1.5

T3S +1)

£ 3 = 1 2 , Г, =0.5, Г 2 =2.5, 7з=:

• Вариант 24

К,=1, К2=2%, Къ=\2, Тх=2, Г 2 =0.8, Г, =0.5, Г 4 = 3 .

• Вариант 25

=3.5; / : 2 = 3 2 , ^ 3 = 8 , 7J =1.5, Г 2 = 2 , Г 3 =0.5, Г , = 3 .

12.7.2. Задание 2

Постановка задачи

Предлагаются четыре звена системы управления в виде переда-точных функций. Варианты звеньев приведены в индивидуаль-ных заданиях. Необходимо исследовать их характеристики, опре-делив:

• переходные процессы с помощью преобразования Лапласа;

• реакцию звена на единичное ступенчатое воздействие;

• амплитудно-частотную и фазочастотную характеристики;

• амплитудно-фазовую характеристику;

Page 316: MATLAB для студента

Компьютерные технологии решения задач управления 315

• диаграмму Никольса;

• показатели качества переходного процесса (вид переходногопроцесса и его длительность, величину перерегулирования);

• запас устойчивости по амплитуде и фазе.

Исследования выполнить с помощью универсального программ-ного средства MATLAB и специализированного пакета приклад-ных программ Control System Toolbox. Переходную характери-стику звена следует получить путем обратного преобразованияЛапласа передаточной функции звена.

Варианты индивидуальных заданийи передаточных функцийВарианты заданий приведены в табл. 12.1.

Цифры в графе "звенья" являются номерами передаточных функ-ций звеньев.

Решения необходимо получить в виде формул, графиков и де-тального анализа полученных результатов.

Таблица 12.1. Варианты заданий

Номер

Вариант

Звенья

Вариант

Звенья

Вариант

Звенья

Вариант

Звенья

Вариант

Звенья

1

1,3,7,11

6

1,4,6, 10

11

3,6,8,10

16

4, 7, 9, 11

21

1,5,6,9

2

2,5,8,10

7

2, 6, 8, 9

12

4, 5, 9, 11

17

1,4.6,10

22

2, 7, 9, 11

3

3, 6, 9, 11

8

3, 5, 7, 8

13

1,4,7,10

18

2, 6, 7, 9

23

3,4,7,10

4

4, 2, 5, 8

9

1,4,8,11

14

2,5,8,11

19

3,5,8,11

24

4,5,7,9

5

1,4,5,9

10

2, 3, 6, 9

15

3, 6, 7,9

20

4,7,8,10

25

1,6,9,11

Page 317: MATLAB для студента

316 Глава 12

Далее приведены передаточные функции звеньев системы.

• Вариант 1

TS

TS+Л

б) 7 = 5.

У(5)=-

а) 7 = 0.5;

• Вариант 2

а) 7] =0.2, 7 2 = 1 ;

• Вариант 3

а) 7, =0.3, 72 =1.5;

• Вариант 4

а) А: = 10, Г = 0.2;

• Вариант 5

а) 7 = 0.5;

• Вариант 6

а) £" = 10, 7 = 0.2;

Y(S) =T2S

7,5 + 1

б) 7, = 1, 72 = 0.2 .

7,5

Y(S) =

б) 7, =1.5, 72=0.3.

К

7 ( 5 ) -

75 + 1

б) А: = 50, 7 = 1.

1

75 + 1

б) 7 = 4.

5(75 + 1)

б) К

Page 318: MATLAB для студента

Компьютерные технологии решения задач управления 317

• Вариант 7

Y(S) = -V ; S

а) £ = 10; б) £ = 100.

• Вариант 8

KS

а) Л = 1 0 , i, = (J. 1 , У2

= ' j ° ) л = 1 UU , ij = U. 1 , У2 •

• Вариант 9

Г(5).-

а) £ = 10, 7] =0.1, Г2=0.5, Г 3=1;

б) £ = 10, 7J =0.8, Г2=0.5, Т3=\.

• Вариант 10

S2(T2S + \)

а) £ = 20 , 7] = 0 . 5 , Т2 =1 ; б) £ = 2 0 , 7] = 1 , Г2 = 0.5.

• Вариант 11

к

а) £ = 10,75=0.1,72=0.7,^=1.5;

б) £ = 20 , Тх = 1, Г2 = 2 , Г3 = 3 .

Page 319: MATLAB для студента

Литература

1. Андриевский Б., Фрадков А. Избранные главы теории авто-матического управления с примерами на языке Matlab. —СПб.: Наука, 1999.

2. Воробьева Г. Н., Данилова А. Н. Практикум по вычислитель-ной математике. — М.: Высшая школа, 1990.

3. Гнеденко Б. В., Коваленко И. Н. Введение в теорию массово-го обслуживания. — М.: Наука, 1987.

4. Гультяев А. Визуальное моделирование в среде Matlab. Учеб-ный курс. — СПб.: Питер, 2000.

5. Гутер Р. С, Резниковский П. Т. Программирование и вычис-лительная математика, выпуск 2. — М.: Наука, 1971.

6. Демидович Б. П., Марон И. А. Основы вычислительной мате-матики. — М.: Наука, 1970.

7. Дорф Р., Бишоп Р. Современные системы управления. — М.:Лаборатория базовых знаний, 2002.

8. Дьяконов В., Круглов В. Математические пакеты расширенияMatlab. Специальный справочник. — СПб.: Питер, 2001.

9. Дьяконов В. Учебный курс. — СПб.: Питер, 2001.

10. Егоренков Д. Л., Фрадков А. Л., Харламов В. Ю. Основы ма-тематического моделирования. — СПб.: БГТУ,1996.

11. Компьютер для студентов, аспирантов и преподавателей. Са-моучитель, под редакцией В. Б. Комягина. — Можайск: Три-умф, 2002.

Page 320: MATLAB для студента

Литература 319

12. Копченова Н. В., Марон И. А. Вычислительная математикав примерах и задачах. — М: Наука, 1972.

13. Половко А., Бутусов П. Интерполяция. Методика и компью-терные технологии их реализации. — СПб.: БХВ-Петербург,2004.

14. Половко A. Derive для студента.— СПб.: БХВ-Петербург,2005.

15. Потемкин В. Г. Инструментальные средства Matlab 5.x. — М.:Диалог-МИФИ, 2000.

16. Потемкин В. Система инженерных и научных расчетовMatlab 5.x. — ML: Диалог-МИФИ, 1999.

17. Пулькин С. П. Вычислительная математика.— М.: Просве-щение, 1972.

18. Форсайт Дж., Малькольм М., Моулер К. Машинные методыматематических вычислений: Пер. с англ. — М.: Мир, 1980.

Page 321: MATLAB для студента

Магазин-салонНОВАЯ ТЕХНИЧЕСКАЯ КНИГА*

190005, Санкт-Петербург, Измайловский пр., 29

В магазине представлена литература по

компьютерным технологиям

радиотехнике и электронике

физике и математике

экономике

медицине

и др.

Низкие ценыПрямые поставки от издательств

Ежедневное пополнение ассортиментаПодарки и скидки покупателям

Магазин работает с 10.00 до 20.00без обеденного перерыва

выходной день - воскресенье

Тел.: (812)251-41-10, e-mail: [email protected]