252

files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

  • Upload
    halien

  • View
    243

  • Download
    5

Embed Size (px)

Citation preview

Page 1: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования
Page 2: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

УДК 519.85 ББК 22.18 Я49

Электронный учебно-методический комплекс по дисциплине «Математическое программное обеспечение» подготовлен в рамках инновационной образовательной программы «Инновационно-образовательный центр технологий поддержки жизнен-ного цикла и качества продукции», реализованной в ФГОУ ВПО СФУ в 2007 г.

Рецензенты:

Красноярский краевой фонд науки; Экспертная комиссия СФУ по подготовке учебно-методических комплексов дис-циплин

Якунина, С. В. Я49 Математическое программное обеспечение. Версия 1.0 [Электронный ре-

сурс] : электрон. учеб. пособие / С. В. Якунина. – Электрон. дан. (5 Мб). – Красноярск : ИПК СФУ, 2008. – (Математическое программное обеспечение : УМКД № 182-2007 / рук. творч. коллектива С. В. Якунина). – 1 электрон. опт. диск (DVD). – Систем. требования : Intel Pentium (или аналогичный процессор других производителей) 1 ГГц ; 512 Мб оперативной памяти ; 5 Мб свободного дискового пространства ; привод DVD ; операционная система Microsoft Windows 2000 SP 4 / XP SP 2 / Vista (32 бит) ; Adobe Reader 7.0 (или аналогич-ный продукт для чтения файлов формата pdf).

ISBN 978-5-7638-1505-4 (комплекса) Номер гос. регистрации в ФГУП НТЦ «Информрегистр» 0320802758

от 23.12.2008 г. (комплекса) Настоящее издание является частью электронного учебно-методического комплекса по дисципли-

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

В учебном пособии изложен теоретический материал, необходимый для освоения дисциплины «Математическое программное обеспечение» в соответствии с учебной программой, охватывающий теорию математических пакетов MathCad и MatLab, широко используемых в САПР для автоматизации численных и символьных вычислений.

Предназначено для студентов направления подготовки бакалавров 230100.62 «Информатика и вы-числительная техника» укрупненной группы 230000 «Вычислительная техника и информационные технологии».

© Сибирский федеральный университет, 2008

Рекомендовано Инновационно-методическим управлением СФУ

в качестве учебного пособия

Редактор Л. И. Вейсова

Разработка и оформление электронного образовательного ресурса: Центр технологий элек-тронного обучения информационно-аналитического департамента СФУ; лаборатория по разработке мультимедийных электронных образовательных ресурсов при КрЦНИТ

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

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

Подп. к использованию 01.09.2008 Объем 5 Мб Красноярск: СФУ, 660041, Красноярск, пр. Свободный, 79

Page 3: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -3-

ООГГЛЛААВВЛЛЕЕННИИЕЕ

ВВЕДЕНИЕ................................................................. 10

1. НАЗНАЧЕНИЕ, ПРИНЦИПЫ ФУНКЦИОНИРОВАНИЯ И ИСПОЛЬЗОВАНИЯ СИСТЕМЫ MATLAB .................................................. 11

2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB .......... 13

2.1. Арифметические вычисления ................................................. 13 2.2. Формат вывода результата вычислений ............................. 13

2.3. Вычисление элементарных функций .................................... 15

2.4. Присвоение переменных .......................................................... 18

2.5. Сохранение рабочей среды ..................................................... 20

2.6. Просмотр переменных .............................................................. 21

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ ................................................... 23

3.1. Основные определения ............................................................ 23

3.2. Вектор-столбцы и вектор-строки ............................................ 23

3.2.1. Ввод, сложение и вычитание векторов .......................................... 23

3.2.2. Обращение к элементам вектора ..................................................... 25

3.2.3. Применение функций обработки данных к векторам .................. 28

3.2.4. Поэлементные операции с векторами ............................................ 30

4. РАБОТА С МАССИВАМИ ...................................... 34

4.1. Построение таблицы значений Функции ............................... 34

4.2. Построение графиков функции одной переменной ............ 37

4.3. Умножение векторов .................................................................. 41

4.3.1. Скалярное произведение .................................................................. 41

4.3.2. Векторное произведение .................................................................. 42

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ................ 45

5.1. Ввод матриц, простейшие операции ...................................... 45

5.1.1. Различные способы ввода ............................................................... 45

Page 4: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

ОГЛАВЛЕНИЕ

Математическое программное обеспечение. Учебное пособие -4-

5.1.2. Обращение к элементам матриц ...................................................... 46

5.1.3. Сложение, вычитание, умножение, транспонирование и возведение в степень .......................................................................................... 48

5.1.4. Перемножение матрицы и вектора .................................................. 52

5.2. Решение систем линейных уравнений .................................. 53

5.3. Считывание и запись данных ................................................. 54

6. БЛОЧНЫЕ МАТРИЦЫ ........................................... 56

6.1. Работа с блочными матрицами ............................................... 56

6.1.1. Конструирование блочных матриц ................................................. 56

6.1.2. Выделение блоков ............................................................................. 57

6.1.3. Удаление строк и столбцов .............................................................. 59

6.2. Заполнение матриц при помощи индексации ...................... 60

6.3. Создание матриц специального вида .................................... 61

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ ............................................ 69

7.1. Визуализация матриц ................................................................ 69

7.2. Поэлементные операции и встроенные функции ............... 71

7.2.1. Поэлементные операции с матрицами ........................................... 71

7.2.2. Вычисление математических функций от элементов матриц ... 74

7.3. Применение функций обработки данных к матрицам ........ 75

7.4. Графики двух переменных ....................................................... 81

8. ДИАГРАММЫ И ГИСТОГРАММЫ ......................... 84

8.1. Представление векторных данных ........................................ 84

8.1.1. Диаграммы векторных данных........................................................ 84

8.1.2. Гистограммы векторных данных .................................................... 90

8.2. Представление матричных данных ....................................... 94

8.3. Графики функций ....................................................................... 95

8.4. Графики функций одной переменной .................................... 95

8.4.1. Графики в линейном масштабе ........................................................ 95

8.4.2. Графики в логарифмических масштабах ....................................... 98

8.4.3. Изменение свойств линий................................................................. 99

Page 5: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

ОГЛАВЛЕНИЕ

Математическое программное обеспечение. Учебное пособие -5-

8.4.4. Оформление графиков .................................................................... 100

8.4.5. Графики параметрических и кусочно-заданных функций ........ 101

8.5. Графики функций двух переменных .................................... 102

9. ГРАФИКИ ФУНКЦИЙ .......................................... 107

9.1. Графики функций двух переменных .................................... 107

9.1.1. Построение параметрически заданных поверхностей и линий 107

9.1.2. Построение освещенной поверхности ......................................... 111

9.2. Анимированные графики ....................................................... 112

9.3. Работа с несколькими графиками ........................................ 114

9.3.1. Вывод графиков в отдельные окна .............................................. 115

9.3.2. Вывод нескольких графиков на одни оси ................................... 118

9.3.3. Построение нескольких графиков в одном графическом окне 119

10. М-ФАЙЛЫ .......................................................... 122

10.1. Общие сведения ..................................................................... 122

10.2. Работа в редакторе М-файлов ............................................. 122

10.2.1. Типы М-файлов............................................................................... 123

10.2.2. Файл-функции с одним входным аргументом .......................... 123

10.2.3. Файл-функции с несколькими входными аргументами .......... 125

10.2.4. Файл-функции с несколькими выходными аргументами ....... 126

11. ЧИСЛЕННЫЕ МЕТОДЫ И ПРОГРАММИРОВАНИЕ ....................................... 127

11.1. Вычисления в MatLab ............................................................ 127

11.1.1. Решение уравнений ........................................................................ 127

11.1.2. Вычисление всех корней полинома ............................................ 128

12. ОПЕРАТОРЫ ЦИКЛА ........................................ 130

12.1. Цикл for ..................................................................................... 130

12.2. Цикл while, суммирование рядов ........................................ 136

13. ОПЕРАТОРЫ ВЕТВЛЕНИЯ. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ .......................... 139

13.1. Условный оператор if ............................................................ 139

Page 6: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

ОГЛАВЛЕНИЕ

Математическое программное обеспечение. Учебное пособие -6-

13.1.1. Проверка входных аргументов .................................................... 139

13.1.2. Организация ветвления ................................................................. 141

13.2. Оператор switch ...................................................................... 144

14. ПРЕРЫВАНИЯ ЦИКЛА. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ .............................................................. 146

14.1. Прерывание цикла. оператор break ................................... 146

14.2. Обработка исключительных ситуаций. Оператор try…catch ........................................................................................... 147

15. ОСНОВНЫЕ ВОЗМОЖНОСТИ ПАКЕТА SIMULINK ................................................................ 149

15.1. Назначение и возможности пакета Simulink ..................... 149

15.2. Запуск моделей Simulink из среды MatLab ....................... 150

16. ИНТЕРФЕЙС БРАУЗЕРА БИБЛИОТЕК ............. 151

16.1. Окно браузера библиотек ..................................................... 151

16.2. Настройка параметров Simulink .......................................... 151

17. ИНТЕРФЕЙС ОКНА МОДЕЛЕЙ SIMULINK ....... 153

17.1. Окна управления источниками сигналов .......................... 153

17.2. Вывод окна свойств текущей модели ............................... 153

18. СОЗДАНИЕ МОДЕЛИ ........................................ 154

18.1. Постановка задачи и начало создания модели ............... 154

18.2. Создание модели ограничителя ........................................ 154

18.3. Настройка масштаба осциллограмм .................................. 155

19. ОСНОВНЫЕ ПРИЕМЫ ПОДГОТОВКИ И РЕДАКТИРОВАНИЯ МОДЕЛИ ................................ 156

19.1. Добавление надписей и текстовых комментариев ......... 156

19.2. Соединение блоков ............................................................... 156

19.3. Виртуальный осциллограф ................................................. 157

Page 7: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

ОГЛАВЛЕНИЕ

Математическое программное обеспечение. Учебное пособие -7-

20. НАЗНАЧЕНИЕ, ПРИНЦИПЫ ФУНКЦИОНИРОВАНИЯ И ИСПОЛЬЗОВАНИЯ MATHCAD ................................................................ 160

21. РАБОТА С УСТАНОВКАМИ MATHCAD .......... 162

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD ...... 166

22.1. Математические выражения ................................................ 166

22.2. Инициализация переменной ............................................... 167

22.3. Знак равенства ........................................................................ 168

22.4. Способы инициализации переменных .............................. 169

22.5. Глобальное определение переменной ............................ 170

22.6. Использование комплексных чисел ................................ 172

22.7. Константы ................................................................................ 175

22.8. Использование констант...................................................... 176

22.9. Работа с функциями .............................................................. 177

22.10. Вставка встроенных функций ........................................... 177

22.11. Стандартные математические функции ........................ 180

22.12. Математические функции ................................................... 181

22.13. Работа с комплексными числами .................................. 182

22.14. Функции округления численных значений .................. 182

22.15. Символьный результат ..................................................... 183

22.16. Вычисление выражений .................................................... 184

22.17. Диапазон значений ............................................................... 186

22.18. Функция двух переменных ................................................. 187

22.19. Матрицы и векторы ........................................................... 188

22.20. Создание массивов ............................................................. 188

22.21. Векторы и матрицы ........................................................... 190

22.22. Начальный индекс массива ............................................. 191

22.23. Определение массива ........................................................ 192

Page 8: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

ОГЛАВЛЕНИЕ

Математическое программное обеспечение. Учебное пособие -8-

22.24. Вложенные массивы .......................................................... 192

22.25. Операции с массивами ...................................................... 195

22.26. Транспонирование матриц ................................................ 197

22.27. Обращение матриц .............................................................. 198

22.28. Векторное произведение ................................................... 199

22.29. Сумма элементов векторов .............................................. 199

22.30. Выделение строк и столбцов ......................................... 200

22.31. Преобразование массивов ................................................ 201

22.32. Функции для работы с массивами ............................... 203

22.32.1. Функция matrix( ) .......................................................................... 203

22.32.2. Функции stack( ) и augment( ) ...................................................... 203

22.32.3. Функция submatrix( ) ..................................................................... 205

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD ............................................................. 207

23.1. Создание двумерных графиков .......................................... 207

23.2. Графики нескольких функций ........................................... 209

23.3. Настройка параметров графика ......................................... 211

23.4. Создание трехмерных графиков......................................... 218

23.4.1. Создание поверхностей ............................................................... 219

23.4.2. Основные настройки трехмерного графика ........................... 222

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD .................. 224

24.1. Собственные функции в MathCad...................................... 224

24.2. Основы программирования в Mathcad .............................. 226

24.3. Логические операторы ......................................................... 229

24.4. Условный оператор ............................................................... 230

24.5. Кусочно-непрерывная функция ........................................... 232

24.6. Вложенные операторы ........................................................ 233

24.7. Арифметическое выражение в условии ........................ 235

24.8. Операторы циклов ................................................................ 236

Page 9: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

ОГЛАВЛЕНИЕ

Математическое программное обеспечение. Учебное пособие -9-

24.8.1. Сумма квадратов ........................................................................... 236

24.8.2. Сумма квадратов с ограничением ............................................... 237

24.8.3. Использование инструкции break ................................................ 238

24.9. Рекурсия ................................................................................... 239

25. РЕШЕНИЕ СИСТЕМ УРАВНЕНИЙ И НЕРАВЕНСТВ В MATHCAD ..................................... 241

25.1. Решение уравнений и систем ............................................... 241

25.2. Решение нелинейной системы .......................................... 243

26. АНАЛИТИЧЕСКИЕ ВЫКЛАДКИ В MATHCAD .. 245

ЗАКЛЮЧЕНИЕ ......................................................... 251

БИБЛИОГРАФИЧЕСКИЙ СПИСОК .......................... 252

Page 10: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -10-

ВВВВЕЕДДЕЕННИИЕЕ В настоящее время наиболее мощными символьными процессорами об-

ладают математические программы Maple и Mathematica. Другие программы обычно используют их символьные ядра. В частности, MathCad и MatLab ис-пользуют ядро символьного процессора Maple. Поскольку при этом задейст-вованы не все возможности Maple, то MathCad и MatLab оказываются менее мощными средствами. Однако возможности вполне достаточны для выполне-ния аналитических выкладок применительно к теории электрических машин и с точки зрения САПР (систем автоматизированного проектирования).

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

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

Основа MatLab – это работа с матрицами, так что даже вычисления со скалярами реализуются как операции с матрицами размера 1X1. Матричные команды написаны особенно тщательно, и всюду, где это возможно, целесо-образно пользоваться матричными (векторными) операциями, что ускоряет вычисления и предупреждает возможные ошибки. Матрицам, их свойствам и операциям с ними посвящено огромное количество литературы. MatLab в первую очередь предназначен для численного исследования, а потому опери-рует в основном с числовой информацией.

Знания, полученные при изучении данной дисциплины, используются в дальнейшем при изучении всех учебных дисциплин, предусматривающих математические расчеты, в частности, дисциплины «Основы теории управле-ния», «Модели и методы анализа проектных решений», «Методы отпимиза-ции» и др.

Предназначено для студентов укрупненной группы направления подго-товки специалистов 230000 «Информатика и вычислительная техника» всех форм обучения.

Page 11: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -11-

11.. ННААЗЗННААЧЧЕЕННИИЕЕ,, ППРРИИННЦЦИИППЫЫ ФФУУННККЦЦИИООННИИРРООВВААННИИЯЯ ИИ ИИССППООЛЛЬЬЗЗООВВААННИИЯЯ

ССИИССТТЕЕММЫЫ MMAATTLLAABB Система∗ MatLab разработана специалистами компании MathWork Inc.

Само название произошло от сокращения MATrix LABoratory – матричная лаборатория.

Эта система предназначена для осуществления любых численных рас-четов и моделирования технических и физических систем, а также выполне-ния научных и инженерных расчетов. Кроме того, данный математический пакет можно применять в системах автоматизированного проектирования (САПР), потому что из всех математических пакетов MatLab ближе всех к идеологии САПР.

Система MatLab построена по модульному принципу. В ней есть моду-ли для исследования различных объектов, системы визуального моделирова-ния, возможности моделирования в Simulink, что очень удобно для анализа больших систем, которые состоят из отдельных блоков. MatLab может со-стыковываться с реальным оборудованием, имеет возможность подключать какие-либо программы, написанные в Си. Помимо этого существует воз-можность данным модулям или библиотекам работать в режиме реального времени. В основе MatLab лежит громадная бибилиотека научно-технических расчетов, где очень много различных численных и других мето-дов, которые используются при проектировании САПР. Внутри имеется сим-вольный процессор из Maple. Самая сильная сторона Maple – это символьные вычисления, и она практически полностью присутствует в MatLab, т. е., вы-бирая MatLab, мы одновременно выбираем самые сильные стороны Maple. На сегодняшний день MatLab – самая распространенная математическая про-грамма для технических применений.

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

Основной объект системы MatLab – числовой массив или, другими словами, матрица, в которой допускается применение комплексных элемен-тов. Использование матриц не требует явного указания их размеров.

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

∗ Понятие «система MatLab» и «пакет MatLab» считаются синонимами.

Page 12: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

1. НАЗНАЧЕНИЕ, ПРИНЦИПЫ ФУНКЦИОНИРОВАНИЯ И ИСПОЛЬЗОВАНИЯ СИСТЕМЫ MATLAB

Математическое программное обеспечение. Учебное пособие -12-

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

для расчета и проектирования аналоговых и цифровых фильтров, включая по-строение их частотных, импульсных и переходных характеристик. Имеются в системе и средства выполнения спектрального анализа и синтеза, в частности, реализации прямого и обратного преобразования Фурье. Благодаря этому ее довольно удобно использовать при проектировании электронных устройств. С системой MatLab поставляются свыше ста подробно прокомментированных М-файлов, которые содержат демонстрационные примеры и определения новых операторов и функций. Наличие этих примеров и возможность работать в режи-ме непосредственных вычислений значительно облегчают изучение системы пользователям, заинтересованным в применении математических расчетов.

Система MatLab использует собственный М-язык, который сочетает в себе положительные свойства различных известных языков программирова-ния высокого уровня. С языком Basic систему MatLab роднит то, что она представляет собой интерпретатор (осуществляет пооператорное компилиро-вание и выполнение программы, не образуя отдельного исполняемого фай-ла); М-язык имеет незначительное количество операторов; в нем отсутству-ет необходимость объявлять типы и размеры переменных. От языка Pascal система MatLab позаимствовала объектно-ориентированную направлен-ность, т. е. такое построение языка, которое обеспечивает образование новых типов вычислительных объектов на основе типов объектов, уже существую-щих в языке. Новые типы объектов (в MatLab они называются классами) мо-гут иметь собственные процедуры их преобразования (они определяют мето-ды этого класса), причем новые процедуры могут быть вызваны с помощью обычных знаков арифметических операций и некоторых специальных знаков, которые применяются в математике.

Принципы сохранения значений переменных в MatLab наиболее близ-ки к тем, которые присущи языку Fortran, а именно: все переменные являют-ся локальными – действуют лишь в границах той программной единицы (процедуры, функции или главной, управляющей программы), где им при-своены некоторые конкретные значения. При переходе к выполнению другой программной единицы значения переменных предыдущей программной еди-ницы либо теряются (если выполненная программная единица представляет собой процедуру или функцию), либо становятся недосягаемыми (если вы-полненная программа является управляющей). В отличие от языков Basic и Pascal в языке MatLab нет глобальных переменных, действие которых рас-пространялось бы на все программные единицы. Но при этом язык MatLab обладает возможностью, которая отсутствует в других языках. Интерпрета-тор MatLab позволяет в одном и том же сеансе работы выполнять несколько самостоятельных программ, причем все переменные, используемые в этих программах, являются для них общими и образуют единое рабочее простран-ство. Это дает возможность более рационально организовывать сложные (громоздкие) вычисления по типу оверлейных структур.

Вышеуказанные особенности системы MatLab делают ее весьма гибкой и удобной в использовании вычислительной системой.

Page 13: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -13-

22.. ППРРООССТТЕЕЙЙШШИИЕЕ ВВЫЫЧЧИИССЛЛЕЕННИИЯЯ ВВ MMAATTLLAABB

22..11.. ААррииффммееттииччеессккииее ввыыччииссллеенниияя

Для выполнения простейших арифметических вычислений можно вос-пользоваться командной строкой (Command Window). Например, для вы-числения суммы 5 + 5 необходимо набрать в командной строке нужное вы-ражение после значков приглашения ‘>>’ и затем нажать ‘Enter’. В результа-те в командном окне будет выведен следующий результат:

>> 5 + 5 ans = 10 >> В данном случае результат будет записан в специальную переменную

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

ся переменной ans, которая уже была получена. Например, если нужно полу-ченный результат возвести в квадрат (во вторую степень), то в командной строке нужно будет набрать ans^2 и нажать ‘Enter’.

>> ans^2 ans = 100 >> Для ввода десятичных дробей используется точка. Например, к полу-

ченному ответу ans, который теперь уже равен 100, нужно прибавить 1.5: >> ans + 1.5 ans = 101.5000 >>

22..22.. ФФооррммаатт ввыыввооддаа ррееззууллььттааттаа ввыыччииссллеенниийй Если необходимо получить результат с большей точностью, то можно

поменять формат вывода результата. Для этого необходимо зайти в меню File и выбрать пункт Preferences (рис. 2.1).

Page 14: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB 2.2. Формат вывода результата вычислений

Математическое программное обеспечение. Учебное пособие -14-

Рис. 2.1

Слева в раскрывающемся списке выбрать пункт Command Window и в панели справа в Text display найти пункт Numeric format, где в раскрываю-щемся списке и выбрать нужный формат (рис. 2.2).

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

>> ans + 1.5 ans = 101.5000 >> Однако если выбрать формат long – длинный формат с четырнадцатью

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

>> ans + 1.5 ans = 1.015000000000000e+002 >> Результат выведен в экспоненциальной форме.

Page 15: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB 2.2. Формат вывода результата вычислений

Математическое программное обеспечение. Учебное пособие -15-

Рис. 2.2

22..33.. ВВыыччииссллееннииее ээллееммееннттааррнныыхх ффууннккцциийй Например, для вычисления выражения из элементарных функций не-

обходимо ввести это выражение в командной строке и нажать ‘Enter’:

π78.3cosπ45.2sin + .

>> sqrt (sin (2.45*pi)+cos (3.78*pi)) ans = 1.3260 Если необходимо это выражение изменить, то можно не писать заново

все выражение в командной строке, а нажать клавишу ‘↑’ или ‘↓’, так как MatLab запоминает все, что было введено в командной строке.

Изменить предыдущее выражение, записанное выше, в том же месте не получится.

Если необходимо вызвать ранее введенное выражение или команду, то его можно найти в окне Command History и нажать два раза по выбранному выра-жению левой кнопкой мыши. В командной строке появится выбранное выраже-ние, которое сразу же посчитается, как если бы был нажат ‘Enter’ (рис. 2.3).

Page 16: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB 2.3. Вычисление элементарных функций

Математическое программное обеспечение. Учебное пособие -16-

Рис. 2.3

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

Также в окне Command History при нажатии правой клавиши мыши можно скопировать выбранную команду или выражение (Copy); выполнить выбранную группу команд или вычислить группу выражений (Evaluate Selection), а также удалить выбранную группу (Delete Selection) или удалить всю историю (Delete Entire History), см. рис. 2.4.

В MatLab при делении на ноль получается бесконечность (Inf), но при этом выдается предупреждение. Причем если деление осуществляется отри-цательного числа на ноль, то результатом будет минус бесконечность (–Inf).

Если будет деление ноля на ноль, то MatLab также выдаст предупреж-дение и в результате выдаст NaN (не число), см. рис. 2.5.

Также MatLab способен вычислять и комплексные числа. Например, при вычислении 1− результатом будет

>> sqrt (–1.0) ans = 0 + 1.0000i

Page 17: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB 2.3. Вычисление элементарных функций

Математическое программное обеспечение. Учебное пособие -17-

Рис. 2.4

Рис. 2.5

Page 18: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB 2.3. Вычисление элементарных функций

Математическое программное обеспечение. Учебное пособие -18-

Если необходимо, например, сложить два комплексных числа, то при наборе в командной строке можно писать буквы i или j. Например:

>> 5.2+3.1i + (4.2+1.7i)*2 ans = 13.6000 + 6.5000i

или >> 5.2+3.1j + (4.2+1.7j)^2 ans = 19.9500 +17.3800i Чтобы вывести все элементарные функции, необходимо набрать в ко-

мандной строке команду help elfun.

22..44.. ППррииссввооееннииее ппееррееммеенннныыхх В MatLab знак равенства используется как оператор присваивания. По-

этому чтобы переменной k назначить число, необходимо написать в команд-ной строке k = 3.15 и автоматически будет выведено значение k.

Однако вывод значений порой бывает не очень удобен, потому как он может загромождать визуально командное окно данными. Для этого в Mat-Lab предусмотрено после присвоения в самом конце ставить точку с запятой. В результате число 3.15 присвоилось переменной k и запомнилось (рис. 2.6).

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

Например, чтобы найти значение выражения

π6.0sin1

π2.1cos5

π2.1cos5

π6.0sin1 2

+

,

можно, воспользовавшись присвоением переменных, значениям π6.0sin

1 и

π2.1cos5 присвоить соотвественно a и b. В результате получим более простое

выражение:

>> a = 1/sin(0.6*pi); >> b = 5*cos(1.2*pi); >> c = (a+b^2)/(b–sqrt(a))

c = –3.4344

Page 19: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB 2.4. Присвоение переменных

Математическое программное обеспечение. Учебное пособие -19-

Рис. 2.6

Рис. 2.7

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

Page 20: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB 2.4. Присвоение переменных

Математическое программное обеспечение. Учебное пособие -20-

считанную или присвоенную переменную. Для этого необходимо в команд-ной строке написать имя этой переменной и нажать ‘Enter’. Если это необ-ходимо, то их можно использовать в дальнейших вычислениях (рис. 2.7).

Рис. 2.8

При вводе, например, длинных формул или команд в командной строке можно разделить их на несколько строк. Для этого следует пославить три точки подряд и нажать ‘Enter’. При этом не появится знак приглашения ‘>>’ и необходимо просто продолжить набор формулы на следующей строке. Так можно записать и несколько строк (рис. 2.8).

22..55.. ССооххррааннееннииее ррааббооччеейй ссррееддыы Чтобы в дальнейшем можно было использовать значения всех перемен-

ных, которые использовались в данном сеансе работы, можно сохранить его и в последующем считать. Это можно сделать, написав в командной строке

>> save work01-01-08, и при следующем сеансе работы считать ранее сохраненный файл

>> load work01-01-08 либо воспользоваться меню File пункт Save Workspace As (рис. 2.9).

Page 21: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB 2.5. Сохранение рабочей среды

Математическое программное обеспечение. Учебное пособие -21-

Рис. 2.9

Рис. 2.10

После появления диалогового окна Save to MAT-File следует указать каталог и имя файла (рис. 2.10).

22..66.. ППррооссммооттрр ппееррееммеенннныыхх

В течение одного сеанса работы может использоваться большое количест-

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

Page 22: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

2. ПРОСТЕЙШИЕ ВЫЧИСЛЕНИЯ В MATLAB 2.6. Просмотр переменных

Математическое программное обеспечение. Учебное пособие -22-

выведена на экране в виде таблицы), либо увидеть их в Workspace в окне слева сверху (рис. 2.11). Панель инструментов окна Workspace позволяет удалить лишние переменные, сохранить и открыть рабочую среду (рис. 2.12).

Рис. 2.11

Рис. 2.12

Если необходимо очистить все переменные из памяти MatLab, то в ко-мандной строке необходимо написать команду clear; если только некоторые, то после команды через пробел указываем, какие именно. Например,

>> clear a b

Page 23: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -23-

33.. РРААББООТТАА СС ММААССССИИВВААММИИ.. ВВЕЕККТТООРР--ССТТООЛЛББЦЦЫЫ ИИ ВВЕЕККТТООРР--ССТТРРООККИИ

33..11.. ООссннооввнныыее ооппррееддееллеенниияя

Массив – упорядоченная, пронумерованная совокупность однородных дан-

ных. У массива должно быть имя. Массивы могут отличаться по числу измерений: одномерные, двумерные, многомерные. Размером массива называют число эле-ментов, вдоль каждого из измерений. Доступ к элементам осуществляется при помощи индекса. В MatLab нумерация элементов массива начинается с единицы.

Положение элемента в массиве характеризуется двойным индексом (m, n). Первый индекс означает номер строки (m), второй – номер столбца (n).

Матрица размера 1×n, состоящая из одной строки, называется вектор-строка, а матрица размера m×1, состоящая из одного столбца, называется вектор-столбец.

33..22.. ВВееккттоорр--ссттооллббццыы ии ввееккттоорр--ссттррооккии

33..22..11.. ВВввоодд,, ссллоожжееннииее ии ввыыччииттааннииее ввееккттоорроовв

Чтобы вычислить сумму векторов а и b:

=

7.86.14.0

a

=

6.79.31.5

b , необхо-

димо в командной строке ввести сначала вектор а, используя квадратные скобки, и между значениями вектора поставить точку с запятой ‘;’, а затем ввести вектор b таким же способом.

В конце каждой строки нужно поставить ‘;’, чтобы не загромождать промежуточными данными командное окно. Результат с следует вывести, т. е. в конце с = a + b не нужно ставить точку с запятой ‘;’.

Узнать размер, например, массива а можно при помощи встроенной функции size.

Введенные значения можно использовать в дальнейшем для последующих вычислений. Например, найти квадратный корень из элементов b (рис. 3.1).

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

Page 24: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ 3.2. Вектор-столбцы и вектор-строки

Математическое программное обеспечение. Учебное пособие -24-

Рис. 3.1

Рис. 3.2

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

Page 25: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ 3.2. Вектор-столбцы и вектор-строки

Математическое программное обеспечение. Учебное пособие -25-

Рис. 3.3

Для сцепления вектор-строк также применяются квадратные скобки, но сцепляемые вектор-строки отделяются пробелами или запятыми (рис. 3.4).

Рис. 3.4

33..22..22.. ООббрраащщееннииее кк ээллееммееннттаамм ввееккттоорраа Для того чтобы вывести лишь один элемент из вектор-столбца или век-

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

Page 26: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ 3.2. Вектор-столбцы и вектор-строки

Математическое программное обеспечение. Учебное пособие -26-

третий элемент вектор-строки k и третий элемент вектор-столбца g. Если нам нужно заменить какой-то из элементов на другое значение, то необходимо по-сле k(3) поставить еще знак присваивания и ввести новое значение (рис. 3.5)

Рис. 3.5

Также из введенных ранее значений можно сформировать новый век-тор-столбец или вектор-строку (рис. 3.6).

Для помещения определенных элементов вектора в другой вектор в за-данном порядке служит индексация при помощи вектора. Запись в массив w пятого, первого и четвертого элементов k производится, как указано на рис. 3.6.

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

Page 27: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ 3.2. Вектор-столбцы и вектор-строки

Математическое программное обеспечение. Учебное пособие -27-

Рис. 3.6

Рис. 3.7

Присваивание k (2:5) = 0 эквивалентно последовательности команд k (2) = 0; k (3) = 0; k (3) = 0; k (4) = 0; k (5) = 0 (рис. 3.7).

Индексация при помощи двоеточия оказывается удобной при выделе-нии части из большого объема данных в новый массив (рис. 3.8).

Page 28: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ 3.2. Вектор-столбцы и вектор-строки

Математическое программное обеспечение. Учебное пособие -28-

Рис. 3.8 Попробуйте составить массив k2, содержащий элементы k, кроме чет-

вертого. Используйте двоеточие и сцепление строк.

33..22..33.. ППррииммееннееннииее ффууннккцциийй ооббррааббооттккии ддаанннныыхх кк ввееккттоорраамм

Перемножение элементов вектор-столбца или вектор-строки осуществ-

ляется при помощи функции prod. Функция sum предназначена для суммиро-вания элементов вектора. Для нахождения минимума и максимума из эле-ментов вектора служат встроенные функции min и max (рис. 3.9).

Рис. 3.9

Page 29: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ 3.2. Вектор-столбцы и вектор-строки

Математическое программное обеспечение. Учебное пособие -29-

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

Рис. 3.10

В результате переменной m будет присвоено значение минимального элемента массива k1, а номер минимального элемента занесен в переменную k. Для того чтобы узнать, как именно можно вызвать функцию, следует набрать в командной строке help и имя функции.

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

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

Упорядочение элементов в порядке возрастания их модулей произво-дится с привлечением функции abs (рис. 3.11).

Вызов sort с двумя выходными аргументами приводит к образованию массива индексов соответствия элементов упорядоченного и исходного мас-сивов (рис. 3.12).

Если аргументом функций max и min является вектор, состоящий из комплексных чисел, то результатом является максимальный и минимальный по модулю элемент.

Page 30: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ 3.2. Вектор-столбцы и вектор-строки

Математическое программное обеспечение. Учебное пособие -30-

Рис. 3.11

Рис. 3.12

Самостоятельно о функциях обработки данных можно узнать, набрав в командной строке команду help datafun.

33..22..44.. ППооээллееммееннттнныыее ооппееррааццииии сс ввееккттооррааммии

При поэлементном вычислении векторов или матриц используется точ-

ка ‘.’. Например операция .* приводит к поэлементному умножению векто-ров одинаковой длины. При помощи .^ осуществляется поэлементное возве-дение в степень. Аналогично при делении и других математических операци-

Page 31: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ 3.2. Вектор-столбцы и вектор-строки

Математическое программное обеспечение. Учебное пособие -31-

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

Рис. 3.13 Деление соответствующих элементов векторов одинаковой длины вы-

полняется с использованием операции ./ Обратное поэлементное деление (деление элементов второго вектора на

соответствующие элементы первого) осуществляется при помощи операции .\ Точка в MatLab используется не только для ввода десятичных дробей,

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

К поэлементным относятся и операции с вектором и числом. Сложение вектора и числа не приводит к сообщению об ошибке. MatLab прибавляет число к каждому элементу вектора. То же самое справедливо и для вычитания.

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

Page 32: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ 3.2. Вектор-столбцы и вектор-строки

Математическое программное обеспечение. Учебное пособие -32-

лить число на каждый элемент вектора и записать результат в новый вектор, то следует использовать операцию ./ (рис. 3.14).

Рис. 3.14 Все вышеописанные операции применимы как к вектор-строкам, так и

к вектор-столбцам. Разберем, как правильно транспонировать и вычислять сопряженные

векторы в MatLab. Для вектор-столбца u с тремя комплексными элементами (в частности, и с вещественными) сопряженный к нему u* определяется как вектор-строка из его комплексно-сопряженных элементов, а транспониро-ванный uT – просто как вектор-строка из его элементов, например:

[ ] [ ]iiiuiiiuiii

u T 232132232132232132

+−+=−+−=

+−+

= ∗ .

Page 33: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

3. РАБОТА С МАССИВАМИ. ВЕКТОР-СТОЛБЦЫ И ВЕКТОР-СТРОКИ 3.2. Вектор-столбцы и вектор-строки

Математическое программное обеспечение. Учебное пособие -33-

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

Для нахождения сопряженного вектора в MatLab используется апостроф, а для транспонирования следует применять точку с апострофом (рис. 3.15).

Рис. 3.15

Операции .' и ' над вещественными векторами приведут к одинаковым результатам.

Page 34: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -34-

44.. РРААББООТТАА СС ММААССССИИВВААММИИ

44..11.. ППооссттррооееннииее ттааббллииццыы ззннааччеенниийй ФФууннккццииии Если имеется сравнительно небольшое количество значений функций,

то саму функцию удобнее отобразить в виде таблицы. Например, необходимо вывести таблицу значений функции y(x) в точ-

ках 0.1, 0.3, 0.4, 0.6, 1.2, 1.5, 2.6:

xxxx

exyx

3sincos5log

)( 22

⋅++

=−

.

Сначала следует записать данные значения в вектор-строку x, а затем

вычислить значения функции y(x) от каждой этой точки, поэтому нужно в за-писи самой функции использовать поэлементные операции (рис. 4.1).

Рис. 4.1

Обратите внимание, что при попытке использования операций возве-дения в степень ∧, деления / и умножения ∗ (которые не относятся к поэле-ментным) выводится сообщение об ошибке уже при возведении cos(x) в квадрат. Дело в том, что в MatLab операции ∗ и ∧ применяются для пере-множения матриц соответствующих размеров и возведения квадратной мат-рицы в степень.

Если требуется вывести значение функции на каком-то отрезке значе-ний, например от 1 до 3, то значения x можно записать следующим образом

>> x = [1:3] x = 1 2 3

В MatLab, если не указан шаг, он по умолчанию равен единице. Но можно самим указать его (рис. 4.2). Например, значения x начинаются с 1 и

Page 35: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

4. РАБОТА С МАССИВАМИ 4.1. Построение таблицы значений Функции

Математическое программное обеспечение. Учебное пособие -35-

заканчиваються 3, а 0.2 – это шаг, который указывается посередине:

>> x = [1:0.2:3] x = 1.0000 1.2000 1.4000 1.6000 1.8000 2.0000

2.2000 2.4000 26000 2.8000 3.0000

Рис. 4.2 Если задать шаг 0.2 и при этом x задать не до 3, а до 2.9, то последним

значением будет 2.8 (рис. 4.3).

Рис. 4.3

Page 36: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

4. РАБОТА С МАССИВАМИ 4.1. Построение таблицы значений Функции

Математическое программное обеспечение. Учебное пособие -36-

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

Рис. 4.4

Чтобы заполнить вектор-столбец значениями от 1 до 3 с шагом 0.2, не-обходимо в конце поставить знак транспонирования (апостроф), см. рис. 4.5.

Рис. 4.5 Обратите внимание, что элементы вектора, заполняемого при помощи

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

Выведите таблицу значений функции xexy x 5log)( −= на промежутке

Page 37: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

4. РАБОТА С МАССИВАМИ 4.1. Построение таблицы значений Функции

Математическое программное обеспечение. Учебное пособие -37-

от 1 до 5 с шагом 0.1 (рис. 4.6).

Рис. 4.6 Вектор-строки x и y состоят из сорока одного элемента, не помещаются

на экране в одну строку и выводятся по частям. Так как x и y хранятся в дву-мерных массивах размерностью один на сорок один, то выводятся по столбцам, каждый из которых состоит из одного элемента. Сначала выводятся столбцы с первого по седьмой (Columns 1 through 7), затем – с восьмого по четырнадцатый (Columns 8 through 14) и так до сорок первого (Columns 36 through 41). Более наглядным и удобным является графическое представление функции.

44..22.. ППооссттррооееннииее ггррааффииккоовв ффууннккццииии оодднноойй ппееррееммеенннноойй

Построим график функции одной переменной на примере функции

xexy x 10sin)( ⋅= − ,

определенной на отрезке [0, 5]. Вывод отображения функции в виде графика состоит из следующих этапов:

1. Задание вектора значений аргумента x. 2. Вычисление вектора y значений функции y(x).

Page 38: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

4. РАБОТА С МАССИВАМИ 4.2. Построение графиков функции одной переменной

Математическое программное обеспечение. Учебное пособие -38-

3. Вызов команды plot для построения графика. Команды для задания вектора “x” и вычисления функции лучше завер-

шать точкой с запятой для подавления вывода в командное окно их значений (после команды plot точку с запятой ставить необязательно, так как она ниче-го не выводит в командное окно). Не забудьте использовать поэлементное умножение .* (рис. 4.7).

Рис. 4.7 После выполнения команд на экране появляется окно Figure No. 1 с

графиком функции. Окно содержит меню, панель инструментов и область графика (рис. 4.8).

Рис. 4.8

Page 39: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

4. РАБОТА С МАССИВАМИ 4.2. Построение графиков функции одной переменной

Математическое программное обеспечение. Учебное пособие -39-

Для построения графика функции в рабочей среде MatLab должны быть определены два вектора одинаковой размерности, например x и y (рис. 4.9). Соответствующий массив x содержит значения аргументов, а y – значения функции от этих аргументов. Команда plot соединяет точки с коор-динатами (x(i), y(i)) прямыми линиями, автоматически масштабируя оси для оптимального расположения графика в окне. Построенный график функции не должен иметь изломов, так как сама функция гладкая. Для точного по-строения графика вычислите функцию в большем числе точек на отрезке [0, 5], т. е. задайте меньший шаг при вводе вектора x. Не забудьте, что можно занести в командную строку введенные ранее команды при помощи клавиш <↑>, <↓>, затем отредактировать их, нажав <Enter>. Следующие команды приводят к построению графика функции в виде плавной кривой (рис. 4.10).

Рис. 4.9

Рис. 4.10

Page 40: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

4. РАБОТА С МАССИВАМИ 4.2. Построение графиков функции одной переменной

Математическое программное обеспечение. Учебное пособие -40-

Сравнение нескольких функций удобно производить, отобразив их графики на одних осях. Например, постройте на отрезке [–1, –0.3] графики функций

222.1sin)(,1sin)(

xxg

xxf ==

при помощи последовательности команд, приведенных на рис. 4.11.

Рис. 4.11

Получившиеся графики дают наглядное представление о поведении иссле-дуемых функций (рис. 4.12).

Рис. 4.12

Page 41: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

4. РАБОТА С МАССИВАМИ 4.2. Построение графиков функции одной переменной

Математическое программное обеспечение. Учебное пособие -41-

MatLab выводит графики разным цветом. Монохромный принтер напе-чатает графики различными оттенками серого цвета, что не всегда удобно. Команда plot позволяет легко задать стиль и цвет линий, например:

>> plot (x, f, ‘k–’, x, g, ‘k:’)

осуществить построение первого графика сплошной черной линией, а второ-го – черной пунктирной. Аргументы ‘k–’ и ‘k:’ задают стиль и цвет первой и второй линий. Здесь k означает черный цвет, а дефис или двоеточие – сплошную или пунктирную линию.

44..33.. УУммнноожжееннииее ввееккттоорроовв

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

44..33..11.. ССккаалляяррннооее ппррооииззввееддееннииее

Скалярное произведение векторов a и b длины N, состоящих из дейст-

вительных чисел, определяется формулой

∑=

=⋅N

kkkbaba

1.

Следовательно, для вычисления скалярного произведения необходимо

просуммировать компоненты вектора, полученного в результате поэлемент-ного умножения a на b, т. е. надо использовать функцию sum и поэлементное умножение. Найдите самостоятельно скалярное произведение векторов

−=

−=

9.25.61.4

,7.02.3

2.1ba .

На рис. 4.13 приведена требуемая последовательность команд. Найдите длину (или, как ещё говорят, модуль) вектора a:

aaa ⋅= .

Решение очевидно – см. рис. 4.14.

Page 42: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

4. РАБОТА С МАССИВАМИ 4.3. Умножение векторов

Математическое программное обеспечение. Учебное пособие -42-

Рис. 4.13

Рис. 4.14

44..33..22.. ВВееккттооррннооее ппррооииззввееддееннииее Векторное произведение ba × определено только для векторов из

трехмерного пространства, т. е. состоящих из трех элементов. Результатом также является вектор из трехмерного пространства. Для вычисления вектор-ного произведения в MatLab служит функция cross – см. рис. 4.15.

Page 43: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

4. РАБОТА С МАССИВАМИ 4.3. Умножение векторов

Математическое программное обеспечение. Учебное пособие -43-

Рис. 4.15 Для тренировки попробуйте вычислить abba ×+× . Если получился

вектор, состоящий из нулей, то вы все проделали правильно, так как для лю-бых векторов выполняется свойство abba ×−=× .

Смешанное произведение векторов a, b, c определяется по формуле ( )cbaabc ×⋅= . Модуль смешанного произведения векторов равен объему па-

раллелепипеда, построенного на этих векторах так, как показано на рис. 4.16.

Рис. 4.16 Найдите объем параллелепипеда, если

−−

=

=

=

8.29.12.0

,01.25.0

,005.3

cba .

Правильные действия показаны на рис. 4.17.

Page 44: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

4. РАБОТА С МАССИВАМИ 4.3. Умножение векторов

Математическое программное обеспечение. Учебное пособие -44-

Рис. 4.17

Внешним произведением векторов ( ) ( )MkkNjj bbaa

,...,1,...,1 ==== назы-

вается матрица ( )MkNjjkcC

,...,1,,...,1 === размера MN × , элементы которой вы-

числяются по формуле

kjjk bac = .

Рис. 4.18 Вектор-столбец a в MatLab представляется в виде двумерного массива

размера N на один. Вектор-столбец b при транспонировании переходит в век-тор-строку размера один на М. Вектор-столбец и вектор-строка есть матрицы, у которых один из размеров равен единице. Фактически, ТabC = , где умно-жение происходит по правилу матричного произведения. Для вычисления матричного произведения в MatLab используется оператор “звездочка” (рис. 4.18).

Page 45: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -45-

55.. ДДВВУУММЕЕРРННЫЫЕЕ ММААССССИИВВЫЫ ИИ ММААТТРРИИЦЦЫЫ

55..11.. ВВввоодд ммааттрриицц,, ппррооссттееййшшииее ооппееррааццииии

55..11..11.. РРааззллииччнныыее ссппооссооббыы ввввооддаа

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

−=

342113

A .

Для хранения матрицы используйте двумерный массив с именем А.

При вводе учтите, что матрицу А можно рассматривать как вектор-столбец из двух элементов, каждый из которых является вектор-строкой длиной три. Следовательно, строки при наборе отделяются точкой с запятой – рис. 5.1.

Рис. 5.1 Для изучения простейших операций над матрицами приведем еще не-

сколько примеров. Рассмотрим другие способы ввода. Введите квадратную матрицу размера три так, как описано ниже:

−=

215072134

B .

Начните набирать в командной строке

>> B = [ 4 3 –1

Нажмите клавишу <Enter>. Обратите внимание, что MatLab ничего не вычислила. Курсор мигает на следующей строке без символа >>. Продолжите

Page 46: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ 5.1. Ввод матриц, простейшие операции

Математическое программное обеспечение. Учебное пособие -46-

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

2 7 0 –5 1 2 B = 4 3 –1 2 7 0 –5 1 2 Еще один способ ввода матриц состоит в том, что матрицу можно трак-

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

−=

024713

C

можно ввести при помощи команды, показанной на рис. 5.2.

Рис. 5.2

Посмотрите переменные рабочей среды, набрав в командной строке whos.

55..11..22.. ООббрраащщееннииее кк ээллееммееннттаамм ммааттрриицц

Доступ к элементам матриц осуществляется при помощи двух индексов – номеров строки и столбца, заключенных в круглые скобки – рис. 5.3.

Page 47: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ 5.1. Ввод матриц, простейшие операции

Математическое программное обеспечение. Учебное пособие -47-

Рис. 5.3 Элементы матриц могут входить в состав разных выражений – см. рис. 5.4.

Рис. 5.4 Расположение элементов матрицы в памяти компьютера определяет

еще один способ обращения к ним. Матрица А размера m на n хранится в ви-де вектора длины mn, в котором элементы матрицы расположены один за другим построчно

[A (1, 1) A (1, 2) . . . A (1, n) . . . A (m, 1) A (m, 2) . . . A (m, n)]. Для доступа к элементам матрицы можно использовать один индекс,

задающий порядковый номер элемента матрицы в векторе.

Page 48: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ 5.1. Ввод матриц, простейшие операции

Математическое программное обеспечение. Учебное пособие -48-

Матрица С, определенная в предыдущем разделе, содержится в векторе [С (1, 1) С (1, 2) С (1, 3) С (2, 1) С (2, 2) С (2, 3)]. Индексация при помощи порядкового номера производится, как пока-

зано на рис. 5.5.

Рис. 5.5

55..11..33.. ССллоожжееннииее,, ввыыччииттааннииее,, ууммнноожжееннииее,, ттррааннссппооннииррооввааннииее ии ввооззввееддееннииее вв ссттееппеенньь

При использовании матричных операций следует помнить, что для

сложения или вычитания матрицы должны быть одного размера, а при пере-множении число столбцов первой матрицы обязано равняться числу строк второй матрицы. Сложение и вычитание матриц, так же как чисел и векторов, осуществляется при помощи знаков плюс и минус. Найдите сумму и разность матриц С и А, определенных выше (см. рис. 5.6).

Следите за совпадением размерности, иначе получите сообщение об ошибке.

Для умножения матриц предназначена звездочка – рис. 5.7. Умножение матрицы на число тоже осуществляется при помощи звез-

дочки, причем умножать можно как справа, так и слева – рис. 5.8.

Page 49: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ 5.1. Ввод матриц, простейшие операции

Математическое программное обеспечение. Учебное пособие -49-

Рис. 5.6

Рис. 5.7

Page 50: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ 5.1. Ввод матриц, простейшие операции

Математическое программное обеспечение. Учебное пособие -50-

Транспонирование матрицы так же, как и вектора, производится при помощи .', а символ ' означает комплексное сопряжение. Для вещественных матриц эти операции приводят к одинаковым результатам – рис. 5.9.

Рис. 5.8

Рис. 5.9

Page 51: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ 5.1. Ввод матриц, простейшие операции

Математическое программное обеспечение. Учебное пособие -51-

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

Рис. 5.10

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

Возведение квадратной матрицы в целую степень производится с ис-пользованием оператора ∧ (рис. 5.11).

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

MatLab. Найдите значение следующего выражения:

( ) ( )Т3 CABCA −⋅⋅+ .

Учтите приоритет операций: сначала выполняется транспонирование, потом возведение в степень, затем умножение, а сложение и вычитание про-изводятся в последнюю очередь – рис. 5.12.

Page 52: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ 5.1. Ввод матриц, простейшие операции

Математическое программное обеспечение. Учебное пособие -52-

Рис. 5.11

Рис. 5.12

55..11..44.. ППееррееммнноожжееннииее ммааттррииццыы ии ввееккттоорраа Поскольку вектор-столбец или вектор-строка в MatLab являются мат-

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

Page 53: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ 5.1. Ввод матриц, простейшие операции

Математическое программное обеспечение. Учебное пособие -53-

[ ]

−⋅

−−⋅−

438

290184

102231

см. на рис. 5.13.

Рис. 5.13 В математике ничего не говорится про деление матриц и векторов, однако

в MatLab символ \ используется для решения систем линейных уравнений.

55..22.. РРеешшееннииее ссииссттеемм ллииннееййнныыхх ууррааввннеенниийй Решите небольшую систему, состоящую из трех уравнений, с тремя

неизвестными:

=++−=++=−+

.4.56.57.09.0;9.33.11.25.0;3.12.03.02.1

321

321

321

xxxxxxxxx

Введите матрицу системы в массив А, для вектора правой части ис-

пользуйте массив b. Решите систему при помощи символа \ (рис. 5.14).

Page 54: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ 5.2. Решение систем линейных уравнений

Математическое программное обеспечение. Учебное пособие -54-

Рис. 5.14 Проверьте, правильный ли получился ответ, умножив А на х. Алгоритм решения систем линейных уравнений при помощи операто-

ров \ в MatLab определяется структурой матрицы коэффициентов системы. В частности, MatLab исследует, является ли матрица треугольной, или может быть приведена перестановками строк и столбцов к треугольному виду, сим-метричная матрица или нет, квадратная или прямоугольная (MatLab умеет решать системы с прямоугольными матрицами – переопределенные или не-доопределенные). Решать системы при помощи \ разумно, когда выбор алго-ритма решения поручается MatLab. Если же имеется информация о свойствах матрицы системы, то лучше использовать специальные методы.

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

55..33.. ССччииттыыввааннииее ии ззааппииссьь ддаанннныыхх

Перед нами стоит задача – решить систему линейных уравнений, матрица

и вектор правой части которой хранятся в текстовых файлах matr.txt, rside.txt, и записать результат в файл sol.txt. Матрица записана в файле построчно, элемен-ты в сроке отделены пробелом, вектор правой части записан в столбик.

Подготовьте файлы с данными, например, в стандартной программе windows-блокнот (NotePad). Скопируйте файлы matr.txt, rside.txt в подката-лог work основного каталога MatLab. Для считывания из файла используйте команду load, для записи – save (рис. 5.15).

Page 55: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

5. ДВУМЕРНЫЕ МАССИВЫ И МАТРИЦЫ 5.3. Считывание и запись данных

Математическое программное обеспечение. Учебное пособие -55-

Рис. 5.15 Параметр – ascii означает запись в текстовом формате и может исполь-

зоваться в каталоге work для создания файла sol.txt, в котором будет записано решение. Посмотреть содержимое файла можно, используя любой текстовый редактор. Для записи результата в файл с двойной точностью следует ис-пользовать команду save ‘sol.txt’ x –ascii–double.

Аналогично можно записать матрицу в текстовый файл. Запись, на-пример матрицы А, хранящейся в массиве А, в файл sol.txt осуществляется командой save 'sol.txt' A –ascii.

Page 56: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -56-

66.. ББЛЛООЧЧННЫЫЕЕ ММААТТРРИИЦЦЫЫ

66..11.. РРааббооттаа сс ббллооччнныыммии ммааттррииццааммии Блочные матрицы – это матрицы, составленные из непересекающихся

подматриц (блоков). Соответствующие размеры блоков должны совпадать.

66..11..11.. ККооннссттррууииррооввааннииее ббллооччнныыхх ммааттрриицц Введите матрицы

=

−=

=

−−

=10198

D,3333

С,5002

В,4141

А

и создайте из них блочную матрицу

−−+−−=

D|C

B|AK ,

учитывая, что матрица К состоит из двух строк: в первой строке матрицы А и В, а во второй – С и D:

>> K = [A B; C D] K = –1 4 2 0 –1 4 0 5 3 -3 8 9 -3 3 1 10 Блочная матрица получена. Можно было поступить и по-другому, на-

пример, считать, что матрица К состоит из двух столбцов: в первом – матри-цы А и С, а во втором – В и D. Тогда команду для создания блочной матрицы следовало бы записать так:

>> K = [[A; C] [B; D]] Рассмотрим еще один пример для проверки знаний о работе с массива-

ми в MatLab. Требуется составить блочную матрицу

Page 57: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.1. Работа с блочными матрицами

Математическое программное обеспечение. Учебное пособие -57-

−−+−−=5.2|b

a|SM ,

где

( )99b,54

a,3002

S −=

=

= .

Решение этой задачи показано на рис. 6.1.

Последний оператор можно заменить на эквивалентный М = [[S; b] [a; 2.5]]. Обратной задачей к конструированию блочных матриц является выделение блоков.

Рис. 6.1

66..11..22.. ВВыыддееллееннииее ббллооккоовв Выделение блоков матриц осуществляется индексацией при помощи

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

=

53295101105121042021

P ,

затем выделите очерченный блок, задав номера строк и столбцов при помо-

Page 58: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.1. Работа с блочными матрицами

Математическое программное обеспечение. Учебное пособие -58-

щи двоеточия – см. рис. 6.2. Для выделения из матрицы столбца или строки (т. е. массива, у которо-

го один из размеров равен единице) следует в качестве одного из индексов использовать номер столбца или строки матрицы, а другой индекс заменить на двоеточие без указания пределов. Например, запишите вторую строку P в вектор p – см. рис. 6.3.

При выделении блока до конца матрицы можно не указывать ее разме-ры, а использовать элемент end:

>> p = P(2, 2:end) p = 10 12 5

Рис. 6.2

Рис. 6.3

Page 59: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.1. Работа с блочными матрицами

Математическое программное обеспечение. Учебное пособие -59-

66..11..33.. УУддааллееннииее ссттрроокк ии ссттооллббццоовв В MatLab парные квадратные скобки [ ] обозначают пустой массив,

который, в частности, позволяет удалять строки и столбцы матрицы. Для удаления строки следует присвоить ей пустой массив. Удалите, например, первую строку квадратной матрицы – см. рис. 6.4.

Обратите внимание на соответствующее изменение размеров массива, которое можно проверить при помощи size:

>> size(M) ans =

2 3

Рис. 6.4 Аналогичным образом удаляются и столбцы. Для удаления нескольких

идущих подряд столбцов (или строк) им нужно присвоить пустой массив. Удалите второй и третий столбец в массиве M – см. рис. 6.5.

Page 60: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.1. Работа с блочными матрицами

Математическое программное обеспечение. Учебное пособие -60-

Рис. 6.5 Индексация существенно экономит время при вводе матриц, имеющих

определенную структуру.

66..22.. ЗЗааппооллннееннииее ммааттрриицц ппррии ппооммоощщии ииннддееккссааццииии

Выше было описано несколько способов ввода матриц в MatLab, в том числе и считывание из файла. Однако бывает проще сгенерировать матрицу, чем вводить ее, особенно если она обладает простой структурой. Рассмотрим пример такой матрицы:

−−−

=

1110000000000000000011111

T .

Генерация матрицы Т осуществляется в три этапа: 1. Создание массива T размера пять на пять, состоящего из нулей. 2. Заполнение первой строки единицами. 3. Заполнение части последней строки минус единицами до последнего

элемента. Соответствующие команды MatLab приведены ниже (они записаны в

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

результатов в командное окно с целью слежения за процессом формирования матрицы

Page 61: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.2. Заполнение матриц при помощи индексации

Математическое программное обеспечение. Учебное пособие -61-

Рис. 6.6 Создание некоторых специальных матриц в MatLab осуществляется

при помощи встроенных функций.

66..33.. ССооззддааннииее ммааттрриицц ссппееццииааллььннооггоо ввииддаа

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

Рис. 6.7 Один аргумент функции zeros приводит к образованию квадратной

Page 62: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.3. Создание матриц специального вида

Математическое программное обеспечение. Учебное пособие -62-

матрицы заданного размера – см. рис. 6.8.

Рис. 6.8

Единичная матрица инициализируется при помощи функции eye – см. рис. 6.9.

Рис. 6.9

Функция eye с двумя аргументами создает прямоугольную матрицу, у

которой на главной диагонали стоят единицы, а остальные элементы равны нулю – см. рис. 6.10.

Page 63: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.3. Создание матриц специального вида

Математическое программное обеспечение. Учебное пособие -63-

Рис. 6.10

Матрица, состоящая из единиц, образуется в результате вызова функ-

ции ones – см. рис. 6.11. Использование одного аргумента в ones приводит к созданию квадрат-

ной матрицы, состоящей из единиц. MatLab предоставляет возможность заполнения матриц случайными

элементами. Результатом функции rand является матрица чисел, распреде-ленных случайным образом между нулем и единицей, а функции randn – мат-рица чисел, распределенных по нормальному закону, – см. рис. 6.12.

Рис. 6.11

Page 64: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.3. Создание матриц специального вида

Математическое программное обеспечение. Учебное пособие -64-

Рис. 6.12

Один аргумент функций rand и randn приводит к формированию квад-ратных матриц – см. рис. 6.13.

Рис. 6.13

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

Проверьте себя, выполнив следующий пример, – см. рис. 6.14.

Page 65: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.3. Создание матриц специального вида

Математическое программное обеспечение. Учебное пособие -65-

Рис. 6.14

Часто возникает необходимость создания диагональных матриц, т. е. матриц, у которых все внедиагональные элементы равны нулю. Функция diag формирует диагональную матрицу из вектора или вектор-строки, располагая их элементы по диагонали матрицы, – см. рис. 6.15.

Рис. 6.15

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

Page 66: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.3. Создание матриц специального вида

Математическое программное обеспечение. Учебное пособие -66-

Рис. 6.16

Функция diag служит и для выделения диагонали матрицы в вектор – см. рис. 6.17.

Рис. 6.17

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

.

2100000121000001210000012100000121000001210000012

G,

4000033333040003333300400333330004033333000043333322222100002222201000222220010022222000102222200001

M

=

−−

−−

−=

Матрицу М можно представить в виде блочной матрицы из четырех

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

Page 67: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.3. Создание матриц специального вида

Математическое программное обеспечение. Учебное пособие -67-

щи функции eye, а внедиагональные – с использованием ones – см. рис. 6.18.

Рис. 6.18

Квадратная матрица G размера семь является трехдиагональной. За-полняя эту матрицу, можно использовать то обстоятельство, что G является суммой диагональной матрицы и двух матриц с шестью ненулевыми элемен-тами над и под главной диагональю (рис. 6.19).

Page 68: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

6. БЛОЧНЫЕ МАТРИЦЫ 6.3. Создание матриц специального вида

Математическое программное обеспечение. Учебное пособие -68-

Рис. 6.19 Посмотрите содержание полученных файлов (они должны находиться в

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

Page 69: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -69-

77.. ВВИИЗЗУУААЛЛИИЗЗААЦЦИИЯЯ ММААТТРРИИЦЦ ИИ ППООЭЭЛЛЕЕММЕЕННТТННЫЫЕЕ ООППЕЕРРААЦЦИИИИ ННААДД ННИИММИИ

77..11.. ВВииззууааллииззаацциияя ммааттрриицц

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

=

2100000121000001210000012100000121000001210000012

G

>> spy(G)

После выполнения команды spy на экране появляется графическое окно Figure No. 1 – см. рис. 7.1.

Рис. 7.1 На вертикальной и горизонтальной осях отложены номера строк и

столбцов. Ненулевые элементы обозначены маркерами, внизу графического окна указано число ненулевых элементов (nz = 19).

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

Page 70: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.1. Визуализация матриц

Математическое программное обеспечение. Учебное пособие -70-

ветствие цвета и величины элемента следует использовать команду colorbar, выводящую рядом с изображением матрицы шкалу цвета. Наконец, для печа-ти на монохромном принтере удобно получить изображение в оттенках серо-го цвета, используя команду colormap(gray). Мы будем работать с матрицей М:

−−

−−

−=

4000033333040003333300400333330004033333000043333322222100002222201000222220010022222000102222200001

M .

Набирайте команды, указанные ниже и следите за состоянием графиче-

ского окна. >> imagesc(M)

>> colorbar

а)

б)

Page 71: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.1. Визуализация матриц

Математическое программное обеспечение. Учебное пособие -71-

Рис. 7.2

>> colormap(gray)

Рис. 7.2. Окончание В результате получается наглядное представление матрицы – см. рис. 7.2.

77..22.. ППооээллееммееннттнныыее ооппееррааццииии ии ввссттррооеенннныыее ффууннккццииии

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

77..22..11.. ППооээллееммееннттнныыее ооппееррааццииии сс ммааттррииццааммии

Введите две матрицы:

−−

−=

−=

537821

B943152

A .

Умножение каждого элемента одной матицы на соответствующий эле-

мент другой производится при помощи оператора .* Для деления элементов первой матрицы на соответствующие элементы

второй используется ./, а для деления элементов второй матрицы на соответ-ствующие элементы первой служит .\ – см. рис. 7.4.

Поэлементное возведение в степень осуществляется при помощи опе-ратора .^ (рис. 7.5).

в)

Page 72: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.2. Поэлементные операции и встроенные функции

Математическое программное обеспечение. Учебное пособие -72-

Рис. 7.3

Рис. 7.4

Рис. 7.5

Показатель степени может быть матрицей того же размера, что и мат-

Page 73: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.2. Поэлементные операции и встроенные функции

Математическое программное обеспечение. Учебное пособие -73-

рица, возводимая в степень. При этом элементы первой матрицы возводятся в степени, равные элементам второй матрицы – см. рис. 7.6.

Рис. 7.6 Обратите внимание на форму вывода результата. Во-первых, выделен

общий множитель 1.0е+003 для всех элементов результирующей матрицы, т. е. ответ выглядит так:

⋅=

0921871255.0

0000.00000.01870.20010.00250.00005.0

103PB .

Рис. 7.7 Во-вторых, при возведении 4–3 и 9–5 получились нули, т. е. произошла

потеря точности из-за того, что использовался формат short. Дело в том, что 000016935.09,0156.04 53 ≈≈ −− , а эти числа малы по сравнению с осталь-

ными, и допустимого числа знаков формата short не хватает для их отображе-

Page 74: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.2. Поэлементные операции и встроенные функции

Математическое программное обеспечение. Учебное пособие -74-

ния на экране. Если мы хотим получить более точный результат поэлемент-ного возведения в степень, то мы должны задать формат long и затем вывести PB снова – см. рис. 7.7.

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

77..22..22.. ВВыыччииссллееннииее ммааттееммааттииччеессккиихх ффууннккцциийй оотт ээллееммееннттоовв ммааттрриицц

Очень важно понять, что в книгах по теории матриц формула cos A, где А – квадратная матрица, означает вычисление косинуса от матрицы, которое осуществляется при помощи разложения в ряд. В MatLab имеется возмож-ность вычисления функций от матриц.

Запись C = cos (A) в MatLab приводит к вычислению косинусов от эле-ментов массива А и записи их в массив С того же размера, что и А.

Нахождение, например, косинусов от элементов матрицы

ππππ−π

π−π=

3/20202/2/

A

производится при помощи команд, указанных на рис. 7.8.

Рис. 7.8

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

Page 75: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.2. Поэлементные операции и встроенные функции

Математическое программное обеспечение. Учебное пособие -75-

77..33.. ППррииммееннееннииее ффууннккцциийй ооббррааббооттккии ддаанннныыхх кк ммааттррииццаамм

Функция sum вычисляет сумму элементов вектора. С другой стороны, векторы в MatLab так же как, и матрицы, хранятся в двумерных массивах. Возникает вопрос, что же будет, если в качестве аргумента sum использовать не вектор, а матрицу. Оказывается, MatLab вычислит вектор-строку, длина которой равна числу столбцов матрицы, а каждый элемент является суммой соответствующего столбца – см. рис. 7.9.

Рис. 7.9

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

Заметьте, что sum(M) и sum(M, 1) приводят к одинаковым результатам. Итак, функция sum суммирует или по строкам, или по столбцам, выдавая ре-зультат в виде вектора или вектор-строки. Аналогично работает и функция prod – см. рис. 7.11.

Page 76: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.3. Применение функций обработки данных к матрицам

Математическое программное обеспечение. Учебное пособие -76-

Рис. 7.10

Рис. 7.11 Функция sort упорядочивает элементы каждого из столбцов матрицы в

порядке возрастания. Вызов sort со вторым аргументом, равным двум, приво-дит к упорядочению элементов строк – см. рис. 7.12.

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

Page 77: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.3. Применение функций обработки данных к матрицам

Математическое программное обеспечение. Учебное пособие -77-

Рис. 7.12

Рис. 7.13

Матрицы М, МС и Ind связаны между собой так: )j),j,i(Ind(M)j,i(MC = , где i и j изменяются от одного до трех.

Функции max и min вычисляют вектор-строку, содержащую максималь-ные или минимальные элементы в соответствующих столбцах матрицы – см. рис. 7.14.

Page 78: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.3. Применение функций обработки данных к матрицам

Математическое программное обеспечение. Учебное пособие -78-

Рис. 7.14 Для того чтобы узнать не только значения максимальных или мини-

мальных элементов, но и их номера в столбцах, следует вызвать max или min так, как показано на рис. 7.15.

Рис. 7.15

Обратите внимание, что во втором столбце матрицы М два равных мак-симальных элемента – первый и третий. Всегда возвращается номер первого

Page 79: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.3. Применение функций обработки данных к матрицам

Математическое программное обеспечение. Учебное пособие -79-

максимального элемента (второй элемент в вектор-строке равен единице). Точ-но так же работает и min в случае двух равных минимальных элементов в столбце матрицы. Функции max и min позволяют выделить максимальные или минимальные элементы из двух матриц одинаковых размеров и записать ре-зультат в новую матрицу того же размера, что и исходные, – см. рис. 7.16.

Рис. 7.16 Одним из документов может быть число. В результирующую матрицу за-

писывается максимум из этого числа и соответствующего элемента исходной матрицы – см. рис. 7.17.

Рис. 7.17

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

Page 80: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.3. Применение функций обработки данных к матрицам

Математическое программное обеспечение. Учебное пособие -80-

рена форма вызова со вторым аргументом – пустым массивом (см. рис. 7.18).

Рис. 7.18

Для того чтобы дополнительно получить номера максимальных элементов в строках, используем вызов max с двумя выходными аргументами – см. рис. 7.19.

Рис. 7.19

Более подробно про обработку матричных данных можно узнать, если вывести список всех встроенных функций обработки данных командой help datafun, а затем посмотреть информацию о нужной функции, например help max.

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

Page 81: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.3. Применение функций обработки данных к матрицам

Математическое программное обеспечение. Учебное пособие -81-

дана квадратная матрица А размера n с элементами aik. Требуется вычислить приведенные ниже величины (нормы матрицы):

.,,max,max1,

21

1,

2

1111∑∑∑∑===≤≤=≤≤

=

===

n

kiik

n

kiik

n

iiknk

n

kikni

asaraqap

Рис. 7.20

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

77..44.. ГГррааффииккии ддввуухх ппееррееммеенннныыхх

Page 82: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.4. Графики двух переменных

Математическое программное обеспечение. Учебное пособие -82-

Построение графика функции двух переменных в MatLab на прямоуголь-ной области определения переменных включает два предварительных этапа:

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

запись их в матрицу. Построим график функции 22),( yxyxz += на области определения в виде

квадрата ]1,0[],1,0[ ∈∈ yx . Необходимо разбить квадрат равномерной сет-кой (например, с шагом 0.2) так, как показано на рис. 7.21, и вычислить зна-чения функций в узлах, обозначенных точками.

Рис. 7.21 Удобно использовать два двумерных массива x и y размерностью шесть на

шесть для хранения информации о координатах узлов. Массив x состоит из оди-наковых строк, в которых записаны координаты x1, x2, …, x6, а y содержит оди-наковые столбцы с y1, y2, …, y6. Значения функции в узлах сетки запишем в мат-рицу z такой же размерности (6×6), причем для вычисления матрицы Z использу-ем выражение для функции, но с поэлементными матричными операциями. То-гда, например, z(3, 4) как раз будет равно значению функции z(x, y) в точке (x3, y4). Для генерации массивов сетки x и y по координатам узлов в MatLab преду-смотрена функция meshgrid, для построения графика в виде каркасной поверхно-сти – функция mesh. Следующие операторы приводят к появлению на экране ок-на с графиком функции (точка с запятой в конце операторов не ставится для того, чтобы проконтролировать генерацию массивов) – см. рис. 7.22.

y6=1

y5=0.8

y4=0.6

y3=0.4

y2=0.2

x1=y1=0 x5=0.8 x6=1 x4=0.6 x3=0.4 2=0.2

(x3, y4)

Page 83: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

7. ВИЗУАЛИЗАЦИЯ МАТРИЦ И ПОЭЛЕМЕНТНЫЕ ОПЕРАЦИИ НАД НИМИ 7.4. Графики двух переменных

Математическое программное обеспечение. Учебное пособие -83-

Рис. 7.22

а)

б)

Page 84: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -84-

88.. ДДИИААГГРРААММММЫЫ ИИ ГГИИССТТООГГРРААММММЫЫ

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

88..11.. ППррееддссттааввллееннииее ввееккттооррнныыхх ддаанннныыхх

88..11..11.. ДДииааггррааммммыы ввееккттооррнныыхх ддаанннныыхх

Отображение вектора в виде столбчатой диаграммы осуществляется

функцией bar. Запишите, например, вектор-строку

]1.04.05.01.13.15.24.22.27.12.1[=x

в переменную data и представьте ее столбчатой диаграммой, вызвав функцию bar с аргументом х – см. рис. 8.1.

Рис. 8.1 На экране появится графическое окно, содержащее столбчатую диа-

грамму вектор-строки. По горизонтальной оси откладывается номер элемента вектора, а по вертикальной – его значение. Аргументом функции bar может быть как вектор-строка, так и вектор-столбец (рис. 8.2).

Разметку горизонтальной оси можно задать вектором с возрастающими значениями. В этом случае первый аргумент bar является вектором с коорди-натами точек разметки, а второй – вектором значений, которые требуется отобразить на диаграмме. Удобно использовать этот способ построения диа-граммы для отображения значений элементов векторов в зависимости не от их номера, а например, от времени, если в вектор записаны результаты изме-рений в некоторые моменты времени. Важно, чтобы длины этих векторов совпадали, иначе будет выдано сообщение об ошибке (рис. 8.3).

Page 85: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.1. Представление векторных данных

Математическое программное обеспечение. Учебное пособие -85-

Рис. 8.2

Рис. 8.3

На рис. 8.4 пропущенные столбики соответствуют тем моментам вре-мени, в которые измерения не производились.

Рис. 8.4

Page 86: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.1. Представление векторных данных

Математическое программное обеспечение. Учебное пособие -86-

Выбор ширины столбцов осуществляется заданием третьего дополни-тельного аргумента. По умолчанию ширина равна 0.8. Диаграмма без проме-жутков между столбиками получается, если установить ширину, равную единице. Выбор значений, больших единицы, приводит к перекрывающимся столбикам. В качестве примера отобразите функцию tettx ⋅= sin)( на отрезке [–1, 1] в виде столбчатой диаграммы без промежутков, выполнив последова-тельность операций, показанную на рис. 8.5.

Рис. 8.5

Функция barh строит горизонтальную столбчатую диаграмму, т. е. по-вернутую на 90°. Для построения объемных диаграмм применяется функция bar3. Использование barh и bar3 аналогично bar.

Если требуется оценить вклад каждого из элементов вектора в общую сумму его элементов, то удобно построить круговую диаграмму при помощи функции pie – см. рис. 8.6.

а)

б)

Page 87: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.1. Представление векторных данных

Математическое программное обеспечение. Учебное пособие -87-

Рис. 8.6

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

data / sum (data) Если сумма элементов вектора (аргумента pie) больше или равна еди-

нице, то MatLab производит нормировку и строит круг, состоящий из секто-ров. Если сумма меньше единицы, то нормировка не производится и получа-ется круг с пропущенным сектором.

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

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

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

а)

б)

Page 88: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.1. Представление векторных данных

Математическое программное обеспечение. Учебное пособие -88-

max с двумя выходными аргументами для поиска номера максимального элемента в векторе x. На рис. 8.8 приведена требуемая последовательность команд для построения диаграммы с отдельным сектором.

Рис. 8.7

Рис. 8.8

а)

б)

а)

Page 89: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.1. Представление векторных данных

Математическое программное обеспечение. Учебное пособие -89-

Рис. 8.8. Окончание

Рис. 8.9

Визуализация векторных данных может быть осуществлена при помо-

б)

а)

б)

Page 90: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.1. Представление векторных данных

Математическое программное обеспечение. Учебное пособие -90-

щи команд pie3 и bar3, которые строят трехмерные круговые и столбчатые диаграммы. Например, команды, показанные на рис. 8.9, приводят к появле-нию трехмерной круговой диаграммы с отделенным сектором.

88..11..22.. ГГииссттооггррааммммыы ввееккттооррнныыхх ддаанннныыхх

Обработка данных включает вопрос о том, сколько данных попало в

тот или иной интервал. Для получения наглядного представления о распре-делении данных служит функция hist. Например, команды, показанные на рис. 8.10, заполняют вектор x числами, распределенными по нормальному закону, разбивают интервал, которому они принадлежат, на десять равных частей (по умолчанию) и строят гистограмму попадания чисел в каждый из интервалов.

Рис. 8.10

Для увеличения числа интервалов следует в качестве второго аргумен-та указать число интервалов, например, hist (data, 50). Вместо автоматическо-го разбиения на равные интервалы можно использовать собственное, задав вторым аргументом вектор, содержащий центры интервалов, приводящих к

б)

а)

Page 91: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.1. Представление векторных данных

Математическое программное обеспечение. Учебное пособие -91-

построению диаграммы, где звездочки на горизонтальной оси отмечают цен-тры интервалов – см. рис. 8.11.

Рис. 8.11 Часто необходимо задать не центры, а границы интервалов. Для по-

строения таких гистограмм следует использовать функцию histc в сочетании с вышесказанной функцией bar. Функция histc возвращает вектор, содержа-щий число величин, попавших в заданные интервалы. При помощи функции bar с дополнительным аргументом 'histc' полученный вектор представляется в виде гистограммы – рис. 8.12.

б)

а)

Page 92: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.1. Представление векторных данных

Математическое программное обеспечение. Учебное пособие -92-

Рис. 8.12

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

Использование hist с двумя аргументами приводит к получению дополни-тельного вектора с информацией о расположении интервалов – см. рис. 8.14.

Функция rose предназначена для построения угловых гистограмм (в полярных координатах). Аргументом функции rose является вектор значений в радианах. Угловые гистограммы дают наглядное представление о данных,

а)

б)

Page 93: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.1. Представление векторных данных

Математическое программное обеспечение. Учебное пособие -93-

связанных с измерениями направлений.

Рис. 8.13

Рис. 8.14

а)

б)

Page 94: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.1. Представление векторных данных

Математическое программное обеспечение. Учебное пособие -94-

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

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

88..22.. ППррееддссттааввллееннииее ммааттррииччнныыхх ддаанннныыхх

Предположим, что в матрице DATA, состоящей из четырех строк и трех

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

Рис. 8.15

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

а)

Page 95: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.3. Графики функций

Математическое программное обеспечение. Учебное пособие -95-

88..33.. ГГррааффииккии ффууннккцциийй MatLab предоставляет обширные возможности для визуализации функ-

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

88..44.. ГГррааффииккии ффууннккцциийй оодднноойй ппееррееммеенннноойй

MatLab позволяет строить графики функций в линейном, логарифмиче-

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

88..44..11.. ГГррааффииккии вв ллииннееййнноомм ммаассшшттааббее

Построение графиков функций одной переменной в линейном масштабе

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

Рис. 8.16

Сравнить несколько функций можно, построив графики на одних коор-

а)

б)

Page 96: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.4. Графики функций одной переменной

Математическое программное обеспечение. Учебное пособие -96-

динатных осях. Например, построим графики функций xexf x 21.0 sin)( −= и xexg x 22.0 sin)( −= на отрезке [–2π, 2π]. Сгенерируем вектор-строку значений ар-

гумента x и вектор-строк f и g, содержащих значения функций. Команда plot с двумя парами аргументов приведет к построению графика – см. рис. 8.17.

Рис. 8.17

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

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

Иногда требуется сравнить поведение двух функций, значения которых сильно отличаются друг от друга. Графики функции с небольшими значениями практически сливаются с осью абсцисс, и установить его вид не удается. В этой ситуации помогает функция plotyy, которая выводит графики в окно с двумя вертикальными осями, имеющими подходящий масштаб, – см. рис. 8.19.

а)

б)

Page 97: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.4. Графики функций одной переменной

Математическое программное обеспечение. Учебное пособие -97-

Рис. 8.18 Сравните, например, две функции:

43 )5.0(*1000)(1)( −+== xxFи

xxf .

а)

б)

Page 98: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.4. Графики функций одной переменной

Математическое программное обеспечение. Учебное пособие -98-

Рис. 8.19 Функция plot использует линейный масштаб по обеим координатным

осям. Однако MatLab предоставляет пользователю возможность строить гра-фики функций одной переменной в логарифмическом или полулогарифмиче-ском масштабе – см. рис. 8.19.

88..44..22.. ГГррааффииккии вв ллооггааррииффммииччеессккиихх ммаассшшттааббаахх Для построения графиков в логарифмическом и полулогарифмическом

масштабах служат следующие функции: loglog (логарифмический масштаб по обеим осям); semilogx (логарифмический масштаб только по оси абсцисс); semilogy (логарифмический масштаб только по оси ординат).

а)

б)

Page 99: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.4. Графики функций одной переменной

Математическое программное обеспечение. Учебное пособие -99-

Рис. 8.20 Аргументы loglog, semilogx и semilogy задаются в виде пары векторов

значений абсцисс и ординат так же, как для функции plot. Постройте, напри-мер, графики функций xxgиxxf lnsin)(5.0ln)( == на отрезке [0.1, 5] в логарифмическом масштабе по оси x – см. рис. 8.20.

Аналогично строятся графики при помощи функций loglog и semilogy.

88..44..33.. ИИззммееннееннииее ссввооййссттвв ллиинниийй Построенные графики функций должны быть максимально удобными

для восприятия. Часто требуется нанести маркеры, изменить цвет линий, а при подготовке к монохромной печати – задать тип линии (сплошная, пунк-тирная, штрих-пунктирная и т. д.). MatLab предоставляет возможность управлять видом графиков, построенных при помощи plot, loglog, semilogx и semilogy, для чего служит дополнительный аргумент, помещаемый за каждой

а)

б)

Page 100: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.4. Графики функций одной переменной

Математическое программное обеспечение. Учебное пособие -100-

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

Таблица 8.1

Цвет Тип маркера Тип линии 1 2 3

y желтый . точка – сплошная m розовый ○ кружок : пунктирная c голубой × крестик – . штрих-пунктирная r красный + знак “плюс” – – . штриховая g зеленый * звездочка b синий s квадрат w белый d ромб k черный v треугольник верши-

ной вниз

^ треугольник верши-ной вверх

< треугольник верши-ной влево

> треугольник верши-ной вправо

p пятиконечная звезда h шестиконечная звезда

88..44..44.. ООффооррммллееннииее ггррааффииккоовв

Удобство использования графиков во многом зависит от дополнитель-

ных элементов оформления: координатной сетки, подписей к осям, заголовка и легенды. Сетка наносится командой grid on, подписи к осям размещаются при помощи xlabel, ylabel, заголовок дается командой title. Наличие несколь-ких графиков на одних осях требует помещения легенды командой legend с информацией о линиях – см. рис. 8.21. Все перечисленные команды приме-нимы к графикам как в линейном, так и в логарифмическом и полулогариф-мическом масштабах. Следующие команды выводят графики изменения су-точной температуры, которые снабжены всей необходимой информацией.

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

–1 – вне графика в правом верхнем углу графического окна;

Page 101: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.4. Графики функций одной переменной

Математическое программное обеспечение. Учебное пособие -101-

0 – выбирается лучшее положение в пределах графика так, чтобы как можно меньше перекрывать сами графики;

1 – в верхнем правом углу графика (это положение используется по умолчанию);

2 – в верхнем левом углу графика; 3 – в нижнем левом углу графика; 4 – в нижнем правом углу графика.

Рис. 8.21 В заголовке графика, легенде и подписях осей допускается добавление

формул и изменение стилей шрифта при помощи формата ТеХ.

88..44..55.. ГГррааффииккии ппааррааммееттррииччеессккиихх ии ккууссооччнноо--ззааддаанннныыхх ффууннккцциийй

Для построения функций, заданных параметрически, следует сперва сге-нерировать вектор значений аргумента. Затем необходимо вычислить значения функций и записать их в векторы, которые и надо использовать в качестве ар-гументов plot. График функции ttyttx cos7.0)(,sin5.0)( ⋅=⋅= для ]2,0[ π∈t (эллипс) получается при помощи команд, показанных на рис. 8.22.

Для того чтобы проверить свои знания, постройте график функции, за-данной кусочным образом:

а)

б)

Page 102: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.4. Графики функций одной переменной

Математическое программное обеспечение. Учебное пособие -102-

π≤≤π⋅ππ<<π−−ππ−≤≤π−⋅π

=.2,sin;,

;2,sin)(

3 xxxxxx

xy

Рис. 8.22

Сначала необходимо вычислить каждую из трех ветвей, т. е. фактиче-ски получить три пары массивов х1 и y1, х2 и y2, х3 и y3, затем объединить значения абсцисс в вектор x, а значения ординат в y и построить график функции, задаваемой парой массивов x и y.

88..55.. ГГррааффииккии ффууннккцциийй ддввуухх ппееррееммеенннныыхх

MatLab предоставляет различные способы визуализации функций двух

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

Для отображения функции двух переменных следует: 1. Сгенерировать матрицы с координатами узлов сетки на прямоуголь-

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

в матрицу.

а)

б)

Page 103: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.5. Графики функций двух переменных

Математическое программное обеспечение. Учебное пособие -103-

3. Использовать одну из графических функций MatLab. 4. Нанести на график дополнительную информацию, в частности, соот-

ветствие цветов значениям функции. Сетка генерируется при помощи команды meshgrig, вызываемой c двумя

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

Изучим основные возможности, предоставляемые MatLab для визуали-зации функций двух переменных, на примере построения графика

( )yyxyxyxz −⋅⋅−⋅π⋅π⋅= 1)1(5.1cos2sin4),( 2

на прямоугольной области определения [ ] [ ]1,0,1,1 ∈−∈ yx . Подготовьте матрицы с координатами узлов сетки и значениями функции, как показано на рис. 8.23.

Рис. 8.23

Для построения каркасной поверхности используется функция mesh, вызываемая с тремя аргументами:

>> mesh (X, Y, Z)

Рис. 8.24

Page 104: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.5. Графики функций двух переменных

Математическое программное обеспечение. Учебное пособие -104-

Цвет линий поверхности соответствует значениям функции рис. 8.24. MatLab рисует только видимую часть поверхности. При помощи команды hidden off можно сделать каркасную поверхность “прозрачной”, добавив скрытую часть. Команда hidden on убирает невидимую часть поверхности, возвращая графику преждний вид.

Функция surf строит каркасную поверхность графика функции и зали-вает каждую клетку поверхности определенным цветом, зависящим от зна-чения функции в точках, соответствующих углам клетки (рис. 8.25):

>> surf (X, Y, Z)

Рис. 8.25

В пределах каждой клетки цвет постоянный. Команда shading flat по-зволяет убрать каркасные линии. Для получения поверхности, плавно зали-той цветом, предназначена команда shading interp.

При помощи shading faceted можно вернуться к виду с каркасными линиями.

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

Команды meshc или surfc позволяют получить более точное представле-ние о поведении функции. Эти команды строят каркасную поверхность или за-литую цветом каркасную поверхность и размещают на плоскости xy линии уровня функции (линии постоянства значений функции) – см. рис. 8.26.

Page 105: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.5. Графики функций двух переменных

Математическое программное обеспечение. Учебное пособие -105-

Рис. 8.26

Рис. 8.27

а)

б)

а)

б)

Page 106: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

8. ДИАГРАММЫ И ГИСТОГРАММЫ 8.5. Графики функций двух переменных

Математическое программное обеспечение. Учебное пособие -106-

MatLab позволяет построить поверхность, состоящую из линий уровня, при помощи функции contour3. Эту функцию можно использовать так же, как и описанные выше mesh, surf, meshc и surfc с тремя аргументами. При этом число линий уровня выбирается автоматически. Имеется возможность задать четвертым аргументом в contour3 либо число линий уровня, либо вектор, эле-менты которого равны значениям функции, отображаемым в виде линий уровня. Задание вектора удобно, когда требуется исследовать поведение функции в некоторой области ее значений (срез функции). Постройте, на-пример поверхность, состоящую из линий уровня, соответствующих значе-ниям функции от 0 до 0.5 с шагом 0.01 – см. рис. 8.27.

Page 107: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -107-

99.. ГГРРААФФИИККИИ ФФУУННККЦЦИИЙЙ

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

99..11.. ГГррааффииккии ффууннккцциийй ддввуухх ппееррееммеенннныыхх

MatLab предоставляет различные способы визуализации функций двух

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

99..11..11.. ППооссттррооееннииее ппааррааммееттррииччеессккии ззааддаанннныыхх ппооввееррххннооссттеейй ии ллиинниийй

MatLab позволяет строить трехмерные линии, определенные формулами

],[),(),(),( battzztyytxx ∈=== ,

и поверхности, задаваемые зависимостями

].,[],,[),,(),,(),,( dcvdcuvuzzvuyyvuxx ∈∈===

Функция plot3 визуализирует параметрически заданные линии, исполь-зуя в качестве аргументов векторы, содержащие значения функций х(t), y(t) и z(t), вычисленные для значений параметра t. Сначала следует сформировать вектор t, что проще всего сделать, используя заполнение с постоянным ша-гом при помощи двоеточия, а затем вычислить и записать в векторы соответ-ствующие значения функции. Полýчите, например, график линии

].100,0[,,cos,sin 50/5050/50 ∈=== −−−− ttzteytex tt

Используйте для этого команды, показанные на рис. 9.1.

Page 108: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.1. Графики функций двух переменных

Математическое программное обеспечение. Учебное пособие -108-

Рис. 9.1 Параметрически заданную поверхность можно построить при помощи

любой из функций, предназначенных для отображения трехмерных графи-ков. Важно только правильно подготовить аргументы. Дело в том, что функ-ции х(u, v) и y(u, v) могут быть многозначны, что надо учесть при создании матриц с информацией о расположении узлов сетки на области построения и матрицы, содержащей значения функций z(u, v) в этих точках. Например, отобразите поверхность (конус), определенную зависимостями

].2,2[,,6.0),(,sin3.0),(,cos3.0),( ππ−∈⋅=⋅⋅=⋅⋅= vuuvuzvuvuyvuvux

Сгенерируйте при помощи двоеточия вектор-столбец и вектор-строку, со-держащие значения параметров на заданном интервале (важно, что u – век-тор-столбец, а v – вектор-строка!) – см. рис. 9.2.

а)

б)

Page 109: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.1. Графики функций двух переменных

Математическое программное обеспечение. Учебное пособие -109-

Рис. 9.2

Далее сформируйте матрицы X, Y, содержащие значения функций x(u, v), y(u, v) в точках, соответствующих значениям параметров при помощи внешнего произведения векторов (звездочка без точки) – см. рис. 9.3.

Рис. 9.3

Матрица Z должна быть того же размера, что X и Y и, кроме того, она должна содержать значения, соответствующие значениям параметров. Если бы в функцию z(u, v) входило произведение u и v, то матрицу Z можно было запол-нить аналогично X и Y при помощи внешнего произведения. С другой стороны, функцию z(u, v) можно представить в виде )(6.0),( vguvuz ⋅⋅= , где 1)( ≡vg . Поэтому для вычисления Z снова примените внешнее произведение на вектор-строку той же размерности, что V, состоящую из единиц, – см. рис. 9.4.

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

Page 110: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.1. Графики функций двух переменных

Математическое программное обеспечение. Учебное пособие -110-

Рис. 9.4

Рис. 9.5

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

].,[,,sin8.0),(,sincos7.0),(,coscos),( ππ−∈⋅=⋅⋅=⋅= vuuvuzvuvuyvuvux

б)

а)

Page 111: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.1. Графики функций двух переменных

Математическое программное обеспечение. Учебное пособие -111-

99..11..22.. ППооссттррооееннииее ооссввеещщеенннноойй ппооввееррххннооссттии

Предположим, что поверхность графика функции сделана из материала с определенными свойствами отражения и поглощения света и, кроме того, можно управлять расположением источника света. Эти две возможности вместе с поворотом графика позволяют получить естественно выглядящую поверхность, повернутую и освещенную под нужным углом. Для построения освещенной поверхности применяется функция surfl.

Постройте освещенную поверхность, задаваемую на прямоугольной области ]10[],11[ ∈−∈ yx формулой

).1()1(5.1cos2sin4),( 2 yyxyxyxz −⋅⋅−⋅π⋅π⋅=

Рис. 9.6 При использовании surfl удобно задавать цветовые палитры copper,

bone, gray, pink, в которых интенсивность цвета изменяется линейно. Для по-лучения плавно изменяющихся оттенков следует использовать shading interp.

а)

б)

Page 112: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.1. Графики функций двух переменных

Математическое программное обеспечение. Учебное пособие -112-

Команды, показанные на рис. 9.6, приводят к получению требуемой осве-щенной поверхности.

По умолчанию источник света имеет азимут, больший на 45°, чем на-блюдатель, и тот же угол возвышения. Дополнительным четвертым аргумен-том surfl может быть вектор-строка из двух элементов – азимута и угла воз-вышения источника света. Измените, например, азимут источника на –90° по отношению к наблюдателю, а угол возвышения установите в ноль. Это мож-но проделать при помощи команд, показанных на рис. 9.7.

Рис. 9.7

99..22.. ААннииммиирроовваанннныыее ггррааффииккии

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

Для построения анимированных графиков применяются функции comet

а)

б)

Page 113: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.2. Анимированные графики

Математическое программное обеспечение. Учебное пособие -113-

и comet3. Постройте, например, траекторию движения точки в течение 10 се-кунд, координаты которой изменяются по закону

.1

cos)(1

sin)(+

=+

=t

ttyt

ttx

Действуйте точно так же, как при построении графика параметрически

заданной функции, но для визуализации результата используйте comet – см. рис. 9.8.

Рис. 9.8

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

Скоростью движения кружка можно управлять, задавая различные ша-ги при автоматическом заполнении вектора, соответствующего времени. Ис-пользование comet с одним аргументом (вектором) приводит к построению динамически рисующегося графика значений элементов номера в зависимо-сти от их номеров. Функцию comet можно вызвать и с третьим дополнитель-ным числовым параметром, который задает длину хвоста кометы. По умол-чанию он равен 0.1. Обратите внимание, что при изменении размеров графи-ческого окна или при его минимизации и последующем восстановлении тра-

а)

б)

Page 114: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.2. Анимированные графики

Математическое программное обеспечение. Учебное пособие -114-

ектория движения пропадает. Это связано со способом, который применяет MatLab для построения графика.

Получите самостоятельно траекторию движения фиксированной точки на окружности, катящейся по прямой (циклоиду). Циклоида описывается па-раметрическими зависимостями .cos1)(,sin)( ttytttx −=−=

Для построения траектории точки, перемещающейся в пространстве, используется функция comet3. Пусть координаты точки в течение 100 секунд изменялись по следующему закону:

.,cos,sin 50/5050/50 tzteytex tt === −−−−

Отобразите траекторию движения точки, применяя команды, показан-

ные на рис. 9.9.

Рис. 9.9 Функцию comet3 можно вызывать с четвертым числовым аргументом,

который так же, как и в случае сomet, задает длину хвоста кометы.

99..33.. РРааббооттаа сс ннеессккооллььккииммии ггррааффииккааммии Во всех примерах графики выводились в специальное графическое ок-

а)

б)

Page 115: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.3. Работа с несколькими графиками

Математическое программное обеспечение. Учебное пособие -115-

но с заголовком Figure No.1. При следующем построении графика предыду-щий пропадал, а новый выводился в то же самое окно. MatLab предоставляет следующие возможности работы с несколькими графиками:

• вывод каждого графика в свое окно; • вывод нескольких графиков в одно окно (на одни координатные оси); • отображение в пределах одного окна нескольких графиков, каждого

на своих осях.

99..33..11.. ВВыыввоодд ггррааффииккоовв вв ооттддееллььнныыее ооккннаа Команда figure, определенная в MatLab, служит для создания пустого

графического окна и отображения его на экране. Окно становится текущим, т. е. все последующие графические функции будут осуществлять построение графиков в этом окне. Для построения нового графического окна следует снова использовать figure. На рис. 9.10 показано построение поверхности и вывод двух графических окон с использованием команды figure.

Последовательсность команд, показанная на рис. 9.10, приводит к по-явлению на экране двух графических окон: Figure No. 1, содержащего кар-касную поверхность, и Figure No. 2 с освещенной поверхностью. Окно Figure No. 2 является текущим, так как было создано последним. Команды, набираемые далее, например, как показано на рис. 9.11, приведут к измене-ниям именно в этом окне.

а)

Page 116: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.3. Работа с несколькими графиками

Математическое программное обеспечение. Учебное пособие -116-

Рис. 9.10

Рис. 9.11

Для того чтобы сделать графическое окно Figure No.1 текущим, следу-ет щелкнуть на нем мышкой, вернуться в рабочую среду MatLab и продол-жать ввод команд. Команды повлекут изменения в окне Figure No. 1. Для очистки всего текущего окна используется команда clf (сокращение от clear figure), а для того, чтобы убрать только график, но оставить оси, заголовок и

б)

а)

б)

Page 117: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.3. Работа с несколькими графиками

Математическое программное обеспечение. Учебное пособие -117-

название осей, следует применить cla (сокращение от clear axes). Вышеописанным способом можно получить сколько угодно графиче-

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

xgиxf lnsin == , а затем оформите их – дайте заголовки и нанесите сетку на второй график. Последовательность команд, приведенных на рис. 9.12, позволяет получить желаемый результат.

Для того чтобы очистить графическое окно с указателем lnGr, следует использовать команду clf(lnGr). Удаление графика из первого окна, на которое указывает sinGr, производится при помощи команды cla(sinGr).

а)

Page 118: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.3. Работа с несколькими графиками

Математическое программное обеспечение. Учебное пособие -118-

Рис. 9.12

99..33..22.. ВВыыввоодд ннеессккооллььккиихх ггррааффииккоовв ннаа ооддннии ооссии

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

semilogx, semilogy, loglog. Они позволяют выводить графики нескольких функ-ций, задавая соответствующие векторные аргументы парами, например plot (x, f, x, g). Однако, при построении трехмерных графиков или различных ти-пов графиков, объединять их на одних осях не было возможности. Для объе-динения графиков предназначена команда hold on, которую нужно задать пе-ред построением следующего графика. На рис. 9.13 показано, как выводится пересечение плоскости и конуса, заданного параметрически.

б)

а)

Page 119: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.3. Работа с несколькими графиками

Математическое программное обеспечение. Учебное пособие -119-

Рис. 9.13

Команда hidden off применена для того, чтобы показать часть конуса, находящуюся под плоскостью.

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

>> plot (x, f, x, g) эквивалентно последовательности

>> plot (x, f) >> hold on >> plot (x, g)

99..33..33.. ППооссттррооееннииее ннеессккооллььккиихх ггррааффииккоовв вв оодднноомм ггррааффииччеессккоомм ооккннее MatLab позволяет разбить графическое окно на несколько подграфиков

со своими осями. Для этого служит команда subplot, которая располагает под-графики в виде матрицы и используется с тремя параметрами: subplot (i, j, n). Здесь i и j – число подграфиков по вертикали и горизонтали, а n – номер под-графика, который надо сделать текущим. Номер отсчитывается от левого верхнего угла построчно. Например, команда subplot (3, 2, 4) предполает на-личие шести подграфиков и делает четвертый текущим – см. рис. 9.14. После выполнения subplot (3, 2, 4) все графические функции будут осуществлять вывод именно в этот подграфик.

б)

Page 120: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.3. Работа с несколькими графиками

Математическое программное обеспечение. Учебное пособие -120-

Рис. 9.14 Постройте графики функции

)1()1(5.1cos2sin4),( 2 yyxyxyxz −⋅⋅−⋅π⋅π⋅=

на прямоугольной области определения ]1,0[],1,1[ ∈−∈ yx всеми извест-

а)

б)

Page 121: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

9. ГРАФИКИ ФУНКЦИЙ 9.3. Работа с несколькими графиками

Математическое программное обеспечение. Учебное пособие -121-

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

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

Обратите внимание, что последняя команда colormap (gray) изменяет палитру всего графического окна, а не подграфиков по отдельности.

Page 122: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -122-

1100.. ММ--ФФААЙЙЛЛЫЫ

1100..11.. ООббщщииее ссввееддеенниияя Работа из командной строки MatLab затрудняется, если требуется вво-

дить много команд и часто их изменять. Ведение дневника при помощи ко-манды diary и сохранение рабочей среды незначительно облегчает работу. Самым удобным способом выполнения команд MatLab является использова-ние М-файлов, в которых можно набирать команды, выполнять их все сра-зу или частями, сохранять в файле и использовать в дальнейшем. Для ра-боты с М-файлами предназначен редактор М-файлов. При помощи редак-тора М-файлов можно создавать собственные функции и вызывать их, в том числе и из командной строки.

1100..22.. РРааббооттаа вв ррееддааккттооррее ММ--ффааййллоовв

Раскройте меню File основного окна MatLab и в пункте New выберите

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

x = [0 ; 0.1 ; 7]; f = exp (–x); subplot (1, 2, 1) plot (x, f) g = sin (x); subplot (1, 2, 2) plot (x, g)

Сохраните теперь файл с именем mydemo.m в подкаталоге work основ-ного каталога MatLab, выбрав пункт Save as меню File редактора. Для запус-ка на выполнение всех команд, содержащихся в файле, следует выбрать пункт Run в меню Debug. На экране появится графическое окно Figure No.1, содержащее графики функций. Если вы решили построить график косинуса вместо синуса, то просто измените строку g = sin (x) в М-файле на g = cos (x) и запустите все команды снова.

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

Очень удобной возможностью, предоставляемой редактором М-файлов,

Page 123: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

10. М-ФАЙЛЫ 10.2. Работа в редакторе М-файлов

Математическое программное обеспечение. Учебное пособие -123-

является выполнение части команд. Закройте графическое окно Figure No.1. Выделите при помощи мыши, удерживая левую кнопку, первые четыре ко-манды и выполните их из пункта Evaluate Selection меню Text. Обратите внимание, что в графическое окно вывелся только один график, соответст-вующий выполненным командам. Запомните, что для выполнения части ко-манд их следует выделить и нажать <F9>. Выполните оставшиеся три коман-ды и проследите за состоянием графического окна. Потренируйтесь само-стоятельно, наберите какие-либо примеры из предыдущих глав в редакторе М-файлов и запустите их.

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

%построение графика sin(х) в отдельном окне В редакторе М-файлов может быть открыто несколько файлов. Пере-

ход между файлами осуществляется при помощи закладок с именами файлов, расположенных внизу окна редактора. Открытие существующего М-файла производится при помощи пункта Open меню File рабочей среды либо ре-дактора М-файлов. Открыть файл в редакторе можно и командой MatLab edit из командной строки, указав в качестве аргумента имя файла, например:

>> edit mydemo

Команда edit без аргумента приводит к созданию нового файла.

1100..22..11.. ТТииппыы ММ--ффааййллоовв М-файлы в MatLab бывают двух типов: файл-программы (Script V-Files),

содержащие последовательность команд, и файл-функции (Function М-Files), в которых описываются функции, определяемые пользователем.

1100..22..22.. ФФааййлл--ффууннккццииии сс оодднниимм ввххоодднныымм ааррггууммееннттоомм

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

функцию

1.01

4

2

++

⋅−

xxe x .

Имеет смысл один раз написать файл-функцию, а потом вызывать

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

Page 124: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

10. М-ФАЙЛЫ 10.2. Работа в редакторе М-файлов

Математическое программное обеспечение. Учебное пособие -124-

function f = myfun (x) f = exp (–x)*sqrt ((x^2+1)/(x^4+0.1));

Слово function в первой строке определяет, что данный файл содержит файл-функцию. Первая строка является заголовком функции, в которой раз-мещается имя функции и списки входных и выходных аргументов. В приме-ре, приведенном выше, имя функции myfun, один входной аргумент – х и один выходной – f. После заголовка следует тело функции (оно в данном примере состоит из одной строки), где и вычисляется ее значение. Важно, что вычисленное значение записывается в f. Не забудьте поставить точку с запя-той для предотвращения вывода лишней информации на экран.

Теперь сохраните файл в рабочем каталоге. Обратите внимание, что выбор пункта Save или Save as меню File приводит к появлению диалогового окна сохранения файла, в поле File name которого уже содержится название myfun. Не изменяйте его, сохраните файл-функцию в файле с предложенным именем!

Теперь созданную функцию можно использовать так же, как и встро-енные sin, cos и другие, например, из командной строки:

>> y = myfun (1.3) y = 0.2600 Вызов собственных функций может осуществляться из файл-

программы и из другой файл-функции. Файл-функция, приведенная выше, имеет один существенный недоста-

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

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

Измените тело функции на function f = myfun (x) f = exp (–x).*sqrt ((x.^2+1)./(x.^4+1));

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

или матрица значений, например: >> x = [1.3 7.2];

Page 125: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

10. М-ФАЙЛЫ 10.2. Работа в редакторе М-файлов

Математическое программное обеспечение. Учебное пособие -125-

>> y = myfun (x) y = 0.2600 0.0001 Переменная y, в которую записывается результат вызова функции

myfun, автоматически становится вектором нужного размера. Постройте график функции myfun на отрезке [0, 4] из командной стро-

ки или при помощи файл-программы: x =[0 : 0.5 : 4]; y = myfun (x); plot (x, y) MatLab предоставляет еще одну возможность работы с файл-

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

fplot (‘myfun’, [0 4])

Постройте график myfun разными способами при помощи команд plot и fplot на одних осях, используя hold on. Обратите внимание, что график, по-строенный при помощи fplot, более точно отражает поведение функции, так как fplot сама подбирает шаг аргумента, уменьшая его на участках быстрого изменения отображаемой функции.

1100..22..33.. ФФааййлл--ффууннккццииии сс ннеессккооллььккииммии ввххоодднныыммии ааррггууммееннттааммии

Все входные аргументы размещаются в списке через запятую. Напри-

мер, файл-функция, вычисляющая длину радиус-вектора точки трехмерного пространства 222 zyx ++ :

function r = radius3 (x, y, z) r = sqrt (x.^2 + y.^2 + z.^2);

Для вычисления длины радиус-вектора теперь можно использовать

функцию radius3, например:

Page 126: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

10. М-ФАЙЛЫ 10.2. Работа в редакторе М-файлов

Математическое программное обеспечение. Учебное пособие -126-

>> R = radius3(1, 1, 1) R = 1.732

1100..22..44.. ФФааййлл--ффууннккццииии сс ннеессккооллььккииммии ввыыххоодднныыммии ааррггууммееннттааммии

Файл-функции с несколькими выходными аргументами удобны при

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

function [hour, minute, second] = hms (sec) hour = floor (sec/3600); minute = floor ((sec-hour*3600)/60); second = sec-hour*3600-minute*60;

При вызове файл-функций с несколькими выходными аргументами ре-

зультат следует записывать в вектор соответствующей длины: >> [H, M, S] = hms (10000) H = 2 M = 46 S = 40

Если список выходных аргументов пуст, т. е. заголовок выглядит так:

function myfun (a, b) или function [ ] = myfun (a, b), то файл-функция не будет возвра-щать никаких значений. Такие функции тоже иногда оказываются полезными.

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

Page 127: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -127-

1111.. ЧЧИИССЛЛЕЕННННЫЫЕЕ ММЕЕТТООДДЫЫ ИИ ППРРООГГРРААММММИИРРООВВААННИИЕЕ

1111..11.. ВВыыччииссллеенниияя вв MMaattLLaabb

1111..11..11.. РРеешшееннииее ууррааввннеенниийй

Нахождение корней произвольных уравнений осуществляет встроенная функция fzero, для определения всех корней полиномов применяется roots.

Встроенная функция fzero позволяет приближенно вычислить корень уравнения по заданному начальному приближению. В самом простом ва-рианте fzero вызывается с двумя входными и одним выходным аргументом x = fzero (‘myf’, x0), где myf – имя файл-функции, вычисляющей левую часть уравнения; x0 – начальное приближение к корню; x – найденное приближен-ное значение корня. Решите, например, на отрезке [–5, 5] уравнение

0cossin 2 =− xxx .

Перед нахождением корней полезно построить график функции, вхо-

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

Ниже приведен текст требуемой файл-функции: function y = myf (x) y = sin (x) – x.^2.*cos (x);

Теперь постройте график myf, используя fplot, и нанесите сетку. fplot (‘myf’, [–5 5]) grid on

Из графика myf видно, что функция на этом отрезке имеет четыре кор-ня. Один корень равен нулю, в чем нетрудно убедиться, подставив x = 0 в уравнение.

Уточните значение корня, расположенного вблизи x = –5, при помощи fzero:

>> x1 = fzero (‘myf’, –5) Zero found in the interval: [–4.7172, –5.2]. x1 = –4.7566

Page 128: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

11. ЧИСЛЕННЫЕ МЕТОДЫ И ПРОГРАММИРОВАНИЕ 11.1. Вычисления в MatLab

Математическое программное обеспечение. Учебное пособие -128-

Итак, приближенное значение корня равно –4.7566. Проверьте ответ, вычислив значение функции myf в точке x1:

>> myf (x1) ans = 2.6645e –015 Конечно, то, что значение функции близко к нулю, вообще говоря, не

означает, что приближенное значение корня расположено достаточно близко к его точному значению.

Найдите самостоятельно корни x2 и x3, расположенные около –2 и –5. Важной особенностью fzero является то, что она вычисляет только те

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

матическая функция, например, >> fzero (‘sin’, [2 4]) Zero found the interval: [2, 4]. ans = 3.14159265358979

1111..11..22.. ВВыыччииссллееннииее ввссеехх ккооррннеейй ппооллииннооммаа

Полином в MatLab задается вектором его коэффициентов. Например,

для определения полинома 3xx5.0x2.5x2.3xp 2457 −++−+=

следует использовать команду

>> p = [1 0 3.2 –5.2 0 0.5 1 –3]; Число элементов вектора, т. е. число коэффициентов полинома, всегда

на единицу больше его степени, нулевые коэффициенты должны содержать-ся в векторе.

Функция polyval предназначена для вычисления значения полинома от некоторого аргумента:

>> polyval (p, 1) ans = –2.5000 Аргумент может быть матрицей или вектором. В этом случае произво-

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

Page 129: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

11. ЧИСЛЕННЫЕ МЕТОДЫ И ПРОГРАММИРОВАНИЕ 11.1. Вычисления в MatLab

Математическое программное обеспечение. Учебное пособие -129-

ет матрицу или вектор того же размера, что и аргумент. Нахождение сразу всех корней полиномов осуществляется при помощи

функции roots, в качестве аргумента которой указывается вектор с коэффици-ентами полинома. Функция roots возвращает вектор корней полинома, в том числе и комплексных:

>> r = roots (p) r = –0.5668 + 2.0698i –0.5668 – 2.0698i 1.2149 0.5898 + 0.6435i 0.5898 – 0.6435i –0.6305 + 0.5534i –0.6305 – 0.5534i

Число корней полинома, как известно, совпадает со степенью полино-ма. Убедитесь в правильности работы roots, вычислив значение полинома от вектора его корней:

>> polyval (p, r) ans = 1.0e–012 * –0.1008 + 0.0899i –0.1008 – 0.0899i –0.0666 0.0027 – 0.0018i 0.0027 + 0.0018i 0.0102 – 0.0053i 0.0102 + 0.0053i Обратите внимание, что в верхней строке результата содержится об-

щий множитель 1.0е–012, на который следует помножить каждое число по-лучившегося вектора.

Page 130: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -130-

1122.. ООППЕЕРРААТТООРРЫЫ ЦЦИИККЛЛАА

Выполнение схожих повторяющихся действий в MatLab осуществляет-ся при помощи операторов циклов for и while. Цикл for предназначен для выполнения заданного числа повторяющихся действий, а while – для дейст-вий, число которых заранее не известно, но известно условие продолжения цикла.

1122..11.. ЦЦиикклл ffoorr

Самое простое использование for осуществляется следующим образом: for count = start : step : final команды MatLab end Здесь count – переменная цикла, start – ee начальное значение, final –

конечное значение, а step – шаг, на который увеличивается count при каждом следующем заходе в цикл. Цикл заканчивается, как только значение count становится больше final. Переменная цикла может принимать не только це-лые, но и вещественные значения любого знака. Разберем применение цикла for на некоторых характерных примерах.

Пусть требуется вывести семейство кривых для [ ]π∈ 2,0x , которое задано функцией, зависящей от параметра xeaxy ax sin),( −= , для значений параметра от –0.1 до 0.1. Можно, конечно, последовательно вычислять

),( axy и строить ее графики для различных значений а от –0.1 до 0.1, но го-раздо удобнее использовать цикл for. Наберите текст файл-процедуры в ре-дакторе М-файлов:

figure x = [0 : pi / 30 : 2*pi]; for a = –0.1 : 0.02 : 0.1 y = exp (-a*x) .* sin(x); hold on plot(x, y) end

Сохраните в файле FORdem1.m и запустите его на выполнение (или из редак-тора М-файлов, или из командной строки, набрав в ней команду FORdem1 и нажав <Enter>).

Page 131: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

12. ОПЕРАТОРЫ ЦИКЛА 12.1. Цикл for

Математическое программное обеспечение. Учебное пособие -131-

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

Напишите файл-программу для вычисления суммы

∑=

=10

1 !1

k kS .

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

сначала сумма равна нулю, затем в переменную k заносится единица, вычис-ляется 1/k! (т. е. 1/1!), добавляется к S и результат снова заносится в S. Далее k увеличивается на единицу и процесс продолжается, пока последним сла-гаемым не станет 1/10!.

Файл-программа FORdem2 вычисляет искомую сумму. % ФАЙЛ-ПРОГРАММА ДЛЯ ВЫЧИСЛЕНИЯ СУММЫ

% 1/1! + 1/2! + … + 1/10! % обнуление S для накопления суммы S = 0; % накопление суммы в цикле for k = 1 : 10 S = S + 1 / factorial (k); end % вывод результата в командное окно S Если шаг цикла равен 1, то его можно не указывать. Наберите файл-программу в редакторе М-файлов, сохраните в текущем

каталоге в файле FORdem.m и выполните ее. Результат отображается в ко-мандном окне, так как в последней строке файл-программы содержится S без точки с запятой для вывода значения переменной S

S = 1.7183 Обратите внимание, что остальные строки файл-программы, которые

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

Первые две строки с комментариями не случайно отделены пустой строкой от остального текста программы. Именно они выводятся на экран, когда пользователь при помощи команды help из командной строки получает информацию о том, что делает FORdem2

Page 132: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

12. ОПЕРАТОРЫ ЦИКЛА 12.1. Цикл for

Математическое программное обеспечение. Учебное пособие -132-

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

Важно понять, что все переменные, использующиеся в файл-программе, становятся доступными в рабочей среде. Они являются так назы-ваемыми глобальными переменными. Например, для получения значения k после выполнения FORdem2 следует просто набрать k в командной строке и нажать <Enter>. Результат очевиден, так как последний раз цикл for выпол-нялся как раз для k, равного десяти. С другой стороны, в файл-программе мо-гут использоваться все переменные, введенные в рабочей среде.

Вычислим, например, сумму, похожую на предыдущую, но зависящую еще от переменной x:

∑=

=10

1 !)(

k

k

kxxS .

Для вычисления данной суммы в файл-программе FORdem требуется

изменить строку внутри цикла for на S = S + x .^ k / factorial(k); Перед запуском программы следует определить переменную x в ко-

мандной строке. Вычисление, например S(1.5) производится из командной строки при помощи следующих команд:

>> x = 1.5; >> FORdem2 S = 3.4817 В качестве x может быть вектор или матрица, поскольку в файл-

программе FORdem2 при накоплении суммы использованы поэлементные операции.

Перед запуском FORdem2 нужно обязательно присвоить переменной x некоторое значение, а для вычисления суммы, например, из пятнадцати сла-гаемых, придется внести изменения в текст файл-программы. Гораздо лучше написать универсальную файл-функцию, у которой в качестве входных ар-гументов будут значение х и верхнего предела суммы, а выходным – значе-ние суммы S(x). Использование операторов, в частности циклов, в файл-функциях производится так же, как и в файлах-программах.

Файл-функция sumN, вычисляющая S(x), имеет вид function s = sumN(x, N)

Page 133: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

12. ОПЕРАТОРЫ ЦИКЛА 12.1. Цикл for

Математическое программное обеспечение. Учебное пособие -133-

% ФАЙЛ-ФУНКЦИЯ ДЛЯ ВЫЧИСЛЕНИЯ СУММЫ % x/1! + x^2/2! + … + x^N/N! % использование: S = sum(x, N) % обнуление S для накопления суммы S = 0; % накопление суммы в цикле for m = 1 : 1 : N S = S + x.^m/factorial(m); end

Об использовании функции sumN пользователь может узнать, набрав в командной строке help sumN. В командное окно выведутся первые три строки с комментариями, отделенные от текста файл-функции пустой строкой. Ясно, что для x = 1.5 и N = 10 функция sumN даст тот же результат, что и FORdem2:

>> S = sumN (1.5, 10) S = 3.4817

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

Циклы for могут быть вложены друг в друга, при этом переменные вложенных циклов должны быть разными. Вложенные циклы удобны для за-полнения матриц. Например, во встроенной справке MatLab по оператору for содержится пример заполнения матрицы Гильберта при помощи вложенных циклов. Элементы матрицы Гильберта порядка n определяются формулами

.,...,2,1,)1/(1, njiдляjia ji =−+= Скопируйте пример в новый М-файл при помощи буфера обмена

Windows, сохраните с именем HILdem.m и продолжите работу с ним, как с файл-программой.

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

Page 134: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

12. ОПЕРАТОРЫ ЦИКЛА 12.1. Цикл for

Математическое программное обеспечение. Учебное пособие -134-

тариями. После небольших измерений в скопированном примере файл-программа HILdem выглядит так:

% Задание размера матрицы n = 4; % Инициализация матрицы и заполнение ее нулями a = zeros (n, n) % Вычисление матрицы Гильберта порядка n for i = 1 : n for j = 1 : n a(i, j) = 1/(I + j – 1); end end % Вывод матрицы Гильберта на экран А

Запуск HILdem выводит в командное окно матрицу Гильберта четверто-го порядка и приводит к появлению в рабочей среде новой глобальной пере-менной – массива ″a″ размера четыре на четыре, содержащего элементы мат-рицы Гильберта.

Перед заполнением матриц или векторов следует сначала создать их и заполнить нулями командой zeros для увеличения скорости алгоритма. Ко-манда a = zeros (n, n) выполняется быстрее, чем последовательность a (i, j) = 0 для всех i и j от единицы до n.

Исследуем границы спектра матрицы Гильберта для различных поряд-ков матрицы (от первого до некоторого N-го) и отобразим результат в виде графиков значений максимального и минимального собственных чисел в за-висимости от размера матрицы. Для решения этой задачи требуется N раз выполнить операторы файл-функции HILdem, изменяя n от единицы до N. После вычисления матрицы Гильберта порядка n необходимо:

1. Найти ее спектр при помощи встроенной функции eig. 2. Определить границы спектра, т. е. максимальный и минимальный

элемент вектора – аргумента eig. 3. Запомнить границы в элементах с индексом n некоторых вспомога-

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

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

Page 135: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

12. ОПЕРАТОРЫ ЦИКЛА 12.1. Цикл for

Математическое программное обеспечение. Учебное пособие -135-

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

Пример. Исследуйте границы спектра матрицы Гильберта до двенадца-того порядка.

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

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

function HilSpect (N) % Исследование границ спектра матрицы Гильберта % использование: HilSpect (N), N – максимальный порядок % инициализация массивов для границ спектра Lmax = zeros (1, N); Lmin = zeros (1, N); % вычисления для матриц от первого порядка до N-го for n = 1 : N % заполнение матрицы Гильберта, вместо вложенных циклов % можно использовать встроенную функцию A = hilb (n); A = zeros (n); for k = 1 : n for j = 1 : n A (k, j) = 1/(k + j – 1); end end % вычисление спектра и его границ Lambda = eig (A); Lmax (n) = max (Lambda); Lmin (n) = min (Lambda); end % вычисление спектра и границ спектра от порядка матрицы figure; subplot (2, 1, 1) plot (Lmax, ‘ko–’) title (‘Максимальное собственное число матрицы Гильберта’)

Page 136: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

12. ОПЕРАТОРЫ ЦИКЛА 12.1. Цикл for

Математическое программное обеспечение. Учебное пособие -136-

xlabel (‘ \ itN ’) grid on subplot (2, 1, 2) semilogy (Lmin, ‘k*–’) title (‘Минимальное собственное число матрицы Гильберта’) xlabel (‘ \ itN ’) grid on

Цикл for оказывается полезным при выполнении повторяющихся похо-жих действий в том случае, когда их число заранее определено. Обойти это ограничение позволяет более гибкий цикл while,способ применения которого приведен ниже.

1122..22.. ЦЦиикклл wwhhiillee,, ссууммммииррооввааннииее рряяддоовв

Рассмотрим пример на вычисление суммы. Требуется найти сумму для

заданного x (разложение в ряд sin x):

∑∞

=

+

+−=

0

12

.)!12(

)1()(k

kk

kxxS

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

вать сумму, пока слагаемые являются не слишком маленькими, скажем больше 10–10 (по модулю). Циклом for здесь не обойтись, так как заранее неизвестно значение k, обеспечивающее малость текущего слагаемого. Выход состоит в применении цикла while, который работает, пока выполняется условие цикла:

hile условие цикла команды MatLab end В данном примере условием цикла является то, что текущее слагаемое

!/ kxk больше 10–10. Для записи условия в формате, понятной MatLab, следу-ет использовать знак больше (>).

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

Текст файл-функции mysin, вычисляющей сумму ряда:

Page 137: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

12. ОПЕРАТОРЫ ЦИКЛА 12.2. Цикл while, суммирование рядов

Математическое программное обеспечение. Учебное пособие -137-

function s = mysin (x) % Вычисление синуса разложением в ряд % Использование: y = mysin (x), –pi < x < pi s = 0; k = 0; while abs (x .^ (2*k+1) / factorial (2*k+1)) > 1.0e –10 s = s + (–1) ^k*x. ^ (2*k+1) / factorial (2*k+1); k = k + 1; end

Обратите внимание, что у цикла while, в отличие от for, нет переменной, поэтому пришлось до начала цикла k присвоить ноль, а внутри увеличивать k на единицу.

Сравните теперь результат, построив графики функций mysin и sin на отрезке [ ]ππ− , на одних осях, например, при помощи fplot (команды можно задать из командной строки):

>> fplot (‘mysin’, [–pi, pi]) >> hold on >> fplot (‘sin’, [–pi, pi], ‘k.’)

Условие цикла while может содержать не только знак >. Для задания ус-ловия выполнения цикла допустимы также другие операции отношения:

= = – равенство. < – меньше. < = – меньше или равно. > = – больше или равно. ∼ = – не равно. Задание более сложных условий производится с применением логиче-

ских операторов. Например, условие –1 ≤ x < 2 состоит в одновременном вы-полнении неравенств x ≥ –1 и x < 2 и записывается при помощи логического оператора and:

and (x >= –1, x < 2)

или эквивалентным образом с символом &: (x >= –1) & (x < 2)

Page 138: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

12. ОПЕРАТОРЫ ЦИКЛА 12.2. Цикл while, суммирование рядов

Математическое программное обеспечение. Учебное пособие -138-

Логические операторы и примеры их использования приведены в табл. 12.2.

Таблица 12.2

Оператор Условие Запись в MatLab Эквивалентная запись

Логическое “И” x < 3 и k = 4 and (x < 3, k = = 4) (x < 3) & (k = = 4) Логическое “Или” x = 1, 2 or (x = = 1, x = = 2) (x = = 1) | (x = = 2) Отрицание “Не” a ≠ 1.9 not (a = = 1.9) ∼ (a = = 1.9)

При вычислении суммы бесконечного ряда имеет смысл ограничить

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

(abs(x.^(2*k+1) / factorial (2*k+1)) > 1.0e –10) ((k <= 100000)

или в эквивалентной форме:

and(abs(x.^(2*k+1) / factorial (2*k+1)) > 1.0e –10, k <= 100000). Для задания порядка выполнения логических операций следует ис-

пользовать круглые скобки, например записи (x = = 1) / (x = = 2) & (y = = 3) и (x = =1) | ((x = = 2) & (y = = 3)) не эквивалентны в MatLab, в отличие от мно-гих языков программирования.

Page 139: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -139-

1133.. ООППЕЕРРААТТООРРЫЫ ВВЕЕТТВВЛЛЕЕННИИЯЯ.. ИИССККЛЛЮЮЧЧИИТТЕЕЛЛЬЬННЫЫЕЕ ССИИТТУУААЦЦИИИИ

Условный оператор if и оператор переключения switch позволяют соз-

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

1133..11.. УУссллооввнныыйй ооппееррааттоорр iiff

Оператор if может применяться в простом виде для выполнения блока ко-

манд при удовлетворении некоторого условия или в конструкции if–elseif–else для написания разветвляющих алгоритмов.

1133..11..11.. ППррооввееррккаа ввххоодднныыхх ааррггууммееннттоовв

Начнем с простейшего примера – файл-функции для вычисления вы-

ражения 12 −x . Создание файл-функции не должно вызвать затруднений. Она работает

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

if условие команды MatLab end Если условие верно, то выполняются команды MatLab, размещенные

между if и end, а если условие неверно, то происходит переход к командам, расположенным после end. При записи условия используются операции сле-дующие отношения:

= = – равенство. < – меньше. < = – меньше или равно. > = – мольше или равно. ∼ = – не равно.

Page 140: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

13. ОПЕРАТОРЫ ВЕТВЛЕНИЯ. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ 13.1. Условный оператор if

Математическое программное обеспечение. Учебное пособие -140-

Команда warning служит для вывода предупреждения в командное окно. Файл-функция, проверяющая значение аргумента: function f = Rfun (x); % вычисляет sqrt (x^2–1) % выводит предупреждение, если результат комплексный % использование y = Rfun (x) % проверка аргумента if abs (x) < 1 warning (‘результат комплексный’) end % вычисление функции f = sqrt (x^2 – 1);

Теперь вызов Rfun от аргумента, меньшего единицы по модулю, приве-дет к выводу в командное окно предупреждения:

>> y = Rfun (0.2) результат комплексный y = 0 + 0.97979589711327i

Файл-функция Rfun только предупреждает о том, что ее значение ком-плексное, все вычисления с ней продолжаются. Если же комплексный ре-зультат означает ошибку вычислений, то следует прекратить выполнение функции, используя команду error вместо warning.

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

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

Page 141: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

13. ОПЕРАТОРЫ ВЕТВЛЕНИЯ. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ 13.1. Условный оператор if

Математическое программное обеспечение. Учебное пособие -141-

будет массивом, а что такое D > 0, для массива пока неизвестно. Дополните функцию root2 вышеописанными видами контроля,

предотвращающими неправильное ее использование. Встроенные функ-ции nargin и nargout возвращают число входных и выходных аргументов со-ответственно. Для проверки, являются ли входные аргументы числами, сле-дует сначала найти размеры соответствующих переменных при помощи size, а затем проверить их на равенство единице. Вывод текста в командное окно в ходе выполнения файл-программы или файл-функции осуществляется опера-тором disp, сам текст указывается в апострофах: disp (‘текст’).

1133..11..22.. ООррггааннииззаацциияя ввееттввллеенниияя

В общем виде оператор ветвления представляет конструкцию if–elseif–else,

работу которой хорошо поясняет пример файл-функции ifdem: function ifdem (a); % Пример использования структуры if–elseif–else if (а = = 0) disp (‘a равно нулю’) elseif a = = 1 disp (‘a равно единице’) elseif a = = 2 disp (‘a равно двум’) elseif a >= 3 disp (‘a больше или равно трем’) else disp (‘a меньше трех, но не ноль, не единица и не двойка’) end В зависимости от выполнения того или иного условия работает соот-

ветствующая ветвь программы, если все условия неверны, то выполняются команды, размещенные после else. Вызовы функции ifdem с различными ар-гументами позволяют убедиться в вышесказанном:

>> ifdem (1) a равно единице >> ifdem (1.2) а меньше трех, но не ноль, не единица и не двойка >> ifdem (2) а равно двум

Page 142: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

13. ОПЕРАТОРЫ ВЕТВЛЕНИЯ. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ 13.1. Условный оператор if

Математическое программное обеспечение. Учебное пособие -142-

>> ifdem (3) а больше или равно трем >> ifdem (–1) а меньше трех, но не ноль, не единица и не двойка

Ветвей может быть сколько угодно (добавьте несколько elseif с похо-жими условиями в ifdem) или только две, например:

if (а = = 0) disp (‘a равно нулю’) else disp (‘a не равно нулю’) end

В случае двух ветвей используется завершающее else, а elseif пропуска-ется. Оператор if должен заканчиваться end.

Файл-функция ifdem хорошо демонстрирует работу оператора if, но на практике оказывается бесполезной. Действительно полезный пример – вы-числение кусочно-заданной функции

π≥−π<≤π−π

π−<=

,,cos,,/

,,sin)(

xxxx

xxxy

которая реализуется файл-функцией pwfun. Ее текст приведен ниже:

function y = pwfun (x); % вычисляет кусочно-линейную функцию % sin(x) –1, если x< –pi % y(x) = x, если –pi <=x <0 % pi*cos(x), если x >= 0 % использование y = pwfun(x), x – число; if x < –pi y = sin (x) –1 elseif x < pi % проверка x > –pi не нужна! y = x / pi; else % здесь x > pi y = –cos (x); end

Page 143: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

13. ОПЕРАТОРЫ ВЕТВЛЕНИЯ. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ 13.1. Условный оператор if

Математическое программное обеспечение. Учебное пособие -143-

Обратите внимание на следующие моменты: число ветвей if–elseif–else равно трем.

Во второй ветви достаточно только проверить, что π<x , условие π−≥x уже выполнено (иначе бы отработала первая ветвь в if–elseif–else, и

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

ет, если все предыдущие условия неверны, что как раз соответствует π≥x . Для построения графика кусочно-заданной функции pwfun следует вос-

пользоваться командой fplot (‘pwfun’, [–3*pi, 3*pi]). Построение графика pwfun не случайно осуществляется при помощи

fplot. Функцией plot воспользоваться не удастся, так как требуется предвари-тельно вычислить вектор значений функции от вектора аргументов, а pwfun не умеет работать с входным аргументом-вектором. Убедиться в этом мож-но, построив график pwfun командами

x = [–3*pi : 0.1 : 3*pi]; y = pwfun(x); plot (x, y) Никакой ошибки при выполнении файл-функции не возникает, однако

график строится неправильно. Дело в том, что вектор x входит в условия опе-ратора if. Операции отношения (<, <=, >, >=, ∼=) могут специальным образом применяться и к векторам, а при обычном пользовании в данном примере не дают ожидаемого результата. Выход состоит в применении следующего ал-горитма вычисления кусочно-заданной функции, для реализации которого достаточно понимания вышеописанного материала.

1. Проверка числа входных аргументо: если число входных аргументов не равно единице, то происходит завершение работы файл-функции с сооб-щением об ошибке (выход по ошибке).

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

3. Нахождение длины входного аргумента. 4. Создание вектора выходного аргумента того же размера, что и

входной аргумент, и заполнение его нулями. 5. Перебор всех элементов входного вектора с использованием цикла

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

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

Page 144: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

13. ОПЕРАТОРЫ ВЕТВЛЕНИЯ. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ 13.1. Условный оператор if

Математическое программное обеспечение. Учебное пособие -144-

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

В качестве завершающего упражнения попытайтесь улучшить pwfun1 (создав новый файл-функцию pwfun2) так, чтобы ее входным аргументом могла быть и матрица. Учтите, что вектор в MatLab, так же как и матрица, является двумерным массивом, у которого один из размеров равен единице. Очевидно, что для перебора элементов входного аргумента придется использовать вло-женные циклы for.

1133..22.. ООппееррааттоорр sswwiittcchh

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

2cossin xxe yx π⋅π⋅−

приходится визуализировать ее четырьмя различными способами: каркасной поверхностью, сплошной поверхностью, выводить линии уровня, строить ос-вещенную поверхность. Удобно создать файл-функцию, один из входных ар-гументов которой vis будет определять способ визуализации. Если vis равен единице, то строится каркасная поверхность, для vis, равного двум, – сплош-ная и т. д. Можно, конечно, использовать оператор if в полном виде if-elseif-else, который в зависимости от значения vis выполняет нужную ветвь про-граммы, выводящую соответствующий график. Однако оператор переключе-ния switch позволяет написать более наглядную программу см. следующий фрагмент:

switch a case –1 disp(‘a = –1’) case 0 disp(‘a = 0’) case (2, 3, 4) disp(‘a равно 2 или 3 или 4’) otherwise disp(‘a не равно-1, 0, 1’) end

Каждая ветвь определяется оператором case, переход в нее выполняется

Page 145: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

13. ОПЕРАТОРЫ ВЕТВЛЕНИЯ. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ 13.2. Оператор switch

Математическое программное обеспечение. Учебное пособие -145-

тогда, когда переменная оператора switсh (в данном примере ‘‘a’’) принимает значение, указанное после case, или одно из значений из списка case. После вы-полнения какой-либо из ветвей происходит выход из switсh, при этом значения, заданные в других case, уже не повторяются. Если подходящих значений для ‘‘a’’ не нашлось, то выполняется ветвь программы, соответствующая otherwise.

Оператор switсh как нельзя лучше подходит для решения поставленной задачи о выводе различных графиков исследуемой функции. Попытайтесь написать файл-функцию (myplot3D) самостоятельно. Входными аргументами являются границы построения исследуемой функции по каждой из перемен-ных xmin, xmax, ymin, ymax и способ построения графика, определяемый vis. Все пять входных аргументов должны быть числами, причем xmin меньше xmax и ymin меньше ymax – не забудьте сделать соответствующую проверку! Выходные аргументы в данном случае не требуются.

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

Page 146: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -146-

1144.. ППРРЕЕРРЫЫВВААННИИЯЯ ЦЦИИККЛЛАА.. ИИССККЛЛЮЮЧЧИИТТЕЕЛЛЬЬННЫЫЕЕ ССИИТТУУААЦЦИИИИ

Хорошо написанная программа предотвращает ошибочные действия,

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

1144..11.. ППррееррыыввааннииее ццииккллаа.. ооппееррааттоорр bbrreeaakk

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

чтобы внутри цикла не возникало ошибок. Например, пусть дан массив x, со-стоящий из целых чисел, и требуется сформировать новый массив y по пра-вилу y(i) = x(i) / x(i + 1). Очевидно, что задача может быть решена при помо-щи цикла for. Но если один из элементов исходного массива равен нулю, то при делении получится Inf и последующие вычисления могут оказаться бес-полезными. Предотвратить подобную ситуацию можно выходом из цикла, если текущее значение x(i) равно нулю. Следующий фрагмент программы де-монстрирует использование оператора break для прерывания цикла:

… y = zeros(length(x) –1) for I = 1 : length(x) –1 if x(i) = = 0 break end y(i) = x(i + 1) / x(i); end … При выполнении условия x(i) = = 0 оператор break заканчивает цикл и

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

Page 147: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

14. ПРЕРЫВАНИЯ ЦИКЛА. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ

Математическое программное обеспечение. Учебное пособие -147-

1144..22.. ООббррааббооттккаа ииссккллююччииттееллььнныыхх ссииттууаацциийй.. ООппееррааттоорр ttrryy……ccaattcchh

Часть некорректных математических операций в MatLab, в отличие от

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

A = load (‘my.dat’); pie(A) X = [1 2 -1 -2]; X = X.^2

Если MatLab обнаруживает файл my.dat в путях поиска и считывает данные из него, то этот фрагмент программы работает успешно.

Однако если файл найти не удалось или при чтении из него возникли ошибки, то MatLab выведет сообщение в командное окно и закончит выпол-нение программы. Выходом из подобных ситуаций является конструкция try…catch, позволяющая обойти исключительные ситуации, которые приводят к ошибке, и предпринять некоторые действия в случае их возникновения. Схема использования try…catch выглядит следующим образом:

try % операторы, выполнение которых % может привести к ошибке catch % операторы, которые следует выполнить % при возникновении ошибки в блоке % между try и catch end Фрагмент программы, приведенный выше, лучше оформить с исполь-

Page 148: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

14. ПРЕРЫВАНИЯ ЦИКЛА. ИСКЛЮЧИТЕЛЬНЫЕ СИТУАЦИИ 14.2. Обработка исключительных ситуаций. Оператор try…catch

Математическое программное обеспечение. Учебное пособие -148-

зованием try и catch так, как это сделано ниже: try A = load (‘my.dat’); pie(A) catch disp (‘не могу найти файл my.dat’) end X = [1; 2; –1; –2]; X = X.^2

Теперь при отсутствии нужного файла my.dat программа выдаст сооб-щение об этом и продолжит работу:

>> не могу найти файл my.dat X = 1 4 1 4

Page 149: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -149-

1155.. ООССННООВВННЫЫЕЕ ВВООЗЗММООЖЖННООССТТИИ ППААККЕЕТТАА SSIIMMUULLIINNKK

1155..11.. ННааззннааччееннииее ии ввооззммоожжннооссттии ппааккееттаа SSiimmuulliinnkk В состав системы MatLab входит пакет моделирования динамических

систем – Simulink. Пакет Simulink является ядром интерактивного комплекса, предназна-

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

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

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

В библиотеке имеется целый набор виртуальных регистрирующих уст-ройств – от простых измерителей типа вольтметра или амперметра до уни-версальных осциллографов, позволяющих просматривать временные зависи-мости выходных параметров моделируемых систем, например, токов и на-пряжений, перемещений, давлений и т. п. Имеется даже графопостроитель для создания фигур в полярной системе координат, например, фигуры Лис-сажу и фазовых портретов колебаний. Simulink имеет средства анимации и звукового сопровождения. В дополнительных библиотеках можно отыскать и такие «дорогие приборы», как анализаторы спектра сложных сигналов, мно-гоканальные самописцы и средства анимации графиков.

И наконец, важным преимуществом пакета является возможность зада-ния в блоках произвольных математических выражений, что позволяет ре-шать типовые задачи, пользуясь примерами пакета Simulink или же просто за-

Page 150: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

15. ОСНОВНЫЕ ВОЗМОЖНОСТИ ПАКЕТА SIMULINK 15.1. Назначение и возможности пакета Simulink

Математическое программное обеспечение. Учебное пособие -150-

давая новые выражения, описывающие работу моделируемых пользователем систем и устройств. Важным свойством пакета является и возможность зада-ния системных функций (S-функций) с включением их в состав библиотек Simulink. Необходимо отметить также возможность моделирования устройств и систем в реальном масштабе времени.

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

1155..22.. ЗЗааппуусскк ммооддееллеейй SSiimmuulliinnkk иизз ссррееддыы MMaattLLaabb

Обычно Simulink запускается соответствующей кнопкой из панели ин-

струментов, после чего все последующие действия выполняются в среде MatLab + Simulink. Можно также запустить Simulink, выполнив в командной строке MatLab команду

>> simulink Для вывода полного перечня команд Simulink надо выполнить команду >> help simulink Дополнительную информацию можно получить, используя команды

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

Page 151: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -151-

1166.. ИИННТТЕЕРРФФЕЕЙЙСС ББРРААУУЗЗЕЕРРАА ББИИББЛЛИИООТТЕЕКК

1166..11.. ООккнноо ббррааууззеерраа ббииббллииооттеекк Библиотеки Simulink представляют собой обширный набор поимено-

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

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

Если в левом окне выделен какой-то раздел библиотек, то щелчок пра-вой кнопкой мыши выводит контекстное меню с одной командой, позво-ляющей вывести данный раздел в отдельном окне. В нашем случае это ко-манда Open the “Simulink” Library (Открыть библиотеку Simulink).

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

Из любого окна (браузера или отдельного окна раздела библиотеки) можно переносить компоненты мышью в окно модели.

1166..22.. ННаассттррооййккаа ппааррааммееттрроовв SSiimmuulliinnkk

Команда File ► Preferences выводит окно установки ряда параметров

системы MatLab + Simulink. Здесь мы рассмотрим только те его возможно-сти, которые относятся к пакету, simulink – окно Preferences с открытой вет-вью дерева параметров Simulink и панелью установки шрифтов Simulink Font Preferences. Установки в этом окне вполне очевидны – они относятся к выбо-ру шрифтов для различных компонентов библиотек Simulink.

То же окно, но с панелью установок параметров моделирования Simulink Simulation Preferences имеет три вкладки:

• Solver – установка параметров решателя дифференциальных уравнений; • Workspace – установка параметров рабочего пространства; • Diagnostics – установка параметров диагностики. Наиболее важные параметры устанавливаются на вкладке Solver. Пре-

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

Page 152: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

16. ИНТЕРФЕЙС БРАУЗЕРА БИБЛИОТЕК 16.2. Настройка параметров Simulink

Математическое программное обеспечение. Учебное пособие -152-

ции включены. Наконец, вкладка Diagnostics также имеет всего две опции, ус-танавливающие тип диагностических ошибок.

В меню Edit браузера библиотек имеется три команды: • Add to the current model – добавить выделенный блок в текущую модель; • Find block … – найти блок с заданным именем; • Find next block … – найти следующий блок с заданным именем. Меню View браузера библиотек содержит команды для управления ви-

дом интерфейса браузера: • Toolbar – вывод / скрытие панели инструментов; • Status bar – вывод / скрытие строки состояния; • Description – вывод / скрытие окна сообщений; • Stay on top – установка статуса окна браузера «поверх всех окон»; • Collapse entire Browser – закрытие текущего раздела библиотеки; • Expand entire Browser – раскрытие текущего раздела библиотеки; • Large icons – отображение пиктограмм блоков в увеличенном размере; • Small icons – отображение пиктограмм блоков в уменьшенном размере; • Show Parameters for selected block – вывод окна установки параметров

отмеченного блока. Меню Help служит для доступа к справочной системе окна браузера.

Page 153: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -153-

1177.. ИИННТТЕЕРРФФЕЕЙЙСС ООККННАА ММООДДЕЕЛЛЕЕЙЙ SSIIMMUULLIINNKK Команда New model в окне браузера библиотек открывает пустое окно

модели пакета Simulink. Несмотря на наличие панели инструментов важную роль выполняет обычное меню пакета Simulink. Оно дает более полный набор средств по управлению процессом моделирования. Меню содержит следую-щие пункты:

• File – операции с файлами S-моделей; • Edit – операции редактирования текущей модели; • View – управление видом интерфейса; • Simulation – операции запуска моделирования и его настройки; • Format – операции форматирования текущей модели; • Tools – доступ к инструментальным средствам; • Help – доступ к средствам справочной системы.

1177..11.. ООккннаа ууппррааввллеенниияя ииссттооччннииккааммии ссииггннааллоовв Команда Source Control … выводит подменю с командами Check in …

(Проверка входа), Check out … (Проверка выхода), Undo Check out (Отмена проверки выхода) и Preferences (Вывод окна настроек). Первые две команды выводят окна Check in и Check out, в них задаются опции по умолчанию.

Окна Check In и Сheck out позволяют ввести расширенное текстовое описание источника. Команда Preferences выводит окно настроек пакета Simulink (окно Preferences) с открытой панелью General ► Source control, что позволяет выбрать схему управления источниками.

1177..22.. ВВыыввоодд ооккннаа ссввооййссттвв ттееккуущщеейй ммооддееллии

Команда Model Preferences выводит окно свойств текущей модели. Это

окно имеет три вкладки: Model Properties, Options и History. Вкладка Model Properties отображает данные о номере версии модели, ее разработчике и дате создания. В ней можно задать описание модели (обратите внимание, что это возможно на русском языке).

Page 154: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -154-

1188.. ССООЗЗДДААННИИЕЕ ММООДДЕЕЛЛИИ

1188..11.. ППооссттааннооввккаа ззааддааччии ии ннааччааллоо ссооззддаанниияя ммооддееллии Решение любой проблемы в системе Simulink должно начинаться с по-

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

Основные команды редактирования модели сосредоточены в меню Edit. В качестве примера рассмотрим тривиальную задачу моделирования

работы идеального ограничителя, на вход которого подается синусоидальное напряжение с амплитудой 5 В и частотой 1 рад/с. Допустим, что пороги ог-раничения составят +0,5 и –0,5 В. Заметим, что такие параметры источник синусоидального сигнала имеет по умолчанию.

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

1188..22.. ССооззддааннииее ммооддееллии ооггррааннииччииттеелляя

Для создания модели данного устройства проделайте следующие действия: 1. Откройте окно новой модели Simulink. 2. Расположите это окно рядом с окном браузера библиотек. 3. Из раздела библиотеки Sources перенесите в окно модели источник

синусоидального сигнала Sine Wave. 4. Из раздела библиотеки Nonlinear перенесите в окно модели нелиней-

ный блок – ограничитель Saturation. 5. Из раздела библиотеки Sinks перенесите в окно модели блок осцилло-

графа Scope. 6. Выполните соединение между блоками. 7. Проверьте установку времени моделирования: Start time = 0

и Stop time = 20. 8. Щелкнув дважды по блоку Sine Wave, в появившемся окне парамет-

ров источника синусоидального сигнала установите амплитуду равной 5. 9. Запустите модель на исполнение, нажав кнопку Start Simulation в па-

нели инструментов окна модели.

Page 155: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

18. СОЗДАНИЕ МОДЕЛИ

Математическое программное обеспечение. Учебное пособие -155-

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

циллографа оказался не совсем удачным – изображение осциллограммы мало по высоте, поскольку при порогах в 0,5 масштаб в 5 условных единиц уровня получается слишком крупным. Заметим, что мы не указываем размерность осциллограммы по вертикали. В зависимости от условий задачи это могут быть метры (задача на движение), вольты (электронный ограничитель) и т. д.

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

В открывшемся окне свойств осей надо заменить значения Y–min = –5 и Y–max = 5, например, на Y–min = –0,8 и Y–max = 0,8. Нетрудно заметить, что теперь осциллограмма стала гораздо более представительной.

В контекстном меню осциллограммы видна еще команда – Autoscale (Ав-томасштабирование), которая реализуется кнопкой Autoscale в панели инстру-ментов окна осциллограммы. Эта команда устанавливает масштаб, при котором окно осциллограммы используется полностью. В данном случае это означает, что осциллограмма будет иметь максимально возможный размер.

Итак, как и следовало ожидать, в результате моделирования получена синусоида с обрезанными на уровне 0,5 сверху и снизу вершинами. При этом результат получен мгновенно – см. данные в строке состояния окна модели (время моделирования – 0). Столь быстрое получение явно верного результа-та достигается далеко не всегда. Чем сложнее модель, тем больше усилий и времени придется затратить на то, чтобы добиться ее правильной работы.

Page 156: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -156-

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

Рассмотрев простейшие примеры моделирования, приступим к систе-

матизированному описанию приемов подготовки и редактирования моделей.

1199..11.. ДДооббааввллееннииее ннааддппииссеейй ии ттееккссттооввыыхх ккооммммееннттааррииеевв Модели, не содержащие текстовых комментариев, не наглядны. Зачас-

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

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

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

1199..22.. ССооееддииннееннииее ббллооккоовв

Блоки моделей обычно имеют входы и выходы. Как правило, выход ка-

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

Для примера создайте модель дифференцирующего устройства (рис. 19.1).

Рис. 19.1

Внимательно присмотревшись к осциллограммам, мы видим, что при входном синусоидальном сигнале выходной сигнал является косинусоидой. Это вполне отвечает математическим соотношениям для данного случая – известно, что производная sin(x) eсть cos(x).

Однако в самом начале процесса дифференцирования хорошо будет

Page 157: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

19. ОСНОВНЫЕ ПРИЕМЫ ПОДГОТОВКИ И РЕДАКТИРОВАНИЯ МОДЕЛИ 19.2. Соединение блоков

Математическое программное обеспечение. Учебное пособие -157-

виден изъян работы модели – при t = 0 производная равна не 1, а 0. Это свя-зано с тем, что процесс начинается при нулевых начальных условиях. Но до-вольно быстро ситуация исправляется и в дальнейшем выходной сигнал ста-новится косинусоидальным. Таким образом, дифференцирующее устройство можно использовать для точного сдвига на 90° гармонического сигнала.

1199..33.. ВВииррттууааллььнныыйй ооссццииллллооггрраафф

Виртуальный осциллограф – самое важное из регистрирующих устройств.

Он позволяет представить результаты моделирования в виде временных диа-грамм тех или иных процессов. Окно параметров осциллографа содержит:

• Number of axes – число осей (каналов) осциллографа; • Time range – пределы временного интервала; • Tick labels – вывод/крытие отметок по осям; • Sumpling – установка временных соотношений: Decimation (в десятич-

ных долях времени со значением по умолчанию 1) или Sample Time (в тактах эталонного времени, по умолчанию 0).

Параметр Numbers of axes позволяет превратить одноканальный осцил-лограф в многоканальный.

Для примера (рис. 19.2) создайте модель: а) интегрирования пилооб-разных импульсов с последующим дифференцированием; б) интегрирования прямоугольных импульсов с последующим дифференцированием.

Рис. 19.2

Кроме того создайте модели с использованием: ограничения (Saturation); блока с зоной нечувствительности (Dead Zone); релейного блока (Relay); блока ограничения скорости (Rate Limiter); блока следящего квантова-ния (Quantizer); блока многовходового переключателя (Multiport Switch); блока дискретного фильтра (Discrete Filter).

а)

б)

Page 158: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

19. ОСНОВНЫЕ ПРИЕМЫ ПОДГОТОВКИ И РЕДАКТИРОВАНИЯ МОДЕЛИ 19.3. Виртуальный осциллограф

Математическое программное обеспечение. Учебное пособие -158-

На рис. 19.3 показаны некоторые модели.

Рис. 19.3 Одной из наиболее привлекательных особенностей системы MatLab

является наличие в ней наглядного и эффективного средства составления программных моделей – пакета визуального программирования Simulink.

Пакет Simulink позволяет осуществлять исследование (моделирование во времени) поведения динамических линейных и нелинейных систем, при-чем составление «программы» и ввод характеристик систем можно произ-водить в диалоговом режиме, путем сборки на экране схемы соединений элементарных (стандартных или пользовательских) звеньев. В результате такой сборки получается модель системы (в дальнейшем будем называть ее S-моделью), которая сохраняется в файле с расширением mdl. Такой процесс составления вычислительных программ принято называть визуальным про-граммированием.

Создание моделей в пакете Simulink основывается на использовании технологии Drag-and-Drop. В качестве «кирпичиков» при построении S-модели применяются визуальные блоки (модули), которые сохраняются в библиотеках Simulink. S-модель может иметь иерархическую структуру, т. е. состоять из моделей более низкого уровня, причем количество уровней ие-рархии практически не ограничено. В процессе моделирования есть возмож-ность наблюдать за процессами, которые происходят в системе. Для этого

а)

б)

в)

Page 159: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

19. ОСНОВНЫЕ ПРИЕМЫ ПОДГОТОВКИ И РЕДАКТИРОВАНИЯ МОДЕЛИ 19.3. Виртуальный осциллограф

Математическое программное обеспечение. Учебное пособие -159-

используются специальные блоки («обзорные окна»), входящие в состав библиотеки Simulink. Библиотека может быть пополнена пользователем за счет разработки собственных блоков.

Библиотека Simulink – ядро пакета Simulink В основе блок-схем S-моделей лежат элементарные блоки, позволяю-

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

Запуск и использование Simulink. Начать работу с пакетом Simulink можно из командного окна MatLab, щелкнув для этого мышью на соответст-вующей кнопке панели инструментов. В результате на экране должно поя-виться окно SimuLink Library Browser (Браузер библиотек Simulink).

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

Ядром пакета Simulink является библиотека Simulink, указанная в первой строке браузера. Остальные библиотеки пакета по необходимости включают-ся в состав общей библиотеки в соответствии с предпочтениями пользовате-ля. Чтобы ознакомиться с составом какой-либо из библиотек следует дважды щелкнуть мышью на ее имени. Библиотеку можно открыть и в отдельном ок-не. Для этого следует щелчком правой кнопки мыши на имени библиотеки вызвать контекстное меню и выбрать команду открытия.

Page 160: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -160-

2200.. ННААЗЗННААЧЧЕЕННИИЕЕ,, ППРРИИННЦЦИИППЫЫ ФФУУННККЦЦИИООННИИРРООВВААННИИЯЯ ИИ ИИССППООЛЛЬЬЗЗООВВААННИИЯЯ

MMAATTHHCCAADD Для автоматизации математических расчетов используются разнооб-

разные вычислительные средства – от программируемых микрокалькулято-ров до сверхмощных суперЭВМ. Однако такие расчеты остаются сложным делом. Более того, применение компьютеров внесло новые трудности: преж-де чем начать расчеты, пользователь должен освоить основы программиро-вания, изучить один или несколько языков программирования и численные методы расчетов. Положение стало меняться после специализированных программных комплексов для автоматизации математических и инженерно-технических расчетов. К таким комплексам относятся пакеты программ MathCad, MatLab, Eureka. MathCad – один из наиболее мощных и универ-сальных из них.

MathCad является интегрированной системой программирования, ори-ентированной на проведение математических и инженерно-технических рас-четов. Система MathCad содержит текстовый редактор, вычислитель и гра-фический процессор.

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

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

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

MathCad ориентирован на IBM-совместимые ПК, работает с PC-DOS и MS-DOS с версиями 2.0 и выше. Поддерживает основные типы адаптеров и дисплеев. Минимальная память – 512 Кб. MathCad автоматически поддержи-вает работу с математическим процессором. Последний заметно повышает скорость расчетов и вывода графиков, MathCad всегда работает в графиче-ском режиме. Это связано с тем, что только в этом режиме можно формиро-

Page 161: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

20. НАЗНАЧЕНИЕ, ПРИНЦИПЫ ФУНКЦИОНИРОВАНИЯ И ИСПОЛЬЗОВАНИЯ MATHCAD

Математическое программное обеспечение. Учебное пособие -161-

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

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

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

Впрочем, в решении задач интеграции создатели MathCad пошли на-много дальше – эта система обеспечивает подлинную интеграцию с целым рядом других математических, графических и офисных систем. Для этого в нее включен специальный системный интегратор MathConnex. Летом 1999 г. выпущена новейшая версия системы – MathCad 2000. В ней существенно увеличено число встроенных функций, улучшены графические возможности, повышены скорость вычислений и удобство работы.

Уже более 10 лет фирма MathSoft – производитель MathCad – вносит вклад в технические новации в широком спектре рынков и индустрий, включая военную и аэрокосмическую отрасли, телекоммуникации, электронное и элек-трическое оборудование, гражданскую инженерию и конструирование, техни-ческие услуги и высшее и специальное образование. MathCad является наибо-лее широко используемым программным обеспечением прикладной математи-ки и поддерживает среду технических вычислений, оптимизированную по тех-нической эффективности и новациям. MathCad включает множество операто-ров, встроенных функций и алгоритмов решения разнообразных математиче-ских задач. Программа обладает повышенной точностью и быстродействием вычислений. Вывод формул в естественном виде, интерактивный режим рабо-ты, рациональная организация рабочего пространства (запросы, графики, дан-ные отображаются на одном рабочем листе), поддержка символьной математи-ки – все это делает систему MathCad востребованным продуктом.

Page 162: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -162-

2211.. РРААББООТТАА СС УУССТТААННООВВККААММИИ MMAATTHHCCAADD 1. Установка параметров страницы. Для этого нужно открыть меню File –> Page Setup и изучить вкладку. С помощью Size (Размер) выбрать размер листа A4 (210 x 297 мм). С помощью Orientation выбрать ориентацию листа Portrait (верти-

кально) или Landscape (горизонтально). Установить Portrait (вертикально). С помощью Поля (мм) установить поля:

Left (слева) – 25 мм. Right (справа) – 10 мм. Top (вверху) – 30 мм. Bottom (внизу) – 20 мм.

Посмотреть вид страницы на экране. Данные установки позволяют нормально распечатывать и подшивать лис-

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

страницу горизонтально. Задание. С помощью Orientation выберите ориентацию листа Lan-

dscape (горизонтально) и убедитесь, что MathCad сам поменял параметры Left, Right, Top, Bottom. Посмотрите вид страницы на экране.

2. Установка колонтитулов (поля выше и ниже текста). Колонтитулы устанавливают один раз, а затем повторяют при печати.

На экране они не видны. Их можно посмотреть на экране в режиме просмот-ра макета страницы.

Войдите в меню Vew –> Headers/Footers (Голова/Подножие). Изучите вкладку: Здесь есть возможность выбора между верхним Header и нижним Footer колонтитулами. Они по структуре идентичны.

Выберитеь Header (верхний колонтитул): имеется возможность распо-лагать информацию слева, посередине и справа. Для этого существуют соот-ветственно три окна: Left, Center, Right. В каждом из них можно поместить одинаковую информацию, представленную слева внизу пиктограммами:

в верхнем ряду: [Insert File Name] – "Имя файла" позволяет знать, в каком файле нахо-

дится данный материал. [Insert File Path] – "Путь файла, т. е. вложение в папки", позволяет

найти файл среди папок. [Insert Page Number] – "Номер страницы в файле" – это обычная ну-

мерация страниц по порядку. [Insert Number of Pages] – "Общее количество страниц в файле", ис-

пользуется для формирования пояснений типа "стр. 7 из 22". в нижнем ряду: [Insert Date Last Saved] – "Дата последнего сохранения", даёт инфор-

мацию о дате последних исправлений в файле, что необходимо для опреде-

Page 163: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

21. РАБОТА С УСТАНОВКАМИ MATHCAD

Математическое программное обеспечение. Учебное пособие -163-

ления наиболее актуальной версии при накоплении распечаток. [Insert Time Last Saved] – "Время последнего сохранения", даёт ин-

формацию о времени последних изменений в файле. [Insert Date] – "Текущая дата" – это дата создания файла. [Insert Time] – "Текущее время" – это время создания файла. Данная информация фактически соответствует имеющейся в каталоге

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

Чтобы ввести команду, нужно мышкой поместить курсор в соответст-вующее окно, написать нужный текст и в нужном месте пиктограммой вве-сти команду. Команду можно и написать, например {f}.

Чтобы убрать команду, нужно мышкой поместить курсор рядом с соот-ветствующей командой и стереть её обычным образом.

Установите в левом окне Header последовательно указатели "Путь файла, т. е. вложение в папки" и "Имя файла". Нажмите "OK". Из главного меню откройте File –> Print Preview (предпросмотр макета страницы).

Особенность MathCad: он не понимает названий файлов и папок с про-белами, как это допускается в Windows. Поэтому рекомендуется названия папок и файлов для MathCad писать латиницей и слитно.

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

колонтитуле. Выводимый текст можно форматировать, выбирая шрифт и его тип (нор-

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

Например, установить в правой части верхнего колонтитула нумерацию страниц, введя с помощью пиктограмм текст: Стр.{n} из {nn}. Просмотрев макет страницы, можно убедиться, что он появился в колонтитуле. Так же можно помещать в колонтитулах различные картинки, НО только в формате BMP. Для этого используется кнопка Image (изображение).

Если размер рисунка больше, чем поле (установленное расстояние до края страницы), то MathCad предлагает увеличить соответствующее поле.

Попробуйте сами вставить в нижний колонтитул слева текущие дату и время с соответствующими поясняющими надписями, а справа – дату и вре-мя последнего сохранения. Для этого в левом окне нижнего колонтитула Footer напишите текст и введите пиктограммами команды: Дата {d} и время {t} создания. В правом окне напишите текст и введите пиктограммами ко-манды: Дата {fd} и время {ft} сохранения. Для проверки работы команд нужно выждать 1–2 минуты, чтобы сохранить файл и просмотреть его с по-мощью предпросмотрщика. Убедитесь, что время сохранения файла измени-лось, а время создания осталось прежним.

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

Page 164: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

21. РАБОТА С УСТАНОВКАМИ MATHCAD

Математическое программное обеспечение. Учебное пособие -164-

Для изменения номера первой страницы в меню установок колонтиту-лов View –> Headers/Footers используется установка Start at Page Number.

Чтобы на первой странице не появлялась информация колонтитулов, можно задать опцию Different header and footer on first page (Другие верх-ний и нижний колонтитулы на первой странице).

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

3. Установка ссылок. В MathCad можно использовать не один лист, а несколько. Чтобы они

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

Попробуйте сами организовать вызов других листов из основного лис-та. Для этого поставьте курсор в свободное поле, войдите в меню Insert –> Reference, изучите вкладку. В верхней части имеется узкое поле для ввода име-ни листа (файла), который должен вызываться. Чтобы найти его, можно вос-пользоваться кнопкой Browse и в каталогах найти нужный файл MathCad-а. В нижней части имеется опция Use relative path for reference (Использовать относительный путь для ссылки). Значение этой опции следующее: если её не пометить, то вызов ссылки будет происходить по полному пути, который имеется для вызываемого файла на данном компьютере. И если перенести оба файла на другой компьютер с другим деревом каталогов, то ссылка не будет найдена. Чтобы этого не происходило, во-первых, устанавливают ука-занную опцию, а во-вторых, оба файла помещают в одном каталоге. Про-верьте работу с опцией и без опции Use relative path for reference (создав другой каталог и перенеся файлы в него).

Ссылки имеют гипертекстовую связь. Если щелкнуть мышкой по ссыл-ке, то вызовется соответствующий файл.

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

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

Особенность: при внесении изменений в файл ссылки, чтобы это изме-нение начало действовать на вызывающий файл (если они связаны между со-

Page 165: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

21. РАБОТА С УСТАНОВКАМИ MATHCAD

Математическое программное обеспечение. Учебное пособие -165-

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

4. Установка гипертекстовых связей. Гипертекст позволяет организовать переходы по выделенным тексто-

вым фрагментам (служащим в качестве кнопок) к другим файлам. Такими "кнопками" могут быть любые части материала: текст, формулы, вставлен-ные рисунки, графики. Для этого используется меню Insert –> Hyperlink с соответствующей вкладкой. Для её использования требуется выделить фрагмент текста, формулу, рисунок, график и после этого войти в меню Insert –> Hyperlink. На открывшейся вкладке вверху расположена зона вво-да имени файла. Для её заполнения можно использовать кнопку Browse, че-рез которую можно найти в каталоге нужный файл, на который организуется гиперссылка. В нижней части в длинной пустой строке можно поместить по-ясняющую надпись, которая будет выводиться в левом нижнем углу MathCad при наведении на "кнопку" гиперссылки указателя мышки.

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

ется при вызове главного файла, в котором имеется ссылка типа Reference; при установке гипертекстовой связи вызываемый файл загружается в

память только при нажатии гипертекстовой ссылки (кнопки) типа Hyperlink.

Page 166: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -166-

2222.. ППЕЕРРЕЕММЕЕННННЫЫЕЕ ИИ ООССННООВВННЫЫЕЕ ММААТТЕЕММААТТИИЧЧЕЕССККИИЕЕ ООППЕЕРРААЦЦИИИИ ВВ MMAATTHHCCAADD После запуска приложения открывается пустое рабочее окно. Все ко-

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

2222..11.. ММааттееммааттииччеессккииее ввыырраажжеенниияя Самыми простыми, пожалуй, являются арифметические операции. В

MathCad для выполнения сложения, вычитания, умножения и деления ис-пользуются стандартные математические операторы, а именно: оператор сложения (+), вычитания (–), умножения (∗) и деления (/). Эти операторы обычно вводятся непосредственно с помощью клавиатуры, однако их же можно ввести, щелкая мышью на кнопках математической палитры Calculator. Кроме упомянутых основных операторов, в рабочих листах MathCad можно вводить и более сложные. В табл. 22.1 перечислены эти опе-раторы с описанием их назначения и методов ввода в рабочий документ.

Таблица 22.1

Оператор Описание Символ или комбинация

клавиш 1 2 3

Сложение Бинарный оператор (+), используется для сложения двух чисел

<Shift>+<=>

Сложение с переходом к новой строке

Оператор сложения (бинарный) – такой же, как в предыдущем случае, только операнды вводятся в разных сроках

<Ctrl>+<Enter>

Комплексное сопряжение

Оператор вычисления числа, комплексно сопряженного к данному (в рабочем доку-менте выглядит как")

<Shift>+<'>

Page 167: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

22.1. Математические выражения

Математическое программное обеспечение. Учебное пособие -167-

Окончание табл. 22.1 1 2 3

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

</>

Деление в одну строку

Бинарный оператор деления. От предыду-щего случая отличие состоит в том, что оператор деления и соответствующие опе-ранды отображаются в одной строке

<Ctrl>+</>

Факториал Унарный оператор вычисления факториала (!). Указывается после операнда

<Shift>+<1>

Возведение в степень

Бинарный оператор возведения в степень (Л). Первый операнд задает число, возводи-мое в степень, второй – степень этого числа

<Shift>+<6>

Модуль Модуль числа. Число заключается в прямые скобки

<Shift>+<\>

Умножение Бинарный оператор умножения чисел <Shift>+<8> Отрицание Унарный оператор отрицания (знак "минус") <–> Корень из числа Вычисление корня заданной степени из числа <Ctrl>+<\> Произведение Вычисление произведения набора чисел <Ctrl>+<Shift>+<3> Произведение по диапазону

Вычисление произведения набора чисел. Индексная переменная задается в виде диа-пазона

<Shift>+<3>

Сумма по диапа-зону

Вычисление суммы нескольких слагаемых. Переменная суммирования задается в виде диапазона

<Shift>+<4>

2222..22.. ИИннииццииааллииззаацциияя ппееррееммеенннноойй

Как уже отмечалось, важным моментом при работе с документами MathCad является инициализация переменных. Самая простая ситуация – ко-гда переменной присваивается численное значение. Например, чтобы пере-

менной х присвоить значение )6

sin(2 π⋅=x , следует ввести в рабочий доку-

мент команду, как показано на рис. 22.1.

Page 168: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.2. Инициализация переменной

Математическое программное обеспечение. Учебное пособие -168-

Рис. 22.1

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

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

2222..33.. ЗЗннаакк ррааввееннссттвваа В некоторых случаях знак равенства может служить не только для оп-

ределения значения переменной, но и для ее инициализации. Дело в том, что в MathCad попытка узнать (указав после переменной знак равенства) значе-ние переменной, которая предварительно не инициализирована, интерпрети-руется как ее инициализация. Так, если переменной а значение еще не при-сваивалось, то ввод знака равенства после ее названия будет эквивалентен вводу оператора присваивания.

Однако если значение переменной уже присвоено, то ввод знака равен-ства будет способом вычисления значения переменной – см. рис. 22.2.

Page 169: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.3. Знак равенства

Математическое программное обеспечение. Учебное пособие -169-

Рис. 22.2 Помимо чисел в качестве значения переменным можно присваивать

выражения или строки.

2222..44.. ССппооссооббыы ииннииццииааллииззааццииии ппееррееммеенннныыхх Все команды в рабочем документе MathCad выполняются последова-

тельно, т. е. в той очередности, в которой они введены в рабочий лист. По-этому, например, чтобы использовать в выражениях какую-то именованную константу (т. е. переменную с фиксированным значением), эту константу следует инициализировать до ее первого использования. Это разумно, но не всегда удобно, особенно если документ MathCad является своеобразным чер-новиком для проведения оценочных вычислений, результат которых сложно спрогнозировать. Обычно в этих случаях приходится часто менять подгоноч-ные параметры, уточнять значения переменных и т. п. Если документ доста-точно большой и переменных в нем много, все такие переменные удобно со-бирать в отдельные группы. Тогда их легче найти в документе. При этом, как правило, применяется глобальная инициализация переменных.

Дело в том, что способ инициализации с помощью оператора присваива-ния, который упоминался ранее, подразумевает, что переменная сначала объяв-ляется в документе (т. е. ей присваивается значение) и только после этого ис-пользуется. Такой способ инициализации называется локальным (не следует пу-тать с локальным определением переменных в программных кодах). При гло-бальной инициализации первоначальное значение переменной можно присваи-вать в любом месте рабочего документа. Выполняется глобальная инициализа-ция с помощью оператора тождества (три горизонтальные линии ≡). В рабочем документе этот оператор можно ввести, если нажать комбинацию клавиш <Shift>+<"> (т. е. ввести с клавиатуры символ ~, который в рабочем документе будет отображен как оператор тождества) или воспользоваться соответству-ющей пиктограммой на палитре Evaluation – см. рис. 22.3.

Page 170: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.4. Способы инициализации переменных

Математическое программное обеспечение. Учебное пособие -170-

Рис. 22.3

2222..55.. ГГллооббааллььннооее ооппррееддееллееннииее ппееррееммеенннноойй

Пример глобального определения переменной см. на рис. 22.4.

Рис. 22.4

В данном случае переменная инициализирована последней командой х = 9 (четвертая строка сверху) с помощью оператора тождества (ей присвоено значение 9). Таким образом, это глобальное определение переменной, и поэто-му соответствующее значение доступно в рамках всего документа, независимо от места вызова значения переменной в рабочем документе. В первой команд-ной строке после того, как за названием переменой указан знак равенства, воз-вращается именно то значение, что было присвоено при глобальной инициали-зации переменной (т. е. значение 9). Если в дальнейшем значение переменной переопределить (вторая по счету команда х = 5), то именно такое значение и будет возвращаться для данной переменной (третья команда).

Заданные по умолчанию операторы присваивания (локального и глобаль-ного) можно менять. Например, можно выбрать режим, при котором оператор присваивания в рабочем документе будет отображаться в виде обычного знака равенства. Для этого нужно выбрать команду Tools I Worksheet Options, в ре-зультате чего открывается одноименное диалоговое окно Worksheet Options. В этом окне следует перейти к вкладке Display (рис. 22.5)

Page 171: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.5. Глобальное определение переменной

Математическое программное обеспечение. Учебное пособие -171-

Рис. 22.5 На этой вкладке справа от поля Definition в раскрывающемся списке

можно выбрать один из двух элементов: Colon Equal (установлен по умол-чанию и соответствует оператору присваивания, т. е. двоеточие и знак равен-ства) и Equal (в качестве оператора присваивания отображается знак равен-ства). Если выбрать элемент Equal, все операторы присваивания в рабочем документе будут заменены на знаки равенства, как показано на рис. 22.6. Здесь в качестве оператора присваивания используется знак равенства.

Рис. 22.6

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

Page 172: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -172-

2222..66.. ИИссппооллььззооввааннииее ккооммппллеекксснныыхх ччииссеелл Помимо действительных чисел, в MathCad можно работать и с комплекс-

ными. Символами мнимости числа может быть либо i, либо j. Причем для ввода мнимой единицы один ее символ указать недостаточно. В этом случае i или j будут интерпретироваться как обычные переменные. Чтобы MathCad воспри-нимал эти переменные именно как мнимую единицу, перед ними указывается (без знака умножения – это важно!) число, задающее мнимую часть. Например, комплексная единица может быть введена как li или lj по выбору пользователя. При этом единица в мнимой части комплексного числа не отображается. Она видна только при выделении соответствующего выражения. Если число содер-жит не только мнимую часть, но и действительную, оно вводится как сумма действительной и мнимой частей. В одном рабочем документе для обозначения мнимой части чисел допустимы одновременно оба символа (i и j), однако по умолчанию независимо от того, какая литера выбрана, в процессе выполнения математических операций над комплексными числами она меняется на i. Сле-дует также отметить, что ввести мнимую единицу можно с помощью палитры Calculator, выбрав на ней пиктограмму с литерой i.

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

Причем, когда присваиваем значение переменной n, не ставим умноже-ние между единицей и j. Эту единицу можно увидеть, если выделить данную строчку – см. рис. 22.7.

Рис. 22.7

Page 173: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.6. Использование комплексных чисел

Математическое программное обеспечение. Учебное пособие -173-

Рис. 22.8 Более того, если знак умножения все же поставить, то число как ком-

плексное восприниматься системой MathCad не будет (рис. 22.8). Поскольку, как уже отмечалось, единица в мнимой части комплексного числа не отобра-жается, без предварительного выделения выражения бывает сложно опреде-лить, как именно оно вводилось. В качестве примера можно привести ситуа-цию с вычислением экспоненты от комплексного числа, мнимая часть кото-рого равна π/2.

Число π можно ввести либо с помощью палитры Calculator (рис. 22.9), либо нажав комбинацию клавиш <Ctrl>+<Shift>+<P>.

Сложность состоит в том, что если после числа π ввести символ мни-мой единицы (i или j), то автоматически будет добавлен и знак умножения. В результате число в аргументе как комплексное восприниматься не будет. Проблема может быть решена так: вводится число π, после чего это число умножается на мнимую единицу, т. е. на 1i (или lj).

Page 174: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.6. Использование комплексных чисел

Математическое программное обеспечение. Учебное пособие -174-

Рис. 22.9

Рис. 22.10 Символ мнимой части комплексных чисел (i или j) можно переопреде-

лить, воспользовавшись командой Format | Result. В результате открывается диалоговое окно Result Format, в котором следует перейти к вкладке Display Options – см. рис. 22.10.

Вкладка Display Options, помимо прочего, содержит раскрывающийся список Imaginary Value, в котором два элемента. Выбрав один из них, уста-навливают символ отображения мнимой части числа – см. рис. 22.11.

Page 175: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.6. Использование комплексных чисел

Математическое программное обеспечение. Учебное пособие -175-

Рис. 22.11

2222..77.. ККооннссттааннттыы

В MathCad, как и в любом другом аналогичном приложении, есть це-лый набор предопределенных констант. Это такие фиксированные значения, к которым можно обращаться через имя, например число π. Наиболее часто встречаются математические константы. Помимо упоминавшейся ранее мнимой единицы (1i или 1j) в MathCad есть константа Эйлера (символ е, ко-торый вводится непосредственно с клавиатуры), число π (комбинация кла-виш <Ctrl>+<Shift>+<p>), символ бесконечности ∞ (комбинация клавиш

а)

б)

Page 176: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.7. Константы

Математическое программное обеспечение. Учебное пособие -176-

<Ctrl>+<Shift>+<z>) и процент, обозначающийся символом % (значение этой константы равно 0,01).

2222..88.. ИИссппооллььззооввааннииее ккооннссттааннтт

Пример использования предопределенных констант в рабочем доку-менте MathCad показан на рис. 22.12.

Рис. 22.12

Как несложно заметить, численные значения в силу настроек системы отображаются с тремя цифрами в десятичной части, хотя точность их вычис-ления существенно выше (до 15 знаков). Случается, что нужно знать более точное значение в сравнении с тем, которое указано в рабочем листе. Для этого можно изменить глобальные настройки системы (увеличить число ото-бражаемых после запятой знаков). Если достаточно просмотреть точное зна-чение отдельного результата, его следует выделить и нажать комбинацию клавиш <Ctrl>+<Shift>+<N>. При этом в строке состояния будет отображено точное (в пределах возможностей системы) значение численного результата. Внизу в левом нижнем углу в строке состояния представлена константа Эй-лера, которая была предварительно вычислена как значение предела

en11lim

n

n→

+

∞→.

Page 177: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -177-

2222..99.. РРааббооттаа сс ффууннккцциияяммии Практические возможности любого математического приложения оп-

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

2222..1100.. ВВссттааввккаа ввссттррооеенннныыхх ффууннккцциийй Существует два способа вставки встроенной функции в рабочий доку-

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

Чтобы открылось диалоговое окно вставки функции Insert Function, следует выбрать команду Insert Function <Ctrl>+<E>. Кроме этого, можно воспользоваться специальной кнопкой на стандартной панели инструментов (на кнопке изображен символ функции).

Диалоговое окно Insert Function содержит два списка: Function Cate-gory и Function Name (рис. 22.13). В первом отображены те категории, на которые условно разбиты все встроенные функции MathCad. В частности, в списке Function Category представлены следующие элементы:

Page 178: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.10. Вставка встроенных функций

Математическое программное обеспечение. Учебное пособие -178-

Рис. 22.13

• Аll – при выборе этого элемента в правой части диалогового окна In-sert Function в списке Function Name отображается список всех встроенных функций MathCad;

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

• Complex Numbers – в эту категорию входят функции, предназначен-ные для работы с комплексными числами;

• Curve Fitting and Smoothing – категория функций для выполнения аппроксимации и сглаживания;

• Debugging – функции отладки кодов; • Differential Equation Solving – функции для решения дифференци-

альных уравнений и смежных задач; • Expression Type – категория функций для определения типов выра-

жений; • File Access – функции для работы с внешними файлами; • Finance – финансовые функции; • Fourier Transform – категория функций, имеющих отношение к пре-

образованию Фурье;

• Graphing – функции для работы с графическими объектами; • Hyperbolic – гиперболические функции; • Image Processing – категория функций для обработки изображений;

• Interpolation and Prediction – группа функций для выполнения ин-терполяции и экстраполяции;

• Log and Exponential – логарифмические и показательные функции; • Lookup – группа функций для выполнения поиска данных; • Number Theory/Combinatorics – группа функций для работы с чис-

ленными данными; • Piecewise Continuous – кусочно-непрерывные функции;

Page 179: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.10. Вставка встроенных функций

Математическое программное обеспечение. Учебное пособие -179-

• Probability Density – группа функций, относящихся к теории вероятно-стей, а именно к определению вероятностей для различных распределений;

• Probability Distribution – функции всевозможных распределений; • Random Numbers – категория функций, относящихся к генерирова-

нию случайных чисел; • Signal Processing – функции для обработки сигналов; • Solving – показывает в правой части диалогового окна Insert Func-

tion список функций, используемых при решении уравнений, поиске экстре-мумов и т. п.;

• Sorting – функции сортировки и упорядочивания данных; • Special – набор некоторых специальных функций и таких, которые по

разным причинам не попали в другие категории; • Statistics – статистические функции; • String – функции для работы с текстовыми строками; • Trigonometric – тригонометрические функции; • Truncation and Round Off – функции округления и преобразования

значений; • User Defined – определяемые пользователем функции; • Vector and Matrix – функции для работы с векторами и матрицами; • Wavelet Transform – функции для выполнения вейвлет-преоб-

разования. Выбирать функции из полного списка – далеко не просто. С этой точки

зрения лучше предварительно выбрать ту категорию, к которой искомая функция относится. Однако следует отметить, что принцип разбиения функ-ций по группам или категориям в некоторых случаях представляется доста-точно спорным. Поэтому полезно обращать внимание на два поля, следую-щих сразу за списками категорий функций и самих функций. В первом поле отображается название выбранной функции (с указанием ее аргументов), в следующем за ним – краткая, но, как правило, исчерпывающая справка по данной функции. Она позволяет сделать вывод относительно возможности (или невозможности) использования функции в проводимом исследовании. Однако увлекаться справочными возможностями диалогового окна Insert Function не следует. Если есть хотя бы малейшее сомнение в адекватности выбранной функции решаемой задаче, то разумнее будет затратить дополни-тельное время на ознакомление с полной справочной информацией по функ-ции. Очень часто встроенные функции MathCad, по сравнению с их матема-тическими двойниками, имеют некоторые особенности определения (напри-мер, ограниченная область определения, обработка комплексных аргументов и т. п.), незнание которых может привести к ненужным затратам. Это заме-чание, кстати, относится не только к MathCad, но и к большинству аналогич-ных математических пакетов. Рассмотрим основные функции MathCad.

Page 180: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -180-

2222..1111.. ССттааннддааррттнныыее ммааттееммааттииччеессккииее ффууннккццииии Основная нагрузка, если можно так выразиться, в процессе решения

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

Таблица 22.2

Функция Описание 1 2 acos(z) Арккосинус от z acosh(z) Гиперболический арккосинус от z acot(z) Арккотангенс от z acoth(z) Гиперболический арккотангенс от z acsc(z) Арккосеканс от z acsch(z) Гиперболический арккосеканс от z asec(z) Арксеканс от z asech(z) Гиперболический арксеканс от z asin(z) Арксинус от z asinh(z) Гиперболический арксинус от z atan(z) Арктангенс от z

atan2(x,y) Функцией в качестве результата возвращается угол (в радианах) между осью Ох и прямой, проходящей через начало координат и точку с коор-динатами х и у. Другими словами, atan2(x,y) = atan(y/x)

atanh(z) Гиперболический арктангенс от z cos(z) Косинус от z cosh(z) Гиперболический косинус от z cot(z) Котангенс от z coth(z) Гиперболический котангенс от z esc(z) Косеканс от z csch(z) Гиперболический косеканс от z exp(z) Показательная функция (е ≈ 2.72 в степени z)

Г(z) Гамма-функция Эйлера от z. Вычисляется как ∫∞

− −⋅=0

1 )exp(Г(z) dttt z

ln(z) Логарифм натуральный от z lnГ(z) Логарифм натуральный от гамма-функции Эйлера с аргументом z.

Символ Г можно ввести так: сначала ввести большую литеру G (ком-бинация клавиш <Shift>+<G>), после чего нажать комбинацию клавиш <Ctrl>+<G>

Page 181: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.11. Стандартные математические функции

Математическое программное обеспечение. Учебное пособие -181-

Окончание табл. 22.2 1 2

log(z,b) Логарифм от z по основанию b, если второй аргумент функции не ука-зан, логарифм вычисляется по основанию 10

sec (z) Секанс от z sech(z) Секанс от z sin(z) Синус от z sinc(z) Функция, значение которой вычисляется по формуле sinc(z) = sin(z)/z sinh(z) Синус гиперболический от z tan(z) Тангенс от z tanh(z) Тангенс гиперболический от z

2222..1122.. ММааттееммааттииччеессккииее ффууннккццииии

Примеры вызова некоторых функций см. на рис. 22.14.

Рис. 22.14

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

Page 182: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.12. Математические функции

Математическое программное обеспечение. Учебное пособие -182-

сказать о функции) находится функция csgn ( ). Однако возвращаемое этой функцией значение всегда действительно. Алгоритм его вычисления доволь-но замысловат. Функцией возвращается знак действительной части аргумен-та. Если число мнимое (т. е. действительная часть равна нулю), функция воз-вращает знак мнимой части аргумента. Для нулевого аргумента значение функции равно нулю. Поэтому для действительных аргументов различие функций signum( ) и csgn( ) состоит лишь в том, что первая для нуля возвра-щает значение 1, а вторая – 0.

Функции вычисления действительной и мнимой частей комплексного числа в MathCad имеют общепринятые математические названия: Re ( ) для вычисления действительной части и Im( ) – для мнимой. Наконец, аргумент комплексного числа (это угол между действительной осью и вектором, на-правленным из начала системы координат к точке на комплексной плоско-сти) можно определить с помощью функции arg ( ). Здесь уместно напом-нить, что для задания комплексного числа достаточно знать два параметра. Это могут быть действительная и мнимая части комплексного числа либо его модуль и аргумент. Модуль комплексного числа можно вычислить, заключив число в прямые скобки.

2222..1133.. РРааббооттаа сс ккооммппллеекксснныыммии ччииссллааммии

Пример функций с комплексными аргументами см. на рис. 22.15.

Рис. 22.15

2222..1144.. ФФууннккццииии ооккррууггллеенниияя ччииссллеенннныыхх ззннааччеенниийй

Группа функций MathCAD, предназначенная для преобразования и ок-ругления численных значений, приведена в табл. 22.3. Эти функции собраны в категории Truncation and Round Off диалогового окна вставки функций Insert Function.

Page 183: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.14. Функции округления численных значений

Математическое программное обеспечение. Учебное пособие -183-

Таблица 22.3

Функция Описание Ceil(x, у) Функцией в качестве значения возвращается наименьшее

кратное числа у, не меньшее числа х ceil(x) Функцией возвращается наименьшее целое число, которое

больше либо равно х Floor(x, у) Возвращается наибольшее кратное у, не превышающее х floor(х) Значением функции является наибольшее возможное целое

число, не превышающее х Round(x,у) Значение х округляется до ближайшего числа, кратного вто-

рому аргументу функции у. Это значение и возвращается функцией, при этом значение переменной х не меняется

round(x,n) Число х округляется до n знаков после десятичной точки. Если второй аргумент функции не указан, то округление выполня-ется до целочисленного значения. При отрицательном значе-нии n абсолютное значение второго аргумента определяет ко-личество разрядов округления в целой части числа

Trunc(х,у) Функцией в качестве значения возвращается результат умно-жения второго аргумента функции (т. е. у) на целую часть от-ношения первого аргумента (т. е. х) ко второму

trunc(х) Функцией возвращается целая часть числа х

2222..1155.. ССииммввооллььнныыйй ррееззууллььттаатт

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

Page 184: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.15. Символьный результат

Математическое программное обеспечение. Учебное пособие -184-

Рис. 22.16

Ввод оператора вычисления символьного значения осуществляется по-средством панели Symbolic – рис. 22.16.

2222..1166.. ВВыыччииссллееннииее ввыырраажжеенниийй Как уже отмечалось, для вычисления численного значения алгебраиче-

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

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

б)

б)

а)

Page 185: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.16. Вычисление выражений

Математическое программное обеспечение. Учебное пособие -185-

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

Процедура присваивания диапазона в качестве значения переменной дос-таточно проста и мало чем отличается от присваивания переменной обычного численного значения. Начинается она с ввода названия переменной, после ко-торого указывается оператор присваивания (комбинация <Shift>+<;>, т. е. сле-дует ввести двоеточие, а знак равенства будет добавлен автоматически). После этого приводится первое значение из диапазона (это может быть либо мини-мальное, либо максимальное значение). Затем через запятую указывается сле-дующее значение. По этим двум значениям система определяет шаг изменения переменной. Если первое введенное значение меньше второго, то шаг дискрет-ности положителен, в противном случае – отрицателен. Наконец, после опера-тора диапазона (это две точки, которые, однако, вводятся нажатием клавиши <;> – если просто ввести с клавиатуры две точки подряд, то они интерпретиру-ются как десятичные и появляется сообщение об ошибке) указывается конечное значение диапазона. Если шаг дискретности положителен, оно должно быть больше первого значения, если отрицателен – меньше. Второе значение можно не указывать. В этом случае шаг дискретности равен по абсолютной величине единице, а его знак выбирается в зависимости от того, какое значение в диапа-зоне больше – первое или последнее. В любом случае лучше следить за кор-ректностью вводимых значений.

При вводе значений-диапазонов можно применить палитру Matrix. На ней, в частности, есть специальная пиктограмма для ввода диапазонных зна-чений – см. рис. 22.17.

Рис. 22.17

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

Page 186: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.16. Вычисление выражений

Математическое программное обеспечение. Учебное пособие -186-

Рис. 22.18

2222..1177.. ДДииааппааззоонн ззннааччеенниийй

Пример присваивания диапазона в качестве значения переменной, ко-торое затем вычисляется (после названия переменной вводится знак равенст-ва) показан на рис. 22.19.

Рис. 22.19

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

Page 187: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.17. Диапазон значений

Математическое программное обеспечение. Учебное пособие -187-

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

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

2222..1188.. ФФууннккцциияя ддввуухх ппееррееммеенннныыхх

Пример вычисления функции двух переменных приведен на рис. 22.20.

Рис. 22.20 Список со значениями функции может быть достаточно большим, и то-

гда он отображается не целиком. Чтобы просмотреть все значения, следует выделить этот список в области отображения значений – см. рис. 22.21.

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

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

Page 188: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.18. Функция двух переменных

Математическое программное обеспечение. Учебное пособие -188-

Рис. 22.21 Аналогичная ситуация имеет место, когда вычисляется значение выра-

жения, в котором есть переменные со значениями-диапазонами.

2222..1199.. ММааттррииццыы ии ввееккттооррыы В MathCad предусмотрены широкие возможности для работы с матри-

цами и векторами. Строго говоря, оба эти объекта реализуются в MathCad в виде массивов. Каждый массив имеет размерность. В этом смысле матрица является массивом размерностью два, а вектор – один. Задаются матрицы и векторы, как и все в MathCad, достаточно просто, причем предусмотрены различные способы. Массив – набор элементов, каждый из которых может иметь численное значение, текстовое или сам являться массивом. В послед-нем случае говорят о вложенных массивах. Чтобы получить доступ к какому-то элементу массива, следует указать его индекс (или индексы).

2222..2200.. ССооззддааннииее ммаассссииввоовв Для создания массива вызывают команду Insert | Matrix (комбинация

клавиш <Ctrl>+<M>). Альтернативный вариант – воспользоваться палитрой Matrix – см. рис. 22.22.

Page 189: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.20. Создание массивов

Математическое программное обеспечение. Учебное пособие -189-

Рис. 22.22

В результате выполненных действий откроется диалоговое окно Insert Ma-trix – см. рис. 22.23.

В этом диалоговом окне указывается число строк и столбцов в созда-ваемом массиве (поля Rows и Columns). Таким образом, чтобы создать век-тор-строку, следует указать в поле Rows значение 1, для создания вектора-столбца единицу указывают в поле Columns. Если значения в обоих полях отличны от единицы, создаваемый массив с математической точки зрения будет матрицей – см. рис. 22.24.

Рис. 22.23

Рис. 22.24

Page 190: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.20. Создание массивов

Математическое программное обеспечение. Учебное пособие -190-

После вызова диалогового окна вставки матрицы Insert Matrix и опре-деления размеров массива в рабочем документе появляется объект, струк-турно соответствующий создаваемому массиву. Однако вместо элементов в этом объекте отображаются структурные заполнители. Вместо них и следует ввести значения элементов массива.

2222..2211.. ВВееккттооррыы ии ммааттррииццыы

Для получения доступа к отдельному элементу массива необходимо

указать название соответствующей переменной и индекс (или индексы) эле-мента в структуре массива. В частности, этим элементам можно присваивать новые значения, переопределяя тем самым исходный массив – см. рис. 22.25.

Рис. 22.25

Проверить значение массива можно так же, как и значение любой дру-гой переменной: для этого вводится название массива, после которого указы-вается знак равенства. Если число строк или столбцов массива не превышает десяти, то массив отображается полностью. В противном случае видна толь-ко часть массива, а прочие элементы можно просмотреть с помощью полос прокрутки. Следует также отметить два важных обстоятельства. Во-первых, по умолчанию индексация элементов массивов в рабочем документе Math-Cad начинается с нуля. Во-вторых, даже для одномерных массивов (векто-ров) все равно указывается два индекса: индексы строки и столбца, на пере-сечении которых находится элемент. Индексы разделяются запятой. Чтобы перейти в режим ввода нижних индексов, нажимают клавишу <[> или ис-пользуют пиктограмму на палитре Matrix – см. рис. 22.26.

Page 191: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.21. Векторы и матрицы

Математическое программное обеспечение. Учебное пособие -191-

Рис. 22.26 Таким образом, при обращении к элементу вектор-строки первым ука-

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

Нулевое начальное значение для индексирования элементов массива не очень удобно с той точки зрения, что обычно в линейной алгебре и ее при-ложениях начальное значение для индексов принимается равным единице. Чтобы избежать путаницы, разумно переопределить настройки MathCad так, чтобы индексы в рабочих документах начинались со значения 1. Для этого следует переопределить значение системной переменной ORIGIN. Эта пере-менная ответственна за определение начального индекса элементов массивов в MathCad, и ее значение по умолчанию равно нулю. Переопределить значе-ние этой переменной можно прямо в рабочем документе обычным присваи-ванием. Второй способ состоит в вызове диалогового окна Worksheet Op-tions, открывающегося в результате выбора команды Tools Worksheet Op-tions. В окне нужно перейти к вкладке Built-in Variables и установить нуж-ное значение в поле Array Origin (ORIGIN).

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

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

2222..2222.. ННааччааллььнныыйй ииннддеекксс ммаассссиивваа

Примеры, иллюстрирующие вышеперечисленные возможности Math-

Cad, показаны на рис. 22.27.

Page 192: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.22. Начальный индекс массива

Математическое программное обеспечение. Учебное пособие -192-

Рис. 22.27

2222..2233.. ООппррееддееллееннииее ммаассссиивваа Описанный способ инициализации массивов не единственно возмож-

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

Рис. 22.28

2222..2244.. ВВллоожжеенннныыее ммаассссииввыы

Исключительно мощный инструмент MathCad – вложенные массивы. Идея, положенная в основу при реализации этих объектов, концептуально достаточно проста – это массивы, элементами которых, в свою очередь, яв-

Page 193: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.24. Вложенные массивы

Математическое программное обеспечение. Учебное пособие -193-

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

Рис. 22.29

Пример объявления трех различных массивов а, b и с приведен на рис. 22.29. Эти массивы далее указываются в качестве элементов массива d. Последний, таким образом, является вложенным массивом.

По умолчанию задан режим, при котором в качестве значения вложенного массива отображается только его структура без указания в явном виде элементов. Например, для значения массива d приведено выражение ({3,1}{4,1}{2,2}). Это значит, что массив d состоит из трех элементов, а они, в свою очередь, являются массивами из трех строк и одного столбца (первый элемент), четырех строк и од-ного столбца (второй элемент) и, наконец, двух строк и двух столбцов (третий элемент). Чтобы вложенный массив отображался в явном виде, следует активи-зировать опцию Expand nested arrays, которую можно найти на вкладке Display Options диалогового окна Result Format. Окно, как уже упоминалось, открыва-ется выбором команды Format | Result – см. рис. 22.30.

Page 194: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.24. Вложенные массивы

Математическое программное обеспечение. Учебное пособие -194-

Рис. 22.30 При активизированной опции Expand nested arrays значение массива d

в рабочем листе показано на рис. 22.31.

Рис. 22.31 Доступ к элементам вложенного массива получают так же, как и в слу-

чае обычного: следует указать название вложенного массива и индексы эле-мента – см. рис. 22.32.

Рис. 22.32

Page 195: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.24. Вложенные массивы

Математическое программное обеспечение. Учебное пособие -195-

Если просто указать два индекса, то в качестве значения элемента вло-женного массива в рассматриваемом случае будет возвращен массив – как и должно быть. Однако часто бывает необходимо найти элемент того массива, который сам является элементом вложенного массива. В этом случае после указания индексов, определяющих элемент-массив, указываются также и ин-дексы элемента в структуре выделенного элемент-массива. Последователь-ность ввода командного кода такая: указывается название исходного вло-женного массива, далее переходят в режим ввода индексов (клавиша <[>) и через запятую вводят индексы элемент-массива, а после этого указывают ин-дексы элемента в этом массиве (придется еще раз нажать клавишу <[>). Ин-дексы имеют разный иерархический уровень, т. е. это не четыре указанных через запятую индекса, а индексы для элемента с индексами.

Рис. 22.33

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

2222..2255.. ООппееррааццииии сс ммаассссииввааммии Само собой разумеется, что на объявлении массивов работа не закан-

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

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

Page 196: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.25. Операции с массивами

Математическое программное обеспечение. Учебное пособие -196-

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

Рис. 22.34

Когда число столбцов массива А равно числу строк массива В, можно вычислять их произведение с помощью обычного оператора умножения. В результате получается массив, число строк которого равно числу строк пер-вого массива, а число столбцов – числу столбцов второго. Так, если С = А*В, то элементы массива С вычисляются по формуле jkki

kji BAC ,,, ⋅∑= , а сумма

берется по всем индексам k. Таким образом, операция умножения массивов в MathCadе соответствует правилу умножения матриц.

Помимо оператора умножения при работе с массивами допустим и оператор деления. Правда, в этом случае второй операнд должен быть чис-ленным. В результате каждый элемент первого операнда-массива делится на второй операнд-число. К квадратным матрицам (массив с одинаковым коли-чеством строк и столбцов) применима операция возведения в степень (ком-бинация клавиш <Shift>+<6>). В качестве степени можно указывать любое целое число, в том числе и отрицательное – см. рис. 22.34.

Page 197: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -197-

2222..2266.. ТТррааннссппооннииррооввааннииее ммааттрриицц Как известно, в процессе транспонирования матрицы ее строки и

столбцы меняются местами. В MathCadе транспонирование выполняется ука-занием справа вверху у матрицы символа транспонирования (буква Т). Это выполняется комбинацией клавиш <Ctrl>+<l> или специальной пиктограм-мой, размещенной на палитре Matrix – см. рис. 22.35.

Рис. 22.35 Примеры транспотирования матриц приведены на рис. 22.36.

Рис. 22.36

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

Page 198: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -198-

2222..2277.. ООббрраащщееннииее ммааттрриицц Примеры вычисления обратных матриц представлены на рис. 22.37.

Рис. 22.37 В MathCadе существует возможность вычислять ряд важных характери-

стик матриц, среди которых главной, безусловно, является детерминант (или оп-ределитель) матрицы. Детерминант может быть вычислен только для квадратной матрицы. Для выполнения этой операции достаточно заключить название матри-цы, для которой вычисляется детерминант, в прямые скобки (комбинация кла-виш <Shift>+<\>) – как при вычислении модуля числа. Можно также воспользо-ваться специальной пиктограммой на палитре Matrix – см. рис. 22.38.

Рис. 22.38

Page 199: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -199-

2222..2288.. ВВееккттооррннооее ппррооииззввееддееннииее

Примеры вычисления векторного произведения матриц показаны на рис. 22.39, рис. 22.40.

Рис. 22.39

Рис. 22.40

2222..2299.. ССууммммаа ээллееммееннттоовв ввееккттоорроовв

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

Page 200: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.29. Сумма элементов векторов

Математическое программное обеспечение. Учебное пособие -200-

Рис. 22.41

2222..3300.. ВВыыддееллееннииее ссттрроокк ии ссттооллббццоовв Чтобы выделить из массива (матрицы) столбец, существует специаль-

ный оператор на палитре Matrix – см. рис. 22.42.

Рис. 22.42

а)

б)

Page 201: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.30. Выделение строк и столбцов

Математическое программное обеспечение. Учебное пособие -201-

Рис. 22.43

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

2222..3311.. ППррееооббррааззооввааннииее ммаассссииввоовв

Иногда в процессе работы возникает необходимость изменить размеры

массива. Если для этого к одному массиву следует присоединить другой (возможны несколько способов такого объединения), то применяют специ-альные функции. Рассмотрим процедуры добавления или удаления строк и столбцов массива – см. рис. 22.44, рис. 22,45.

Перед добавлением строк и (или) столбцов в массив (матрицу), следует выделить элемент. Строки будут добавляться сразу под строкой с этим эле-ментом, а столбцы – справа от столбца с выделенным элементом.

Был выделен элемент, стоящий на пересечении первой строки и второ-го столбца. После того как элемент выделен, выбирают команду Insert | Ma-trix. В открывшемся диалоговом окне Insert Matrix в поле Rows указывается число вставляемых строк, а в поле Columns – столбцов. После этого следует щелкнуть на кнопке Insert. В результате из матрицы три на три получится матрица пять на четыре.

Page 202: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.31. Преобразование массивов

Математическое программное обеспечение. Учебное пособие -202-

Рис. 22.44 Если необходимо удалить например один столбец, необходимо в том

же окне установить в Rows – 0 и в Columns – 1 и нажать Delete (удаление) – см. рис. 22.45.

Рис. 22.45

Page 203: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.31. Преобразование массивов

Математическое программное обеспечение. Учебное пособие -203-

Рис. 22.46 В результате получится квадратная матрица четыре на четыре – см. рис. 22.46.

2222..3322.. ФФууннккццииии ддлляя ррааббооттыы сс ммаассссииввааммии

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

2222..3322..11.. ФФууннккцциияя mmaattrriixx(( ))

Если элементы матрицы определяются через индексы, т. е. могут быть

представлены в виде функции от индексов, то для создания матрицы можно вос-пользоваться функцией matrix (). Функция имеет три аргумента: сначала указы-вается число строк и столбцов создаваемой матрицы, после чего название функ-ции от двух аргументов, согласно которой вычисляются элементы матрицы. На-пример, командой matrix (N,M, F) создается матрица из N строк и М столбцов, а ее элементы вычисляются по формуле F (i, j), где i и j – индексы элемента (по умолчанию i = 0,1,2,...,N–1 И j = 0,1,2,...,M–1). Указывается только название функ-ции-аргумента F, ее аргументы не перечисляются. При этом предварительно данная функция должна быть определена как функция двух аргументов. Пример создания матрицы с помощью функции matrix () показан на рис. 22.47.

2222..3322..22.. ФФууннккццииии ssttaacckk(( )) ии aauuggmmeenntt(( ))

Очень часто новая матрица создается путем объединения уже сущест-

вующих матриц разных размеров. Обычно в таких случаях удобны функции stack() и augment(). Аргументами функций указываются объединяемые мат-рицы. Функцией stack() матрицы последовательно добавляются одна к дру-гой снизу, а функцией augment() матрицы объединяются слева направо. Что-бы матрицы можно было указывать аргументами функции stack(), они долж-ны иметь одинаковое число столбцов. Для функции augment() матрицы-

Page 204: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.32. Функции для работы с массивами

Математическое программное обеспечение. Учебное пособие -204-

аргументы должны иметь одинаковое число строк. Количество аргументов в обеих функциях произвольно – см. рис. 22.48.

Рис. 22.47

Рис. 22.48

Page 205: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.32. Функции для работы с массивами

Математическое программное обеспечение. Учебное пособие -205-

2222..3322..33.. ФФууннккцциияя ssuubbmmaattrriixx(( ))

Извлечение подматрицы из некоторой заданной матрицы осуществля-ется с помощью функции submatrix(). В этом случае прибегают к помощи функции submatrix(). У нее пять аргументов. Первым указывается исходная матрица, из которой извлекается подматрица. Два следующих аргумента – это начальная и конечная строки извлекаемой подматрицы из базовой матри-цы, указанной первым аргументом функции submatrix(). Два последних ар-гумента функции – столбцы (начальный и конечный) извлекаемой подматри-цы – см. рис. 22.49.

Рис. 22.49

Помимо этого, в MathCAD есть ряд функций для создания матриц спе-

циальных типов. Соответствующие функции (вместе с аргументами) приве-дены в табл. 22.4.

Page 206: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

22. ПЕРЕМЕННЫЕ И ОСНОВНЫЕ МАТЕМАТИЧЕСКИЕ ОПЕРАЦИИ В MATHCAD 22.32. Функции для работы с массивами

Математическое программное обеспечение. Учебное пособие -206-

Таблица 22.4

Функции и их аргументы Описание

diag(v) Функцией создается диагональная матрица, диагональные элементы которой определяются вектором v

geninv(A) Функцией возвращается левосторонняя обратная матрица к действительной матрице А. Число строк матрицы А должно быть не меньше числа ее столбцов

identity(n) Функцией в качестве результата возвращается единичная матрица ранга n

rref(А) В качестве результата функцией возвращается матрица, по-лучающаяся из действительной матрицы А последователь-ным вычитанием строк

Функции определения размеров массивов приведены в табл.22.5.

Таблица 22.5

Функции и их аргументы Описание

cols(A) Возвращает число столбцов матрицы А last(v) Возвращает индекс последнего элемента вектора v length(v) Возвращает число элементов вектора v rows(A) Возвращает число строк матрицы А

Функции вычисления основных характеристик матриц даны в табл. 22.6.

Таблица 22.6

Функции и их аргументы Описание

rank(A) Возвращает ранг матрицы А tr(M) Возвращает сумму диагональных элементов (след) квад-

ратной матрицы M eigenvals(M) Вычисляет собственные числа квадратной матрицы M. Ре-

зультат представляется в виде вектора eigenvecs(M) Вычисляет нормированные на единицу собственные векто-

ры квадратной матрицы M. Результат возвращается в виде матрицы. Собственные векторы формируют столбики этой матрицы. Соответствие между собственными векторами и собственными числами устанавливается по строкам

eigenvec(M,z) Результат вызова функции – собственный вектор квадрат-ной матрицы M, соответствующий собственному числу z этой матрицы

Page 207: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -207-

2233.. ППООССТТРРООЕЕННИИЕЕ ДДВВУУММЕЕРРННЫЫХХ ГГРРААФФИИККООВВ ВВ MMAATTHHCCAADD

2233..11.. ССооззддааннииее ддввууммееррнныыхх ггррааффииккоовв

Наиболее просто, безусловно, создаются двумерные графики. Обычно в

этом случае подразумевают отображение в графическом виде зависимости функции одной переменной от ее аргумента. Для вставки в рабочий документ двумерного графика вызывают команду Insert | Graph | X-Y Plot.

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

Необходимо вместо двух основных заполнителей ввести переменную (заполнитель в нижней части будущего графика) и название функции (или выражение), для которой (которого) строится график. Для этого предназна-чен заполнитель в левой части области графика. Функция определяется зара-нее в рабочем документе или это может быть встроенная функция MathCad. В любом случае ее аргументом указывается переменная, введенная вместо заполнителя под нижней горизонтальной рамкой, ограничивающей область графика. На рис. 23.1 в качестве переменной указан х, а функцией, график которой отображается, является синус – соответственно заполнитель слева от рамки графика заменен на выражение sin (x).

Рис. 23.1

Page 208: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.1. Создание двумерных графиков

Математическое программное обеспечение. Учебное пособие -208-

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

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

С одной стороны, то, что границы изменения переменной можно не указывать, удобно. С другой стороны, важно иметь возможность самому оп-ределять не только область изменения переменной, но и область отображе-ния графика (последняя как раз и задается с помощью минимального и мак-симального значений вдоль вертикальной координатной оси). Было бы уди-вительно, если в Mathcad такая возможность не предусматривалась. Более то-го, соответствующие границы задаются исключительно просто. Для этого достаточно выделить график и ввести необходимые численные значения вместо заполнителей, расположенных у углов возле соответствующих коор-динатных осей. Если график уже создан и осуществляется его редактирова-ние, то границы изменения функции вводятся вместо тех численных значе-ний, что на данный момент отображены на графике как граничные значения переменной и функции. Изменим, например, границу с 10 на 15. После вне-сенных изменений график будет выглядеть так, как показано на рис. 23.2.

Рис. 23.2

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

Page 209: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.1. Создание двумерных графиков

Математическое программное обеспечение. Учебное пособие -209-

Рис. 23.3

Сначала определяется функция, равная отношению синуса к его аргу-менту (т. е. f(x) = sin(x)/x), а переменная-аргумент инициализируется со зна-чением-диапазоном. Здесь она изменяется от –9π/2 до 9π/2 с шагом 0,1. Да-лее, при создании графика, помимо функции, для которой строится график, указывается только название переменной, а граничные значения переменной не вводятся. Как несложно заметить, в результате график строится для значе-ний переменной, которые определены при ее инициализации. Однако область отображения вдоль горизонтальной оси несколько превышает необходимый интервал. В данном случае область отображения по горизонтали лежит в пределах от –20 до 20. Граничные значения диапазона изменения перемен-ной, для которого строится график, отображаются под горизонтальной коор-динатной осью при выделении графика – см. рис. 23.3.

2233..22.. ГГррааффииккии ннеессккооллььккиихх ффууннккцциийй

Если необходимо отобразить несколько графиков на одних осях, то

нужно после ввода названия функции и ее аргумента, в левой части области отображения графика нажать клавишу <,> Запятая в результате не появится, но зато внизу под названием уже введенной функции размещается новый

Page 210: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.2. Графики нескольких функций

Математическое программное обеспечение. Учебное пособие -210-

структурный заполнитель, вместо которого и вводится название дополни-тельной функции – см. рис. 23.4.

Рис. 23.4

После ввода выражения или названия функции следует, как обычно, щелкнуть мышью вне области рисунка или нажать клавишу <Enter> – см. рис. 23.5, рис. 23.6.

Рис. 23.5

Page 211: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.2. Графики нескольких функций

Математическое программное обеспечение. Учебное пособие -211-

Рис. 23.6

2233..33.. ННаассттррооййккаа ппааррааммееттрроовв ггррааффииккаа

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

Вносить изменения в настройки параметров графика (или графиков) в документе MathCad можно несколькими способами. Для определенности бу-дем предполагать, что рисунок с необходимым графиком (графиками) уже создан и далее его нужно немного отредактировать. Для этого следует дваж-ды щелкнуть мышью на этом рисунке. В результате откроется диалоговое окно Formatting Currently Selected X-Y Plot – см. рис. 23.7.

Page 212: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.3. Настройка параметров графика

Математическое программное обеспечение. Учебное пособие -212-

Рис. 23.7

Это же окно можно открыть, выбрав команду Format | Graph | X-Y Plot. При этом должен быть выделен редактируемый рисунок. Если нет, то открывшееся окно будет несколько отличаться от описываемого здесь.

Диалоговое окно Formatting Currently Selected X-Y Plot содержит че-тыре вкладки (X-Y Axes, Traces, Labels и Defaults), наиболее важны из пере-численных первые две. На вкладке X-Y Axes выполняются настройки, свя-занные в основном с видом и типом координатной системы, используемой при отображении графиков. Там содержится три раздела: формально эквива-лентные X-Axis и Primary Y Axis (Secondary Y Axis), расположенные в верхней части диалогового окна и содержащие опции настройки основных параметров координатной системы, а также раздел Axis Style в нижней части диалогового окна, в котором выбирается с помощью группы переключателей тип координатной системы. Опции в разделах X-Axis и Primary Y Axis (Sec-ondary Y Axis) абсолютно идентичны, а разница состоит лишь в том, что вы-полняемые настройки применяются к горизонтальной и вертикальной (ос-новной и вспомогательной) координатным осям соответственно. В частно-сти, установив флажок опции Log scale, можно перейти к логарифмической шкале. Это можно делать только в том случае, если значения вдоль оси, для которой применяется логарифмический масштаб, принимают положительные значения.

Опция Grid lines активизируется в том случае, если нужно отобразить координатную сетку.

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

Page 213: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.3. Настройка параметров графика

Математическое программное обеспечение. Учебное пособие -213-

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

В результате вдоль каждой из координатных осей масштабирование осу-ществляется автоматически. Чтобы отключить этот режим, достаточно убрать флажки упомянутых опций. Полезна в практическом плане опция Show mark-ers. По умолчанию она неактивна ни для одной из осей. Если флажок у опции поставить, то появится возможность отображать на графике дополнительные горизонтальные или вертикальные линии. После активизации этой опции для обеих осей при выделении рисунка с графиками появляется по два структурных заполнителя возле каждой из координатных осей – см. рис. 23.8, рис. 23.9.

Рис. 23.8

Наконец, если установлен флажок опции Auto grid, то число меток вдоль координатных осей системой выбирается автоматически. Если флажок опции не установлен, пользователю придется самостоятельно указать в поле Number of grids, на какое число интервалов нужно разбить весь диапазон значений вдоль соответствующей координатной оси.

Раздел Axis Style содержит группу из трех переключателей (Boxed, Crossed и None) и опцию Equal scales. Выбирая один из переключателей, мож-но задать тип координатной системы. Переключатель Boxed выбран по умолча-нию и соответствует координатной системе, когда вся область отображения графики заключена в прямоугольную рамку. Если переключатель установлен в положение Crossed, координатные оси пересекаются в начале координат.

Page 214: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.3. Настройка параметров графика

Математическое программное обеспечение. Учебное пособие -214-

Рис. 23.9

Можно вообще не отображать координатную систему, для чего доста-

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

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

Настройки, относящиеся непосредственно к способу отображения функциональных зависимостей, выполняются на вкладке Traces диалогового окна Formatting Currently Selected X-Y Plot – см. рис. 23.10.

Рис. 23.10

Page 215: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.3. Настройка параметров графика

Математическое программное обеспечение. Учебное пособие -215-

Главный элемент на этой вкладке – список в центральной части диало-гового окна. Элементы списка разбиты на девять колонок, для которых при-водятся названия. В колонке Legend label отображаются метки для легенд графиков, которые одновременно являются и индикаторами графиков функ-ций. По умолчанию они формируются объединением слова trace и порядко-вого номера графика. Всего в списке шестнадцать элементов, а это значит, что одновременно на одном рисунке можно отображать до шестнадцати раз-личных графиков. Следующие две колонки имеют названия Symbol Fre-quency и Symbol. В колонке Symbol указывается тип базового символа, с помощью которого формируются кривые для графиков зависимостей (по умолчанию в этой колонке отображается значение попе), а в поле колонки Symbol Frequency указывается плотность (частота) его использования (ото-бражения на кривой). Размеры символов задаются в полях колонки Symbol Weight. Колонка Line содержит сведения о том, какого характера линия ис-пользуется для отображения графика, а ее толщина устанавливается в полях колонки Line Weight. Для разных графиков используются разные линии. По-скольку линии могут быть всего четырех типов (сплошная, пунктирная, штрихованная и штрихпунктирная), они применяются поочередно и перио-дически. В силу этих причин становится очевидным, что с помощью типа линии можно выделить лишь четыре графика. Если графиков на одном ри-сунке больше четырех, то для них обычно задают еще и разные цвета. Цвет (для данной линии) отображается в колонке с названием Color.

Однако совсем необязательно отображать график (или графики) с по-мощью линий. Способ отображения графической зависимости можно вы-брать в колонке Туре. Наконец, последняя колонка Y-Axis определяет тип вертикальной координатной оси. Под каждой колонкой расположено поле или раскрывающийся список, в которое или из которого соответственно вво-дится или выбирается значение. Между колонками существует взаимосвязь – доступность элементов из раскрывающихся списков значений свойства зави-сит от выбранных значений для прочих свойств.

Название-легенда для графика отображается в той части рисунка, что определяется положением переключателя в разделе Hide legend. Чтобы группа переключателей была доступна, у соответствующей опции должен отсутствовать флажок. Соответствие между расположением легенды и со-стоянием переключателей такое:

• Top-left – слева вверху; • Bottom-left – слева внизу; • Below – внизу; • Top-right – справа вверху; • Bottom-right – справа внизу. Наличие флажка опции Hide arguments приводит к тому, что на ри-

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

Возвращаясь к выбору базового символа, следует отметить, что соот-

Page 216: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.3. Настройка параметров графика

Математическое программное обеспечение. Учебное пособие -216-

ветствующий раскрывающийся список с возможными значениями доступен только в том случае, если значением в колонке Туре является lines, points или stem. Полный список значений, которые можно увидеть в колонке Туре, приведен в табл. 23.1.

Таблица 23.1

Значение Описание lines График зависимости строится с помощью линии: сначала опреде-

ляются базовые точки эскиза графика, после чего они соединяются линиями

points Отображаются только базовые точки эскиза. Точки линиями не со-единяются

error Это значение может применяться только для пар графиков. Причем эти два графика должны следовать один за другим в списке графи-ков вкладки Traces. В этом случае соответствующие базовые точки эскизов графиков соединяются отрезками, такими, как при выделе-нии области ошибки измерений для экспериментальных данных. Ба-зовые точки эскиза каждого отдельного графика при этом линиями не соединяются. При выборе этого значения свойства из колонок Symbol, Line, Line, Weight и Symbol Weight становятся неактивны-ми. Соответствующее значение разумно применять в тех случаях, когда зависимость строится по экспериментальным данным. Один график задает верхнюю границу значений исследуемой величины, а другой – нижнюю

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

step График зависимости отображается в виде непрерывной ступенчатой функции. Свойства в колонках Symbol, Line, Line Weight и Symbol Weight неактивны

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

stem Базовые точки эскиза графика отмечаются символами, выбранными в колонке Symbol. Эти точки соединяются вертикальными линиями с горизонтальной координатной осью. Сами базовые точки линией не соединяются (колонка Line неактивна)

solidbar Зависимость отображается с помощью заполненных прилегающих друг к другу столбиков

В зависимости от решаемых задач выбирается способ графического

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

Page 217: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.3. Настройка параметров графика

Математическое программное обеспечение. Учебное пособие -217-

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

Различные графики можно выделять на рисунке также с помощью ли-ний разной толщины или символов разного размера. Соответствующая на-стройка выполняется в раскрывающихся списках под колонками Line Weight и Symbol Weight. Списки содержат числа от одного до девяти, а также зна-чение р. Числа задают толщину линий или размер символов, р соответствует оптимальной толщине или размеру в один пиксел. Как правило, перечислен-ных средств вполне хватает для однозначной идентификации практически любого числа графиков, вплоть до максимально возможных шестнадцати.

В диалоговом окне Formatting Currently Selected X-Y Plot (рис. 23.11), помимо перечисленных, есть еще две вкладки. Одна из них Labels.

Рис. 23.11

На этой вкладке задается заголовок создаваемого графика, а также над-писи у координатных осей. Заголовок вводится в поле Title. Однако для того чтобы заголовок отображался на рисунке, необходимо установить флажок оп-ции Show Title. Заголовок можно отображать над или под графиком. В первом случае устанавливают переключатель Above, а во втором – Below.

Надпись для оси абсцисс (горизонтальная координатная ось) вводится в поле X-Axis, а для оси ординат (вертикальная координатная ось) – в поле Y-Axis (для вспомогательной оси поле Y2-Axis). Для того чтобы надпись отображалась, необходимо установить флажок опции, размещенной у соот-ветствующего поля.

Четвертая вкладка Defaults диалогового окна Formatting Currently Se-

Page 218: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.3. Настройка параметров графика

Математическое программное обеспечение. Учебное пособие -218-

lected X-Y Plot необходима в двух случаях: если нужно отменить выполнен-ные настройки и перейти к тем, что определены в MathСad по умолчанию, или если выполненные настройки для данного графика следует применять по умолчанию ко всем графикам в рабочем документе. Как выглядит данная вкладка, показано на рис. 23.12.

Рис. 23.12

Вкладка содержит всего два функциональных элемента: кнопку Change to defaults и опцию Use for defaults. Для применения настроек по умолчанию к выбранному графику щелкают на кнопке Change to defaults. Наличие флажка опции Use for defaults приводит к тому, что настройки дан-ного графика принимаются по умолчанию для всех графиков в данном рабо-чем документе.

2233..44.. ССооззддааннииее ттррееххммееррнныыхх ггррааффииккоовв

Задача построения в MathCad трехмерного графика или, если быть бо-

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

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

Page 219: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.4. Создание трехмерных графиков

Математическое программное обеспечение. Учебное пособие -219-

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

особенности. Сначала рассмотрим, как создаются графические поверхности.

2233..44..11.. ССооззддааннииее ппооввееррххннооссттеейй График-поверхность создается для функций, зависящих от двух аргу-

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

Рис. 23.13

Простой и быстрый способ построения графика-поверхности подразу-мевает на первом этапе определение функции двух переменных.

Далее следует выбрать команду Insert | Graph | Surface Plot (или на-жать комбинацию клавиш <Ctrl>+<2>). В результате в рабочую область до-кумента будет вставлена область трехмерного графика-поверхности, содер-жащая три перпендикулярные координатные оси и структурный заполнитель в левом нижнем углу – см. рис. 23.14.

Page 220: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.4. Создание трехмерных графиков

Математическое программное обеспечение. Учебное пособие -220-

Рис. 23.14

Вместо структурного заполнителя следует ввести название (без аргу-ментов!) функции, определенной ранее. После щелчка мышью вне области графика, системой создается соответствующая поверхность – см. рис. 23.15.

Рис. 23.15

Несложно заметить, что область изменения аргументов для отображае-

Page 221: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.4. Создание трехмерных графиков

Математическое программное обеспечение. Учебное пособие -221-

мой функциональной зависимости нигде в явном виде не указывалась. Пред-лагаемый системой по умолчанию диапазон значений, для которого строится зависимость, можно изменить уже после создания графика. Для этого выпол-няется двойной щелчок в области графика и в открывшемся диалоговом окне 3-D Plot Format переходят к вкладке QuickPlot Data.

Рис. 23.16

Рис. 23.17

На рис. 23.16 показано, как будет выглядеть созданный ранее график, если его строить в диапазоне изменения переменных от –10 до 10 при 50 уз-ловых точках по каждой из осей.

Page 222: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.4. Создание трехмерных графиков

Математическое программное обеспечение. Учебное пособие -222-

В разделе Coordinate System вкладки QuickPlot Data размещена груп-па переключателей на три позиции, с помощью которой выбирается тип ко-ординатной системы: декартова (положение переключателя Cartesian), сфе-рическая (положение Spherical) или цилиндрическая (положение Cylindrical) – см. рис. 23.17. Вкладка QuickPlot Data может сама состоять из нескольких (для каждой поверхности) вкладок. В рассмотренном примере строилась одна поверхность, поэтому описанные поля и переключатели раз-мещены на единой вкладке.

2233..44..22.. ООссннооввнныыее ннаассттррооййккии ттррееххммееррннооггоо ггррааффииккаа

Добиться желаемого вида для трехмерного графика можно, выполнив

некоторые настройки на вкладках диалогового окна 3-D Plot Format. Диало-говое окно, открытое на вкладке General, показано на рис. 23.18.

Рис. 23.18 В разделе View на этой вкладке размещены четыре поля: Rotation, Tilt,

Twist и Zoom. В трех полях Rotation, Tilt и Twist указываются углы поворо-тов системы координат при отображении, а в поле Zoom вводится коэффици-ент масштабирования (он может быть и больше единицы). Ориентация сис-темы определяется, фактически, углами Эйлера. В табл. 23.2 более детально описан способ определения этих углов.

В разделе Axes Style задается способ отображения координатных осей. Раздел состоит из переключателя на три положения и опции Equal Scales. Флажок опции устанавливается в том случае, если нужно, чтобы масштаб вдоль всех координатных осей был единым. Установив переключатель в по-ложение: Perimeter, можно перейти в режим, при котором координатные оси отображаются на переднем плане в области рисунка. По умолчанию пере-ключатель установлен в положение Corner. В этом случае координатные оси

Page 223: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

23. ПОСТРОЕНИЕ ДВУМЕРНЫХ ГРАФИКОВ В MATHCAD 23.4. Создание трехмерных графиков

Математическое программное обеспечение. Учебное пособие -223-

пересекаются в углу, в начале системы координат. Чтобы не отображать ко-ординатные оси совсем, переключатель устанавливают в положение None.

Таблица 23.2

Поле для ввода угла Описание

Rotation Угол поворота системы координат относительно неподвижной координатной системы вокруг оси г. Значением может быть число в диапазоне от –360 до 360°

Tilt Угол поворота вокруг оси х системы координат, получающейся после поворота вокруг оси г на угол, указанный в поле Rotation. Значением может быть число в диапазоне от 0 до 180°

Twist Угол поворота вокруг оси z системы координат, получающейся сначала поворотом вокруг оси z неподвижной системы (угол по-ворота указан в поле Rotation) и последующим поворотом во-круг новой оси х (угол этого поворота указан в поле Tilt). Значе-нием может быть число в диапазоне от –360 до 360°

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

Вкладка в нижней части диалогового окна 3-D Plot Format, открытого на вкладке General, содержит группу переключателей Display As. Пере-клключатель может находиться в одном из шести положений, и в каждом случае будет задаваться определенный тип графика.

Page 224: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -224-

2244.. ЗЗААДДААННИИЕЕ ССООББССТТВВЕЕННННЫЫХХ ФФУУННККЦЦИИЙЙ ИИ ППРРООГГРРААММММИИРРООВВААННИИЕЕ ВВ MMAATTHHCCAADD

2244..11.. ССооббссттввеенннныыее ффууннккццииии вв MMaatthhCCaadd Практические возможности любого математического приложения оп-

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

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

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

Рис. 24.1

Page 225: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.1. Собственные функции в MathCad

Математическое программное обеспечение. Учебное пособие -225-

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

Рис. 24.2

Рис. 24.3

Page 226: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.1. Собственные функции в MathCad

Математическое программное обеспечение. Учебное пособие -226-

Выйти из ситуации несложно. Для этого перед определением функции нужно ввести команду присваивания значения переменной – см. рис. 24.3.

2244..22.. ООссннооввыы ппррооггррааммммиирроовваанниияя вв MMaatthhccaadd

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

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

Рис. 24.4

На палитре Programming представлено десять пиктограмм для ввода различных инструкций – см. рис. 24.4. Кратко каждая пиктограмма описана в табл. 24.1.

Таблица 24.1

Пикто-грамма

Инструкция или оператор

Комбинация клавиш Комментарий

Оператор созда-ния подпрограм-мы или добавле-ния новой строки программы Add Line

<]> Программа реализуется в специ-альном модуле, который техни-чески выделяется утолщенной вертикальной линией. Пикто-грамма служит для создания та-кой структуры (т. е. линии с за-полнителями) или добавления новых структурных заполнителей

Инструкция ус-ловного операто-ра if

<Shift>+<]> Особенностью программы яв-ляется наличие точек ветвления алгоритма, которые реализуют-ся обычно с помощью услов-ных операторов. Пиктограмму используют при создании таких операторов

Page 227: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.2. Основы программирования в Mathcad

Математическое программное обеспечение. Учебное пособие -227-

Окончание табл. 24.1

Пикто-грамма

Инструкция или оператор

Комбинация клавиш Комментарий

Инструкция опе-ратора цикла for

<Ctrl>+<Shift>+<'> С помощью пиктограммы в ра-бочий документ добавляется структура оператора цикла с указанием диапазона изменения индексной переменой

Инструкция опе-ратора прерыва-ния break

<Ctrl>+<Shift>+<[> Вставка оператора завершения программы. Оператор обычно применяется вместе с условны-ми операторами и позволяет за-вершить выполнение программы

Инструкция опе-ратора возвраще-ния результата return

<Ctrt>+<Shift>+<\> В качестве результата програм-мой возвращается значение пе-ременной, указанной последней командой в программном моду-ле. В некоторых случаях удобнее бывает оператор возвращения результата, который позволяет возвращать результат в процессе выполнения программы

Оператор ло-кального при-сваивания ←

<Shift>+<[> Оператор присваивания в про-граммном модуле

Инструкция otherwise

<Ctri>+<Shift>+<]> Инструкция условного опера-тора, необходимая для опреде-ления последовательности дей-ствий (команд), выполняемых при невыполнении условия в условном операторе

Инструкция опе-ратора цикла while

<Ctrl>+<]> Вставка в рабочий документ структуры оператора цикла с инструкцией условия продол-жения итерационного процесса

Инструкция опе-ратора перехода к следующей итерации continue

<Ctrl>+<[> Оператор прерывания текущей итерации и перехода к следую-щей. Часто используется вместе с условным оператором и по-зволяет пропускать некоторые итерации в операторе цикла

Инструкция опе-ратора отслежи-вания ошибок on error

<Ctrl>+<'> С помощью этого оператора можно отслеживать ошибки, возникающие в процессе расче-та выражений и возвращать в этом случае, вместо ошибки, предопределенное значение

Page 228: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.2. Основы программирования в Mathcad

Математическое программное обеспечение. Учебное пособие -228-

Каждая программа в рабочем документе MathCad реализуется в виде отдельного блока или модуля. Структура этого блока вставляется в рабочий документ щелчком на пиктограмме Add Line на палитре Programming или нажатием клавиши <]>.

Рис. 24.5 Вместо структурных заполнителей вводятся инструкции (команды)

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

Для удаления лишнего структурного заполнителя достаточно выделить его и нажать клавишу <Delete>. Обычно программой возвращается значение (хотя и не обязательно). Этот результат к концу выполнения программы, как правило, записан в качестве значения некоторой переменной, указываемой в последней команде программы (рис. 24.5). Следует также иметь в виду, что в теле программы используется оператор локального присваивания, который имеет вид левонаправленной стрелки и вводится с помощью панели инстру-ментов Programming или нажатием комбинации клавиш <Shift>+<[>.

Например, возведем число 3 в квадрат.

Рис. 24.6

Page 229: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.2. Основы программирования в Mathcad

Математическое программное обеспечение. Учебное пособие -229-

Программа состоит из трех команд-инструкций. Первой инструкцией локальной переменной i в качестве значения присваивается число 3. Второй командой эта переменная возводится в квадрат (после этого значение пере-менной i равно 9). Наконец, третья команда состоит только из названия ло-кальной переменной, и это именно тот результат, который возвращается про-граммой (т. е. 9). Для того чтобы увидеть результат выполнения программы, программный блок следует выделить (линиями редактирования) и нажать клавишу <=>, т. е. ввести оператор равенства – см. рис. 24.6.

2244..33.. ЛЛооггииччеессккииее ооппееррааттооррыы Логические операторы необходимы в основном для сравнения выраже-

ний. Их полный набор можно увидеть на палитре Boolean см. – рис. 24.7.

Рис. 24.7

Назначение пиктограмм палитры Boolean приведено в табл. 24.2.

Таблице 24.2

Пикто-грамма

Оператор Комбинация клавиш

Комментарий

Логическое равенство

<Ctrl>+<=> Оператор имеет два операнда (бинарный оператор) и использу-ется в операциях логического сравнения. Если равенство верно, в качестве значения возвращается 1, в противном случае – 0

Строгое логи-ческое неравен-ство меньше

<Shift>+<,> Бинарный оператор (имеет два операнда). Если левый операнд меньше правого, в качестве зна-чения возвращается 1, в против-ном случае – 0

Строгое логи-ческое неравен-ство больше

<Shift>+<.> Оператор имеет два операнда. Ес-ли правый операнд меньше лево-го, в качестве значения возвраща-ется 1, в противном случае – 0

Page 230: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.3. Логические операторы

Математическое программное обеспечение. Учебное пособие -230-

Окончание табл. 24.2

Пикто-грамма

Оператор Комбинация клавиш

Комментарий

Нестрогое ло-гическое нера-венство меньше либо равно

<Ctrl>+<9> Бинарный оператор. Если левый операнд не больше правого, в ка-честве значения возвращается 1, в противном случае – 0

Нестрогое ло-гическое нера-венство больше либо равно

<Ctrl>+<0> У оператора два операнда. Значе-ние 1 возвращается, если правый операнд не больше левого опе-ранда. Если это не так, возвраща-ется 0

Логическое неравенство не равно

<Ctrl>+<3> Бинарный оператор. В качестве результата возвращается 1 для разных операндов и 0 для одина-ковых

Логическое от-рицание НЕ

<Ctrl>+<Shift>+<1> Унарный оператор (имеет один операнд). В качестве результата возвращается 1, если операнд ра-вен 0. В противном случае воз-вращается 0

Логическое И <Ctrl>+<Shift>+<7> Бинарный оператор. В качестве значения возвращается 0, если хо-тя бы один из двух операндов ра-вен 0. Во всех остальных случаях возвращается 1

Логическое ИЛИ

<Ctrl>+<Shift>+<6> Бинарный оператор. Значением является 0, если оба операнда равны 0. Во всех остальных слу-чаях возвращается 1

Логическое исключающее ИЛИ

<Ctrl>+<Shift>+<5> Бинарный оператор. Единица воз-вращается в качестве результата в случае, если оба операнда раз-личны и один из них при этом ра-вен 0. Во всех прочих ситуациях возвращается 0

2244..44.. УУссллооввнныыйй ооппееррааттоорр

Главной отличительной чертой условного оператора является инструк-ция if, справа и слева от которой размещаются два структурных заполнителя. В правом заполнителе указывается проверяемое условие, а в левом – вычис-ляемое выражение. Обычно определяется также выражение (или оператор), вычисляемое (или выполняемый) при невыполнении условия в условном операторе. Альтернативное действие указывается вместе с инструкцией oth-

Page 231: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.4. Условный оператор

Математическое программное обеспечение. Учебное пособие -231-

erwise. Выполняемый оператор вводится вместо заполнителя слева от инст-рукции – см. рис. 24.8.

Рис. 24.8

В программном блоке проверяется условие, которое состоит в том, что переменная х меньше нуля. Если это так, то в качестве результата возвраща-ется 0, в противном случае – 1 (значение, указанное слева от инструкции oth-erwise). Проверить результат выполнения программного блока можно, указав после него знак равенства. Предварительно, правда, необходимо определить значение переменной х.

Пример вызова созданной функции, которая возвращает два значения: 0 при отрицательном аргументе и 1 – в противном случае, см. рис. 24.9.

Рис. 24.9

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

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

Page 232: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.4. Условный оператор

Математическое программное обеспечение. Учебное пособие -232-

Рис. 24.10

В соответствующем программном блоке определяется функция одного аргумента, которая может принимать три значения: –1 при отрицательном аргументе, 1 – при положительном и 0, если аргумент функции равен нулю. Программный блок реализуется с помощью двух условных операторов. Пер-вым оператором проверяется, меньше ли нуля аргумент функции, и если это так, в качестве результата возвращается значение –1. Далее проверяется ус-ловие, положителен ли аргумент функции. В этом случае возвращается еди-ница. Перед инструкцией otherwise указано нулевое значение. Поэтому если не выполняется ни одно из двух проверяемых условий (т. е. аргумент функ-ции не является ни положительным, ни отрицательным и, следовательно, ра-вен нулю), в качестве значения возвращается нуль. Таким образом, если пе-ред инструкцией otherwise следует несколько условных операторов, то опе-ратор, соответствующий этой инструкции, выполняется только в случае, если не выполнено ни одно из условий в условных операторах.

Условный оператор допускается и без инструкции otherwise. Ситуация, когда некоторое действие следует выполнить только при выполнении (или невы-полнении) определенного условия, встречается на практике достаточно часто.

2244..55.. ККууссооччнноо--ннееппррееррыыввннааяя ффууннккцциияя В этом случае искомая функция может записываться через достаточно

простые элементарные функции, однако, в зависимости от диапазона, в кото-рый попадает аргумент, формулы, определяющие ее значение, разные – см. рис. 24.11.

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

Page 233: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.5. Кусочно-непрерывная функция

Математическое программное обеспечение. Учебное пособие -233-

Рис. 24.11

Программа реализуется по следующему алгоритму: сначала проверяет-ся условие х > 0, т. е. больше ли нуля аргумент функции. Если это так, то да-лее проверяется условие х < 2. При верном втором условии значение функ-ции равно ее аргументу, т. е. х. Таким образом, если аргумент функции попа-дает в интервал от 0 до 2, то функция задается линейной зависимостью. В си-туации, когда второе условие не выполняется (но выполняется первое), функция определяется зависимостью 4/х. Именно такое выражение указано вместе с инструкцией otherwise в блоке второго, внутреннего условного опе-ратора. Эта формула, следовательно, соответствует значениям аргумента, большим либо равным двум. Наконец, если не выполнено условие первого, внешнего условного оператора, значение функции вычисляется по формуле sin(x). Разумеется, существует много способов проверки нескольких условий, в том числе с помощью вложенных условных операторов.

2244..66.. ВВллоожжеенннныыее ооппееррааттооррыы Разницу между последовательным размещением условных операторов и

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

тельных условных оператора. В первом аргумент функции сравнивается с числом 5. Если аргумент не меньше этого числа, в качестве значения функ-ции возвращается 3. Вторым оператором проверяется условие, состоящее в том, что аргумент функции меньше либо равен 1. В этом случае возвращает-ся значение 1. При невыполнении ни одного из условий в условных операто-рах значение функции равно 2. Ниже под описанием функции на рис. 24.12 приведены примеры ее вызова. В правой части документа описана функция Т2 (). В теле блока описания этой функции в первом операторе аргумент сравнивается с единицей. Если он строго больше единицы, выполняется дру-

Page 234: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.6. Вложенные операторы

Математическое программное обеспечение. Учебное пособие -234-

гой условный оператор. В соответствии с этим вложенным оператором для аргументов функции, меньших 5, в качестве значения возвращается число 2, если это не так, то число 3. Наконец, для значений аргумента функции, не превышающего 1, значение функции равно 1 (команда у инструкции other-wise для внешнего оператора). Сразу под блоком программы приведены при-меры вызова функции Т2 (). Несложно заметить, что оба программных блока фактически описывают одну и ту же зависимость: для значений аргумента, не превышающих 1, значение функции равно 1; если аргумент функции ле-жит в интервале от 1 до 5, функция принимает значение 2; при аргументе, принимающем значение от 5 и более, в качестве результата возвращается число 3. Разница между функциями Т1 () и Т2 () состоит лишь в способе реа-лизации такой зависимости. В частности, условие второго условного опера-тора в функции Т1 () проверяется всегда, вне зависимости от того, выполнено или нет условие первого условного оператора. Напротив, в функции Т2 () ус-ловие второго вложенного условного оператора проверяется только в том случае, если выполнено условие первого оператора. При написании неболь-ших программных блоков такая разница обычно мало сказывается на конеч-ном результате. Однако когда программа достаточно большая или в процессе ее реализации предполагается выполнить существенное число итераций, та-кие нюансы следует принимать во внимание, поскольку при этом важно не только корректно составить алгоритм (последовательность команд), но и реализовать наиболее оптимальные схемы.

Рис. 24.12

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

Page 235: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.6. Вложенные операторы

Математическое программное обеспечение. Учебное пособие -235-

Нулевое значение, соответственно, интерпретируется как FALSE. Поэтому в условных операторах в качестве условия допустимы не только логические операторы, но и обычные арифметические выражения.

2244..77.. ААррииффммееттииччеессккооее ввыырраажжееннииее вв ууссллооввииии

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

лен на рис. 24.13.

Рис. 24.13

В приведенном документе описывается функция, которая возвращает ре-зультат, равный единице, деленной на разность аргумента функции и единицы. Эта функция, очевидно, определена для любого аргумента, за исключением единицы. При таком аргументе функцией в качестве результата возвращается текстовая строка "infinity". Соответствующий программный код реализуется с помощью всего одного условного оператора. В качестве проверяемого условия, при выполнении которого значением является упомянутая текстовая строка, указано арифметическое выражение (разность аргумента функции и единицы, т. е. выражение в знаменателе при вычислении значения функции). Точнее, это выражение является аргументом логического оператора отрицания. Если это выражение равно нулю, результатом вызова функции должна быть текстовая строка. Нулевое значение, как отмечалось ранее, интерпретируется как логиче-ское значение FALSE, поэтому возникает ситуация, будто условие в условном операторе не выполнялось. Поскольку выражение является аргументом логиче-ского оператора отрицания, то при нулевом выражении результат всей логиче-ской операции равен TRUE (В противном случае – FALSE). Поэтому слева от ин-струкции if условного оператора указана текстовая строка, возвращаемая функ-цией в качестве результата в точке разрыва. Для всех прочих значений аргумен-та результат вызова функции вычисляется по формуле, указанной слева от ин-струкции otherwise. Разумеется, можно было, например, просто записать в ус-ловном операторе в качестве условия упомянутое выражение (без оператора от-

Page 236: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD

24.7. Арифметическое выражение в условии

Математическое программное обеспечение. Учебное пособие -236-

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

2244..88.. ООппееррааттооррыы ццииккллоовв

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

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

2244..88..11.. ССууммммаа ккввааддррааттоовв

Фрагмент документа с кодом процедуры для вычисления суммы квад-

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

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

Page 237: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.8. Операторы циклов

Математическое программное обеспечение. Учебное пособие -237-

Рис. 24.14

Нередко встречается инструкция continue, которая служит указанием для выхода из цикла. Точнее, после этой инструкции с помощью ключевого слова if указывают условие, при котором выполнение цикла прекращается.

2244..88..22.. ССууммммаа ккввааддррааттоовв сс ооггррааннииччееннииеемм Разместим в рассматривавшемся ранее операторе цикла команду con-

tinue if i > 10 – см. рис. 24.15.

Рис. 24.15

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

Операторы цикла в MathCad организуются также с помощью инструк-ции while. Цикл продолжается до тех пор, пока выполняется условие, ука-

Page 238: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.8. Операторы циклов

Математическое программное обеспечение. Учебное пособие -238-

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

Процедура вычисления суммы квадратов натуральных чисел на основе инструкции while показана на рис. 24.16.

Рис. 24.16

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

2244..88..33.. ИИссппооллььззооввааннииее ииннссттррууккццииии bbrreeaakk Как и ранее, при работе с инструкцией while можно пропускать неко-

торые итерации или вообще преждевременно завершать выполнение про-граммного кода – см. рис. 24.17.

Page 239: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.8. Операторы циклов

Математическое программное обеспечение. Учебное пособие -239-

Рис. 24.17

После команды увеличения индексной переменной добавлена инструк-ция break и условный оператор. В условном операторе проверяется, превы-шает ли индексная переменная значение 10. Если это так, то выполнение процедуры прекращается. Здесь легко прослеживается главное отличие в ра-боте инструкций continue и break: если в первом случае пропускается соот-ветствующая итерация, то во втором – завершается работа.

2244..99.. РРееккууррссиияя Под рекурсией в общем случае подразумевают ситуацию, когда в теле

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

Как иллюстрацию к использованию рекурсии рассмотрим процедуру вычисления двойного факториала – произведения чисел "через один", т. е. для четной границы это произведение всех четных чисел, начиная с 2, а для нечетной границы – нечетных, начиная с 1.

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

Page 240: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

24. ЗАДАНИЕ СОБСТВЕННЫХ ФУНКЦИЙ И ПРОГРАММИРОВАНИЕ В MATHCAD 24.9. Рекурсия

Математическое программное обеспечение. Учебное пособие -240-

сии вызывать (с уменьшением аргумента с шагом 2) сама себя до тех пор, пока аргументом не станет число, не большее 2, т. е. 2 или 1. Наличие при каждом рекурсивном вызове процедуры множителя обеспечивает корректное вычис-ление двойного факториала. Подтверждением тому служат примеры, приве-денные внизу под блоком описания процедуры – см. рис. 24.18.

Рис. 24.18

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

Page 241: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -241-

2255.. РРЕЕШШЕЕННИИЕЕ ССИИССТТЕЕММ УУРРААВВННЕЕННИИЙЙ ИИ ННЕЕРРААВВЕЕННССТТВВ ВВ MMAATTHHCCAADD

2255..11.. РРеешшееннииее ууррааввннеенниийй ии ссииссттеемм В данном параграфе кратко рассматриваются функции и методы, кото-

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

Для решения уравнений предназначена функция root(). Первым аргу-ментом указывается функциональная зависимость, которая должна обра-щаться в нуль, а вторым – переменная, относительно которой решается урав-нение. Например, вызов команды root (f (х) ,х) приведет к решению уравне-ния f(x) = 0 относительно переменной х. Иногда корень уравнения следует искать на каком-то определенном интервале значений переменной. В этом случае у функции root () указываются еще два дополнительных аргумента – границы диапазона, на котором ищутся решения. Так, если решение упомя-нутого уравнения следует искать на диапазоне значений переменной х от а до b, то соответствующая команда будет иметь вид root (f (x), x, a, b). Причем если два последних аргумента функции root () не указаны, то для поиска ре-шения уравнения предварительной переменной, относительно которой это уравнение решается, следует присвоить начальное значение. Чем ближе оно окажется к искомому корню уравнения, тем эффективнее будет проходить процесс вычисления этого корня – см. рис. 25.1.

Отдельный и довольно часто встречающийся класс выражений состав-ляют полиномы. Искать корни полинома можно с помощью функции poly-roots(). Аргументом последней указывается вектор-столбец коэффициентов полинома (первый элемент соответствует нулевой степени переменной поли-нома, второй элемент – первой степени и т. д.) – см. рис. 25.2.

Системы линейных уравнений решаются посредством функции lsolve(), которая имеет два аргумента: первый аргумент является матрицей коэффи-циентов системы уравнений, а второй – вектор-столбцом правых частей этих уравнений.

Page 242: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

25. РЕШЕНИЕ СИСТЕМ УРАВНЕНИЙ И НЕРАВЕНСТВ В MATHCAD 25.1. Решение уравнений и систем

Математическое программное обеспечение. Учебное пособие -242-

Рис. 25.1

Рис. 25.2

Page 243: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

25. РЕШЕНИЕ СИСТЕМ УРАВНЕНИЙ И НЕРАВЕНСТВ В MATHCAD

11

Математическое программное обеспечение. Учебное пособие -243-

2255..22.. РРеешшееннииее ннееллииннееййнноойй ссииссттееммыы

Обычно системы нелинейных уравнений решают с помощью функции Find (). Ее аргументами указываются переменные, относительно которых реша-ется система. Ссылки на саму систему в аргументах функции нет, поэтому ее определяют непосредственно перед обращением к функции Find (). Другими словами, сначала записывается система уравнений, а уже после этого вызывает-ся функция Find () с соответствующими аргументами – см. рис. 25.3.

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

Относительно ввода уравнений нужно сделать одно важное замечание. Оно касается способа ввода знака равенства. Здесь необходим оператор так называемого логического равенства – он вводится нажатием комбинации клавиш <Ctrl>+<=>. Можно также воспользоваться пиктограммой на па-литре Boolean – см. рис. 25.4.

Рис. 25.3

Page 244: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

25. РЕШЕНИЕ СИСТЕМ УРАВНЕНИЙ И НЕРАВЕНСТВ В MATHCAD 25.2. Решение нелинейной системы

Математическое программное обеспечение. Учебное пособие -244-

Рис. 25.4 После того как система уравнений задана, вызывается функция Find (), а

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

Page 245: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -245-

2266.. ААННААЛЛИИТТИИЧЧЕЕССККИИЕЕ ВВЫЫККЛЛААДДККИИ ВВ MMAATTHHCCAADD В MathCad существуют три основных способа организации символь-

ных выкладок: с помощью команд через символьное меню Symbolics и соот-ветствующие подменю; с помощью панели инструментов Symbolic и с по-мощью процедур пользователя.

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

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

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

На кафедре САПР Политехнического института СФУ под руково-дством заведующего кафедрой доктора технических наук профессора С. А. Бронова ведутся работы по развитию использования универсальных математических программ, в том числе символьных процессоров, в научных исследованиях и учебном процессе.

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

Процедура на рис. 26.2. позволяет сформировать матрицу с элемента-ми, представляющими собой одну и ту же функцию с разными аргументами. В данном случае в качестве аргумента использовался угол θ, а задаваемая функция – косинус. Это позволяет заполнять большие матрицы соответст-вующими функциями в автоматическом режиме. Данная процедура исполь-зуется, в частности, для задания матриц косинусоидальных индуктивностей в моделях электрических двигателей. Для трёхфазного асинхронного двигателя необходимо задать 6 × 6 = 36 элементов с собственными амплитудами и а р-гументами (фазами).

Page 246: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

26. АНАЛИТИЧЕСКИЕ ВЫКЛАДКИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -246-

MForm N M, A,( )

zj k, Aj k,←

k 1 M..∈for

j 1 N..∈for

z

:=

Входные данные: N – число строк формируемой матрицы; M – число столбцов формируемой матрицы; A – символ для обозначения элементов формируемой матрицы

Число строк: N 3:= Число столбцов: M 4:= I MForm N M, a,( )

a1 1,

a2 1,

a3 1,

a1 2,

a2 2,

a3 2,

a1 3,

a2 3,

a3 3,

a1 4,

a2 4,

a3 4,

→:=I

а) формирование символьной матрицы

VForm N A,( )

zj Aj←

j 1 N..∈for

z

:=

Входные данные: N – размерность формируемого вектора; A – символ для обозначения элементов формируемого вектора

Размер вектора: N 3:=

X VForm N x,( )

x1

x2

x3

→:=X

б) формирование символьного вектора

MSim A( ) N cols A( )←

Ak j, Aj k,←

k j N..∈for

j 1 N..∈for

A

:=

Входные данные: A – исходная квадратная матрица

Исходная матрица:

D

d1 1,

d2 1,

d3 1,

d4 1,

d1 2,

d2 2,

d3 2,

d4 2,

d1 3,

d2 3,

d3 3,

d4 3,

d1 4,

d2 4,

d3 4,

d4 4,

:=

d

Dsim MSim D( )

d1 1,

d1 2,

d1 3,

d1 4,

d1 2,

d2 2,

d2 3,

d2 4,

d1 3,

d2 3,

d3 3,

d3 4,

d1 4,

d2 4,

d3 4,

d4 4,

→:=Dsim

в) симметрирование матрицы

Dsim MSim D( )

d1 1,

d1 2,

d1 3,

d1 4,

d1 2,

d2 2,

d2 3,

d2 4,

d1 3,

d2 3,

d3 3,

d3 4,

d1 4,

d2 4,

d3 4,

d4 4,

→:=Dsim

Входные данные: N – число строк и столбцов формируемой квадратной матрицы; V – символ или число, размещаемое по диагонали формируемой матрицы

Размер матрицы: N 3:= Ds MDiagSim N W,( )

W

0

0

0

W

0

0

0

W

→:=

г) формирование диагональной матрицы

Рис. 26.1

Page 247: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

26. АНАЛИТИЧЕСКИЕ ВЫКЛАДКИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -247-

MFun N M, A, F, θ,( )

zk j, Ak j, F θ k j,( )⋅←

k 1 M..∈for

j 1 N..∈for

z

:=

Входные данные: N – число строк формируемой матрицы; M – число столбцов формируемой мат-рицы; A – символ или число, размещаемое пе-ред функцией; F – функция; X – аргумент функции.

Fun MFun 4 3, U, cos, θ,( )

U1 1, cos θ1 1,( )⋅

U2 1, cos θ2 1,( )⋅

U3 1, cos θ3 1,( )⋅

U1 2, cos θ1 2,( )⋅

U2 2, cos θ2 2,( )⋅

U3 2, cos θ3 2,( )⋅

U1 3, cos θ1 3,( )⋅

U2 3, cos θ2 3,( )⋅

U3 3, cos θ3 3,( )⋅

U1 4, cos θ1 4,( )⋅

U2 4, cos θ2 4,( )⋅

U3 4, cos θ3 4,( )⋅

→:=Fun

Рис. 26.2

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

MDif A x,( ) M cols A x( )( )←

N rows A x( )( )←

zj k, xA x( ) j ,

dd

k 1 M..∈for

j 1 N..∈for

z

:=

Входные данные: A – матрица с подлежащими дифференцирова-нию элементами; X – аргумент функции.

Исходная матрица с функция-ми:

GT x( )

sin x( )

sin x2( )0

17

exp 2 x⋅( )

x3

cos x( )

x

tan 2 x⋅( )

:=

dGT MDif GT t,( )

cos t( )

2 cos t2( ) t⋅⋅

0

0

2 e2 t⋅⋅

3 t2⋅

sin t( )−

1

2 t

12⋅

2 2 tan 2 t⋅( )2⋅+

→:=dGT

Рис. 26.3

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

Page 248: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

26. АНАЛИТИЧЕСКИЕ ВЫКЛАДКИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -248-

MElimin A Nv,( ) NA rows A v( )( )←

vk 0←

k 1 Nv..∈for

vj 1←

Zk j, A v( ) k←

k 1 NA..∈for

j 1 Nv..∈for

Z

:=

Входные данные: A – матрица-столбец с линейными уравнениями; Nv – размерность вектора.

Исходная система уравнений:

R x( )

a1.1 x1⋅ a1.2 x2⋅+

a2.2 x2⋅ a2.3 x3⋅+

a3.1 x1⋅ a3.3 x3⋅+

:=

a1.1

Вектор: x

x1

x2

x3

:=

x

AX MElimin R 3,( )

a1.1

0

a3.1

a1.2

a2.2

0

0

a2.3

a3.3

→:=AX

Рис. 26.4

Это бывает необходимо, когда вследствие символьных преобразований получена система линейных алгебраических уравнений вида

=

+++

+++

+++

mnnmmm

nn

nn

u

uu

xaxaxa

xaxaxaxaxaxa

2

1

,22,11,

,222,211,2

,122,111,1

,

которую целесообразно далее перевести в матричную форму вида uxA =⋅ :

=

mnnmmm

n

n

u

uu

x

xx

aaa

aaaaaa

2

1

2

1

,2,1,

,22,21,2

,12,11,1

.

Так, в исходном виде уравнения записаны в строку и вся система пред-

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

Процедура на рис. 26.5 позволяет сформировать матрицу, отражающую

Page 249: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

26. АНАЛИТИЧЕСКИЕ ВЫКЛАДКИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -249-

структуру исходной матрицы – с нулевыми элементами на месте нулевых элементов исходной матрицы и ненулевыми элементами (заданной цифрой, например, единицей или символом). Такие матриц часто оказываются необ-ходимы при анализе структур, для перехода от матриц к графам и т. п. Слож-ность реализации этой процедуры связана с тем, что символьный процессор не умеет определять наличие или отсутствие символа, т. е. операция сравне-ния ?0x = имеет смысл только для чисел.

WS W h, b,( ) N rows W( )←

M cols W( )←

Zk j,

W k ,W k j, +

j 1 M..∈for

k 1 N..∈for

Z

:=

Входные данные: W – матрица; h – вспомогательный параметр, задаваемый при вводе в виде любого символа; b – число или символ, помещаемый вместо нену-левых элементов.

Исходная матрица с нулевыми и ненулевыми элементами:

W

R1 1,

R2 1,

0

0

R2 2,

R3 2,

R1 3,

0

R3 3,

:=

R

SW WS W h, L,( ) substitute h 0=,

L

L

0

0

L

L

L

0

L

→:=

SW WS W h, 1,( ) substitute h 0=,

1

1

0

0

1

1

1

0

1

→:=

Рис. 26.5

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

bhZ

Z⋅

+,

где Z – любое содержание ячейки (символ); h и b – вспомогательные сим-вольные переменные, из которых b может быть также числом.

Если ячейка была пуста, то рассматриваемое выражение будет иметь вид

00

0=⋅

+b

h,

так как умножение на нуль символьный процессор "понимает" правильно и вы-даёт нуль. Если бы в знаменателе не было символьной переменной h, то полу-чилось бы деление нуля на нуль, что символьный процессор понять не может.

Если ячейка не пуста, то в этом месте формируется выражение

Page 250: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

26. АНАЛИТИЧЕСКИЕ ВЫКЛАДКИ В MATHCAD

Математическое программное обеспечение. Учебное пособие -250-

bhZ

Z⋅

+,

которое затем обрабатывается в командном режиме с подстановкой значения

0=h , что означает:

bbbZZb

ZZ

=⋅=⋅=⋅+

10

,

и оно превращается в число или символ, заданный через параметр b.

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

Page 251: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -251-

ЗЗААККЛЛЮЮЧЧЕЕННИИЕЕ При помощи пакетов MatLab и MathCad можно решить значительный

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

Основа MatLab – это работа с матрицами, так что даже вычисления со скалярами реализуются как операции с матрицами размера 1X1. Матричные команды написаны особенно тщательно, и всюду, где это возможно, целесо-образно пользоваться матричными (векторными) операциями, что ускоряет вычисления и предупреждает возможные ошибки. MatLab в первую очередь предназначен для численного исследования, а потому оперирует в основном с числовой информацией.

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

Page 252: files.lib.sfu-kras.rufiles.lib.sfu-kras.ru/ebibl/umkd/182/u_course.pdf · Постановка задачи и начало создания ... Основы программирования

Математическое программное обеспечение. Учебное пособие -252-

ББИИББЛЛИИООГГРРААФФИИЧЧЕЕССККИИЙЙ ССППИИССООКК 1. Ануфриев, И. Е. Самоучитель MatLab 5.3/6.x / И. Е. Ануфриев. –

СПб: БХВ-Петербург, 2002. – 736 с. 2. Васильев, А. Н. MathСad 13 на примерах / А. Н. Васильев. – СПб:

БХВ-Петербург, 2006. – 528 с. 3. Дьяконов, В. MathСad: учеб. курс / В. Дьяконов. – СПб: Питер,

2001. – 624 с. 4. Дьяконов, В. П. Система MathCad: справ. / В. П. Дьяконов. – М.: Ра-

дио и связь, 1993. – 128 с. 5. Дьяконов, В. Simulink 4: спец. справ. / В. Дьяконов. – СПб: Питер,

2002. – 528 с. 6. Лазарев, Ю. Моделирование процессов и систем в MatLab: учеб.

курс / Ю. Лазарев. – СПб: Питер; Киев: Издательская группа BHV, 2005. – 512 с.

7. Макаров, Е. Г. Инженерные расчёты в MathCad: учеб. курс / Е. Г. Макаров. – СПб: Питер, 2005. – 448 с.

8. Медведев, В. С. Control System Toolbox. MatLab 5 для студентов / В. С. Медведев, В. Г. Потемкин. – М.: ДИАЛОГ-МИФИ, 1999. – 287 с.

9. Мэтьюз, Дж. Г. Численные методы. Использование MatLab: пер. с англ. / Дж. Г. Мэтьюз, К. Д. Финк. – 3-е изд. – М.: Издательский дом "Виль-ямс", 2001. – 720 с.

10. Кривелёв, А. В. Основы компьютерной математики с использовани-ем системы MatLab / А. В. Кривелёв. – М.: Лекс-Книга, 2005. – 496 с.

11. Лазарев, Ю. Ф. MatLab 5.x / Ю. Ф. Лазарев. – К.: Издательская группа BHV, 2000. – 384 с.

12. Леоненков, А. Нечёткое моделирование в среде MatLab и fuzzyTECH / А. Леоненков. – СПб.: БХВ-Петербург, 2003. – 736 с.

13. Очков, В. Ф. Физические и экономические величины в MathСad и Maple / В. Ф. Очков. – М.: Финансы и статистика, 2002. – 192 с.

14. Ракитин, В. И. Руководство по методам вычислений и приложения MathСad / В. И. Ракитин. – М.: ФИЗМАТЛИТ, 2005. – 264 с.

15. Черняк, А. А. Высшая математика на базе MathСad. Общий курс / А. А. Черняк, Ж. А. Черняк, Ю. А. Доманова. – СПб.: БХВ-Петербург, 2004. – 608 с.

16. Программные средства: MathСad 13 (или выше), MatLab 7 (или выше).