Книга
Книга
В.Дьяконов
MAPLE 7: УЧЕБНЫЙ КУРС
СПб.: Питер, 2002. — 672 с.
Известный специалист по системам компьютерной математики профессор В. Дьяконов предлагает в этой книге обширный учебный курс по новейшей версии одной из самых мощных и популярных систем компьютерной алгебры — Maple 7. Эта система позволяет решать в диалоговом режиме огромное число математических задач, от простых расчетов и задач численного моделирования до сложнейших аналитических преобразований и вычислений. В книге описан интерфейс программы, ее обширные возможности по выполнению самых разнообразных вычислений, мощные графические средства визуализации полученных результатов, удобный язык для задания команд в интерактивном и отложенном режимах, а также многочисленные пакеты, расширяющие и без того богатые возможности системы. Впервые описана поддержка языков MathML и XML, широко используемых в Интернете, и целый ряд новых пакетов. Особое внимание уделено визуализации результатов вычислений, а также полноте описания работы с программой.
Краткое содержание
Урок 1. Первое знакомство с системой Maple 733
Урок 2. Информационная поддержка Maple79
Урок 3. Работа с файлами и документами131
Урок 4. Управление с интерфейсом пользователя171
Урок 5. Типы данных системы Maple 7199
Урок 6. Встроенные операторы и функции223
Урок 7. Типовые средства программирования.254
Урок 8. Математический анализ287
Урок 9. Анализ функций и полиномов333
Урок 10. Символьные (аналитические) операции359
Урок 11. Типовые средства построения графиков385
Урок 12. Расширенные средства графики425
Урок 13. Решение дифференциальных уравнений481
Урок 14. Математические пакеты513
Урок 15. Пакеты линейной алгебры и функциональных систем547
Урок 16. Обзор пакетов специального назначения571
Урок 17. Примеры решения научно-технических задач619
Заключение653
Алфавитный указатель655
Список литературы664
Содержание
242830242830Предисловие
24
28
30
24
28
30
Структура книги
Некоторые замечания
Благодарности и адреса31
От издательства32
Урок 1. Первое знакомство с системой Maple 733
Краткая характеристика систем класса Maple34
Назначение и место систем Maple34
Версии систем класса Maple35
Об ошибках в символьных вычислениях36
Ядро и пакеты Maple 737
Языки системы Maple 738
Ориентация систем Maple39
Возможности предшествующей версии Maple 639
Новые возможности системы Maple 741
Установка системы Maple 7 на ПК42
Аппаратные требования42
Установка системы Maple 743
Запуск системы49
Интерфейс системы Maple 750
Обзор интерфейса Maple 750
Меню системы Maple 751
Палитры ввода математических символов52
Всплывающие подсказки52
Основы работы с Maple 7 в диалоговом режиме53
Начальные навыки работы53
Понятие о функциях и операторах54
Обработка и индикация ошибок56
Управление с помощью мыши58
Примеры задания функции пользователя и построения ее58
графика
Пример построения трехмерного графика поверхности59
Управление формой представления документа60
Форматы математических выражений60
Представление входных выражений в математической форме60
Символьные вычисления62
Простой пример символьных вычислений62
Типовые символьные вычисления63
Разбухание результатов символьных вычислений65
Пример решения системы линейных уравнений66
Повышение эффективности работы с системой68
Работа с панелью инструментов68
Работа с контекстной панелью69
Контекстная панель инструментов для двумерных графиков71
Контекстная панель инструментов для трехмерных графиков72
Строка состояния73
Горячие клавиши системы73
Доступ к справкам и примерам76
Что нового мы узнали?78
Урок 2. Информационная поддержка Maple79
Работа со справочной системой80
Меню Help80
Просмотр введения81
Оперативная справка по контексту82
Обучающий курс New User's Tour83
Новые возможности Maple 7.86
Правила работы со справочной системой87
Предметный поиск88
Предметный поиск с полным обзором текста справки89
История работы со справкой89
Модернизация справочной базы данных90
Удаление разделов базы данных.90
Включение всплывающих подсказок91
Регистрация системы91
Вывод окна с информацией о системе91
Информационная поддержка Maple 7 в Интернете92
Значение Интернета в информационной поддержке92
Подключение к Интернет-серверу фирмы Waterloo Maple92
Начальная страница корпорации Waterloo Maple93
Главная страница корпорации Waterloo Maple94
Информация о продукции96
Информация о покупке Maple 797
Информация о поддержке программных продуктов98
Информация о публикациях99
Центр применений системы Maple102
Основная страница Центра применений Maple102
Информация о примерах103
Просмотр примеров с помощью браузера105
Загрузка примеров на диск106
Просмотр примеров в среде Maple108
Новые инструменты Maple Powertools109
Студенческий центр111
Дополнительные информационные ресурсы в Интернете113
Регистрация Maple 7113
Контактные адреса корпорации Waterloo Maple114
Обзор источников информационной поддержки114
Модернизация системы115
Галерея графики116
Библиотека Share Library117
Поддержка MathML 2.0119
Выход на web-страницу поддержки MathML.119
Загрузка средств поддержки MathML120
Тестирование MathML Viewer122
Использование средств MathML123
Maple на российских сайтах123
Maple на сайте exponenta.ru123
Российский сайт Донецкого университета124
Maple в карманном компьютере127
Что нового мы узнали?130
Урок 3. Работа с файлами и документами131
Операции с файлами132
Меню File133
Создание нового документа134
Открытие документа135
Сохранение документа136
Запись документа на диск с переименованием136
Экспорт файлов137
Закрытие документа138
Запись настроек программы138
Выход из системы138
Печать документов139
Команда Print139
Предварительный просмотр страниц140
Установка параметров принтера141
Редактирование документов141
Меню Edit141
Отмена последней операции143
Восстановление отмененной операции143
Перенос объекта в буфер обмена143
Копирование объекта в буфер144
Перенос и копирование объектов перетаскиванием145
Копирование в буфер обмена в формате Maple-текста145
Вставка из буфера обмена в документ146
Вставка из буфера обмена в формате Maple-текста148
Уничтожение выделенного абзаца148
Выделение всех объектов149
Поиск подстроки и ее замена149
Включение и выключение режима ввода текста150
Операции разделения и объединения объектов150
Исполнение выделенных ячеек или всего документа150
Удаление ячеек вывода151
Операции вставки152
Меню Insert152
Ввод текста153
Ввод выражений в стандартной форме153
Ввод выражений.154
Ввод математических выражений154
Вставка исполняемых ячеек до и после курсора154
Электронные таблицы154
Вставка электронных таблиц154
Меню Spreadsheet155
Работа с электронными таблицами157
Вставка текстовой области159
Вставка кнопки секции159
Вставка кнопки подсекции160
Вставка гиперссылки160
Операции форматирования162
Обзор операций меню Format162
Установка стилей163
Форматирование абзацев165
Форматирование символов165
Операция внедрения ячеек в секцию.166
Операция выведения ячеек из секции166
Работа с объектами167
Вставка объектов167
Редактирование вставленного объекта169
Что нового мы узнали?170
Урок 4. Управление интерфейсом пользователя171
Управление видом интерфейса и документа172
Меню View172
Управление показом панели инструментов (Toolbar)173
Управление показом контекстной панели174
Управление показом строки состояния174
Вывод палитр математических символов174
Установка масштаба отображения документа175
Установка закладок176
Управление показом компонентов документа178
Управление показом непечатаемых символов179
Управление показом областей секций180
Понятие о секциях и подсекциях180
Управление показом областей секций181
Управление показом областей ячеек (Show Group Ranges)182
Закрытие всех секций182
Раскрытие всех секций184
Работа с параметрами Maple 7184
Меню Options184
Управление выводом.185
Установка режима вставки новой ячейки185
Задание браузера186
Параметры экспорта документов186
Установка параметров представления строк ввода186
Установка параметров вывода187
Контроль за предполагаемыми переменными (Assumed188
Variables)
Управление показом графиков189
Управление построением двумерных графиков.190
Управление построением трехмерных графиков191
Работа с окнами191
Меню Window191
Каскадное расположение окон193
Расположение окон мозаикой193
Горизонтальное расположение окон194
Вертикальное расположение окон (Vertical)194
Приведение в порядок значков свернутых окон196
Закрытие всех окон одновременно.197
Закрытие всех окон справочной системы197
Список открытых документов198
Что нового мы узнали?198
Урок 5. Типы данных системы Maple 7199
Maple-язык и его синтаксис200
Знаки алфавита200
Зарезервированные слова201
Выражения и основы работы с ними202
Выражения и их ввод202
Оценивание выражений204
Последовательности выражений205
Вывод выражений206
Простые типы данных207
Числа и числовые константы207
Комплексные числа209
Контроль за числами210
Преобразования чисел с разным основанием211
Данные множественного типа211
Наборы (множества)211
Списки выражений212
Массивы, векторы и матрицы212
Таблицы213
Строки и комментарии215
Строковые данные215
Неисполняемые программные комментарии215
Константы215
Числовые константы215
Строковые константы216
Встроенные в ядро константы216
Идентификация констант216
Защита идентификаторов констант217
Переменные217
Типы переменных217
Идентификаторы (имена) переменных218
Присваивание переменным значений219
Отмена операции присваивания и команда restart219
Придание переменным статуса предполагаемых221
Что нового мы узнали?222
Урок 6. Встроенные операторы и функции223
Операторы и операнды224
Виды операторов224
Бинарные (инфиксные) операторы224
Операторы объединения, пересечения и исключения для227
множеств
Унарные арифметические операторы227
Оператор % и команда history228
Логические операторы229
Специальные типы операторов230
Функциональные операторы230
Нейтральные операторы, определяемые пользователем231
Определение операторов с помощью оператора define231
Математические функции233
Понятие о встроенных функциях233
Некоторые целочисленные функции и факториал234
Тригонометрические функции234
Обратные тригонометрические функции236
' Гиперболические функции237
Обратные гиперболические функции238
Степенные и логарифмические функции238
Функции с элементами сравнения240
Функции комплексного аргумента241
Специальные математические функции241
Функции для работы с векторами и матрицами245
Элементы векторов и матриц245
Преобразование списков в векторы и матрицы246
Операции с векторами246
Операции над матрицами с численными элементами247
Символьные операции с матрицами248
Функции для работы со строковыми данными250
Контроль типа строковых данных250
Интерактивный ввод строк251
Обработка строк251
Преобразование строки в математическое выражение252
Что нового мы узнали?252
Урок 7. Типовые средства программирования254
Функции пользователя255
Упрощенные функции пользователя255
Основной способ задания функции пользователя255
Графическая визуализация результатов выполнения
функций пользователя256
Импликативные функции256
Условные выражения258
Циклы for и while259
Операторы пропуска и прерывания262
Процедуры и процедуры-функции263
Простейшие процедуры263
Оператор возврата значения RETURN264
Статус переменных в процедурах и циклах264
Объявления переменных локальными с помощью оператора local 265
Объявления переменных глобальными с помощью слова global266
Функция вывода сообщений об ошибках ERROR266
Ключи в процедурах267
Общая форма задания процедуры270
Средства контроля и отладки процедур270
Работа с отладчиком программ273
Операции ввода и вывода275
Считывание и запись программных модулей275
Создание своей библиотеки процедур276
Запись и считывание данных279
Вывод в специальных форматах280
Вывод в формате LaTeX280
Генерация кодов на языке Фортран280
Генерация кодов на языке С281
Дополнительные возможности Maple-языка282
Переназначение определений282
Модули283
Макросы284
Внешние вызовы284
Вызов внешних процедур, написанных на языке С285
Что нового мы узнали?286
Урок 8. Математический анализ287
Вычисление сумм последовательностей288
Основные формулы для вычисления сумм последовательностей 288
Последовательности с заданным числом членов288
Суммы с заданным пределом289
Суммы бесконечных последовательностей289
Сумма от перемены мест слагаемых меняется!290
Двойные суммы291
Вычисление произведений членов последовательностей291
Основные формулы для произведения членов291
последовательностей
Примеры вычисления произведений членов292
последовательностей
От перемены места сомножителей произведение меняется!293
Вычисление производных293
Функции Дифференцирования выражений diff и Diff293
Дифференциальный оператор D295
Вычисление интегралов296
Вычисление неопределенных интегралов296
Конвертирование и преобразование интегралов.298
Вычисление определенных интегралов299
Каверзные интегралы и визуализация результатов300
интегрирования
Интегралы с переменными пределами интегрирования308
Вычисление кратных интегралов309
Вычисление пределов функций310
Разложение функций в ряды311
Разложение в степенной ряд311
Разложение в ряды Тейлора и Маклорена312
Пример документа — разложение синуса в ряд314
Решение уравнений и неравенств316
Основная функция solve316
Решение одиночных нелинейных уравнений317
Решение тригонометрических уравнений319
Решение систем линейных уравнений320
Решение систем нелинейных и трансцендентных уравнений323
Функция RootOf324
Решение уравнений со специальными функциями324
Решение неравенств325
Решение функциональных уравнений327
Решение уравнений с линейными операторами327
Решение в численном виде — функция fsolve328
Решение рекуррентных уравнений — rsolve329
Решение уравнений в целочисленном виде — isolve331
Функция msolve331
Что нового мы узнали?332
Урок 9. Анализ функций и полиномов333
Анализ функций334
Поиск экстремумов функций334
Поиск минимумов и максимумов аналитических функций335
Анализ функций на непрерывность337
Определение точек нарушения непрерывности338
Нахождение сингулярных точек функции.339
Вычисление асимптотических и иных разложений339
Пример анализа сложной функции340
Функции из отдельных кусков342
Создание функций из отдельных кусков.342
Простые примеры применения функции piecewise343
Работа с функциями piecewise343
Операции с полиномами345
Определение полиномов345
Выделение коэффициентов полиномов345
Оценка коэффициентов полинома по степеням346
Оценка степеней полинома347
Разложение полинома на множители348
Разложение полинома по степеням349
Вычисление корней полинома349
Основные операции с полиномами350
Операции над степенными многочленами с отрицательными352
степенями
Интерполяция и аппроксимация функциональных зависимостей353
Интерполяция, экстраполяция и аппроксимация353
Аппроксимация аналитически заданных функций354
Полиномиальная интерполяция табличных данных355
Сплайн-интерполяция и аппроксимация356
Прямое и обратное Z-преобразования358
Что нового мы узнали?358
Урок 10. Символьные (аналитические) операции359
Основные операции с выражениями360
Работа с частями выражений360
Работа с уровнями вложенности выражений361
Преобразование выражений в тождественные формы361
Преобразование выражений363
Контроль за типами объектов364
Подстановки366
Функциональные преобразования подвыражений366
Функциональные преобразования элементов списков366
Подстановки с помощью функций add, mul и seq367
Подстановки с помощью функций subs и subsop368
Функции сортировки и селекции369
Упрощение выражений372
Расширение выражений374
Факторизация выражений375
Разложение целых и рациональных чисел375
Разложение выражений (факторизация)376
Комплектование по степеням377
Программирование символьных операций378
Реализация итераций Ньютона в символьном виде.378
Вычисление интеграла по известной формуле380
Вложенные процедуры и интегрирование по частям382
Что нового мы узнали?384
Урок 11. Типовые средства построения графиков385
Введение в построение двумерных графиков386
Основные возможности двумерной графики386
Основная функция построения двумерных графиков — plot387
Задание координатных систем двумерных графиков389
Управление стилем и цветом линий двумерных графиков390
Основные типы двумерных графиков391
Графики одной функции391
Управление диапазоном изменения переменной и значения392
функции
Графики функций в неограниченном диапазоне393
Графики функций с разрывами393
Графики нескольких функций на одном рисунке394
Графики функций, построенные точками396
Графики функций, заданных своими именами398
Графики функций с ординатами, заданными вектором399
Графики функций, заданных процедурами399
Графики функций, заданных функциональными операторами400
Графики функций, заданных параметрически400
Графики функций в полярной системе координат401
Построение трехмерных графиков402
Особенности применения функции plot3d402
Параметры функции plot3d403
Выбор и пересчет координат трехмерных графиков404
Построение поверхностей407
Построение поверхностей с разными стилями407
Построение фигур в различных системах координат.408
3D-графики параметрически заданных поверхностей411
Масштабирование трехмерных фигур и изменение углов их411
обзора
Занимательные фигуры — трехмерные графики414
Быстрое построение графиков416
Двумерная быстрая графика — smartplot416
Быстрое построение трехмерных графиков smartplot3d417
Специальные приемы построения трехмерных графиков418
Трехмерный график как графический объект.418
Задание трехмерных графиков в виде процедур419
Построение ряда трехмерных фигур на одном графике419
Двумерные и трехмерные графические структуры420
Понятие о графических структурах420
Графические структуры двумерной графики421
Графические структуры трехмерной графики422
Что нового мы узнали?424
Урок 12. Расширенные средства графики425
Пакет plots426
Общая характеристика пакета plots426
Построение графиков функций в двумерной полярной системе428
координат
Построение двумерных графиков типа implicitplot428
Построение графиков линиями равного уровня429
График плотности432
Двумерный график векторного поля433
Трехмерный график типа implicitplotSd433
Графики в разных системах координат433
Графики типа трехмерного поля из векторов434
Контурные трехмерные графики436
Техника визуализации сложных пространственных фигур437
Техника анимирования графиков441
Анимация двумерных графиков441
Проигрыватель анимированной графики442
Построение двумерных анимированных графиков443
Построение трехмерных анимационных графиков445
Анимация с помощью параметра insequence446
Графика пакета plottools446
Примитивы пакета plottools446
Примеры применения двумерных примитивов пакета plottools447
Примеры применения трехмерных примитивов пакета plottools449
Построение графиков из множества фигур451
Анимация двумерной графики в пакете plottools453
Анимация трехмерной графики в пакете plottools453
Расширенные средства графической визуализации455
Построение ряда графиков, расположенных по горизонтали455
Визуализация решения систем линейных уравнений456
Визуализация решения систем неравенств457
Конформные отображения на комплексной плоскости458
Графическое представление содержимого матрицы459
Визуализация ньютоновских итераций в комплексной области460
Визуализация корней случайных полиномов461
Визуализация поверхностей со многими экстремумами462
Визуализация построения касательной и перпендикуляра463
Визуализация вычисления определенных интегралов.465
Визуализация теоремы Пифагора466
Визуализация дифференциальных параметров кривых466
Иллюстрация итерационного решения уравнения f(x) = x468
Построение сложных фигур в полярной системе координат470
Построение сложных фигур импликативной графики473
Расширенная техника анимации473
Анимирование разложения импульса в ряд Фурье473
Наблюдение кадров анимации поверхности477
Новая функция для построения стрелок arrow.478
Построение сложных комбинированных графиков.479
Что нового мы узнали?480
Урок 13. Решение дифференциальных уравнений481
Основные средства решения дифференциальных уравнений482
Основная функция dsolve482
Решение ОДУ первого порядка483
Решение дифференциальных уравнений второго порядка484
Решение систем дифференциальных уравнений485
Численное решение дифференциальных уравнений486
Дифференциальные уравнение с кусочными функциями488
Структура неявного представления дифференциальных уравнений —490
DESol
Инструментальный пакет решения дифференциальных уравнений491
DEtools
Средства пакета DEtools491
Основные функции пакета DEtools492
Графическое представление решений дифференциальных уравнений496
Применение функции odeplot пакета plots496
Функция DEplot из пакета DEtools499
Функция DEplot3d из пакета DEtools501
Функция PDEplot пакета DEtools.502
Графическая функция dfieldplot504
Графическая функция phaseportrait505
Углубленный анализ дифференциальных уравнений507
Задачи углубленного анализа ДУ507
Проверка ДУ на автономность508
Контроль уровня вывода решения ДУ508
Приближенное полиномиальное решение ДУ510
Что нового мы узнали?511
Урок 14. Математические пакеты513
Назначение пакетов расширения и обращение к ним514
Обзор пакетов514
Новые пакеты Maple 7515
Получение информации о конкретном пакете516
Пакеты функций комбинаторики517
Пакет combinat517
Пакет combstruct520
Пакет финансово-экономических функций finance521
Пакет ортогональных многочленов orthopoly523
Пакет для работы с суммами sumtools526
Состав пакета sumtools526
Работа с пакетом sumtools526
Пакет реализации степенных разложений powseries527
Состав пакета powseries527
Примеры применения пакета powseries528
Пакет числовой аппроксимации numapprox529
Состав пакета numapprox529
Разложение функции в ряд Лорана530
Паде-аппроксимация аналитических функций530
Паде-аппроксимация с полиномами Чебышева532
Наилучшая минимаксная аппроксимация532
Наилучшая минимаксная аппроксимация по алгоритму Ремеза532
Другие функции пакета533
Пакет интегральных преобразований inttrans534
Общая характеристика пакета534
Прямое и обратное преобразования Лапласа534
Прямое и обратное преобразования Фурье535
Вычисление косинусного и синусного интегралов Фурье536
Интегральное преобразование Ханкеля536
Прямое и обратное преобразования Гильберта.537
Интегральное преобразование Меллина538
Функция addtable538
Пакет приближения кривых CurveFitting539
Общая характеристика пакета CurveFitting539
Функция вычисления В-сплайнов Bspline539
Функция построения В-сплайновых кривых BsplineCurve540
Функция реализации метода наименьших квадратов LeastSquares 541
Функция полиномиальной аппроксимации541
PolynomialInterpolation
Функция рациональной аппроксимации RadonalInterpolation542
Функция вычисления обычных сплайнов Spline542
Функция аппроксимации непрерывными дробями543
ThieleInterpolation
Пакет для работы с полиномами PolynomialTools543
Обзор возможностей пакета PolynomialTools543
Функции для работы с полиномами543
Функции сортировки полиномов545
Функции преобразования полиномов в PDE и обратно546
Что нового мы узнали?546
Урок 15. Пакеты линейной алгебры и функциональных систем 547
Основные определения линейной алгебры548
Пакет решения задач линейной алгебры linalg550
Состав пакета linalg550
Интерактивный ввод матриц554
Основные функции для задания векторов и матриц555
Функции для работы с векторами и матрицами555
Решение систем линейных уравнений558
Пакет линейной алгебры с алгоритмами NAG LinearAlgebra559
Назначение и загрузка пакета LinearAlgebra.559
Примеры матричных операций с применением пакета561
LinearAlgebra
Интеграция Maple 7 с MATLAB563
Краткие сведения о MATLAB563
Загрузка пакета расширения Matlab564
Типовые матричные операции пакета расширения Matlab564
Выделение сигнала на фоне шумов565
Пакет анализа линейных функциональных систем568
LinearFunctionalSystems
Назначение пакета LinearFunctionalSystems568
Тестовые функции пакета LinearFunctionalSystems568
Функции решения линейных функциональных систем568
Вспомогательные функции.569
Примеры применения пакета LinearFunctionalSystems569
Что нового мы узнали?570
Урок 16. Обзор пакетов специального назначения571
Пакет решения задач линейной оптимизации simplex572
Обзор средств пакета572
Функции maximize и minimize.573
Прочие функции пакета simplex573
Пакет планиметрии geometry575
Набор функций пакета geometry575
Пример применения расчетных функций пакета geometry576
Визуализация геометрических объектов с помощью пакета577
geometry ,
Пакет стереометрии geom3d581
Набор функций пакета geom3d581
Пример применения пакета geom3d582
Пакет для работы с алгебраическими кривыми algcurves583
Примеры применения пакета algcurves583
Построение алгебраических кривых класса knot585
Новая функция Maple 7 plot real curve586
Пакет функций теории графов networks587
Набор функций пакета networks587
Примеры применения пакета networks588
Получение информации о графе592
Пакет статистических расчетов stats592
Характеристика пакета stats592
Генерация случайных чисел с заданным распределением593
Графика статистического пакета stats594
Регрессионный анализ595
Пакет для студентов student598
Функции пакета student598
Функции интегрирования пакета student599
Иллюстративная графика пакета student600
Пакет работы с тензорами tensor601
Пакет Domains.603
Обзор пакетов узкого назначения605
Пакет функций теории чисел numtheory605
Пакет для работы с р-адическими числами padic606
Пакет для работы с гауссовыми целыми числами GaussInt606
Пакет алгебры линейных операторов Ore algebra607
Инструментальный пакет для линейных рекуррентных607
уравнений LREtools
Пакет функций дифференциальных форм difforms607
Пакет для работы с рациональными производящими функциями 607 genfunc
Пакет операций для работы с конечными группами group608
Пакет для работы с симметрией Ли liesymm608
Пакет команд для решения уравнений SolveTools608
Пакет для работы с таблицами Spread608
Пакет генерации кодов codegen609
Пакет создания контекстных меню context609
Пакет организации многопроцессорной работы process609
Новые пакеты системы Maple 7610
Пакет поддержки вычислений с размерными величинами Units 610
Пакет для работы с рядами ортогональных многочленов611
OrthogonalSeries
Пакет поддержки стандарта MathML612
Пакет XMLTools613
Пакет создания внешних программ ExternalCalling614
Пакет линейных операторов LinearOperators615
Пакет для работы со случайными объектами RandomTools.615
Пакет для работы со списками ListTools617
Что нового мы узнали?618
Урок 17. Примеры решения научно-технических задач619
Небольшое введение620
Выбор аппроксимации для сложной функции621
Задание исходной функции и построение ее графика621
Аппроксимации рядом Тейлора622
Паде-аппроксимация623
Аппроксимация полиномами Чебышева624
Аппроксимация Чебышева-Паде625
Минимаксная аппроксимация626
Эффективная оценка рациональных функций627
Сравнение времен вычислений628
Преобразование в код Фортрана или C628
Моделирование физических явлений629
Расчет траектории камня с учетом сопротивления воздуха629
Движение частицы в магнитном поле632
Разделение изотопов633
Моделирование рассеивания альфа-частиц635
Моделирование и расчет электронных схем637
Нужно ли применять Maple для моделирования и расчета637
электронных схем?
Малосигнальный анализ усилителя на полевом транзисторе638
Расчет аналогового фильтра на операционном усилителе642
Проектирование цифрового фильтра644
Моделирование цепи на туннельном диоде648
Применение интеграла Дюамеля для расчета переходных651
процессов
Что нового мы узнали?652
Заключение653
Список литературы664
Алфавитный указатель655
Алфавитный указатель
Символы
%, оператор подстановки последней операции, 228
&, указатель нейтральных операторов, 231
@@, оператор композиции, 225
А
анализ математический, 288
аппаратная арифметика NAG, 561 аппаратные требования, 42
Б
библиотека, 67
бинарные (инфиксные) операторы,
224
блок-матрица, 550
БПФ (быстрое преобразование
Фурье), 565
броузер Интернета, 186
В
ввод
выражений, 54
исходных данных, 60
матриц интерактивный, 554
с помощью палитр ввода, 186
строк интерактивный, 251 визуализация
имшшкативных функций, 257 решения СЛУ с двумя уравнениями, 321
решения СЛУ с тремя уравнениями, 321
функции пользователя, 256
внешние вызовы, 284
возможности
вычислений, 40
вычисления функций, 40
графической визуализации, 41
интерфейса, 39
линейной алгебры, 40 программирования, 41
решения уравнений, 40
системы Maple 6, 39
вставка
гиперссылки на объект, 169
объекта из файла, 169
объекта-рисунка, 168
вывод
непечатаемых символов, 179
панелей интерфейса, 172
управление, 185
выделение сигнала из шума с
помощью БПФ, 566
вызов внешних процедур языка C,
285
выражение
представление, 61
выделение и активизация, 58
уровни вложенности, 361
части, 360
вычисление
интеграла в закрытой форме, 64
интеграла по известной
формуле, 380
производных и интегралов, 64
чисел Фибоначчи, 330
символьные, 58
Г
галерея графики, 116
генерация кодов на языке C, 281
гиперссылка, 160
Д
диагональ, главная, 549
диалог
основные особенности, 53
с системой Maple 7, 53
документ
редактирование, 141
форма представления, 60
З
загрузка библиотеки командой with, 277
задание
векторов и матриц, 555
импликативной функции
пользователя, 257
закладки, 176
запись данных оператором writedata,
279
запуск системы Maple 7, 49
знаки фиксации, 54
И
имя файла, 137
инкапсуляция, 283
интеграл
неопределенный, 296
определенный, 299
от сумм и полиномов, 297
преобразование, 298
с особыми точками, 302
с переменными пределами, 308
интеграция систем Maple 7 и
MATLAB, 564
интегрирование
выбор метода, 298
пределы, 296, 299
произвольные постоянные, 297
функций с синусом, 304
Интернет
Maple на российских сайтах,
123
подключение, 93
страница разработчика Maple 7,
92
интерфейс
графический, 51
пользователя, 51
информация
о модернизации систем Maple, 115
о поддержке программных
продуктов, 98
о продукции фирмы MapleSoft, 96
о публикациях по системам
Maple, 99
исключение оценки выражений, 288
К
клавиши
выделения, 74
горячие (Hot Keys), 73
загрузки, сохранения и печати
документа, 75
задания стиля и режимов ввода, 74
переходов по документу, 75
просмотра документа, 75
удаления, вставки и замены, 74
ключ
arrow, 269
builtin, 269
copyright, 269
remember, 268
trace, 269
ключи, 267
книги электронные, 180
комментарии
программные, 58
текстовые, 60
контроль
типа строковых данных, 250
типов выражений, 364
Л
линейная алгебра, основные понятия,
548
локализация корней уравнений, 329
М
макросы, 284
матрица, 548
блок-диагональная, 550
в целой степени, 549
вырожденная (сингулярная),
548
единичная, 548
идемпотентная, 549
квадратная, 548
комплексно-сопряженная, 550
кососимметричная, 550
ленточная, 549
обратная, 549
определитель, 549
ортогональная, 550
ранг, 549
симметричная, 549
след, 549
Эрмитова, 550
транспонированная, 548
матрицы
L-норма, 550
диагональ, 549
норма, 550
сингулярные значения, 548
собственные значения, 550
собственный вектор, 550
ступенчатая форма, 549
характеристический многочлен, 550
матричная форма записи системы
линейных уравнений, 550
меню
контекстное, 58
системы Maple 7, 51
метод Ньютона решения уравнения
f(x)=0, 378
моделирование шума, 566
модули, 283
Н
наддиагональ, 549
неравенства, 325
несовместимость документов, 135
норма, 550
трехмерного вектора, 550
нуль-матрица, 550
О
обозначения в решениях уравнений,
316
обучающий курс, 83
окна
закрытие, 197
закрытие всех, 197
печати документов, 139
операторы
save, 275
основные понятия, 55
присваивания, 55
равенства, 55
композиционные, 230
логические (булевы), 229
нейтральные, 231
неопределенные, 230
определение, 224
просмотр свойств, 224
работы с множествами, 227
свойства, 232
специальные, 230
типы, 224
унарные, 227
функциональные, 230
прерывания quit, done, stop, 263 операции
векторные и матричные, 556
матричные в пакете Matlab, 564
матричные пакета Li near
Algebra, 561
матричные символьные, 248
просмотра и печати
документов, 134
с буфером обмена, 142
с векторами, 246
с матрицами, 247
создания, записи, экспорта и
закрытия файлов, 133
справочной системы, 80
Exit, 134
ввода ячеек в секцию, 166
переноса формул, 146
опции
задания типов чисел, 362
функции convert, 362
функции solve, 317
отладчик (debugger), 273
очистка сигнала, 567
ошибки
алгоритмические, 36, 56
индикация, 57
семантические, 56
синтаксические, 57
сообщения, 57
П
пакет, 38, 568
LinearAlgebra алгоритмов NAG, 560
Matlab функций системы
MATLAB, 564
linalg, 551
палитры математических символов,
174
панель
инструментов, 68
управление показом, 173 контекстная управление показом, 174
папаметры
функции expand, 374
функции fsolve, 328
функции simplify, 373
переменные
глобальные, 255
объявление, 266
глобальные функции solve, 316
индексированные, 245
локальные, 264
объявление, 265
перемещение маркера ввода, 54
переназначение определений, 282
перестановка
слагаемых, 290
сомножителей, 293
поддиагональ, 549
подстановка
определение, 368
с помощью функций add, mul и
seq, 367
показ элементов документа, 178
последовательность
бесконечная, 289
произведение членов, 291
с заданным пределом, 289
с фиксированным числом членов, 288
предел функции в точке, 310 преобразование
выражений в тождественные
формы, 361
списков в векторы и матрицы, 246
строк в выражения, 252
примеры
создания и применения модуля, 283
операций с матрицами пакета
linalg, 556
работы с линейными функциональными системами, 569
решения СЛУ с двумя
уравнениями, 320
принтеры, 139
присваивание переменной значения
функции, 254
проблема разбухания результатов
вычислений, 65
проверка решения уравнений, 318
производная
высокого порядка, 293
определение, 293
функции двух переменных, 294 процедура
задание, 263
интегрирования по частям, 383
определение, 263
вложенная, 382
общая форма, 270
рекурсивная, 268
процедуры-функции, 263
Р
работа
с отладчиком, 273
со справочной системой, 87
расположение окон
вертикальное, 194
горизонтальное, 194
каскадное, 192
мозаика, 193
расширение выражений, 374
редактирование объекта, 170
редактор документов, 38
решение, 559
квадратного уравнения, 65
кубического уравнения, 65
неполной СЛУ, 323
неравенств, 325
одиночных уравнений, 317 систем линейных уравнений, 558
систем линейных уравнений в пакете LincarAlgebra, 562
СЛУ с помощью функции solve, 320
СЛУ с тремя уравнениями, 321 СЛУ с четырьмя уравнениями, 323
специальных видов уравнений, 329
трансцендентных уравнений, 323
тригонометрических уравнений, 319
уравнений в численном виде, 328
уравнений и неравенств, 316
уравнений с линейными
операторами, 327
уравнений со специальными
функциями, 324 функциональных уравнений, 327
решения
уравнений периодические, 319
русскоязычные надписи в элементах интерфейса, 136
ряды, 311
Маклорена, 313
преобразование, 312
Тейлора, 312, 313
С
свойства модуля, 283
секции
закрытие всех, 183
и подсекции, 180
раскрытие, 184
управление показом, 181
синтаксис, 56
система
справочная, 51, 80
линейных уравнений, 320
создание библиотеки пользователя, 276
сортировка и селекция, 369
список
загруженных документов, 197
последних документов, 134
строк обработка, 251
строка состояния, 73
управление показом, 174
Студенческий центр, 111
сумма последовательности, 288
схема Горнера, 296
У
упрощение выражений, 372
установка
шрифтов, 165
Maple 7, 43
Ф
файлы
библиотек, 115
документов, 132
системы Maple, 132
факторизация, 375
формат
HTML, 137
файлов, 137
форматирование документов, 163
функции
гиперболические, 237
для манипуляции с
выражениями, 360
импликативные, 256
комплексного аргумента, 241
линейной алгебры пакета linalg, 551
линейных функциональных
систем, 568
логарифмические, 238
математические, 233
обратные гиперболические, 238 обратные тригонометрические, 236
пакета LinearAlgebra, 560
пакета Matlab, 564
подстановки subs и subsop, 368
пользователя 254
с отдельным вектором и матрицей, 555
с элементами сравнения, 240
специальные математические,
241
степенные, 238
тригонометрические, 234
целочисленные, 234
элементарные, 233
инертная, 60
как объект, 55
основные понятия, 54
пользователя, 58
Ц
Центр применений Maple, 102
Ч
числа Фибоначчи, 232
Э
экспорт файлов, 137
электронные таблицы
адресация ячеек, 154
вставка шаблона, 155
определение, 154
автоматическое заполнение, 157
ввод данных в ячейку, 157
формулы, 157
Я
Ядро системы, 37
Язык
входной, 38
программирования, 38 реализации, 38
ячейки управление показом, 182
А
А, оператор селекции, 371
About Maple 7, команда, 91 alias, функция переназначения определений, 282
applyop, функция подстановки, 366
Arrange Icons, упорядочение значков окон, 194
Assumed Variables, команда, 188
Auto Save Settings, флажок, 138
B
Bookmarks, команда, 176
break, оператор прерывания, 262
C
Cassiopeia A22T, 127
Character, команда, 166
Clipboard, буфер обмена, 142
Close All Help, команда, 197
Close All, команда, 197
Close, команда, 138
combine, функция объединения степеней, 363
Context Bar, команда, 174 convert, функция преобразования выражений, 361
Copy As Maple Text, команда, 145
Copy, команда, 144
Cut, команда, 143
D
D, дифференциальный оператор, 295 define, оператор определения операторов, 231
Delete, команда, 148
Diff, инертная функция вычисления производных, 293
diff, функция вычисления производных, 293
Drag and Drop, 145
Е
Edit, меню, 141
entermatrix, функция интерактивного ввода матриц, 554
ERROR, функция вывода сообщения
об ошибке, 267
Execute, команда, 150
Execution Group, команда, 154
Exit, команда, 134, 138
expand, функция расширения
выражений, 374
Export, команда, 186
F
Factor, инертная функция
факторизации, 376
factor, функция факторизации, 376
false, константа логическая, 229
File, меню, 133
Find, команда, 149
for, оператор цикла, 259
Format, меню, 163
fsolve, функция решения уравнений в
численном виде, 328
Full Text Search, команда, 89
H
has, функция контроля вложенности, 365
hastype, функция контроля типов
объектов, 365
Help on Context, команда, 82
Help, меню, 80
History, команда, 89
history, функция диалоговых
вычислений, 228
HTML, 137
HyperLink, команда, 160
I
if, оператор условных выражений, 258
ifactor, функция целочисленной
факторизации, 375
Indent, команда, 166
Input Display, команда, 186
Input mode, команда, 150
Insert Mode, команда, 185
Insert Spreadsheet, команда, 154
Insert, меню, 152
Int, инертная функция
интегрирования, 64, 296
int, функция интегрирования, 296
interface, функция управления
выводом, 271
isolve, функция решения
целочисленных уравнений, 331
L
Limit, инертная функция вычисления
предела, 310
limit, функция вычисления предела, 310
M
map и map2, функции подстановки, 366
Maple
интегрированная система, 35
система компьютерной алгебры, 34
Maple 7
запуск, 49
новые возможности, 87
установка, 43
Maple Input, команда, 154
Maple Powertools, инструментальный
пакет, 109
MathML, 119
MathML Viewer, 120
MATLAB, 563
matrix, функция задания матриц, 555
method, параметр указания метода, 375
msolvc, функция решения уравнений по модулю, 331
intaylor, функция taylor для ряда
переменных, 313
N
NAG (Number Algorithm Group), 35, 559
New Features, команда, 86
New User's Tour, команда, 83
New, команда, 134
next, оператор выхода из цикла, 262 notebooks, стиль документов, 132 O
Object, команда, 168, 169
Open, команда, 135
Options, меню, 184
Order, число членов ряда, 312
Outdent, команда, 167
Output Display, команда, 187
P
Paragraph, команда, 159, 165
Paste As Maple Text, команда, 148
Paste, команда, 146
patch-файлы, 115
plot, 191
Plot Display, команда, 189
plot, функция построения 2О- графика, 58
plot3d, функция построения 3D-
графика, 59
Print Preview, команда, 140
Print, команда, 139
print, функция вывода листинга процедуры, 270
Printer Setup, команда, 141
Product, инертная функция произведения, 292
product, функция произведения, 292
R
Redo, команда, 143
Register Maple 7, команда, 91
Remote Output, команда, 151
Remove Topic, команда, 90 remove, функция удаления выражений, 370
Replace Output, команда, 185
RETURN, оператор возврата, 264
RootOf, функция, 324 rsolve, функция решения рекуррентных уравнений, 329
S
Save As, команда, 136
Save Setting, команда, 138
Save to Database, команда, 90
Save, команда, 136
Section, команда, 160
Select All, команда, 149
select, функция селекции, 370
series, функция разложения в ряд, 311
Share Library, 117
showstat, функция просмотра
процедуры, 274
simplify, функция упрощения
выражений, 372
solve, функция решения уравнений и
неравенств, 316
sort, функция сортировки, 369
Split or Join, команды, 150
Spreadsheet, меню, 156
Standard Math Input, команда, 154
Standard Math, команда, 153
Styles, команда, 164
Subsection, команда, 160
Sum, инертная функция
суммирования, 288
sum, функция суммирования, 288
Т
taylor, функция разложения в ряд
Тейлора, 312
Text, команда, 153
Toolbar, команда, 174
Topic Search, команда, 88
true, константа логическая, 229
U
unapply, задание функций
пользователя, 255
Undo, команда, 143
Use system default, флажок, 186
V
vector, функция задания вектора, 555
View, меню, 73, 172
W
Web-сервер фирмы MapleSoft, 81
What's New, команда, 87
whattype, функция контроля типов
выражений, 364
Windows, меню, 192ZZoom Factor, команда, 175Windows, меню, 192ZZoom Factor, команда, 175
Windows, меню, 192
Z
Zoom Factor, команда, 175
Windows, меню, 192
Z
Zoom Factor, команда, 175
while, оператор цикла, 261, 262
WhittakerM, специальная функция,
302
Предисловие
Автор данной книги, как и многие почитатели компьютерных вычислений, прошел долгий путь их реализации: от программируемых микрокалькуляторов до работы на малых и персональных ЭВМ, использующих универсальные языки программирования высокого уровня. Это нашло отражение в его ранних книгах [1-3].
Совсем недавно пользователь ЭВМ, решая даже простые численные задачи, был вынужден осваивать основы программирования и готовить кустарные программы, вряд ли нужные кому-либо еще, кроме их создателя. Между тем возможности компьютеров постоянно росли. Сейчас персональный компьютер (ПК) с микропроцессором класса Pentium II, III или 4 намного превосходит по своим возможностям первые ЭВМ, занимавшие целые комнаты и залы. А скорость вычислений нынешних ПК в сотни раз превосходит скорость вычислений легендарных IBM PC XT и АТ (первых ПК) и вплотную приближается к скорости вычислений суперЭВМ недавнего прошлого.
В связи с этим стал меняться взгляд на назначение компьютера. На первое место вышло применение их для работы с текстовыми процессорами (например, Microsoft Word) и прикладными программными системами для автоматизации офисной деятельности. Увы, при этом многие пользователи стали забывать о том, что ЭВМ изначально создавались для вычислений, а вовсе не для замены ими популярной, но ставшей неудобной пишущей машинки. Развитие мультимедиа привело к бурному применению компьютеров в роли игровых автоматов. В результате главный стимул развития «электронного помощника» создается отнюдь не высокоинтеллектуальными задачами.
Однако времена меняются и вечные ценности, к коим принадлежат разум и образование, вновь возвращаются. В последние годы во всем мире существенно возрос интерес к серьезному применению ПК, в том числе в области математических расчетов. Этому в большой степени способствовала разработка специальных компьютерных математических программных систем, резко снизивших потребность в написании собственных программ при решении математических задач. Первое поколение таких систем [4-10] было ориентировано на операционную систему MS-DOS и появилось, казалось бы, совсем недавно — в начале 90-х гг.
Так или иначе, но компьютерный мир вновь заговорил об «искусственном интеллекте», понимая под этим способность электронной машины выдавать нетриви-
альные решения и обучаться решению новых задач. Интерес к компьютерному моделированию в самых широких областях заметно возрос после шахматных баталий между суперкомпьютером фирмы IBM и бывшим чемпионом мира по шахматам Гарри Каспаровым. Как известно, они завершились триумфальной победой машины — или, точнее говоря, коллективного разума тех, кто создал ее и ее программное обеспечение.
В последние годы показателем интеллектуальной мощи компьютеров, в том числе и персональных, стали уже не программы для игры в шахматы, а новейшие программные системы символьной математики или компьютерной алгебры [1738]. Созданные для проведения символьных преобразований математических выражений, эти системы были доведены до уровня, позволяющего резко облегчить, а подчас и заменить, труд самой почитаемой научной элиты мира — математиков: теоретиков и аналитиков. Уже появились открытия, сделанные с помощью таких систем — но не ими самими! Вряд ли есть хоть один действительно серьезный научный проект, связанный с математикой, где они не применялись бы в деле. Системы символьной математики долгое время были ориентированы на большие компьютеры. С появлением ПК класса IBM PC и Macintosh и с ростом их возможностей эти системы были переработаны под них и доведены до уровня массовых серийных программных систем. Сейчас системы символьной математики (или компьютерной алгебры) выпускаются самого разного «калибра» — от рассчитанной «на всех» системы Mathcad [11-21], поразительно компактной, быстрой и удобной для простых символьных вычислений системы Derive [22-24] и до компьютерных монстров Mathematica [26-28], MATLAB [29-31] и Maple [32-38], имеющих тысячи встроенных и библиотечных функций и изумительные возможности графической визуализации вычислений.
Все эти системы работают на персональных компьютерах, оснащенных популярными операционными системами класса Windows 95/98/NT/2000. Но не только на них — есть версии под операционные системы Linux, Unix, Мас и др. Они давно знакомы пользователям больших компьютеров и даже суперкомпьютеров.
К среднему уровню таких систем относятся интенсивно развиваемые системы класса Mathcad, имеющие (в дополнение к прекрасным средствам числовых вычислений) приобретенное по лицензии у фирмы Waterloo Maple Inc. (создателя систем Maple) ядро символьных вычислений. Ядро системы Maple используется и в другой маститой системе — MATLAB, придавая ей необычные для нее возможности символьной математики.
В данной книге впервые дается достаточно полное описание одной из самых мощных и интеллектуальных систем компьютерной алгебры — Maple под Windows, ее последней реализации — Maple 7. Эта система была создана группой ученых, занимающихся символьными вычислениями (The Symbolic Group), организованной Кейтом Геддом (Keith Geddes) и Гастоном Гонэ (Gaston Gonnet) в 1980 году в университете Waterloo, Канада. Вначале она была реализована на больших компьютерах и прошла долгий путь апробации, вобрав в свое ядро й библиотеки большую часть математических функций и правил их преобразований, выработанных математикой за столетия развития. Есть реализации программы на платформах ПК Macintosh, Unix, Sun и др.
Системам класса Maple посвящены сотни книг. Отметим лишь некоторые из них [39-56], изданные за рубежом. Достаточно полный список (около 400 наименований) книг по системам Maple можно найти на сайте разработчика этой системы — компании Waterloo Maple Software (www.maplesoft.com). Однако книг по системе Maple 7 (за исключением фирменных руководств по ней) на момент сдачи рукописи данной книги в этом списке не было.
Вряд ли эта мощная математическая система, разделяющая претензии на мировое лидерство с системами Mathematica фирмы Wolfram Research Inc., нужна секретарше или даже директору небольшой коммерческой фирмы. Но, несомненно, любая серьезная научная лаборатория или кафедра вуза должны располагать подобной системой, если они всерьез заинтересованы в автоматизации выполнения математических расчетов любой степени сложности. Несмотря на свою направленность на серьезные математические вычисления, системы класса Maple необходимы довольно широкой категории пользователей: студентам и преподавателям вузов, инженерам, аспирантам, научным работникам и даже учащимся математических классов общеобразовательных и специальных школ. Все они найдут в Maple многочисленные достойные возможности для применения.
По мнению автора данной книги, сравнение системы Maple 7 с лидером среди систем компьютерной математики — системой Mathematica 4.1 — непродуктивно. У каждой программы есть свои достоинства и недостатки. А главное — у них есть свои приверженцы, которых бесполезно убеждать, что иная система в чем-то лучше. Это все равно, что сравнивать великих исполнителей джазовой и рок-музыки Луи Амстронга и Би Би Кинга. Все, кто всерьез применяют системы компьютерной математики, должны работать с несколькими системами, ибо только это гарантирует высокий уровень надежности сложных вычислений.
И все же надо отметить, что интерфейс Maple 7 более интуитивно понятен, чем у строгой Mathematica 4.1. Maple 7 на первый взгляд имеет несколько менее мощную графику, но простота управления параметрами и легкость подготовки графических процедур часто позволяет визуализировать решения математических задач с меньшими усилиями, чем при использовании системы Mathematica 4.1. Обе системы в последних реализациях сделали качественный скачок в направлении эффективности решения задач в численном виде, в частности за счет повышения скорости выполнения матричных операций.
Особенно эффективно использование Maple при обучении математике. Высочайший «интеллект» этой системы символьной математики объединяется в ней с прекрасными средствами математического численного моделирования и просто потрясающими возможностями графической визуализации решений. Применение таких систем, как Maple, возможно при преподавании и самообразовании от самых основ до вершин математики.
Практика (да и личный опыт автора) показывает, что самым трудным является первый этап освоения системы. Первое знакомство с программой многих пользователей просто подавляет — убедившись в невероятном множестве возможностей системы и не имея ее систематизированного описания (а оно поставляется в
виде трех книг приличного размера, включая книги учебного характера [39, 40]), многие пользователи помещают систему в архив, где она «пылится» без дела.
Эта книга впервые основательно знакомит читателя с новейшей версией системы Maple — Maple 7 в форме подробного учебного курса. Книга написана на основе ранее изданного учебного курса по системе Maple 6 [37], существенно переработанного и дополненного. Среди новых материалов, появившихся в книге, следует отметить:
полное описание инсталляции системы Maple 7;'
улучшенное описание интерфейса;
обновление материала по информационной поддержке системы, в том числе через Интернет;
адаптация примеров и рисунков к новой версии Maple 7;
устранение замеченных в предыдущем издании [37] неточностей и опечаток;
впервые представленное описание целого ряда новых встроенных математических пакетов системы (CurveFitting, LinearFunctionalSystems, PolynomialTools, OrthogonalSeries, RandomTools и др.);
описание расширенной поддержки Интернета и встроенного пакета XMLTools, который ее обеспечивает;
впервые приведенное описание новейших средств поддержки стандарта MathML и пакета MathML;
описание многочисленных новинок системы Maple 7 в области реализации вычислений и их графической визуализации;
десятки новых примеров применения Maple 7.
Основное внимание в книге уделено обучению основам и приемам эффективной работы с системой Maple 7. На роль всеобъемлющего справочного руководства книга не претендует, хотя во многих случаях способна выполнять роль справочника или руководства пользователя Maple 7. Хотя эта книга одна из самых обширных среди русскоязычных книг, посвященных системе Maple, автор был вынужден ограничить описание ряда важных возможностей программы. Основной акцент в книге сделан на описание возможностей системы в области математических расчетов и интерфейса пользователя. Менее подробно, а порой просто не описаны средства расширения системы и пакеты узкоспециального назначения (электронная база данных по системе Maple 7 дает полное представление о всех свыше 3000 операторов и функций этой системы, большинство из которых используется крайне редко)..1
Хотя книга посвящена вериги Maple 7, большинство материала может использоваться и пользователями предшествующей версии Maple 6. В частности, это достигнуто выделением новых возможностей Maple 7 в отдельные разделы книги. Остальные разделы книги без каких-либо ограничений могут быть отнесены к наиболее распространенной ^версии Maple Maple 6.
Структура книги
Книга содержит 17 уроков и составлена так, что эти уроки постепенно знакомят читателя с возможностями системы. Уже после прохождения урока 1 вы сможете начать осмысленно и плодотворно работать с системой. Этот урок является как бы ознакомительным курсом по работе с системой Maple 7. Он может быть полезен как для быстрого самостоятельного освоения системы не слишком требовательным пользователем, так и как основа вводного курса по системе в вузах и школах, где для основательного изучения Maple 7 не предусмотрено достаточного количества учебных часов. Кроме того, этот урок знакомит читателя с основами интерфейса пользователя и правилами работы с панелями инструментов и форматирования выражений. По сравнению с учебным курсом по системе Maple 6 [37] этот урок существенно переработан и дополнен. В частности, подробно описана инсталляция системы Maple 7 и аппаратные требования для работы с ней.
Последующие уроки расширяют заведенное знакомство и постепенно готовят читателя к серьезной самостоятельной работе практически без применения какой-либо иной документации, кроме встроенной в систему справочной базы данных. Урок 2 посвящен знакомству с мощной справочной базой данных системы Maple 7 и информационной поддержкой этой системы в Интернете. Данные разделы намеренно вынесены в начало книги, поскольку успех освоения системы Maple 7 до профессионального уровня требует обучения работе со справочной базой данных.
В уроке 3 описаны основные приемы работы с файлами документов, которые готовятся в Maple 7. Урок 4 дает систематизированное описание интерфейса, хотя и без многих подробностей, известных всем пользователям операционных систем класса Windows 95/98/NT/2000.
Остальные уроки посвящены базовым математическим возможностям системы Maple 7 и основам практической работы в ней. В уроке 5 описаны основные типы данных системы, а в уроке 6 — основные виды встроенных операторов и функций. Урок 7 посвящен основам программирования в среде Maple 7. Читатель должен понимать, что все описанные и в других главах команды системы Maple 7 являются одновременно и командами ее языка программирования. Именно это позволяет считать язык программирования Maple 7 языком программирования сверхвысокого уровня, проблемно ориентированным на математические расчеты. Урок 8 является одним из наиболее важных. Он посвящен решению типовых задач математического анализа, таких как вычисление сумм и произведений последовательностей, производных и интегралов, разложений функций в ряд и т. д. При этом особое внимание уделяется технике аналитических вычислений, где возможности системы Maple 7 вызывают особый интерес. Но и техника численных расчетов рассмотрена достаточно детально, в частности арифметика высокой точности.
Работа с функциями и степенными многочленами (полиномами) описана в уроке 9. Урок 10 посвящен изучению главной «козырной карты» системы Maple 7 — ее возможностям в области символьной математики. Здесь описано много тонкостей работы с математическими выражениями и другими объектами системы, позволяющими выполнять множество математических преобразований и подстановок.
Два больших урока — уроки 11 и 12 — посвящены графическим возможностям системы. При этом урок И описывает обычные графические средства, а в уроке 12 дается описание расширенных средств, позволяющих эффективно решать задачи визуализации решений математических проблем — вплоть до подготрвки графиков с элементами анимации.
Учитывая огромную роль дифференциальных уравнений в решении ряда математических, физических и технических задач, работе с ними посвящен отдельный урок 13. Наряду с решением одиночных дифференциальных уравнений первого и второго порядка рассматривается решение систем линейных и нелинейных дифференциальных уравнений как аналитическими, так и численными методами. Большое внимание уделено графической визуализации решений и построению наглядных фазовых портретов решения. В уроке отражены новые возможности Maple 7 в решении дифференциальных уравнений.
В уроке 14 рассмотрены важнейшие пакеты системы Maple 7 математической направленности. Эти пакеты поставляются вместе с системой, и применение функций из них столь же важно, как и применение средств ядра системы. Описанные в уроке 14 пакеты рассмотрены достаточно полно.
В отдельный урок 15 вынесены широко используемые на практике средства решения задач линейной алгебры. Это операции с векторами и матрицами, различные их преобразования и техника решения систем линейных уравнений. Здесь описаны такие важные пакеты, как linalg (стандартные средства линейной алгебры) и LinearAlgebra. В последний пакет входят новые средства линейной алгебры повышенной эффективности на основе алгоритмов, заимстованных из знакомого математикам пакета программ NAG (Numbering Algorithms Group). Впервые описан новый пакет анализа линейных функциональных систем LinearFunctionalSystems, появившийся в версии Maple 7.
Остальные пакеты, относящиеся к сравнительно узким областям математики и представляющие ограниченный интерес для большинства читателей, рассмотрены обзорно или в виде аннотации в уроке 16. К сожалению, материал по всем пакетам расширения Maple 7 настолько обширен, что его невозможно отразить в одной книге (тем более в форме учебного курса). Тем не менее в отличие от учебного курса по системе Maple 6 [37] этот урок существенно расширен и в нем впервые описан ряд новых пакетов системы Maple, в частности пакеты PolymomialTools, OrthogonalSeries, RandomTools, MathML и XMLTools.
Последний урок 17 описывает законченное решение ряда конкретных и интересных задач из области математики, физики и радиоэлектроники. Таким образом, читатель получает возможность познакомиться с широким спектром применения системы Maple 7 — от примеров простых расчетов и вычислений (таких в книге тысячи) до решения конкретных научных и технических проблем.
Материал книги иллюстрируется многими сотнями копий экрана как в виде отдельных рисунков, так и фрагментов вычислений и программных процедур в тексте книги. Они дают наглядное представление о реальном диалоге с системой и о форматах ввода и вывода.
Большинство примеров в книге оригинальны и отражают взгляд автора на методологию изучения системы Maple. В то же время в книге использованы и лучшие
(и наиболее поучительные) примеры, которые приведены в обширной библиотеке процедур, составленных пользователями систем Maple разных реализаций со всего мира, и примеры из ряда учебников по системе — в том числе новейших электронных (таких, как Power Tools), размещенных в Интернете. Все заимствованные примеры также специально адаптированы применительно к новейшей' версии системе Maple 7, описанной в книге.
Некоторые замечания
Перед вами — уже третья книга автора по системам Maple, которая содержит результаты многолетней работы с одной из самых мощных математических систем компьютерной алгебры — Maple, начиная с ее первой реализации и кончая новейшей Maple 7. Подобные программы, по мнению автора, являются куда более интересными и поучительными объектами для изучения, чем обычные языки программирования (по которым, кстати, защищены сотни диссертаций во всем мире). Однако пусть научный характер приложений систем класса Maple не пугает читателей. Книга, по мере возможностей и пристрастий автора, написана достаточно простым языком и вполне может претендовать на роль не только серьезного учебного пособия, но и руководства пользователя по системам Maple, причем вне зависимости от того, на какой компьютерной платформе эта система реализована и кто является ее пользователем. Хотя основное внимание уделялось, естественно, тем реализациям, которые работают в среде наиболее массовой операционной системы Windows 95/98/NT. Тем не менее автор приносит извинения тем пользователям, которые не найдут в книге описания отдельных тонкостей интерфейса Maple для не Windows-платформ.
Автор далек от мысли, что данная книга лишена недостатков и погрешностей. Она готовилась в спешном порядке, что имеет свои достоинства и недостатки. Именно благодаря ускоренной подготовке книги как автором, так и издательством, она попадет в руки читателей до того, как на рынок выйдет очередная версия системы Maple 8 или Maple 9. Автор и издательство постарались сделать все возможное, чтобы последствия этой спешки не сказались на качестве данной книги. Тем не менее автор считает своим долгом заведомо извиниться перед читателями, которые могут не обнаружить в книге нужные именно им сведения или если отдельные из них окажутся не вполне точными.
Эта книга ориентирована на определенный, но достаточно широкий круг читателей — это прежде всего научные работники, преподаватели и учащиеся университетов и вузов, аспиранты, инженеры и все пользователи персональных компьютеров, применяющие или осваивающие математические методы решения задач в любой области науки, техники и образования.
Книга является учебным курсом только по стилю изложения материала и рубрикации книги. По своей полноте она вполне может претендовать на справочное пособие по системе Maple 7, хотя исчерпывающего справочного материала книга не содержит, да и не может содержать, поскольку его объем многократно превосходит объем данной, отнюдь не тонкой книги. Поэтому автор приносит извине-
ния всем тем читателям, кто остался неудовлетворенным полнотой описаний некоторых функций или команд системы. Как уже отмечалось, полное описание всех функций и команд есть только в объемном электронном справочнике по системе. В этой книге намеренно подобраны достаточно простые примеры для иллюстрации возможностей системы Maple. Если среди читателей найдутся те, кого волнуют большие математические формулы, то им можно посоветовать найти корни простого многочлена третьей или четвертой степени в аналитическом виде. Надо полагать, что эти простые примеры сразу дадут понять таким «максималистам», что система Maple способна порождать при решении некоторых задач сложнейшие и практически необозримые формулы. Задача при написании книги была не в том, чтобы напичкать ее громоздкими формулами (что можно было сделать в два счета и чего уж и так хватает), а именно в подборе простых и наглядных примеров.
Благодарности и адреса
Эта книга, как и ряд последних книг автора, подготовлена в инициативном порядке в рамках работ кафедры физической и информационной электроники Смоленского государственного педагогического университета. В нее вошли материалы работ по гранту Минобразования РФ, полученному автором для выполнения работ по применению компьютерных математических систем в решении задач естествознания. Гранты Соросовского профессора по математике 1999 и 2001 гг. и прямая поддержка корпорации Waterloo Maple и ее представителя в России фирмы SoftLine стали стимулом для подготовки очередной книги по системам Maple.
Автор выражает особую благодарность сотрудникам вычислительного центра Заочного университета города Хагена (Германия), обратившим внимание автора на систему Maple V еще в самом начале ее появления на персональных компьютерах и предоставившим ее первую реализацию.
Разумеется, эта книга не могла бы появиться без «курочки», снесшей такое «золотое яичко», каким является система Maple 7. Поэтому высшей благодарности заслуживает фирма Waterloo Maple Inc. — создатель этого уникального, мощного и прекрасно реализованного программного продукта. Автор выражает благодарность директору Российской фирмы SoftLine И. П. Боровикову, предоставившему автору новейшую версию Maple 7 сразу после ее появления на рынке.
Автор выражает горячую признательность дружному коллективу компьютерной редакции издательства «Питер», в особенности заведующему редакцией Илье Корнееву и редактору Дмитрию Лещеву, благодаря оперативной работе которых книга увидит свет в значительно улучшенном, причем в кратчайшие сроки, качестве. Автор благодарен главному конкуренту фирмы Waterloo Maple Software — компании Wolfram Research Inc. (США), создавшей систему Mathematica, за предоставленную возможность длительной научной стажировки в этой фирме. Во время этой стажировки автор по-новому взглянул на современные системы символьной математики. И пришел к твердому убеждению, что разработчики подобных систем не столько конкуренты, сколько партнеры пр большому и важному делу
внедрения систем компьютерной математики в образование, науку и технологии всех стран мира. Предоставленные автору условия были настолько хороши, что позволили, в частности благодаря подключению к скоростному Интернету, получить массу новых материалов по всем системам компьютерной математики, в том числе как по Mathematica 4/4.1, так и по Maple 6/7. '
Наконец, автор не может не высказать признательности генеральному директору фирмы «Телепорт» (г. Смоленск) Г. И. Рухамину за оперативное подключение домашнего компьютера автора к глобальной сети Интернет, что позволило включить в книгу самые свежие материалы по системе Maple и поддерживать оперативную связь с разработчиком этой системы. Автор благодарит своих коллег И. В. Абраменкову, Р. Е. Кристаллинского и А. Г. Лучаинова за обсуждение ряда разделов книги и наброски отдельных примеров, использованных при подготовке последнего урока в книге.
Эта книга входит в серию книг с пометкой «Учебный курс». Это отражает заинтересованность автора во внедрении современных систем компьютерной математики в российское образование. Автор положительно относится к критическим и позитивным откликам и пожеланиям по данным книгам. Их можно отправлять как на адрес издательства, так и по месту работы автора — 21400, Смоленск, ул. Пржевальского 14, СГПУ, В. П. Дьяконову. Вы можете также направлять свои отзывы по электронной почте автора (dyak@keytown.com) или издательства «Питер», выпустившего данную книгу.
К фирме Waterloo Maple Inc. можно обращаться по адресу: Waterloo Maple Inc., 57 Erb Street West,'Waterloo, ON, Canada N2L 6C2. E-mail: support@maplesoft.com. Phone: (519) 747-2505. Fax: (519) 747-5284. Web-сервер фирмы: www.maplesoft.com. С фирмой SoftLine — представителем интересов Waterloo Maple в России — можно связаться по телефону (095) 232-0023, по факсу (005) 126-9065 или по электронной почте (info@softline.ru). С этой фирмой можно ознакомиться и на ее web-сервере: www.softline.ru.
От издательства
Ваши замечания, предложения и вопросы отправляйте по адресу электронной почты comp@piter.com (издательство «Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На web-сайте издательства http://www.piter.com вы найдете подробную информацию о наших книгах.
Я)УРОКЯ)УРОКПервое знакомство с системой Maple 7
Я)УРОК
Я)УРОК
Краткая характеристика системкласса Maple.
Об ошибках в символьных вычислениях
Ядро и пакеты расширения Maple 7
Языки системы
Ориентация систем Maple
Загрузка Maple и ее составляющие
Интерфейс системы и работав диалоговом режиме
Меню системы Maple 7
Управление формой представления документа
Повышение эффективности работы с системой
Доступ к справке и примерам
Краткая характеристика систем класса Maple
Назначение и место систем Maple
Maple — система компьютерной математики, рассчитанная на широкий круг пользователей. До недавнего времени ее называли системой компьютерной алгебры, что указывало на особую роль символьных вычислений и преобразований, которые способна осуществлять эта система. По такое название сужает сферу применения системы. На самом деле она уже способна выполнять быстро и эффективно не только символьные, но и численные расчеты, причем сочетает это с превосходными средствами графической визуализации и подготовки электронных документов.
Казалось бы, нелепо называть такую мощную систему, как Maple 7 математической системой «для всех». Однако по мере ее распространения она становится полезной для многих пользователей ПК, вынужденных в силу обстоятельств (работа, учеба, хобби) заниматься математическими вычислениями и всем, что с ними связано. А все это простирается от решения учебных задач в вузах до моделирования сложных физических объектов, систем и устройств, и даже создания художественной графики (например, фракталов).
Для наших читателей (в том числе и для математиков-профессионалов) возможности систем символьной математики, реализованных на массовых ПК класса IBM PC, порой являются полной неожиданностью и вызывают вполне заслуженное удивление и восхищение, но иногда и резкое отрицание. Впрочем, последнее характерно скорее для тех, кто с системой Maple просто не работал и относится к ней, как дама из анекдота о паровозе — увидев паровоз впервые, она воскликнула: «Не может быть, что он едет без лошадей!»
Maple — тщательно и всесторонне продуманная система компьютерной математики. Она с равным успехом может использоваться как для простых, так и для самых сложных вычислений и выкладок. Заслуженной популярностью системы Maple (всех версий) пользуются в университетах — свыше 300 самых крупных университетов мира (включая и наш МГУ) взяли эту систему на вооружение. А число только зарегистрированных пользователей системы уже давно превысило один миллион. Ядро системы Maple используется в ряде других математических систем, например в MATLAB и Mathcad, для реализации в них символьных вычислений. '
Добавьте к этому куда большее число незарегистрированных пользователей — ведь система записана на многих компакт-дисках, лихо продаваемых в России
по вполне доступным ценам. Если учесть все это, то оказывается, что популярность системы Maple ничуть не ниже, а то и выше, чем у гораздо более простых систем, таких как Derive и Mathcad. Вот и решайте, какая из систем и впрямь рассчитана на всех!
Maple — типичная интегрированная система. Она объединяет в себе:
О мощный язык программирования (он же язык для интерактивного общения с системой);
О редактор для подготовки и редактирования документов и программ;
О современный многооконный пользовательский интерфейс с возможностью работы в диалоговом режиме;
О мощную справочную систему со многими тысячами примеров;
О ядро алгоритмов и правил преобразования математических выражений;
О численный и символьный процессоры;
О систему диагностики;
О библиотеки встроенных и дополнительных функций;
О пакеты функций сторонних производителей и поддержку некоторых других языков программирования и программ.
Ко всем этим средствам имеется полный доступ прямо из программы. Maple — одна из самых мощных и «разумных» интегрированных систем символьной математики, созданная фирмой Waterloo Maple, Inc. (Канада).
Во многих обзорах систем компьютерной алгебры Maple справедливо считается одним из первых кандидатов на роль лидера среди них. Это лидерство она завоевывает в честной конкурентной борьбе с другой замечательной математической системой — Mathematica 4.1. Каждая из данных двух систем имеет свои особенности, ио в целом эти две лидирующие системы практически равноценны. Однако надо отметить, что появление новейшей версии Maple 7 означает очередной виток в соревновании этих систем за место лидера мирового рынка. Причем виток на этот раз раньше сделала система Maple 7.
Система Maple прошла долгий путь развития и апробации. Она реализована на больших ЭВМ, рабочих станциях Sun, ПК, работающих с операционной системой Unix, ПК класса IBM PC, Macintosh и др. Все это самым положительным образом повлияло на ее отработку и надежность (в смысле высокой вероятности правильности решений и отсутствия сбоев в работе). Не случайно ядро системы Maple V используется целым рядом других мощных систем компьютерной математики, например системами класса Mathcad и MATLAB. А совсем недавно упрощенная версия Maple для операционной системы Windows СЕ стала использоваться в миниатюрных компьютерах фирмы Casio — Cassiopeia.
Версии систем класса Maple
Известен ряд версий системы Maple, называемых реализациями. Одной из самых известных реализаций является реализация Maple V R5. В ней появилась
возможность работы с электронными таблицами, несколько улучшен интерфейс пользователя (введены палитры для ввода математических символов и расширены возможности управления мышью), стала возможной запись файлов в формате HTML и введена возможность обмена объектами между документами методом перетаскивания (Drag and Drop).■
Основное достоинство предшествующей версии Maple 6 — это существенное ускорение вычислений с большими матрицами, достигнутое применением алгоритмов матричных вычислений известного пакета NAG (Numbering Algorithms Group). Хотя данная книга посвящена новейшей реализации системы Maple 7, ее основной материал будет полезен и пользователям реализации Maple 6.
Новейшая версия систем Maple — Maple 7 появилась 21 июня 2001 г. Корпорация Waterloo Maple оценивает ее появление как новый виток в борьбе за мировое лидерство в области автоматизации математических вычислений — как численных, так и, в особенности, символьных. Являясь одними из лучших и надежных систем компьютерной математики, Maple 6 и Maple 7 становятся мировым стандартом в области математических вычислений.
Об ошибках в символьных вычислениях
На многих пользователей систем символьной математики удручающее впечатление может произвести наличие хотя и редких, но ошибочных решений. В самом деле, мы немедленно стерли бы с жесткого диска табличный процессор, давший ошибку в бухгалтерских расчетах, и перестали бы доверять системе проверки орфографии, дающей ошибки при проверке. Впрочем, последнее случается сплошь и рядом — пока нет таких систем, которые корректно проверяли бы орфографию и грамматику. Тот же текстовый процессор Word 97/2000 постоянно ошибается при проверке орфографии текстов, в чем автор не раз убеждался, готовя с его помощью большие книги.
У систем компьютерной алгебры нет проблем с обработкой естественного языка — математика полностью формализованная наука. Однако в них много своих условностей и неоднозначностей, которые здесь как бы заранее запрограммированы. К примеру, что считать более простым выражением: tan(x) или sin(x)/cos(x)? Система Derive полагает более простым выражением tan(x) и преобразует к нему выражение sin(x)/cos(x). А вот система Maple V ничуть не менее справедливо считает, что функции sin(x) и cos(x) математически более простые, чем tan(x), и вообще — tan(x), по сути, не самостоятельная функция, a sin(x)/cos(x). Поэтому Maple V везде вместо tan(x) будет выводить sin(x)/cos(x).
Представьте себе, что таких условностей десятки и вы ничего об этом не знаете. Поэтому не стоит удивляться, что символьное значение какой-либо производной или интеграла может заметно отличаться по виду от приводимого в том справочнике, из, которого взято исходное выражение для проверки правильности работы системы. Часто, чтобы получить результат в необходимом виде, необходимо приложить определенные усилия либо дать конкретные указания системе о типе преобразований в ходе вычислений. Указания реализуются в виде параметров к командам и функциям системы.
По образному выражению автора обзора [40], решение задач в символьном виде напоминает переход через поле, густо напичканное минами. Удивительно не то, что системы символьной математики могут ошибаться и «взрываться», а то, что число этих ошибок мало и уже на нынешнем этапе развития таких систем это не мешает их серьезному практическому применению. Стоит еще раз подчеркнуть, что Maple в этом отношении является одной из лучших систем, реализованных на ПК класса IBM PC и Macintosh с достаточно умеренными техническими характеристиками. Кстати говоря, для ПК Macintosh последней реализацией пока что является Maple V R4.
Один знакомый автор любил говорить, что компьютеры делают умных людей умнее, а глупых — глупее. Пожалуй, это более чем справедливо для людей, сидящих у ПК с установленной на нем системой символьной математики. Лишь те, кто понимают суть математических вычислений и имеют должную математическую интуицию и подготовку, могут получить от таких систем самые серьезные и даже новые результаты. Те же, кто думает, что системы символьной математики заменят им математические знания, глубоко ошибаются и могут получить красочно выглядящие, но абсолютно неверные и даже псевдонаучные результаты!
Однако вряд ли следует утрировать вероятность выдачи системами символьной математики ошибочных результатов — даже самые опытные математики-аналитики тоже могут ошибаться в своих вычислениях. В разработке таких систем, как Maple или Mathematica принимают участие крупные математические школы всего мира! Эти системы — кладезь математических понятий, сведений и знаний. Они способны заменить самые серьезные справочники по математическим вычислениям в любой области пауки, техники и образования. Кроме того, они имеют множество средств для проверки корректности выполняемых вычислений, например путем подстановки полученных результатов в исходные выражения.
Кстати, одно из самых действенных приемов проверки таких средств — решение задачи одновременно на нескольких системах символьной математики. Не случайно уже сейчас можно заметить тенденцию к объединению математических систем. Эта новая и безусловно прогрессивная тенденция в ближайшее время приведет к созданию автоматизированных рабочих мест математиков и ученых других близких специальностей. Разработки таких рабочих мест (разумеется, компьютер на них — главный инструмент), в том числе с использованием систем Maple, уже появились и о них немного говорится в заключении.
В добавление к сказанному надо отметить, что Maple 7 — одна из самых надежных систем компьютерной математики. Надежных прежде всего в смысле высокой достоверности получения правильных результатов при сложных символьных вычислениях. Эта первая система компьютерной математики, успешно прошедшая полное тестирование на задачах повышенной сложности, предлагаемых для оценки качества подобных систем.
Ядро и пакеты Maple 7
Основой для работы с символьными .преобразованиями в Maple является ядро системы. Оно содержит сотни базовых функций и алгоритмов символьных пре-
образований. В новых реализациях объем ядра достигает 6-7 Мбайт. Имеется также основная библиотека операторов, команд и функций. Многие встроенные в нее функции, как и функции ядра, могут использоваться без какого-либо объявления, другие нуждаются в объявлении. Кроме того, имеется ряд подклю: чаемых пакетов (packages).'
Дополнительные функции из пакетов могут применяться после объявления подключения пакета с помощью команды with(name), где name — имя применяемого пакета. Общее число функций, с учетом встроенных в ядро и размещенных в пакетах в системе Maple V R4 приближается к 2500, в реализации R5 -к 2700, а в Maple 6 и в Maple 7 оно уже превышает 3000. Это означает, что большинство задач может решаться в режиме прямого диалога с системой без использования каких-либо средств программирования.
Языки системы Maple 7
Maple способна решить огромное число задач вообще без какого-либо программирования в общепринятом смысле этого понятия. Достаточно лишь описать алгоритм решения задачи и разбить его на отдельные вопросы, на которые система Maple способна дать ответы. Более того, есть тысячи задач, алгоритмы решения которых уже реализованы в виде функций и команд системы. Тем не менее это вовсе не означает, что в Maple нельзя программировать. На. самом деле Maple поддерживает три собственных языка: входной, реализации и программирования.
Maple имеет входной язык сверхвысокого уровня, ориентированный на решение математических задач практически любой сложности. Он служит для задания системе вопросов или, говоря иначе, задания входных данных для последующей их обработки. Это язык интерпретирующего типа и по своей идеологии напоминает добрый старый Бейсик. И такое сходство вовсе не недостаток, а огромное достоинство — ведь именно с Бейсика начался подлинный диалог пользователя напрямую с компьютером! Входной язык имеет большое число заранее определенных математических и графических функций, а также обширную библиотеку, подключаемую по мере необходимости.
Имеет Maple и свой язык процедурного программирования — Maple-язык. Этот язык имеет вполне традиционные средства структурирования программ: операторы циклов, операторы условных и безусловных переходов, операторы сравнения, логические операторы, команды управления внешними устройствами, функции пользователя, процедуры и т. д. Он также включает в себя все команды и функции входного языка, ему доступны все специальные операторы и функции. Многие из них являются весьма серьезными программами, например символьное дифференцирование, интегрирование, разложение в ряд Тейлора, построение сложных трехмерных графиков и т. д.
Не следует путать входной язык и язык программирования системы (Maple- язык) с языком ее реализации. Им является один из самых лучших и мощных универсальных языков программирования — Си. На нем написано ядро системы, содержащее тщательно оптимизированные процедуры. Большинство же
функций, которые содержатся в пакетах, написаны на Maple-языке, благодаря чему их можно модифицировать и даже писать свои собственные библиотеки. По разным оценкам, лишь от 5 до 10 % средств Maple создано на языке реализации — все остальное написано на Maplc-языке. Таким образом, система имеет развитые возможности для расширения и адаптации к задачам пользователя. Для подготовки программ на языке Maple могут использоваться внешние редакторы, но система имеет и свой встроенный редактор, вполне удовлетворяющий требованиям большинства пользователей. Он открывается командами New и Open в меню File. Этот редактор можно использовать для редактирования файлов программ или математических выражений. Версии Maple для MS-DOS имеют свой редактор программ и отладчик с функциями проверки синтаксиса. После версии Maple V для Windows необходимость в этих средствах практически отпала.
Синтаксис структурных операторов языка Maple напоминает смесь Бейсика и Паскаля. Это облегчает знакомство с ним тем, кто имеет хотя бы начальный опыт программирования на этих языках. По близким к Бейсику правилам (и при помощи общепринятых математических сокращений) выполняется и ввод математических выражений в диалоговом режиме работы с системой.
Ориентация систем Maple
Вообще говоря, системы Maple ориентированы на решение сложных задач, хотя и решение в них простых задач вполне возможно и уместно. Возможно, для решения таких задач вполне подойдет весьма простая, быстрая и надежная система Derive или система Mathcad, в которую (начиная с. версии 3.0 под Windows) включен приобретенный по лицензии фирмы Waterloo Maple упрощенный символьный процессор Maple. Однако по числу доступных пользователю математических функций эти скромные системы не идут ни в какое сравнение с патриархом символьной математики — системой Maple.
Система Maple 7 может с успехом применяться для решения самых серьезных математических задач аэродинамики, теории поля, теплопроводности и диффузии, теоретической механики и др. Решение таких задач нередко является многолетним трудом элитных научных коллективов.
Впрочем, поскольку система может быть установлена на любом современном ПК, ее можно (да и нужно) применять как можно чаще и по любому поводу. Это способствует как приобретению практических навыков работы с Maple, так и росту математических познаний тех, кто с ней работает.
Возможности предшествующей версии Maple б
Перечислим основные возможности предшествующей версии системы Maple 6. Интерфейс:
О работа со многими окнами;
О вывод графиков в отдельных окнах или в окне документа;
О представление выходных и входных данных в виде естественных математических формул;
О задание текстовых комментариев различными шрифтами;
О возможность использования гиперссылок и подготовки электронных документов;
О удобное управление с помощью клавиатуры через главное меню и инструментальную панель;
О управление с помощью мыши.
Символьные и численные вычисления:
О дифференцирование функций;
О численное и аналитическое интегрирование;
О вычисление пределов функций;
О разложение функций в ряды;
О вычисление сумм и произведений;
О интегральные преобразования Лапласа, Фурье и др.;
О дискретные Z-преобразоваиия;
О прямое и обратное быстрое преобразование Фурье;
О работа с кусочно-заданными функциями.
Работа с уравнениями в численном и символьном виде:
Q решение систем линейных и нелинейных уравнений;
О решение систем дифференциальных уравнений;
О символьное вычисление рядов;
О работа с рекуррентными функциями;
О решение трансцендентных уравнений;
О решение систем с неравенствами.
Работа с функциями:
О вычисление значений всех элементарных функций;
О вычисление значений большинства специальных математических функций;
О пересчет координат точек между различными координатными системами;
О задание функций пользователя.
Линейная алгебра;
О свыше ста операций с векторами и матрицами;
О решение систем линейных уравнений;
О формирование специальных матриц и их преобразования;
О вычисление собственных значений и собственных векторов матриц;
□ поддержка быстрых векторных .и матричных алгоритмов пакета программ NAG.
Графическая визуализация результатов вычислений:
О построение графиков многих функций;
О различные типы осей (с линейным и логарифмическим масштабом); ,
О графики функций в декартовой и полярной системах координат;
О специальные виды графиков (точки массивов, векторные графики, диаграммы уровней и др.);
О системы координат, определяемые пользователем;
О графики, представляющие решения дифференциальных уравнений;
О графики трехмерных поверхностей с функциональной закраской;
О построение пересекающихся в пространстве объектов;
О задание пользователем окраски графиков;
О импорт графиков из других пакетов и программных систем;
О анимация графиков;
О создание и проигрывание анимационных файлов.
Программирование:
О встроенный язык процедурного программирования;
О простой и типичный синтаксис языка программирования;
О обширный набор типов данных;
О типы данных, задаваемых пользователем;
О средства отладки программ;
О мощные библиотеки функций;
О задание внешних функций и процедур;
О поддержка языков программирования С и Fortran;
О возможность записи формул в формате LaTeX.
Новые возможности системы Maple 7
Система Maple 7 приобрела ряд новых возможностей. Кратко отметим их:
О расширенная поддержка численных алгоритмов пакета программ NAG, в том числе при решении численных задач математического анализа (например, вычисление определенных интегралов в Maple 7 ускорено в 20-40 раз в сравнении с Maple 6) и при решении дифференциальных уравнений;
О новый обучающий курс User's Tour, встроенный в ее справку;
О существенно переработанные и обновленные пакеты функций;
О ускоренные алгоритмы целочисленных вычислений (например, факториал числа ■ 25000 вычисляется более чем на порядок быстрее, чем системой Maple 6);
О обширный набор новых алгоритмов решения дифференциальных уравнений, обеспечивающий дополнительную эффективность решения задач в области моделирования физических явлений и устройств;
О выполненное впервые 100% успешное испытание при решении специальных тестовых задач, что является высшим достижением на рынке средств компьютерной математики;
О усовершенствованные и новые алгоритмы реализации многих численных методов решения задач;
О новые встроенные пакеты аппроксимации кривых CurveFitting, внешних вычислений ExternalCalling, решения линейных функциональных систем, LinearFunctionalSystem, ортогональных рядов OrthogonalSeries, работы с полиномами PolynomialTools, решения уравнений SolveTools и поддержки вычислений с размерными величинами Units;
О новый пакет для поддержки языка XML;
О поддержка новейшего стандарта записи математической информации — языка MathML 2.0;
О улучшение пользовательского интерфейса', в частности введение новой палитры ввода шаблонов векторов;
Q поддержка протокола TCP/IP, обеспечивающего динамический удаленный доступ к данным, например, для финансового анализа в реальном масштабе времени или данных о погоде;
О дополнительные пакеты (Maple PowerTools™), доступные через Интернет, поддерживающие анализ методом конечных элементов (FEM), нелинейную оптимизацию и статистику, а также три новых пакета: вычисления для новичков, теоретическая физика и программирование;
О возможность работы с курсом университетского математического образования, загружаемого через Интернет.
В сочетании с сохраненными возможностями предшествующей версии системы это дает новой версии Maple 7 обширные возможности в эффективном решении широкого класса математических и научно-технических задач, а также задач в области образования.
Установка системы Maple 7 на ПК
Аппаратные требования
В этой книге рассматривается реализация системы Maple 7, требующая:
О процессор — Pentium 150 МГц и выше;
О оперативная память — не менее 16 Мбайт (рекомендуется 32 Мбайта и выше);
О место на жестком диске — около 80 Мбайт (120 Мбайт для сетевой версии).
Обширная библиотека пользователя, поставляемая с предшествующими версиями системы Maple V, с новыми версиями Maple 6 и Maple 7 пока не поставляется, поскольку требует серьезной переработки. Достаточно отметить, что использование в новых версиях системы оператора X для вызова последнего результата (вместо применяемого ранее оператора кавычек) делает неработоспособными большинство программ этой библиотеки. Также в новой версии изменен синтаксис некоторых функций.
Установка системы Maple 7
Установка системы производится обычно с компакт-диска. Обычно компакт-диск с инсталляционной версией Maple 7 стартует автоматически. При этом появляется окно Мастера установки со шкалой выполнения предварительной подготовки, показанное на рис. 1.1.
Рис. 1.1. Окно Мастера установки Maple 7
Затем Мастер автоматически переходит к окну, в котором просит ввести серийный номер программного продукта, который имеется в документации к системе или указан на конверте с компакт-диском.
Для продолжения установки следует щелкнуть на кнопке Next. Это приводит к появлению следующего окна и т. д. В каждом окне после указания необходи-
мых данных нужно нажать кнопку Next или Yes. Работа с остальными окнами мастера установки описана ниже.
На рис. 1.3 показано следующее окно Мастера, которое служит для задания папки, в которой будут установлены файлы Maple 7. Вы можете оставить предлагаемую по умолчанию папку, а можете ввести любую другую.
Если папка, заданная по умолчанию в поле Destination Folder вас не устраивает, то вы можете определить другую. Для этого щелкните на кнопке Browser. Появится стандартное окно Choose Folder, показанное на рис. 1.4. В этом окне можно задать желаемую папку, либо явно указав ее имя в поле Path, либо выбрав существующую в дереве Directories.
Система Maple 7 может быть установлена как для индивидуального пользователя, так и для многих пользователей (сетевой вариант). Данный выбор можно осуществить в следующем окне Мастера установки, показанном на рис. 1.5. В этом окне надо задать вариант установки, щелкнув в соответствующем положении переключателя. Здесь же можно уточнить директорию (по умолчанию Users) для хранения файлов пользователей.
Следующий этап установки — определение имени ярлыка, активизацией которого в дальнейшем будет запускаться система. Для этого служит окно Мастера установки, показанное на рис. 1.6. В этом окне можно оставить имя ярлыка Maple 7, предлагаемое по умолчанию, ввести вместо него другое или выбрать имя из списка, представленного в нижней части окна. Разумно согласиться с предложенным Мастером именем.
Рис. 1.3. Окно задания папки для размещения файлов системы Maple 7
Р*с. 1.4. Задание имени папки для размещения файлов системы Maple 7
Рис. 1.5. Выбор установки системы Maple 7 для одного пользователя или для многих пользователей
#мс. 1,6. Выбор ярлыка для запуска системы Maple 7
На этом предварительная часть установки завершается, и нажатием кнопки Next в окне рис. 1.6 можно перейти к этапу копирования файлов в намеченную папку (учтите, что часть файлов копируется и в папки с операционной системой Windows, установленной на вашем ПК). В процессе копирования файлов Окно Мастера установки сменяется информационными окнами, которые сообщают о возможностях Maple 7. Одно из таких окон представлено на рис. 1.7. Кроме того, на экране будет отображаться окно с индикатором процесса копирования файлов, который позволяет судить о том, какая часть работы уже проделана, а также какие файлы копируются в данный момент.
Simply the BestSimply the Best&У^Р5ь>го Rtes\E&У^Р5ь>го Rtes\EMaple ? SetupMaple ? SetupComprehensive unit management, dramatic improvements in ODEs and PDEs. more industi i.il-strength NAG routines, plus hundreds of othir improvements offer the greatest functionality in matnematical software.Comprehensive unit management, dramatic improvements in ODEs and PDEs. more industi i.il-strength NAG routines, plus hundreds of othir improvements offer the greatest functionality in matnematical software.Рис. 1.7. Информационное окно и индикатор процесса копирования файловРис. 1.7. Информационное окно и индикатор процесса копирования файлов
Simply the Best
Simply the Best
&У^Р5ь>го Rtes\E
&У^Р5ь>го Rtes\E
Maple ? Setup
Maple ? Setup
Comprehensive unit management, dramatic improvements in ODEs and PDEs. more industi i.il-strength NAG routines, plus hundreds of othir improvements offer the greatest functionality in matnematical software.
Comprehensive unit management, dramatic improvements in ODEs and PDEs. more industi i.il-strength NAG routines, plus hundreds of othir improvements offer the greatest functionality in matnematical software.
Рис. 1.7. Информационное окно и индикатор процесса копирования файлов
Рис. 1.7. Информационное окно и индикатор процесса копирования файлов
В процессе копирования файлов могут быть ситуации, когда встречается файл с таким же именем, что и копируемый. В этом случае Мастер установки сообщит вам об этом с помощью соответствующего сообщения. Чаще всего такая ситуация встречается, если Maple 7 устанавливается поверх прежней версии системы Maple. Если пользователь твердо намерен установить новую версию системы, то рекомендуется предварительно удалить предшествующую версию (с помощью соответствующих программ и средств, разумеется). В противном случае придется решать, какой файл будеЛанимать место на диске — останется старый или его заменит новый (естественно, рекомендуется установить новый файл).
По завершении копирования файлов появляется окно Мастера с запросом о том, надо ли помещать ярлык запуска системы на рабочий стол, изображенное на рис. 1.8.
Рис. 1.8. Запрос о размещении ярлыка запуска Maple 7 на рабочий стол
Рис, м^йт Мащра jf^^о «’затадении
Вы Можете отказаться от такого размещения и запускать Maple 7 из меню Пуск или из Проводника. Но, если вы намерены работать с Maple 7 часто, то рекомендуется поместить ярлык на рабочий стол Windows.
Установка завершается выводом окна Мастера установки, в котором сообщается о ее успешном завершении. Данное окно представлено на рис. 1.9.
В этом окне достаточно нажать кнопку Finish для завершения установки. Maple 7 будет установлена на вашем компьютере и готова к работе.
Проблемы, связанные с установкой и возможными конфликтами, описаны в файле readme.txt, который рекомендуется просмотреть перед инсталляцией системы. К сожалению, он подготовлен на английском языке, как и вся встроенная в Maple 7 документация.
Запуск системы
Запуск Maple 7 производится, как обычно, из меню Пуск (рис. 1.10). Найдя строчку Maple 7, необходимо открыть подменю и щелкнуть на команде Maple 7 (рис. 1.10).
Рис. 1.10. Запуск Maple 7 из меню Пуск
Возможен также запуск с помощью ярлыка, помещенного на рабочий стол. В любом случае, вначале на некоторое время появляется красочное окно-заставка, показанное в центре рис. 1.1. После этого появляется рабочее окно системы, изображенное аа рис.; 1.11.
QMaple 7 |11пЫЫ (1) [Seivei 1Ц
&£»
- •*• г. 4
I. Six.!5|x|
V $&»$*'
Palettes
м» ЗяяЬй Р繫
Zromfeciar gpDknwk»
* ^kP^etee v WWM
bide ДИ Palettes
^HtiCorttm
V Show S-eti^rt Ranges ' Si^kFS v Stow Д«ир Rings*PS '
ShoyOb«tollype's
£*p»hdAB SitilW, Dolapte^ Sections-
Hide ей palettes
Hide all palettes
«|р| у
Slsjc
П'О 1 !к\
1<
v | £ ] о
я j р [ а
t и|Ф X1W
tol
А|В Г
Д|Е Z
Н © I К А
Ml
■N|3|O
ШрК
Т|¥|ф|х|Ч-
й
е]ы:-[л
Рис. 1.11. Окно системы Maple 7
Интерфейс системы Maple 7
Обзор интерфейса Maple 7
Долгое время системы Maple имели довольно архаичный (хотя и неплохой) пользовательский интерфейс, ориентированный на операционную систему MS-DOS. Но затем версия Maple V R3, далее Maple V R4, Maple V R5 и, наконец, Maple 6 и Maple 7 приобрели вполне современный графический пользовательский интерфейс, характерный для приложений операционных систем Windows. Это намного повысило удобство работы с Maple и обеспечило интеграцию со многими другими программными продуктами.
Как у всех приложений под Windows интерфейс Maple 7 имеет ряд характерных элементов, видимых на рис. 1.11 и перечисленных ниже:
О строка заголовка (сверху);
О строка главного меню;
О главная панель инструментов;
О контекстная панель инструментов, вид которой зависит от режима работы с Maple 7;■
О окно ввода и редактирования документов;,
О строка состояния (в самом низу окна).
Пользовательский интерфейс Maple 7 позволяет готовить документы, содержащие одновременно текстовые комментарии, команды входного языка (с возможным преобразованием их в естественную математическую форму), результаты вычислений в виде обычных математических формул и графические данные. Это обеспечивает понятное представление исходных данных и результатов вычислений, а также удобство их повторного использования.
В основе пользовательского интерфейса Maple 7 лежит графический многооконный интерфейс операционной системы Windows. Управление системой Maple 7 возможно с помощью главного меню, панелей инструментов и палитр, а также «горячих» клавиш. Поддерживаются также многие возможности мыши, присущие приложениям под Windows.
Важно отметить и прекрасно реализованную справочную систему Maple 7. Преодолев первые трудности общения с системой, пользователь быстро осваивает систему справки, которая позволяет без какой-либо бумажной документации получить исчерпывающую информацию о любом операторе, функции или пакете (разумеется, на английском языке). На каждой странице справки находится по несколько примеров, причем их можно скопировать и перенести в редактор или в окно исполняемых документов системы. Это способствует быстрому обучению пользователя. Подробное описание справочной системы Maple 7 дано в уроке 2.
Пользователь Maple 7 (как и ряда других математических систем) работает с документами, которые являются одновременно описаниями алгоритмов решения задач, программами и результатами их исполнения. Все данные команды и результаты размещаются в соответствующих ячейках. Графические построения выполняются как в ячейках документа, так и в отдельных окнах, и имеют свои меню для оперативного управления параметрами.
Меню системы Maple 7
Наиболее полные возможности управления предоставляет главное меню системы Maple 7. Оно, как обычно, расположено непосредственно под строкой заголовка. Меню предоставляет доступ к основным операциям и параметрам пользовательского интерфейса системы. Ниже дан перечень меню, доступных при наличии открытого документа:
О File — работа с файлами и печатью документов;
О Edit — команды редактирование документа и операции с буфером обмена;
О View — управление видом пользовательского интерфейса;
О Insert— операции вставки;
О format — операции задания форматов;
О Spreadsheet — операции задания таблиц;
О Options — задание параметров;
О Window — управление окнами;•
О Help — работа со справочной системой.
Главное меню Maple 7 является контекстно-зависимым. Это означает, что его вид может меняться в зависимости от текущего состояния (контекста) системы. Например, если все документы закрыты, то главное меню содержит только три заголовка меню: File, Options и Help. При этом место для окон документов пусто и окрашено в серый цвет. Вид меню также меняется в зависимости от того, какие объекты в документе выделены. Более подробно работу с меню системы Maple 7 мы рассмотрим позже, начиная с урока 3.
Палитры ввода математических символов
Полезно сразу обратить внимание на возможность модификации интерфейса системы Maple 7 с помощью команд меню View. В этом меню (оно показано на рис. 1.11 в открытом состоянии) можно увидеть список палитр Palettes, предназначенных для ввода математических знаков. Установив флажки соответствующих палитр, можно вывести их на экран и переместить в любое место. Все четыре палитры математических символов представлены на рис. 1.11. При этом, палитра VECTOR введена в Maple 7 впервые.
Назначение знаков в палитрах очевидно из их названий:
О SYMBOL — ввод отдельных символов (греческих букв и некоторых математических знаков);
О EXPRESSION — ввод шаблонов математических операторов и операций;
О MATRIX — ввод шаблонов матриц разных размеров;
О VECTOR — ввод шаблонов векторов разных размеров и типов (векторы-столбцы или векторы-строки).
Следует отметить, что не всегда введенный на палитре символ буквально повторяет представленный на кнопке. Например, вместо символа а может быть введено слово alpha. Так происходит, если установлен действующий по умолчанию Maple-режим представления символов. Палитра ввода векторов введена в Maple 7 впервые, что сделало ввод векторов более удобным.
Всплывающие подсказки
Еще один важный и полезный элемент интерфейса — всплывающие подсказки. Они появляются, если навести курсор мыши на тот или иной элемент интерфейса. На рис. 1.11 показана одна из всплывающих подсказок. Подсказки имеют вид облачка, которое вытекает из указанного элемента интерфейса. Особенно удобны подсказки для пояснения назначения кнопок палитр и панелей инструментов. В дальнейшем мы будем неоднократно приводить примеры всплывающих подсказок при работе с интерфейсом. . ^Г-ЛОб С
Основы работы с Maple 7 в диалоговом режиме
Начальные навыки работы
ВНИМАНИЕВНИМАНИЕПосле загрузки и запуска системы можно начать диалог с ней, используя ее операторы и функции (с параметрами) для создания и вычисления математических выражений.
ВНИМАНИЕ
ВНИМАНИЕ
Во избежании грубых ошибок при исполнении того или иного примера рекомендуется перед этим исполнить команду restart, которая снимает определения со всех использованных ранее переменных и позволяет начать вычисления «с чистого листа».
На рис. 1.12 представлен реальный диалог с системой (в виде копии экрана) при решении простейших арифметических задач и построении графика функции sin(x)/x
Рис. 1.12. Начало диалога с системой Maple 7Рис. 1.12. Начало диалога с системой Maple 7
Рис. 1.12. Начало диалога с системой Maple 7
Рис. 1.12. Начало диалога с системой Maple 7
Уже из этрго простого примера видны особенности диалога с Maple и синтаксиса ее входного языка, то есть языка, на котором системе задаются вопросы. Диалог
идет в стиле: «задал вопрос, получил ответ». Вопросы и ответы занимают отдельные блоки, выделяемые в левой части квадратными скобками. Длина квадратных скобок зависит от размера выражений — исходных (вопроса) и результатов вычислений (ответов на вопросы). Знак > является знаком приглашения к заданию вопроса. Мигающая вертикальная черта | — маркер ввода (курсор). Ввод выражений (вопросов) задается по правилам, давно принятым для строчных редакторов. Они хорошо известны, и мы не будем на них останавливаться подробно. Отметим лишь, что клавиша Ins позволяет задавать два основных режима ввода — замены и вставки. В режиме замены вводимый символ заменяет существующий символ, который отмечен маркером ввода. Л в режиме вставки новый символ вставляется в текст, не уничтожая имеющиеся символы.
Перемещение маркера ввода осуществляется клавишами перемещения курсора <-. и —>. Клавиша Backspace стирает символ слева от маркера ввода, а клавиша Del — справа от маркера ввода. Для ввода любого символа надо нажать соответствующую клавишу. Клавиша Shift включает верхний регистр для ввода заглавных (прописных) букв, а клавиша Caps Lock переключает верхний и нижний регистры клавиш с буквами (они меняются местами).
Знак фиксации конца выражения ; (точка с запятой) указывает, что результат его вычисления должен быть выведен на экран, а знак : (двоеточие) отменяет вывод и может использоваться как знак разделителя при записи нескольких выражений в одной строке. Клавиши перемещения курсора позволяют передвигаться по ранее введенным строкам на экране.
Понятие о функциях и операторах
Важным понятием системы Maple 7 (да и математики вообще) является понятие функции. Функция возвращает результат некоторого преобразования исходных данных — параметров функции. Maple 7 имеет множество встроенных функций, включенных в его ядро и в пакеты.
Функция в выражениях задается вводом ее имени и списка параметров функции (одного или нескольких), заключенного в круглые скобки, например sqrt(2) задает функцию вычисления квадратного корня с параметром 2 (численной константой). Основным признаком функции является возврат значения в ответ на обращение к ней по имени (идентификатору) с указанием списка параметров функции. Например:
> 2*sin(l.):
1.682941970
> 2*s1n(l);
2 sin(l)
Обратите внимание на особую роль десятичной точки — здесь она служит указанием к выполнению вычисления значения sin( 1.0) (или, что то же самое, sin( 1.)). А вот синус целочисленного аргумента 1 не вычисляется — считается, что вычисленное значение менее ценно, чем точное значение sin(f).
Ради единства терминологии мы будем пользоваться расширительным понятием функции, относя к нему и те объекты, которые в некоторых языках программирования именуют процедурами или командами. Например, слова plot и plot3d мы также будем называть функциями, которые возвращают графики аргументов- Под командами же мы будем подразумевать прежде всего команды, содержащиеся в меню. Помимо функций в математических системах для записи математических выражений используются специальные знаки — операторы. К примеру, вычисление квадратного корня часто записывается с помощью его специального знака — V. Достаточно хорошо известны операторы сложения +, вычитания -, умножения *, деления / и некоторые другие. Операторы обычно используются с операндами в виде констант или переменных, например в записи 2*(3+4) числа 2, 3 и 4 — это операнды, а знаки * и + — операторы. Скобки используются для изменения порядка выполнения операций. Так, без них 2*3+4=10, тогда как 2*(3+4)=14, поскольку вначале вычисляется выражение в скобках.
Пожалуй, самым распространенным оператором является оператор присваивания :=. Он используется для задания переменным конкретных значений, например:
х:=у:
х ;=у
y:=z:
y.= z
z:=2:
z := 2
x;
2
У:
2
Этот простой пример наглядно иллюстрирует эволюцию переменных и особую роль оператора присваивания в системе Maple. В частности, в этом примере переменные х, у и z взаимосвязаны с помощью операций присваивания. Поэтому задание значения 2 переменной z приводит к тому, что и переменные у и х принимают то же значение.
Другой распространенный оператор — оператор равенства = — используется для задания равенств и логических условий (например, а=Ь), указания областей изменения переменных (например, 1=1..5 означает формирование диапазона изменения 1 от 1 до 5) и определения значений параметров в функциях и командах (например, color=black для задания черного цвета у линий графиков).
Операторы сами по себе результат не возвращают. Но они, наряду с функциями и своими параметрами (операндами), позволяют конструировать математические выражения, которые при их вычислении также возвращают результат. В силу этого математические выражения, содержащие операторы и операнды, могут быть параметрами функций. Выражения в Maple бывают очень простыми (например, имена переменных х и у или константы 1 и 2), а могут содержать многие тысячи знаков. С позиции канонов символьной математики квадратный корень из двух уже является основным результатом вычислений. Поэтому такая функция обычно не вычисляется в численном виде, а выводится в естественном виде с применением знака квадратного корня V. Для вычисления в привычном виде (в виде десятичного числа с мантиссой и порядком) надо воспользоваться функцией
eval f(sqrt(2)) — эта функция обеспечивает вычисление символьного выражения, заданного ее параметром (числом 2).
Обработка и индикация ошибок
При работе с системой Maple 7 надо строго придерживаться правил корректного ввода выражений и иных объектов Maple-языка, называемых синтаксисом языка. Однако, как гласит русская пословица, не ошибается только тот, кто ничего не делает. Даже у опытного пользователя возможны ошибки в ходе ввода выражений и задания алгоритмов вычислений.
Алгоритмические, но синтаксически корректные ошибки часто могут не распознаваться системой. Например, если в выражении a*sin(x) вы вместо аргумента х взяли аргумент Ь, то есть записали a*sin(b), то такую ошибку Maple 7 распознать не может, ибо синтаксически как a*sin(x), так и a*sin(b) абсолютно корректны. Если вы перепутаете синус с косинусом и запишете a*cos(x), то такая ошибка также не будет распознана.
Ошибки в записи выражений, описывающих те или иные алгоритмы вычислений, не нарушающие синтаксическую корректность, системой Maple 7 не распознаются. Контроль за такими ошибками целиком лежит на пользователе.
Приведем еще один характерный пример ошибки, которую Maple 7 не может распознать. Вводя выражение X/Y*Z, мы можем предположить, что это означает X/(Y*Z). Однако в Maple 7 приоритет операций деления и умножения одинаков. Поэтому Maple 7 вначале делит X на Y, а затем полученный результат умножает на Z:
> X/Y*Z:
XZ
У
Ошибки такого рода называют семантическими. Если бы мы не проверили вывод с помощью оператора вычисления предыдущего выражения (%), то эта ошибка осталась бы нераспознанной. Выявление и устранение семантических ошибок выполняется на этапе отладки вычислений и программ.
^ПРИМЕЧАНИЕ Используйте блокировку вычислений с помощью знака двоеточия только в том случае, '—*когда вы абсолютно уверены в правильности записи выражения. Иначе вы можете не
заметить вкравшейся в вычисления серьезной ошибки.
В нашем примере мы получили бы верный результат, заключив выражение Y*X в круглые скобки. Как обычно, они предназначены для задания явного приоритета выполнения операций — в нашем случае вначале будет вычислено выражение в скобках (Y*Z), а затем уже X будет поделено на это выражение:
> X/(Y*Z);
X
YZ
Но вернемся к ситуации с синтаксическими ошибками, которые система Maple 7 распознает с помощью встроенного в нее синтаксического анализатора. Например, если вы задали неправильное имя функции, то это будет опознано синтаксическим анализатором и вычисления не будут выполняться. Maple 7 просто повторит выражение в строке вывода:
son(l.O):
son(l.O)
В этом примере вместо имени функции sin введено ошибочное имя son. Maple воспринимает его как некую введенную пользователем функциональную зависимость и потому просто повторяет запись и не выводит сообщение об ошибке. А вот другая ситуация — имя функции sin введено верно, но вместо десятичной точки при задании вещественного числа 1.0 использована запятая:
sin(l.O);
Error, (in sin) expecting 1 argument, got 2
В данном случае Maple 7 «знает», что работа идет с его встроенной функцией синуса, которая должна иметь единственный аргумент. Задание (1.0) означает, что растяпа-пользователь ввел вместо вещественного числа два целочисленных числа, разделенных запятой. Этого синтаксический анализатор Maple 7 стерпеть уже не смог, и он отреагировал выдачей сообщения об ошибке (на экране дисплея оно имеет малиновый цвет). Исправьте ошибку, и синус единицы будет благополучно вычислен:
sin(l.O):
.8414709848
А вот еще одна типичная ситуация — в последовательности выражений опущен знак-разделитель (двоеточие или точка с запятой):
Х:=2: Y:=3| Z:=4:
Error, missing operator or ';'
Тут Maple 7 не только реагирует на ошибку, но и пытается подсказать, что именно пропущено. Более того, маркер ввода в виде мигающей вертикальной черточки будет помещен на место ошибки и вы сможете тут же устранить ошибку. Правда, подсказки не всегда точны — в нашем случае явно пропущен разделитель в виде двоеточия, a Maple 7 сообщает о пропуске точки с запятой. Впрочем, откуда системе знать, хотим мы вывести результат операции Y:=4 сразу (для этого нужен разделитель в виде точки с запятой) или откладываем на потом (с помощью символа двоеточия).
Вот еще один пример характерной ошибки — три знака * подряд:
2**|*3*sin(l.);
Error, '*' unexpected
Здесь Maple 7 подсказывает, что один оператор * надо убрать — два знака * подряд означают вполне законный вариант оператора — возведение в степень. При этом маркер ввода вновь указывает место ошибки. Проанализируйте следующие простые примеры:
2**3*Sln(l.);
6,731767878
> 2A3*sin(1.0);
6.731767878
> 2A(3*sin(1.0));
5.753392735
В этом примере Maple 7 вначале вычисляет функцию синуса, затем производит возведение в степень и лишь потом операцию умножения. Впрочем, такой приоритет операций принят практически во всех системах компьютерной математики и в языках программирования.
Некоторые пользователи версии системы Maple V R5 наблюдали, что русская буква «я» в конце программного комментария (он вводится после символа #) вела к зависанию программы, что требовало ее перезагрузки. В Maple 7 этот недостаток устранен:
> #Буква "я" в конце комментария уже не вызывает зависания
Позже, при описании программирования в Maple 7, мы опишем более развитые средства контроля над допускаемыми пользователем ошибками. Пока же ограничимся приведенными выше сведениями, полезными уже в начале диалога с системой.
Управление с помощью мыши
Для управления состоянием ячеек можно использовать контекстное меню, появляющееся при нажатии правой кнопки мыши. Если установить указатель мыши на-шходной ячейке, то это меню будет содержать три команды:
О Standard Math — включает и выключает показ входных выражений в естественной математической форме;
О Maple Input — управляет видом ячейки ввода (математический/текстовый);
О Execute — включает выполнение ячейки.
Также в зависимости от состояния буфера обмена и наличия выделения в контекстном меню могут присутствовать команды Cut, Сору и Paste.
Левая кнопка мыши может использоваться для передачи фокуса управления или переноса маркера ввода, а также выделения частей документа.
Примеры задания функции пользователя и построения ее графика
На рис. 1.12 показано, как задается функция пользователя f(х) с одним параметром х. Нетрудно заметить, что параметр указывается в скобках после имени функции а для записи выражения функции используется знак присваивания := (двоеточие со знаком равенства). Для построения графика функции f (х) используется функция plot в форме:.
plot(f(x). х - -15..15);.
Нетрудно заметить, что при наличии нескольких параметров функции (в нашем случае их два) они разделяются запятыми. Выражение х=-15. .15 задает, во- первых, указание, относительно какой переменной строится график, а во-вторых, говорит, в какой области значений меняются значения этой переменной — в нашем случае от -15 до +15. Шаг изменения переменной выбирается автоматически в зависимости от размеров и вида графика.
Пример построения трехмерного графика поверхности
Столь же просто, как и график обычной функции в декартовой системе координат, можно построить график трехмерной поверхности. Это показано на примере рис. 1.13. В данном случае задана функция двух переменных z(x,y):=sin(x*y) и ее график строится с использованием графической функции plot3d. Правила задания пределов изменения переменных х и у соответствуют описанным выше.
Рис. 1.13. Построение графика трехмерной поверхности
Возможно, многих читателей вполне удовлетворят уже описанные возможности, но сила системы Maple 7 прежде всего в возможности выполнения аналитических (символьных) вычислений. Поэтому мы перейдем к обсуждению некоторых из них.
Управление формой представления документа
Форматы математических выражений
Приведенные выше примеры реализуют обычную форму представления документа. В нем имеются текстовые комментарии (для их ввода надо нажать клавишу F5), сформулированные на Maple-языке задания на вычисления, результаты вычисле- нин в виде обычных математических формул и, там где это указано, графики.
Эта выстраданная форма представления документов является компромиссом между наглядностью и простотой ввода исходных данных. Может показаться, что в этом отношении намного дальше продвинулись системы класса Mathcad — у них исходные данные и описание алгоритмов вычислений давно задаются в виде естественных математических символов и формул. За исключением, правда, функций символьных вычислений, пока не имеющих общепринятых специальных математических символов и вводимых путем указания их имен.
Однако это достоинство кажется явным лишь на первый взгляд. Ввод сложных формул довольно трудоемок и требует специфических навыков, отсутствующих даже у самых опытных пользователей. В Mathcad эту проблему решили созданием панелей (палитр) с полным набором всех математических символов и шаблонов для представления сложных формул, таких как интегралы, суммы и произведения рядов, производные и т. д. Однако, хотя при этом их ввод и становится более простым, легким его не назовешь, а монотонность операций нервирует многих пользователей. В Maple 7 ввод исходных данных производится привычными для языков программирования средствами — с помощью функций и операторов, задаваемых в командной строке. Зато результаты вычислений получаются по умолчанию в виде обычных формул (хотя есть возможность их представления в другом виде, например принятом в редакторе LaTeX или языках программирования Fortran и С).
Тем не менее вид документа с таким специфическим заданием формул может озадачить математика и любого пользователя, не слишком знакомого с основами программирования. В целом он отрицательно сказывается на восприятии документов.
Представление входных выражений в математической форме
Для устранения подобного недостатка (а скорее, противоречия) Maple 7 предлагает ряд средств. Во-первых, это текстовые комментарии, в которые можно вводить формулы. Во-вторых, это инертные функции, которые не вычисляются, но дают вывод на экран в естественной математической форме (рис. 1.14). И в-третьих, это возможность быстрого преобразования строковых выражений ввода в естественные математические формулы.
Об инертных функциях мы поговорим позже более подробно. Отметим лишь, что имена таких функций начинаются с большой буквы и функции выводят
математическое выражение в естественной математической нотации. С помощью ряда функций, например eval f, можно вычислить математическое выражение, полученное инертной функцией. На рис. 1.14 внизу дан пример такого вычисления для предела функции sin(x)/x. .
Рис. 1.14. Примеры применения инертных функций
Теперь остановимся на преобразовании исполняемых выражений ввода на Maple- языке в обычные математические формулы. Для этого достаточно, выделив входное выражение, нажать первую кнопку контекстной панели — соответствующее выражение тут же приобретет вид обычной математической формулы. Па рис. 1.15 показаны примеры вычислений интеграла при его задании в строках ввода в виде текстового выражения и в обычной математической нотации.
Таким образом, всегда можно получить формульное представление входных выражений. Более того, другой кнопкой их можно превратить в инертную форму, тогда выражение перестает вычисляться и становится, по существу, обычным комментарием.
Следует, однако, учитывать, что представление входных выражений в виде формул обычно занимает заметно больше места на экране и в документе, чем описание выражения на Maple-языке, поэтому оно используется довольно редко. Кроме того, далеко не всякое входное выражение может быть представлено в виде математической формулы — многие функции ядра и библиотек Maple 7
попросту не имеют общепринятых обозначений в виде специальных математических знаков.
Д hie £> V>₽w insert F^met ' ' options Wirdcw Н*&|Сеернугь
ИЩЙ M 03 в №1EQ® Ml Щ Ш.0.. ”.
Исполнение документа7
Выполнение текущего выражения
Автокоррекция выражений
Инертная/активная форма выражений
Стандартная/текстовая форма выражений
' Вычисление с заданием выражения в текстовом формате
int(xAn,x);:
(« + 1)
" Вычисление с преобразованием выражения в стандартную математическую форму
I х ах
^(л+ 1)
. *Л + 1|
1,5s Bytes-МОМ- ' АуяЬЫе,
Рис. 1.15. Примеры вычислений интеграла при его задании в текстовой и математической нотации
Символьные вычисления
Простой пример символьных вычислений
Maple 7 открывает обширные возможности выполнения символьных (аналитических) вычислений. Начнем с простого примера — требуется найти сопротивление трех параллельно включенных резисторов R1, R2 и R3 произвольной величины. Из курса электротехники известно, что можно задать следующее равенство, определяющее суммарное сопротивление R0;
:> eq:=l/R0=l/Rl+l/R2+l/R3;
= 1 _ 1 1 1
eq: RO" RI + R2 + R3
Теперь достаточно использовать функцию решения уравнений solve, чтобы найти значение R0 в общей аналитической форме:
> R0:-solve(eq,R0):"
R1R2R3
' R2R3+R1 R3+R] R2
Нетрудно проверить, что результат может быть получен и в численном виде для конкретных значений R1, R2 и R3:
> Rl:=l:R2:=2:R3:-3:R0;
6
11
> evaTfU);
.5454545455
Типовые символьные вычисления
На рис. 1.16 показано несколько примеров выполнения символьных вычислений математического характера: преобразование тригонометрического выражения с помощью функции упрощения simplify, вычисление суммы ряда функцией sum и вычисление неопределенного интеграла функцией int.
113Maple7 -|d4mw«-^eiv« 1j]
^ £яе £dH ^tew fnswt fop^at '' t fipt<Gn$ ^ihdfiw Help*^l x
' Демонстрация символьных преобразований и вычисленийд
> eql:«cos(х)Л5 + sin(x)A4 + 2*cos(x)A2 - 2*sin(x)A2 - cos(2*x);
5422
eql := cos(x) + sin(x) + 2 cos(x) -2sin(x) -cos(2x)
simplify(eql); cos(x) + cos(x)
eq2:—x*sqrt(xA2);
"> simplify(eq2); 2/ x
,x csgn(x)
sum(l/l,i-l..50);
13943237577224054960759
.3099044504245996706400'
lnt(xAa,x);
(!♦«)1 + a i
Рис. 1.16. Примеры символьных вычислений
Обратите внимание на результат выполнения последнего примера. Он выделен. Выделение можно осуществить протаскиванием указателя мыши с нажатой левой кнопкой.
Вычисления производных и интегралов в символьном виде, пожалуй, являются наиболее характерными областями применения систем символьной математики. На рис. 1.17 показаны примеры таких вычислений с применением функции dif для вычисления производной и int для вычисления определенных интегралов.
Рис. 1.17. Примеры вычисления производной и интегралов
Обратите внимание на функцию Int — инертную форму функции int. Как уже отмечалось, инертная форма служит для вывода записи интеграла в естественной математической форме, но с отложенным «на потом» выводом результата вычислений. Как отмечалось, это один из путей наглядного представления входных выражений. Все инертные функции имеют имена, начинающиеся с большой буквы, тогда как обычные функции имеют имена, начинающиеся с маленькой буквы.
На другом рисунке (рис. 1.18) показано вычисление интеграла, который не имеет представления через функции системы Maple 7, но может быть вычислен ею в численном виде.
Пример вычисления определенного интеграла, не имеющего представления 1 через функции системы Maple
Некоторые интегралы не имеют представления через функции системы Maple 7. В этом случае интеграл просто повторяется:
Г1
:=, Д
г1
(-0еri := —гdi
Однако, используя функцию evalf, можно вычислить численное значение такого интеграла: > evalf(rl) ;
3.977463261
f ТЫ 1&йяеея..З.®МAvailable:. 184S
Рис. 1.18. Численное вычисление значения интеграла, не имеющего аналитического представления
Разбухание результатов символьных вычислений
Одной из проблем систем компьютерной алгебры является «разбухание» результатов — как оконечных, так и промежуточных. Связано это с тем, что аналитическое представление порою может оказаться весьма громоздким даже для простых задач — пожалуй, это главная причина прохладного отношения к аналитическим вычислениям со стороны инженеров, особенно практиков. К примеру, численное решение кубического уравнения не вызовет трудностей даже на калькуляторе [1], тогда как системы символьной математики выдают его в виде формул, едва помещающихся на экране. Это и иллюстрирует рис. 1.19, на котором показано решение квадратного уравнения (его знает каждый мало-мальски преуспевающий в учебе школьник) и решение кубического уравнения (оно вызывает бурный восторг или легкий шок — в зависимости от отношения учащегося к математике).
Щепетильность системы в еа стремлении выдать полный и математически предельно точный результат, безусловно, очень важна для математиков. Но для многих прикладных задач, с которыми имеют дело инженеры и техники, она оборачивается неудобствами. Инженеры часто прекрасно знают, какие из членов математических формул можно преспокойно отбросить, тогда как для мате-
матика-теоретика или аналитика такое действо — типичное кощунство. Порою системы компьютерной алгебры выдают настолько «заумный» и огромный результат, что его упрощение может занять куда больше времени, чем получение более простого результата с заранее выполненными упрощениями. Впрочем, каждому свое! И Maple имеет множество функций, обеспечивающих преобразование результатов в ту или иную форму.
Рис. 1.19. Решение квадратного и кубического уравнений в символьной форме
Пример решения системы линейных уравнений
Приведем еще один характерный пример — решение системы линейных уравнений с помощью функции solve (рис. 1.20). Обратите внимание на форму задания уравнений и выдачи результатов и поразительную естественность решения задачи. Значение переменной z на рис. 1.20 выделено, где видно, что Maple отображает его поле под панелью инструментов.
Слова solve, diff и int с их аргументами являются именами встроенных в систему функций, возвращающих символьные значения результатов. Нормальному пользователю может стать дурно, если вспомнить, что таких функций с их вариантами система Maple 7 имеет около трех тысяч! Да к тому же многие
функции (та же solve для решения уравнений) подчас могут применяться во многих случаях и имеют массу параметров и директив для уточнения направлений решения и расширения областей применения.
^2£i^2£i[QMaple? - |Sle5.m$ - [Setver 1])
^2£i
^2£i
^^ь ЕЛ y»w $n«l fw ^^viyx gpSDhi у$п&» Ц*'
x|e| Ц j.g] Ы 7 | Xj |z- 13983/110
Пример решения системы из пяти линейных уравнений
eqsleqsl>5*х+ 5*у+4*2+3*t +2*u = 1,>3*у+ 4*2-8*t+2*u =1,>х +у + 2+t +u= 9,>8*х+ 4*2+3*t+2*u =i};eqsl :={х + 2 у+3 z +4/+ 5 и =6, 5x + 5у>5*х+ 5*у+4*2+3*t +2*u = 1,>3*у+ 4*2-8*t+2*u =1,>х +у + 2+t +u= 9,>8*х+ 4*2+3*t+2*u =i};eqsl :={х + 2 у+3 z +4/+ 5 и =6, 5x + 5уx+iy + z + / + « = 9, 8x+4z + 3/ + 2« = 1,3^ + 4j-8/+2w > al:=solve(eqsl, {x,y,z,t,u}) ;x+iy + z + / + « = 9, 8x+4z + 3/ + 2« = 1,3^ + 4j-8/+2w > al:=solve(eqsl, {x,y,z,t,u}) ;{х + 2*у + 3*2 + 4*t + 5*u = 6
eqsl
eqsl
>
5*х
+ 5*у
+
4*2
+
3*t +
2*u = 1,
>
3*у
+ 4*2
-
8*t
+
2*u =
1,
>
х +
у + 2
+
t +
u
= 9,
>
8*х
+ 4*2
+
3*t
+
2*u =
i};
eqsl :=
{х + 2 у
+
3 z +
4/
+ 5 и =
6, 5x + 5у
>
5*х
+ 5*у
+
4*2
+
3*t +
2*u = 1,
>
3*у
+ 4*2
-
8*t
+
2*u =
1,
>
х +
у + 2
+
t +
u
= 9,
>
8*х
+ 4*2
+
3*t
+
2*u =
i};
eqsl :=
{х + 2 у
+
3 z +
4/
+ 5 и =
6, 5x + 5у
x+iy + z + / + « = 9, 8x+4z + 3/ + 2« = 1,3^ + 4j-8/+2w > al:=solve(eqsl, {x,y,z,t,u}) ;
x+iy + z + / + « = 9, 8x+4z + 3/ + 2« = 1,3^ + 4j-8/+2w > al:=solve(eqsl, {x,y,z,t,u}) ;
-13983110-139831108589168-1736
-13983
110
-13983
110
al := {« =, x = 56, v =, t =,
‘110 J 555
-.....
Рис. 1.20. Решение системы из пяти линейных уравнений
В утешение можно отметить три важных обстоятельства:
О мало кто на практике использует из всей этой массы функций более чем несколько десятков;
О названия и формы представления многих функций интуитивно предсказуемы;
О наконец, система имеет превосходную справочную базу данных, с помощью которой при определенном терпении (и непременном желании) можно разобраться с синтаксисом любой функции.
Необходимые функции и правила их преобразования система черпает в библиотеке размером около 40 Мбайт (она содержит файлы maple.hdb, maple.lib, maple.ind и maple.cmd). Это Иногда занимает заметное время, особенно при первом использовании определенной группы операторов (например, тригонометрических). При повторном использовании этой группы система заметно убыстряется, так как использует уже загруженные средства.
Повышение эффективности работы с системой
Работа с панелью инструментов
Пока что мы при проведении вычислений пользовались лишь простейшими средствами управления системой — вводом выражений и текстовых надписей с клавиатуры. Теперь пора расширить представления о работе с Maple. Прежде чем начать работать с ее меню, надо отметить, что для многих (особенно начинающих) пользователей оказывается удобнее использовать кнопки, расположенные на панелях инструментов, которые находятся прямо под строкой меню.
На рис. 1.21 показано назначение кнопок панели инструментов (Tool Ваг). Эти кнопки дублируют наиболее важные операции главного меню и имеют наглядные и типовые для Windows-приложений обозначения. Назначение кнопок и других деталей интерфейса также показаны на рис. 1.21.
|0 Maple 7 - (Tooibarms - ISeivei 1Ц
МП В
1$ f* 6* X«W lw»" Рорти*« Д*«а №*w d*-,IJIX|
'1 2 3 4 6 6 7 8 9 10 11 1213 1416 16 17 18 19 2021 22 23 24A
1 - Создание нового документа2 - Открытие нового документа
3 - Загрузка ULR адреса4 - Сохранение активного документа
*5 ■ Печать активного документа6 - Перенос в буфер обмена выделения
7 - Копирование выделения в буфер8 - Копирование из буфера в документ;
9 - Отмена последней операции10-Возврат к последней отмененной операции
11 - Вставка неисполняемого выражения 12 - Вставка комментария
13 - Вставка исполняемого выражения14 - Восстановление закрытых секций
15 - Создание закрытых секций16 - Переход по гиперссылке назад<
17 - Переход по гиперссылке вперед18 - Остановка вычислений
19 - Масштаб 100%20 ■ Масштаб 150%
21 - Масштаб 200%22 - Отображение непечатаемых символов
23 ■ Полное раскрытие активного окна24 - Команда restart
<== Скобка, определяющая ячейку
|Маркер ввода Полоса прокрутки по вертикали -->
[> Приглашение к вводуСтрока состояния
!«-«•B^4«N
Рис. 1.21. Панель инструментов
При необходимости панели инструментов можно убрать с помощью команд меню View (см. рис. 1.11). Если графика выводится в отдельное окно, там имеется своя панель инструментов, которая будет описана ниже.
Работа с контекстной панелью
Другое полезное средство для облегчения работы по форматированию текстов, заданию параметров входных математических выражений и графиков — контекстная панель инструментов. Как следует из названия, контекстная панель Context Ваг является контекстно-зависимой — ее содержание зависит от текущего положения маркера ввода или выделения.
Контекстная панель содержит следующие элементы при вводе текста комментария (рис. 1.22):
О списки для задания стиля, шрифта и размера символов, кнопки для придания полужирного (Bold), наклонного (Italic) и подчеркнутого (Underline) начертания;
О кнопки для выравнивания текста;
О кнопку команды исполнения всего документа.
||5Мар1е 7 ' (Contbarms - [Sewer 1Ц
Й f^ £& ^** Insert Fojtn# _" < Qp^om Window tie^ z^JdPj >c
QS® 03 ОШ FR @ FEER S 0 0
Normal 123456 789 10#
2 - Список шрифтов4 - Полужирное начертание6 - Подчеркнутое начертание8 - Выравнивание текста по центру10 - Исполнение документа2 - Список шрифтов4 - Полужирное начертание6 - Подчеркнутое начертание8 - Выравнивание текста по центру10 - Исполнение документаI 1 - Список стилей
2 - Список шрифтов
4 - Полужирное начертание
6 - Подчеркнутое начертание
8 - Выравнивание текста по центру
10 - Исполнение документа
2 - Список шрифтов
4 - Полужирное начертание
6 - Подчеркнутое начертание
8 - Выравнивание текста по центру
10 - Исполнение документа
I 3- Список размеров символов
| 5 - Курсивное начертание
| 7- Выравнивание текста по левому краю
| 9 - Выравнивание текста по правому краю
Timer 15s 8^r35PM АуабвЫг 1 85G;
Рис. 1.22. Контекстная панель инструментов для текста комментария
На рис. 1.15 была показана контекстная панель в случае, когда маркер ввода находится в строке ввода. Там же поясняется назначение кнопок панели для данного случая. Особо остановимся на кнопке со значком (^), которая обеспечивает проверку синтаксиса вводимого выражения до того, как оно завершено символами двоеточия или точки с запятой.
Поясним на примере. Допустим, мы ввели ошибочное выражение для интеграла, забыв указать показатель степени в подынтегральном выражении хАп:
int(xA,x)
Если нажать кнопку автокоррекции, оно примет вид:
1nt(xA Я? ,х)
Maple явно указывает на необходимость ввода показателя степени — в нашем случае переменной п.
А вот другой пример — мы забыли ввести закрывающую скобку в выражение: > int(x*n ,х
Если теперь нажать кнопку автокоррекции, то вставка скобки произойдет автоматически:■
> int(x*n ,х)
Таким образом, данная кнопка может быть полезна для оперативного контроля синтаксиса и исправления грубых ошибок при вводе выражений в формате Maple Input. Однако необходимо делать это до их исполнения.
Заметим, что пока формула является входным выражением в математической форме, она может редактироваться — но не сама по себе, а в виде текстового выражения, отображающегося в поле редактирования на контекстной панели. При этом изменение записи выражения в поле редактирования немедленно влечет соответствующее изменение вводимой формулы. Это тоже довольно удобное средство, имеющее свои преимущества перед прямым редактированием формулы — в MathCAD, например, прямое редактирование формул требует определенных навыков и усваивается довольно туго.
[|%Mapie"7"21inteH7m2^^
<&J> Edit v«w tww Fopaat ■,■ Дйом jvinlow yelp»l<?$xl
1*Й1 П 1
1 2 34 5 678I
■ Переключение между стандартной и текстовой формами ввода выражения“
' *2 - Переключение между инертной и активной формами выражения
- Выполнение текущего математического выражения
■ Исполнение документа
- Замена всех вхождений в выражение на содержимое поля редактирования
- Замена выделения на содержимое поля редактирования
• Завершение редактирования
■ Поле редактирования выделенного выражения
Вычисление с заданием выражения в текстовом формате
> lnt(xAn,x);
(»+ 1)
л + 1
Вычисление с преобразованием выражения в стандартную математическую форму
П JLх at
(л* 1)
X
Л + 1
Т— Wi* в^-*^^
Рис. 1.23. Контекстная панель инструментов для выражений,представленных в математической нотации
Рисунок 1.23 показывает назначение кнопок контекстной панели при установке маркера ввода в строку, содержащую входное выражение в математической нотации. Нетрудно заметить, что в этом случае контекстная панель несколько изменяется — в частности, в ней появляется поле ввода, в котором выведено выделенное выражение на Maple-языке. Такой же вид контекстной панели будет, если выделено выражение или его часть в строке вывода.
Контекстная панель инструментов для двумерных графиков
£$ Maple 7 - [tnierlg2.mws - (Setve* 1Ц£$ Maple 7 - [tnierlg2.mws - (Setve* 1Ц^ £1* £<Й Mew F,m* Setyw Style Legend 6*f$ Eteieaw^ £1* £<Й Mew F,m* Setyw Style Legend 6*f$ Eteieaw12 3 4 5 6 7 8 9 101 - Координаты графического маркера3 - Задание графика точками6 - Задание заливки без линий сетки7 - Задание осей по нижней и левой границе9 - Построение графика без осей12 3 4 5 6 7 8 9 101 - Координаты графического маркера3 - Задание графика точками6 - Задание заливки без линий сетки7 - Задание осей по нижней и левой границе9 - Построение графика без осейДвумерные графики строятся с заданием ряда параметров, определяющих общий стиль графика. Эти параметры задают цвет и стиль линий графика, вывод координатных осей и т. д. Все параметры имеют значение по умолчанию — они и определяют вид графика, при формировании которого параметры не указаны. Однако ряд параметров можно изменять, щелкая на соответствующих кнопках контекстной панели. На рис. 1.24 показано назначение кнопок контекстной панели инструментов для редактирования параметров двумерных графиков. Такая панель появляется, если двумерный график выделен или на нем находится маркер ввода. .
£$ Maple 7 - [tnierlg2.mws - (Setve* 1Ц
£$ Maple 7 - [tnierlg2.mws - (Setve* 1Ц
^ £1* £<Й Mew F,m* Setyw Style Legend 6*f$ Eteieaw
^ £1* £<Й Mew F,m* Setyw Style Legend 6*f$ Eteieaw
12 3 4 5 6 7 8 9 10
1 - Координаты графического маркера
3 - Задание графика точками
6 - Задание заливки без линий сетки
7 - Задание осей по нижней и левой границе
9 - Построение графика без осей
12 3 4 5 6 7 8 9 10
1 - Координаты графического маркера
3 - Задание графика точками
6 - Задание заливки без линий сетки
7 - Задание осей по нижней и левой границе
9 - Построение графика без осей
An- sv Export Mftdow Helpл1612Й
- Задание графика в виде сплошной линии
- Задание заливки с линиями сетки
- Задание осей в виде рамки
- Задание осей по центру графика
- Установка масштаба графика
Назначение кнопок панели форматирования двумерных графиковНазначение кнопок панели форматирования двумерных графиков> plot (sin(хЛ3) *cos (х) , х—Pi. . Pi,color—blue) ;> plot (sin(хЛ3) *cos (х) , х—Pi. . Pi,color—blue) ;Рис. 1.24. Контекстная панель инструментов для двумерного графикаРис. 1.24. Контекстная панель инструментов для двумерного графика
Назначение кнопок панели форматирования двумерных графиков
Назначение кнопок панели форматирования двумерных графиков
> plot (sin(хЛ3) *cos (х) , х—Pi. . Pi,color—blue) ;
> plot (sin(хЛ3) *cos (х) , х—Pi. . Pi,color—blue) ;
Рис. 1.24. Контекстная панель инструментов для двумерного графика
Рис. 1.24. Контекстная панель инструментов для двумерного графика
Действие большинства кнопок этой формы контекстной панели достаточно очевидно, и вы легко сможете опробовать эти кнопки в работе. Так, график на рис. 1.18 построен точками при нажатии кнопки, задающей стиль Point style. Кроме того, в функции plot построения графика явно использована опция со1ог=Ыце, которая задает синий цвет точек графика. ’
Полезно отметить, что в левой части контекстной панели есть ноле с координатами текущей выделенной точки графика. Чтобы выделить точку, надо подвести к ней указатель мыши и щелкнуть левой ее кнопкой.
При построении контурных графиков и графиков плотности имеется возможность заливки их областей между линиями уровня с выводом линии сетки, на которой рассчитываются линии уровня, и без вывода линий сетки.
Контекстная панель инструментов для трехмерных графиков
Свой вид контекстной панели имеют и трехмерные графики. Назначение ее элементов представлено на рис. 1.25.
^1^3^^1^3^| |^ Мар1е 7 - (interfgS.tmvs - (Sefver W
^1^3^
^1^3^
-$ ^ && Y»w re^tobt QfJjjrw $yfe £obr &s6s pt^eboft л ^' EjgSdK ^fofew jjrt*'
1123 4 5 6 7 8 9 1011 121323 4 5 6 7 8 9 1011 12131,2 - Угол обзора по вертикали и горизонтали- Заливка без линий-Только видимые линии- Все линии без заливки- Представление осей в виде контейнера- Представление осей в обычной форме- Задание масштаба графика1,2 - Угол обзора по вертикали и горизонтали- Заливка без линий-Только видимые линии- Все линии без заливки- Представление осей в виде контейнера- Представление осей в обычной форме- Задание масштаба графика14- Видимые линии и заливка- Пинии уровня и заливка■ Пинии уровня без заливки- Построение фигуры точками- Представление огибающих осей13-Удаление осей14- Видимые линии и заливка- Пинии уровня и заливка■ Пинии уровня без заливки- Построение фигуры точками- Представление огибающих осей13-Удаление осей
1
1
23 4 5 6 7 8 9 1011 1213
23 4 5 6 7 8 9 1011 1213
1,2 - Угол обзора по вертикали и горизонтали
- Заливка без линий
-Только видимые линии
- Все линии без заливки
- Представление осей в виде контейнера
- Представление осей в обычной форме
- Задание масштаба графика
1,2 - Угол обзора по вертикали и горизонтали
- Заливка без линий
-Только видимые линии
- Все линии без заливки
- Представление осей в виде контейнера
- Представление осей в обычной форме
- Задание масштаба графика
14
- Видимые линии и заливка
- Пинии уровня и заливка
■ Пинии уровня без заливки
- Построение фигуры точками
- Представление огибающих осей
13-Удаление осей
14
- Видимые линии и заливка
- Пинии уровня и заливка
■ Пинии уровня без заливки
- Построение фигуры точками
- Представление огибающих осей
13-Удаление осей
Назначение кнопок панели форматированиятрехмерных графиков
> р1оТЗВ(хЛ2+уЛ2,х—2. . 2,у—2. . 2) ;
Рис. 1.25. Контекстная панель инструментов для трехмерных графиков
С помощью контекстной панели трехмерных графиков можно задать 7 стилей построения трехмерных графиков и 4 стиля вывода координатных осей. Воз-
можны следующие стили трехмерных графиков (группа из семи кнопок в середине панели): функциональная окраска с видимыми линиями каркаса, функциональная окраска без линий каркаса, функциональная окраска с контурными линиями, цветной каркас с видимыми линиями, цветные контурные линии, цветной каркас со всеми (в том числе невидимыми) линиями и поверхность, построенная точками.
Два расположенных слева счетчика позволяют задавать нужный угол обзора, причем Maple сразу же отражает заданный поворот построенной фигуры. Ее также можно вращать мышью, поместив указатель в область графика и держа нажатой левую кнопку. При этом счетчики будут отображать изменяющиеся при перемещении мыши углы обзора. Это очень удобное средство для наблюдения за деталями трехмерных поверхностей и фигур, которые строит функция plot3d.
Строка состояния
При работе с Maple полезно следить за информацией в строке состояния системы, расположенной внизу экрана. В ней появляются надписи, поясняющие исполняемые операции. Кроме того, в полях на правой части выводится текущее время, объем используемой оперативной памяти и объем доступной памяти на жестком диске, на котором установлена система.
Хотя панели инструментов и строка состояния удобны для быстрого управления системой, они обладают одним существенным недостатком — занимают часть полезной площади экрана. Однако в меню View имеются команды, позволяющие убрать с экрана любые из этих элементов. Действие этих команд вы можете заметить, если внимательно присмотритесь к предыдущим рисункам.
Горячие клавиши системы .
Для открытия меню можно использовать одновременное нажатие клавиши Alt и клавиши, которая подчеркнута в названии меню. Вызов команды при одновременном нажатии нескольких клавиш получило название «горячих» клавиш управления (Hot Keys).
Таблица 1.1. Горячие клавиши для открытия меню
Меню Горячие клавиши
Edit
Alt+E
File
Alt+F
Format
Alt+R
Help
Alt+H
Insert
Alt+I
Options
Alt+O
View
Alt+V
Spreadsheet
Alt+S
Window
Alt+W
«Горячие» клавиши присвоены и многим другим, наиболее распространенным операциям. Они облегчают и ускоряют (наряду с кнопками панелей инструментов) быстрое управление программой. Ниже в таблицах приведен список наиболее используемых «горячих» клавиш, разбитых на ряд категорий. .
Таблица 1.2. Горячие клавиши для задания начертания символов и режимов ввода текста
Действие
Горячие клавиши
Полужирное начертание
Ctrl+B
Курсивное начертание
Ctrl+I
Подчеркнутое начертание
Ctrl+U
Включение/выключение ввода текста
F5
Установка режима ввода (Input Mode)
Ctrl+M
Задание режима ввода текста (Text Input Mode)
Ctrl+T
Таблица 1.3. Горячие клавиши для операций выделения
Действие
Горячие клавиши
Выделение символа слева
ShiftH—
Выделение символа справа
Shift+®
Выделение строки вверх
Shift+-
Выделение строки вниз
Shift-ь?
Выделение от маркера ввода до начала строки
Shift+Home
Выделение от маркера ввода до конца строки
Shift+End
Выделение от маркера ввода и до начала документа
Shift+PgUp
Выделение от маркера ввода и до конца документа
Shift+PgDn
Таблица 1.4. Горячие клавиши операций удаления, копирования и вставки
Операция
Горячие клавиши
Выделить все
Ctrl+A
Копирование выделения в буфер
Ctrl+C
Перенос выделения из документа в буфер
Ctrl+X
Вставка содержимого буфера в документ
Ctrl+V
Удаление строки ввода (параграфа)
Ctrl+Delete
Закрытие выделенной секции
Ctrl+.
Поиск
Ctrl+F
Вставка параграфа после маркера
Shift+Ctrl+J
Вставка параграфа до маркера
Shift+Ctrl+K
Восстановление закрытых секций
Ctrl+,
Вставка исполняемой группы после маркера
Ctrl+J
Вставка исполняемой группы до маркера
Ctrl+K
Вставка конца страницы'
Ctrl+Enter
Вставка выражения в стандартной математической форме
Ctrl+R
Вставка выражения в форме Standart Math Input
Ctrl+G
Таблица 1.5. Горячие клавиши переходов по документу
Действие
Горячие клавиши
Переход к началу строки
Ноте•
Переход в конец документа■
CtrL+End
Переход к концу строки
End
Переход в начало документа
Ctrl+Home
Создание новой строки
Shift+Enter
Переход к следующей строке ввода
Tab
Переход к предыдущей строке ввода
Shift+Tab
Переход к справке по контексту
Ctrl+Fl или Fl
Переход на предшествующий уровень вложенности секций
Ctrl+UpArrow
Таблица 1.6. Горячие клавиши команд для работы с файлами
Команда
Горячие клавиши
Создание нового документа
Открытие документа
Сохранение документа
Печать документа
Закрытие активного окна (документа)
Завершение работы с Maple
Ctrl+N Ctrl+O
Ctrl+S Ctrl+P
Ctrl+F4 Alt+F4
Таблица 1.7. Горячие клавиши команд просмотра документа
Команда
Горячие клавиши
Перерисовка экрана (Redraw Screen)
Ctrl+L
Просмотр групп ячеек (Show Group Ranges)
F9
Показ секций (Show Section Ranges)
Shift+F9
Разделение строки на две части (Split Group)
F3
Объединение смежных строк (Join Group)
F4
Разделение секции на две части (Split Section)
Shift F3
Объединение смежных секций (Join Section)
Shift F4
Отмена предшествующей операции (Undo)
Ctrl+Z
Таблица 1.8. Горячие клавиши установки масштаба (Zoom Factor)
Масштаб
Горячие клавиши
50% 100%
150% 200% 300% 400%
Ctrl+1
Ctrl+2
Ctrl+3
Ctrl+4
Ctrl+5
Ctrl+6
^!Sl2£^!Sl2£F"F"IIIIIn&oductwn Geiirtg Stalled.,, What's New.., H^wTo Basic F««k#eb« Advanced Feeltoes. CormecltvftyIn&oductwn Geiirtg Stalled.,, What's New.., H^wTo Basic F««k#eb« Advanced Feeltoes. CormecltvftyMathematics..Mathematics..EtsissssshEtsissssshBasrc Mathematics..Basrc Mathematics..JJCalculus.,..:Different Equations ,-Disciete Matham sites.., Е^**айяи..•Financial Funtiigss.* pintbog Нор!#. F aclon?»h^«Generot Information.. ;Calculus.,..:Different Equations ,-Disciete Matham sites.., Е^**айяи..•Financial Funtiigss.* pintbog Нор!#. F aclon?»h^«Generot Information.. ;Sin, COS, ... - The Trigonometric functionsSin, COS, ... - The Trigonometric functionsДЩЬтейк: Operations,.ДЩЬтейк: Operations,.jKponenW. Tng. andjKponenW. Tng. andLI ' atcsac i■LI ' atcsac i■arct^n . Btclarh i Convmieharct^n . Btclarh i Convmieh4П$айуМакм1нп^^^Uigawhms:pwdiict;Product:?№—J4П$айуМакм1нп^^^Uigawhms:pwdiict;Product:?№—Jsinh, coshsinh, cosh- The Hyperbolic functions- The Hyperbolic functionsCalling SequenceCalling Sequencesin(x) cos(x)sin(x) cos(x)tan(x)tan(x)sec(x)sec(x)csc(x)csc(x)cot(x)cot(x)sinh(x)sinh(x)cosh(x)cosh(x)tanh(x)tanh(x)' sech(x)' sech(x)csch(x) coth(x)csch(x) coth(x)
^!Sl2£
^!Sl2£
F"
F"
II
II
In&oductwn Geiirtg Stalled.,, What's New.., H^wTo Basic F««k#eb« Advanced Feeltoes. Cormecltvfty
In&oductwn Geiirtg Stalled.,, What's New.., H^wTo Basic F««k#eb« Advanced Feeltoes. Cormecltvfty
Mathematics..
Mathematics..
Etsisssssh
Etsisssssh
Basrc Mathematics..
Basrc Mathematics..
J
J
Calculus.,..:
Different Equations ,-
Disciete Matham sites.., Е^**айяи..•
Financial Funtiigss.* pintbog Нор!#. F aclon?»h^«
Generot Information.. ;
Calculus.,..:
Different Equations ,-
Disciete Matham sites.., Е^**айяи..•
Financial Funtiigss.* pintbog Нор!#. F aclon?»h^«
Generot Information.. ;
Sin, COS, ... - The Trigonometric functions
Sin, COS, ... - The Trigonometric functions
ДЩЬтейк: Operations,.
ДЩЬтейк: Operations,.
jKponenW. Tng. and
jKponenW. Tng. and
LI ' atcsac i■
LI ' atcsac i■
arct^n . Btclarh i Convmieh
arct^n . Btclarh i Convmieh
4П$айуМакм1нп^^^
Uigawhms:
pwdiict;
Product:
?№—J
4П$айуМакм1нп^^^
Uigawhms:
pwdiict;
Product:
?№—J
sinh, cosh
sinh, cosh
- The Hyperbolic functions
- The Hyperbolic functions
Calling Sequence
Calling Sequence
sin(x) cos(x)
sin(x) cos(x)
tan(x)
tan(x)
sec(x)
sec(x)
csc(x)
csc(x)
cot(x)
cot(x)
sinh(x)
sinh(x)
cosh(x)
cosh(x)
tanh(x)
tanh(x)
' sech(x)
' sech(x)
csch(x) coth(x)
csch(x) coth(x)
Разумеется, можно успешно работать с системой, вообще ничего не зная про «горячие» клавиши. Многие так и делают! Однако быстрая и профессиональная работа в Maple 7 невозможна без использования этих клавиш, поскольку они существенно экономят время пользователя. , ■ При работе с русифицированной версией Windows латинские буквы в обозначениях «горячих» клавиш нередко заменяются русскими буквами, не несущими никакой смысловой связи с выполняемой операцией. В этом случае полезно знать, что соответствующая латинская буква (или иной знак) и указанная в меню русская находятся на одной клавише (например, комбинация клавиш для сохранения документа (Ctrl+S) может быть показана как Ctrl+ы).
Доступ к справкам и примерам
В меню Help системы Maple 7 сосредоточены средства доступа к справке по всем функциям системы. Детально работу со справочной базой данных Maple 7 мы рассмотрим в следующей главе. Здесь лишь отметим, что справку по любой функции можно получить, просто установив на ее имени маркер ввода и нажав клавишу F1. На рис. 1.26 показано окно с началом справки по функции cos(x).
1(3 Maple 7 - [higl
^ £>te Edit $ew Window йе^:
Parameters
x - an expression
^Description^DescriptionrrjJagjJtiL^&s&lffij.jJagjJtiL^&s&lffij.
^Description
^Description
r
r
jJagjJtiL^&s&lffij.
jJagjJtiL^&s&lffij.
Рис«1;26« Пример справу по функции'косинуса
Как видно из рис. 1.26, окно справки содержит пятиступенчатый контекстный указатель, позволяющий последовательно отыскивать нужный раздел справки. Когда справка запрашивается по конкретной теме (функции), то сразу появляется посвященный ей раздел, точнее начало этого раздела.
Примеры из справочной системы можно модифицировать, для этого их нужно скопировать в буфер и перенести в окно документа Maple 7 (см. следующую главу). Также в Maple 7 есть специальный раздел справки, дающий доступ к примерам и без их копирования. Для осуществления такого доступа в окне справки достаточно выбрать тему Exampleworksheets в первом же разделе контекстного указателя. Откроется окно (теперь уже документа) с индексным каталогом примеров (рис. 1.27).
Каталог примеров дает доступ к огромному числу примеров применения Maple 7. Просмотр одного из них (вычисление эллиптических интегралов) показан на рис. 1.27 справа. Рисунок 1.27 иллюстрирует также технику работы с двумя окнами документов.
9 Maple 79 Maple 7BBBBBBЙ!«ж$ Window HeleЙ!«ж$ Window Hele^t examples.elliptic - (Server 1]^t examples.elliptic - (Server 1], , Tx Elliptic IntegrationIndex to Example Worksheets, , Tx Elliptic IntegrationIndex to Example Worksheets| Свернув| СвернувThis worksheet provides you with access to all the example workshetiThe worksheets have been organized into topical sections, with a con; Elliptic integrals are of the form all example worksheets at the end. Click the box in front of the sectio;This worksheet provides you with access to all the example workshetiThe worksheets have been organized into topical sections, with a con; Elliptic integrals are of the form all example worksheets at the end. Click the box in front of the sectio;aa(x)aa(x)dx.dx.examples Ested in it. CEck the appropriate hyperlink in a section to go where y(x) is a polynormal of degrec 3 „4, „d a(l)examples Ested in it. CEck the appropriate hyperlink in a section to go where y(x) is a polynormal of degrec 3 „4, „d a(l)interest.interest.and b(x) are polynomials.and b(x) are polynomials.
9 Maple 7
9 Maple 7
BBB
BBB
Й!«ж$ Window Hele
Й!«ж$ Window Hele
^t examples.elliptic - (Server 1]
^t examples.elliptic - (Server 1]
, , Tx Elliptic Integration
Index to Example Worksheets
, , Tx Elliptic Integration
Index to Example Worksheets
| Свернув
| Свернув
This worksheet provides you with access to all the example worksheti
The worksheets have been organized into topical sections, with a con; Elliptic integrals are of the form all example worksheets at the end. Click the box in front of the sectio;
This worksheet provides you with access to all the example worksheti
The worksheets have been organized into topical sections, with a con; Elliptic integrals are of the form all example worksheets at the end. Click the box in front of the sectio;
a
a(x)
a
a(x)
dx.
dx.
examples Ested in it. CEck the appropriate hyperlink in a section to go where y(x) is a polynormal of degrec 3 „4, „d a(l)
examples Ested in it. CEck the appropriate hyperlink in a section to go where y(x) is a polynormal of degrec 3 „4, „d a(l)
interest.
interest.
and b(x) are polynomials.
and b(x) are polynomials.
SI Language and System
H AlgebraH AlgebraH GeometryH GeometrySI Discrete MathematicsSI Discrete MathematicsComplete Elliptic IntegralsMaple recognizes the complete elliptic integrals л,2Complete Elliptic IntegralsMaple recognizes the complete elliptic integrals л,2
H Algebra
H Algebra
H Geometry
H Geometry
SI Discrete Mathematics
SI Discrete Mathematics
Complete Elliptic Integrals
Maple recognizes the complete elliptic integrals л
,2
Complete Elliptic Integrals
Maple recognizes the complete elliptic integrals л
,2
H IntegrationH Integration• examples/elliptic: Elliptic Integration examples.;• ezamples/elbptic2: More Elliptic Integration examples.IИ Integral TransformsH Differential Equations• examples/elliptic: Elliptic Integration examples.;• ezamples/elbptic2: More Elliptic Integration examples.IИ Integral TransformsH Differential Equationsdt (First Kind), sm(Z)dt (First Kind), sm(Z)071C 1 IIл/1 — ^^ sin(Z)^ Д (SecondKind),071C 1 IIл/1 — ^^ sin(Z)^ Д (SecondKind),
H Integration
H Integration
• examples/elliptic: Elliptic Integration examples.
;• ezamples/elbptic2: More Elliptic Integration examples.
IИ Integral Transforms
H Differential Equations
• examples/elliptic: Elliptic Integration examples.
;• ezamples/elbptic2: More Elliptic Integration examples.
IИ Integral Transforms
H Differential Equations
dt (First Kind), sm(Z)
dt (First Kind), sm(Z)
0
71
C 1 II
л/1 — ^^ sin(Z)^ Д (SecondKind),
0
71
C 1 II
л/1 — ^^ sin(Z)^ Д (SecondKind),
Рис. 1.27. Работа с каталогом примеров
В этой книге использованы некоторые наиболее интересные примеры из справочной базы данных системы Maple 7. Однако большинство примеров книги не повторяет помещенные в справку Мар!е, носит оригинальный Характер и отражает результаты исследования возможностей системы Maple 7 автора. В связи
с этим читателю рекомендуется просмотреть не только примеры в данной книге, но и примеры, представленные в справочной системе по интересующим читателя функциям.
Что нового мы узнали?
В этом уроке мы научились:/
О Устанавливать Maple 7.
О Отличать языки системы — входной, реализации и программирования.
О Загружать систему и работать с ней в режиме диалога.
О Выполнять простые вычисления.
О Строить простые графики.
О Пользоваться кнопками быстрого управления системой.
О Обращаться к справкам и примерам применения системы Maple 7.
(У) УРОК(У) УРОКИнформационнаяподдержка Maple
(У) УРОК
(У) УРОК
Работа со справочной системой Maple 7
Отражение систем класса Maple
в Интернете
Информационная поддержка Maple
в Интернете
Поддержка MathML
Maple на Российских Интернет-сайтах
Maple в карманном компьютере фирмы Casio
Работа со справочной системой
Меню Help
Справочной системе Maple 7 принадлежит исключительная роль — только в ней можно найти полную информацию обо всех почти трех тысячах функций Maple 7. Использование англоязычной справочной системы может быть полезно и для тех, кто и «двух слов по-английски связать не может», поскольку в ней приведен синтаксис функций и операторов, а также многочисленные примеры их применения — по самым скромным подсчетам их свыше десяти тысяч.
К сожалению, справочная система Maple 7 очень громоздка. Но это нельзя считать недостатком справочной системы, поскольку просто велик объем входящего в нее материала. В справочной системе имеются все присущие современным базам данных возможности для быстрого поиска нужной информации и даже для ее структурирования и пополнения.
Основные команды по работе со справочной системой Maple 7 сосредоточены в меню Help, показанном на рис. 2.1.
Q Maple 7 - jUntitled (3) - [Serves 1В
^ Це- Еф У«е« insert Р»ша1^ Це- Еф У«е« insert Р»ша1iB^D^jiiB^D^jiTrlTTl [^17 intodurtfon:TrlTTl [^17 intodurtfon:ЖЦЖЦ[> spi(i)[> spi(i)gg Retrieve help for ““ the contextdependent topicgg Retrieve help for ““ the contextdependent topicHelp on "sin"Help on "sin"^ewti set's Tout^ewti set's ToutCtrl*F1Ctrl*F1
^ Це- Еф У«е« insert Р»ша1
^ Це- Еф У«е« insert Р»ша1
iB^D^ji
iB^D^ji
TrlTTl [^17 intodurtfon:
TrlTTl [^17 intodurtfon:
ЖЦ
ЖЦ
[> spi(i)
[> spi(i)
gg Retrieve help for ““ the context
dependent topic
gg Retrieve help for ““ the context
dependent topic
Help on "sin"
Help on "sin"
^ewti set's Tout
^ewti set's Tout
Ctrl*F1
Ctrl*F1
JnpicSMK6 M Teo Seech S*V., ,
SW Io Сааба»., Я «Нота Tope..
&айа »«*>?- .
Shout «faple?„
,liiM^ffM№Mfee№«t<^^
Оно содержит команды, объединенные в несколько групп. В первую группу входят следующие команды:
О Introduction — показ начального раздела справки (введения);,
О Help on Context — вывод оперативной справки по контексту;
О New User's Tours — запуск обучающей системы;
О What's New — описание новых возможностей системы;
О Using Help — описание правил использования справочной системы;
О Glossary — вывод указателя терминов.
Второй раздел меню содержит команды:
О Topic Search — предметный поиск по заданному образцу;
О Full Text Search — предметный поиск с полным обзором текста справки;
О History — вывод истории поиска.
В третьем разделе имеются две команды для работы с базой данных:
О Save to Database — запись данных в базу данных:
О Remove Topic — восстановление базы данных предметного поиска путем удаления дополнительных данных;
Остальные разделы представлены следующими командами:
О Balloon Help — включение всплывающих подсказок;
О Register Maple 7 — регистрация Maple 7;
О About Maple 7 — вывод окна с информацией о Maple 7.
Рассмотрим детально работу справочной системы Maple 7. Следует отметить, что ценность справочной системы для наших читателей намного снижается из-за того, что она написана на английском языке. Учитывая громоздкость справочной системы и необходимость в наличии компьютера для ее использования, для знакомства с системой Maple 7 более подходят обычные книги, тогда как справочную систему следует применять при необходимости ознакомиться с тонкими деталями применения тех или иных операторов, функций и иных средств Maple 7.
Просмотр введения
Команда Introduction в меню справки запускает справочную систему на странице введения (рис. 2.2).
В введении определено назначение Maple 7 как системы компьютерной алгебры и дается ссылка на сайт фирмы — разработчика системы (www.maplesoft.com). Щелкнув на гиперссылке, вы перейдете на начальную страницу web-сервера фирмы. На странице введейия имеются также гиперссылки на обучающий курс (New User’s Tour), на страницы с обзором новых возможностей Maple 7 и справки по различным элементам интерфейса.
.1Д|Х.1Д|ХQ Maple 1 " ImUoduchonjQ Maple 1 " ImUoduchonjiseibesibiseibesibIntroduction to Maple 7Maple 7 is a comprehensive computer system for advanced mathematics. It includes facilities for interactive algebra, calculus discrete mathematics, graphics, numerical computation and many other areas of mathematics. It also provides a unique environment for rapid development of mathematical programs using its vast library of built-in functions and operations.Introduction to Maple 7Maple 7 is a comprehensive computer system for advanced mathematics. It includes facilities for interactive algebra, calculus discrete mathematics, graphics, numerical computation and many other areas of mathematics. It also provides a unique environment for rapid development of mathematical programs using its vast library of built-in functions and operations.AdvAftcadKsaitiMMAdvAftcadKsaitiMM^ЖЖйВЯ^ЖЖйВЯ
.1Д|Х
.1Д|Х
Q Maple 1 " ImUoduchonj
Q Maple 1 " ImUoduchonj
iseibesib
iseibesib
Introduction to Maple 7
Maple 7 is a comprehensive computer system for advanced mathematics. It includes facilities for interactive algebra, calculus discrete mathematics, graphics, numerical computation and many other areas of mathematics. It also provides a unique environment for rapid development of mathematical programs using its vast library of built-in functions and operations.
Introduction to Maple 7
Maple 7 is a comprehensive computer system for advanced mathematics. It includes facilities for interactive algebra, calculus discrete mathematics, graphics, numerical computation and many other areas of mathematics. It also provides a unique environment for rapid development of mathematical programs using its vast library of built-in functions and operations.
AdvAftcadKsaitiMM
AdvAftcadKsaitiMM
^ЖЖйВЯ
^ЖЖйВЯ
More information about Waterloo Maple Inc. and its products can be found at h^//www.ma^3oft.c
For information to help you get started using Maple 7, and its worksheet interface, click on one of the hyperlinks. You can also explore by clicking on topics in Де topic browser at the top of any help window.
New User’s Tour - provides an overview of Де functionality and a quick tour of Де features of Maple.
kbit's New - provides an overview of Де features Aat are new in Maple 7.
7 ^r-ievr | 3 f rotates - describes Де main features of Maple Да1 you will need to know to get started using Maple.
Usins hero - describes Де various ways to use Maple's online help.
A orksheet interface - describes a Maple worksheet.
Overview ot Menxi bar - describes Де menu bar and Де various sets of menus available.
Пя*П&' у^у 3 WH j " AyN*k f766
Рис. 2.2. Окно справочной системы с введением
Обратите внимание на оригинальный подход к представлению пути нужной справки. Для его определения служат 5 окон-списков. На рис. 2.2 используется только одно окно, а остальные 4 пока пусты. Выбирая последовательно по элементу из каждого списка, вы сможете достигнуть требуемой справочной информации. Подробнее навигация по справочной системе будет описана позже.
Оперативная справка по контексту
Оперативная справка по контексту — сравнительно новая возможность справочных систем. Она особенно удобна при разборе примеров, содержащих незнакомые пользователю функции и иные объекты системы Maple. Полезна она и в том случае, когда пользователь знаком с применяемым объектом, но хотел бы уточнить его свойства и синтаксис.
Для получения оперативной справки по контексту достаточно установить курсор на соответствующий объект, например на имя какой-либо функции, и открыть меню Help. В нем можно обнаружить, что операция Help on Context модифицируется и приобретает вид Help on "...", где на месте многоточия стоит слово, на котором остановился курсор. На рис. 2.1 таким словом является имя функции, вычисляющей синус, — sin.
Допустим, что в тексте документа в строке ввода есть функция sin(x). Если теперь выполнить команду Help on "..." — тут же появится окно со справкой о функ-
FY -оис! ей эоннвевярц •djdeM №H
-вяоечвоп йвяоиэо ошнэнХдо oil BOdXx оняо хэвяв^яхо jnoj. s,j9sn мац bVhbwoji jnoi s^asn мам эдЛи ииЬкмеьАдо
‘9[dEJ^ ЭXHЭdXяHOЯ ИЭШИВЖИХ'д — ^/g ЕЭрВШЭфЕДО ЯИЙ ВЭЧХВЯОСЧЕОПЭИ 1ГЕХЭ ‘ИХ -вхэя ‘HQ "гонндоНХ чнэно кэхэкгнехэйэОп иийЕиОофни вяэиоп доэонэ инндоКоп ‘илавОнэ HoirolZeBd оннэяхэхэяхооэ и £ 9[dBjv зчиэхэиз ииПянХф огонь aoHModxo ввянхиьх 'ииПянХф HoxXdV я и ‘иох я и Hdawndn ннэПэяисШ HHHEdnD oHHHEdxo eh — ‘uis иэиПянХф 3 adEH я хэвпХхэмя ЕНО охь ‘Xwoxon ЕНЭПИЕН sod вийянЛф ОХЬ ‘онУияэьо soD-D!|oqjadAn pue 6ui '|ециэио0хд-5эцешэщеи Diseg-SD^eiuameH :квПЮ1Л17эго иэн я eijAxdoI? чхэончх'эхвяо&эгооц ‘эняо ионхОэяхэь я эжК ВЭХИУОХЕН (HOIfaBEEd «Х1чнеогоэ» эиьигон — ajdBpj ияявОиэ ояхэиояэ эонхмнодонг охе ‘uis эн ихвхэя) sod випянХф квннэжЛОвндо *яв_£ TroireBd охомиГОхдоэн винэньохЛ kitiz ияяеОпэ ихэеь иэнхОэя я нояо винвяоечвопэи вяинхэх енПия omodox эжл adawndn нюхе д
"ияшчээ 3i4Hox3xaxdanHJ и хчхг
-aVEBd ai4W9Eai4dxxo xHxcdgVoo и нмэхэиэ noHboaEdno MBifHHBdn гачнийэ он ено ВНВЯОеИВВЭд ’ВИНЭНЭИ^Н XBdoWHdu И ВИНВУВС 99 XBIfHHEdn ХИЯЭЭЬИЭЯВХНИЭ ‘НИН -янХф иинэьвневн о чхинХэ хэкнояеон Лхэяэхноя он ExuBduo ‘gj -DHd ей онУия явя
uis ииЬмнАф ou HMaeduD dawndu •£•£ еэи^
ров ‘[Зщ^эй^Шоз ‘Торё] ‘ривохэ ээз ‘suoisswdxa ощэшоио^щ SuiX^duns рие Зшривдхэ moqe uopeuuojtn joj • уалиоо ass ‘dpq мош joj uuoj [вэртл о) раизлиоз aq sasea ашоз w ивэ риоцвд e st ?; эдэцм у ;; uuoj aipjo ^изшпЗдв ив щрл suopourg этэшоио^щ (g) ptre ‘suuoj otjoqjadZq лащ о^рэуэлиоз aq ивэ ixiixxj Зитл^олш suotssajdxa (5) * хо;. рив у; г Лро jo suuai ш uotssajdxa ив oj рауэлиоэ aq ивз uotssajdxa зщэшоиоЗи! Лив (i) звхр ал ; sa^durexa аэд^ suuoj дэщо 04 suotssajdxa эфашоио^щ уалиоз цил звф заицпод иоидэлиоз эдв э^врвле osjy зацциарт зr[oqдadXч рие зфэшоиоЗуд иошшоз aqijo з$ош A]dde 1Вф sa^aaojd uotsuedxa рив uoyBOyqduns sapu^oдd osje a[dej*$ •
■(saajSap T<i/081 s ивф-11) 8ив1рвд ut иалй aq шш зиоцзигд зт|oq^adXq рив зщэшоиоВщ jjb дод sjuawnJjy •
UOpdU9S9Q^
uoIssэ^dxэ ив - x
$даршвлед
(х)фоз (x)q3sa (x)qaas
(х)цив) (x)qsoo(х)цив) (x)qsoo(x)quts(x)quts(х)1оэ (х)э$э(х)1оэ (х)э$э(x)aas(x)aasU”#- _ j №w.£ *U”#- _ j №w.£ *(x)ubi Cx)sod(x)ubi Cx)sodW^WIW^WI'->a »-« >| F'->a »-« >| FММБ8 11^f^ pММБ8 11^f^ pзЕЫСЕзазЕОоаз i <'»!•» Г*•-зЕЫСЕзазЕОоаз i <'»!•» Г*•-Se#HCS4jp6St№Api#Se#HCS4jp6St№Api#vfl «««st ~«5.. ^ >r3 Sjvfl «««st ~«5.. ^ >r3 Sj
(х)цив) (x)qsoo
(х)цив) (x)qsoo
(x)quts
(x)quts
(х)1оэ (х)э$э
(х)1оэ (х)э$э
(x)aas
(x)aas
U”#- _ j №w.£ *
U”#- _ j №w.£ *
(x)ubi Cx)sod
(x)ubi Cx)sod
W^WI
W^WI
'->a »-« >| F
'->a »-« >| F
ММБ8 11^f^ p
ММБ8 11^f^ p
зЕЫСЕзазЕОоаз i <'»!•» Г*•-
зЕЫСЕзазЕОоаз i <'»!•» Г*•-
Se#HCS4jp6St№Api#
Se#HCS4jp6St№Api#
vfl «««st ~«5.. ^ >r3 Sj
vfl «««st ~«5.. ^ >r3 Sj
(6iq| /atdewS]
£7 ’3Hd EH HoifHBXoVadn uis инПянХф on HHHEdno domndn -(u oxoodn ней) Td+NID — нСнвиоя иохе bits итиявгя 9HhKdox и хозХяхээШЛо ’вэЛниэ иип
[QMaple 7 - (newusecnewuser • IServer 1))
"3> -:» у™. и^ гЛИ1
№Ы
Qp»«» yrdw H*t
3F
Maple New User's Tour
This worksheet is the starting point of the New User’s Tour.
Maple is a complete mathematical problem-solving environment that supports a wide variety of mathematical operations such as numerical analysis, symbolic algebra, and graphics. In this session, you will sample some of the more than 3000 commands that range from performing basic arithmetic and algebra, to computations involving advanced topics such as tensor analysis, group theory, and more. Maple offers interactive mathematical visualization, a user interface with typeset mathematics, word processing facilities, and a modern programming language, making it a powerful and flexible tool for users tn education, research, and industry.
The New User's Tour presents the fundamental Maple commands that every user should be aware of. The tour covers many areas ofMaple, including The Maple Worksheet Environment, Numerical Calculations, Algebraic Computations, Graphics, Calculus, Differential Equations, Linear Algebra, Finance and Statistics, Programming, and Online Help. The tour is easy to proceed through, and it can take up to two hours if all topics are examined.
Please note that some parts of this tour are computationally intensive. Depending on your computer system, you may want to close any other memory-intensive applications before continuing the tour.
Рис. 2.4. Окно курса обучения основам Maple
В конце страницы (рис. 2.4) имеется гиперссылка Click here to begin the New User's Tour. Она открывает окно обучающего курса по Maple с перечнем ее разделов, представленное на рис. 2.5. Наименования разделов являются гиперссылками. Как видно из рис. 2.5, обучающий курс имеет следующие разделы:
О (1) Working Through the New User's Tour — обучение работе с курсом;
О (2) The Worksheet Environment — создание документов;
О (3) Numerical Calculations — численные вычисления;
О (4) Algebraic Computations — алгебраические преобразования;
О (5) Graphics — графики;
О (6) Calculus — вычисления;
О (7) Differential Equations — дифференциальные уравнения;
О (8) Linear Algebra — линейная алгебра;
О (9) Finance and Statistics — финансы и статистика;
О (10) Programming — программирование;
О (11) Online Help — помощь через Интернет;
О (12) Summary — заключение.
Активизация любой из этих гиперссылок приводит к выводу соответствующего раздела обучающего курса. На рис. 2.6 представлено начало раздела 3, посвященного численным вычислениям;'
П] Maole 7 - Inewuser user menu • (Server 111
i^ iw #■» >4 л;v-
-JSa ЕЕЙ н Л ZEIL
Maple New User's Tour
Main Menu
Listed below are twelve topics of the New User's Tour. To examine a topic, click on its name below to open the corresponding worksheet.
Working’Tin'on^i &e Niw U
The Worksheet Елл^оптегй
Numerical C^cuiah-.-ns
Algebraic C> '?riT.ul-atb:?a$
Graphics
Calculus
Differential Equations
Linear Algebra
Finance and Statistics
Programming
Online Help
Summary
For more information of interest to new Maple users, visit our Web site]
> t»w т& Зз^здайAvateb^v i ?s6
Рис. 2.5. Окно с перечнем разделов обучающего курса
^.^ 5^ ^lW« h«®t Рвр«а$ ,;,-, ^юг» ^Z«x$B!* Help$451 ?<J
(3) Numerical Calculations
Before examining this topic, please make sure that you have read: [iL'^^in^Tnrpufjr the N w
Use the rest art command to clear Maple's internal memory and get started with this topic of the tour [> restart;
У Computations with Integers
At its most basic level, you can use Maple as a very powerful calculator.
13
To calculate (32)(12 ), you would enter the following:
[> 32*12'13;
Maple recognizes many special operators, including factorial, greatest common divisor, least common multiple, and computation over the integers modulo m. The following line is an example of the factorial operator in use.
[> 2001 ;
You can easily include the previous^pansion of2001 in any subsequent calculation without having to type it. The ditto operator, represented by a percent sign (%), refers to the last expression computed by Maple. (For more information on Де ditto operator, see Де help page for ditto.) The command ifactor factors the previous result into its prime factors.
[> ifactorCM ;
The next command calculates Де product again, which is precisely Де value of200l.
^№ ?.6i Начало раздела обучающего: цурса по численным вычислениям
Основные достоинства обучающего курса в том, что он (в отличие от справочной базы данных) дает обычное описание работы с системой Maple 7 с «живыми» примерами, которые не надо копировать в документы. Фактически обучающая система является просто набором документов системы. Вначале примеры даны без ячеек вывода, которые появляются после исполнения команды Edit ► Execute ► Worksheet. Это иллюстрирует рис. 2.7.
^ Maple 7 - lnewuser.tt>pic03 • [Server 111Е^ЕЗ^
[^ ffe £dfr ^»w Insert ?^SjStito ^eidcw ^йр*d5t x|
Numerical Calculations2
Before examining this topic, please make sure that you have read: fl)3Ys$9a!L'Bir!28^^
Use the restart command to clear Maple's internal memory and get started with this topic of the tour.
[> restart;
В Computations with Integers
At its most basic level, you can use Maple as a very powerful calculator.
To calculate (32)(12 ^), you would enter the following: f> 32*12'13;
3423782572130394
Maple recognizes many special operators, including factorial, greatest common divisor, least common multiple, and computation over the integers modulo w The following line is an example of the factorial operator in use.
’> 200!;
7886578673647905035523632139321850622951359776871732632947425332443594499634933429203041
2849119846239041772121389196388302576427902426371050619266249528299311134628572707633171 237396988943922445621451664240254033291364131227428294853277524242407573903241)3212574051 5795686602260319041703240623517608587961789222227896237038973747200000090000000000000001 000000000000000000000000000
Tn» 8 7s ЩЗМП toaist* 1 72A
Рис. 2.7. Начало раздела обучающей системы по численным вычислениям послеисполнения команды Edit ► Execute ► Worksheet
Пользователь может модифицировать любой пример и немедленно получить новые результаты (попробуйте, например, заменить вычисление 2001 на 100! или 500!). К сожалению, написан обучающий курс на английском языке и в отличие от обычной книги для работы с ним нужен компьютер.
Новые возможности Maple 7
Пользователи, знакомые с предшествующими версиями системы Maple, обычно хотят узнать, что нового введено в последней версии. Однако, как у нас говорят, «лучшее — враг хорошего» — при большом числе новых возможностей (и особенно при модификации старых возможностей) появляется несовместимость между документами для старых и новых версий системы; Несмотря на меры, предпринятые по предотвращению такой несовместимости, ее проявление вполне возможно,
в частности документы, созданные в Maple 7, уже нельзя использовать в предшествующих версиях из-за различий в их внутренних форматах.
Выполнение команды What's New открывает окно с описанием новых возможностей Maple 7. Оно показано на рис. 2.8.*
!0 Maple 7 - [updates,v7]
Нож-1S12<JНож-1S12<JOverviewOverviewBasic Fe&uies... AcMnoed Fealties Connectivity,.,,Praafsmmra .Basic Fe&uies... AcMnoed Fealties Connectivity,.,,Praafsmmra .cQMpatitiey eKiciency cp-aphics language•>■<. r t' packagescQMpatitiey eKiciency cp-aphics language•>■<. r t' packagesJJ^ Efe, £dit View &<ntfew Help
Нож
-1S12<J
Нож
-1S12<J
Overview
Overview
Basic Fe&uies... AcMnoed Fealties Connectivity,.,,
Praafsmmra .
Basic Fe&uies... AcMnoed Fealties Connectivity,.,,
Praafsmmra .
cQMpatitiey eKiciency cp-aphics language
•>■<. r t' packages
cQMpatitiey eKiciency cp-aphics language
•>■<. r t' packages
J
J
New Features that Have Been Added to Maple 7
Maple 7 includes many new capabilities and improvements to existing facilities. These are summarized under the following topics.
Significant changes to the Maple language, system facilities, and programming features. See updates/Maple7Aanguage.
Expanded visualization and graphing capabilities. See updates.Maple7/graphics.
Improvements and additions to both the fundamental model and specific applications of Maple's numeric computation environment. See updates/Maple7/numerics.
Improved efficiency through increased speed and reduced memory use. See up date s<Maple7/efficiency.
New packages and modifications to old packages. See updates/Maple7/packages.
Changes to Maple's symbolic capabilities in various packages and procedures. See updates/Maple7/symbolic.
Improvements to Maple's graphical user interface. See update s/Maple7/gui.
Notes for users upgrading from Maple 6. See update$/Maple7/compatibility .
For more Maple news, tools, and tips, see our Web site at http://www.maplesoft.ccm.
Time. 8 Ss Bytes' 3 56M Available 1 726
Рис. 2.8. Окно справки с описанием новых возможностей системы Maple 7
С помощью гиперссылок на этой странице можно получить достаточно подробное описание всех появившихся в Maple 7 возможностей. Мы уже отмечали их в уроке 1.
Правила работы со справочной системой
Справочная система Maple 7, по существу, является мощной базой данных с обширными возможностями поиска нужной информации и многочисленными примерами применения l^aple 7. Работа с такой системой может вызвать затруднения у начинающих пользователей, поэтому в состав справочной системы включено описание правил ее использования. При исполнении команды Using Help появляется страница с перечнем разделов описания справочной системы (рис. 2.9).
Уб £«Я Зи№ jLndw В*Уб £«Я Зи№ jLndw В*Л^] ГТГ^<к1Л^] ГТГ^<к1-J-JQMaple 7 - (wofk$heeL<elefence.HelpGuidelQMaple 7 - (wofk$heeL<elefence.HelpGuidelWhM^tKevRu How Ta„ ч 1 ». C.XJJ f Advanced F^^iues,.,WhM^tKevRu How Ta„ ч 1 ». C.XJJ f Advanced F^^iues,.,Mew Iba's Tou SlyfeSmda
Уб £«Я Зи№ jLndw В*
Уб £«Я Зи№ jLndw В*
Л^] ГТГ^<к1
Л^] ГТГ^<к1
-J
-J
QMaple 7 - (wofk$heeL<elefence.HelpGuidel
QMaple 7 - (wofk$heeL<elefence.HelpGuidel
WhM^tKevRu How Ta„ ч 1 ». C.XJJ f Advanced F^^iues,.,
WhM^tKevRu How Ta„ ч 1 ». C.XJJ f Advanced F^^iues,.,
iJsfioH*.,- .
-»г •■* *-»г •■* **ЕЙ^2ВК*ЕЙ^2ВК“4p4fe Manu .TtiyjawHsfut,“4p4fe Manu .TtiyjawHsfut,AriO^MeuSab..AriO^MeuSab..Using Help
-»г •■* *
-»г •■* *
*ЕЙ^2ВК
*ЕЙ^2ВК
“4p4fe Manu .TtiyjawHsfut,
“4p4fe Manu .TtiyjawHsfut,
AriO^MeuSab..
AriO^MeuSab..
Maple provides a complete, customized online help system that you can use to find information about a specific topic or command easily or to explore the wide range of commands available. Click one of the hyperlinks below for more information.
Note: The menus and menu items available on a help page are different from those available on the Maple worksheet. A Maple worksheet must be active when you perform the steps listed on the help pages specific to worksheets.
О Finding Information
Click these links for an array of different ways to End the help topics you need.
Ie 87/ Bytes-З/ы-t "Aval*le 1?16
Рис. 2.9. Окно с перечнем разделов описания справочной системы
Мы не будем подробно описывать содержание страницы и гиперссылок, поскольку весь материал данного урока и является, по существу, таким описанием.
Предметный поиск
Команда Topic Search (предметный поиск) — одна из самых мощных функций справки. Она выводит окно поиска (рис. 2.10), содержащее в верхней части поле для ввода образца. Образцом может быть слово (например, имя функции) или даже часть слова. В окне под этим полем появляется список всех объектов Maple 7, в индекс которых входит заданный образец (рис. 2.10).
Теперь остается из заданного списка слов выбрать нужное, что приведет к появлению окна справки с информацией по данному слову. Иногда индекс по данному слову будет иметь несколько ссылок, на появившейся странице вам придется уточнить, справку по какому объекту вы хотите получить. Окно предметного поиска в правой части имеет четыре кнопки со следующим назначением:
О Search — поиск по образцу;
О Apply — выводу окна выбранного раздела справки при сохранении окна поиска;
О ОК — окончание поиска (выводится окно с выбранным разделом и исчезает окно поиска);
О Cancel — закрытие окна поиска.
Кроме того, имеется возможность задания двух параметров:
О Same Window — вывод в то же окно (если окно не открыто на полный экран); О Auto-Search — автоматический поиск по образцу по мере ввода последнего.
Заметим, что если установлен флажок Auto-Search, то кнопка Search становится недоступна, поскольку отпадает необходимость в ней.
Предметный поиск с полным обзором текста справки
Предметный поиск с полным обзором текста справки (Full Text Search) — еще один эффективный метод получения справочной информации. Он напоминает ранее рассмотренный, но вхождение заданного образца ищется во всем тексте справочной системы, а не только по индексу, составленному создателями Maple. При этом выводится окно, подобное показанному на рис. 2.11. Обратите внимание на то, что в большом поле этого окна указано существенно больше разделов справки, чем при поиске по индексу — очевидно, что большинство из них будет случайным упоминанием данного образца.
Fu# Text SearchFu# Text SearchTopic SearchTopic SearchГ $«W^Pdw*:Г $«W^Pdw*:Рис. 2.10. Окно предметного поискаРис. 2.10. Окно предметного поискаWsrdH }$т )>М-гЙСЙйзТЕ«»С5.;coords |0.03)Д;updates,v52 (0.02);) updates,R5.symbolic (0.02)T-(;: updatesR4.symbolic (0 02)T:examples.solve (0.02):S)I; examples,vib_membrane (0.01)111:i: updates.v53 (0.01)Ipi) update$,R5,newpkg (001)I examples.deplot (0.01)updates,v41 (0.01)® 1■ plot3d (0 01)MiWsrdH }$т )>М-гЙСЙйзТЕ«»С5.;coords |0.03)Д;updates,v52 (0.02);) updates,R5.symbolic (0.02)T-(;: updatesR4.symbolic (0 02)T:examples.solve (0.02):S)I; examples,vib_membrane (0.01)111:i: updates.v53 (0.01)Ipi) update$,R5,newpkg (001)I examples.deplot (0.01)updates,v41 (0.01)® 1■ plot3d (0 01)MiГ* Same^aidowГ* Same^aidowP goodness Ot Match,P goodness Ot Match,Рис. 2.11. Окно предметного поискас полным обзором текста справкиРис. 2.11. Окно предметного поискас полным обзором текста справки
Fu# Text Search
Fu# Text Search
Topic Search
Topic Search
Г $«W^Pdw*:
Г $«W^Pdw*:
Рис. 2.10. Окно предметного поиска
Рис. 2.10. Окно предметного поиска
WsrdH }$т )
>М-гЙСЙйзТЕ«»С5.;
coords |0.03)Д;
updates,v52 (0.02);
) updates,R5.symbolic (0.02)T-(
;: updatesR4.symbolic (0 02)T:
examples.solve (0.02):S)
I; examples,vib_membrane (0.01)111:i
: updates.v53 (0.01)Ipi
) update$,R5,newpkg (001)
I examples.deplot (0.01)
updates,v41 (0.01)® 1
■ plot3d (0 01)Mi
WsrdH }$т )
>М-гЙСЙйзТЕ«»С5.;
coords |0.03)Д;
updates,v52 (0.02);
) updates,R5.symbolic (0.02)T-(
;: updatesR4.symbolic (0 02)T:
examples.solve (0.02):S)
I; examples,vib_membrane (0.01)111:i
: updates.v53 (0.01)Ipi
) update$,R5,newpkg (001)
I examples.deplot (0.01)
updates,v41 (0.01)® 1
■ plot3d (0 01)Mi
Г* Same^aidow
Г* Same^aidow
P goodness Ot Match,
P goodness Ot Match,
Рис. 2.11. Окно предметного поискас полным обзором текста справки
Рис. 2.11. Окно предметного поискас полным обзором текста справки
В этом окне используются те же кнопки управления, что и для окна поиска справки по образцу. Флажок Goodness of Match включает вывод статистики повторяемости образца в текстах разделов справочной системы.
История работы со справкой
Было замечено, что пользователь, занятый решением определенного класса задач, обычно неоднократно возвращается к ранее просмотренным разделам справочной системы. Чтобы не искать их всякий раз заново, справочная система хранит список разделов, просмотренных в данном сеансе работы. Он выводится операцией History (рис. 2.12).
Достаточно найти в этом окне нужный раздел справки и нажать кнопку ОК, чтобы вывести его на экран. Кнопка Apply позволяет просматривать каждый новый раздел в своем окне.
Рис. 2.12. Список ранее просмотренных разделов справкиРис. 2.12. Список ранее просмотренных разделов справки
Рис. 2.12. Список ранее просмотренных разделов справки
Рис. 2.12. Список ранее просмотренных разделов справки
Модернизация справочной базы данных
В справочной базе данных предусмотрена возможность ее расширения путем записи текущего документа, составленного пользователем, в указанный раздел. При выполнении операции Save to Database выводится специальное окно, в котором надо указать соответствующие данные о модернизируемом разделе справки. Вид окна представлен на рис. 2.13.
Ограничимся этим указанием, учитывая, что для нашего пользователя модернизация англоязычной справочной базы данных явно отдает экзотикой.
Удаление разделов базы данных
Для удаления разделов базы данных служит команда Remove Topic. Она выводит окно, показанное на рис. 2.14.
Обратите внимание, что модернизации в обоих случаях подвергается один и тот же файл базы данных maple.hdb.
Рис. 2.13. Окно дополнения базы данных
Remove Topic
Ij
’ Setab«e'
j |= \PR0GRAM FILES',lib\rr^ple hdbj
Рис. 2.14. Окно удаления разделов справочной базы данных
x Ю0£ внсяи jg MOHwd eh нэйтЛпня но ончтгвиНифо ‘у axodX я чэоигнэихо эжХ яв){ х JOOS в™ иоПноя HEHodHiBir xxAlZodn шчннв!/ охь ‘эинвииня axHXBdgo
L 9]dew энэииэ о hwrhhbU э ohxq 'ST'Z ^d
twg uw«|0 »Ч «Ч №81-1661И W-">3»»n«d
йа«йввй»^'й»в ' ’ '
00 l
L ©}dvH V*oqy
ччиэхэиэ вхэХшчя инэиэбя О Э1ЧННЕ1/ эжявх в ‘(BixAfodn охоивэ и ииенэПик EdanoH) ^ ajdEp\[ ннэхэиэ HiihEdiOHjad Birir э1чии1Гох9оэн ‘эмннек вэlEжdэIz,oэ эняо woie q '(gt"2 "3Hd) l ajdEpv HiodaH о иэиIIBwdoфни э оняо 1и17оя1чя — l a|dew inoqv — d|9H синаи evhehox ввнЕэиэоц
эмэюиэ о иэиУ1ембофни э енмо tfoaiqg
•BuUBdiaiuad вэювнкошчя ojodoiox
О1ч1поион э ‘BiaHdaiHj4 daeXBdg чхвяеня хаввояеоп окно oxg ■/, ajdBpv мпэхэиэ HiiliEdiaHjad онио хавя^мхо миэюиэ HOHBOHEdua сянаи £ a|dew jaisiBay еЕнеио){
1яиэ1эиэ HHhediDMJdd
'„uis,, uo d|3H — d|3H синаи
МКНЕИОЯ ЭИНЭВЕНЕЕН ЕН 1ЭЕЯ1ЧБЕЯХ ЕНО — Г2 'ЭИС1 ЕН НВВЁЯОН ИМЕЕХЭРОП ИЭТПСИЕЯ -1ЧВПЭЯ вУоямя danndy ’аххаядо иохе вн иппчи чеэхвееяХ внляаэ XdEn вн qxBxdaVEE онвЪхвхэо» Ххяачдо одив-Лиохвм он имЕвяэйоп винэвЛвоп вку 'd|3H иооцед вх -жвиф ЭЯЯОНЕХЭХ Hdn КЭХВВОЯЯ ИНО ‘ИЯЕВИЭКОЦ ЭИТПО1ВЯ1Ч1ГПЭЯ чхвяоечвонэи опдоЕЛ L o[dB]^ миахэиэ иoэиэфdэxни иихэчвэхвяоечвоп э еяхэиояенё энвхе nondau вн
яоЕвязУои хи№01ВЯ1Я1/иза эинэноюд
ТбТбиомэхэиэ HOHhoaeduD оэ Eiogej
Тб
Тб
Информационная поддержка
Maple 7 в Интернете
Значение Интернета в информационной поддержке
В последние годы все разработчики систем компьютерной математики уделяют огромное внимание информационной поддержке таких систем в глобальной общемировой сети. Это обусловлено следующими обстоятельствами:
О современные системы компьютерной математики — очень сложные и быстро развивающиеся программные средства, нуждающиеся в оперативной рекламе и, главное, в оперативной коррекции их возможностей и устранении обнаруженных недостатков;
О справочные базы систем компьютерной математики очень обширны и нуждаются в постоянном обновлении;
О для практического изучения систем компьютерной математики желательна постоянная модернизация примеров их применения, для чего Интернет предоставляет обширные возможности;
О при решении сложных научных задач и при разработке серьезных проектов в образовании (данная книга наглядный пример этого) необходима связь пользователей с разработчиками программных средств и со своими коллегами во всем мире;
О современные технологии программирования, такие как Java-апплеты и ActiveX, новые языки передачи структурированной информации, такие как XML и MathML, широко применяются как в Интернете, так и в системах компьютерной математики.
Для использования возможностей Интернета компьютер должен быть оснащен модемом или подключен к локальной сети, имеющей вход в Интернет, и располагать необходимым программным обеспечением — прежде всего браузером и программой электронной почты. Необходимое программное обеспечение часто включается в состав операционной системы, хотя его можно приобрести и отдельно. Например, в Windows стандартаным браузером является Internet Explorer, а почтовой программой — Outlook Express фирмы Microsoft. Есть множество подобных программ и у других фирм. Как правило, доступ к ресурсам Всемирной паутины предоставляет провайдер — фирма, через сервер которой вы будете подключены к Интернету.
Подключение к интернет-серверу фирмы Waterloo Maple
Если все перечисленное выше есть, то вход в Интернет осуществляется прямо из вводного раздела справочной системы путем щелчка на гиперссылке с адресом начальной страницы фирмы Waterloo Maple — http://www.maplesoft.com. Это
приведет к автоматической загрузке используемого по умолчанию браузера — в дальнейшем предполагается, что это Internet Explorer 5.0/5.5. Начальный этап входа в Интернет показан на рис. 2.16.
Рис. 2.16. Начало входа в Интернет
Как видно из рис. 2.16, активизация указанной ссылки приводит к появлению окна браузера и окна подключения к Интернету. В этом окне должны быть заданы имя соединения, имя и пароль пользователя (при вводе пароля каждый знак заменяется звездочкой, чтобы пароль не могли прочесть посторонние). Окно подключения на рис. 2.16 дано не более как пример — каждый пользователь должен занести в него свои данные.
Начальная страница корпорации Waterloo Maple
После нажатия кнопки Подключиться можно наблюдать подключение к Интернету — начало работы модема и ряд сообщений о ходе подключения. Обычно через несколько секунд происходит подключение компьютера через модем к узлу провайдера, после чего загружается начальная страница корпорации Waterloo Maple, показанная на рис. 2.17.
^Welcome to Waterloo Maple Inc. - Microsoft Internet Explorer^Welcome to Waterloo Maple Inc. - Microsoft Internet ExplorerСЗ»1М Вя**» В* Якинов Сиренеаа#ес|ё1http://www.maple$oft сот/СЗ»1М Вя**» В* Якинов Сиренеаа#ес|ё1http://www.maple$oft сот/™™3 г'Перыеа;3 г'Перыеа;• ^ w»fki of Mat’!*< l <htapie Application Center...• ^ w»fki of Mat’!*< l <htapie Application Center...'«I'«I.... jM^le^itoteQt^ectet.... jM^le^itoteQt^ectetWaterloo Maple Corporate Sire . .? ^«r ^ pow r<< leash яххваЬсгЛ tbe M^^;^The «5ГРЖЧ1Я» $й«iatsarrss ай rhe raiwf ГЯ<яГя>.Цк#е$к»$Гя»?,Waterloo Maple Corporate Sire . .? ^«r ^ pow r<< leash яххваЬсгЛ tbe M^^;^The «5ГРЖЧ1Я» $й«iatsarrss ай rhe raiwf ГЯ<яГя>.Цк#е$к»$Гя»?,И1ИМКШ11ММА.OVANCINe MATHEMATiCS ШИ1ИМКШ11ММА.OVANCINe MATHEMATiCS ШRegMMiton Web SiteRegMMiton Web Site;jB HHfQphsf;jB HHfQphsfРис. 2.17. Начальная страница фирмы-разработчика системы Maple 7 —- корпорации Waterloo MapleРис. 2.17. Начальная страница фирмы-разработчика системы Maple 7 —- корпорации Waterloo MapleНачальная страница не содержит никакой конкретной информации. Она пред ставлена лишь красочным рисунком и четырьмя ссылками:Начальная страница не содержит никакой конкретной информации. Она пред ставлена лишь красочным рисунком и четырьмя ссылками:ООООо оо оWaterloo Maple Corporate Site — выход на главную страницу корпорации Maple;Maple Application Center — выход на страницу Центра применений Maple;Maple Student Center — выход на страницу Студенческого центра;Registration Web Site — выход на web-страницу регистрации.Waterloo Maple Corporate Site — выход на главную страницу корпорации Maple;Maple Application Center — выход на страницу Центра применений Maple;Maple Student Center — выход на страницу Студенческого центра;Registration Web Site — выход на web-страницу регистрации.
^Welcome to Waterloo Maple Inc. - Microsoft Internet Explorer
^Welcome to Waterloo Maple Inc. - Microsoft Internet Explorer
СЗ»1М Вя**» В* Якинов Сирене
аа#ес|ё1http://www.maple$oft сот/
СЗ»1М Вя**» В* Якинов Сирене
аа#ес|ё1http://www.maple$oft сот/
™
™
3 г'Перыеа;
3 г'Перыеа;
• ^ w»fki of Mat’!*< l <
htapie Application Center...
• ^ w»fki of Mat’!*< l <
htapie Application Center...
'«I
'«I
.... jM^le^itoteQt^ectet
.... jM^le^itoteQt^ectet
Waterloo Maple Corporate Sire . .
? ^«r ^ pow r<< leash яххваЬсгЛ tbe M^^;^The «5ГРЖЧ1Я» $й«
iatsarrss ай rhe raiwf ГЯ<яГя>.Цк#е$к»$Гя»?,
Waterloo Maple Corporate Sire . .
? ^«r ^ pow r<< leash яххваЬсгЛ tbe M^^;^The «5ГРЖЧ1Я» $й«
iatsarrss ай rhe raiwf ГЯ<яГя>.Цк#е$к»$Гя»?,
И1ИМКШ11ММА
.OVANCINe MATHEMATiCS Ш
И1ИМКШ11ММА
.OVANCINe MATHEMATiCS Ш
RegMMiton Web Site
RegMMiton Web Site
;jB HHfQphsf
;jB HHfQphsf
Рис. 2.17. Начальная страница фирмы-разработчика системы Maple 7 —- корпорации Waterloo Maple
Рис. 2.17. Начальная страница фирмы-разработчика системы Maple 7 —- корпорации Waterloo Maple
Начальная страница не содержит никакой конкретной информации. Она пред ставлена лишь красочным рисунком и четырьмя ссылками:
Начальная страница не содержит никакой конкретной информации. Она пред ставлена лишь красочным рисунком и четырьмя ссылками:
О
О
О
О
о о
о о
Waterloo Maple Corporate Site — выход на главную страницу корпорации Maple;
Maple Application Center — выход на страницу Центра применений Maple;
Maple Student Center — выход на страницу Студенческого центра;
Registration Web Site — выход на web-страницу регистрации.
Waterloo Maple Corporate Site — выход на главную страницу корпорации Maple;
Maple Application Center — выход на страницу Центра применений Maple;
Maple Student Center — выход на страницу Студенческого центра;
Registration Web Site — выход на web-страницу регистрации.
Обратите внимание на то, что наведение курсора мыши в браузере на соответ ствующую гиперссылку вызывает появление всплывающей подсказки по ней - на рис. 2.17 такая подсказка выведена для ссылки на начальную страницу кор. порации Waterloo Maple.
Главная страница корпорации Waterloo Maple
Щелкнув на гиперссылке Waterloo Maple Corporate Site, можно выйти на страницу корпорации Waterloo Maple. Она показана на рис. 2.18.
Waterloo Maple Is pleased to present Maple 7, the newest version of the widely adopted Maple mathematical computation product line. Maple 7 began shipping on June 14,2001,15 days atead of schedule. Maple 7 is available for ай supported platforms. including VAndows, Macintosh, Linux and UNIX. t4ew features include a sweeping range of new mathematical algorithms in key areas, such as differential equations and numerical computation, and enhanced Web connectivity, including compretensive MathML 2.0 support. XML support and TCP№ sockets-based access to online information.Waterloo Maple Is pleased to present Maple 7, the newest version of the widely adopted Maple mathematical computation product line. Maple 7 began shipping on June 14,2001,15 days atead of schedule. Maple 7 is available for ай supported platforms. including VAndows, Macintosh, Linux and UNIX. t4ew features include a sweeping range of new mathematical algorithms in key areas, such as differential equations and numerical computation, and enhanced Web connectivity, including compretensive MathML 2.0 support. XML support and TCP№ sockets-based access to online information.Maple PowertoolsMaple PowertoolsWHAT'S NEWABOUT USPRODUCT INFORMATIONSALESSUPPORT PUBLICATIONSPRESS ROOMCAREERSCONTACT USWHAT'S NEWABOUT USPRODUCT INFORMATIONSALESSUPPORT PUBLICATIONSPRESS ROOMCAREERSCONTACT USWhat can Maple Do for me?What can Maple Do for me?Learn more about Maple 7View the news releaseA special limited time upgrade offer is currently available. Users should contact their Waterloo Maple account representative or1 authorized international reseller for more Information.Learn more about Maple 7View the news releaseA special limited time upgrade offer is currently available. Users should contact their Waterloo Maple account representative or1 authorized international reseller for more Information.MAPLE ***АЖ.1Ш10КСЕЖЯ :MAPLE ***АЖ.1Ш10КСЕЖЯ :. MAPLE SWUENTClNTEft. MAPLE SWUENTClNTEftFrw eM^tiWt №sooft.e^ doableFrw eM^tiWt №sooft.e^ doableMaple wins educational software awTird in twnMaple wins educational software awTird in twnRecent News' ^ ^«ЖН® . lestSSW New Mania Reporter Available!Recent News' ^ ^«ЖН® . lestSSW New Mania Reporter Available!
Waterloo Maple Is pleased to present Maple 7, the newest version of the widely adopted Maple mathematical computation product line. Maple 7 began shipping on June 14,2001,15 days atead of schedule. Maple 7 is available for ай supported platforms. including VAndows, Macintosh, Linux and UNIX. t4ew features include a sweeping range of new mathematical algorithms in key areas, such as differential equations and numerical computation, and enhanced Web connectivity, including compretensive MathML 2.0 support. XML support and TCP№ sockets-based access to online information.
Waterloo Maple Is pleased to present Maple 7, the newest version of the widely adopted Maple mathematical computation product line. Maple 7 began shipping on June 14,2001,15 days atead of schedule. Maple 7 is available for ай supported platforms. including VAndows, Macintosh, Linux and UNIX. t4ew features include a sweeping range of new mathematical algorithms in key areas, such as differential equations and numerical computation, and enhanced Web connectivity, including compretensive MathML 2.0 support. XML support and TCP№ sockets-based access to online information.
Maple Powertools
Maple Powertools
WHAT'S NEW
ABOUT US
PRODUCT INFORMATION
SALES
SUPPORT PUBLICATIONS
PRESS ROOM
CAREERS
CONTACT US
WHAT'S NEW
ABOUT US
PRODUCT INFORMATION
SALES
SUPPORT PUBLICATIONS
PRESS ROOM
CAREERS
CONTACT US
What can Maple Do for me?
What can Maple Do for me?
Learn more about Maple 7
View the news release
A special limited time upgrade offer is currently available. Users should contact their Waterloo Maple account representative or1 authorized international reseller for more Information.
Learn more about Maple 7
View the news release
A special limited time upgrade offer is currently available. Users should contact their Waterloo Maple account representative or1 authorized international reseller for more Information.
MAPLE ***
АЖ.1Ш10КСЕЖЯ :
MAPLE ***
АЖ.1Ш10КСЕЖЯ :
. MAPLE SWUENTClNTEft
. MAPLE SWUENTClNTEft
Frw eM^tiWt №sooft.e^ doable
Frw eM^tiWt №sooft.e^ doable
Maple wins educational software awTird in twn
Maple wins educational software awTird in twn
Recent News' ^ ^«ЖН® . lestSSW New Mania Reporter Available!
Recent News' ^ ^«ЖН® . lestSSW New Mania Reporter Available!
Рис. 2.18. Главная страница фирмы-разработчика системы Maple 7 — корпорации Waterloo Maple
На этой странице можно найти ряд гиперссылок, поясненных ниже:
О Maple 7 — информация об основной версии Maple 7;
О Maple 7 Student Edition — информация о студенческой версии Maple 7;
О Products Options — информация о продукции фирмы;
О Maple Powertools — мощный инструментальный пакет для системы Maple;
О What's New — последние новости;
О About As — информация о Waterloo Maple;
О Product Information — информация о продуктах;
О Sales — информация о продаже программных продуктов и ценах;
О Support — поддержка программных продуктов;
О Publications — информация о публикациях (статьях и книгах);
О Press Room — пресс-конференция;
О Careers — сведения о вакансиях в фирме;
О Contact Us — контактные данные.
Имеется и еще одна группа гиперссылок:
О Application Center — доступ к Центру применений Maple;
О Maple Student Center — доступ в Студенческий центр;
О Register Product — доступ к web-странице регистрации.
ВНИМАНИЕВНИМАНИЕЩелчок на той или иной гиперссылке приводит к переходу на соответствующую страницу сайта фирмы Waterloo Maple..
ВНИМАНИЕ
ВНИМАНИЕ
Вид web-страниц время от времени меняется — от косметической доработки до кардинального изменения имиджа и содержания. Поэтому для приведенных в этом уроке страниц нет никакой гарантии, что их вид не изменится — даже к моменту опубликования данной книги. Тем не менее, как бы не выглядели web-страницы, большинство указанных разделов на них сохранится.
Информация о продукции
Главная страница сайта фирмы Waterloo Maple выводит информацию о продукции фирмы. Помимо стандартной версии Maple 7 выпускается упрощенная студенческая версия и демонстрационная (trial) версия с ограниченным временем использования (30 дней). На сайте можно найти также информацию о предшествующих версиях системы Maple. Фирма выпускает также множество пакетов-библиотек функций к Maple 7.
Вид страницы, специально посвященной системе Maple 7, приведен на рис. 2.19.
88K3E388K3E3' Km3 ^Переход' Km3 ^Переходvj Product! - Maple 7 Command the Brilliance ol a Thousand Mathematicians Micioxoft Internet Explorer
88K3E3
88K3E3
' Km
3 ^Переход
' Km
3 ^Переход
фвйй QpwsA Диб- Ла5$ииибе Сдрвнс Ставка.' -
О Haw * ' * © Q <3 ^Леиск £^HwSp#t*wf 0Ждом (3* Й* <S Тй? * P
^йР»С,|Ф http.,Vwwwmaplesoflcom/pfoduct$/Maple7/index.$htmi'
■ ®i® LINKS »
.rOWhal'K New Maple 7'"' ': ' о- Maple 7 Demos'
System Requirements Testimonials
Unique among its industry peers, Maple 7 continues the long-starving tradition of cooperative deveiopmeri of algorithms with leading research groups at. some of the most prestigious institutions nthe world. This allows Waterloo Maple to deiver the most powerful and trusted computation engine avato*.Unique among its industry peers, Maple 7 continues the long-starving tradition of cooperative deveiopmeri of algorithms with leading research groups at. some of the most prestigious institutions nthe world. This allows Waterloo Maple to deiver the most powerful and trusted computation engine avato*.: Maple 7 Brochure (PDF) Free Trial Version Reviews 3 Press
Unique among its industry peers, Maple 7 continues the long-starving tradition of cooperative deveiopmeri of algorithms with leading research groups at. some of the most prestigious institutions nthe world. This allows Waterloo Maple to deiver the most powerful and trusted computation engine avato*.
Unique among its industry peers, Maple 7 continues the long-starving tradition of cooperative deveiopmeri of algorithms with leading research groups at. some of the most prestigious institutions nthe world. This allows Waterloo Maple to deiver the most powerful and trusted computation engine avato*.
tWIS NEW
ABOUT US PRODUCT INFORMATION SALES
SUPPORT PUBLICATIONS PRESS ROOM CAREERS CONTACT US
y*iat can Maple Do tor me?
MAPLE **
APPUCATIONCENTER^- e MAPLE 5WOENTCENTE£
Здесь можно найти информацию о получении демо-версии системы (с ограниченными возможностями, но бесплатно), просмотреть примеры демонстрации возможностей Maple 7, получить брошюру по Maple 7 в формате PDF, ознакомиться с отзывами прессы по этой системе и, наконец, получить доступ к уже отмеченным другим информационным ресурсам.
Информация о системных требованиях для работы с Maple 7 приведена на web- странице, изображенной на рис. 2.20. Maple 7 — сложная программа, и для успешной работы с ней нужен достаточно «приличный» компьютер — если и не самый новейший, то по крайней мере с процессором не хуже, чем Pentium.
Рис. 2.20. Web-страница с данными о системных требованиях к компьютеру для работы с Maple 7
В уроке 1 уже приводились системные требования для версии Maple 7, предназначенной для компьютера с операционной системой Windows 95/98. На указанной странице можно найти такие требования и для других операционных систем, например Windows 2000, Unix, Linux и др.
Информация о покупке Maple 7
Информация о покупке программных продуктов содержится на страницах, к которым можно перейти, щелкнув на гиперссылке Sales. Вид первой страницы этого раздела сайта показан на рис. 2.21.
3 Sales • North America I International Microsuit Internet E xplorer3 Sales • North America I International Microsuit Internet E xplorerawecfS"http://www. maplesoft com/sale$/index shtmlawecfS"http://www. maplesoft com/sale$/index shtmlWaterloo MapleWaterloo Maple00Nome i About U» j Contact UiNome i About U» j Contact UiInside Waterloo Maple Inc. -SaksInside Waterloo Maple Inc. -Saksp Ml-IN"*-»*-#1 ОН«й * f • ©ap Ml-IN"*-»*-#1 ОН«й * f • ©aAOVANC NO MATHEMATtC*AOVANC NO MATHEMATtC*[ <5<ЖП LiГ4^^[ <5<ЖП LiГ4^^Within US & Canada
3 Sales • North America I International Microsuit Internet E xplorer
3 Sales • North America I International Microsuit Internet E xplorer
awecfS"http://www. maplesoft com/sale$/index shtml
awecfS"http://www. maplesoft com/sale$/index shtml
Waterloo Maple
Waterloo Maple
0
0
Nome i About U» j Contact Ui
Nome i About U» j Contact Ui
Inside Waterloo Maple Inc. -Saks
Inside Waterloo Maple Inc. -Saks
p Ml-IN"*-»*-#
1 ОН«й * f • ©a
p Ml-IN"*-»*-#
1 ОН«й * f • ©a
AOVANC NO MATHEMATtC*
AOVANC NO MATHEMATtC*
[ <5<ЖП LiГ4^^
[ <5<ЖП LiГ4^^
/Request a quote : ' Contact a F^epreseritative North American Resellers Become a Maple Reseller
Outside of North America
Contact a Maple Partner
Become a Maple Reseller
Norm America i InternationalNorm America i InternationalWhat can Maple Do tor me?What can Maple Do tor me?s^ple^dEnOQs^ple^dEnOQ?лйй?лййMAPLE ^PPypVnOhiWW:MAPLE ^PPypVnOhiWW:TO Purchase Within US 8 CanadaTO Purchase Within US 8 CanadaTo Purchase Outside North AmericaTo Purchase Outside North AmericaWHAT'S NEWABOUT USPRODUC 7 INFORMA TIONSALESSUPPORT PUBLICATIONS PRESS ROOM CAREERS CONTACT USWHAT'S NEWABOUT USPRODUC 7 INFORMA TIONSALESSUPPORT PUBLICATIONS PRESS ROOM CAREERS CONTACT USРис. 2.21. Первая страница раздела сайта, предоставляющая информацию о покупке Maple 7
Norm America i International
Norm America i International
What can Maple Do tor me?
What can Maple Do tor me?
s^ple^dEnOQ
s^ple^dEnOQ
?лйй
?лйй
MAPLE ^PPypVnOhiWW:
MAPLE ^PPypVnOhiWW:
TO Purchase Within US 8 Canada
TO Purchase Within US 8 Canada
To Purchase Outside North America
To Purchase Outside North America
WHAT'S NEW
ABOUT US
PRODUC 7 INFORMA TION
SALES
SUPPORT PUBLICATIONS PRESS ROOM CAREERS CONTACT US
WHAT'S NEW
ABOUT US
PRODUC 7 INFORMA TION
SALES
SUPPORT PUBLICATIONS PRESS ROOM CAREERS CONTACT US
Карта на этой странице символизирует, что «щупальца» корпорации Waterloo Maple и ее представителя Maple Software охватывают весь Земной шар. Однако надо помнить, что во многих странах Maple 7 можно приобрести только через региональных представителей (или покупкой «левого» компакт-диска). В России «приличные» пользователи могут заказать Maple 7 через Российскую фирму SoftLine — www.softline.ru.
Информация о поддержке программных продуктов
Maple 7, как и предшествующие версии Maple, относится к весьма сложным программным продуктам, требующим обновления и грамотного применения. Поэтому важное значение приобретает поддержка таких продуктов в ходе их эксплуатации со стороны фирмы Waterloo Maple. Этому и посвящена страница поддержки, показанная на рис. 2.22.
Поддержка обеспечивается только для легально приобретенных продуктов, номеру и лицензии которых занесены в базу данных фирмы. Поэтому пользователи нелегальных копий системы такой поддержки лишены, и обращаться за ней через Интернет бесполезно — вы получите вежливое сообщение о том, что ваш продукт не зарегистрирован.
|3 Maple's Technical Suppod Center Microsoft Internet Explorer
Л"" д=— 8« a«p«« э**.^» .... _—КЗ
fj "■ л V-- "■ ■ -.'*v J. «-! J. - »- Й у - 7
a««[E http://www.maptesoft.com/support/index.shtml "_ * e*«^
towwedsContact Technical SunpodtowwedsContact Technical SunpodWHAT'S NE/VABOUT usPRODUCT INFORMATIONSALESSUPPORT PUBLICATIONS PRESS ROOMWHAT'S NE/VABOUT usPRODUCT INFORMATIONSALESSUPPORT PUBLICATIONS PRESS ROOMWelcome to Waterloo Maple's Technical Support CenterWelcome to Waterloo Maple's Technical Support CenterWhat can Maple uo tot me?МаР^Ж.APPLiCAWN CENTER:;^MAPLESTUOEN'ICEtVi'LR:'-RtGbtJf PRODUCT ^What can Maple uo tot me?МаР^Ж.APPLiCAWN CENTER:;^MAPLESTUOEN'ICEtVi'LR:'-RtGbtJf PRODUCT ^Waterloo Maple is committed to providing the hignest level of support tor the products It sells This excellent standard of support is provided for ail WMI products, including Maple 7, Maple 7 Stuuerit Eddktn and the interactive Math Dictionary.In addition, Waterloo Maple is also committed to delivering quality services that will enable customers to fully leverage the benefits of the products it selis.Waterloo Maple is committed to providing the hignest level of support tor the products It sells This excellent standard of support is provided for ail WMI products, including Maple 7, Maple 7 Stuuerit Eddktn and the interactive Math Dictionary.In addition, Waterloo Maple is also committed to delivering quality services that will enable customers to fully leverage the benefits of the products it selis.• Register your purchase• Frequently Asked Questions• Downloads and Service Packs• Discussion GroupsiNewsgroups• Other Resources• Year 2090 Compliance• Register your purchase• Frequently Asked Questions• Downloads and Service Packs• Discussion GroupsiNewsgroups• Other Resources• Year 2090 Compliance
towweds
Contact Technical Sunpod
towweds
Contact Technical Sunpod
WHAT'S NE/V
ABOUT us
PRODUCT INFORMATION
SALES
SUPPORT PUBLICATIONS PRESS ROOM
WHAT'S NE/V
ABOUT us
PRODUCT INFORMATION
SALES
SUPPORT PUBLICATIONS PRESS ROOM
Welcome to Waterloo Maple's Technical Support Center
Welcome to Waterloo Maple's Technical Support Center
What can Maple uo tot me?
МаР^Ж.
APPLiCAWN CENTER:;^
MAPLESTUOEN'ICEtVi'LR:'-
RtGbtJf PRODUCT ^
What can Maple uo tot me?
МаР^Ж.
APPLiCAWN CENTER:;^
MAPLESTUOEN'ICEtVi'LR:'-
RtGbtJf PRODUCT ^
Waterloo Maple is committed to providing the hignest level of support tor the products It sells This excellent standard of support is provided for ail WMI products, including Maple 7, Maple 7 Stuuerit Eddktn and the interactive Math Dictionary.
In addition, Waterloo Maple is also committed to delivering quality services that will enable customers to fully leverage the benefits of the products it selis.
Waterloo Maple is committed to providing the hignest level of support tor the products It sells This excellent standard of support is provided for ail WMI products, including Maple 7, Maple 7 Stuuerit Eddktn and the interactive Math Dictionary.
In addition, Waterloo Maple is also committed to delivering quality services that will enable customers to fully leverage the benefits of the products it selis.
• Register your purchase
• Frequently Asked Questions
• Downloads and Service Packs
• Discussion GroupsiNewsgroups
• Other Resources
• Year 2090 Compliance
• Register your purchase
• Frequently Asked Questions
• Downloads and Service Packs
• Discussion GroupsiNewsgroups
• Other Resources
• Year 2090 Compliance
Рис. 2.22. Страница, посвященная Центру информационнойи технической поддержки систем Maple
Информация о публикациях
На основной странице публикаций сайта можно найти информацию о многих сотнях книг и тысячах статей, посвященных системе Maple (рис. 2.23).
Как видно из рис. 2.23, эта страница содержит гиперссылки на книги и статьи по системе Maple и специальное электронное издание по ней — «The Maple Reporter».
Особый интерес представляет раздел публикаций, посвященный книгам, поскольку только в довольно большой книге можно описать достаточно серьезно и подробно такую сложную программу, как Maple. Щелкнув на гиперссылке Maple Books, можно открыть web-страницу, посвященную книгам по системам Maple, изданным во всем мире. На рис. 2.24 показана часть этой страницы со списком книг, изданных на русском языке. Названия книг представлены в виде гипертекстовых ссылок, щелчок на которых позволяет получить более подробную информацию о каждой книге.
Обратите внимание на выпадающие списки для выбора категории книги и языка (список по языкам на рис. 2.24 открыт). На момент подготовки данной книги среди отраженных на сайте публикаций русскоязычных книг по системе Maple 7 не было. Однако большинство книг по прежним версиям уже нашло отражение на сайте (рис. 2.25).
Welcome to Waterloo Maple's publications section!
A-HATS NEW ABOUT US PRODUCT INFORMATION
PUBLICATIONS
PRESS ROOM
CAREERS
CONTACT US
What can Maple Do x<n me?
WPlkP' # APPLICATION CENTER;:^
"MAPLE SIUDEW.CENrERc №i$TER PRODUC^^
In this section yen Will find stings of hundreds ot Maple related books , publications and articles.
Check O'.lt
Maple Books
The Maple Reporter
Maple Articles
H you are puNi r-lning a paper or writing i book related to Maple, we car. help you! Please send your Gommeritsto f^plicationsrSmepie^
Рис. 2.23. Основная страница, посвященная публикациям по системам Maple
0UOLW"¥
■Мар¥ Sexes' ". Featured T»fe Maple Manuals The Maple Reporter tHwa Paper s Articles
Maple Books
WHAT'S NEW
ABOUT US
PRODUCT INFORMATION
SALES
SUPPORT PUBLICATIONS
PRESS ROOM
CAREERS
CONTACT US
What can Maple Do tor me?
I Books By Category ^;^|
Books By Language<*
s
Hundreds of books have been written abo-. titles by subject area or language.
New Maple books in 2000-2001
Links to Ог-Нгге Bookstores
Are Voua Maple Author?
Finnishifi
German
Hungarian Italian
Japanese
Norwegian Polish
Portuguese
Spanish
Swedishл
<* tor* of the page you can browse tfiese
New Maple books in 2000-2001
maple"" "™”
APPLICATION CENTER,«
Experimental Mathematics with MA^tE by Franco Vlvekii
Introduction to Perturbation Theory in Qtjanturr Mechanics by F M Fernandez
' Differential Equations: Theory and Applications wth Maple by David Betounes
Mapie for Environmental Sciences by ВЯ Scott
Computer Assisted Caki*.is of Probabity wth Maple by Jerzy Ombach (m Polish)
№ПВ|№ПВ|о в a ®^ ^1шр*м>» <зж»«» й- <&- # а? - во в a ®^ ^1шр*м>» <зж»«» й- <&- # а? - вД PuhliraUonc ( anguugcs Hussian MiTnsoft Internet Explorer
№ПВ|
№ПВ|
о в a ®^ ^1шр*м>» <зж»«» й- <&- # а? - в
о в a ®^ ^1шр*м>» <зж»«» й- <&- # а? - в
White Papars
ANATS NBW
Russian
”3
ABOUT US
PRODUCT INFORMATION
SALES
SUPPORT PUBLICAUONS
PRESS ROOM
Matrosov, A NlapleG-Task Solutions in Higher Mathematics and Mechanics, 2001, ISBN 5-94157-021 -X
Russian NEWj
Ftedonlov, A V.. Zauesev. V. F.. Diskr efno-grurwovve melody rniewirrwanlya obyknouenrrykh
CAREERS
dffferentsiolprime nykh uravnenii. 1991. ISBN 5-201-10181-X. Russian
CONTACT US
What can Maple Do for me?
MAPLE'-'": .APPUCAtiONa^rLK^g
<:MAPLE 5TUDMTCLNI Ы£.
|й1Яа®мД«|
Govorukhin, v., Tsybu-jn, v.. Introduction to Maple: Mathernatical Package for evervbcdv. 1997, ISBN 5 030 03255-X, Russian
Atadjev V. Z., Hunt 3 J., Shishakcv M , Introduction tp.tnyirgX!ment.of.the.Mathen»etical.Packyie Maple V, 1996, ISBN 1 -406-42569-3, Russian
Manzon, В M.. Maple V Power Edrtion. 1996, ISBN 5-835-E8075-5, Рилялп
Prokhorov, О. V., Ledenev, Мд„ Koiboev, V.V.. Synxbqlic ca.lcuLaLi.Qft.w(,.h.Maple, 1997, ISBN 5-866-3SD05-9,
Russian
Atadiev, V.Z., Hunt, U J , Shishakov, ML., Py pgr ammino in Package Maple V. 1999, ISBN 4-10?-21298-2,
Aledjev, V.Z., Dogdevicius, M.A., hiunt, U J, Solving Physical and Technical Problems with Maple V. 1999. ISBN 9-144-00503-2, Russian
Dyakonov, V P , Mattiematical system Maple V R3iR4jR5. 1998. ISBN , Russirn’t
Manzon В M , Physics tn Modern Interpretation. 1999, ISBN , Russian
&»Я»‘®’Wtp://www.maplesoftcom/publication$/book$/indexby.''language/ru$$ian.$html
23 '4>fte$W:
Рис. 2.25. Web-страница, посвященная русскоязычным книгам по системе Maple
QUICK UHKS т
M^.fe Bocks • " ;
Maple Menueis The Map!* Reporter White Papers Articles
Mathematical system Maple V R3/R47R5
Dyakonov, V. P.
Solon, 1398
ISBN:
Language: Russian
AUATS NEW'
ABOUT US
PRODUCT INFORMATION
SALES
SUPPORT PUBLICATIONS PRESS ROOM CAREERS CONTACT US
Search for this book at Amazon.com or Barnes end Noble book stores.
Ahat can Maple Do for me?
MAPLE *'''
APPLICATIONCEMR x
3<APL£ STUDENT CWEK
NT -L
REGISTER PRODUCT,^4
Abstract
This text jH^cribes a powerful mathematics! computer algebr a system, Mai>ie V Power Edition, in the dialogue mc-le deciding an enormous number 01 mathematical problems • from ask calculations and number modeling before ' analytical transformations wlh calculations. For the tost time, a text describes Ihemost upto dale system realization О Maple V RS. Considered suitable system interface, its enormous computing possibilities have powerful graphic - system facWties, prograrriinir>g and packages cf expansions. For the first time deserted work with Maple V RS in Internet network on joint projects and И emet page of company Waterloo Maple - a system developer. For scientific workmen .teachers of universities and institutes, students and al users interested tn the automation of mathematical caiciiations.§S
В качестве примера информации о книгах на рис. 2.26 представлена информация об одной из книг автора, посвященная Maple V R3/R4/R5. Нетрудно заметить, что приведены только аннотационные данные.
Необходимо отметить, что русскоязычных книг по системам Maple (только предшествующих версий) представлено довольно много, что свидетельствует о высокой популярности данной программы у наших пользователей.
Центр применений системы Maple
Основная страница Центра применений Maple
Центр применений Maple — это большой интерактивный раздел сайта компании Waterloo Maple, содержащий массу примеров применения Maple во всех областях науки, техники и образования. На рис. 2.27 представлено начало страницы The Maple Application Center.
|.'3 Maple Application Center - Microsoft Internet Explorer
, ^«йя Правка |ид JJatfaarM» t-yewi ^правка;
' ФНаж * ’ "'C^^j^' ^Пйийк j*)Hattwwe ^3x$»*8fl [2i* ^* ^ ^ "* £fr
^^H@"http: //www. mapleapp$com/
"♦I /** Переход
y^OltrtoUt^^ ..•/Maple Pcwgrfoois'
v /М
' Maple Links ■ ';
WehEGi MathML Viewer
Share Liotary
Contact Us
Hit Maple Application Center
f have» MapleAppUcmionswQtMr
epptitetlentcc»Rtrlbste ■-
►"I".
^'•^ wisest.
Advanced Search
WHAT'S NEW
A8.OU1 US
PRODUCT INFORMATION
SALES
SUPPORT PUBLICATIONS PRESSROOM
CAREERS
CONTACT US
Sign me up tot tNe Staple Repeat
М» pl* Graphk»
^таЫЕ'Рои l HL9JJ12- M№№ ; ШШМВ^^^^^ 1T К ОГ^ЙКЕ AOO-CN PRODUCTS ,
AppHcadom Contributed by MAPLE USERS tlitk H#l* t« »Mf« cwtrit-wtw to th«4 ЯШ
What can Maple Do for me?
Mathematics
Education
Рис. 2.27. Страница Центра применений Maple (начало)
Следует отметить, что большинство материалов этого раздела содержат примеры применения предшествующих версий системы Maple, но уже есть и много примеров для новейшей версии Maple 7, описанной в данной книге. На рис. 2.28 показано окончание страницы The Maple Application Center, где представлен обширный список тем, по которым имеются примеры в этом Центре.
Рис. 2.28. Страница Центра применений системы Maple (окончание)
Приведенные в разделе примеры постоянно обновляются. В центре применений есть множество материалов образовательного характера — от отдельных демонстрационных примеров применения Maple в курсах математики, физики, химии и в других науках, до полноценных обучающих комплексов.
Информация о примерах
Рассмотрим работу с примерами из Центра применений Maple. Прежде всего надо выбрать раздел, в котором содержится интересующий вас пример. На рис. 2.29 показан раздел, посвященный решению дифференциальных уравнений.
В этом разделе предусмотрено 4 варианта работы с примерами:
О Details — просмотр примера в деталях;
О View Documents — просмотр примера прямо в Интернете (с помощью броузера);
О Download Worksheet — загрузка примера в среду Maple с возможностью его исполнения уже в ней;
О Download Code — загрузка кодов примеров (возможна в исключительных случаях, например для модификации Maple подключением новых функций).
Щелкнув на гиперссылке Details, можно открыть окно с данными о примере. Оно показано на рис. 2-30 слева для выбранного примера Laplace's equation in a cylinder. В окне сообщаются данные об авторе примера, дате Создания, аннотации, при-
3 Марк Application Center - Microsoft Internet Explorer
^og3
^ми Эмм gw H«V*w» («яме <№«ы
■ян»»
С л ^tw* ®И*** 0Жда«м & ^’ SUSP ’ s
■fE http://www.mapleaw$.com^iste$p?Calegor^D.20t<Category=^
j] АЛ»м»®
<:»:<.:;хне»1я»:>х
6weo»we»«e«»^x.<№y;:Mx:'; .....
8я| 1 OLs
1*
<vv^OMtrieififri№
,.Maple Powsrtocils
Finite element methods Io? solving PDEs W^t
о
*
Vaal's New? Maple Links
Laplace's ewsticn in a cylinder
WevECi MathML Viewer
Longitudinal waves in an elastic reel
№
Contact Us
Plucked string
»
•
A
Boundary value nroiilems tor 2-D elliptic equations
88
Boundary value problems tor 3-0 elliptic equations
Cauchy problems tor heat equaltoils
*
<
Advanced Search
AMAT'S MEW
Cauchy ptoUems for wave equavons
e
e
PRODUCT INFORMATION
Conversion linear partial differential equations with
e?
8
»
SALES
two variables to canonical form
PIJ8UCATIONS
Conversion linear partial differential operators with
»
9
PRESS ROOM CAREERS
constant coeffieierts to canonical form
CON: A.CT US
Cylinder heated by «vJuotion
Finctino general solutions for partial aifferentia)
«8
•MiM can Maple Do for me?
equations
Waterloo Maple
Maple, Appiicatfw Center
Maple Ueoks I Fme Trial Version
Л
Рис. 2.29. Перечень примеров на решение дифференциальных уравнений
^Нз^Ы * ' " © D ^ ^П0ирк f*]H»$№Hde ^ЛдрнЗЗ Ц^’ ^* ^ ПУ * 85$№:;;;
(ЙЙббб^У http://www.mapleapps.com/Li$t.a$p?CaiegorylD«208cCategofy»PDE$^•ч^Перехйй-;.
HS
'З Attide Infarmation -
Mtcrosofi Internet Explorer
Мари d «ok* । Ьм*
IrMlVrraior К
Laplace's equation in a cylinder
8.2.СИ 4:13:25 PM
<ЕеЕЕ33^6
Robert Loprex ■
»®9
^torsuHi
The objective of this snplioatiwi is to find the steady.
state, bounded temperatures inside a solid cviinder
№.&#
the base is insuieted, and the curved lateral surface
and thie top are maintained at temperatures of zero
-#*^
and т respectively.
•*«
No
♦®№
£
Mat>le6
■»•»
49 trmefs)
e • о
F
»• о
i View | | l>ew»lc»<l |
».»о
C c
*о•
* о о
Рис. 2.30. Информация об одном из примеров
менении средств анимации и др. Кнопки View и Download позволяют начать просмотр или загрузку примера в среду Maple прямо из этого окна.
Просмотр примеров с помощью броузера 1
Просмотр примеров возможен прямо из Интернета с помощью браузера. Желательно подключить к нему plug-in (дополнительный модуль) языка Java и MathML. Рисунок 2.31 демонстрирует просмотр выбранного примера в том его месте, где имеются математические формулы. Нетрудно заметить, что прекрасно отображаются даже самые сложные формулы.
Рис. 2.31. Просмотр примера прямо Интернета (часть примера с математическими формулами)
На другом рисунке (рис. 2.32) показан просмотр той части примера, в которой имеется графика. Нетрудно заметить, что как графика, так и строки ввода воспроизводятся достаточно хорошо. Однако надо помнить, что примеры в этом случае можно лишь просматривать, но их нельзя корректировать и исполнять. Таким образом, просмотр имеет чисто ознакомительное значение.
Рис. 2.32. Просмотр примера прямо в Интернете (часть примера с графикой)
Загрузка примеров на диск
Чтобы полноценно работать с примерами, нужно загрузить их в среду Maple. Это можно сделать двумя способами:
О скачать пример на жесткий диск и затем открыть его в Maple (с помощью команды Open);
О загрузить пример прямо из Интернета в среду Maple без предварительной записи на диск.
Подготовку к записи примера на диск иллюстрирует рис. 2.33. Окно загрузки файла, представленное на нем, появляется при щелчке на гиперссылке с именем примера.
О Переключатель в этом окне имеет два положения:
О Открыть этот файл из текущего места;
Сохранить этот файл на диске.
После установки его во второе положение и щелчка на кнопке ОК появится окно с запросом папки, в которой будет помещен файл выбранного примера. Это окно представлено на рис. 2.34. В данном случае файл будет записываться в папку с именем Maple, внутри которой есть папка с именем 1.
Рис. 2.33. Подготовка к загрузке примера на жесткий диск
После выбора папки достаточно нажать кнопку Сохранить и можно будет наблкк дать процесс копирования файла в выбранную папку (рис. 2.35). На экран будет выведено окно загрузки с линейным индикатором хода процесса. В этом окне приводятся данные о скорости загрузки, имени файла и пути к папке, в которую загружается файл. Окно исчезает после завершения загрузки, если установлен флажок Закрыть диалоговое окно после загрузки.После выбора папки достаточно нажать кнопку Сохранить и можно будет наблкк дать процесс копирования файла в выбранную папку (рис. 2.35). На экран будет выведено окно загрузки с линейным индикатором хода процесса. В этом окне приводятся данные о скорости загрузки, имени файла и пути к папке, в которую загружается файл. Окно исчезает после завершения загрузки, если установлен флажок Закрыть диалоговое окно после загрузки.'?:^,’Till? J.r^l'?:^,’Till? J.r^l^Пертадд^ПертаддWaterloo MapleWaterloo Maplei Maple Application Centeri Maple Application CenterM&pte 8oofc» | Free Trial VersionM&pte 8oofc» | Free Trial Version
После выбора папки достаточно нажать кнопку Сохранить и можно будет наблкк дать процесс копирования файла в выбранную папку (рис. 2.35). На экран будет выведено окно загрузки с линейным индикатором хода процесса. В этом окне приводятся данные о скорости загрузки, имени файла и пути к папке, в которую загружается файл. Окно исчезает после завершения загрузки, если установлен флажок Закрыть диалоговое окно после загрузки.
После выбора папки достаточно нажать кнопку Сохранить и можно будет наблкк дать процесс копирования файла в выбранную папку (рис. 2.35). На экран будет выведено окно загрузки с линейным индикатором хода процесса. В этом окне приводятся данные о скорости загрузки, имени файла и пути к папке, в которую загружается файл. Окно исчезает после завершения загрузки, если установлен флажок Закрыть диалоговое окно после загрузки.
'?:^,’Till? J.r^l
'?:^,’Till? J.r^l
^Пертадд
^Пертадд
Waterloo Maple
Waterloo Maple
i Maple Application Center
i Maple Application Center
M&pte 8oofc» | Free Trial Version
M&pte 8oofc» | Free Trial Version
' ^Has&t *^*00^ ^П<й.юк ПГ[ Избраний» (^ТдрмзЛ (^* j^* ^ ЗУ * 1ST
-^^ЙР^!^ hltp://www mapleapps.com/List.a$p?CategorylD»2C&Caregory=PDEs
Выполнено: 70S из Section29-02.mws
■Ct^ribute^^ Mapfe Powertools: What's New?Maple Lin-js•/VebEQ MathML ViewerShare LibraryContact Us■Ct^ribute^^ Mapfe Powertools: What's New?Maple Lin-js•/VebEQ MathML ViewerShare LibraryContact UsСакраневие$eciion2&)2,fhw$ c wmtnaplew# com iСакраневие$eciion2&)2,fhw$ c wmtnaplew# com i•mm»i•mm»iВеника wswm.Веника wswm.Загрузить в;Загрузить в;C\BD0KWaE?X$toM5^ws.C\BD0KWaE?X$toM5^ws.Ш'Ш'®®»»@@VWAT'S NEWABOUT USPRODUCT INFORMATIONSALE'SSUPPORT PUBLICATIONSPRESS F?OOMCAREERSCONTACT USVWAT'S NEWABOUT USPRODUCT INFORMATIONSALE'SSUPPORT PUBLICATIONSPRESS F?OOMCAREERSCONTACT USWhat can Maple Do <or me?What can Maple Do <or me?Conversion Sf'ear partial dtt'erertt&l equations wrlh two variables to canonical term8Conversion linear partial diftereftial operators sn4h constant coefficients to canonical term*e8Cylintier heated by induction*»Finding general solutions to? partial differential equations*eConversion Sf'ear partial dtt'erertt&l equations wrlh two variables to canonical term8Conversion linear partial diftereftial operators sn4h constant coefficients to canonical term*e8Cylintier heated by induction*»Finding general solutions to? partial differential equations*e1818Скорость передачи: 235 байт/сек:P ^^j3ba u^w^os w^ag^ui^qj^pgswrСкорость передачи: 235 байт/сек:P ^^j3ba u^w^os w^ag^ui^qj^pgswrяя
■Ct^ribute^^ Mapfe Powertools
: What's New?
Maple Lin-js
•/VebEQ MathML Viewer
Share Library
Contact Us
■Ct^ribute^^ Mapfe Powertools
: What's New?
Maple Lin-js
•/VebEQ MathML Viewer
Share Library
Contact Us
Сакраневие
$eciion2&)2,fhw$ c wmtnaplew# com i
Сакраневие
$eciion2&)2,fhw$ c wmtnaplew# com i
•mm»i
•mm»i
Веника wswm.
Веника wswm.
Загрузить в;
Загрузить в;
C\BD0KWaE?X$toM5^ws.
C\BD0KWaE?X$toM5^ws.
Ш'
Ш'
®
®
»
»
@
@
VWAT'S NEW
ABOUT US
PRODUCT INFORMATION
SALE'S
SUPPORT PUBLICATIONS
PRESS F?OOM
CAREERS
CONTACT US
VWAT'S NEW
ABOUT US
PRODUCT INFORMATION
SALE'S
SUPPORT PUBLICATIONS
PRESS F?OOM
CAREERS
CONTACT US
What can Maple Do <or me?
What can Maple Do <or me?
Conversion Sf'ear partial dtt'erertt&l equations wrlh two variables to canonical term
8
Conversion linear partial diftereftial operators sn4h constant coefficients to canonical term
*
e
8
Cylintier heated by induction
*
»
Finding general solutions to? partial differential equations
*
e
Conversion Sf'ear partial dtt'erertt&l equations wrlh two variables to canonical term
8
Conversion linear partial diftereftial operators sn4h constant coefficients to canonical term
*
e
8
Cylintier heated by induction
*
»
Finding general solutions to? partial differential equations
*
e
18
18
Скорость передачи: 235 байт/сек:
P ^^j3ba u^w^os w^ag^ui^qj^pgswr
Скорость передачи: 235 байт/сек:
P ^^j3ba u^w^os w^ag^ui^qj^pgswr
я
я
Рис. 2.35. Процесс загрузки примера из Интернета на жесткий диск
Просмотр примеров в среде Maple
После загрузки примера на диск его можно открыть в Maple и запустить на исполнение. При этом пример можно модифицировать, исследуя, как скажутся изменения на его работе. Для открытия файлов служит команда Open.
Однако в Maple 7 предусмотрена возможность и прямой загрузки примеров из Интернета, минуя промежуточную запись файла на диск. Для этого у выбранного примера надо щелкнуть на гиперссылке Download Worksheet По окончании загрузки примера появляется окно Maple 7 с открытым рабочим листом — рис. 2.36.
VI Hl
№E3]
гИ» | ^re# Tri^i Versi
-aJSJ.YJl-1 _
Г5П Hl21 i*"»H«»
6» £9 У®ю hw?rf Fqfrtigt , f Options Window H«i ей^юей® ШЗ'ШЗЕ] ЙВ [
Unit 5: Boundary Value Problems tor Partial Differential Equations
if
Chapter 29: Separation of Variables in Non-Cartesian Coordinates
lection 29.2: Laplace's equation in a cylinder
я Copyright
^Initializations
Ц Problem Statement and Formulation
9
9
9
И Statement and Analysis of the Solution
Ш Example 29.2
И Solution by Separation of Variables
9
Ttoy Q 4s Bstes, 3 COMAv^ktis-1 $?G
funding general solutions tor partial difterentia? lAhat c&n Maple Do ter me'1equations
9
isr
9
9
9
Рис. 2.36. Просмотр примера, напрямую загруженного из Интернета
Новые инструменты Maple Powertools
В конце 2000 г. на сайте фирмы Waterloo Maple появился новый раздел, сразу привлекший внимание пользователей системы Maple, — инструментальный пакет Maple Powertools. Это бесплатно распространяемый пакет инструментальных средств, облегчающий использование Maple и дополняющий программу новыми возможностями. Страница сайта, посвященная этому пакету, представлена на рис. 2.37. 1
На рис. 2.38 показана часть средств пакета Maple Powertools. Здесь видны об- ■ учающие компоненты и примеры применений системы Maple. Здесь обращает на себя внимание мощный пакет вычислений Calculus, содержащий три части, и пакет операций с векторами Vector Calculus.
Нижняя часть страницы представлена на рис. 2.39. Здесь помещены пакеты по инженерной математике и матричной алгебре, пакет-презентация по Maple, пакет для математического класса и для продолженного образования. Пакеты, представленные на этой web-странице (рис. 2.28 и 2.29), образуют большое хранилище интересных и поучительных примеров применения и ознакомительных курсов по Maple. Но, увы, написанных на английском языке.
Рис. 2.37. Страница, посвященная инструментальному пакету Maple Powertools
[•Э Maple PowerTooh - Education - Microtoft Internet Explorer
№Щ
£ш^ Правь» gw ^рапное Capew ^правка
Й®Я
© 0 й ©Илек £|И»«Ын»» 0Ж8»«И й’ ^’ ^ W * EJ
; *£&M&j.j http* //wwwmapteapps. ccm/poweitooh/educaliorLshim!
^ ^Пейййб::
: Contribute an AppKcaticn
Maple Powertools
Mat's New7
Mapfe Links
A'ebEQ MethML Viewer
Share Library vontact us
<MW?*MAPLE'S suift OF FREE ADD-ON PRODUCTS
pow<
$iSSI3t education^
researchTcipphcation
AHAT’S NEW
ABOUT US
PRODUCT INFORMATION
SALES
SUPPORT
PUBI.ICATIWS
PRESS ROOM
CAREERS
CONTACT US
This is e complete set of Macle lessons for 1st semester cwcuius. these worksheets were developed by die University of yvlsconcin-Milwaukee Departirient of Mathematics and supplemented with some of the top calculus derronstrati-x-s from the Maple Appictniori Certer.
This is a complete set of Maple lessons for 2nd semester calculus These worksheets were developed by the University of vMsconsin-Milwaukee Department of Mathematics and supplemented with some of the top calculus demonstrations from the Maple Appecabon center.
yvhat cen Maple Do for me?
MAIN WEb SHL ':
iMAPLESTUDtH1CtNI№
&4* '"
’REGISTER PRODUCT
A collection of 25 classroom demos developed end used al SI. Louis University for their Calculus ■ courses. The worksheets include a signtficart amount of
• exploratory text and exercises.
Й8^|Са1£М1.У1$-.:] fH^Prctjeet* j
Vector ^
Maple package for vector differential operations, curve anatyels, coordiiiate system conversions, mukipte integrals, and Une and surface Hegrals. Includes 6 - example applications using the package
letr» to Maple ter.
3 Maple Powi (Tools f du ihon Mi< < nidi I il< rn< I
Ф HwM ►-
б№*с=|^ http //www mapleapps com/powertools/educahon shtml
Д. ^^f?"*:
i
^'ISSUE» MATHEMATICS
This package of 273 Majjie classroom lectures by Prof. Robert Lopez of the RoseHutman Institute covers a#the postcalculus mathemistics needed by undergraduate
chapTer.
The MathClass package introduces Maple tools and techniques for constructing textbook -quality matlwmetioal diagrams Four self-contained lessons demonstrate the features arid techniftues of the package.
A maple*
1§8^ESSENTIALS
РОВТ-$ЖСОНОХКУ
This Tutorial ha? been designed by the Mathematics Department at Seattle Oeritrai Community College to give you a complete self-paced hands-on introduction to the basic commands that you will need to use Maple effectively.
This package of 49 Maple classroom modules by Gregory А. Moore of Cerritos College is designed to enliven the leaciwig of mathematics curricula at the Ngh school, community college and university levels.
р л ь I Matrix Algebra [ * L'Xj f? |>UC Л ? : О hi РЛС К This package of 30 Maple classi wm modules by Dr AMoozisiaw Kostecki covers most of the topics taugtit at Vie undergraduate level that concern operations on matrices with symbolic and nurfterical elements.
Рис. 2.39. Окончание страница Education
На других вкладках Maple Powertools (Research и Applications) также можно найти подборки примеров. Некоторые повторяют уже рассмотренные. Из новых наборов примеров можно отметить пакеты по конечным элементам Finite Elements, нелинейному программированию Nonlinear Programming, применению статистики Statistics Supplement, динамике Dynaflex и расчету электрических и электронных цепей Syrap.
Студенческий центр
Для доступа в Студенческий центр надо щелкнуть на гиперссылке Maple Student Center на начальной странице сайта корпорации Waterloo Maple (рис. 2.17). Появится начальная страница этого центра, представленная на рис. 2.40.
Щелкнув на гиперссылке Enter в правом нижнем углу страницы (рис. 2.40), можно получить доступ к следующей странице, изображенной на рис. 2.41 и содержащей ссылки на компоненты, находящиеся в Студенческом центре. Наряду с уже упомянутыми пакетами4 примеров тут можно найти и новые. Список обучающих пакетов в открытом виде представлен на странице рис. 2.41. Выбрав тот или иной пакет, его можно загрузить по описанным выше правилам.
В Студенческом центре представлено особенно много пакетов примеров работы с Maple. И это отражает особое внимание, уделяемое разработчиками этой системы развитию образования,
Рис. 2.40. Начальная страница Студенческого центра
z3 Waterloo Maple Student Center - Mtcioioft Internet Explorer
= ^аМ Правка §ид Избранное Сервис £праак:а
OD5L@tlaw Qu»»»
- V ......
Wwwmaple4$tudent$.com/main.html
Get Help With?
Quick Links
I N<#d Ноц. I eamintj Марк-*
<J=H4M0 - < ' a««|e нор//.
PHYSIC
Ibiis Maple t'4orial has been designed bv the Matfiematics
Calculus I
Calculus II
Calculus III
Vector Calculus
Differential Equations Linear Algebra Complex Variables Real Analysis Engineering
Physics Other
Choose a tutorial
This course introduces the advantages C” using Maple as a mathematics program to do physics. Several fields of mathematics are covered in this laboratory in areas such as Calcuius, Linear Algebra, Complex timbers and many
This Month'»
5ШИТ
H»pte Wftete.
<»et»t^#e6F8tsea 6el IMp «itir Ctiaws $ь*йеяГ 44*рк tempnstiftw trotrwten
^t'fis#feTl'$t4«tattf^ii®#.
Ctswrf
I» menu, and start getting >*Яр.
Mr. kwong will be enterrig hs sopromore year ич the University of Waterloo’s Co-operative ■ Education Computer Science program in the fall. He takes interest « cryptography, physics applications, and recursive algorithms. in his spare time, Alexis enjoys drumming, watching anime, and playing voteybal
ЖИМИ
•^Feedback!
You want to have your Bio Her e? CBck here to find out howl
Дополнительные информационные ресурсы в Интернете
Регистрация Maple 7
Политика корпорации Waterloo ориентирована на предельно открытую информационную поддержку системы. Это видно из обзора информационных материалов по системе, представленного выше. Тем не менее для легальных пользователей системы предусмотрены многочисленные блага — рассылка новых материалов по Maple, обновление программы, приглашение на конференции, круглосуточные консультации по телефону и т. д. Но для этого надо зарегистрировать полученный программный продукт.
Регистрация системы Maple 7 выполняется либо по обычной почте, либо по Интернету. В последнем случае достаточно выйти на страницу регистрации, представленную на рис. 2.42.
^Waterloo Maple*» Registration Site - Microsoft Internet Explorer
^ ^Перехсй ■^ ^Перехсй ■: ^айя Qpasxs £щ $зб0внное £gpeM6 $првбьа' Q 0 fS ^Лоисж ^Избранное 0*дрг»я 0* ^- ® S^ * В . ;.&Apec:|i£] http: //register maplesoft. com/: ^айя Qpasxs £щ $зб0внное £gpeM6 $првбьа' Q 0 fS ^Лоисж ^Избранное 0*дрг»я 0* ^- ® S^ * В . ;.&Apec:|i£] http: //register maplesoft. com//'/HAT'S МЕЛABOUT USPRODUCT INFORMATIONSALESSUPPORTPUBLICATIONSPRESS ROOMCAREERSCONTACT US/'/HAT'S МЕЛABOUT USPRODUCT INFORMATIONSALESSUPPORTPUBLICATIONSPRESS ROOMCAREERSCONTACT USWelcome to the Waterloo Maple Registration SiteWelcome to the Waterloo Maple Registration SiteЛПа! can Maple Do for me?ЛПа! can Maple Do for me?MAIN WEB SITE - : rMAIN WEB SITE - : rPlease select one of the following options;Please select one of the following options;• Your 9-cigit Serial number can he found on your CD jewel case or License• Your 9-cigit Serial number can he found on your CD jewel case or License Agreement envelope. Agreement envelope. MAPlE-APPLICATION CENTER^MAPlE-APPLICATION CENTER^MAPLE STUDENT CENTERMAPLE STUDENT CENTER
^ ^Перехсй ■
^ ^Перехсй ■
: ^айя Qpasxs £щ $зб0внное £gpeM6 $првбьа
' Q 0 fS ^Лоисж ^Избранное 0*дрг»я 0* ^- ® S^ * В . ;.&Apec:|i£] http: //register maplesoft. com/
: ^айя Qpasxs £щ $зб0внное £gpeM6 $првбьа
' Q 0 fS ^Лоисж ^Избранное 0*дрг»я 0* ^- ® S^ * В . ;.&Apec:|i£] http: //register maplesoft. com/
/'/HAT'S МЕЛ
ABOUT US
PRODUCT INFORMATION
SALES
SUPPORT
PUBLICATIONS
PRESS ROOM
CAREERS
CONTACT US
/'/HAT'S МЕЛ
ABOUT US
PRODUCT INFORMATION
SALES
SUPPORT
PUBLICATIONS
PRESS ROOM
CAREERS
CONTACT US
Welcome to the Waterloo Maple Registration Site
Welcome to the Waterloo Maple Registration Site
ЛПа! can Maple Do for me?
ЛПа! can Maple Do for me?
MAIN WEB SITE - : r
MAIN WEB SITE - : r
Please select one of the following options;
Please select one of the following options;
• Your 9-cigit Serial number can he found on your CD jewel case or License
• Your 9-cigit Serial number can he found on your CD jewel case or License
Agreement envelope.
Agreement envelope.
MAPlE-
APPLICATION CENTER^
MAPlE-
APPLICATION CENTER^
MAPLE STUDENT CENTER
MAPLE STUDENT CENTER
Рис. 2.42. Страница регистрации системы Maple 7
В ходе регистрации надо дать определенные Данные о себе (имя, фамилия, обычный адрес» телефоны ц, др.), ^сообщить номер лицензии и серийный номер при-
обретенного пакета и указать другие принятые для такого рода операции данные. После регистрации пользователю будет послано по электронной почте подтверждение о ней, и пользователь будет занесен в базу данных корпорации Waterloo Maple.
Контактные адреса корпорации Waterloo Maple
Если возникает необходимость обратиться прямо в корпорацию Waterloo Maple (например, по почте обычной или электронной либо по телефону), то можно получить необходимые контактные данные, просмотрев страницу корпорации, представленную на рис. 2.43.
"2 {^Пераш"2 {^Пераш1'5 About Waterloo Maple - Contact Information - Microsoft Internet Explorer
"2 {^Пераш
"2 {^Пераш
‘ Дайл Пр5№б £иа Икание» Сазане фраячН
ОзЯйзей:
фАдреСдЗ^] http://www.maplesoft.com/cofporale/contact_info/contactjnfo.shtml
Quk>; FactsCorporate HeadquarterCorporate TimelineProduct TimelineExecutive BiographiesQuk>; FactsCorporate HeadquarterCorporate TimelineProduct TimelineExecutive BiographiesContact InformationContact InformationAbout Waterloo-MapleAbout Waterloo-MapleWHAT'S NEWABOUT USPRODUC T INFORM A TIONSALESSUPPORTWBLICATiONSPRESS ROOMCAREERSCONTACT USWHAT'S NEWABOUT USPRODUC T INFORM A TIONSALESSUPPORTWBLICATiONSPRESS ROOMCAREERSCONTACT USSales InquiriesSales InquiriesIn North AmericaInter national SalesIn North AmericaInter national Sales■/'Aiax can Maple Do tor me?■/'Aiax can Maple Do tor me?MAPLEAPPLICATION CENTER _MAPLEAPPLICATION CENTER _MAPLE STUDENT CENTUtMAPLE STUDENT CENTUtTechnical Support (Request Support) Our knowledgebase of FAQ’s will answer most of your technical support questions. To find your answers click here.Technical Support (Request Support) Our knowledgebase of FAQ’s will answer most of your technical support questions. To find your answers click here.If you have more questions use our online support formor contact support@moplesoft comIf you have more questions use our online support formor contact support@moplesoft comApplication Center(Comments and Submissions)Contact applications@maple scApplication Center(Comments and Submissions)Contact applications@maple sc
Quk>; Facts
Corporate Headquarter
Corporate Timeline
Product Timeline
Executive Biographies
Quk>; Facts
Corporate Headquarter
Corporate Timeline
Product Timeline
Executive Biographies
Contact Information
Contact Information
About Waterloo-Maple
About Waterloo-Maple
WHAT'S NEW
ABOUT US
PRODUC T INFORM A TION
SALES
SUPPORT
WBLICATiONS
PRESS ROOM
CAREERS
CONTACT US
WHAT'S NEW
ABOUT US
PRODUC T INFORM A TION
SALES
SUPPORT
WBLICATiONS
PRESS ROOM
CAREERS
CONTACT US
Sales Inquiries
Sales Inquiries
In North America
Inter national Sales
In North America
Inter national Sales
■/'Aiax can Maple Do tor me?
■/'Aiax can Maple Do tor me?
MAPLE
APPLICATION CENTER _
MAPLE
APPLICATION CENTER _
MAPLE STUDENT CENTUt
MAPLE STUDENT CENTUt
Technical Support (Request Support) Our knowledgebase of FAQ’s will answer most of your technical support questions. To find your answers click here.
Technical Support (Request Support) Our knowledgebase of FAQ’s will answer most of your technical support questions. To find your answers click here.
If you have more questions use our online support form
or contact support@moplesoft com
If you have more questions use our online support form
or contact support@moplesoft com
Application Center
(Comments and Submissions)
Contact applications@maple sc
Application Center
(Comments and Submissions)
Contact applications@maple sc
for General kiqolrtewfor General kiqolrtewHuman Resources(Resume Submissions)Contact hr@maplesoft.comHuman Resources(Resume Submissions)Contact hr@maplesoft.com
for General kiqolrtew
for General kiqolrtew
Human Resources
(Resume Submissions)
Contact hr@maplesoft.com
Human Resources
(Resume Submissions)
Contact hr@maplesoft.com
Waterloo Maple Inc.57 Erb Street West Waterloo, Ontario Canada N2L 6C2Waterloo Maple Inc.57 Erb Street West Waterloo, Ontario Canada N2L 6C2PutHic Reldhons(Media and Reviewers)Contact exess^maplesoft.ccwPutHic Reldhons(Media and Reviewers)Contact exess^maplesoft.ccw
Waterloo Maple Inc.
57 Erb Street West Waterloo, Ontario Canada N2L 6C2
Waterloo Maple Inc.
57 Erb Street West Waterloo, Ontario Canada N2L 6C2
PutHic Reldhons
(Media and Reviewers)
Contact exess^maplesoft.ccw
PutHic Reldhons
(Media and Reviewers)
Contact exess^maplesoft.ccw
1.800.267-6583Phone: *1 (519) 747-23731.800.267-6583Phone: *1 (519) 747-2373Business Development
1.800.267-6583
Phone: *1 (519) 747-2373
1.800.267-6583
Phone: *1 (519) 747-2373
(Potential Partnership Opportunities)
Рис. 2.43. Web-страница корпорации Waterloo Maple с контактными данными
Обзор источников информационной поддержки
Наиболее полный обзор источников информационной поддержки Maple можно получить с web-страницы, представленной на рис. 2.44. Она загружается щелчком на гиперссылке Maple Links, присутствующей на многих web-страницах корпорации Waterloo Maple.
С этой страницы можно попасть на страницы с различными источниками информационных ресурсов для Maple и web-сайты, им посвященные. К примеру,
в сентябре 2001 г. на этой странице присутствовала ссылка на новый российский сайт Донецкого государственного университета, посвященный системе Maple (начало ссылки можно заметить внизу страницы на рис. 2.44, если перейти в ее конец с помощью полосы прокрутки). -
Рис. 2.44. Страница с обзором источников информационной поддержки Maple
Модернизация системы
Хотя Maple 7 — тщательно проработанная система, у нее могут быть отдельные неточности в работе — как говорится, «и на Солнце есть пятна». Эти недоработки устраняются с помощью специальных patch-файлов, которые можно найти в разделе Support сайта фирмы (рис. 2.45). На этой странице необходимо заполнить небольшую анкету, в которой следует указать ваши контактные данные.
Загрузка patch-файлов осуществляется аналогично описанной выше загрузке пакетов-библиотек. Patch-файлы обычно помещают в основную директорию системы Maple и запускают — все необходимые для модернизации системы действия выполняются автоматически. Примерно так же можно загружать файлы библиотек Maple 7. Это позволяет в течение долгого времени поддерживать качество работы программы на самом высоком уровне, не покупая новых версий.
i д;^ЛД|«»^^^^' "С?0«» Римбк» ' ' "' *" ""' " "- ’,*• ”"'*'£ ФН«Ч» - -, ' o Q (3 ^a®®“ QgKsSpewoe 0Жаяип (2)- ^~ ^ g?i д;^ЛД|«»^^^^' "С?0«» Римбк» ' ' "' *" ""' " "- ’,*• ”"'*'£ ФН«Ч» - -, ' o Q (3 ^a®®“ QgKsSpewoe 0Жаяип (2)- ^~ ^ g?*| ^Hepextol*| ^HepextolWaterloo MapleWaterloo MapleMaple Apt.u< it un (. '«HiMaple Apt.u< it un (. '«Hi'see Trial Version'see Trial VersionГ2Г2APVjMHCINS МАТНСМАТКгвAPVjMHCINS МАТНСМАТКгвContribute an ApplicationContribute an ApplicationMaple AppUpdates - Free Subscription FormMaple AppUpdates - Free Subscription FormMaple Links • /VebEQ MsthML ViewerShare Library '.oritact UsMaple Links • /VebEQ MsthML ViewerShare Library '.oritact UsThank you for your interest in the Maple Application Center.Thank you for your interest in the Maple Application Center.Subscribe io be added io the e-rna:1 distribution list that will inform members when requested New Applications are posted.Subscribe io be added io the e-rna:1 distribution list that will inform members when requested New Applications are posted.-A/HAT'S NWABOUT USPRODUCT INFORMATION-A/HAT'S NWABOUT USPRODUCT INFORMATIONE-MailE-MailSUPPORT PUBLICATIONS PRESS ROOM CAREERS CONTACT USSUPPORT PUBLICATIONS PRESS ROOM CAREERS CONTACT USF irst NameF irst NameLast NameLast NameCompanyCompanyTitleTitle■/Vhat can Maple Do for me7■/Vhat can Maple Do for me7Please Select Your Categories of Interest:Please Select Your Categories of Interest:MAIN WL8 StreMAIN WL8 StreMAPU SW£XNICLNtlRMAPU SW£XNICLNtlRC CommunicateC Communicater Mathematicr MathematicRLGISUR PRODUCf 4RLGISUR PRODUCf 4П Data Anaiysls/StatzГ EconomicsiFin EngП Data Anaiysls/StatzГ EconomicsiFin EngП Software DevelopmentП Software Development
i д;^ЛД|«»^^^^' "С?0«» Римбк» ' ' "' *" ""' " "- ’,*• ”"'*'
£ ФН«Ч» - -, ' o Q (3 ^a®®“ QgKsSpewoe 0Жаяип (2)- ^~ ^ g?
i д;^ЛД|«»^^^^' "С?0«» Римбк» ' ' "' *" ""' " "- ’,*• ”"'*'
£ ФН«Ч» - -, ' o Q (3 ^a®®“ QgKsSpewoe 0Жаяип (2)- ^~ ^ g?
*| ^Hepextol
*| ^Hepextol
Waterloo Maple
Waterloo Maple
Maple Apt.u< it un (. '«Hi
Maple Apt.u< it un (. '«Hi
'see Trial Version
'see Trial Version
Г2
Г2
APVjMHCINS МАТНСМАТКгв
APVjMHCINS МАТНСМАТКгв
Contribute an Application
Contribute an Application
Maple AppUpdates - Free Subscription Form
Maple AppUpdates - Free Subscription Form
Maple Links • /VebEQ MsthML Viewer
Share Library '.oritact Us
Maple Links • /VebEQ MsthML Viewer
Share Library '.oritact Us
Thank you for your interest in the Maple Application Center.
Thank you for your interest in the Maple Application Center.
Subscribe io be added io the e-rna:1 distribution list that will inform members when requested New Applications are posted.
Subscribe io be added io the e-rna:1 distribution list that will inform members when requested New Applications are posted.
-A/HAT'S NW
ABOUT US
PRODUCT INFORMATION
-A/HAT'S NW
ABOUT US
PRODUCT INFORMATION
SUPPORT PUBLICATIONS PRESS ROOM CAREERS CONTACT US
SUPPORT PUBLICATIONS PRESS ROOM CAREERS CONTACT US
F irst Name
F irst Name
Last Name
Last Name
Company
Company
Title
Title
■/Vhat can Maple Do for me7
■/Vhat can Maple Do for me7
Please Select Your Categories of Interest:
Please Select Your Categories of Interest:
MAIN WL8 Stre
MAIN WL8 Stre
MAPU SW£XNICLNtlR
MAPU SW£XNICLNtlR
C Communicate
C Communicate
r Mathematic
r Mathematic
RLGISUR PRODUCf 4
RLGISUR PRODUCf 4
П Data Anaiysls/Statz
Г EconomicsiFin Eng
П Data Anaiysls/Statz
Г EconomicsiFin Eng
П Software Development
П Software Development
№|№|-21 Maple AppUpdates - Free Subscription Form ■ Microsoft Internet Explorer
№|
№|
Рис. 2.45. Страница модернизации системы Maple 7
Галерея графики
Даже предшествующие версии системы Maple обладали обширными графическими возможностями. Новая версия Maple 7 имеет просто потрясающие воображение возможности по созданию графических изображений. Для доступа к галереям графики (а их множество как в фирме Waterloo Maple, так и в ряде университетов) надо щелкнуть на гиперссылке Graphics&Galleries на web-странице, изображенной на рис. 2.44. Появится страница со списком галерей графики, на которой можно выбрать подходящую.
Ниже представлена страница галереи графики корпорации Waterloo Maple (рис. 2.46). Она содержит множество красочных картинок цветных графиков, полученных средствами Maple. На рис. 2.46 представлено лишь начало галереи, вам стоит просмотреть эту страницу и дальше.
Важно отметить, что разработчики сайта приводят не только сами графики (их созерцание многим доставляет удовольствие), но и возможность загрузить коды (программы) на языке Maple 7, выполнение которых создает выбранный график. Изучение таких программ позволяет учащимся разобраться в ряде весьма тонких алгоритмов современной машинной графики, описание которых (из-за большого объема) трудно найти в учебниках.
3 Maple Graphics Gallery - Microsoft Internet Exploit
j)№6C |#1 iMto //www mdrieaoDs соп./са1е«г1в$/дгарН|С$7аа^shtml
[Waterloo Maple Hi w=pi«_ApP<«»i.»» Center: л Maple Books ( Free Trial Verwon
APV !*««#*« -M**WSM*T?C^
01ЖК LINKS01ЖК LINKSCcntrjtute an Application Maile PoWertoots What's New'?Maple Links vVebES MatnML ViewerCcntrjtute an Application Maile PoWertoots What's New'?Maple Links vVebES MatnML ViewerWelcome to the Maple Graphics Gallery, an exhibition or Maple graphics ranging from tunction pints Io mathematical art.Welcome to the Maple Graphics Gallery, an exhibition or Maple graphics ranging from tunction pints Io mathematical art.GRAMICSGRAMICSthe hrsr cate^orv listedthe hrsr cate^orv listedri the A,riPnrrtions# СаИету,ri the A,riPnrrtions# СаИету,
01ЖК LINKS
01ЖК LINKS
Ccntrjtute an Application Maile PoWertoots What's New'?
Maple Links vVebES MatnML Viewer
Ccntrjtute an Application Maile PoWertoots What's New'?
Maple Links vVebES MatnML Viewer
Welcome to the Maple Graphics Gallery, an exhibition or Maple graphics ranging from tunction pints Io mathematical art.
Welcome to the Maple Graphics Gallery, an exhibition or Maple graphics ranging from tunction pints Io mathematical art.
GRAMICS
GRAMICS
the hrsr cate^orv listed
the hrsr cate^orv listed
ri the A,riPnrrtions# СаИету,
ri the A,riPnrrtions# СаИету,
■AMAT’S NEWPRODUC1 INFORMATIONSALESSUPPORTPUBLICATIONSPRESS ROOMCAREERS■AMAT’S NEWPRODUC1 INFORMATIONSALESSUPPORTPUBLICATIONSPRESS ROOMCAREERSA CategoryA CategoryThe Graphics Gallery is always looking for new entrie your Maple graphics at applications^-naplesoft .com.
■AMAT’S NEW
PRODUC1 INFORMATION
SALES
SUPPORT
PUBLICATIONS
PRESS ROOM
CAREERS
■AMAT’S NEW
PRODUC1 INFORMATION
SALES
SUPPORT
PUBLICATIONS
PRESS ROOM
CAREERS
A Category
A Category
Рис. 2.46. Галерея графики корпорации Waterloo MapleРис. 2.46. Галерея графики корпорации Waterloo MapleWe invite you to download the Maple code used to generate those grannies and experiment!
Рис. 2.46. Галерея графики корпорации Waterloo Maple
Рис. 2.46. Галерея графики корпорации Waterloo Maple
Whst can Maple Do for me?
■ м ain web ss^i|g|Bi
> MAPLE STIK)ENTCEN^
Ria-wk тогии ^
Библиотека Share Library
В развитии систем класса Maple принимают участие не только специалисты корпорации Waterloo Maple и ее партнеры, но и специалисты со всех стран мира. Это научные работки, преподаватели и студенты университетов и вузов разного профиля и просто любители математики и различных сфер ее приложения. Их усилиями создана уникальная библиотека Share Library — подлинный кладезь интересных примеров применения систем класса Maple.
Доступ к библиотеке открывает гиперссылка Share Library, имеющаяся на многих web-страницах, приведенных выше, — например, на рис. 2.44. Начальная страница библиотеки представлена на рис. 2.47.
Предусмотрены две возможности использования библиотеки: установить ее целиком на жесткий диск или перейти в режим использования только некоторых примеров. Библиотека занимает сотни Мбайт памяти на диске и содержит множество примеров для уже устаревших версий систем Maple. Поэтому переписывать библиотеку целиком едва ли целесообразно. Страница с началом перечня разделов библиотеки (тематический каталог) представлена на рис. 2.48. Помимо показанных на странице рис. 2.48 разделов по применению Maple и по математическим расчетам имеются и другие разделы, в том числе по примерам в области образования.
Рис. 2.47. Начальная страница библиотеки Share Library
•ДМ-р1- *гг'—-j*:-^ r—^г - Microsoft Internet Exploier
ФШ *W«e gnl Й»6р**ф» C5P5W Спрау а
■^Kmi * ' v О D <3 ^^к ^И^бЕДиид» 0^я»нм £Д* ^* ^ W * 9:
■g®http://www.ma^eapps.com/maplelff*s/code_find_texl.html
wr4.fi цччтх^ V
•CcfntrihtRe чп Адейс^юп Maple Powertools ■ ■ What's New7
The Maple Code Library - Finding Entries
Browse below or use the Entry Index a Author Index .
Maple Lrnks
WeoEQ M4thM1. Viewer
Share Library
AppUpdates Newsletter
Contact Us
Application Areas
Mathematics
WHAT'S NEW ABOUT US PRODUCT INFORMATION SALES SUPPORT PUBLICATIONS CAREERS PRESS ROOM
Whet can Maple Do for me?
^^жм
^MAPLE STUDENT CENTER,
^ g- «^Чт |ЩД
Register product Я|
Astronomy 8 Astrophysics
Biology & Medicine
Chemistry & Ctiemical Engineering
Grout Design
Comrrunicetron 8 Sigrial Processing
Compeer Aided Design 8 Manufacturing
Computer Science -
Control Systems
Economics & Finance
Electrical 8 Electronic Engineering
Electromagnetics
General Engineering
Heat 8 Tfermodymenics
•dOS8£&X
Algebra
Analysis
Calculus
CombTfetorics 8 Graph Theory
Differential EeiuatiOTs
Geometry
Groiv Theory
Linear Algebf a & Matrices
Number Theory
Numerics
Recreetionai Meth
Statistics S Probabiitv
Vector Calcuus
MsceBaneous MetF«ema#cs
Поддержка MathML 2.0
Выход на web-страницу поддержки MathML •
MathML — это специальный язык представления математической информации. Основное достоинство данного языка — то, что он является мировым стандартом и поддерживается большинством разработчиков математических систем (Maple, Mathcad, Mathematica и др.) и браузеров. В результате появляется возможность записи сложных математических выражений и графиков в очень небольшом по объему текстовом формате. По сути, он похож на язык XML, адаптированный для представления математической информации.
Корпорация Waterloo Maple дает возможность подключить к браузерам и Maple 7 средства поддержки языка MathML. Для этого достаточно щелкнуть на гиперссылке WebEQ MathML Viewer (см. рис. 2.44, например). Откроется специальная страница с подробным описанием возможностей MathML (рис. 2.49).
Рис. 2.49. Страница поддержки языка MathML
MathML лишь начинает внедряться, поэтому мы ограничимся здесь лишь описанием средств поддержки этого языка. С помощью страницы, представленной на рис. 2.48, можно ознакомиться с MathML более подробно.
Загрузка средств поддержки Math MLДля загрузки средств поддержки MathML достаточно щелкнуть на гиперссылке Download WebEQ MathML Viewer for Maple 7, которая видна на рис. 2.49. Появится начальная страница Мастера установки WebEQ MathML Viewer, показанная па рис. 2.50.Загрузка средств поддержки Math MLДля загрузки средств поддержки MathML достаточно щелкнуть на гиперссылке Download WebEQ MathML Viewer for Maple 7, которая видна на рис. 2.49. Появится начальная страница Мастера установки WebEQ MathML Viewer, показанная па рис. 2.50.5 4=Н«ш * ' - О Q ^ ^Пы«. ygHs&awai 0< ;;;:j-ytP№liiJhilp7iwwwjinapiesoii‘ci'«i^^5 4=Н«ш * ' - О Q ^ ^Пы«. ygHs&awai 0< ;;;:j-ytP№liiJhilp7iwwwjinapiesoii‘ci'«i^^Waterloo MapleWaterloo MapleADVAMClMfi М*Г1«ЖАПС$ADVAMClMfi М*Г1«ЖАПС$Install WebEQ for MapleInstall WebEQ for MapleTo avoid delays while the Math Viewer applet downloads, install WebEQ for Maple. You will cache a copy of theTo avoid delays while the Math Viewer applet downloads, install WebEQ for Maple. You will cache a copy of theMatliML Viewer Java class files in your browser so any Web pages that use WebEQ for Maple will appear more quickly. The free archive installer download is around 500K. The MatliML Viewer installation files are digitallyMatliML Viewer Java class files in your browser so any Web pages that use WebEQ for Maple will appear more quickly. The free archive installer download is around 500K. The MatliML Viewer installation files are digitallysigned to ensure that you are caching authentic, sal , Click ^ Auto Detect^Jthe nghtinsuSer for yow tsigned to ensure that you are caching authentic, sal , Click ^ Auto Detect^Jthe nghtinsuSer for yow t<al Install MathML Viewei? -Microsoft Internet Exploret E8I*IEfi<al Install MathML Viewei? -Microsoft Internet Exploret E8I*IEfiWaterloo MapleWaterloo MapleAOVANCW» MATWMMKWAOVANCW» MATWMMKWAlternatively, select one of the links below.Alternatively, select one of the links below.Internet Explorer 5 or higherWindows users click here to install the MathML' you need to have both Java and JavaScript enableMacintosh users must install manually. On MML JAR archive to your local disk. A good place to p Internet Explorer, select Edit, select Preferences classpath.In all cases, restart your browser.•Internet Explorer 5 or higherWindows users click here to install the MathML' you need to have both Java and JavaScript enableMacintosh users must install manually. On MML JAR archive to your local disk. A good place to p Internet Explorer, select Edit, select Preferences classpath.In all cases, restart your browser.•Install MathML ViewerInstall MathML ViewerInstall the free MathML Viewer (500K download) to eliminate download time and improve performance.Install the free MathML Viewer (500K download) to eliminate download time and improve performance.8egtri Insi^ttahqn8egtri Insi^ttahqnMO ThinksMO ThinksThe MathML Viewer is digitally signed for your securityThe MathML Viewer is digitally signed for your security
Загрузка средств поддержки Math ML
Для загрузки средств поддержки MathML достаточно щелкнуть на гиперссылке Download WebEQ MathML Viewer for Maple 7, которая видна на рис. 2.49. Появится начальная страница Мастера установки WebEQ MathML Viewer, показанная па рис. 2.50.
Загрузка средств поддержки Math ML
Для загрузки средств поддержки MathML достаточно щелкнуть на гиперссылке Download WebEQ MathML Viewer for Maple 7, которая видна на рис. 2.49. Появится начальная страница Мастера установки WebEQ MathML Viewer, показанная па рис. 2.50.
5 4=Н«ш * ' - О Q ^ ^Пы«. ygHs&awai 0< ;;;:j-ytP№liiJhilp7iwwwjinapiesoii‘ci'«i^^
5 4=Н«ш * ' - О Q ^ ^Пы«. ygHs&awai 0< ;;;:j-ytP№liiJhilp7iwwwjinapiesoii‘ci'«i^^
Waterloo Maple
Waterloo Maple
ADVAMClMfi М*Г1«ЖАПС$
ADVAMClMfi М*Г1«ЖАПС$
Install WebEQ for Maple
Install WebEQ for Maple
To avoid delays while the Math Viewer applet downloads, install WebEQ for Maple. You will cache a copy of the
To avoid delays while the Math Viewer applet downloads, install WebEQ for Maple. You will cache a copy of the
MatliML Viewer Java class files in your browser so any Web pages that use WebEQ for Maple will appear more quickly. The free archive installer download is around 500K. The MatliML Viewer installation files are digitally
MatliML Viewer Java class files in your browser so any Web pages that use WebEQ for Maple will appear more quickly. The free archive installer download is around 500K. The MatliML Viewer installation files are digitally
signed to ensure that you are caching authentic, sal , Click ^ Auto Detect^Jthe nghtinsuSer for yow t
signed to ensure that you are caching authentic, sal , Click ^ Auto Detect^Jthe nghtinsuSer for yow t
<al Install MathML Viewei? -Microsoft Internet Exploret E8I*IEfi
<al Install MathML Viewei? -Microsoft Internet Exploret E8I*IEfi
Waterloo Maple
Waterloo Maple
AOVANCW» MATWMMKW
AOVANCW» MATWMMKW
Alternatively, select one of the links below.
Alternatively, select one of the links below.
Internet Explorer 5 or higher
Windows users click here to install the MathML' you need to have both Java and JavaScript enable
Macintosh users must install manually. On MML JAR archive to your local disk. A good place to p Internet Explorer, select Edit, select Preferences classpath.
In all cases, restart your browser.•
Internet Explorer 5 or higher
Windows users click here to install the MathML' you need to have both Java and JavaScript enable
Macintosh users must install manually. On MML JAR archive to your local disk. A good place to p Internet Explorer, select Edit, select Preferences classpath.
In all cases, restart your browser.•
Install MathML Viewer
Install MathML Viewer
Install the free MathML Viewer (500K download) to eliminate download time and improve performance.
Install the free MathML Viewer (500K download) to eliminate download time and improve performance.
8egtri Insi^ttahqn
8egtri Insi^ttahqn
MO Thinks
MO Thinks
The MathML Viewer is digitally signed for your security
The MathML Viewer is digitally signed for your security
Рис. 2.50. Страница Мастера установки WebEQ MathML Viewer
Обратите внимание на кнопку Click to Autodetect, которая позволяет проверить, не установлена ли уже на вашем компьютере поддержка MathML. Это весьма маловероятно, но стоит проверить — как говорится, «чем черт не шутит». Если такой поддержки нет, то появится окно установки, показанное на рис. 2.50 справа, и вы сможете начать установку MathML Viewer, нажав кнопку Begin Installation, или отказаться от нее, щелкнув на No Thanks.
Если вы рискнули начать установку модулей поддержки MathML (это стоит сделать, если вы всерьез намерены передавать математическую информацию через Интернет), то нажмите кнопку Begin Installation. Через некоторое время (до нескольких минут) появится окно с предупреждением системы безопасности (рис. 2.51).
Нажав кнопку Да, вы подтвердите свое доверие к корпорации Waterloo Maple и начнете процесс установки. Ход процесса установки отражается на линейном индикаторе в окне Мастера, что показано на рис. 2.52.
После завершения процесса установки окошко с линейным индикатором сменится информационным окошком с сообщением о завершении установки (рис. 2.53).
As you read this page, WebEQ for Maple is being di will be prompted for permission to install it to yourOnce foe installation is finished, verify foat WebEQAs you read this page, WebEQ for Maple is being di will be prompted for permission to install it to yourOnce foe installation is finished, verify foat WebEQ
As you read this page, WebEQ for Maple is being di will be prompted for permission to install it to your
Once foe installation is finished, verify foat WebEQ
As you read this page, WebEQ for Maple is being di will be prompted for permission to install it to your
Once foe installation is finished, verify foat WebEQ
Now Installing WebEQ for Maple
Xowr-e ^сг^нгфмгь «amm«rb*M^bMLVte^ ^вУ*: лоаг»кг»*ый24О5 СП 23 T7 ираегджгра^аемый: :
К!^ос^^гк hx;
Пэдтшихггь. иэвйгейА лроварет с помощью Thawte i
Sever САi
внимание W<tettei?M.5^:nc.nosraao.^;
$е3ойвсмфст&. сйдаряГммОГй Следует ду<м»адир№, ;
е«1и «я доверяет» Waledw Maple foe;
"&|Г,^ж> jJc&'jxe^w^f;
i:£^^;n^^^
Г ^сегдэдое^^ь^^жм^мд.тл^^ Watefto Mapte foe
Рис. 2.51. Предупреждение системы безопасности о начале установки MathML Viewer
<? Назад * Q П й ^Пл«х фИзбоаинее ^Лурнап (2t* ^- ^ 1^ * ^;
:^(^^Ш^Т^уЛ^му7тзр1е$ан""^^^ri^l^fcMWi
AOVAMtitNti M*1XBMAt«CeAOVAMtitNti M*1XBMAt«Ce>f«fc«»&№j;tV'WeWf>f«fc«»&№j;tV'WeWf
AOVAMtitNti M*1XBMAt«Ce
AOVAMtitNti M*1XBMAt«Ce
>f«fc«»&№j;tV
'WeWf
>f«fc«»&№j;tV
'WeWf
Now Installing WebEQ for Maple
.As you read this page, WebEQ for Maple is being downloaded to your Internet Explorer browser. When foe download is finished, you will be prompted for permission to install it to your local hard drive.
Once foe installation is finished, verify foat WebEQ for Maple is working properly by visiting this Jest Page.
Рис. 2.53. Завершение установки Math ML Viewer
Тестирование MathML Viewer
После завершения установки рекомендуется завершить работу браузера и даже перезапустить компьютер (у автора без этого MathML Viewer не заработал). После этого надо вернуться на страницу поддержки средств MathML и провести тестирование, щелкнув на гиперссылке Test Page. Если все в порядке, то в конце этой короткой страницы появится математическая формула, представленная на рис. 2.54.
Рис. 2.54. Страница тестирования MathML Viewer
Если установка прошла неудачно, то вместо контрольной формулы будет виден серый прямоугольник. В этом случае надо проанализировать причины неудачи и попробовать повторить установку снова. Надо прямо сказать, что большинство
пользователей не слишком много потеряют, если откажутся от установки MathML Viewer или потерпят при ней неудачу.
Использование средств MathML
Детальное описание использования средств MathML выходит за рамки данной книги. Поэтому ограничимся ссылкой на страницу How to Export Maple 7 output to MathML (Как экспортировать документы Maple 7 в формате MathML). Начало этой страницы представлено на рис. 2.55.
^hUp://www^naplesofLcom/standards/MatMHL/iniThUnl - Microsoft Internet Explorer
Ф^йЛ Ирадка §щ Избранное С^»й^ Справка
v^HaW * О D ^ ^ Поиск ^Избраимое -^Й'даиай ^* ^ ^ ^ * Q;
(^l^^j^fhttpT/wwwT-^esctf^^ gkg^ligp,^
How to export Maple 7 output as MathML“
Maple 7 worksheets
You can export an entire Maple 7 worksheet into MathML and view it on a standard browser. To do this, select Export As ■■ from the Edit menu. Choose the option HTML ■with MathML. You will be asked to enter the name of the HTML file and the location to save this file. After entering this information, you will have several options for the version of MathML to be used. We suggest selecting MathML 2.0 with WebEQ. Once the HTML file is generated, double click on the file to view the Web page.
Even if your browser does not support MathML, you will still be able to view the mathematical expressions in the Web page because of a technology embedded in Maple 7 called WebEQ, developed by Design Science Inc. WebEQ invokes a MathML viewer that displays each Maple output in the Web page as an applet. If WebEQ is not currently installed on your system, the MathML viewer gets invoked over the Internet. This can cause some slight delays when opening the HTML file. To T avoid these delays, you can install the WebEQ MathML Viewer permanently on your maclime.■■ ■
Individual Maple expresssions■
You can also export individual Maple expressions as MathML strings. If the expression is named "expr“, then enter the following command:
MathML -Export( expr ):■■
This will produce a string containing the MathML representation of the Maple expression. To list the string in nice, tab-indented layout, issue this command next:
Рис. 2.55. Страница с описанием экспорта в формат MathML
На этой странице дан пример того, как обеспечить экспорт документов Maple 7 в формате MathML. В уроке 16 вы найдете описание пакета MathML, в котором содержатся дополнительные средства поддержки MathML.
Maple на российских сайтах
Maple на сайте exponenta.ru
В последнее время появилось множество сайтов, посвященных системам компьютерной математики, и в частности Maple. К сожалению, большинство из них не
русскоязычные. Но есть и сайты, ориентированные на наших пользователей. Один из них — www.exponenta.ru.
Этот сайт посвящен применению систем компьютерной математики в образовании. На нем есть достаточно большой раздел, посвященный Maple (рис. 2.56).
^ ^^врахоа^ ^^врахоа•3 httpV/www.exponenia.ru/8oft/Maple/Mapfe.asp - Microsoft Internet Explorer
^ ^^врахоа
^ ^^врахоа
< Ф^м Ш*бк* gna ^брдм^е Стране £н$иб&а
■>Hasan * OB ^ ^П<йм j*]^s®W№a ^^4®н^ v.i&apee.-j^iiJhtip-T/ww^^~
Maple - одна из наиболее популярных систем символьных вычислении, ооладающая превосходной научной графикой. Символьный анализатор MAPLE V используется в системах Matlab. Mathcad. MATH Office и других.
Кратким обзор радели
В данном разделе Вы найдете:
Мар;е 7; новости от компании SoftLine:
■ • :'?ар;е о: новости от компании SoftLine:
книгу Б.М.Манзона Maple V Power Edition . являющуюся кратким руководством пользователя математического пакета Maple v Power Edition (версия 4), Книга будет полезна всем, кто изучает математику или использует ее в своей работе:
Maple Essentials On-line Tour;
программы А.«.Ларина; разложение функции в ряд Фурье, исследование функции с помощью производной, нахождение вычетов функции, приведение к каноническому виду уравнения кривой второго порядка и др.:
|! появились 2 новые программы:
информацию о Центре применении I'^ple:
описок русскоязычной литературы, посвященной работе в среде пакета Maple, с указаниями на сетевые магазины, в которых ее можно приобрести.
а также электронный вариант книги Г.Прохорова. В.Колбеева, К.Желнова. М.Ледемева Математический пакет f^apie V Release 4. Руководство пользователя .
( «>5^тг и у»>(ц v ра |де«)ы
В разделе Методические разработки размещены методические разработки: Предел Функции. Непрерывность. Методические указания к практическим занятиям, по теме
MrPLE 6 КУР-..Е МАТЕМгЧ1МЧЕСМ.>Ги мНа.ЛИс:м и Дифференцирование функции.
Метпдическне указания к практическим занятиям по теме MAPlE В KxP'-lt МмЛЕМАТИЧЕСКиГи мНА.ЛИЗА.“‘ курс лекции Квантовая механика с Maple .
В разделе Полезные ссылки можно наити ссылки на ресурсы Internet (в основном.
Рис. 2.56. Начальная страница сайта www.exponenta.ru
На этой странице, в частности, имеется подборка литературы по данным системам, включая учебные пособия и примеры применения (рис. 2.57). Нетрудно заметить, что список этой литературы достаточно велик, что свидетельствует об интересе читателей к этому программному продукту.
Среди упомянутой литературы можно найти и упоминание книги автора, посвященной предшествующей версии системы — Maple 6 (рис. 2.58). Эта книга издана издательством «Питер» в 2001 г.
Российский сайт Донецкого университета
Прекрасно оформленный сайт, посвященный Maple, создан Донецким университетом. Его начальная страница по стилю копирует начальную страницу корпорации Waterloo Maple, но с русскоязычными гиперссылками (рис. 2.59). 1 Этот сайт дает достаточно полное представление об информационной поддержке Maple. Это вйдно уже из главной страницы, посвященной описанию Центра применений систем Maple (рис. 2.60). На ней имеются ссылки на десятки разделов, посвященных таким применениям.
3 hUp //www.exponents tu/$oll/Maple/maple.book asp - Microsoft Internet Explorer
RHB
**?|Й hup:
О -/1 и -• “ ■ ','■■- .}■»■»■ к • и У ■.
://www.exponenta.ru/sott/Mapie/mapie_tx)OK asp
3 1>П«*«е
.^Рак^&итi г w
/; intsrnet-Koac^[ М^<здммт i бе-гл S^34
ISiEMj
IE,Qi
программы
См. также:
• СПИСОК русскоязычной литературы
Список литературы
Maple
*• В.Аладьев, М.Богдявичюс. Maple 6: Решение математических, статистических и инженерно-физических задач. Лаборатория Базовых Знаний. 2001. Аммотаиня.
“' В.Говорухин, В.Цибулин. Компьютер в математическом исследовании: Maple, MATLAB, LaTeX. Питер. 2001. Аннотация www.piter.com
"• В.Дьяконов. Maple 6. Учебный курс. Питер. 2001. Аннотация. www.books.ru
В.Дьяконов. Компьютерная математика. Теория и практика. Нолидж. 2000. Аннотгич; www.bocks.ru,www.kriowladge.ru
А.Матросов. Maple 6. Решение задач высшей математики и механики. БХВ-Петербург.
2001. www.bibiic-gicbus.ru,vvww.bocks.ru
В.Аладьев, Шишаков. Автоматизированное рабочее место математика. Лаборатория
базовых знаний. 2000,
<■ www.biblic-globus.ru
В.Дьяконов. Математическая система Maple V. Солон. 1998. www.books.ru
Г.Лрохоров, В.Колбеев, К.Желнов, М.Леденев. Математический пакет Maple V Release 4: Руководство пользователя. Калуга: Облиздат. 1998. Электронный вариант’ В.Говорухин, В.Цибулин. Введение в Maple. Математический пакет для всех. Мир.1997,
разработки:
1
Рис. 2.57. Раздел сайта www.exponenta.ru, посвященный русскоязычной литературе по системам Maple
Рис. 2.59. Начальная страница сайта Донецкого госуниверситета, посвященная системам Maple
Рис. 2.66. Главней Страница сайта Донецкого госуниверситета, посвященная ЦентруПрименений системMaple
Объективности ради надо отметить, что ссылка на многие разделы попросту отправляет пользователя к просмотру соответствующих разделов сайта корпорации Waterloo Maple. Но есть немало разделов, содержащих интересную и важную информацию по системам Maple и их применению. Важно, что создатели этого сайта не ограничились описанием только работ Донецкого госуниверситета, но и дали объективную информацию по применению систем класса Maple как за рубежом, так и в России. В качестве примера можно привести отражение на этом сайте книг по системам Maple, опубликованным на русском языке (рис. 2.61).
Рис. 2.61. Страница сайта Донецкого госуниверситета, посвященная русскоязычным книгам по Maple
Maple в карманном компьютере
Maple — довольно громоздкие программы, хотя им далеко до MATLAB, уже занимающих на жестком диске компьютера объем около 1-1,5 Гбайт. Поэтому особый интерес вызвало сообщение о том, что несколько урезанная версия системы Maple размещена в ПЗУ карманного компьютера Cassiopeia А22Т известной своими миниатюрными изделиями фирмы Casio (рис. 2.62).
Этот помещающийся на ладони компьютер работает под управлением операционной системы Windows СЕ. Благодаря размещенной в ПЗУ программе Maple компьютер может выполнять сложные математические расчеты с удобствами, которым позавидует любой пользователь обычного компьютера. Ведь эту малышку можно_ц.зять и на дачу, и на пляж, не беспокоясь о сети Электропитания и даже о зарядке аккумуляторных батарей — питается компьютер от обычных миниатюр-
ных гальванических элементов, причем одной их зарядки хватает на многие десятки часов работы.ных гальванических элементов, причем одной их зарядки хватает на многие десятки часов работы.|Z3A22T • Cassiopeia Computer Extender * Microsoft Internet Explorer|Z3A22T • Cassiopeia Computer Extender * Microsoft Internet Explorerj Файл Правка Вид Избранное Сервис Справка'! ФНааад v <ф . 0 Q ^ , ^„^ ^и^ное 0Ж№на« = ®^^' ® ЕГ ’0j Файл Правка Вид Избранное Сервис Справка'! ФНааад v <ф . 0 Q ^ , ^„^ ^и^ное 0Ж№на« = ®^^' ® ЕГ ’0:KAApeAi|^|htipiMvwvLcasiacom/personalpcs/productcfm?section=20&product=1739&d^^:KAApeAi|^|htipiMvwvLcasiacom/personalpcs/productcfm?section=20&product=1739&d^^3 j^n®^„3 j^n®^„CASIO.the uitexpected txtraCASIO.the uitexpected txtraBUSINESS T EDUCATION TmYACCOUNTBUSINESS T EDUCATION TmYACCOUNTSearchSearchА22Т Cassiopeia Computer ExtenderА22Т Cassiopeia Computer ExtenderР«>4чЧР«>4чЧFile*File*A«®aMIA«®aMIPHODUCISГPHODUCISГA22TA22T$446.95$446.95BuyBuy
ных гальванических элементов, причем одной их зарядки хватает на многие десятки часов работы.
ных гальванических элементов, причем одной их зарядки хватает на многие десятки часов работы.
|Z3A22T • Cassiopeia Computer Extender * Microsoft Internet Explorer
|Z3A22T • Cassiopeia Computer Extender * Microsoft Internet Explorer
j Файл Правка Вид Избранное Сервис Справка'
! ФНааад v <ф . 0 Q ^ , ^„^ ^и^ное 0Ж№на« = ®^^' ® ЕГ ’0
j Файл Правка Вид Избранное Сервис Справка'
! ФНааад v <ф . 0 Q ^ , ^„^ ^и^ное 0Ж№на« = ®^^' ® ЕГ ’0
:KAApeAi|^|htipiMvwvLcasiacom/personalpcs/productcfm?section=20&product=1739&d^^
:KAApeAi|^|htipiMvwvLcasiacom/personalpcs/productcfm?section=20&product=1739&d^^
3 j^n®^„
3 j^n®^„
CASIO.
the uitexpected txtra
CASIO.
the uitexpected txtra
BUSINESS T EDUCATION TmYACCOUNT
BUSINESS T EDUCATION TmYACCOUNT
Search
Search
А22Т Cassiopeia Computer Extender
А22Т Cassiopeia Computer Extender
Р«>4чЧ
Р«>4чЧ
File*
File*
A«®aMI
A«®aMI
PHODUCISГ
PHODUCISГ
A22T
A22T
$446.95
$446.95
Buy
Buy
' ф Интернет
Рис. 2.62. Web-страница фирмы Casio с рекламой карманного компьютераCassiopeia А22Т со встроенной системой Maple
Вид экрана компьютера при работе с системой Maple представлен на рис. 2.63. Нетрудно заметить, что, как и в случае с «большими» «братьями» Maple, работа происходит с использованием традиционных для Windows окон и выпадающих меню. Естественно, что, учитывая малые размеры экрана у миниатюрного компьютера, полного совпадения в интерфейсе пользователя все же нет. .
Ctrl+ECtrl+E^ ? Expression I Plot I^ ? Expression I Plot II ‘ ConversionsI ‘ ConversionsSolve Differential EquationsSolve Differential EquationsFile Edit Action PlotFile Edit Action PlotCopy to Entry LineCopy to Entry LineApproximateSimplifyEvaluateSolveApproximateSimplifyEvaluateSolve> {diff(f(> {diff(f(
Ctrl+E
Ctrl+E
^ ? Expression I Plot I
^ ? Expression I Plot I
I ‘ Conversions
I ‘ Conversions
Solve Differential Equations
Solve Differential Equations
File Edit Action Plot
File Edit Action Plot
Copy to Entry Line
Copy to Entry Line
Approximate
Simplify
Evaluate
Solve
Approximate
Simplify
Evaluate
Solve
> {diff(f(
> {diff(f(
Рисунок 2.64 показывает, как этот компьютер лихо справляется с аналитическим решением дифференциального уравнения. Увы, его экран настолько мал, что на нем не помещается само уравнение — видно лишь его решение. Это служит, пожалуй, главным утешением пользователям обычных компьютеров — на больдшх экранах их мониторов при работе с Maple можно наблюдать куда больше информации и в цвете.
File Edit Action Plot [ ' <0 |^|У |
dXdXi Expression [Plot j
dX
dX
> dsolve(Ansi,(f (X)})
Ans2 := f(X) =
exp(3 X) (3 exp(l) + 1)
-3 exp(X) +
exp(3)
.^Start ||мар1е V fat Cassiopeia;
Рис. 2.64. Пример работы с аналитическими вычислениями
Есть у этого компьютера и средства для работы с графикой — увы, тоже не цветной. Рисунок 2.65 показывает построение трехмерного графика функции двух переменных.
iftStat || Maple V W CassiopeiaiftStat || Maple V W Cassiopeia|t«^ 10:14 PM ^|t«^ 10:14 PM ^Рис. 2.65. Пример построения графика функции двух переменныхРис. 2.65. Пример построения графика функции двух переменных
iftStat || Maple V W Cassiopeia
iftStat || Maple V W Cassiopeia
|t«^ 10:14 PM ^
|t«^ 10:14 PM ^
Рис. 2.65. Пример построения графика функции двух переменных
Рис. 2.65. Пример построения графика функции двух переменных
Самым удивительным является стоимость такого компьютера. Она (правда, не для наших студентов и преподавателей вузов) сравнительно невелика и составляет около $450 (см. рис. 2.62). Несомненно, что такой компьютер — прекрасный помощник студенту, преподавателю и научному работнику, всерьез занимающемуся повседневными вычислениями. Полученные при этом результаты можно перенести на обычный компьютер, что снимает некоторые ограничения на объем и сложность решаемых задач, обусловленные меньшей памятью миниатюрного компьютера. Остается лишь отметить, что в какой-то степени альтернативой (увы,
заметно более дорогой) является установка вполне полноценной версии системы Maple на портативный компьютер класса notebook. Это может быть и новейшая версия Maple 7, описанная в данной книге.
Что нового мы узнали?
В этом уроке мы научились:
О Использовать контекстную справку.
О Работать со справочной системой.
О Входить в Интернет.
О Загружать из Интернета средства поддержки MathML.
А также познакомились с:
О Web-сайтом фирмы Waterloo Maple Software.
О Информационными ресурсами Интернета.
О Российскими сайтами, посвященными Maple.
| Турок| ТурокРабота с файлами и документами
| Турок
| Турок
Операции с файлами
Печать документов
Редактирование документов
Операции вставки
О Операции форматирования
Операция внедрения в секцию
Операция выведения из секции
□ Работа с объектами
Операции с файлами
Система Maple работает с документами в стиле notebooks («блокноты» или «записные книжки»). Как было показано в уроке 1, документы содержат текстовые и формульные блоки, результаты вычислений, графики разного типа и другие компоненты. Документы могут готовиться с нуля или существовать в готовом виде — подготовленные кем-то ранее. Хранятся документы на внешних устройствах памяти в виде файлов. Файлом называют имеющую имя упорядоченную совокупность данных, размещенную на том или ином носителе — обычно на жестком, гибком или компакт-диске.
В Maple 7 используются файлы различных форматов, который указывается расширением файла (знак * означает произвольное имя файла):
О *.ms — файлы документов для систем с графическим интерфейсом (Windows/ Macintosh);
О *.msw — файлы документов (Worksheets);
О *.txt — текстовые файлы (включая формат Maple-текст);
О *itex — файлы в формате LaTeX;
О *.ind и *.lib — файлы библиотек;
О *.т — файлы внутреннего Maple-языка.
Файлы документов содержат все необходимые данные для правильного отображения содержимого документа в окне редактирования с указаниями координат расположения блоков, фактического содержания и характера выполняемых операций, форматов предоставления информации и т. д. Таким образом, файл содержит кроме текста, отображаемого на рабочем листе, специальные команды, адресованные Maple, аналогично файлам HTML, имеющим теги, предназначенные для интерпретации браузером.
Предусмотрена возможность записи документов и в особом формате LaTeX, предназначенном для создания книг и статей по математике. Текстовые файлы (с расширением .txt) можно просматривать, и редактировать текстовыми редакторами, работающими с ASCII-кодировкой.
Важно отметить, что даже при записи документов со сложными рисунками используется не прямая запись их растровой или векторной копии, а сохранение данных для построения графиков. Поэтому размеры файлов Maple 7 невелики и их легко передавать по современным средствам телекоммуникаций, например по сети Интернет. Они требуют небольшого свободного пространства на дисках для записи. Тем не менее, чем сложнее график, содержащийся в документе, тем больше объем памяти, необходимой для хранения файла. Помимо обычных операций
по работе с файлами (запись на диск и загрузка с диска) предусмотрены возможности распечатки документов принтерами различного типа.
Меню File'
Меню File содержит основные операции для работы с файлами документов (рис. 3.1).
Рис. 3.1. Меню File и пустое окно нового документа
Меню содержит ряд операций, разбитых на группы. В первую группу входят следующие операции по работе с документами (в скобках приведены горячие клавиши):
О New (Ctrl+N) — создать новый документ;
О Open (Ctrl+O) — открыть существующий документ;
О Open URL — открыть URL-адрес;
О Save (Ctrl+S) — сохранить активный документ;
О Save As — сохранить активный документ под новым именем;
О Export As — экспортировать файл;
О Close (Ctrl+F4) — закрыть окно активного документа;
О Save Settings — запись конфигурации (установок) Maple;
О AutoSave Settings — автоматическая запись конфигурации.
Вторая группа команд относится к печати документов:
О Print Preview — предварительный просмотр документа перед печатью;
О Print (Ctrl+P) — печать документа;
О Printer Setup — установка параметров принтера.
Вторая из этих команд позволяет распечатать весь текст документа с комментариями, математическими формулами, таблицами и графиками. Печать производится принтерами в графическом режиме, поэтому и не очень быстро. Зато печатаются все шрифты и математические спецзнаки. Можно напечатать и отдельные части документа.
После этой группы команд имеется список документов (файлов с расширением .ms), которые были загружены в систему в предшествующие сеансы работы. Выбрав в этом списке название одного из файлов, можно быстро загрузить его, не тратя времени на открытие файла через команду Open.
Последняя группа представлена единственной командой:
О Exit (Alt+F4) — выйти из Maple 7.
^ПРИМЕЧАНИЕ Если вы работаете в русифицированной версии Windows, то горячие клавиши могут содерЖать вместо латинских букв русские эквиваленты. Например, команда New имеет горячие клавиши Ctrl+N, тогда как в меню они могут быть обозначены как Ctrl+T (см. рис. 3.1). На самом деле, как обозначать клавишу: русской буквой или латинской — дело вкуса.
Создание нового документа
Вернемся к широко используемым операциям первой группы и рассмотрим их более подробно. Заметим, что к некоторым из них можно быстро обратиться с помощью «горячих» клавиш (они указаны в скобках после названия команды). Команда New используется для создания нового документа. Она открывает новое пустое окно редактирования и переводит Maple в режим редактирования (рис. 3.1).
При создании нового документа в его начале появляется ячейка со знаком приглашения >, после которой виден мигающий маркер ввода в виде вертикальной черты |. Ячейка ввода обрамляется открывающей квадратной скобкой. Созданный документ приобретает имя Untitled (N) (в вольном переводе — «Безымянный под номером N», где N — целое число). Следуя приглашению программы, можно приступать к работе в Maple.
Операция New дублируется кнопкой со значком в виде чистого листа, размещенной на панели инструментов. Разумеется, нажать ее вы сможете, только если панель инструментов выведена на экран.
Открытие документа
Команда Open служит для открытия созданного ранее документа. Вначале открывается диалоговое окно выбора файла (рис. 3.2). Для быстрого доступа к команде служит значок в виде открывающейся папки на панели инструментов.
*] 3d3$tyle.m$
«I Contbarms
is*] E symbol, ms
!*1 Graphics.ri
^ 3d3style
;*] D3solve.ms
^ fitd
2>]Gtor.ms •
>аП Demo! .ms
Fsolve
I a*] Gtortub.ms
^ Аааа
»] DemolO.ms
И1 GSdpar.ms
he] Hyplink, ms
i*l Atylor.ms
«] Difinlms
i^ Gknot.ms
^ lnt„O i
^ Collect
*1D solve, ms
ii*] G proc.ms
^ Inl3I
■з*1 Conhoid.ms
^Ef
Й G prod, ms
^ Intclos.ms i
»1х
..£#*«'• 15 Е
Открытие Файла
^мяФай^ [|
ХИЯФЗй'Ш [МарУё^о^^
Отмена|
Рис. 3.2. Окно открытия документа
В окне Открытие файла вам нужно найти нужный файл, а затем дважды щелкнуть на его имени или на кнопке ОК. Данное окно — пример единых диалоговых окон для всех приложений Windows.
Maple 7 — далеко не первая из версий системы компьютерной алгебры. Каждая очередная версия может иметь модифицированные элементы Maple-языка. Поэтому иногда возникает проблема частичной несовместимости документов, подготовленных в разных версиях системы Maple. Разработчики системы по мере возможностей учли это и предусмотрели автоматическое определение версии Maple, в которой был создан документ. Если выбранный документ был сохранен в старой версии программы, то перед его загрузкой появляется окно, представленное на рис. 3.3.
Maple 7
«>\ ТО. rokshrotwas Steeled with Maple Vfieltasa4
. ,Y<4»w^heelm4iy<^ainMaplelat^Besteirien&Whav»ehanaedwMie
Рис. 3.3. Окно с предупреждением о загрузке документа другой версии Maple
Нажмите кнопку ОК, и документ будет открыт. Не следует думать, чтЬ загруженный документ старой версии Maple непременно будет полностью работоспособен. К сожалению, это не так — некоторые документы требуют коррекции, прежде чем Maple 7 сможет их исполнить.
ПРИМЕЧАНИЕПРИМЕЧАНИЕВас не должно удивлять появление в отдельных случаях элементов интерфейса с русскоязычными надписями — например, окно открытия файла (рис. 3.2). Они обусловлены тем, что Maple использует некоторые типовые элементы интерфейса операционной системы Windows. И если последняя русифицирована, то вполне возможно появление элементов интерфейса с русскоязычными надписями.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
После загрузки документа его содержимое появляется в новом окне (см., например, рис. 1.16 или 1.17) и можно приступать к работе с ним.
Во многих системах открытие нового окна командой New или Open отменяет все предыдущие действия (значения переменных, функции и т. д.). Но в Maple 7 это не так — поскольку система предполагает совместную работу в нескольких окнах, каждое новое окно будет «знать» о происходившем в других окнах. Если же вы хотите начать с нуля в новом окне — исполните в нем команду restart. Maple 7 позволяет работать и с документами, представленными в HTML формате и имеющими URL-адрес. Для загрузки таких документов служит команда Open URL. Она открывает простое окно с полем для ввода URL-адреса. Работа с ним очевидна.
Сохранение документа
Команда Save записывает содержимое активного в данный момент окна в виде файла на диск с использованием его текущего имени. Исключением будут документы, созданные командой New и не переименованные, тогда действие команды будет аналогично выполнению команды Save as, обсуждаемой ниже.
Следует с осторожностью пользоваться командой Save в том случае, когда вы модернизируете какой-либо документ, но желаете сохранить оригинал в неизмененном виде, ведь содержимое модернизированного файла будет записано «поверх» оригинала. Чтобы этого не произошло, для сохранения файла следует воспользоваться командой Save as, описанной в следующем разделе.
При подготовке сложных документов рекомендуется периодически (в некоторых ситуациях довольно часто) давать команду Save, сохраняя сделанные изменения. Это позволяет избежать потери хотя бы части проделанной работы в случае сбоя компьютера. (Не важно, чем будет вызвано выключение или зависание компьютера — халтурной работой электрика или программиста или шалостью вашего ребенка — если вы лишний раз сохраните файл, вам придется меньше сил потратить на его восстановление.) Выполнение команды Save не приводит к выдаче сообщений и окон (кроме уже упомянутого исключения), и поэтому ее не обременительно дать лишний раз, особенно если вы запомните «горячие» клавиши для нее — Ctrl+S.
Запись документа на диск с переименованием
Команда Save As отличается от предыдущей тем, что перед записью файла на диск в появившемся диалоговом окне вы можете изменить имя файла (рис. 3.4),
Таким образом можно сохранить доработанный документ и в то же время оставить неизменным оригинал.
Сохранение
дани, j и Uses ' ' J®] rf ®j В М
BooksZjOld*^d4
)Penkovdinf
гPowtool
;! Zj E ’SyrupB
5 ?^ Examolesd1
Zi Luth^ d2
^мя файле- |
^ЙЙ:#аЙП&:::г:>::| M aple WOT^
Рис. 3.4. Диалоговое окно для записи файла с указанием его имени
В списке Папка нужно найти папку, в которую вы хотите поместить файл, а в поле Имя файла вам нужно указать новое имя. Впрочем, не обязательно новое — если вы выберете другую папку, то можете сохранить и со старым именем — оригинал не пострадает.
Maple позволяет сохранить файл в следующих форматах (список внизу окна):
О Maple Worksheet (*.mws, *.ms) — файлы формата Maple 7;
О Maple Text (*.txt) — файлы в формате текста Maple;
О HTML Source (*.html) — файлы в формате HTML;
О Text (*.txt) — файлы в текстовом формате;
О LaTeX Source (*.tex) — файлы в формате LaTeX.
Формат HTML — новый для Maple формат, позволяющий записывать файлы документов в виде web-страниц.
Команда Save as особенно полезна при доработке и модификации файлов, например входящих в комплект поставки системы, когда надо сохранить оригинальные файлы в неприкосновенности. Для этого достаточно записать измененные файлы под новыми именами.
Экспорт файлов
Maple 7 имеет возможность экспорта файлов в различные форматы. Команда Export As открывает подменю, содержащее форматы, запись в которых поддерживает Maple После выбора нужного формата в подменю появляется окно, аналогичное окну для сохранения файла.
Maple экспортирует файлы в следующие форматы:
О Maple Text (*.txt);
О HTML (*.html);
О HTML with MathML (*.html);
О Plain Text (*.txt);
О Rich Text Format (*.rtf);
О LaTeX (*.tex).
Графики Maple может записывать в следующих форматах: DFX, EPS, GIF, JPEG, POV, WMF и BMP.
Закрытие документа
Команда Close закрывает окно вместе с текущим документом, и система переходит к работе со следующим окном (либо к пустому серому окну, если был закрыт последний документ).
Если закрываемый документ подвергался модификации, то система спросит, надо ли сохранять изменения (рис. 3.5).
33The wccksFitt! "Оет&ктз” has been rnodifted Ooycwwish toseveii beta-s сЫг^д? :The wccksFitt! "Оет&ктз” has been rnodifted Ooycwwish toseveii beta-s сЫг^д? :Maple?Maple?Отмена |Отмена |
3
3
The wccksFitt! "Оет&ктз” has been rnodifted Ooycwwish toseveii beta-s сЫг^д? :
The wccksFitt! "Оет&ктз” has been rnodifted Ooycwwish toseveii beta-s сЫг^д? :
Maple?
Maple?
Отмена |
Отмена |
Рис. 3.5. Диалоговое окно, появляющеесяпри закрытии модифицированного документа
Следует помнить, что каждое окно, будучи сложным графическим объектом, занимает определенный и вовсе не малый объем памяти. Поэтому команда Close является эффективным средством освобождения оперативной памяти, особенно когда закрывается большой документ. Однако надо помнить, что бывшие в нем определения (например, значения переменных, введенные функции пользователя и т. д.) сохраняются в памяти, даже когда документ закрыт, естественно, пока вы не дадите команду restart.
Быстро закрыть документ можно, нажав клавиши Ctrl+F4.
Запись настроек программы
Для записи сделанных настроек Maple в меню File предусмотрены две команды: Save Settings и Auto Save Settings. Последняя команда — это флажок, при установке которого новая настройки Maple будут записываться автоматически при завершении работы.
Выход из системы
Команда Exit служит для выхода из Maple. Тогда при использовании операции Exit можно наблюдать последовательное исчезновение окон документов. Если
Сеойетеа jСеойетеа j|НР LaserJet 5L PCI|НР LaserJet 5L PCIПорт LPT1'Заметки;Порт LPT1'Заметки;
Сеойетеа j
Сеойетеа j
|НР LaserJet 5L PCI
|НР LaserJet 5L PCI
Порт LPT1'
Заметки;
Порт LPT1'
Заметки;
пользователь забыл записать какой-либо документ на диск, система сообщит об этом, выдав запрос. Нужно ответить Yes (Да), если документ нужно сохранить, и No (Нет), если сохранение не требуется. Однако стоит сохранить документы, подвергавшиеся редактированию и модификации, заранее — вдруг вы по ошибке нажмете не ту кнопку.
Не следует применять команду Exit, если вам необходимо временно переключиться в окно другой программы, так как повторная загрузка Maple занимает много времени.
Печать документов
Команда Print
Команда Print служит для печати документа. Она имеет кнопку с изображением принтера на панели инструментов для быстрого доступа.
После того как отдана команда Print, появляется диалоговое окно, показанное на рис. 3.6, — стандартное окно печати в Windows.
Принтер:
Печатать- Когмн
^ £-^0S№t{; ^ркопнй; Г™3
Г* Страев^ы jg fl ла: ^9999~ к
Г" £зообратъ
^.'Z1 О^’бН» ■
Рис. 3.6. Окно печати
Нажатие кнопки Свойства в окне печати открывает окно свойств выбранного принтера. Вид окна зависит от типа принтера, функции его элементов достаточно очевидны, поэтому мы воздержимся от обсуждения работы с ним.
Таким образом, в списке вверху окна печати прежде всего следует установить принтер. Можно просто оставить установленный по умолчанию. В диалоговом окне также можно указать диапазон страниц для печати и число копий, а также установить флажок для разбора страниц по копиям. В целом диалог с компьютером при осуществлении операции печати прост и нагляден.
Предварительный просмотр страниц
Даже одна страница документа может не поместиться на экране монитора. Поэтому перед печатью полезно просмотреть расположение элементов документа на странице. Для этого служит команда Print Preview, которая выводит окно с изображением текущей страницы (рис. 3.7).
У окна просмотра имеется ряд элементов управления. Прежде всего это полосы прокрутки для перемещения изображения документа в окне просмотра. Кроме того, имеется ряд кнопок, назначение которых указано ниже:
О Print — печать просматриваемого документа;
О Prev. Page — просмотр предыдущей страницы многостраничного документа;
О Next Page — просмотр следующей страницы многостраничного документа;
О Sngl. Page — просмотр одной полной страницы;
О Dbl. Page — просмотр двух полных страниц;
О 100% — установка масштаба в 100 %;
О Zoom In и Zoom Out — увеличение и уменьшение масштаба;
О Done — завершение работы с окном предварительного просмотра.
' Принтеру * Ймл ,' Принтеру * Ймл ,|НР LaserJet 5L PCL|НР LaserJet 5L PCL[^[^
' Принтеру * Ймл ,
' Принтеру * Ймл ,
|НР LaserJet 5L PCL
|НР LaserJet 5L PCL
[^
[^
Использование команды Print Preview может сэкономить не один лист чистой бумаги и картридж краски.
Установка параметров принтера
Печать документов — одна из основных функций любой среды подготовки документов. В общем случае она предполагает установку параметров принтера. Для этого служит команда Printer Setup, приводящая к открытию диалогового окна, показанного на рис. 3.8.
Настройка принтера
= Сосгойнив, Вы^а»позмо1«ани1кГст<»
* Гил:HP LsserJaf SL ЯХ
i Парк LPTT Замепук- i
, бумага- " " ';
£$р||^^ 210 х 297 ммЙ
л;.у:Г1йй^чжу$у| Верхний лоток М<
Рис. 3.8. Диалоговое окно настройки параметров принтера
Следует отметить, что вид этого окна будет варьироваться в зависимости от принтера и может существенно отличаться от приведенного на рисунке. Однако большинство параметров, которые требуют пользовательского вмешательства, очевидны.
Редактирование документов
Меню Edit
Как видно из рис. 3.9, меню Edit содержит различные операции редактирования. Они делятся на ряд групп. Первая группа содержит следующие операции:
О Undo (Ctrl+Z) — отменить последнюю операцию редактирования;
О Redo (Ctrl+Y) — восстановить последнюю отмененную операцию;
О Cut (Ctrl+X) — переместить выделенный фрагмент в буфер обмена;
О Copy (Ctrl+C) — скопировать выделенный фрагмент в буфер обмена;
О Copy As Maple Text — копирование выделения в буфер обмена в формате Maple-текста;
О Paste (Ctrl+V) — вставить содержимое буфера обмена в документ;
О Paste Maple Text — вставить данные из буфера обмена в формате Maple-текста;
О Delete Paragraph (Ctrl+Del) — удаление параграфа (строки);
О Select All (Ctrl+A) — выделение всех объектов документа.
Рис. 3.9. Меню EditРис. 3.9. Меню Edit
Рис. 3.9. Меню Edit
Рис. 3.9. Меню Edit
ПРИМЕЧАНИЕПРИМЕЧАНИЕОперации первой группы используют буфер обмена (Clipboard). Так называется специально организованная и динамически изменяющаяся область памяти в операционной системе Windows. В нее могут помещаться различные (обычно предварительно выделенные) объекты, документы и даже файлы. Буфер можно использовать для обмена объектами как в пределах текущего документа, так и между различными документами и даже приложениями.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Очень часто некоторые операции меню Edit будут недоступны — они отображены серым шрифтом. Это означает, чтоКцанный момент не существует объекта, к которому может быть применена команда. Однако в демо-версии Maple команды копирования и
вставки будут недоступны всегда — таково ограничение создателей.
Несколько следующих групп представлены одной операцией:
О Find (Ctrl+F5) — выводит окно поиска заданной строки и ее замены на другую строку;
О Hyperlinks — редактирование гиперссылок;
О Object — редактирование объекта;
О Unit Converter — перевод между различными единицами измерения; ,
О Complete Command — подсказка для завершения текущей незаконченной команды Maple-языка;
О Entry Mode (F5) — переключение режима ввода.
Последняя команда позволяет менять режим строк ввода — они могут содержать математические выражения или нсисполпяемые текстовые комментарии. Именно благодаря текстовым комментариям документы Maple 7 приобретают достаточно наглядный вид. Наглядность документов дополнительно повышается благодаря возможности представления результатов вычислений (а иногда и вводимых выражений) в естественной математической форме.
Восьмая группа команд открывает подменю, содержащие команды с ячейками и секциями документа:
О Split or Join — разделение или объединение объектов;
О Execute — исполнение выделенных или всех строк документа;
О Remove Output — удаление вывода для выделенных или всех строк документа.
Команды подменю Split or Join позволяют легко модифицировать вид документов путем разделения и объединения строк и секций.
Отмена последней операции
Команда Undo Delete служит для отмены последней операции редактирования. Она позволяет удалить до 5 последних операций. Если вы случайно удалили нужный текст — вам придет на помощь команда Undo. В меню, а также во всплывающей подсказке указывается название последней операции редактирования — той, которую вы собрались отменить.
Восстановление отмененной операции
Команда Redo позволяет вернуть отмененную операцию, если в этом возникает необходимость. Действие этой команды, естественно, тоже распространяется не более чем на пять операций. Команды Undo и Redo имеют кнопки (с изображением стрелок) на панели инструментов для быстрого доступа к себе.
Перенос объекта в буфер обмена
Команда Cut копирует выделенный объект в буфер обмена и удаляет его из документа. Выделить объект или группу объектов можно, обведя его мышью при нажатой левой кнопке. Можно также использовать клавиши перемещения курсора при нажатой клавише Shift. Выделенный фрагмент отмечается черным фоном и инверсией цвета входящих в него символов (на рис. 3.9 выделена первая строка).
Графические объекты не инвертируют свои цвета при выделении, к тому же их можно вырезать и копировать, когда на них находится маркер ввода.
Вырезанный командой Cut объект поступает в буфер обмена, а его изображение в окне редактирования исчезает. Эта команда выполняется также комбинациями клавиш Shift+Del и Ctrl+X (в зависимости от настроек операционной системы). На рис. 3.10 показан результат выполнения команды Cut — видно исчезновение выделенного на предыдущем рисунке фрагмента в документе.
Рис. ЗЛО. Документ с рис. 3.9 после выполнения команды Cut
Щелчок левой кнопкой мыши за пределами выделенных объектов снимает все выделения.
Копирование объекта в буфер
Комнада Сору аналогична Cut, но с одним Существенным отличием — выделенный объект (или блок объектов) не удаляется в окне редактирования. Эта команда обычно используется в том случае, когда нужно перенести заданный объект в другое место, сохранив при этом оригинал, — продублировать объект.
Особенно полезна операция Сору при составлении документа из частей других документов, в том числе страниц справочной системы Maple (рис. 3.11). Пере-
ключаясь между окнами с помощью команд Сору и Paste, описанных ниже, можно с легкостью составить достаточно большой документ, не написав ни строки.
Ate fcfc ^w IrtsetL Format ';Ate fcfc ^w IrtsetL Format ';fiptoro Vindew Helpfiptoro Vindew Helpx-0..1);x-0..1);Tnt(exp(i [> Демонстрация работы с системой Maple 7Tnt(exp(i [> Демонстрация работы с системой Maple 7'0 Maple 7'0 Maple 7ВПИ!ВПИ!^ Untitled (3) - IServet 1]^ Untitled (3) - IServet 1]
Ate fcfc ^w IrtsetL Format ';
Ate fcfc ^w IrtsetL Format ';
fiptoro Vindew Help
fiptoro Vindew Help
x-0..1);
x-0..1);
Tnt(exp(i [> Демонстрация работы с системой Maple 7
Tnt(exp(i [> Демонстрация работы с системой Maple 7
'0 Maple 7
'0 Maple 7
ВПИ!
ВПИ!
^ Untitled (3) - IServet 1]
^ Untitled (3) - IServet 1]
Рис. 3.11. Пример переноса выделенной в одном документе строки в окно другого документа
В данном случае титульная надпись, удаленная командой Cut, перенесена в другой, пустой, документ.
Перенос и копирование объектов перетаскиванием
В Mapie 7 имеется возможность переноса объектов из одного окна в другое методом перетаскивания (Drag and Drop). Для этого на группу выделенных объектов надо навести указатель мыши и при нажатой левой кнопке начать перенос объектов в новое место или новое окно. Отпустив левую кнопку мыши, можно наблюдать перенос объектов на новое место. Если все время держать нажатой клавишу Ctrl, то переносимый блок объектов будет сохранен и на старом месте.
Копирование в буфер обмена в формате Maple-текста
Команда Copy As Maple Text используется в тех случаях, когда необходимо, чтобы скопированная в буфер информация была представлена в текстовом формате. При этом в буфер копируются выражения как из строк ввода, так и строк выво-
Урок 3. Работа с файлами и документами
to
to
S
to
G
5
S to to g to
VD О
to
&
С
5
to
to
s
о
S
to
% to to
to
О
d
Ом to
to to to OJ to ю
s
to
3 о to
с
to
о к
§
о to
to
to 2 S to to
to
to
to
к
К
s
s Q.
S
s
to
to
2 to
•IHWAXOV «№Mt ИМЯ »##*-•eiHaw^otfeidWo WMha иаеаьк ей ntMwdot' айиеаоаиио* баниби "tft 4*4
|(<1T”TJUT '• 0 - l'(E/t)a/(1 )dta)jwi <]
и -0-1 Ч£/Т) wl/U->d:x=>> WI <
U<”»SM8) peilliun^
i и aa
I? L aidem ионэюиэ э moged ниПебюнонаЦ
=w
. @ @ © ©ЯЗЕ ® ЕЕ E0 ЕШИ ГК1 totoi "I lelal»|g|g|;
^HdJcj >t$«4 л^Д Wl 6?3
7^»йВ
3)sej и Ado) nnhedauo ииневоЕчиоиэи dawndu ’£Г£ ’эи^
D)X ао1нэиАяои aMHEaodnxxetfdj
Различные варианты преобразования форматов при использовании операций копирования и вставки надо учитывать при подготовке сложных документов.
Вставка из буфера обмена в формате Maple-текста
Операция Paste As Maple Text служит для вставки данных из буфера обмена с одновременным их преобразованием в текстовый формат.
Если данные в буфер обмена поступили в результате выполнения операции Сору as Maple Text, то при операции Paste Maple Text в документ будут скопированы только данные из строк ввода в формате Maple-текста. Это показано на рис. 3.15.
file Edi» View Insert Formatfile Edi» View Insert FormatQptiop$ Wndc<w HelpQptiop$ Wndc<w Help<aSI3<aSI3Демонстрация работы с системой Maple 7Демонстрация работы с системой Maple 7 а а$ Trap CL 6$ Byt«$, 3.G0M Avatibie 1.666:$ Trap CL 6$ Byt«$, 3.G0M Avatibie 1.666:Q Maple 7Q Maple 7Демонстрация работы с системой Maple 7Демонстрация работы с системой Maple 7^Untitled (4)-ISovw 11^Untitled (4)-ISovw 11viitoat") ;viitoat") ;UA (•»« |• < t) /1' (1 /3 ) , t -0. . in ГЗ.Х»UA (•»« |• < t) /1' (1 /3 ) , t -0. . in ГЗ.Х»dHiL:Csi^;2 fm(x) cc5<:r) bit ( Л/Ж<}[Г1 ( Л lt Л2 ) , ,ж~0. , 1) /dHiL:Csi^;2 fm(x) cc5<:r) bit ( Л/Ж<}[Г1 ( Л lt Л2 ) , ,ж~0. , 1) /int (l/sqrt <l-xA2) ,x«-0. . 1.) :Int(exp ( -t) /t 4 (1/3) ,.t^O..infinity);value (tT) ;int (l/sqrt <l-xA2) ,x«-0. . 1.) :Int(exp ( -t) /t 4 (1/3) ,.t^O..infinity);value (tT) ;Рис. 3.15. Пример использования операций Copy as Maple Text и Paste Maple TextРис. 3.15. Пример использования операций Copy as Maple Text и Paste Maple Text
file Edi» View Insert Format
file Edi» View Insert Format
Qptiop$ Wndc<w Help
Qptiop$ Wndc<w Help
<aSI3
<aSI3
Демонстрация работы с системой Maple 7
Демонстрация работы с системой Maple 7
а
а
$ Trap CL 6$ Byt«$, 3.G0M Avatibie 1.666:
$ Trap CL 6$ Byt«$, 3.G0M Avatibie 1.666:
Q Maple 7
Q Maple 7
Демонстрация работы с системой Maple 7
Демонстрация работы с системой Maple 7
^Untitled (4)-ISovw 11
^Untitled (4)-ISovw 11
viitoat") ;
viitoat") ;
UA (•»« |• < t) /1' (1 /3 ) , t -0. . in ГЗ.Х»
UA (•»« |• < t) /1' (1 /3 ) , t -0. . in ГЗ.Х»
dHiL:Csi^;
2 fm(x) cc5<:r) bit ( Л/Ж<}[Г1 ( Л lt Л2 ) , ,ж~0. , 1) /
dHiL:Csi^;
2 fm(x) cc5<:r) bit ( Л/Ж<}[Г1 ( Л lt Л2 ) , ,ж~0. , 1) /
int (l/sqrt <l-xA2) ,x«-0. . 1.) :
Int(exp ( -t) /t 4 (1/3) ,.
t^O..infinity);
value (tT) ;
int (l/sqrt <l-xA2) ,x«-0. . 1.) :
Int(exp ( -t) /t 4 (1/3) ,.
t^O..infinity);
value (tT) ;
Рис. 3.15. Пример использования операций Copy as Maple Text и Paste Maple Text
Рис. 3.15. Пример использования операций Copy as Maple Text и Paste Maple Text
Любопытно сравнить две пары операций, действие которых демонстрируют рис. 3.12 и 3.15.
Уничтожение выделенного абзаца
Команда Delete Paragraph служит для уничтожения блока ввода, на котором расположен курсор. При этом в буфер обмена удаленный текст не заносится. В отличие от операции вырезания Cut ее применение не загружает буфер и предотвращает нехватку оперативной памяти. Если Вы случайно удалите нужную строку — есть время спохватиться— дайте команду Undo.
Выделение всех объектов
Команда Select АП выделяет все объекты документа. Это полезно, например, для вставки всего документа в другой документ.•
Поиск подстроки и ее замена
Команда Find служит для поиска указанного фрагмента в тексте документа. Она открывает окно Find, в котором можно указать искомую фрагмент-подстроку (рис. 3.16). При нажатии кнопки Next будет производиться поиск следующего вхождения (ниже по тексту), а при использовании Previous — предыдущего. Если искомое слово не найдется, выводится окно с сообщением (слева на рис. 3.17).
жжДемонстрация работы сДемонстрация работы ссистемойсистемойMaple 7Maple 7
ж
ж
Демонстрация работы с
Демонстрация работы с
системой
системой
Maple 7
Maple 7
> int(l/sqrt(l-xA2) ,x-O. . 1) ;
> In t (exp ( -1) /tzs (1/3) , t -0 . . inf inity) ;
ООгг
О
О
г
г
Рис. 3.16. Поиск заданного фрагмента текста
При обнаружении указанного фрагмента он выделяется, и маркер ввода устанавливается в начало найденной подстроки. После этого можно приступить к ее редактированию.
С помощью команды Find возможна также замена подстроки. Для этого надо указать текст замены в нижнем поле окна. Чтобы заменить найденную подстроку, надо нажать кнопку Change, чтобы заменить все подстроки, — Change АП.
@гт^чт™;^жзгавктав^
Демонстрация работы сДемонстрация работы спакетомпакетомMaple 7Maple 7-AsJjsJ-AsJjsJ^№1 z^ rm йзэ'зз за ез [цы щ i±i ei
Демонстрация работы с
Демонстрация работы с
пакетом
пакетом
Maple 7
Maple 7
-AsJjsJ
-AsJjsJ
sin(x) cos(x)sin(x) cos(x)Mo tt«$uh<t w foundMo tt«$uh<t w foundUIUIzuzu
sin(x) cos(x)
sin(x) cos(x)
Mo tt«$uh<t w found
Mo tt«$uh<t w found
UI
UI
zu
zu
> int(1/sqrt(1-x*2),x»0..1);
> Int(exp(-t)/tА<1/3>, t~0..infinity);
, Tm* Ш' &fo ЗЭДН 4vagabfelg5S
Рис. 3.17. Пример замены одной подстроки другой
Включение и выключение режима ввода текста
Maple 7 позволяет вводить в ячейки текст комментариев и исполняемые математические выражения (для того чтобы ввести в одну ячейку комментарий и функцию Maple, надо воспользоваться командами меню Insert). Операция Input mode служит для переключения между режимами ввода. Горячая клавиша команды — F5. Если режим ввода текста комментария включен, приглашение в виде знака > исчезает. Если этот режим отменен, то можно вводить исполняемые математические выражения, придерживаясь синтаксиса языка Maple.
Операции разделения и объединения объектов
Команда Split or Join служит для разделения или объединения объектов документа, она открывает подменю со следующими операциями:
О Split Execution Group (F3) — разделение строки на две;
О Join Execution Group (F4) — соединение смежных строк;
О Split Section (Shift+F3) — разделение секции на две;
О Join Section (Shift+F4) — объединение смежных секций.
Исполнение выделенных ячеек или всего документа
Команда Execute служит для запуска вычислений во всех выделенных ячейках или во всех ячейках документа. Соответственно она имеет подменю с двумя командами:
О Selection — исполнение выделенных ячеек;
О Worksheet — исполнение ячеек по всему документу.
Заметим, что альтернативой является нажатие клавиши Enter для каждой исполняемой строки документа, что при больших документах довольно нудное занятие.
Удаление ячеек вывода
Команда Remove Output служит для удаления из документа всех ячеек вывода. Это полезно для редактирования ячеек ввода, поскольку объем документа при этом заметно сокращается. Она открывает подменю с двумя командами:
О From Selection — удаление вывода только для выделенных ячеек;
О From Worksheet — удаление вывода для всего документа.
Рассмотрим, к примеру, документ, который был представлен на рис. 3.16. После выполнения для него команды Remove Output From Worksheet документ принимает вид, показанный на рис. 3.18.
Заметим, что документ с рис. 3.18 можно вернуть к исходному виду, выполнив команду Execute Worksheet, описанную выше. Однако в данном конкретном случае исполнение команды value(") даст сообщение об ошибке, поскольку в версиях Maple 6 и 7 данная команда должна быть записана в виде valueO).
: Рис. 3.18. Документ после удаления всех ячеек вывода
Операции вставки.
Меню Insert.
Документ системы Maple 7 состоит из различных объектов — текстовых областей, областей ввода, ячеек, абзацев, секций, подсекций и т. д. Некоторые из них формируются автоматически по мере ввода и исполнения документа. Но, кроме того, в меню Insert (рис. 3.19) сосредоточены основные команды по обеспечению вставки различных объектов в редактируемый документ. Это позволяет быстро модифицировать документ и добиться его большей выразительности.
Рис. 3.19. Меню Insert
Следует отметить, что меню Insert является контекстно-зависимым. К примеру, оно исчезает, если выделен график.
Меню вставки разделено на две группы. В первой группе содержатся следующие команды:
О Text (Ctrl +Т) — ввод текста;
О Standard Math (Ctrl+R) — ввод неисполняемых математических выражений;
О Maple Input (Ctrl+M) — ввод исполняемых выражений в Maple-формате;
О Standard Math Input (Ctrl+G) — ввод выражений в математической форме в строку ввода.
Во второй группе содержатся следующие команды:,
О Execution Group — вставка исполняемой ячейки до или после маркера ввода;
О Plot — вставка пустого шаблона двумерного или трехмерного графика;
О Spreadsheet — вставка электронной таблицы;
О Paragraph — вставка текстовой области (абзаца);
О Section — вставка кнопки секции;
О Subsection — вставка кнопки подсекции;
О Hyperlink — вставка гиперссылки;
О Object — вставка связанного или внедренного объекта;
О Page Break — вставка разрыва страниц.
Перейдем к более подробному рассмотрению этих команд.
Ввод текста
Команда Text приводит к исчезновению знака приглашения >, после чего можно сразу же начинать ввод текста комментария. Данная команда позволяет формировать ячейку, содержащую текст комментария и исполняемые функции.
Ввод выражений в стандартной форме
Команда Standard Math выводит в строке ввода вопросительный знак. После этого в поле ввода строки форматирования можно начинать ввод неисполняемого математического выражения (рис. 3.20).
Г*Т$1 [Тй [ирТх] |мТнП
Рис. 3.20. Ввод математическоговыражения по команде Standard Math
По завершении ввода надо нажать клавишу Enter, и выражение появится в строке ввода (рис. 3.21). При этом выражение будет выделено.
Рис. 3.21. Завершение ввода по команде Standard Math
Ввод выражений
Команда Maple Input в меню Insert превращает текущую строку в строку ввода исполняемых математических выражений. В начале строки, появляется приглашение ко вводу в виде значка >, после чего можно начинать ввод выражения. Кнопка со знаком х в начале контекстной панели позволяет представить вводимое выражение в естественной математической форме, если таковая возможна. В таком случае ввод выражения осуществляется в поле на контекстной панели инструментов..
Ввод математических выражений
Команда Standard Math Input выводит новую строку ввода со знаком вопроса в ней. После этого ввод начинается в поле ввода строки форматирования. По завершении ввода нажимается клавиша Enter и введенное выражение появляется в строке ввода (обычно с выделенной последней частью).
Вставка исполняемых ячеек до и после курсора
Команда Execution Group обеспечивает вывод подменю с двумя командами:
О Before Cursor (Ctrl+K) — вставка исполняемых ячеек ввода до курсора;
О After Cursor (Ctrl+J) — вставка исполняемых ячеек ввода после курсора.
Напоминаем, что признаком исполняемых ячеек является знак приглашения >. Данные команды позволяют ввести в любом месте документа новые входные ячейки, что часто бывает нужно при модификации документов.
Электронные таблицы
Вставка электронных таблиц
Электронные таблицы были впервые введены в реализацию Maple V R5. В системе Maple 7 для вставки электронных таблиц используется команда Insert Spreadsheet. Она выводит шаблон пустой таблицы, показанный на рис. 3.22.
Как видно из рис. 3.22, электронная таблица представляет собой двумерный массив ячеек, имеющих адресацию по строкам и столбцам. Номера строк задаются цифрами, а номера столбцов — латинскими буквами. Верхняя левая ячейка имеет адрес А1, где А — номер столбца и 1 — номер строки. Если одиночные буквы в номерах столбцов заканчиваются, происходит переход на двухбуквенные адреса (АА, АВ, АС и т. д.). Такая адресация используется в функциях обработки табличных данных..
По команде Insert Spreadsheet вставляется пустая электронная таблица, во всех ячейках которой нет никаких данных. Однако помимо заполнения таблицы с по-
Рис. 3.22. Вставка шаблона электронной таблицы
мощью соответствующих операций можно провести заполнение вручную. Для этого достаточно мышью выделить ячейку, щелкнув в ней левой кнопкой. Ячейка обводится черным контуром (ячейка А1 на рис. 3.22), и появляется контекстное меню с полем для ввода выражения. Во время ввода выражения ячейка покрывается серой сеточкой. Если после набора выражения нажать клавишу Enter, то числовое значение выражения будет помещено в ячейку А1 таблицы. К примеру, на рис. 3.23 показано введенное выражение 2+3. Однако в поле редактирования сохраняется исходное выражение (рис. 3.23).
Если маркер ввода находится в одной из ячеек электронной таблицы, становится доступным меню Spreadsheet (рис. 3.23).
Меню Spreadsheet
Для работы с таблицами в Maple 7 появилось отдельное меню Spreadsheet (рис. 3.23). Оно содержит набор команд, обеспечивающих работу с табличными данными: ■
О Evaluate Selqption — вычисление выражения в выделенной ячейке;
О Evaluate Spreadsheet — вычисление выражений по всем ячейкам таблицы;
О Row — работа со строками (вставка, удаление и т. д.);
О Column ■ работа со столбцами (вставка, удаление и т. д.);
О Fill — автоматическое заполнение ячеек;
О Import data — импорт данных из других программ (например, из MATLAB);
О Export data - экспорт данных в другие программы;
О Properties — просмотр свойств ячеек;
О Show Border — управление показом обрамления таблицы;
О Resize to Grid — изменение размеров видимой таблицы с обрезанными ячейками до размера таблицы с целыми ячейками (дополнение идет по линиям раздела ячеек).■
Если таблица активизирована (курсор находится внутри таблицы), то нажатие правой клавиши мыши вызовет появление контекстного меню. Его вид аналогичен виду описанного выше меню Spreadsheet.
Возможности Maple 7 в обработке табличных данных намного превосходят возможности обычных табличных процессоров. В ‘частности, наряду с текстовыми и численными данными электронные таблицы Maple 7 могут работать с символьными данными — формулами.
Работа с электронными таблицами
Для ввода данных в ячейку таблицы достаточно щелкнуть на ней мышью. После этого можно вводить нужные данные в поле ввода контекстной панели (она видна на рис. 3.22 и 3.23 под панелью инструментов). Контекстная панель в режиме редактирования таблиц имеет четыре кнопки. Их назначение (слева направо) следующее:
О Fill a range of cells — автоматическое заполнение ячеек таблицы;
О Evaluate all stale cells in the spreadsheet — исполнение всех ячеек таблицы;
О Accept the input and evaluate it — ввод напечатанных данных и их исполнение;
О Restore input to the previous value — восстановление предшествующего значения ячейки.'
Основным способом ввода данных является активизация ячейки таблицы мышью и ввод данных (объектов) в поле ввода контекстной панели. Нажатие третьей кнопки (Accept the input and evaluate it) или нажатие клавиши Enter приводит к вводу данных в ячейку и их исполнению.
Имеется ряд возможностей для автоматического заполнения ячеек таблицы. Например, можно заполнить ряд ячеек, примыкающих к заданной ячейке, предварительно наметив направление заполнения. Для этого курсор помещается в заданную ячейку, а затем мышь перемещается в нужном направлении при нажатой левой кнопке. На рис. 3.24 показан случай, когда в заданную ячейку А1 помещено число 2 и затем мышью выделены первые ячейки столбца А.
Теперь, нажав первую кнопку (Fill a range of cells) на контекстной панели форматирования (или исполнив команду Spreadsheet Fill Down в меню), можно вывести окно автоматического заполнения ячеек таблицы — Fill. Это окно также показано на рис. 3.24. В этом окне можно задать направление заполнения (обычно по умолчанию задано уже направление заполнения при выделении ячеек) и указать шаг изменения аргумента и значение, которого он не должен превышать. Например, на рис. 3.24 заданы шаг 3 и конечное значение 21. Нажав кнопку ОК, можно увидеть автоматическое заполнение таблицы. При этом она принимает вид, показанный на рис. 3.25.
В ячейки таблиц можно вносить различные математические формулы в соответствии с синтаксисом языка Maple 7. При этом возможно сослаться па любую другую ячейку. Такая ссылка указывается значком тильда (~) перед адресом ячейки. Так, обозначение ~А1 означает, что будут подставлены данные из ячейки А1.
В качестве примера составим таблицу значений п, интеграла 1nt(xAn,x) и производной di ff (хАп, х) для n = 1.. 9. В готовом виде эта таблица представлена на рис. 3.26. Подготовка такой таблицы проходит в три этапа. Вначале формируется первый столбец вводом в ячейку А1 имени переменной п, а в ячейку А2 — значения 1. После этого выделяются ячейки от А2 до АЮ и с применением автоматического заполнения они заполняются числами от 1 до 9.
Рис. 3.24. Подготовка к автоматическому заполнению ячеек под заданной ячейкой
Рис. 3.25. Электронная таблица с рис. 3.24 после автоматического заполнения ячеек первого столбца
Рис. 3.26. Электронная таблица с символьными данными
Затем во втором столбце в ячейку В1 вводится инертная формула Int(xA~Al,x), а в ячейку В2 — исполняемая формула int(xA~A2,x). После этого выделяются ячейки от В2 до В10 и исполняется команда Spreadsheet Fill Down. В результате формируется столбец с символьными значениями интегралов. Аналогично (третий этап) задается формирование столбца с символьными значениями производной от хАп (рекомендуем сделать это самостоятельно для закрепления навыков работы с электронными таблицами в среде Maple 7).
ПРИМЕЧАНИЕ Выше описаны лишь основы работы с электронными таблицами в среде Maple 7. Для более полного знакомства с техникой применения электронных таблиц нужно обратиться к справочной системе Maple 7.
Вставка текстовой области
Для вставки строки текстовой области служит операция Paragraph. Она создает строку без приглашения >, в которую можно вводить текст. Единствейным отличием .этой команды от команды Text является то, что она вставляет новую строку, не меняя статуса имеющихся строк. При вводе длинных текстов число строк ввода автоматически увеличивается.
Вставка кнопки секции
Команда Section служит для установки кнопки, указывающей начало секции (см. рис. 2.6 с такой кнопкой) и служащей для открытия/закрытия секции. Секция может соаЛять из различных объектов: текстовых комментариев, строк ввода, строк вывода, графиков и других секций (подсекций).
Как и в операционной системе Windows, значок «+» указывает на закрытую секцию, значок «-» — на открытую. Секции предоставляют дополнительную свободу управления документом.
Вставка кнопки подсекции
Подсекцией называют секцию, размещенную внутри другой секции. Создавая подсекции, можно строить документы со сложной древообразной структурой, напоминающей разделы книги с хорошей рубрикацией. Это может оказать большую помощь в создании электронных вариантов книг и обучающих программ в среде Maple 7.
Команда Subsection создает кнопку секции внутри уже созданной секции. Все, сказанное о секциях, распространяется и на подсекции.
Вставка гиперссылки
Еще одна возможность сделать документы более удобными в работе заключается в создании гиперссылок. Гиперссылка — это текстовая надпись, подчеркнутая снизу, при щелчке на которой Maple перейдет к сопоставленному с ней объекту. Гиперссылку можно связать со следующими объектами:
О с файлом любого документа (Worksheet:);
О с заданной страницей справочной системы (Help Topic:);
О «о страницей в Интернете (URL:).
Для создания гиперссылки надо установить на место будущей ссылки маркер ввода и выполнить операцию Hyperlink. При этом появится окно связывания гиперссылки с объектом, показанное на рис. 3.27.
В окне надо задать заголовок гиперссылки (в виде короткой текстовой надписи) и выбрать одно из трех положений переключателя, перечисленных выше. Если вы намерены сослаться на документ, то следует использовать кнопку просмотра Browse для поиска нужного файла. Появляющееся окно показано на рис. 3.27 справа.
Как уже говорилось, гиперссылка выглядит как надпись, подчеркнутая снизу. Активизируя ее, можно вызвать объект, связанный с ней, — в нашем случае другой документ, файл которого щгХодптся на жестком диске. Использование гиперссылки на другой документ /в Maple 7 реализовано не очень удачно. Дело в том, что в этом случае исходный документ по умолчанию закрывается. Если последние изменения в нем не были сохранены, то появляется окно с предупреждением об этом. Оно показано на рис. 3.28.
Можно избежать закрытия документа, щелкнув на кнопке New Window; Maple предоставит открывающемуся документу новое окно. Это иллюстрирует рис. 3.29. В нем также показано контекстное меню гиперссылки. Это меню содержит три команды:
О Properties — вывод окна свойств гиперссылки (рис. 3.27, слева);
О Follow link — смена документа с гиперссылкой на указанный в ней документ;
О Open link — открытие отдельного окна для открываемого документа (рис. 3.29)
ф$ж^||||||й|||||||||8|||91$|^^
[Это пример созданияд
г» "т/
Г URL|$# WotksfWIf8аокуз«к |ОК |Г URL|$# WotksfWIf8аокуз«к |ОК |g?cw$e | ж-3®Ш.а1В!Я!g?cw$e | ж-3®Ш.а1В!Я!
Г URL|$
# WotksfWIf
8аокуз«к |
ОК |
Г URL|$
# WotksfWIf
8аокуз«к |
ОК |
g?cw$e | ж
-3®Ш.а1В!Я!
g?cw$e | ж
-3®Ш.а1В!Я!
•i ■ ; ;tylem$
•t ^3;tyle
^ Аза
Aaaa
^Atyiur ms ^ Coiled
s У Conhoid ms
;*] Contbarms :*] D3$olve.rns BESEHS •*]Demo1Q.m$ ;*] Diiinlms lay Dsolve.ms ^Ei
£] Esymbol.ms
^ hfd
<^ Fsolve
■*] G3dpat.m$
'*] G knot, ms
I*] Gpfoc ms
•*1 G prod.ms
;*] Graphics.ni ■*] Gtor ms
^ Gtortub.ms: 1*1 Hyplink.ms; <^ !nt_o ': §1"|3 ii :*1 Intclos.ms! ШОИЖ:
ймяФейлж |БетоТ
>:^Ш<ребйй&\х|мар1е^/о<к^
< Ima. 0l6* g^es4 jlflM A^aiatMe 1,f^S
FTFTРис. 3.27. Пример создания гиперссылки
FT
FT
^ X <‘ ' >X>i ' X’ X,. - - X„, 1.61.x!
fg тш си Ш ШхЕ ЩЕ0 Э QiS ШЭЙ!
:;|с hyperhnk:*|!^Ъ^ ' "^ ^1^1
[это пример создания Г нг' -р • >:«vr’4
Hypeiltnk
ТЬА№ДлЬ^^^ПК'Ьа$Ы^1п«^ А^аКтд^^^*ив С<м$е cS Changes ts be lost. Do you vwsh to save tfto «aksheri^ Often the Wt to » ’TiewW-mdew’' # jcuviarii to keep yovcehange? but do nd w* to Mve them
Рис. 3.28. Окно с предупреждением о закрытии документа при переходе по гиперссылкеи необходимости сохранения изменений
Рис. 3.29. Результат активизации гиперссылки
Гиперссылки позволяют создавать сложные структуры документов, содержащие множество объектов, вызываемых в произвольном порядке. Например, для возврата в исходный документ можно организовать обратную гиперссылку в вызываемом документе. Лучшим примером такого применения гиперссылок является справочная система Maple 7. Гиперссылки также широко используются при создании web-страниц. Maple 7 позволяет сохранять документы в виде web-страниц (формат HTML), которые без каких-либо преобразований можно публиковать в сети Интернет.
Весьма привлекательной кажется возможность организации гиперссылок на разделы справочной системы. Она позволяет создавать учебные программы со ссылками на справки системы Maple 7.
Операции форматирования
Обзор операций меню Format
Операции форматирования служат для придания отдельным объектам и документу в целом определенного стиля путем изменения как общего вида объектов, так и ряда их частных характеристик, например цвета и размера надписей,
выбранного набора шрифтов и т. д. При этом возможна подстройка под вкус любого пользователя и подготовка документов высокого полиграфического качества. Стиль является центральным понятием для современных документов, будь то документы текстового процессора класса Word или системы символьной математики Maple 7.,*
Команды форматирования в меню Format разбиты на шесть подгрупп. В первой подгруппе содержатся две команды:
О Styles — установка стилей для всех объектов;
О Page Numbers — задание параметров нумерации страниц.
Во второй подгруппе имеются три наиболее распространенные команды изменения начертания надписей:
О Italic (Ctrl+I) — задание курсивного начертания;
О Bold (Ctrl+B) — задание полужирного начертания;
О Underline (Ctrl+U) — задание подчеркнутого начертания.
Заметим, что все они дублируются кнопками на панели инструментов и горячими клавишами. При редактировании документов использование кнопок и горячих клавиш более удобно.
В третью группу попали команды выравнивания текста:
О Left Justify — по левому краю;
О Center — по центру;
О Right Justify — по правому краю.
В четвертой группе находятся следующие команды:
О Paragraph — форматирование абзаца;
О Character — форматирование символов.
И наконец, в пятой группе имеются еще две команды:
О Indent (Ctrl+.) — внедрение текущей строки в секцию;
О Outdent (Ctrl+,) — выведение текущей строки из секции.
В последнюю группу попала еще одна команда, не имеющая непосредственного отношения к форматированию символов:
О Convert to — перевод из одной метрической системы в другую.
Рассмотрим применение команд форматирования.
Установка стилей
Команда Styles является основной, поскольку позволяет задать стиль текста — определенный набор значений доступных параметров: размещение на странице, выравнивание, шрифт, начертание, цвет, размер и т. д. Единство стилей документов важно при включении их в отчеты, курсовые и дипломные проекты, диссертации и иные документы, Придерживаться определенных стилей — это
правило хорошего тона при работе как с текстовыми процессорами, так и с математическими системами. Именно поэтому ориентация на определенный стиль подготовки документов стала неотъемлемой частью пользовательского интерфейса системы Maple 7.
Операция Styles выводит диалоговое окно Style Management, в котором можно как изменить уже существующий стиль, так и создать новый (рис. 3.30).
Style Management
| M0^,"1 ^^§5^1.1^| M0^,"1 ^^§5^1.1^Create ttew Style • fetegtaphCreate ttew Style • fetegtaphDgne | Cjn^ |:Dgne | Cjn^ |:* EwstihQ S tries' -
| M0^,"1 ^^§5^1.1^
| M0^,"1 ^^§5^1.1^
Create ttew Style • fetegtaph
Create ttew Style • fetegtaph
Dgne | Cjn^ |:
Dgne | Cjn^ |:
’ S^e:
i^g P Author
^ii P Bullet Item
;:&:•; P Dash Item
P Diagnostic
Й1 p Er,or P Fixed Width
Ssste As Defalt | iiSsste As Defalt | iiДе^еА to default
Ssste As Defalt | ii
Ssste As Defalt | ii
M«ge Е^л$.,<
Рис. 3.30. Окно задания и модернизации стилей
В большинстве случаев пользователя Maple 7 вполне удовлетворят стили, заданные по умолчанию. Более того, надо помнить, что задание своего стиля неизбежно означает повышение риска несовместимости при обмене документами Maple 7. Поэтому без особой на то необходимости изменять стандартный стиль не рекомендуется.
Однако бывают принципиальные обстоятельства, когда изменение стиля необходимо. Например, при выводе титульных надписей для графиков Maple 7 используют стандартный англоязычный шрифт Courier New. При вводе русскоязычных надписей Maple 7 воспринимает их вывод как ошибку, поскольку набор символов при вводе не соответствует набору символов, заданному в стиле. Таким образом, для организации выврдффусскоязычных надписей необходимо сменить набор символов (шрифт), то есть изменить стиль.
Покажем, как это делается. Вначале в списке стилей надо выбрать наименование Title, после чего нажать кнопку Modify. Появится окно Paragraph Style с параметрами стиля Title {рис. 3.31). .
В этом окне надо нажать кнопку Font. Появится новое окно (оно также показано на рис. 3.31) для выбора шрифта. В нашем случае достаточно заменить шрифт по умолчанию Courier New на шрифт Courier New Суг. Он содержит символы кириллицы, то есть буквы русского языка. После этого задание титульных надписей для графиков на русском языке перестает быть проблемой.
Рис. 3.31. Окна установки параметров абзацного стиля для абзаца и для выбора шрифта
Разумеется, в понятие стиля входит не только шрифт, но и размер, начертание, цвет и т. д. Все это можно настраивать, используя описанные выше окна. При необходимости изменения стиля можно записать его в специальный файл, используя кнопку Save As Default. При этом измененный стиль становится принятым по умолчанию. Кнопка Revert As Default позволяет вернуться к типовым стилям, которые заданы разработчиками системы. Если стили подверглись небольшим изменениям, то можно сохранить их с помощью кнопки Merge Existing.
Форматирование абзацев
Для форматирования абзацев служит команда Paragraph. Она сразу выводит окно установки параметров абзаца. Это окно было показано на рис. 3.31. Правила работы с этим окном уже были описаны выше, так что нет смысла их повторять.।
Форматирование символов
Команда Character открывает окно задания стиля символов: шрифта, размера, начертания и цвета.
Операция внедрения ячеек в секцию
Ранее описывалась операция вставки кнопки секции. При выполнения вставки сама секция еще пуста и ее надо заполнять. Команда Indent (или комбинация клавиш Ctrl+.) позволяет оформить в виде секции уже введенные ячейки. На рис. 3.32 показано такое оформление для ячейки документа с вычислением интеграла. Кнопка при этом имеет знак «минус», что указывает на ее открытое состояние.
Рис. 3.32. Применение операции Indent для одной из ячеек документа
Если щелкнуть на кнопке со знаком «минус», то секция свернется и вместо нее останется только кнопка со знаком «плюс» (рис. 3.33).
Операция выведения ячеек из секции
Команда Outdent (или комбинация клавиш Ctrl+,) отменяет оформление ячейки в виде секции. Она действует в том случае, если маркер ввода стоит внутри секции.
Рис. 3.33. Пример документа с закрытой секцией
Работа с объектами
Хотя данная книга посвящена одной Maple 7, надо особо отметить, что эта программа способна взаимодействовать с рядом других программ, например с текстовым процессором Word, табличным процессорам Excel и даже с другими системами компьютерной математики, например, MATLAB. Это может быть копирование через буфер обмена или связь с применением механизма OLE.
В роли объектов могут выступать ячейки из данного или других документов, текстовые фрагменты и файлы, рисунки в различных форматах и т. д. Работа с объектами существенно расширяет возможности пользователя по части создания полноценных и удобных в работе документов.
Вставка объектов
Для организации вставки объекта используется команда Insert ► Object. Она выводит окно со списком тех приложений, с которыми возможна связь с применением механизма OLE. Это окно показано на рис. 3.34. Maple 7 использует стан-
дартное окно вставки объектов из операционной системы Windows, поэтому если она русифицирована, то окно имеет русскоязычные надписи.дартное окно вставки объектов из операционной системы Windows, поэтому если она русифицирована, то окно имеет русскоязычные надписи.Вставка объектеВставка объекте£♦ CpSftgt^-НОВЫЙС Создать ц.а файла.£♦ CpSftgt^-НОВЫЙС Создать ц.а файла.Хил объект»:Хил объект»:КомнатаМ^*1;Лист Microsoft Excel-Л';КомнатаМ^*1;Лист Microsoft Excel-Л';wgggiwОтмена |wgggiwОтмена |Г jewe значка:Г jewe значка:РвзутагРвзутагДобввченне в дог умеит waors объекта типа!* Точенный рисунок Parn>b«.tsh“;Добввченне в дог умеит waors объекта типа!* Точенный рисунок Parn>b«.tsh“;Рис. 3.34. Окно вставки объектаЕсли оставить переключатель в первом положении, то объект может быть создан заново с помощью подходящего приложения, например редактора Paint. Этот процесс показан на рис. 3.35.Рис. 3.34. Окно вставки объектаЕсли оставить переключатель в первом положении, то объект может быть создан заново с помощью подходящего приложения, например редактора Paint. Этот процесс показан на рис. 3.35.Рис. 3.35. Подготовка объекта в графическом редакторе PaintРис. 3.35. Подготовка объекта в графическом редакторе Paint
дартное окно вставки объектов из операционной системы Windows, поэтому если она русифицирована, то окно имеет русскоязычные надписи.
дартное окно вставки объектов из операционной системы Windows, поэтому если она русифицирована, то окно имеет русскоязычные надписи.
Вставка объекте
Вставка объекте
£♦ CpSftgt^-НОВЫЙ
С Создать ц.а файла.
£♦ CpSftgt^-НОВЫЙ
С Создать ц.а файла.
Хил объект»:
Хил объект»:
КомнатаМ^*1;
Лист Microsoft Excel-Л';
КомнатаМ^*1;
Лист Microsoft Excel-Л';
wgggiw
Отмена |
wgggiw
Отмена |
Г jewe значка:
Г jewe значка:
Рвзутаг
Рвзутаг
Добввченне в дог умеит waors объекта типа!
* Точенный рисунок Parn>b«.tsh“;
Добввченне в дог умеит waors объекта типа!
* Точенный рисунок Parn>b«.tsh“;
Рис. 3.34. Окно вставки объекта
Если оставить переключатель в первом положении, то объект может быть создан заново с помощью подходящего приложения, например редактора Paint. Этот процесс показан на рис. 3.35.
Рис. 3.34. Окно вставки объекта
Если оставить переключатель в первом положении, то объект может быть создан заново с помощью подходящего приложения, например редактора Paint. Этот процесс показан на рис. 3.35.
Рис. 3.35. Подготовка объекта в графическом редакторе Paint
Рис. 3.35. Подготовка объекта в графическом редакторе Paint
После того как объект готов, достаточно выйти из приложения, в котором он создавался, — в нашем случае из редактора Paint. Для этого в меню редактора имеется команда File ► Exit. Окно Paint исчезнет, а сам объект появится в той
ячейке Maple 7 (рис. 3.36), в которой был установлен маркер ввода в момент дачи команды вставки объекта.
Рис. 3.36. Пример документа со вставленным объектом-рисунком
Вместо рисунка (или другого объекта) можно поместить в документе Maple 7 значок — гипермедиа-ссылку. Для этого в окне на рис. 3.34 надо установить флажок В виде значка. Щелчок на вставленном в документ значке вызовет появление объекта. Этот способ удобен, когда объекты, например рисунки, имеют большой размер и их постоянное присутствие на экране нецелесообразно.
Необязательно каждый раз создавать объект с нуля — можно загрузить его из файла, в этом случае следует установить положение переключателя Создать из файла. Для поиска нужного файла пригодится кнопка Обзор. После выбора файла надо решить, какой вид будет иметь значок связи с файлом — вид стандартного значка или уменьшенной копии изображения.
Редактирование вставленного объекта
Если объект выделен (как обычно, щелчком мыши), то команда Edit ► Object становится активной и может даже модифицироваться в зависимости от вида объекта, с которые установлена связь. Например, если объектом является .рсх-файл, то эта строка меню открывает подменю с тремя командами:
О Edit — редактировать объект;
О Open — открыть приложение, связанное с объектом;
О Print — распечатать объект.
Редактирование объекта производится в среде того приложения, с которым объект связан. Естественно, что изменение файла повлечет за собой отражение в документе его измененного варианта. Следует отметить, что в некоторых копиях программы Maple 7 операция Object не работает. Однако сохраняется возможность редактирования объекта в создавшей его программе после двойного щелчка на нем.
Что нового мы узнали?
В этом уроке мы научились:
О Создавать новый документ.
О Загружать ранее созданные документы.
О Работать с файлами документов.
О Редактировать документы.
О Печатать документы.
О Осуществлять операции вставки.
О Выполнять операции форматирования.
О Вставлять в Maple 7 объекты, созданные другими программами.
О Работать с объектами.
< ) УРОК
Управление интерфейсом
пользователя
Управление видом интерфейса и документа
Управление показом областей секций
Работа с параметрами Maple
Работа с окнами
Управление видом интерфейса и документа
Меню View
Для управления видом интерфейса и документа служит меню View. Оно содержит ряд флажков и несколько команд управления общим видом программы (рис. 4.1). Установленные флажки, управляющие показом элементов интерфейса, распространяют свое действие на все открытые документы. При выходе из системы (командой Exit) все установки сохраняются, так что при новом запуске системы внешний вид интерфейса будет определяться именно ими.
1бЙ&б!!:
£srW Bai:
Status Bari
PateSes>i
gaom Factor*:
ggtfcmsksк
H«fc Content►:
Shew ||мйШ Characters
V Shew Set tipnAAnge# Shift+FS i
✓ Shaw group flanges F9 :
Shoe Object typei
^xpwdARSecttonti
CoSapseMSaeto;
Рис. 4.1. Меню View
Команды меню View разбиты на несколько групп. Первая группа содержит флаж
ки, относящиеся к управлению показрм-славной и контекстной панелей инструментов, а также строки состояния^истемы:
О Toolbar — управление показом панели инструментов;
О Context Ваг — управление показом контекстной панели;
О Status Line — управление показом строки состояния.
Вторая группа задает показ палитр и представлена одной командой, открывающей подменю управления показом палитр Palettes, содержащей флажки:
О Symbol Palette — палитра символов;
О Expression Palette — палитра выражений;
О Matrix Palette — палитра шаблонов матриц;
О Vector Palette — палитра шаблонов векторов.
И команды:
О Show All Palettes — показать все палитры;
О Hide All Palettes — скрыть все палитры.•
Третья группа в меню View задает масштаб отображения документа на экране и установку закладок (bookmarks):
О Zoom Factor — задание масштаба просмотра документа;
О Bookmarks — установка закладок.
Четвертая группа обеспечивает переходы по гиперссылкам:
О Back — переход обратно по последней пройденной гиперссылке;
О Forward — команда, обратная команде Back.
Данные команды аналогичны командам браузера и управляются историей переходов по гиперссылкам. Поэтому, если вы не использовали ни одной гиперссылки, данные команды будут недоступны. В основном данные команды и соответствующие кнопки панели инструментов необходимы при работе со справкой Maple. Пятая группа представлена командой Hide content, открывающей подменю скрытия элементов документа:
О Hide Spreadsheets — скрыть электронные таблицы;
О Hide Input — скрыть ввод;
О Hide Output — скрыть вывод;
О Hide Graphics — скрыть графические объекты
Шестая группа параметров управляет показом некоторых объектов документа:
О Show Invisible Characters — показ непечатаемых символов;
О Show Section Ranges (Shift+F9) — показ областей секций;
О Show Group Ranges — показ областей групп;
О Show OLE type — показ объектов OLE.
В седьмой группе содержатся следующие команды:
О Expand All Sections — раскрыть все секции;
О Collapse All Sections — свернуть все секции.
Действие всех перечисленных команд более подробно описано ниже. Рекомендуется поэкспериментировать с командами — когда вы уясните их действие, вы сможете настроить интерфейс Maple на свой вкус.
Управление показом панели инструментов (Toolbar)
Панель инструментов (Toolbar) служит для быстрого управления системой без обращения к командам меню. Оца позволяет вызывать наиболее часто исполь-
зуемые команды нажатием кнопки. Назначение всех кнопок этой панели было описано выше и представлено на рис. 1.21.
Несмотря на удобства, предоставляемые панелью инструментов, в ряде случаев она не нужна. Например, для ввода исходных данных и их редактирования достаточно иметь на экране только контекстную панель. Панель инструментов полезна при общей отладке документов, открытии нового документа, загрузке имеющегося документа, записи документа на диск, печати документа и т. д. В ряде случаев она просто занимает часть места, нужного для лучшего обзора документа.
Флажок Toolbar управляет показом панели инструментов.
Управление показом контекстной панели
Панель Context Ваг служит для размещения кнопок быстрого доступа к операциям с текущим объектом.
Флажок Context Ваг задает отображение контекстной панели на экране. Поскольку панель форматирования весьма удобна для оперативной работы, единственным мотивом временного ее удаления является необходимость высвободить больше места на экране монитора для работы с документом.
Управление показом строки состояния
Строка состояния внизу экрана, как отмечалось, выводит контекстно-зависимую информацию о состоянии программы в данный момент времени. В ряде случаев ее можно считать элементом контекстно-зависимой справки. Флажок Status Ваг служит для управления показом строки состояния.
Вывод палитр математических символов
Палитры математических символов, впервые введенные в версии Maple V R5, являются очень удобным средством для облегчения набора математических выражений начинающим пользователям-. Они выводятся на экран командой Palettes и показаны на рис. 1.11. Всего имеются четыре палитры:
О Symbol — палитра ввода греческих символов и констант;
О Expression — палитра ввода операторов и выражений;
О Matrix — палитра ввода матриц;
О Vector - новая (для Maple 7) палитра ввода векторов.
Ввод осуществляется на место маркера ввода. Щелчок на кнопке палитры — символ или его аналог окажется в точке ввода. Параметры, которые необходимо указать, при математической нотации выражений имеют вид вопросительного знака, а при Maple-нотации — %?.
Итак, в строке ввода введенный оператор или символ не обязательно повторит оператор или символ палитры. Это хороню видно из рис. 4.2, на котором показан ввод с помощью палитры выражений шаблона определенного интеграла и его последовательное заполнение. Для наглядности заполнение каждого параметра дано в новой строке ввода.
!□ Марк 7 - (Untitled (1) - (Setvei Щ
^ £> £Ф l^W Insert Format ^ - ■ ' Qpttoris y^inctew Ijelp^15jj$J
ЯМвИИИ^й‘1йДй111в1О^^^
Tree 1 ^ Bytes ЗУ9М ^\ийаЫу 1 786
Рис. 4.2. Пример ввода шаблона определенного интеграла из палитры выражений
Установка масштаба отображения документа
Команда Zoom Factor задает масштаб отображения текущего документа. Он задается в процентах относительно масштаба просмотра, заданного по умолчанию, — он принят за 100 %. Команда выводит подменю с перечнем возможных масштабов просмотра. На рис. 4.3 показано, как будет выглядеть документ при установке масштаба просмотра в 150 %. На этом рисунке показано подменю выбора масштаба в открытом виде.
Нетрудно заметить, что все символы документа увеличились при этом в размерах в полтора раза. Эта возможность, безусловно, полезна для пользователей с ослабленным зрением или для учителей, желающих показать примеры решения задач в среде Maple крупным планом для группы учащихся.
Рис. 4.3. Вид документа при масштабе просмотра в 150 %
Установка закладок
При работе с большими документами, как и при чтении книг, полезно устанавливать специальные маркеры — закладки. Для установки такой закладки достаточно поместить в нужное место документа маркер ввода и выполнить команду View ► Bookmarks ► Edit Bookmarks. Она выводит окно добавления и модификации закладки (рис. 4.4). Кнопка ОК вводит новую закладку, а кнопка Cancel позволяет отказаться от выполнения данной операции.
Если теперь вновь посмотреть подменю Bookmarks, в нем появится строка с созданной закладкой (рис. 4.5).
В нашем случае в списке представлены две ранее созданные закладки с именами «Это определенный интеграл» и «А это значение определенного интеграла». При переходе по закладке строка, в которой установлена закладка, размещается в верхней части окна редактирования и маркер ввода устанавливается в место, которое определено закладкой. Таким образом, закладки — эффективное средство для быстрого перехода в отмеченные места документа. Однако надо помнить, что в отличие от закладок в книгах закладки в документах Maple 7 не видны — они имеются лишь в списке закладок, открываемом командой Bookmarks (рис. 4.5). Удалить созданную закладку не так-то просто: вам нужно перейти по закладке, дать команду View ► Bookmarks ► Edit Bookmarks и удалить текст в поле имени. Теперь нажатие кнопки ОК приведет к окну с предупреждением об удалении закладки. Нажмите ОК в обоих окнах — и закладка исчезнет.
SS^mS-EBSi
Примеры вычисления производной и интегралов
> diff (sin (х)А2,х);
2 sin(x) cos(x)int(1/sqrt(l-xA2),x=0. . 1) ;1 -7Г 2Int(exp(-t)/tA(1/3), t=0..infini2 sin(x) cos(x)int(1/sqrt(l-xA2),x=0. . 1) ;1 -7Г 2Int(exp(-t)/tA(1/3), t=0..infini[Add ш МсмМу BookMaik[Add ш МсмМу BookMaikВВvalue(%);value(%);х=П Pi 1 .•х=П Pi 1 .•§$*лМЛ^:: Это определенный интеграл§$*лМЛ^:: Это определенный интеграл(-оеdi(1/3) tо ■(-оеdi(1/3) tо ■Салей |Салей |2323.^««-jj^ljjteiJg^.^««-jj^ljjteiJg^Рис. 4.4. Пример создания и редактирования закладкиРис. 4.4. Пример создания и редактирования закладки0 Maple 7 - |Difintms -[Seivet 1|)0 Maple 7 - |Difintms -[Seivet 1|)^ file gdil s^wt inie<t Fopnet ГЩЩ^П v Т.Ш» ’■^.L'/JAiL'"^-!^ V Sorters»:v $№»8«:^ file gdil s^wt inie<t Fopnet ГЩЩ^П v Т.Ш» ’■^.L'/JAiL'"^-!^ V Sorters»:v $№»8«:Options- ^gtxkw Цейр;Options- ^gtxkw Цейр;Пpи^> difiПpи^> difigslettes :goomfa^ igslettes :goomfa^ iия производной и интеграловия производной и интеграловgookmarksgookmarks^<5t Dookmaft.^<5t Dookmaft.Это определенный интегралЭто определенный интегралintintHide Coater»Hide Coater»Abts SHat^eon^e/reHMBrotwsrpana x_xr__^iv^^^ Abts SHat^eon^e/reHMBrotwsrpana x_xr__^iv^^^ Show fawiste ChAt*ctets V Show Setiton Banzes * S‘*i« i'*.n 4#-^.Int ^^St^^y®*gKp^JASSwSbprtS:Ct#aa$eA8S«t№fi$Show fawiste ChAt*ctets V Show Setiton Banzes * S‘*i« i'*.n 4#-^.Int ^^St^^y®*gKp^JASSwSbprtS:Ct#aa$eA8S«t№fi$))1 -7Г2t=0..infinity);1 -7Г2t=0..infinity);
2 sin(x) cos(x)
int(1/sqrt(l-xA2),x=0. . 1) ;
1 -7Г 2
Int(exp(-t)/tA(1/3), t=0..infini
2 sin(x) cos(x)
int(1/sqrt(l-xA2),x=0. . 1) ;
1 -7Г 2
Int(exp(-t)/tA(1/3), t=0..infini
[Add ш МсмМу BookMaik
[Add ш МсмМу BookMaik
В
В
value(%);
value(%);
х=П Pi 1 .•
х=П Pi 1 .•
§$*лМЛ^:
: Это определенный интеграл
§$*лМЛ^:
: Это определенный интеграл
(-о
е
di
(1/3) t
о ■
(-о
е
di
(1/3) t
о ■
Салей |
Салей |
2
3
2
3
.^««-jj^ljjteiJg^
.^««-jj^ljjteiJg^
Рис. 4.4. Пример создания и редактирования закладки
Рис. 4.4. Пример создания и редактирования закладки
0 Maple 7 - |Difintms -[Seivet 1|)
0 Maple 7 - |Difintms -[Seivet 1|)
^ file gdil s^wt inie<t Fopnet ГЩЩ^П v Т.Ш» ’■^.L'/JAiL'"^-!^ V Sorters»:
v $№»8«:
^ file gdil s^wt inie<t Fopnet ГЩЩ^П v Т.Ш» ’■^.L'/JAiL'"^-!^ V Sorters»:
v $№»8«:
Options- ^gtxkw Цейр;
Options- ^gtxkw Цейр;
Пpи^
> difi
Пpи^
> difi
gslettes :
goomfa^ i
gslettes :
goomfa^ i
ия производной и интегралов
ия производной и интегралов
gookmarks
gookmarks
^<5t Dookmaft.
^<5t Dookmaft.
Это определенный интеграл
Это определенный интеграл
int
int
Hide Coater»
Hide Coater»
Abts SHat^eon^e/reHMBrotwsrpana x_xr__^iv^^^
Abts SHat^eon^e/reHMBrotwsrpana x_xr__^iv^^^
Show fawiste ChAt*ctets V Show Setiton Banzes * S‘*i« i'*.n 4#-^.
Int ^^St^^y®*
gKp^JASSwSbprtS:
Ct#aa$eA8S«t№fi$
Show fawiste ChAt*ctets V Show Setiton Banzes * S‘*i« i'*.n 4#-^.
Int ^^St^^y®*
gKp^JASSwSbprtS:
Ct#aa$eA8S«t№fi$
)
)
1 -7Г
2
t=0..infinity);
1 -7Г
2
t=0..infinity);
ee
e
e
^
(1/3)
t
о
value(8) ;
Рис. 4.5. Просмотр закладок
Управление показом компонентов документа
Документы Maple 7 состоят из ряда основных элементов. Это ячейки (строки) ввода и вывода, графики и электронные таблицы. При подготовке различных электронных книг, учебников и статей возникает необходимость скрыть тот или иной компонент документа. Например, педагог может захотеть скрыть от учащихся строки ввода, чтобы они могли мысленно представить функции, отображаемые показанными в документе графиками. Или, наоборот, скрыть графики, чтобы учащиеся назвали их особенности исходя из записи функций. Все эти возможности и обеспечивает команда View ► Hide Content.
Для примера на рис. 4.6 показан документ, у которого скрыты все строки ввода и оставлены только строки вывода.
Разумеется, можно вернуть показ строк ввода, просто повторно дав эту команду Hide Input в подменю команды View ► Hide Content ► Hide Input (рис. 4.6). Co скрытием других компонентов документов читатель может разобраться самостоятельно.
Управление показом непечатаемых символов
В любом документе незримо присутствуют различные непечатаемые символы, например управляющие символы перевода строки или пробелы. Это хорошо известно читателям, работающим с текстовым процессором Word. Иногда полезно вывести эти символы — например, если вам неясно, сколько пробелов стоит между какими-то словами.
Для вывода непечатаемых символов служит команда-флажок Show Invisible Characters (рис. 4.7). Ее можно также дать, нажав кнопку на панели инструментов с изображением управляющего символа перевода строки — «][». Этот символ, кстати, и является одним из наиболее часто встречающихся управляющих непечатаемых символов.
Рис. 4.7. Вид документа с выводом непечатаемых управляющих символов
Помимо символа перевода строки вы увидите множество символов пробела в виде точки на середине строки. По числу точек между словами можно судить о том, сколько пробелов установлено между ними. Проявятся также табуляции и другие управляющие операции, встречающиеся в документах Maple 7.
Управление показом областей секций
Понятие о секциях и подсекциях
Как уже отмечалось, документ Maple 7 состоит из отдельных ячеек (в оригинале — групп, groups). Они выделяются слева длинными тонкими квадратными скобками. Есть еще один способ выделения ячеек — объединение их в секции. Секция начинается с кнопки со знаком «плюс» или «минус» (рис. 4.8), управляющей ее состоянием: открытым или закрытым.
Рис. 4.8. Пример документа с открытой секцией и закрытой подсекцией
Для создания секции или подсекции необходимо дать команду Insert ► Section (или Insert ► Subsection), что указано на рис. 4.8. Секция выделяется вертикальной одиночной линией, а подсекция — двойной линией.
Секции и подсекции выгодно отличаются от ячеек тем, что они могут быть при необходимости закрыты и представлены только кнопкой со знаком «плюс». Таким образом, в секции удобно помещать различные вспомогательные вычисления, которые не стоит обозревать постоянно. Хотите посмотреть на них — нажмите кнопку, и содержимое секции появится под ней с выделением вертикальной чертой (рис. 4.9).
Секции весьма удобно применять и для подготовки документов в форме электронных книг. В этом случае секции снабжаются текстовыми заголовками и, по существу, являются главами книги, а подсекции — параграфами. Этот способ представления документов нашел широкое применение в сети Интернет, где он (наряду с гипертекстовыми и гипермедиа-ссылками) используется при создании web-страниц. Версия Maple 7 позволяет готовить и сохранять на диске документы в формате HTML, что позволяет напрямую готовить web-страницы.
^ Maple 7 - ISectcte.ms - [Seiver 1D
.ж1£Н У ;.ж1£Н У ;S E^ Edit yiw Insert Ffsff^fOptions Х^Шу He^i
.ж1£Н У ;
.ж1£Н У ;
Демонстрация применения секций
Ввод секцшг (команда Section в меню Insert)
> int(х*ехр(-х), х);
-л*е' -e
Ввод подсекции (команда Subsection в меню Insert)
> diff(sin(х)/х,х);
sin(x)„2sin(x)„2■cos(x)
sin(x)„2
sin(x)„2
. I®£... 12$ j^er £ QQMAva^bte. 1,Ж
Рис. 4.9. Пример документа с рис. 4.8 с открытой подсекцией
Управление показом областей секций
Итак, обычно секции и подсекции выделяются вертикальными линиями, заканчивающимися короткими горизонтальными штрихами. Это позволяет судить о размерах области экрана, представляющей секцию, особенно если секция большая и целиком не помещается на экране.
Тем не менее в окончательно отлаженном документе необходимость в применении линии показа области секции или подсекции отпадает. С помощью флажка Show Section Ranges можно управлять показом линий выделения областей секций и подсекций. Если этот флажок установлен, то линии показа областей секций и подсекций видны, как на рис. 4.9. Если его снять, то эти линии исчезнут (рис. 4.10).
Обратите внимание, что линии выделения групп (ячеек) остаются.
^O Maple 7 - (Sectcre.ms - {Server 1]|^O Maple 7 - (Sectcre.ms - {Server 1]|& Efe £»*№» WlW - о vW& Efe £»*№» WlW - о vW»Ш!^»Ш!^v Context Bar v ilfltia Г vv Context Bar v ilfltia Г v* WkM^Mi M^V]^* WkM^Mi M^V]^'l* И tl'l* И tlййl»txil»txiДемеДемеменения секцийменения секцийВвод сВвод сBcokmarkr. :Bcokmarkr. :on в меню Insert)on в меню Insert)3,13,1В и оВ и оHide Cw^enfHide Cw^enfShow In^s^^ C^artef®:Show In^s^^ C^artef®:S how Section RangesS how Section RangesS how fittiup- Ranges;Sho$s OtqacUype :S how fittiup- Ranges;Sho$s OtqacUype :linpandAl Sections i Co|ap®@ N Sestons ilinpandAl Sections i Co|ap®@ N Sestons iShift*F9Shift*F9Ш?Ш?T oggle the display of section range guide linesT oggle the display of section range guide lines,a Subsection в меню Insert),a Subsection в меню Insert)diff(sin(x)/x, x) ;diff(sin(x)/x, x) ;cos(x) sin(%)cos(x) sin(%)A'A'XXToggle the dsp^ of section range gude боеУ
^O Maple 7 - (Sectcre.ms - {Server 1]|
^O Maple 7 - (Sectcre.ms - {Server 1]|
& Efe £»*№» WlW - о vW
& Efe £»*№» WlW - о vW
»Ш!^
»Ш!^
v Context Bar v ilfltia Г v
v Context Bar v ilfltia Г v
* WkM^Mi M^V]^
* WkM^Mi M^V]^
'l* И tl
'l* И tl
й
й
l»txi
l»txi
Деме
Деме
менения секций
менения секций
Ввод с
Ввод с
Bcokmarkr. :
Bcokmarkr. :
on в меню Insert)
on в меню Insert)
3,1
3,1
В и о
В и о
Hide Cw^enf
Hide Cw^enf
Show In^s^^ C^artef®:
Show In^s^^ C^artef®:
S how Section Ranges
S how Section Ranges
S how fittiup- Ranges;
Sho$s OtqacUype :
S how fittiup- Ranges;
Sho$s OtqacUype :
linpandAl Sections i Co|ap®@ N Sestons i
linpandAl Sections i Co|ap®@ N Sestons i
Shift*F9
Shift*F9
Ш?
Ш?
T oggle the display of section range guide lines
T oggle the display of section range guide lines
,a Subsection в меню Insert)
,a Subsection в меню Insert)
diff(sin(x)/x, x) ;
diff(sin(x)/x, x) ;
cos(x) sin(%)
cos(x) sin(%)
A'
A'
X
X
Рис. 4.10. Вид документа с рис. 4.9 при снятии показа областей секции и подсекции
Управление показом областей ячеек (Show Group Ranges)
Команда Show Group Ranges служит для управления показом областей ячеек (групп), то есть длинных квадратных скобок, обрамляющих ячейки слева. Если флажок установлен, то линии показа областей ячеек видны. Если его снять, то эти линии исчезают, как показано на рист^И, где убраны линии выделения как секции и подсекции, так и ячеек. /
Убирать линии показа областей ячеек целесообразно, если документ уже отлажен. В таком документе необходимость показа областей выделения ячеек, секций и подсекций отсутствует, хотя иногда их разумно оставлять, так как они способствуют систематизации содержимого документов.
Закрытие всех секций
Все секции и подсекции документа можно закрыть командой Collapse All Sections. К примеру, если применить ее к документу, показанному на рис. 4.9, то документ примет вид, показанный на рис. 4.12.
•онСия ЭН ИИПЯЭЭЕОП И ИИПЯЭЭ OJ
-owижdэEoэ ‘ОННЭЯ1ЭЭ1ЭЭ ‘йоте ис1ц ‘охээи эончевиинии (wodaiHHdn axiBhonaed Hdn и) 9HBdM6 ВН ХЭВИИНЕЕ (ИИКИПЯЭЭЕОП и) ИККИПЯЭЭ HHMlwdXBB э шэкХмо^
ииЬиээ хээа пинчОнее ndu 6't "эид э снэнАхоу "zi^ "and
esa Сакибу ; hw^sl4?! *«u J
-+
( pasiq синаи я uopoag вЕнвиоя) шйыао Еояд
р ппЬнаэ BnHdHaiAindu BnYiedtuoHowatf
g Ш SH3E3 Е011Ж1<^^ ®BSi1Ej
|х[5Г<№ мор«Д «^g '- 1 'i. ^«>1 iH ««S №3 4*3^
|(l iSAiagj -sm aropag] - /aidewQ
мээнк HdiDei/go есемои иинии- иинэивЯЛ эизои ort7 *эис1 з iHawA^otf 4l*V *^Md
9951 ^₽е*у we^'Wfl 4 V W,
гх x
(x)ins (x)soo
/(x'x/(X)UTS)JJTP <
(pasuj синаи я uopoasqng вйнвиом) иийхээЕон Еояд a - a х-
(Х-)(Х-)
г (х'(х-)dxa*x)pur <
( qtasuj синаи я uopoag вйнвиох) шйтяэо Еояд
nnYiMao BnHBHanndu вnYledшoнoмдtf
Ж$5ГЖ$5Гй @ ® дав Й ЕВ И @Ж) menй @ ® дав Й ЕВ И @Ж) mensagasagaМ^^*^*»^*^^*^^. ««S&.M яй®М^^*^*»^*^^*^^. ««S&.M яй®[[l jaAiegi - зш аюрад) ’ ZaldeHE][[l jaAiegi - зш аюрад) ’ ZaldeHE]
Ж$5Г
Ж$5Г
й @ ® дав Й ЕВ И @Ж) men
й @ ® дав Й ЕВ И @Ж) men
saga
saga
М^^*^*»^*^^*^^. ««S&.M яй®
М^^*^*»^*^^*^^. ««S&.M яй®
[[l jaAiegi - зш аюрад) ’ ZaldeHE]
[[l jaAiegi - зш аюрад) ’ ZaldeHE]
£81 ииЬхээ yaiDeirgo woebxou эинэиввдил
Раскрытие всех секций
Для раскрытия всех секций служит команда Expand All Sections. Она открывает и все подсекции. К примеру, если применить эту операцию к документу, показанному на рис. 4.12, то он вернется к исходному виду (рис. 4.9).
Таким образом, Maple 7 имеет достаточно простые, но в то же время полные средства по управлению видом пользовательского интерфейса (окна) системы и видом имеющегося в нем документа. Это позволяет пользователю настраивать интерфейс и вид документа в соответствии со своими привычками, обеспечивая комфортную работу с программой.
Работа с параметрами Maple 7
Меню Options
Помимо ряда уже рассмотренных команд в меню Options сосредоточены средства для установки некоторых глобальных параметров ввода и вывода документов. Их число в Maple 7 существенно увеличено.
Первая группа команд содержит две команды:
О Replace Output — управляет характером вывода;
О Insert Mode — устанавливает режим вставки при вводе.
Во второй группе всего одна команда Browser — задание броузера для перехода по URL.
Третья группа также представлена одной командой:
О Export — параметры экспорта документов.
Четвертая группа содержит 6 команд:
О Input Display — управление показом выражений в строке ввода;
О Output Display — управление показом результатов вычислений;
О Assumed Variables — контроль за предполагаемыми переменными;
О Plot Display — управление отображением графиков;
О Display 2D-legends — управление показом подписей обозначений двумерной графики;
О Print Quality — управление качеством печати.
Пятая и шестая группы содержат по одной команде:
О Palette Size — управление размером палитр;
О AutoSave — управление автоматическим сохранением документа.
С помощью этих параметров можно настроить систему на наиболее приемлемые формы вывода результатов вычислений без задания специальных команд в документе. Однако последние могут отменять параметры, заданные с помощью меню..
Управление выводом
Команда Replace Output задает вывод результатов вычислений, заданных в ячейке, в одно и тоже место. Это означает, что если входные данные меняются, то при установленном флажке каждый последующий результат будет замещать предыдущий. Если же флажок снят, то каждый новый результат будет помещаться в новое место, то есть в документе будут выведены подряд (сверху вниз) все результаты вычислений.
Поясним на примере. Допустим, в какой-то строке ввода мы задаем вычисляемое выражение 2+3:
2+3;
5
Результат (в данном случае в Maple-нотации) появляется снизу. Теперь в той же строке ввода вычислим 3+4, а затем 4+5. Получим:
4+5;
9
Мы заметим, что результат появится на месте прежнего, и в конечном счете мы будем иметь в качестве результата число 9. Теперь снимем флажок Replace Output и проделаем все те же вычисления в новой строке ввода. Получим следующее:
4+5;
5
7
9
Здесь видны уже три ячейки вывода. Не следует следует устанавливать флажок Replace Output в том случае, когда желательно знать суть промежуточных преобразований и самих исходных выражений, поскольку они (а возможно, и предшествующие результаты преобразований) при ее использовании исчезают.
Установка режима вставки новой ячейки
Этот флажок, будучи установленным, обеспечивает при нажатии клавиши Enter ввод новой пустой ячейки. Если флажок снят, то такая вставка не осуществляется.
Если работа с системой происходит в форме простейшего диалога, по типу «задать вопрос — получить ответ», то рекомендуется установить режим вставки новой ячейки. При этом по окончании вычислений в последней ячейке тут же появляется новая пустая ячейка для последующих вычислений.
Задание браузера
Для открытия документов web-страниц (по URL-адресу) Maple 7 использует какой-либо из установленных на компьютере браузеров Интернета. Для этого необходимо указать путь к браузеру с помощью команды Browser. Она открывает окно, показанное на рис. 4.13.
Select Browser
Г IgseSysHmD-tMOKI Carral I
Рис. 4.13. Окно задания браузера Интернета
В этом окне можно установить флажок Use System Default (использовать браузер, заданный в операционной системе по умолчанию). В противном случае путь к браузеру надо указать явно, введя его в поле или отыскав его с помощью кнопки Browse.
Параметры экспорта документов
Команда Export открывает очень простое окно установки параметров экспорта, показанное на рис. 4.14.
Msthemahcs Formating Wirfih;Msthemahcs Formating Wirfih;Export OptionsExport OptionsCancel |Cancel |
Msthemahcs Formating Wirfih;
Msthemahcs Formating Wirfih;
Export Options
Export Options
Cancel |
Cancel |
Рис. 4.14. Окно команды Export
Установка параметров представления строк ввода
Команда Input Display выводит подменю, позволяющее выбрать режим представления выражений в строке ввода:
О Maple Notation — ввод выражений в Maple-нотации (в строку);
О Standard Math Notation — ввод выражений в обычном математическом виде (его признаком является появление вопросительного знака в строке ввода).
В качестве примера ниже даны две формы задания ввода двойного интеграла с помощью палитры выражений:1
> int(1nt(X7, Г?-»?..*?), Х7-Х7.Д7);
? ?
> г г?^?^?
Верхняя строка соответствует Maple-нотации, а нижняя — стандартной математической нотации.
Установка параметров вывода
Команда Output Display раскрывает подменю, имеющее четыре команды, влияющие на вид результатов вычислений — вывода:
О Maple Notation — вывод в одну строку (как в Maple-языке);
О Character Notation — вывод в виде формулы,.набранной из знаков на разных строках;
О Typeset Notation — вывод в печатной форме без возможности редактирования;
О Standard Math Notation — вывод в виде обычной математической формулы.
Рисунок 4.15 наглядно иллюстрирует эти формы вывода. Последняя форма наиболее наглядна и задается по умолчанию.
^ £9a gdl ^w Jr^ert FtyrbM - j^ons ^fmddv» Jj^^ £9a gdl ^w Jr^ert FtyrbM - j^ons ^fmddv» Jj^
^ £9a gdl ^w Jr^ert FtyrbM - j^ons ^fmddv» Jj^
^ £9a gdl ^w Jr^ert FtyrbM - j^ons ^fmddv» Jj^
Примеры вывода разного типа
Здесь вывод типа Maple Notation:
> Int(sin(x)/х,х=0..1);
Здесь вывод типа Character Notation: > Int(sin(x)/х,х-0..1);
dx
А здесь вывод типа Typeset Notation или Standard Math Notation: > Int(sin(x)/х,x—0..1);
Рис. 4.15. Демонстрация вывода в различных формах
Первая форма наиболее компактна, но менее всего наглядна. Вторая форма имитирует построение формул с помощью отдельных знаков, расположенных на разных уровнях (строках). Эти две формы позволяют использовать Maple
даже в том случае, когда имеются устройства вывода (дисплеи и принтеры), работающие только в текстовых режимах. Третья форма дает вывод в виде обычных математических формул, но без возможности их редактирования.
Четвертая форма позволяет представить результат вывода, там, где это возможно, в виде обычных математических формул с применением типовых математических знаков — интегралов, производных, сумм, произведений, квадратных корней и т. д. В большинстве случаев именно эта форма вывода является наиболее наглядной. Она подобна третьей форме, но допускает редактирование выражений. Как отмечалось, нажатием кнопки с символом «х» в панели инструментов документа можно попытаться и вводимое выражение представить в виде обычной математической формулы. Однако это не всегда удается, поскольку далеко не все однострочные функции системы Maple 7 можно представить таким образом.
Контроль за предполагаемыми переменными (Assumed Variables)
На переменные в Maple 7 могут быть наложены различные условия. Для этого используется специальная функция assume. Например, если переменная х может принимать только положительные значения, то для этого достаточно исполнить команду assume(x>0). Будем называть такие переменные предполагаемыми, поскольку предполагается, что они имеют какие-то дополнительные ограничения, помймо накладываемых на них типом.
В подменю Assume Variables меню Options имеются три команды, управляющие контролем признаков предполагаемых переменных:
О Trailing Tildes — включает маркировку предполагаемых переменных знаком тильды (~);
О No Annotation — включает параметр «без аннотаций», то есть запрещает вывод аннотации;
О Phrase — включает параметр вывода комментариев для предполагаемых переменных. /
Предполагаемые переменные при выводе обычно обозначаются значком тильды (-) после их имени. Этот знак отображается при установки флажка Trailing Tildes (по умолчанию она включена). Однако с помощью флажка No Annotation можно отключить как это обозначение, так и короткий текстовый комментарий, который сопровождает предполагаемые переменные. Наконец, флажок Phrase включает вывод текстовых комментариев. Рисунок 4.16 наглядно иллюстрирует применение этих параметров.
Благодаря применению предполагаемых переменных облегчается реализация ряда алгоритмов, критичных к выбору переменных. Например, если использовать вычисление квадратного корня без привлечения понятия о комплексных числах, то
на численные значения переменных надо наложить условие их положительности. Контроль за статусом таких переменных и дают описанные параметры.
if^Maple? - [As$ume.mw$ - {Servet 1Пif^Maple? - [As$ume.mw$ - {Servet 1П^ fite &М ¥»* Пей Рог«<й^ fite &М ¥»* Пей Рог«<й^SchoolBoO^SchoolBoO't fip^ ^«dcw tie^ П v# Ве$йжеОи(₽а
if^Maple? - [As$ume.mw$ - {Servet 1П
if^Maple? - [As$ume.mw$ - {Servet 1П
^ fite &М ¥»* Пей Рог«<й
^ fite &М ¥»* Пей Рог«<й
^SchoolBoO
^SchoolBoO
2X .Insert Motte
•:3ве1^£$1^•:3ве1^£$1^gtows^r,
•:3ве1^£$1^
•:3ве1^£$1^
IfiputOiW :Output Display •IfiputOiW :Output Display •AssumedV«iable$AssumedV«iable$fj# Qh* >:i£ Summarize any Maple variables with assumptions in a phrase after the outputОпция Trailing Tildes включена ^р[^2,> assume(x>0) ;x+1;fj# Qh* >:i£ Summarize any Maple variables with assumptions in a phrase after the outputОпция Trailing Tildes включена ^р[^2,> assume(x>0) ;x+1;Ke Annotation i Tra-hngfictei iKe Annotation i Tra-hngfictei iv Phrasev PhraseExpo»
IfiputOiW :
Output Display •
IfiputOiW :
Output Display •
AssumedV«iable$
AssumedV«iable$
fj# Qh* >:
i£ Summarize any Maple variables with assumptions in a phrase after the output
Опция Trailing Tildes включена ^р[^2,
> assume(x>0) ;
x+1;
fj# Qh* >:
i£ Summarize any Maple variables with assumptions in a phrase after the output
Опция Trailing Tildes включена ^р[^2,
> assume(x>0) ;
x+1;
Ke Annotation i Tra-hngfictei i
Ke Annotation i Tra-hngfictei i
v Phrase
v Phrase
x— + 1
Опция No Annotation включена > x+2;
x~ + 2 Опция Phrase включена > x+3;
x + 3
Midi assumptions onx
SurWes^zs ary Maple variables vfllh assumptions baohrase alter the output torprassrpti:
Рис. 4.16. Применение параметров контроля предполагаемых переменных
Управление показом графиков
Графические результаты могут быть представлены прямо в документе в ячейках вывода или в отдельных окнах. Это обеспечивается двумя командами подменю Plot Display:
О Inline — вывод графиков в ячейках вывода;
О Window — вывод графиков в отдельных окнах.
На рис. 4.17 показан пример вывода двух графиков — один выводится с применением Inline в ячейку документа (сразу после ввода), а другой с применением Window в отдельное окно. Какой из этих двух вариантов предпочтительнее, зависит от привычек пользователя.
Следует отметить, что из всех окон (документов или графиков) в данный момент активам может быть только одно окно. Если это окно графическое, то для него выводится своя контекстная панель инструментов, позволяющая ме-
■ЕХНЭКХЯОР ЭЯИЭЬК Я ВЯИфвДл ИИНЭ1ГЭ171ЧЯ Hdu И1ГИ ияифв<1л эняо коняихяв Hdu ОЯЧ1ГО1 вэхэикякоц яoяифвdл яохнэк^хэни чхгэнвц
'ЭИНЭНВНеЕН ЭOЯlBdя ХИ ОНВй ВХНЭиХяОС ЭНЯО Я В ‘ИМИН ton HKBd
-экон мнэьвнеодо ияпон^ •ияифвdл HondaK^Hi? яохнэк<Мхэни И1гэнвп ионхэяэх -ноя яопоня эинэнвневн OHOifHEXoVodn (эхнэкХяоР я кoяифвdл о ИП '3nd вн и) 81'^ '3Hd ВН 10 [d ИИПЯнХф K9HH9H9KHdn Э K3XK0dX3 OHhiqgO ИЯИфвdл 9I4Hd9wXHy
аояифесЬ xriHdawAatf wenHSodiDOU эинэиаебид
ч 'вхнэкЛяой OJOXG эняо коняих
-яв Hdu оячгох внжокеоя язин вн вхнэкЛяой олоннвКве чэипве ‘Kdonox ихехэл ■IIHH90dX90H OJ9 ndn 9I4K9Xe4IfOH9Hjlddx9WBdBn 9I4doXOX9H И EЯИфвdJ Рия чхкн -9К квшошиояеоп ‘aOXH9wXdx9HH ЧЕЭНВН квнхэяэхноя кояэ кэхиУоямя ОХЭН KlfV OX ‘9OH99W^)Bdx ОНЯО OXG HlfO^ 'ОНЯО OHI7O ОЯЧ1ГОХ чхмд ХЭЖОК И1ЧНЯИХЯЕ XH9W -ок hhhhbv я (яoяифвdл йен яохнэкХяоК) нояо хээя ей охн ‘члихэкхо хэЛРэ^э
онхо эонч1/эВ1о е хин ей ojohSo wotfoans э еояифеСл xAatf иинэоскоои dswMdu ‘LX'S "эис
"вхнэкЛяо!/ олохе эняо коняих
-яв Hdu оячгох внжокеоя яэик вн вхнэкЛяоР олоннвКве чэипве ‘ndoHOx ихвхэл •HUHoodxDon олэ ndn Э1чк9Хеяконэи ‘Hdx3KEdEn 3i4doxox3H и вяифвdл Ния чхкн
Ei Maple 7
Efe ЕЛ ">>« iw' Зейл £*Че9*«г $ж4' gKfeeto т^п^лт^^дау^г*--^- ' - - loisi^Qidi м щ М М ЕЙ 0 №й ВИЙ
|-202 070
1
2 3 4 5 6 7 8 9 10
1 - Координаты графического маркера 2 - Задание стиля графика line style
3 - Задание стиля графика point style
5 - Стиль графика polygon path style
7 - Построение осей слева и снизу
9 - Построение графика без осей
4 - Задание стиля графика gridlines style
6 - Построение осей в виде прямоугольника
8 - Построение осей в виде креста
10 - Установка масштаба графика
plot(sin(xA3)*cos(x) ,x=-Pi..Pi,color=blue);
■
■
<8 Untitled |3) - [Setver 11
Назначение кнопок панели форматирования двумерных графиков
„ Ше 6 7» Bates: 3 SI МА«й№г 1.?Э6н
Рис.4.18. Окно двумерного графика и его панель инструментов
Управление построением трехмерных графиков
Трехмерные графики имеют свою контекстную панель инструментов (рис. 4.19; см. также рис. 1.25 с графиком в документе), с кнопками задания наиболее распространенных параметров для построения трехмерных графиков.
Следует отметить, что панели инструментов графических окон дают доступ лишь к части параметров графиков. Более подробно состав и назначение параметров будут рассмотрены в дальнейшем при описании средств создания графиков. Читателю настоятельно рекомендуется опробовать действие кнопок управления различными форматами графиков, что позволит быстрее освоить огромные возможности Maple 7 в создании цветных и монохромных графиков.
Работа с окнами
Меню Window
При серьезной работе в среде Maple 7 пользователь нередко вынужден работать одновременно с несколькими документами. Удобства такой работы зависят от
‘.итгвмиЫэя ou нояо эинэжoIГОИэвd — |еэ|уэл О iHiTEiHOEHdoj on homo эинэжоиопэвд — leiuozuoH О
!ИОМИВ£ОМ HOMO ЭИHЭЖOIfOПЭBd — Э|Ц О
!номо эииэжогопэ^ эонквмэвм — эреэзеэ О :i4№bwom эиШсяЛ1Гэ1ГЭ lижdэIroэ oinaw oig
MopuiM синаи "03'» "эй,)
<^Н1У$№|3- HV»®i3<^Н1У$№|3- HV»®i3&F»9$b5&F»9$b5h««»sHsif»iWlT Л
<^Н1У$№|3
- HV»®i3
<^Н1У$№|3
- HV»®i3
&F»9$b5
&F»9$b5
(05F ЭИ(1) AAOPUIM
ошэи a lanahoxotodooD homo KmiaxononoEd эяяонвхэА' on иУнвиоя эмняонэо
soiHawAdisHM иианеи хоионя аинэкенеен и вяифedJ ojOHdawxadi ohmq 'бГ^ '^MdsoiHawAdisHM иианеи хоионя аинэкенеен и вяифedJ ojOHdawxadi ohmq 'бГ^ '^MdнояифвД! х1ЧН<1аихэА1нояифвД! х1ЧН<1аихэА1UiflAWSl (Si paimun$>UiflAWSl (Si paimun$>: (г- г—А'?' г—х^л+гУх)РИ°т<1 <: (г- г—А'?' г—х^л+гУх)РИ°т<1 <9S9 1 ячч»л» msT^W9S9 1 ячч»л» msT^W■■■i■■■iА"<Х<9А"<Х<9■■юшвво&ивмДоф шгэивн яопоим эннэьвнсвцюшвво&ивмДоф шгэивн яопоим эннэьвнсвцвяифedJ вдвлтэви - pL хеидоф XAHCBd 8 иаэо Цоэ|Я8 - 51.41 ипвхно! lяdЛJиф aHHeodioou - 6 ияеиивс сед uHsodA иинии х вяяиивс и UHsodA иинии - д вяяиивс и иинии а!яии»ид - £П £1 31 L10L 6 8вяифedJ вдвлтэви - pL хеидоф XAHCBd 8 иаэо Цоэ|Я8 - 51.41 ипвхно! lяdЛJиф aHHeodioou - 6 ияеиивс сед uHsodA иинии х вяяиивс и UHsodA иинии - д вяяиивс и иинии а!яии»ид - £П £1 31 L10L 6 8иаэоэинаивУА-£^ „ВИИГПН,, »081Я8- 01 ИХ8И1ГВС tag иинии eos - g ИИНИИ 91ЯНИ»И8 ОХЯНО1 - 9 иинии сад вхеиивс - р 1ЯЙЛ>иф edocgo 1яи_|Л - гЧиаэоэинаивУА-£^ „ВИИГПН,, »081Я8- 01 ИХ8И1ГВС tag иинии eos - g ИИНИИ 91ЯНИ»И8 ОХЯНО1 - 9 иинии сад вхеиивс - р 1ЯЙЛ>иф edocgo 1яи_|Л - гЧс^а^ *«pt#/i\ y6df?3с^а^ *«pt#/i\ y6df?3ZZ9 9 Г £39 9 Г £311Srjd> iS 5^1^Srjd> iS 5^1^' tiJQOaioy tax^ Л^З’ а^ «idhdQ W*3d ,*^ ФЗ ^3' tiJQOaioy tax^ Л^З’ а^ «idhdQ W*3d ,*^ ФЗ ^3
soiHawAdisHM иианеи хоионя аинэкенеен и вяифedJ ojOHdawxadi ohmq 'бГ^ '^Md
soiHawAdisHM иианеи хоионя аинэкенеен и вяифedJ ojOHdawxadi ohmq 'бГ^ '^Md
нояифвД! х1ЧН<1аихэА1
нояифвД! х1ЧН<1аихэА1
UiflAWSl (Si paimun$>
UiflAWSl (Si paimun$>
: (г- г—А'?' г—х^л+гУх)РИ°т<1 <
: (г- г—А'?' г—х^л+гУх)РИ°т<1 <
9S9 1 ячч»л» msT^W
9S9 1 ячч»л» msT^W
■■■i
■■■i
А"<Х<9
А"<Х<9
■
■
юшвво&ивмДоф шгэивн яопоим эннэьвнсвц
юшвво&ивмДоф шгэивн яопоим эннэьвнсвц
вяифedJ вдвлтэви - pL хеидоф XAHCBd 8 иаэо Цоэ|Я8 - 51.41 ипвхно! lяdЛJиф aHHeodioou - 6 ияеиивс сед uHsodA иинии х вяяиивс и UHsodA иинии - д вяяиивс и иинии а!яии»ид - £
П £1 31 L10L 6 8
вяифedJ вдвлтэви - pL хеидоф XAHCBd 8 иаэо Цоэ|Я8 - 51.41 ипвхно! lяdЛJиф aHHeodioou - 6 ияеиивс сед uHsodA иинии х вяяиивс и UHsodA иинии - д вяяиивс и иинии а!яии»ид - £
П £1 31 L10L 6 8
иаэоэинаивУА-£^ „ВИИГПН,, »081Я8- 01 ИХ8И1ГВС tag иинии eos - g ИИНИИ 91ЯНИ»И8 ОХЯНО1 - 9 иинии сад вхеиивс - р 1ЯЙЛ>иф edocgo 1яи_|Л - гЧ
иаэоэинаивУА-£^ „ВИИГПН,, »081Я8- 01 ИХ8И1ГВС tag иинии eos - g ИИНИИ 91ЯНИ»И8 ОХЯНО1 - 9 иинии сад вхеиивс - р 1ЯЙЛ>иф edocgo 1яи_|Л - гЧ
с^а^ *«pt#/i\ y6df?3
с^а^ *«pt#/i\ y6df?3
Z
Z
9 9 Г £3
9 9 Г £3
1
1
Srjd> iS 5^1^
Srjd> iS 5^1^
' tiJQOaioy tax^ Л^З’ а^ «idhdQ W*3d ,*^ ФЗ ^3
' tiJQOaioy tax^ Л^З’ а^ «idhdQ W*3d ,*^ ФЗ ^3
иодоэопэ wHHidBffHBio индопг хи шижок
-onoud члэонжоиЕоя хэвг l э^вр^ THEdMe xeifoPodn а raнэжoIfoпэвd вимо мвм ‘ojoi
О Arrange Icons — упорядочение расположения икон;
О Close АП — закрытие всех окон документов;
О Close All Help — закрытие всех окон справочной системы.
Каскадное расположение окон
Каскадное расположении окон напоминает колоду карт, сдвинутых так, чтобы были видны их титульные строки. Такое расположение окон показано на рис. 4.21.
Рис. 4.21. Каскадное расположение окон документов
Расположение окон мозаикой
При выполнении команды Tile устанавливается расположение окон мозаикой, показанное на рис. 4.22. При этом окна не перекрываются, имеют примерно одинаковый размер. К сожалению, при большом числе окон область просмотра оказывается настолько мала, что работать с документами при таком расположении окон становится неудобно.
Расположенье окон мозаикой достаточно удобно при работе с двумя (или на большом экране тремя) окнами. Оно может быть полезно, например, при переносе содержимого отдельных ячеек с одного документа в другой путем перегас-
кивания. Можно также копировать объекты в одном окне, а затем, переключившись в другое окно, вставлять содержимое буфера обмена в нужную ячейку, используя команду Paste.
я я ^ о
с
я
о
я CD
^ о я о я
я
Я
я 1=5
я о н я <D 5
* о 3
си я
с
у о
Я я
я я 2
я а С
2
я
о
m
я о я я о я
х'
cd
* о я о я
о я
X
я о
о
а я
я
я CD
* О ^ о я
о я
у
я я
cd Я
я 1)
3
id'
о о Я % cd X
3 и о а я
я
Я я
я я
3
я о КХ
я
я о в
3
я
3
РХ. я я 3 о я
о
Q Maple 1
ЕЗе £<й 56ew ^W* й*Ьг* 5У» &^ &**
■ ^ G3dpar m$ - [Server 1]13:
Построение 3D графика для функции, заданной в параметрической форме
> plot3d([cos(t)*(l+.2*sin(u)),sin(t)*(l+.2*sin(u)),.2*sin(t)*cos(u) ] , t— . 8. .1.5*Pi,u—Pi..0.7*Pi);
Пример решения системы из пяти линейныхd
уравнений
2 sin(x) СО5(х)
Рис. 4.23. Горизонтальное расположение окон
0 Maple 7
Построение 3D j графика для функции, заданной в параметрической форме
> plot3d([cos(t) *(1+.2*sin(u)) ,sin(t)*(1+ . 2* sin(u)),.2*sin (t)*cos(u)],t- -.8..1.5*Pi,u- -Pi.. 0.7*Pi);
Top с обмоткой ^
pl:—spacecurve ( [cos(t)*(10+3 *sin(t*15)),si n(t) *<10+3*sin (t*15)) , 2*cos (t*15),t—0..2* Pi,numpoints=l 000],color—bla ok) :
p2:—tubeplot([ 10*cos(t),10*s in(t),0],t-0. .
2*Pi,numpoints -100, radius-2
, ,style—PATCHNO GRID):
"> display((pl,p2 ),scaling-UNCO NSTRAINED)
Пример d решения системы из пяти линейных уравнений
eqsl :=1
{х + 2*у + 3*z + 4*t + 5*u
= 6,J
5*x + 5*y
4*z + j
Демонстрация j работы c системой Maple 7
> dif^C^inix)'^, Ш
2 sin(z) cos(x)О
II
2^1 f> ^^^^(-tj/T''
. iiiiiYt.ii y) ||
eH)।
.(з).
. L>. va lu^C *' )./33
8К«Эв1Ч Av*b*rt63G'
0е £cft ^w Insert Fajmst .' / $* ^phors ^mdrw jjelp
Рис. 4.24. Вертикальное расположение окон
Приведение в порядок значков свернутых окон
Свернутые окна представлены значками. Они могут перемещаться мышью по всему пространству экрана, поэтому иногда значки оказываются хаотично разбросанными (рис. 4.25).
Для наведения порядка с расположением значков можно, разумеется, переместить каждый из них в удобное место. Но это довольно утомительное занятие. Лучше воспользоваться специальной командой Arrange Icons, которая автоматически наводит порядок в расположении значков свернутых окон, аккуратно располагая их снизу экрана. Действие этой команды показано на рис. 4.26.
Как и окно, каждый значок имеет строку заголовка с четырьмя маленькими кнопками. Первая из них открывает меню управления, а три другие используются соответственно для восстановления размера, развертывания на весь экран и закрытия окна.
Закрытие всех окон одновременно
Команда Close АП служит для закрытия всех окон одновременно. Эта команда будет выполнена сразу только в том случае, когда все документы не модифицировались или были записаны на диск после внесения исправлений. Если какой-либо
документ был изменен, но еще не сохранен, то в центре экрана появится предупреждающее сообщение об этом (рис. 4.27).
Рис. 4.26. Вид экрана после выполнения команды Arrange Icons
Maple 7И
*7 ) The wc«tk$heet4<35»:rivemc',bB$been^^
*ч^ DoycwwKhto ^уе^Ьег^ейозп^ •
JHL -J Нет Отмена
Рис. 4.27. Окно, предупреждающие о том,что закрываемый документ был изменен■
Разумеется, такое окно будет появляться столько раз, сколько имеется модифицированных документов.
Закрытие всех окон справочной системы
В Maple 7 использована многооконная справочная система с гипертекстовыми ссылками. Поэтому при работе с ней экран системы довольно быстро оказывается забитым окнами справочной системы. Разумеется, их можно последовательно закрывать одно за другим, но это очень неудобно и долго. Команда Close All Help
обеспечивает закрытие разом всех окон справочной системы, что позволяет продолжить работу с текущим документом. На окна загруженных документов операция Close All Help влияния не оказывает.
Список открытых документов
Заканчивая рассмотрение меню Window, надо отметить, что оно завершается списком всех открытых в Maple 7 документов и соответственно окон (рис. 4.26). Щелкнув на той или иной строке этого списка, можно открыть соответствующее окно и сделать его активным. -
Что нового мы узнали?
В этом уроке мы научились:
О Изменять вид интерфейса и документа.
О Выводить и скрывать палитры математических знаков.
О Управлять показом непечатаемых символов.
О Изменять статус ячеек документа.
О Устанавливать параметры Maple 7.
О Работать с окнами документов.
О Просматривать список открытых документов.
^Турок^ТурокТипы данных системы Maple 7
^Турок
^Турок
Maple-язык и его синтаксис
Выражения и основы работы с ними
Простые типы данных
Данные множественного типа
Строки и комментарии
Переменные
Константы
Maple-язык и его синтаксис
Знаки алфавита
Язык Maple (или Maple-язык) является одновременно входным языком общения с Maple 7 и языком ее программирования. Входящие в него средства (прежде всего операторы и функции) подобраны настолько полно и удачно, что при решении подавляющего большинства типовых математических задач от пользователя не требуется знаний даже основ программирования. Для решения нужной задачи обычно достаточно составить алгоритм и подобрать набор нужных для его реализации функций и иных средств Maple-языка.
В то же время Maple-язык — один из самых мощных языков программирования математических задач, содержащий почти 3000 операторов, команд и функций, входящих в ядро, основную библиотеку и пакеты функций Maple 7. При этом относящаяся к традиционному программированию часть Maple-языка реализована с помощью довольно скромного набора специальных знаков и зарезервированных слов.
Большинство функций Maple 7 (в частности, все, входящие в пакеты) написаны на этом языке. Поэтому знание этого языка является определяющим в серьезном изучении Maple. Ниже Maple-язык описывается как типичный язык программирования.
Алфавит Maple-языка содержит 26 малых латинских букв (от а до z), 26 больших латинских букв (от А до 2), 10 арабских цифр (от 0 до 9) и 32 специальных символа (арифметические операторы +, -, *, /, знак возведения в степень * и др.). Все они будут рассмотрены в данной главе. Имеется пять пар альтернативных символов (означающих одно и тоже):
Л и **[ и (|] и |){ и (*} и *)
К специальным одиночным и составным знакам относятся элементы синтаксиса языка:
О % — системная переменная, хранящая результат предшествующей операции;
О : — фиксатор выражения, предотвращающий вывод результата вычисления в ячейку вывода;.
О ; — фиксатор выражения, дающий вывод результата вычисления в ячейку вывода; ■
О # — указатель программного комментария;
О ' — ограничитель Строки (например, 'string');
О := — оператор присваивания (например, х:=5);
О ; ; — пустой оператор;
О :: — указатель типа переменной (например, n:: integer или z::complex);
О \ — знак обратного деления, который имеет множественные значения в зависимости от контекста (см. справку по этому знаку - backslash).
Комментарии в программе, не выводимые в ячейки вывода, задаются после символа #. В них допустимо использовать все символы кодовых таблиц, что важно при вводе русскоязычных комментариев, использующих символы кириллицы. Применение последних для идентификаторов (имен) объектов недопустимо.
Зарезервированные слова
которым записываются определения всех объектовкоторым записываются определения всех объектовЗарезервированные слова используются для создания условных выражений, циклов, процедур и управляющих команд. Список 42 зарезервированных слов Maple 7 дан ниже.
которым записываются определения всех объектов
которым записываются определения всех объектов
and
break
by
catch
description
do
done
el if
else
end
error
export
fi
finally
for
from
global
if
in
intersect
local
minus
mod
module
next
not
od
option
options
or
proc
quit
read
return
save
stop
then
to
try
union
use
while
Совокупность
правил, по
Maple-языка, называется его синтаксисом. Некоторые особенности синтаксиса полезно знать уже в начале освоения Maple. Например, то что знак - (минус) имеет двойное значение. Применительно к одному числу, переменной или выражению он меняет их знак. Однако два знака минус подряд (например, в записи --3) задавать нельзя. Другое назначение знака минус — создание операции вычитания, например 5-2 или а-b. Соответственно двойное назначение имеет и знак +, причем число без знака считается положительным, так что +5=5.
При вводе действительных чисел с порядком для указания порядка используется символ А (например, 2*10400 или 2*10А-100). Для возведения числа в степень наряду с оператором А можно использовать и составной оператор ** (две звездочки подряд). Для изменения общепринятого приоритета вычислений используются круглые скобки, в них же задаются параметры функций и процедур. Более подробно синтаксис Maple-языка рассматривается ниже.
Некоторые операторы представлены двумя символами — например, оператор присваивания переменным их значения := содержит двоеточие и знак равенства. В таких операторах между символами недопустим знак пробела. Однако его можно использовать между отдельными частями выражений — так, (а+Ь)/с эквивалентно (а + Ь) / с.
По набору операторов и функций Maple-язык намного превосходит любой универсальный язык программирования. Это позволяет наряду с обычными программными конструкциями задавать множество специальных конструкций, подчас резко упрощающих запись математических выражений. К примеру, возможна работа со списками имен функций. Язык Maple имеет множество операций над символьными выражениями и гибкий аппарат создания и преобразования типов данных и результатов вычислений.
Для большинства пользователей возможности языка Maple кажутся явно избыточными, и большинство наиболее распространенных операций в нем реализуется несколькими способами. Однако каждый пользователь волен выбирать из множества возможностей именно те, которые ему необходимы в конкретной предметной области. Поскольку таких областей превеликое множество, то обширные возможности Maple лишними не являются.
Выражения и основы работы с ними
Выражения и их ввод
Фактически Maple 7 —- это система для манипулирования математическими выражениями.
Выражение в системе Maple — это объект, вполне соответствующий сути обычного ^математического выражения. Оно может содержать операторы, операнды и функции с параметрами. В этом уроке выражения записываются на Maple- языке без использования специальных средств для их представления в естественном математическом виде. Благодаря этому запись выражений и приводимых примеров одинаково пригодна для любой реализации системы Maple — даже под MS-DOS. Такая запись получается наиболее короткой, ее можно выводить и распечатывать без применения графических средств. Кроме того, она соответствует виду, принятому в справочной системе Maple.
Однако пользовательский интерфейс системы Maple 7 для Windows позволяет представлять как вводимые, так и выводимые выражения в самых различных формах, в том числе в естественном математичёском виде — примеры этого многократно приводились и будут приводиться в дальнейшем. Maple 7 имеет многочисленные функции преобразования форматов, позволяющие менять форму представления данных.
Выражения в Maple могут оцениваться и изменяться в соответствии с заданными математическими законами и правилами преобразований. Например, функция упрощения выражений simplify способна упрощать многие математические выражения, записанные в качестве ее параметра (в круглых скобках):
simplify(sin(x)A2+cos(x)A2):
1
simpl1fy((хА2-2*х*а+аА2)/(х-а));
х-а
Символьные преобразования и вычисления математических выражений более подробно будут рассмотрены в следующем уроке.
Для выполнения любых математических операций необходимо обеспечить ввод в систему исходных данных — в общем случае математических выражений. -Для ввода их и текстовых комментариев служат два соответствующих типа строк ввода. Переключение типа текущей строки ввода осуществляется клавишей F5. Строка ввода математических выражений имеет отличительный символ >, а строка ввода текстов такого признака не имеет.
В строке ввода может располагаться несколько выражений. Фиксаторами (указанием, что выражение окончено) их могут быть символы ; (точка с запятой) и : (двоеточие). Символ «;» фиксирует выражение и задает вывод результатов его вычисления. А символ «:» фиксирует выражение и блокирует вывод результатов его вычисления. Фиксаторы выполняют также функцию разделителей выражений, если в одной строке их несколько.'
Ввод выражения оканчивается нажатием клавиши Enter. При этом маркер ввода (жирная мигающая вертикальная черта) может быть в любой позиции строки. Если надо перенести ввод на новую строку, следует нажимать клавиши Shift и Enter совместно. С помощью одного, двух или трех знаков % (в реализациях до Maple V R5 это был знак прямых кавычек ") можно вызывать первое, второе или третье выражение с конца сессии:
а:Ь:С;
X;
с
а:Ь:С:
И:
b
а:Ь:с:
Ш;
а
2+3:
X;
5
П+5:
10
Особая роль при вводе выражений принадлежит знакам прямого апострофа (одиночного ’ или двойного "У Заключенное в такие знаки выражение освобождается от одной пары (закрывающего и открывающего знаков ’):
> ’'factor(a*2+2*a*b'2+b"2)’ ’;
factor (а2 + 2 а Ь1 + Ь2У
X;
facto г (а2 + 2 а Ь2 + Ь2У
factor(aA2+2*a*b+bx2);
(a + b)1
Некоторые другие возможности обрамления выражений апострофами мы рассмотрим позже. Наиболее важная из них — временная отмена выполненного ранее присваивания переменным конкретных значений.
Для завершения работы с текущим документом достаточно исполнить команду quit, done или stop, набранную в строке ввода (со знаком ; в конце).
Оценивание выражений
Встречая выражение, Maple 7 оценивает его, то есть устанавливает возможность его вычисления. Если выражение — скалярная переменная, то ее значение будет выведено в ячейке вывода. Для переменных более сложных типов выводится не их значение, а просто повторяется имя переменной. Просто повторяются также имена неопределенных переменных.
Для оценивания выражений различного типа существует группа функций, основные из которых перечислены ниже:
О eval (array) — возвращает вычисленное содержимое массива array;
О evalf(expr, п) — вычисляет ехрг и возвращает вычисленное значение в форме числа с плавающей точкой, имеющего п цифр после десятичной точки;
О evalhf(ехрг) — вычисляет ехрг и возвращает вычисленное значение с точностью, присущей оборудованию данного компьютера;
О evalf(int(f, х=а..Ь)) — оценивает и возвращает значение определенного интеграла int(f ,х=а. .Ь);
О evalf(Int(f, x=a..b)) — оценивает и возвращает значение определенного интеграла, заданного инертной функцией Int(f,х=а..Ь);
О evalf(Int(f, x=a..b, digits, flag)) — аналогично предыдущему, но возвращает значение интеграла с заданным параметром digits числом цифр после ' десятичной точки и со спецификацией метода вычислений flag;
О evalm(mexpr) — вычисляет значение матричного выражения mexpr и возвращает его;
О evalb(bexpr) — вычисляет и возвращает значения логических условий;
О evalc(cexpr) — вычисляет значение комплексного выражения;
О evalr(expr, ampl) — оценивает и возвращает значения интервальных выражений (функция должна вызываться из библиотеки);
О shake(expr, ampl) — вычисляет интервальное выражение.
Для функции evalf параметр п является необязательным, при его отсутствии полагается п=10, то есть вещественные числа выводятся с мантиссой, имеющей десять цифр после десятичной запятой.
В выражении ехрг могут использоваться константы, например Pi, ехр(1), и функции, такие как exp, In, arctan, cosh, GAMMA и erf. В матричном*выражении mexpr для функции evalm могут использоваться операнды в виде матриц и матричные операторы &*, +, - и ". В комплексных выражениях сехрг наряду с комплексными операндами вида (а + 1*Ь) могут использоваться многие обычные математические функции: .
sin
cos '
tan
CSC.
sec
cot
sinh
cosh
tanh
csch
sech
coth
arcsin
arccos
arctan
arccsc
arcsec
arccot
arcsinh
arccosh
arctanh
arccsch
arcsech
arccoth
exp
In
sqrt
abs
conjugate
polar
argument
signum
csgn
Re
Im
Ei
LambertW
di log
surd
Примеры применения функций оценивания даны ниже:
> А:=[[1.2].[3.4]]; А :=[[!, 2], [3,4]]
eval(А); [[1,2],[3,4]]
evalf(sin(1)); .8414709848.
evalf(sin(2H2+cos(2H2,20);.
1.0000000000000000000
> evalhf(sinU)); .841470984807896505
evalm(20*A+l);‘
"21 40"
60 81
1<3; 1 <3
evalb(l<3):.
true
readlib(shake): evalr(mln(2.sqrt(3))):
evalrtabs(x));
INTERVAL(INTERУАЦ , 0 .. -), -INTER VAL( , -o= 0))
> shake(P1,3):
INTERVAL(3.1102 .. 3.1730)
В дальнейшем мы многократно будем применять функции рцецивания для демонстрации тех или иных вычислений.
Последовательности выражений
Maple 7 может работать не только с одиночными выражениями, но и с последовательностями выражений. Последовательность выражений — это ряд выражений, разделенных запятыми и завершенных фиксатором':
> a,y+z,12.3,cos(1.0);
а, у + z, 12.3, .5403023059
Для' автоматического формирования последовательности выражений применим специальный оператор $, после которого можно указать число выражений или задать диапазон формирования выражений:
f$5;.
LfW
$1..5;
1,2, 3, 4,5
(пА2)$5;
22222
п , п , п , п , п
(пА2)$п=0..5;
О, 1,4,9, 16, 25
Vl[1]$1=l..5;
ГУ , ГУ , VI , VI , VI Г 2’3’4’5
Для создания последовательностей выражений можно использовать также функцию seq:
seq(sin(x),х=0..5);
0, sin( 1), sin( 2), sin( 3), sin( 4), sin( 5)
seq(sin(x*l.),x=0..5):
0., .8414709848, .9092974268, .1411200081, -.7568024953, -.9589242747
seq(fl(l.),fl=[s1n.cos,tan]);
.8414709848 . .5403023059, 1.557407725
sin(l.O).cos(l.O).tan(l.O):
.8414709848, .5403023059, 1.557407725
Вывод выражений
При выполнении порой даже простых операций результаты получаются чрезвычайно громоздкими. Для повышения наглядности выражений Maple 7 выводит их с выделением общих частей выражений и с присваиванием им соответствующих меток. Метки представлены символами IN, где N — номер метки.
Помимо меток при выводе результатов вычислений могут появляться и другие специальные объекты вывода, например корпи RootOf, члены вида О(х"), учитывающие погрешность при разложении функций в ряд, и обозначения различных специальных функций, таких как интегральный синус, гамма-функция и др.
' Примеры такого вывода приведены ниже:
solve(xA7-xA2-l,x):
^ + ^143,^-^143, RootOf(_Z5 + _Z4-_Z2-_Z- 1, index = 1),
RootOf(_Z5 + -Z4 - _Z2 - _Z - 1, index = 2),
RootOf(_Z5 + _Z4 - _Z2 - _Z - 1, index = 3),
RootOf(_Z5 + _Z4 - _Z2 - _Z - 1, index = 4),
RootOf(_Z5 + „Z4 - _Z2 - _Z - 1, index = 5)
> taylor(sin(x),x,5);
х-^х3 + О(х5)
6
> int(sin(x)/x,x); simp!ify(N!);’
Si(x)
nw+1)
Часто встречаются также знаки - для отметки предполагаемых переменных, постоянные интегрирования и другие специальные обозначения. По мере упоминания в тексте таких объектов вывода они будут описаны.
Простые типы данных
Числа и числовые константы
Maple 7 работает с числами следующего типа: целыми (0, 1, 123, -456 и т. д.), рациональными в виде отношения целых чисел (7/9, -123/127 и т. д.), вещественными с мантиссой и порядком (1.23Е5, 123.4567Е-10). Признаком вещественного числа является десятичная точка (запятая). Примеры простых операций с числами приведены ниже:
> 12+34/47;ш
598
47
> -12+34*47;
1586
> 1/3;
1
3
> 1./3;
.3333333333
> 12*10А(-15)*3;
9
250000000000000
> 12.*10А(-15)*3; .3600000000 10"13
Как видно из этих примеров, ввод и вывод чисел имеет следующие особенности:
О для отделения целой части мантиссы от дробной используется разделительная точка;
О нулевая мантисса не отображается (число начинается с разделительной точки);
О мантисса отделятся от порядка пробелом, который рассматривается как знак умножения;
О мнимая часть комплексных чисел задается умножением ее на символ мнимой единицы I (квадратный корень из -1).
Десятичная точка в числах имеет особый статус — указание ее в любом месте числа, даже в конце, делает число вещественным и ведет к переводу вычислений в режим работы с вещественными числами. При этом количеством выводимых после десятичной точки цифр можно управлять, задавая значение системной переменной окружения Digits:
D1gits:=3:1./3;
.333
Digits:=10:ехр(1.):
Digits := 10
2.718281828
Digits:=40:evalf(Pi):
3.141592653589793238462643383279502884197
Для работы с числами Maple 7 имеет множество функций. Они будут рассмотрены в дальнейшем. На комплексной плоскости числа задаются координатами точек (х, у) (рис. 5.1).
1-jSlxД^Д1-jSlxД^Д'QMapte 7 - (gdcews [Server 1Ц
1-jSlx
Д^Д
1-jSlx
Д^Д
<^ Hie £«й View Insert F«y»6t . . j * Options Wmtfow Нф:
Геометрическое представление действительных и комплексных чисел (3,3), (-3,2), z=4+3*l, -z, conjugent(z) и abs(z) >'restart:with(plots): Warning, the name changecoords has been redefined
r> z:=4+3*1;
z := 4 + 3 I
> display (pointplot ({ [3 ,3 ] , [-3,2 ] )) ,
complexplot([0,z],x=-6..6,color=black),
complexplot([0,-z],x=-6..6,color=blue),
complexplot({0,conjugate(z) ) , x=-6 . . 6 ,color=red), polarplot(abs(z),scaling=constrained,color=gold));
Рис. 5.1. Представление обычных и комплексных чисел на плоскости
Для представления чисел на рис. 5.1 используется функция pointplot(11 st), где 11st — список координат точек. Эта функция становится доступной при подключении пакета plots командой wlth(plots). Кроме того, использована функция вывода ряда графических объектов на один график — display (см. далее описание представления комплексных чисел).
С помощью функции convert Maple 7 может преобразовывать числа с различным основанием (от 2 до 36, в том числе бинарные и шестнадцатеричные) в десятичные числа:
> convertCllOOllll". decimal, binary): 207
> convertClAF.C. decimal, hex):
431.7500000
> convertCMaple". decimal. 36): 37451282
При символьных вычислениях Maple 7 реализует точную арифметику. Это значит, что результат может быть получен с любым числом цифр. Однако надо помнить, что идеально точные численные вычисления выполняются только в случае целочисленных операций, например таких, как приведены ниже:
> 201!:
158520231340322891214025006000369197521322331515121825922243249182116\
249442644071926981161086408909404739619639922847404881786200838770\
058117447251615518816153806034311423426764716794777728411569911784\
512291060691664690376713087265508782372723922354551304572738521493\
300705432412738235136532691872618031963366780714364483372318720000\
000000000000000000000000000000000000000000000
> 201!-(201!+123):
-123
Комплексные числа
Maple 7, естественно, может работать с комплексными числами. Мнимая единица в комплексном числе (корень квадратный из -1) обозначается как I. Функции Re(x) и Im(x) возвращают действительную и мнимую части комплексных чисел. Примеры задания комплексного числа и вывода его действительной и мнимой частей представлены ниже:
> 1.25+Р1*!;
1.25+/л
> Re(1.25+Pi*I):
1.25
Im(l.25+P1*I);
Комплексные числа обычно представляют на так называемой комплексной плоскости, у точек которой координата х задает действительную часть комплексного числа, а у (мнимая ось) показывает мнимую часть такого числа. На рис. 5.1 показано задание в виде радиус-векторов комплексного числа z = 4+31, -z и комплексно-сопряженного числа 4-31.
Окружность радиуса abs(z)=Va2 + b2 представляет абсолютное значение комплексного числа z=a+b*I. Она является геометрическим множеством комплексных чисел, образованных концом вращающегося радиус-вектора числа z вокруг его начала в точке (0. 0) комплексной плоскости. Позже мы рассмотрим ряд функций для работы с комплексными числами.
Контроль за числами
Числа могут служить объектами ввода, вывода и константами, входящими в математические выражения. Функция type(x, numeric) позволяет выяснить, является ли х числом. Если является, то она возвращает логическое значение true (истина), а если нет, то false (ложь). Например:
type(2,numeric);
true
typed. 6, numeric);
true
type(P1.numeric): fal$e
typed .numeric); false
type(3/7,numeric);
true
type(3A7,numeric);
true
type(xA2,numeric);
false
Функции type(x, integer), type(x, rational) и type(x, fraction) можно использовать для проверки того, имеет ли х значение соответственно целого числа, рационального числа или простой дроби:
type(123,integer);
true
type(123.'.integer);
false
type(123/456,rational);
true
typed./3, rational);
false -
type(1/2,fraction);
true
typed).5,fraction);
false
Преобразования чисел с разным основанием
В Maple возможна работа с числами, имеющими различное основание (base), в частности с двоичными числами (основание 2 — binary), восьмеричными (основание 8 — octal) и шестнадцатеричными (основание 16 — hex). Функция convert позволяет легко преобразовывать форматы чисел:
convert(12345,binary);
11000000111001
converts.decimal .binary);-
12345'
convert(12345,octal);
30071
convert(123456,hex);
1E240
converts.decimal,hex);
123456
Помимо приведенных вариантов функция convert имеет еще ряд других форм. С ними можно познакомиться с помощью справки по этой мощной функции. В дальнейшем будет приведен ряд других применений этой функции.
Данные множественного типа
Наборы (множества)
Любые выражения могут включаться также в наборы. Такие наборы в виде множеств создаются с помощью фигурных скобок { }:
{a.b.a.a.b.d.e.c.d};"
{a, b, c,e,d}
{10,2+3,4+4,8.5,1};
{1,5,8,10}
{’Hello*,‘my*."friend*};
{friend, Hello, ту}
Отличительная черта множеств — автоматическое устранение из них повторяющихся по значению элементов. Кроме того, Maple 7 расставляет элементы множеств в определенном порядке — числа в порядке увеличения значения, а символы и строки в алфавитном порядке. Для множеств нет строгого математического определения, и мы будем считать их наборами, удовлетворяющими перечисленным выше признакам. .
Списки выражений
Для создания упорядоченных наборов — списков — служат квадратные скобки [ ]:
> [10,2+3,4+4,8,5.1]:
[10,5,8, 8, 5, 1]
Как нетрудно заметить, элементы списков преобразуются и выводятся строго в том порядке, в каком они были заданы. Списки широко применяются для задания векторов и матриц.
В ряде случаев, например при подготовке данных для двумерных графиков, возникает необходимость в подготовке парных списков — скажем, координат точек (х, г/) графика. Для этого можно использовать функцию zip(f, u, v) или zip(f, u, V, d). Здесь f — бинарная функция, u, v — списки или векторы, d — необязательное значение. Примеры применения функции zip даны ниже:
Х:=[1.2,3.4,5]:Y:=[3,2,1,1.5.2.5]:
pare:=(X,Y)->[X,Y];
pare := (X, У) -» [X, У]
CoordXY:=z1p(pare.X.Y,2):
Coort/ХУ := [[1,3], [2, 2], [3, 1], [4, 1.5], [5, 2.5]]
zip((X,Y)->X+Y,X,Y);
[4, 4, 4, 5.5, 7.5]
Рисунок 5.2 показывает применение этих средств для построения точек, представляющих множество действительных чисел на плоскости. Для этого использована функция pointplot из пакета plots.
Массивы, векторы и матрицы
Как отмечалось, важным типом данных являются списки (lists). Они создаются с помощью квадратных скобок, например:
О [1,2,3,4] — список из четырех целых чисел;
О [1.,2.34,5] — список из двух вещественных и одного целого числа;
О [а,Ь,'Привет'] — список из двух символов (переменных) и строковой константы;
О [s1n(x). 2*cos(x),a*2-b] — список из трех математических выражений.
Для создания векторов (одномерных массивов) и матриц (двумерных массивов) служит функция array. Обычно она используется в следующих формах:
О array[a.,b,sl] — возвращает вектор с индексами от а до b и значениями в одномерном списке si;
О array[a. ,b,c.,d.s2] — возвращает матрицу с номерами строк от а до Ь, номерами столбцов от с до d и значениями в двумерном списке s2.
Рис. 5.2. Представление множества чисел на плоскости
Примеры задания вектора и матрицы представлены ниже:
О arrayd. .3,[х,у,х+у]) — создает вектор с элементами .г, у и х + у,
О arrayd. .2,1. .2,[[a,b],[с.d]]) — квадратная матрица I d .
Двумерные списки часто путают с матрицами. Следует помнить, что векторы и матрицы создаются с помощью функции array и являются отдельным типом данных. Элементами векторов и массивов могут быть константы, переменные, выражения, списки и иные объекты. Эти элементы являются индексированными переменными и их положение указывается индексами.
Имеется множество функций для работы со списками, массивами и матрицами. Они будут рассмотрены в дальнейшем. В принципе, размерность массивов, создаваемых списками, не ограничена и массивы могут быть многомерными.
Таблицы
Еще одним<$ажным типом множественных данных являются таблицы. Они задают данные с произвольной индексацией. Для создания таблиц служит функция table, которая при вызове в простейшем виде table[] создает шаблон пустой таблицы:
> tablet]:
table.
Пустая таблица резервирует память под данные. Когда параметром функции tabi е является список выражений, он выводится в естественном порядке расположения элементов таблицы, но с произвольным порядком индексации:
> tablet]:
table^ j
> T:=table({l,2,P1,'string'}):
T := table([ J = 1,2=2, 3=Л, 4 = .vZmzg])
> ПЗ]:
л-
> S:=table(t(one)=l.(two)=2,(three)=3]):
5 := table([cw<? = 1, three = 3, two = 2])
> Stl]:
Sttwo];
2
Stthree];
3
entries(S);
Ш.[3],[2]
indices(S);
[o/ze], ^threeV [Zwo]
В конце приведенных примеров показано, как можно выделить отдельные компоненты таблицы и вывести значения и индексы таблицы с помощью функций entries и indices. Следующие примеры показывают, что таблицу можно использовать для выполнения математических преобразований:
> F := table(tsin=cos.cos=-sin]):
op(op(F)):
[cos = -sin, sin = cos]
Ftcos](Pi/2);
-1
>Ftsin](0):
1
evalf(cos(Pi/2)):
0.
evalf(sin(O));
0.
Следует внимательно присмотреться к этим примерам — они демонстрируют замену функции косинуса на отрицательный синус и синуса на косинус.
Строки и комментарии
Строковые данные
Строки как тип данных — это просто цепочки символов. Они обычно используются для создания текстовых комментариев. Строки должны каким-либо образом выделяться, чтобы Maple не отождествляла их с именами констант и переменных. Для этого строки-комментарии имеют внутренний разделительный признак, который устанавливается при их вводе (нажатием клавиши F5, которое приводит к исчезновению знака >). ■
В других случаях последовательность символов рассматривается как строка, если она заключена в обратные апострофы, то есть в знаки '. Два апострофа подряд формируют апостроф как знак символьной строки, например 'abc"def' дает строку abc'def. Любое математическое выражение может входить в строку, разумеется, оно при этом не выполняется:
'2+2 не всегда "четыре"';
2+2 не всегда 'четыре'
Неисполняемые программные комментарии
Часто возникает необходимость в задании программных комментариев. Любой текст после знака # рассматривается как невыводимый (неисполняемый) программный комментарий — даже если это математическое выражение. При этом он не вычисляется. Например:
2+3;#Это пример. А это выражение не вычисляется: 4+5 5
Комментарии полезны в программах на Maple-языке и обычно используются для объяснения особенностей реализованных алгоритмов.
Константы
Числовые константы
Константы — это простейшие именованные объекты, несущие заранее предопределенные значения. Их имена (идентификаторы) также заранее определены и не могут меняться. Подробную информацию о константах можно найти, исполнив команду ?constant.
Обычные числовые константы не имеют имени и представлены просто числами, типы котореЯх были указаны выше. Можно считать, что именем такой константы является само ее значение. Например, в выражении 2*sin(1.25) числа 2 и 1.25 являются числовыми константами. При этом указание десятичной точки делает
константу действительным числом — например, 2 — это целочисленная константа, а 2., 2.0 или 1.25 — это уже действительные константы.
Строковые константы
Строковыми константами являются произвольные цепочки символов, заключенные в обратные апострофы, например 'Hello', 'Привет', 'Му number' и т. д. Числа, заключенные в апострофы, например '123456', также становятся строковыми константами, которые нельзя использовать в арифметических выражениях. Строковые константы представляют значения строковых переменных. В них можно использовать символы кириллицы при условии, что соответствующий шрифт имеется.
Встроенные в ядро константы
Есть также ряд констант, которые правильнее считать заведомо определенными глобальными переменными:
О false — логическое значение «ложно»;
О gamma — константа Эйлера, равная 0.5772156649...;
О infinity — положительная бесконечность (отрицательная задается как infinity);
О true — логическое значение «истинно»;
О Catalan — константа Каталана, равная 0.915965594...;
О FAIL — специальная константа (см. справку, выдаваемую по команде 7FAIL);
О I — мнимая единица (квадратный корень из -1);
О Pi — представляет константу л = 3.141...
Любопытно, что в этот список не входит основание натурального логарифма — число е. В качестве этой константы рекомендуется использовать ехр(1). Она отображается как жирная прямая буква Е. А exp(l.O) выводит 2.71828... (что и следовало ожидать).
Идентификация констант
Функции type(x, constant) и type(x, realcons) возвращают логическое значение true, если х представляет целочисленную или вещественную константу, и fal se, если х не является константой. Таким образом, эти функции можно использовать для идентификации констант, например:
type(Pi.constant);
true
type(2.constant);
true
type(172,constant):
true
type(.5.constant): true
type(x/y,constant);
false’
type(ln(-Pi),constant):
true
typetinfinity,constant);
true
typed.234,realcons):
true
type(x*y,real cons);
false
type(2+3*I,real cons);
false
Защита идентификаторов констант
Имена встроенных констант (как и имена функций) защищены специальнь^ атрибутом protected. Поэтому (без его снятия) константам нельзя присваивать какие-либо значения:
Р1;
л
Р1:=1;
Error, attempting to assign to "Pi" which is protected
gamma;
Y.
gamma:=10:
Error, attempting to assign to 'gamma' which is protected
Стоит упомянуть о такой экзотической возможности, как задание в Maple 7 собственных констант путем описания алгоритма генерации входящих в константу цифр (это позволяет получать в представлении константы любое число цифр). Большинство пользователей довольствуется применением вместо таких констант обычных переменных подходящего типа. Зато истинные математики соревнуются друг с другом в создании все новых и новых констант и алгоритмов их вычислений. Примеры этого творчества можно найти на сайте фирмы Wateloo Maple.
Переменные
Типы переменных
- Как следует из самого названия, переменные — это объекты, значения которых могут меняться по ходу выполнения документа. Пока мы рассматриваем лишь
глобальные переменные, доступные для модификации значений в любом месте документа. Тип переменной в системе Maple 7 определяется присвоенным ей значением — это могут быть целочисленные (integer), рациональные (rational), вещественные (real), комплексные (complex) или строчные (string) переменные и т. д. Переменные могут также быть символьного типа (их значением является математическое выражение) или типа списка (см. далее). Для явного указания типа переменных используется конструкция:
name::type.
где name — имя (идентификатор) переменной, type — тип переменной, например целочисленный (integer), вещественный с плавающей точкой (float), с неотрицательным значением (nonneg), комплексный (complex) и т. д.
Идентификаторы (имена) переменных
Переменные задаются своим именем — идентификатором, который должен начинаться с буквы и быть уникальным. Это значит, что ключевые слова языка Maple нельзя использовать в качестве имен переменных. Хотя имена ряда команд и функций можно использовать в качестве идентификаторов переменных, делать это крайне нежелательно. Ограничений на длину идентификатора практически нет — точнее, она не должна превышать 524 275 символов! Так что сложностей с подбором идентификаторов для переменных у вас не будет.
Имена переменных могут содержать одну букву (например, х, Y или Z) либо ряд букв*(Хт1п или Хтах). В любом случае имя переменной надо начинать с буквы. Некоторые символы, например знак _, могут использоваться в именах (например, Var_l, Var_2). Нельзя, однако, вводить в имена переменных знаки, обозначающие операторы, — например, а/b или а-b будет истолковано как деление а на b или вычитание из переменной а переменной Ь.
Имена могут задаваться в обратных апострофах. При этом они просто тождественны именам без апострофов:
> varl:=123;var2:='Hel1 о*:■
varl := 123
var2 := Hello
> "varl*:'var2':
123
Hello'
Строчные и прописные буквы в идентификаторах различаются, так что Vari и varl — это разные переменные.
Для проверки предполагаемого имени на уникальность достаточно выполнить команду ?name, где name — выбранное имя. Если при этом откроется окно справки с этим именем, значит, оно уже использовано в Maple. Лучше воздержаться от его применения, так как связанная с этим именем команда или функция перестает работать, как только это имя закрепляется за какой-либо переменной.
Присваивание переменным значений
Поскольку Maple 7 прежде всего система символьной математики, то по умолчанию любые переменные рассматриваются как объекты символьного типа. Благодаря этому такие переменные могут фигурировать в математических выражениях (таких, как sin(x)/x) без их предварительного объявления. В отличие от обычных языков программирования такое использование переменных не влечет за собой появления сообщений об ошибках и является более естественным.
Для присваивания переменным конкретных значений используется комбинированный символ присваивания «:=», например:
О п:=1 — переменной п присваивается целочисленное значение 1;
О х:=123.456 — переменной х присваивается вещественное значение 123.456;
О у:=17/19 — переменной у присваивается рациональное значение 17/18;
О name:='Piter' — переменной name присваивается строковое значение 'Piter';
О ехрг:=2*Р1/3 — переменной ехрг присваивается значение выражения 2л/3;
О V:=[l,2,3] — переменной V присваивается значение списка чисел [1,2,3];
О М:=[[1,2,3],[4,5,6]] — переменной М присваивается значение двумерного массива;
О f:=x->xA2 — переменной f присваивается значение функции пользователя f(x)=xA2.'
Правая часть выражения присваивания определяет тип переменной. Например, она может быть целочисленной, действительной, строковой, индексированной (элемент массива) и т. д.
Отмена операции присваивания и команда restart
Переменная, имеющая какое-либо значение, занимает в памяти намного больше места, чем неопределенная переменная. У последней место в памяти занимают только символы идентификатора. Поэтому нередко целесообразно отменить присваивание у тех переменных, которые в дальнейшем можно не использовать. Это может понадобиться и в том случае, когда какую-либо переменную с численным или иным значением нужно использовать просто как неопределенную переменйую.- ■
Рассмотрим следующий пример:
х:=10;
х := 10
х;
Ю
int(xA2.x);
Error, (in int) wrong number (or type) of arguments
Здесь не удалось вычислить интеграл с подынтегральной функцией хА2 из-за того, что переменная х уже определена ранее как целочисленная переменная со значе-
нием 10, тогда как для вычисления интеграла она должна быть необъявленной или строковой (убедитесь в этом сами).
Для отмены присваивания надо использовать следующее выражение:
х:='х';
X = Х
Итак, заключение имени переменной в прямые апострофы ликвидирует присваивание. Так что запись х:='х’ означает, что переменной х возвращается статус неопределенной переменной. Теперь можно вычислить интеграл:
1nt(xA2,x);
Можно сделать переменную х неопределенной и с помощью выражения вида x:=evaln(x). Это поясняет следующий пример:
х:=123;
х-.= 123
x:=evaln(x);
х := .г
int(xAn,x);
и + 1
Для отмены присваивания значений разом всем переменным (и введенным функциям пользователя) можно использовать команду restart. Следующий пример поясняет ее применение:
х:=5:
х := 5
хА2;
25
restart;
х;
х
хА2;
X2
Следует отметить, что команда restart отменяет все предшествующие определения, что иногда чревато осложнениями. Применяйте ее только тогда, когда вы уверены, что предшествующая заданной часть документа (или даже ряда документов) действительно не важна.
Важно отметить, что Maple сохраняет в памяти все определения и присваивания, которые были сделаны во всех загруженных в систему документах. Поэтому результаты вычислений в текущем документе могут зависеть от определений в других документах. Команда restart позволяет исключить эту зависимость.
Придание переменным статуса предполагаемых
В большинстве расчетов пользователей Maple вполне удовлетворяет статус переменных, соответствующий присвоенным им значениям. Однако серьезные расчеты предполагают, что переменные могут иметь определенные ограничения — например, они не должны принимать отрицательных значений при обычном вычислении квадратного корня или логарифма числа.
Для придания переменным статуса предполагаемых используется функция assume: assume(x.prop):
где х — переменная, имя или выражение, prop — свойство.
Следующие примеры показывают применение функции assume:
restart:
assume(x,positive):
x;
x~
s:=x->sqrt(x):
:= sqrt
S(2);
V2
S(2.);
1.414213562
s(-2);
is(x,positive);
true
is(x.negative);
false'
about(x);
Originally x, renamed x~:
is assumed to be: RealRange(Open(0),infinity)
Обратите внимание, что в этом примере переменная х помечена как положительная и при выводе сопровождается знаком тильды ~, как бы предупреждающим нас о ее особом статусе. Это не означает, что она не может принять отрицательное значение. Однако с помощью функции is можно убедиться в ее особом статусе и при необходимости программным путем исключить вычисления для х <0. Кроме того, о свойствах переменной можно узнать с помощью функции about(name).
Иногда к уже имеющимся признакам надо добавить новые. Для этого используется функция additionally:.
assumeta,nonnegative);
additionally(a<=0):
about(a):
Originally a, renamed a~:
is assumed to be: 0
В этом примере переменной а вначале задан признак положительности, а затем а<=0. Оба признака удовлетворяются только при а = 0, что и подтверждает вывод информации о статусе этой переменной функцией about (а).
Предполагаемую переменную можно также изменить путем присваивания ей нового значения, противоречащего ее статусу:
а:=123;
a := 123
about(a);
123:
All numeric values are properties as well as objects. .
Their location in the property lattice is obvious, in this case integer.
Для отмены переменным статуса предполагаемых используются те же приемы, что и при отмене присвоенного значения. Например, запись х:=’х’ отменяет статус предполагаемой для переменной х.
Что нового мы узнали?
В этом уроке мы научились:
О Использовать Maple-язык и его синтаксис.
О Работать с выражениями.
О Задавать простые типы данных.
О Задавать данные множественного типа.
О Задавать данные строкового типа.
О Писать программные комментарии.
О Задавать переменные и определять их тип.
О Использовать константы различного типа.
) УРОК) УРОКВстроенные операторы и функции
) УРОК
) УРОК
Операторы и операнды
Математические функции
Операторы и функции для работы с векторами и матрицами
Функции для работы со строковыми данными
Операторы и операнды
Виды операторов
Операторы во входном языке и языке программирования Maple служат для конструирования выражений. Формально операторы представлены своими идентификаторами в виде специальных математических знаков, слов и иных имен. Операторы, как это вытекает из их названия, обеспечивают определенные операции над данными, представленными операндами.
Имеется пять основных типов операторов:
О binary — бинарные операторы (двумя операндами);
О unary — унарные операторы (с одним операндом); -
О nullary — нульариые операторы (без операнда — это одна, две и три нары кавычек);
О precedence — операторы старшинства (включая логические операторы);
О functional — функциональные операторы.
Для просмотра операторов и их свойств можно использовать следующие команды:
> ?operators[binary]:
> ?operators[unary]:
?operators[nullary]:
?operators[precedence];
?operators[functional]:
А для изучения примеров применения операторов нужно задать и исполнить команду:
> ?operators[examples]:
Команда:
?define;
позволяет ознакомиться с функций define. С ее помощью можно определять новые операторы.
Бинарные (инфиксные) операторы
Бинарные (инфиксные) операторы используются с двумя операндами, обычно размещаемыми по обе стороны от оператора. В ядро Maple 7 включено около трех десятков бинарных операторов. Основные из них перечислены в табл. 6.1.
Таблица 6.1. Бинарные операторы
Обозначение
Оператор
+
Сложение
*
Вычитание‘
Умножение
/
** илиЛ mod
$
Деление
Возведение в степень
Остаток от деления
Оператор последовательности
Разделительная точка
@ @@
Оператор композиции
Повторение композиции Разделитель выражений Присваивание
Задание интервала
Разделитель выражений
&*
&<string>
II
Некоммутативное умножение
Нейтральный оператор
Конкатенация (объединение)
Примеры использования бинарных операторов:
2+3-(-4):
9
[2А3,2**3]:
[8,8]
7 mod 5;
2
[3@2.3@@2]:
[з,з(2)]
[х@х,х@@х]: г (2)(х)
[X , X j
[х$3,х$4];
[х, X, X, X, X, X, х]
int(xA2,x=l..4);
21
S:='Hello'11' my *11* friend!*;
S := Hello my friend!■
Оператор композиции @@ может использоваться для создания сложных функций, содержащих цепные дроби:
> f:-a->l/(l+a);(f@@3)(a):
а + 1
1
1
1
я + 1 4
> f(5);
1
6
> д:=а->1/(1+аА2);(д@@3)(а);
1
g := я -> —— я2 + 1
1111^+1^+1т +1т +1
1
1
1
1
^+1
^+1
т +1
т +1
> д(2);
5
А вот еще один пример применения этого оператора для составления цепного радикала и вычисления ряда таких цепочек в цикле:
f :*= х -> sqrt( 1 + х):
/:=х/1+х
>f(f(0D:
72
>f(f(f(O)));
71 + 72
(f@@10)(x):
>for k from 1 to 10 do (f@@k)(O) - evalf((f@@k)(0)): od: 1 = 1.
72 = 1.414213562
71 + 72 = 1.553773974
71 +71 + Ж = 1.598053182
71+71+/1+72 = 1.611847754
71 +71 +71+71 +72 = 1.616121206
Операторы объединения, пересечения и исключения для множеств
Для данных типа «множество» определены следующие бинарные операторы:
О union — включает первый операнд (множество) во второй;
О intersect — создает множество, содержащее общие для операндов элементы;
О minus — исключает из первого операнда элементы второго операнда.
В любом случае, в результирующем множестве устраняются повторяющиеся элементы. Действие этих операторов поясняют следующие примеры:
(a.a.b.c.c.d) union (e.e.f.g):
{Д g, a, b, e,c,d}
(a.a.b.c.c.d) intersect (a.c,e.e.f.g):
{й,с}
(a.a.b.c.c.d) minus (a.d);
Напоминаем, что эти операторы заданы ключевыми словами. Обратите внимание на то, что в Maple 7 результат применения оператора union представлен членами, расположенными в довольно произвольном порядке.
Унарные арифметические операторы
Унарные операторы используются с одним операндом. Они могут быть префиксными, если оператор стоит перед операндом, и постфиксными, если он стоит после операнда. К унарным относятся семь операторов, приведенных в табл. 6.2.
Таблица 6.2. Унарные операторы
Обозначение
Оператор
+ '
Унарный плюс (префикс)
1
Унарный минус (префикс)
Факториал (постфикс)
$
Десятичная точка (префикс или постфикс) Последовательность (префикс)
продолжение ^
Таблица 6.2. (продолжение)
ОбозначениеОператор
notЛогическое отрицание (префикс)
&strtng Метка (префикс)
Примеры применения унарных операторов:
> [-х,х+(-х),х+(+х)]:
[-х, 0, 2 х]
> 100!;
>
> .234:
933262154439441526816992388562667004907159682643816214685929638952175\
999932299156089414639761565182862536979208272237582511852109168640\ 00000000000000000000000
.234
> 2.34:
2.34
> 2*»;
4.68
> а$3:
а, а, а
Оператор % и команда history
Мы уже неоднократно отмечали, что оператор % обеспечивает подстановку в строку ввода (или в выражение) последнего результата операции, И — предпоследнего и XXX — третьего с конца. Есть еще одна иногда полезная возможность проследить за ходом частных вычислений внутри документа — применение команды- функции history. В Maple V R5 это была библиотечная функция, которая требовала вызова из библиотеки. В Maple 7 такого вызова уже не требуется.
Функция history(expr) или historyO создает список переменных вида 01, где индекс i = 1, 2, 3.... Этим переменным можно присваивать значения в диалоговом режиме и отслеживать результаты вычислений. Команда off:, вводимая после использования данной функции, завершает работу с ней. Ниже представлен диалог с применением функции history:
> historyO:
01 := 2:
2
02 := s1n(l.):
.8414709848■
03 := 01*02:
1.682941970
04 :- off:
>
history
К сожалению, полученный результат и значения глобальных переменных 01 -после завершения работы с данной функцией становятся недоступными, так что практической пользы от ее применения не так уж много. Разумеется, внутри блока history вы можете присвоить результат другой переменной и он сохранится (попробуйте это сделать сами). При каждом очередном применении функции history нумерация переменных 01 начинается с начала, так что какой-либо преемственности при использовании этой функции нет.
Функция history может применяться в качестве средства начальной отладки вычислений. Внутри фрагмента программы, заданного функцией history, можно задавать построения графиков. Например, при исполнении фрагмента программы:
> historyO;
01 := sin(x);
sin(x)
02 := plot(01,x=0..20):
03 := off:
будет построен график синусоиды. В целом работа с функцией history отличается не слишком высокой стабильностью, так что возможности этой функции пока остаются не слишком востребованными. .
Логические операторы
Логические (или булевы) операторы указывают на логическую связь величин (или выражений). Прежде всего они представлены рядом бинарных операторов, приведенных в табл. 6.3.
Таблица 6.3. Бинарные логические операторы
Обозначение
Оператор
<
Меньше
Меньше или равно
>
Больше
>=
Большее или равно
=
Равно
О
Не равно
and
Логическое «и»
or
Логическое «или»
Конструкции с этими операторами, такие как х=у, возвращают логическое значение — константу true, если условие выполняется, и fal se, если оно не выполняется. Кроме того, к логическим операторам относится унарный оператор not — он представляет логическое «нет». Для возврата логических значений выражений с этими операторами используется функция еуа!Ь(условие), например:
5<2:
5<2
evalbd);
false
evalb(4=2+2);
true
evalb(3<>3):■■
false
evalb(not(K)):
true
evalb(3=3 and 4>2):
true
evalb(3=3 or 2<0);
true
evalb(x*y=y*x);
true
Логические операторы часто используются в управляющих структурах программ, составленных на языке программирования Maple. Такое их применение мы рассмотрим позже.
Специальные типы операторов
Операторы в Maple описывают операции по преобразованию данных, в частности выражений. Последние, в свою очередь, можно отнести к данным абстрактного типа. Могут быть описаны следующие типы операторов:
О неопределенные (f);
О нейтральные (&);
О процедурные;
О функциональные;
О композиционные (0).
Оператор относится к неопределенным, если он не был заранее определен. Такой оператор не выполняет никаких действий и просто повторяется в строке вывода:
restart:f(1.2,a);.
Д1,2,а)
Композиционные операторы (на базе знака @) мы уже применяли. Другие типы операторов рассмотрены ниже.
Функциональные операторы
Функциональные операторы Maple-языка являются альтернативами функций и записываются в двух формах.
НотацияЗапись оператора
«arrow» (стрелочная)vars -> result
«angle bracket» (в угловых скобках)«result | vars>
Данные операторы могут использоваться для реализации подстановок. Например, запись х - > хА2 означает подстановку хА2 на место переменной х. Возможны и такие подстановки в множественной форме:
(х.у) -> хА2 + уА2
х -> (2*х. 3*хА4)
(x.y.z) -> (х*у. y*z)
Функциональный оператор в Maple 7 часто используется для задания функций пользователя, которое будет рассмотрено несколько позднее.
Нейтральные операторы, определяемые пользователем
Для создания нейтральных (задаваемых пользователем и в момент задания неисполняемых) операторов, определяемых пользователем, служит знак амперсанда — &. Синтаксис нейтрального оператора следующий:
Sname
Имя оператора строится по правилам задания допустимых идентификаторов. Также в качестве имени может быть использована последовательность (один и более) специальных символов. В последовательности специальных символов не должно быть букв, цифр, подчеркивания, а также следующих символов:
&|(){}[]::''# «перевод строки> <пробел>
Максимальная длина имени — 495 символов. Нейтральные операторы могут быть унарными и бинарными. Примеры задания бинарного нейтрального оператора приведены ниже:
х&/у;.
x&J у
z+x&/y:.
z + (x&/y)
&/(х.у):
X&J у
х&/у-&/(х,у);
О
Определение операторов с помощью оператора define
Большие возможности для создания операторов с заданными свойствами предоставляет специальный оператор define. Он записывается в следующей форме: definetoper, propertyl, property?, -)
Здесь орег — имя определяемого оператора, property!, property2 и т. д. — наименования свойств. В принципе, оператор define позволяет создавать операторы с новыми свойствами, которые отсутствуют у операторов и функций, встроенных в систему.
Могут быть указаны следующие свойства операторов:
О unary — унарный оператор;
О binary — бинарный оператор;
О diff — дифференциальный оператор;
О linear — линейный оператор;
О multilinear — множественный линейный оператор;
О flat — ассоциативный оператор, для которого/(х/(г/,2)) = f(J(x,y).z) = Rx,yz)\ О orderless — коммутативный симметричный оператор, такой что Rx,y) = Ry А О antisymmetric — асимметричный оператор, такой что Rx,y^ = -Ryycy
О zero — нулевой оператор (например, V:=Vector(5,shape=zero) задает вектор с 5 нулевыми элементами);
О identity — единичный оператор (например, M:=Matrix(3,3,shape=identity) задает единичную матрицу).
Следующий пример задает линейный оператор L:
defined, 11 near);
L(a*x+b*xA2+c*xA3);
L( а х) + L( b х1) + L( с x3)
Для задания некоторых свойств операторов можно использовать уравнения и соотношения вида f(x)=value. Чтобы свойство выполнялось для всех аргументов (или некоторого класса аргументов), используется описание focal 1. Так, приведенный ниже пример задает оператор F, который вычисляет и-е число Фибоначчи (и > 2):
restart;
define(fib,fib(0)=l,fib(l)=l,f1b(n::posint)=fib(n-l)+fib(n-2));
fib(6);
13
fib(lO);
89
fib(20):
10946
time(fib(20));
3.414
Обратите внимание на то, что соотношения fib(O)=l и fib(l)=l задают начальные значения целочисленного массива чисел Фибоначчи, которые нужны для реализации обычного итерационного алгоритма их нахождения, — напоминаем, что очередное число Фибоначчи равно сумме двух предшествуюшх чисел Фибоначчи.
Последний пример иллюстрирует применение системной функции time для определения времени, затраченного на вычисление значения функции fib(20). Это время задается в секундах. Нетрудно заметить, что даже для ПК с процессором Pentium II 350 МГц это время оказалось довольно значительным (более 3 с), поскольку каждое новое число Фибоначчи вычисляется заново.
Математические функции
Понятие о встроенных функциях
Maple 7 имеет полный набор элементарных математических функций. Все они, кроме арктангенса двух аргументов, имеют один аргумент х, например sin(x). Он может быть целым, рациональным, дробно-рациональным, вещественным или комплексным числом. В ответ на обращение к ним элементарные функции возвращают соответствующее значение. Поэтому они могут быть включены в математические выражения. Все описанные здесь функции называются встроенными, поскольку они реализованы в ядре системы.
Как правило, если аргументом функции является фундаментальная константа, целое или рациональное число, то функция выводится с таким аргументом без получения результата в форме действительного числа с плавающей точкой. Например: > sintPii;
0
sin(l);
sin( 1)
exp(l);
е
ln(2);
1П(2)
ln(P1);■
1п(л)
arcsin(l/2):
1 б"
> arcsin(l/3);
arcsin I - I
Нетрудно заметить, что есть и исключения из этого правила — например, на экране монитора ехр(1) будет выведено как константа е, а значение функции arcsinU/ 2) все же вычислено и результат получен как 1/6 от константы Pi. Вообще говоря, если результат выражается через фундаментальную математическую константу, то он будет вычислен и представлен ею. В противном случае функция с целочисленным и рациональным аргументом или с константой просто повторяется в строке вывода в установленном для этой строки формате.
Для получения подробной информации о некоторой произвольной функции <f> достаточно задать команду:
?<f>
Ввиду общеизвестности элементарных функций мы не будем обсуждать ни их свойства, ни допустимые для них пределы изменения аргумента.
Некоторые целочисленные функции и факториал
Ниже представлены наиболее распространенные целочисленные функции Maple 7, используемые в теории чисел:
О factori al (n) — функция вычисления факториала (альтернатива — оператор !);
О iquo(a,b) — целочисленное деление а на Ь;
О irem(a,b) — остаток от деления а на Ь;
О IgcdCa b) — наибольший общий делитель;
О lcm(a,b) — наименьшее общее кратное.
Примеры применения:
> Efactorial(10).10!::
[3628800,3628800]
> iquo(234,5);
46
> irem(234,5):
4'
> lcm(124,3);
372
> [3!!, (3!)!:;
[720, 720]
В последних двух примерах применения оператора факториала полезно обратить внимание, что запись n! 1 означает лишь (п!)!, а не и!! = 2*4*6*..., то есть произведение четных целых чисел. Действие других функций очевидно.
Тригонометрические функции
В ядре Maple определены следующие тригонометрические функции:
О sin — синус;
О cos — косинус;
О tan — тангенс;
О sec — секанс;
О esc — косеканс;
О cot — котангенс.
Все эти функции являются периодическими (с периодом 2л, кроме тангенса и котангенса, у которых период равен л) и определены для действительного и комплексного аргументов. Примеры вычислений;
> [sin(l),sin(l.)];
[sin(l), .8414709848]
> s1n(x)A2+cos(x)A2;
sin(x)2 + cos(x)2‘
> simplify!*):
1
simplify(tan(x)*cos(x));
sin(x)
sec(2+3*I);
sec(2 + 3/)
sec(2.+3*I);
-.04167496441 + .09061113720 I
> cot(I):■
-/ coth( 1)
> csc(I):
-/csch( 1)
Многие свойства тригонометрических функций можно оценить, рассматривая их графики. Для построения таких графиков можно использовать функцию pl ot. На рис. 6.1 сверху показаны графики ряда тригонометрических функций.
Рис. 6.1. Графики ряда тригонометрических и обратных тригонометрических функций
ПРИМЕЧАНИЕПРИМЕЧАНИЕИз графиков тригонометрических функций (рис. 6.1, сверху) хорошо видна их периодичность. Функция тангенса имеет разрывы, и ее значение в этих точках в пределе равно бесконечности. Поэтому для наглядного ее представления вместе с функциями синуса и косинуса (их экстремальные значения по модулю равны 1) приходится вводить ограничения на масштаб графика по оси у.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Обратите внимание на параметр color=black в функции построения графиков plot. Он задает построение всех графиков черным цветом, что сделано для более четкой печати их в книге. Если убрать этот параметр, то графики разных функций будут строиться с использованием разных цветов, что облегчит их различение. Другие способы выделения отдельных кривых будут описаны в дальнейшем при описании графических возможностей системы Maple 7.
Обратные тригонометрические функции
К обратным тригонометрическим относятся следующие функции:
О arcsin — арксинус;
О arccos — арккосинус;
О arctan — арктангенс;
О arcsec — арксеканс;
О arccsc — арккосеканс;
О arccot — арккотангенс.
Примеры вычислений:
arcsinl.2): .2013579208
arcsin(2.);
1.570796327- 1.316957897/
evalc(arcs1п(5)):
|л-Лп(5 + 2./б)
arccos(l/2);
1
зл
arctan(l);
1
4 Л
> arccot(O):
1
2 Л
К этому классу функций принадлежит еще одна полезная функция: arctan(y.x) - argument(x+I*y)
Она возвращает угол радиус-вектора в интервале от -Р1 до Pi при координатах конца радиус-вектора х. и у (см. Примерщиже):
> arctan(2..3);
.5880026035
Графики ряда обратных тригонометрических функций показаны на рис. 6.1.
Гиперболические функции
Гиперболические функции представлены следующим набором:
О sinh — гиперболический синус;
О cosh — гиперболический косинус;
О tanh — гиперболический тангенс;
О sech — гиперболический секанс;
О csch — гиперболический косеканс;
О coth — гиперболический котангенс.
Примеры применения гиперболических функций представлены ниже:
[sinh(l.),cosh(l.).tanh(l.)];
[1.175201194, 1.543080635, .7615941560]
[sech(l.),csch(l.),coth(l.)J;
[.6480542737, .8509181282, 1.313035286]
На рис. 6.2 сверху представлены графики гиперболического синуса, косинуса и тангенса. По ним можно судить о поведении этих функций.
Рис. 6.2. Дафики основных гиперболическим и Обратных гиперболических функций
ПРИМЕЧАНИЕ В отличие от тригонометрических гиперболические функции не являются периодиче
скими. Функция гиперболического тангенса имеет симметричную кривую с характерными ограничениями. Поэтому она широко используется для моделирования передаточных характеристик нелинейных систем с ограничением выходного параметра при больших значениях входного параметра.
Обратные гиперболические функции
Как и тригонометрические функции, гиперболические имеют свои обратные функции:
О arcsinh — гиперболический арксинус;
О arccosh — гиперболический арккосинус;
О arctanh — гиперболический арктангенс;
О arcsech — гиперболический арксеканс:
О arccsch — гиперболический арккосеканс:
О arccoth — гиперболический арккотангенс.
Примеры применения:
> [arcs!nh(1.),arccoshC1.),arctanhC1.)];
[.8813735870, 0., Float( = ) +Float(undefined)/]
Графики обратных гиперболических синуса, косинуса и тангенса представлены на рис. 6.2 снизу.
Степенные и логарифмические функции
К степенным и логарифмическим относятся следующие функции системы Maple 7:
О ехр — экспоненциальная функция;
О iloglO — целочисленный логарифм по основанию 10 (возвращает целую часть от логарифма по основанию 10);
О Ilog — целочисленный логарифм (библиотечная функция, возвращающая целую часть от натурального логарифма);
О In — натуральный логарифм;
О log — логарифм по заданному основанию (библиотечная функция);
О loglO — логарифм по основанию 10;
О sqrt — квадратный корень.
Примеры применения:
> х:-2:
х := 2
[exp(x),ln(x),log(x),loglO(x)];
е2, ln(2),ln(2), ln((W)
х:=2.0;
х := 2.0
[exp(x),ln(x),log(x),loglO(x)J;
[7.389056099, .6931471806, .6931471806, .3010299957]
ilog[2](100):
6
readlib(loglO):
proc (л) ... end proc
1og!0(10000.):
4.000000000
evalc(sqrt(2+3*D);
^ /4 + 2/1У + ^ 7 / -4 + 2 /ТУ
sqrt(99+l);
10
Графики ряда алгебраических функций показаны на рис. 6.3.
Рис. 6.3. Графики ряда алгебраических функций
На рис. 6.3 показаны также графики синусоиды с экспоненциально падающей й нарастающей амплитудой. Читателю рекомендуется попробовать свои силы в построении графиков комбинаций различных функций.
Функции с элементами сравнения
В алгоритме вычисления ряда функций заложено сравнение результата с некоторым опорным значением. К таким функциям относятся:
О abs — абсолютное значение числа;
О ceil — наименьшее целое, большее или равное аргументу;
О floor — наибольшее целое, меньшее или равное аргументу;
О frac — дробная часть числа;
О trunc — целое, округленное в направлении нуля;
О round — округленное значение числа;
О signum (х) — знак х (-1 при х < 0, 0 при х = 0 и +1 при х > 0).
Для комплексного аргумента х эти функции определяются следующим образом:
О trunc(x) = trunc(Re(x)) + /*trunc(Ini(x));
О round(x) = round(Re(x)) + /*round(Im(x));
О frac(x) = frac(Re(x)) + /*frac(Im(x)).
Для введения определения значения floor(x) от комплексного аргумента прежде всего запишем а = Re(x) - floor(Re(x)) и b = Im(x) - floor(lm(x)). Тогда floor(x) = floor(Re(x)) + 7*floor(Im(x)) + X, где
0,
1,
Наконец, функция ceil для комплексного аргумента определяется следующим образом:
cell(х) = -floor(-x)
Примеры применения:
[ceil(Pi),trunc(P1),floor(Pi),frac(P1),round(Pi)]: [4,3,3, л-3,3]
frac(evalf(PD): .141592654
[cei1(-Pi),trunc(-Pi),f1oor(- Pi),round!■Pi)]:
[-3, -3,-4, -3].
trunc(2.6+3.4*I);
2 + 3/
> [signum(-Pi),signum(O).signumCPi)]:
[-1,0,1]
Функции комплексного аргумента
Для комплексных чисел и данных, помимо упомянутых в предшествующем разделе, определен следующий ряд базовых функций:
О argument — аргумент комплексного числа;
О conjugate — комплексно-сопряженное число;
О Im — мнимая часть комплексного числа;
О Re — действительная часть комплексного числа;
О polar — полярное представление комплексного числа (библиотечная функция).
Примеры применения:
z:=2+3*1: z:=2+3/
[Re(z),Im(z),abs(z)];
[2,3, /13]
> [argument(z),conjugate(z)]:
arctan — ,2-3/
I2) -
readlib(polar):
proc ^r";.algebraic, th -.-.algebraic) ... end proc
polar(z):
, (. ( 3
polar VI3,arctan —
polar(-3.,Pi/2):
polar -3.,-л 2
Специальные математические функции
Специальные математические функции обычно являются решениями линейных дифференциальных уравнений различного типа и выражаются в виде интегралов, не представимых через элементарные функции. Maple 7 имеет практически полный набор таких функций. Их представления можно найти в справочной литературе, а также в справочной базе данных Maple. В связи с этим ограничимся приведением названий наиболее важных специальных функций:
О AiryAi (Bi) — функции Эйри;
О AngerJ — функция Ангера;
О bernoulli — числа и полиномы Бернулли;
О Bessel I (J, К, Y) — функции Бесселя разного, рода;
О Beta — бета-функция;
О binomial — биноминальные коэффициенты;
О Chi — интегральный гиперболический косинус;
О Ci — интегральный косинус;
О csgn — комплексная сигнум-функция;
О dilog — дилогарифм;
О Dirac — дельта-функция Дирака;
О Ei — экспоненциальный интеграл;
О El 1 ipticCE (СК, СР1, Е, F, К, Modulus, Nome, Pi) — эллиптические интегралы;
О erf — функция ошибок;
О erfc — дополнительная функция ошибок;
О euler — числа и полиномы Эйлера;
О Fresnel С (f, g, S) — интегралы Френеля;
О GAMMA — гамма-функция;
О GaussAGM — арифметико-геометрическое среднее Гаусса;
О HankelHl (Н2) — функции Ганкеля;
О harmonic — частичная сумма серии гармоник;
О Heaviside — функция Хевисайда;
О JScobiAM (CN, CD, CS, DN, DC, DS, NC, ND, NS, SC, SD, SN) — эллиптические функции Якоби;
О JacobiThetal (2, 3, 4) — дзета-функции Якоби;
О Jacobi Zeta — зет-функция Якоби;
О KelvinBer (Bel, Her, Hei, Ker, Kei) — функции Кельвина;
О Li — логарифмический интеграл;
О 1 nGAMMA — логарифмическая гамма-функция;
О Mei jerG — G-функция Мейджера;
О pochhammer — символ Похгамера;
О polylog — полилогарифмическая функция;
О Psi — дигамма-функция;
О Shi — интегральный гиперболический синус;
О Si — интегральный синус;
О Ssi — синусный интеграл смещения;
О StruveH (L) — функции Струве;-
О surd — неглавная корневая функция;
О LambertW — W-функция Ламберта;
О WeberE — Е-функция Вебера;О WeierstrassP — P-функция Вейерштрасса;О WeierstrassPPrime — производная P-функции Вейерштрасса;•О WeierstrassZeta — зета-функция Вейерштрасса;О WeierstrassSigma — сигма-функция Вейерштрасса;О Zeta — зета-функция Римана и Гурвица.Ввиду большого числа специальных функций и наличия множества примеров их вычисления в справочной системе Maple 7 ограничимся несколькими примерами вычисления наиболее распространенных специальных функций. По их подобию читатель может опробовать в работе и другие специальные функции. На рис. 6.4 даны примеры применения ряда специальных функций. Обратите особое внимание на первый пример. Он показывает, как средствами системы Maple 7 задается определение функций Бесселя. Показано, что функции Бесселя являются решениями заданного на рис. 6.4 дифференциального уравнения второго порядка. Maple 7 способна вычислять производные и интегралы от специальных функций.О WeberE — Е-функция Вебера;О WeierstrassP — P-функция Вейерштрасса;О WeierstrassPPrime — производная P-функции Вейерштрасса;•О WeierstrassZeta — зета-функция Вейерштрасса;О WeierstrassSigma — сигма-функция Вейерштрасса;О Zeta — зета-функция Римана и Гурвица.Ввиду большого числа специальных функций и наличия множества примеров их вычисления в справочной системе Maple 7 ограничимся несколькими примерами вычисления наиболее распространенных специальных функций. По их подобию читатель может опробовать в работе и другие специальные функции. На рис. 6.4 даны примеры применения ряда специальных функций. Обратите особое внимание на первый пример. Он показывает, как средствами системы Maple 7 задается определение функций Бесселя. Показано, что функции Бесселя являются решениями заданного на рис. 6.4 дифференциального уравнения второго порядка. Maple 7 способна вычислять производные и интегралы от специальных функций.iQ Maple Z |Sf1 mws • (Scivoi 1ЦiQ Maple Z |Sf1 mws • (Scivoi 1ЦS о* £.41 Xми ^”*’ ^«"МS о* £.41 Xми ^”*’ ^«"МПримеры применения специальных функций (часть 1)> restart;> eql:-xA2*diff(y(x),х$2)+x*diff(у(х),х)+(хЛ2-рЛ2)*у(х)-0;Примеры применения специальных функций (часть 1)> restart;> eql:-xA2*diff(y(x),х$2)+x*diff(у(х),х)+(хЛ2-рЛ2)*у(х)-0;,2eql := х,2eql := ха2|—-у(х) + х dxZIа2|—-у(х) + х dxZI11+ (*-р )уМ- о11+ (*-р )уМ- о> al:-dsolve(eql,y(x));al :=у(х) - _С1 BesseU(p, х) + _С2 BesseIY(p, х)> al:-dsolve(eql,y(x));al :=у(х) - _С1 BesseU(p, х) + _С2 BesseIY(p, х)> BesselJ(0,0.5) ;> BesselJ(0,0.5) ;.9384698072.9384698072> GAMMA(0.5) ;> GAMMA(0.5) ;1.7724538511.772453851> diff(BesselJ(p,x),х$2);> diff(BesselJ(p,x),х$2);' (р + l)BesseMQ> + 1,х) -BesseU(p,x) +' (р + l)BesseMQ> + 1,х) -BesseU(p,x) +p BesseU(p,x)p BesseU(p,x)(р BesseU(p,x)-BesseU(p + 1,х) + ^(р BesseU(p,x)-BesseU(p + 1,х) + ^xx22
О WeberE — Е-функция Вебера;
О WeierstrassP — P-функция Вейерштрасса;
О WeierstrassPPrime — производная P-функции Вейерштрасса;•
О WeierstrassZeta — зета-функция Вейерштрасса;
О WeierstrassSigma — сигма-функция Вейерштрасса;
О Zeta — зета-функция Римана и Гурвица.
Ввиду большого числа специальных функций и наличия множества примеров их вычисления в справочной системе Maple 7 ограничимся несколькими примерами вычисления наиболее распространенных специальных функций. По их подобию читатель может опробовать в работе и другие специальные функции. На рис. 6.4 даны примеры применения ряда специальных функций. Обратите особое внимание на первый пример. Он показывает, как средствами системы Maple 7 задается определение функций Бесселя. Показано, что функции Бесселя являются решениями заданного на рис. 6.4 дифференциального уравнения второго порядка. Maple 7 способна вычислять производные и интегралы от специальных функций.
О WeberE — Е-функция Вебера;
О WeierstrassP — P-функция Вейерштрасса;
О WeierstrassPPrime — производная P-функции Вейерштрасса;•
О WeierstrassZeta — зета-функция Вейерштрасса;
О WeierstrassSigma — сигма-функция Вейерштрасса;
О Zeta — зета-функция Римана и Гурвица.
Ввиду большого числа специальных функций и наличия множества примеров их вычисления в справочной системе Maple 7 ограничимся несколькими примерами вычисления наиболее распространенных специальных функций. По их подобию читатель может опробовать в работе и другие специальные функции. На рис. 6.4 даны примеры применения ряда специальных функций. Обратите особое внимание на первый пример. Он показывает, как средствами системы Maple 7 задается определение функций Бесселя. Показано, что функции Бесселя являются решениями заданного на рис. 6.4 дифференциального уравнения второго порядка. Maple 7 способна вычислять производные и интегралы от специальных функций.
iQ Maple Z |Sf1 mws • (Scivoi 1Ц
iQ Maple Z |Sf1 mws • (Scivoi 1Ц
S о* £.41 Xми ^”*’ ^«"М
S о* £.41 Xми ^”*’ ^«"М
Примеры применения специальных функций (часть 1)
> restart;
> eql:-xA2*diff(y(x),х$2)+x*diff(у(х),х)+(хЛ2-рЛ2)*у(х)-0;
Примеры применения специальных функций (часть 1)
> restart;
> eql:-xA2*diff(y(x),х$2)+x*diff(у(х),х)+(хЛ2-рЛ2)*у(х)-0;
,2
eql := х
,2
eql := х
а2|
—-у(х) + х dxZI
а2|
—-у(х) + х dxZI
11
+ (*-р )уМ- о
11
+ (*-р )уМ- о
> al:-dsolve(eql,y(x));
al :=у(х) - _С1 BesseU(p, х) + _С2 BesseIY(p, х)
> al:-dsolve(eql,y(x));
al :=у(х) - _С1 BesseU(p, х) + _С2 BesseIY(p, х)
> BesselJ(0,0.5) ;
> BesselJ(0,0.5) ;
.9384698072
.9384698072
> GAMMA(0.5) ;
> GAMMA(0.5) ;
1.772453851
1.772453851
> diff(BesselJ(p,x),х$2);
> diff(BesselJ(p,x),х$2);
' (р + l)BesseMQ> + 1,х) -BesseU(p,x) +
' (р + l)BesseMQ> + 1,х) -BesseU(p,x) +
p BesseU(p,x)
p BesseU(p,x)
(р BesseU(p,x)
-BesseU(p + 1,х) + ^
(р BesseU(p,x)
-BesseU(p + 1,х) + ^
x
x
2
2
> El(l.);
1595117816
> diff(Fresnels(x),x$3) ;
-sin-sin22(12X * cos) ТХ X22(12X * cos) ТХ X
-sin
-sin
22(12
X * cos) ТХ X
22(12
X * cos) ТХ X
> int(sln(x)/x,x) ;
Si(x)Si(x)
Si(x)
Si(x)
> erf(l.);
5427007929
Еще несколько примеров работы со специальными функциями представлены на рис.6.5. Как видно из приведенных примеров, на экране монитора можно получить математически ориентированное представление специальных функций, обычно более предпочтительное, чем представление на Maple-языке или в текстовом формате. Записи функций при этом выглядят как в обычной математической литературе.
Рис. 6.5. Примеры работы со специальными математическими функциями
На рис. 6.5 показаны примеры разложения специальных функций в ряды и применения функции convert для их преобразования.
Много информации о поведении специальных функций дает построение их графиков. На рис. 6.6 показано построение семейства графиков функций Бесселя Bessel J разного порядка и гамма-функции. Эти функции относятся к числу наиболее известных. Если читателя интересуют те или иные специальные функции, следует прежде всего построить и изучить их графики.
Подробное описание специальных функций можно найти в справочниках [43-45] и в справочной базе данных Maple 7.
Рис. 6.6. Графики функций Бесселя и гамма-функции
Функции для работы с векторами и матрицами
Элементы векторов и матриц
Элементы векторов и матриц являются индексированными переменными, то есть место каждого элемента вектора определяется его индексом, а у матрицы — двумя индексами. Обычно их обобщенно обозначают как г (номер строки матрицы или порядковый номер элемента вектора) и/ (номер столбца матрицы). Допустимы операции вызова нужного элемента и присваивания ему нового значения:
О V[i] — вызов г-го элемента вектора V;'
О M[i, j] — вызов элемента матрицы М, расположенного на г-й строке в j-м столбце;
О V[i]:=x — присваивание нового значения х г-му элементу вектора V;
О M[1,j]:=x — присваивание нового значения х элементу матрицы М.
Преобразование списков в векторы и матрицы
Прежде всего надо обратить внимание на то, что векторы и матрицы хотя и похожи на списки, но не полностью отождествляются с ними. В этом можно убедиться с помощью следующих примеров, в которых функция type используется для контроля типов множественных объектов (векторов и матриц):
М1:=[1,2,3,4]:
М/;=[1,2, 3,4]
type(Ml,vector);
false
V:=convert(Ml,vector);
И := [ 1, 2, 3, 4]
type(V,vector);
true
M2:=[[l,2],[3,4]];
М2 :=[[!, 2], [3,4]]
type(M2,matrix):
false
M:=convert(M2,matrix):'
type(M,matrix);
true*
Однако, используя функцию преобразования данных convert, можно преобразовывать одномерные списки в векторы, а двумерные — в матрицы. Функция type используется в следующих формах:
О type(V,vector) — тестирует аргумент V и возвращает true, если V — вектор, и false в ином случае;
О type(M,matrix) — тестирует аргумент М и возвращает true, если М — матрица, и false в ином случае.
Здесь параметры vector и matrix используются для указания того, какой тип объекта проверяется.
ПРИМЕЧАНИЕ Обратите внимание на то, что матрицы отображаются иначе, чем двумерные списки, —
без двойных квадратных скобок. Отображение вектора подобно отображению одномерного списка, поэтому здесь особенно важен контроль типов данных.
Операции с векторами
Важное достоинство систем компьютерной алгебры, к которым относится и Maple 7, заключается в возможности выполнения аналитических (символьных) операций
над векторами и матрицами.
Приведем примеры операций над векторами:
V:-array(1..4.[l,2,3.4]):
И:= [1, 2, 3, 4]
[V[1],V[2],V[4]];1
[1,2,4]
V[l]:=a:V[3]:=b:
evalm(V);
[а, 2,6,4]
evalm(V+2);
[а + 2, 4, 6 +2, 6]
evalm(2*V);
[2 а, 4,2 6,8]
evalm(V**V):
[a, 2,6,4f
evalm(a*V);.
[а2, 2 а, а 6, 4 а]
В этих примерах используется функция evalm(M), осуществляющая вычисление матрицы или вектора М.
^>)примечание
Рекомендуется перед проведением символьных операций с векторами и матрицами очистить память от предшествующих определений с помощью команды restart. Если какие- то элементы векторов или матриц были ранее определены, это может привести к очень сильным искажениям вида конечных результатов. Очистка памяти устраняет возможность ошибок такого рода.
Операции над матрицами с численными элементами
Над матрицами с численными элементами можно выполнять разнообразные операции. Ниже приведены основные из них:
М:=аггау(1..2,1..2,[[1.2],[3,4]]);
Г1 21
4J.
evalm(2*M);
'2 4'
6 8
evalm(2+M);
' 3 2"
_3 6
evalm(MA2);
‘ 7 10"
15 22_
evalmCM^)):
" -21 "
-1
2
> evalm(M-M): О
> evalm(M+M): "2 4"
6 8
> evalm(M*M):
' 7 10"
15 22
evalm(M/M);
1
evalm(M'O);
1
ВНИМАНИЕВНИМАНИЕРекомендуется внимательно изучить эти примеры и попробовать свои силы в реализации простых матричных операций. Мы вернемся к гораздо более серьезному описанию матричных операций и функций в дальнейшем.Рекомендуется внимательно изучить эти примеры и попробовать свои силы в реализации простых матричных операций. Мы вернемся к гораздо более серьезному описанию матричных операций и функций в дальнейшем.Символьные операции с матрицамиСимвольные операции с матрицамиНиже представлены примеры символьных операций, осуществляемых над квадратными матрицами одного размера:Ниже представлены примеры символьных операций, осуществляемых над квадратными матрицами одного размера:> М1:=аггау(1. .2,1. .2, [[al,М], [cl.dlj]);> М1:=аггау(1. .2,1. .2, [[al,М], [cl.dlj]);
ВНИМАНИЕ
ВНИМАНИЕ
Рекомендуется внимательно изучить эти примеры и попробовать свои силы в реализации простых матричных операций. Мы вернемся к гораздо более серьезному описанию матричных операций и функций в дальнейшем.
Рекомендуется внимательно изучить эти примеры и попробовать свои силы в реализации простых матричных операций. Мы вернемся к гораздо более серьезному описанию матричных операций и функций в дальнейшем.
Символьные операции с матрицами
Символьные операции с матрицами
Ниже представлены примеры символьных операций, осуществляемых над квадратными матрицами одного размера:
Ниже представлены примеры символьных операций, осуществляемых над квадратными матрицами одного размера:
> М1:=аггау(1. .2,1. .2, [[al,М], [cl.dlj]);
> М1:=аггау(1. .2,1. .2, [[al,М], [cl.dlj]);
MlMl"al bl"cl dl"al bl"cl dl
Ml
Ml
"al bl"cl dl
"al bl"cl dl
> M2:=array(l..2,1. .2,[[a2,b2].[c2,d2]]):
М2 :=М2 :="a2c2"a2c2b2" d2b2" d2
М2 :=
М2 :=
"a2c2
"a2c2
b2" d2
b2" d2
> evalm(Ml+M2);> evalm(Ml+M2);"al + a2 bl + b2"cl + c2 dl + d2evalm(Ml-M2):"al ~a2 bl - b2"cl - c2 dl - d2evalm(Ml&*M2);"al a2 + bl c2 al b2 + bl d2"cl a2 + dl c2 cl b2 + dl d2evalm(Ml/M2):' al d2 bl c2a2 d2 - b2 c2 a2 d2 - b2 c2cl d2dl c2a2 d2 - b2 c2 a2 d2 - b2 c2"al + a2 bl + b2"cl + c2 dl + d2evalm(Ml-M2):"al ~a2 bl - b2"cl - c2 dl - d2evalm(Ml&*M2);"al a2 + bl c2 al b2 + bl d2"cl a2 + dl c2 cl b2 + dl d2evalm(Ml/M2):' al d2 bl c2a2 d2 - b2 c2 a2 d2 - b2 c2cl d2dl c2a2 d2 - b2 c2 a2 d2 - b2 c2al b2bl a2 "a2 d2 - b2 c2 + a2 d2 - b2 c2cl b2dl a2a2 d2 - b2 c2 + a2 d2 - b2 c2al b2bl a2 "a2 d2 - b2 c2 + a2 d2 - b2 c2cl b2dl a2a2 d2 - b2 c2 + a2 d2 - b2 c2> evalm(Ml&/M2);> evalm(Ml&/M2);
> evalm(Ml+M2);
> evalm(Ml+M2);
"al + a2 bl + b2"
cl + c2 dl + d2
evalm(Ml-M2):
"al ~a2 bl - b2"
cl - c2 dl - d2
evalm(Ml&*M2);
"al a2 + bl c2 al b2 + bl d2"cl a2 + dl c2 cl b2 + dl d2
evalm(Ml/M2):
' al d2 bl c2
a2 d2 - b2 c2 a2 d2 - b2 c2
cl d2dl c2
a2 d2 - b2 c2 a2 d2 - b2 c2
"al + a2 bl + b2"
cl + c2 dl + d2
evalm(Ml-M2):
"al ~a2 bl - b2"
cl - c2 dl - d2
evalm(Ml&*M2);
"al a2 + bl c2 al b2 + bl d2"cl a2 + dl c2 cl b2 + dl d2
evalm(Ml/M2):
' al d2 bl c2
a2 d2 - b2 c2 a2 d2 - b2 c2
cl d2dl c2
a2 d2 - b2 c2 a2 d2 - b2 c2
al b2bl a2 "
a2 d2 - b2 c2 + a2 d2 - b2 c2
cl b2dl a2
a2 d2 - b2 c2 + a2 d2 - b2 c2
al b2bl a2 "
a2 d2 - b2 c2 + a2 d2 - b2 c2
cl b2dl a2
a2 d2 - b2 c2 + a2 d2 - b2 c2
> evalm(Ml&/M2);
> evalm(Ml&/M2);
al &/al &/cl &/cl &/"а2с2"а2 с2"а2с2"а2 с2Ь2" d2Ь2" d2Ь2" d2Ь2" d2bl &Jbl &Jdl &Jdl &J"а2 с2"а2 с2"а2 с2"а2 с2Ь2Т d2\ Ь2Л d2Ь2Т d2\ Ь2Л d2
al &/
al &/
cl &/
cl &/
"а2
с2
"а2 с2
"а2
с2
"а2 с2
Ь2" d2
Ь2" d2
Ь2" d2
Ь2" d2
bl &J
bl &J
dl &J
dl &J
"а2 с2
"а2 с2
"а2 с2
"а2 с2
Ь2Т d2\ Ь2Л d2
Ь2Т d2\ Ь2Л d2
Приведем еще ряд примеров выполнения символьных операций с одной матрицей:
evalm(MlA2);
" al2 + bl cl albl + bldl cl al + did blcl+dl2
evalm(s1n(Ml));
’sin(a/) sin(W)' sin(c7) sin(<77)
evalm(Ml*z):
"z al z ЬГ z cl zdl
evalm(Ml/z);
’ albl "
zz
cldl
zz
evalm(Ml+z);
*al+z bl " cl dl +z
evalm(Ml-z):
"al -z bl " cl dl —z
Среди других функций для работы с матрицами полезно обратить внимание на функцию тар, которая применяет заданную операцию (например, функции дифференцирования diff и интегрирования 1 nt) к каждому элементу матрицы. Примеры такого рода даны ниже:
М:=аггау(1..2,1..2,[[х,х"2],[х"3.хА4]]);
> map(diff,М,х): " 12х"
2хг 4х3
> map(int,X,x);
> map(sin.M):
sin(x) sin(x2)
sin(x3) sin(x4)
В результате возвращаются матрицы, каждый элемент которых представлен производной или интегралом. Аналогично можно выполнять над матрицами и другие достаточно сложные преобразования.
В дальнейшем мы продолжим изучение матричных функций и операций, включенных в пакеты Maple 7.
Функции для работы
со строковыми данными
Контроль типа строковых данных
Напоминаем, что строковые данные представляются совокупностью любых символов в обратных апострофах, например 'Привет' или '2+2'. Для контроля объектов на принадлежность к строковым данным служит функция type с параметром string:
str:='Hello!';
str := Hello!
type(Hello,string);
false
type(str,string);
false
type(2+3,string);
false
type('2+3'.string);
false
char:=a:
char := a
char:='a';.
char := a
Из приведенных примеров видно, что контроль строкового типа осуществляется не очень строго, — в частности, единичные символы рассматриваются как строковые и без заключения их в апострофы. В строках могут быть символы кириллицы, но гарантии в правильности обработки таких символов нет — надо мириться с тем, что Maple — англоязычная программа и ее возможности в поддержке других языков ограниченны.
Интерактивный ввод строк
Для интерактивного ввода строк можно использовать функцию read! i ne(f 11 ename), задав в качестве имени файла terminal или опустив имя файла. В этом слунае ввод строки осуществляется с клавиатуры компьютера: > s:=readl1пе();
> Привет мой друг!
5:="Привет мой друг!"
^ПРИМЕЧАНИЕ Полезно обратить внимание на то, что запрос в ходе интерактивного ввода может быть ■—сделан на русском языке (если установленный для запросов шрифт имеет символы кириллицы). Нужно также, чтобы и шрифт строки вывода содержал кириллицу, иначе в строке вывода будет типичная «абракадабра» — смесь непонятных символов.
Обработка строк
Имеется ряд функций для работы со строками. Из них наиболее важны следующие:
О lenght(str) — возвращает число символов, содержащихся в строке str;
О substring(str,a. .b) — возвращает подстроку строки str от а-го символа до Ь-го;
О cat(strl,str2,...) — возвращает строку, полученную объединением строк strl, str2,... (альтернатива — оператор конкатенации в виде точки .);
О SearchText(s, str) — производит поиск подстроки s в строке str и при его успехе возвращает номер позиции s в строке str (при отсутствии s в str функция возвращает 0).
Примеры применения этих функций (в виде продолжения ранее приведенных примеров) представлены ниже:
> length(str);
6
> substring(str,l..3):
Hei
> substring(str,4..6);■
lo!
> s;=cat('Hello',' my',' friend!');
s := Hello my friend!
> SearchText(my,s):
7-
> ss:='Hello 'I| my friend!';
ss := Hello my friend!
> seq(Name||1,1=1..4);
Namef Name2, Name3, Name4
Эти функции дают достаточно средств для обработки данных строкового типа, которые можно применять не только для создания текстовых комментариев, но и для управления вычислительным процессом в программах.
Преобразование строки
в математическое выражение
Часто возникает необходимость в интерактивном вводе математических выражений. Для ввода с запросом выражения используется функция readstat (promt), где promt — строка с текстовым комментарием. Пример ее применения дан ниже:
y:=readstat('BeeflHTe выражение ');
Введите выражение а*хА2+Ь;
у ;= ах2 + b
Альтернативой может стать ввод строкового выражения с последующим преобразованием его в математическое выражение с помощью функции parse:
S:='2+3*5';
5 := 2+3*5
evaln(s):
parse(t);
17
Обратите внимание на то, что функция evaln не смогла вычислить строковое выражение '2+3', поскольку оно не является числовым типом данных. Однако функция parse преобразовала это выражение в числовое, что и привело к его вычислению.
Что нового мы узнали?
В этом уроке мы научились:
О Использовать операторы и операнды.
О Применять различные математические функции.
О Использовать операторы и функции для работы с векторами и матрицами.
О Использовать функции для работы со строковыми данными.
(У) УРОК(У) УРОК
(У) УРОК
(У) УРОК
Типовые средствапрограммирования
Функции пользователя
Условные операторы
Циклы for, while и do
Операторы пропуска и прерывания
Процедуры и процедуры-функции
Средства контроля и отладки процедур
Работа с отладчиком программ
Операции ввода-вывода
Вывод в специальных форматах
Дополнительные возможности
Maple-языка
Функции пользователя
Упрощенные функции пользователя
Хотя ядро Maple 7, библиотека и пакеты содержат свыше 3000 функций, всегда может оказаться, что именно нужной пользователю (и порою довольно простой) функции все же нет. Тогда возникает необходимость в создании собственной функции, именуемой функцией пользователя. Начнем описание с обычных функций пользователя, задающих некоторую зависимость от одной или ряда переменных в явном виде.
Основным средством расширения Maple-языка являются модули — процедуры. Однако на первый взгляд они довольно сложны. Есть и более простые способы задания функций пользователя. Один из таких способов заключается просто в присваивании введенной функции (в виде выражения) некоторой переменной:
Маше:=Выражение
Этот прием фактически означает просто операцию присваивания. Следующие примеры иллюстрируют технику работы с такими функциями:
m:=sqrt(x"2+y'2);
т := Jх2 + у2
х:=3:у:=4:ш;,
-/25"
evalf(m):
5.000000000
Заданный таким образом объект все же не является полноценной функцией пользователя, и прежде всего потому, что в нем используются только глобальные переменные (х и у) и нет объявленного списка параметров, от которых зависит значение функции. При этом значения переменных функции приходится заведомо задавать отдельно, используя операции присваивания. Подобные конструкции нельзя ввести в библиотеки Maple 7.
Основной способ задания функции пользователя
Более гибкий способ задания полноценных функций пользователя базируется на применении функционального оператора. При этом используется следующая конструкция:
name:=(x.y....)->expr
После этого вызов функции осуществляется в виде name(х,у,...), где (х,у,...) — список формальных параметров функции пользователя с именем name. Переменные, указанные в списке формальных параметров, являются локальными. При подстановке на их место фактический параметров они сохраняют их значения только в теле функции (ехрг). За пределами этой функции переменные с этими именами оказываются либо неопределенными, либо сохраняют ранее присвоенные им значения.
Следующие примеры иллюстрируют сказанное:
restart;
х:=0;у:=0;
х:=0
:=0
m:=(x.y)->sqrtpC2±Z2):
т :=(x,y)->7V+y2
m(3,4);
5
m(3..4);
5.000000000
[х.у];
[0,0]
Нетрудно заметить, что при вычислении функции ш(х,у) переменные х и у имели значения 3 и 4, однако за пределами функции они сохраняют нулевые значения, заданные им перед введением определения функции пользователя.
Еще один способ задания функции пользователя базируется на применении функции unapply:
name:=unapply(expr,varl.var2....)
Ниже даны примеры такого задания функции пользователя:,
restart;
fm.^unapplyCsqrtfX^ty.^l.x.y);
fm := (х,у) л)х2 + у2
fm(4.,3.);
5.000000000
fe:=unapply(x"2+y'2,x.y);
/е:= (х,у)^х2+у2
fe(sin(x),cos(x));
sin(x)2 + cos(x)2
simplify(fe(s1n(x),cos(x)));
1
Последний пример показывает возможность проведения символьных операций с функцией пользователя.
Графическая визуализация результатов выполнения функций пользователя
В ряде случаев весьма желательна визуализация результатов выполнения функций пользователя. Порой она может давать неожиданный результат. Па рис. 7.1 представлены примеры задания двух функций пользователя от двух переменных и построение их графиков с помощью функции plot3d.
[ Задание функций пользователя двух переменных и построение их графиков4
Г> f1:-(х,у)->-gos(х*у)/(х*у*3);
> plot3d(fl(х,у),х*-6. .6,у--6. .6,orientation-[35 г 25 ] );
> f2:-<х,у)->sin(x*y)/<х*у):> plot3d(f2(х,у),х--4. . 4,у--4. . 4,orientation-[60,25]);> f2:-<х,у)->sin(x*y)/<х*у):> plot3d(f2(х,у),х--4. . 4,у--4. . 4,orientation-[60,25]);Рис. 7.1. Примеры задания функций пользователя двух переменных с построением их графиковРис. 7.1. Примеры задания функций пользователя двух переменных с построением их графиков
> f2:-<х,у)->sin(x*y)/<х*у):
> plot3d(f2(х,у),х--4. . 4,у--4. . 4,orientation-[60,25]);
> f2:-<х,у)->sin(x*y)/<х*у):
> plot3d(f2(х,у),х--4. . 4,у--4. . 4,orientation-[60,25]);
Рис. 7.1. Примеры задания функций пользователя двух переменных с построением их графиков
Рис. 7.1. Примеры задания функций пользователя двух переменных с построением их графиков
^) ВНИМАНИЕ^) ВНИМАНИЕ
^) ВНИМАНИЕ
^) ВНИМАНИЕ
При задании функций пользователя рекомендуется просмотреть их графики в нужном диапазоне изменения аргументов. К сожалению, наглядными являются только графики функций одной и двух переменных.
Импликативные функции
Другой важный класс функций, которые нередко приходится задавать, — импликативные функции, в которых связь между переменными задана неявно, в виде какого-либо выражения. Самый характерный пример такой функции —- это выражение для задания окружности радиуса г: ^ + г/2 = г2. •
Итак, импликативные функции записываются как уравнения. Соответственно их можно решать с помощью функции solve. Следующие примеры иллюстрируют задание уравнения окружности в общем и в частном (численном) виде:
»1mpf:-xA2+yA2-rA2:,
impf:= х1 + у2 = г2
subs(x«a,impf):
а2 +у2 = гг
solved);
Va=4V + 7,y=y, г = г^, {у=у, /- = r,a = -j-y2 + г2}
impfl:=x'2+y'2=25;
impfl :=х2+уг = 25
subs(x-4,impfl);
16+/ = 25
solved):
з,-з
Для графической визуализации импликативных функций служит функция implicitplot пакета plots. На рис. 7.2 представлено задание двух импликативных функций и построение их графиков.
Рис. 7.2. Задание двух импликативных функций и построение их графиков
В данном случае задано построение двух эллипсов. Верхний — это окружность, сплюснутая по вертикали, а второй — наклонный эллипс.
Условные выражения
Для подготовки разветвляющихся программ в Maple-язык программирования включен оператор if, позволяющий создавать следующую конструкцию:
if «Условие сравнения> then <Элементы>
|el 1f «Условие сравнения> then <Элементы>|
jelse «Элементы>|
fi:
В вертикальных чертах | | указаны необязательные элементы данной конструкции. Следующих два вида условных выражений чаще всего используются на практике:
О if <Условие> then «Элементы 1> ft — если Условие выполняется, то исполняются Элементы 1, иначе ничего не выполняется;
О if <Условие> then «Элементы 1> else «Элементы 2> fi — если Условие выполняется, то исполняются Элементы 1, иначе исполняются Элементы 2.
В задании условий используются любые логические конструкции со знаками сравнения («, <=, >, >=, =, <>) и логические операторы and, or и not, конструкции с которыми возвращают логические значения true и false.
Рассмотрим следующий простой пример:
х:=-5:
if х«0 then print('Negative') fi:
'Negative
X:=l:
if x<0 then print('Negative') fi:
В этом примере анализируется значение х. Если оно отрицательно, то с помощью функции вывода print на экран выводится сообщение «Negative». А вот если х неотрицательно, то не выводится никакого сообщения. В другом примере если х неотрицательно, то выводится сообщение «Positive»:
х:=-5:
if х<0 then print('Negative') else printC Positive') fi:■
Negative
x:-l:
if x<0 then printC'Negative') else print('Positive') fi:
Positive .
Приведем еще один пример, показывающий особую форму задания конструкции if-then-else-fi:
х:=-5:■
> 'if' (х«0. pr1nt('Negative'),pr1nt('Posit1ve'));
Negative
x:-l:
'if (x<0, print('Negative').print('Positive')).;
Positive-
В этой конструкции вида
"if '(Условие. Выражение!. Выражение?)
если Условие выполнятся, то будет исполнено Выражение!, в противном случае будет исполнено Выражение?. Ввиду компактности записи дакая форма условного выражения нередко бывает предпочтительна, хотя она и менее наглядна. На рис. 7.3 представлено применение данной конструкции для моделирования трех типов сигналов.
Рис. 7.3. Применение конструкции с функцией if для моделирования сигналов
К сожалению, функции на базе конструкции if не всегда корректно обрабатываются функциями символьной математики. Поэтому надо тщательно контролировать полученные в этом случае результаты.
Циклы for и while
Зачастую необходимо циклическое повторение выполнения выражения заданное число раз или до тех пор, пока выполняется определенное условие. Maple 7 имеет обобщенную конструкцию цикла, которая задается следующим образом:
|for <name>| |from <exprl>| |to <ехргЗ>| jby <expr2>| |while <expr4>| do statement sequence* od:
Здесь name — имя управляющей переменной цикла, expri, ехрг2 и ехргЗ — выражения, задающие начальное значение, конечное значение и шаг изменения переменной name, ехрг4 — выражение, задающее условие, пока цикл (набор объектов между словами do и od) будет выполняться.
В ходе выполнения цикла управляющая переменная меняется от значения expri до значения ехрг2 с шагом, заданным ехргЗ. Если блок by <ехрг2* отсутствует, то управляющая переменная будет меняться с шагом +1 при exprl<expr2. Это наглядно поясняет следующий пример:
for i from 1 to 5 do print(i) od:
1
2
3
4
5
В нем выводятся значения переменной 1 в ходе выполнения цикла. Нетрудно заметить, что она и впрямь меняется от значения 1 до значения 5 с шагом +1. Следующий пример показывает, что границы изменения управляющей переменной можно задать арифметическими выражениями:
for 1 from 7/(2+5) to 2+3 do print(i) od;
1
.
3
4
5
А еще один пример показывает задание цикла, у которого переменная цикла меняется от значения 1 до 10 с шагом 2:
> for 1 from 1 to 10 by 2 do print(i) od:
1
'
5
7
9
В этом случае выводятся нечетные числа от 1 до 9. Шаг может быть и отрицательным:
> for 1 from 9 to 1 by -2 do print(i) od;.
9
7
5
3
1
Следует отметить, что если ехрг1>ехрг2 задать заведомо невыполнимое условие, например, exprl>expr2 и положительное значение шага, то цикл выполняться не будет. Цикл можно прервать с помощью дополнительного блока while <ехрг4>. Цикл с таким блоком выполняется до конца или до тех пор, пока условие ехрг4 истинно.
for 1 from 1 to 10 by 2 while 1<6 do print(i) od;
1
3
5
Таким образом, конструкция цикла в Maple-языке программирования вобрала в себя основные конструкции циклов for и while. Есть еще одна, более специфическая конструкция цикла:
[for <name>| |in <exprl>| |while <expr2>| do statement sequence> od;
Здесь exprl задает список значений, которые будет принимать управляющая переменная name. Цикл будет выполняться, пока не будет исчерпан список и пока выполняется условие, заданное выражением ехрг2. Следующий пример иллюстрирует сказанное:
for i in [1,2,5,-1,7,12] do print(i) od;
1
2
5
-1
7
12
for 1 in [1,2,5,-1,7,12] while i>0 do print(i) od;
1
2
5
В цикле этого вида управляющая переменная может меняться произвольно. Циклы могут быть вложенными. Это иллюстрирует следующий пример, создающий единичную матрицу на базе заданного массива М:
М:=аггау(1..3,1..3);
ЛГ:=аггау(1 „3, 1 „3, [ ])'
for 1 to 3 do for j to 3 do M[i,j]:=O;if i=j then M[1,j]:=l fi; od od;
evalm(M);
"1 0 O'
0 1 0
0 0 1
Этот пример имеет не более чем познавательное значение, поскольку для создания такой матрицы Maple 7 имеет функцию identity, с помощью которой функция array позволяет сразу создать единичную матрицу:
аггау(1..3,1..3,identity);-
"1 0 0'
0 10
.° ° L
В заключение отметим, что возможна упрощенная частная конструкция цикла типа while:
while expr do statseq od:
Здесь выражения statseq выполняются, пока выполняется логическое условие ехрг. Пример такого цикла:
П:-1;
п := 1
while п<16 do п:=2*п od;
п := 2
и := 4
и := 8
п := 16
В этом примере идет удвоение числа п с начальным значением п =1 до тех пор, пока значение и меньше 16.
Операторы пропуска и прерывания
Иногда бывает нужным пропустить определенное значение переменной цикла. Для этого используется оператор next (следующий). Приведенный ниже пример иллюстрирует применение оператора next в составе выражения if-fi для исключения вывода значения z = -2:
for 1 in [1,2,3,-2,4] do if i=-2 then next else print(i) fi od;
1
2
3
4
Другой оператор — break — прерывает выполнение фрагмента программы (или цикла). Его действие поясняет слегка модифицированный предшествующий пример:
for i in [1,2,3,-2.4] do if i—2 then break else print(i) fi od:
1
2
3
В данном случае при значении г = -2 произошло полное прекращение выполнения цикла. Поэтому следующее значение 4 переменной г присвоено не было и это значение на печать не попало.
Любой из операторов qui t, done или stop обеспечивает также прерывание выполнения текущей программы (в частности, цикла), но при этом окно текущего документа закрывается.
Процедуры и процедуры-функции
Простейшие процедуры
Процедурой называют модуль программы, имеющий самостоятельное значение и выполняющий одну или несколько операций, обычно достаточно сложных и отличных от операций, выполняемых встроенными операторами и функциями.
Процедуры являются важнейшим элементом структурного программирования и служат средством расширения возможностей системы Maple 7 пользователем. Каждая процедура имеет свое уникальное имя и список параметров (он может быть пустым). Процедуры вызываются так же, как встроенные функции, — указанием их имени со списком фактических параметров. При этом просто процедуры обычно не возвращают каких-либо значений после своего исполнения, хотя могут присваивать значения входящим в них переменным. Процедуры-функции в ответ на обращение к ним возвращают некоторое значение. Они как бы являются новыми функциями, задаваемыми пользователем. Описанные ранее функции пользователя фактически являются процедурами-функциями с несколько упрощенной структурой.
Простейшая форма задания процедуры следующая:
name := ргос(Параметры)
Тело процедуры
end:
Параметры процедуры задаются перечислением имен переменных, например ргос(х) или proc(x.y.z). С помощью знака :: после имени переменной можно определить ее тип, например в объявлении prog(n:-.integer) объявляется, что переменная п является целочисленной.
При вызове процедуры выражением вида:
пате(Фактические_параметры)
фактические параметры подставляются на место формальных. Несоответствие фактических параметров типу заданных переменных ведет к сообщению об ошибке й к отказу от выполнения процедуры.
В качестве примера ниже приведена процедура вычисления модуля комплексного числа z — в данном случае это единственный параметр процедуры:
modc:=proc(z)
? evalf(sqrt(Re(z)A2+Im(z)A2))
end:
mode := proc (z) evalf( sqrt( 9i(z /^2 + S(z)A2)) end proc
^ПРИМЕЧАНИЕ^ПРИМЕЧАНИЕПосле ввода заголовка процедуры под строкой ввода появляется сообщение: «Warning, premature end of input». Оно указывает на то, что ввод листинга процедуры не закончен и должен быть продолжен до тех пор, пока не будет введено завершающее слово end листинга процедуры. Если после этого слова поставить символ точки с запятой, то листинг процедуры будет выведен на экран дисплея.
^ПРИМЕЧАНИЕ
^ПРИМЕЧАНИЕ
Теперь для вычисления модуля достаточно задать обращение к процедуре modc(z), указав вместо z конкретное комплексное число:
> modc(3.+I*4.);
5.000000000
Нетрудно заметить, что при знаке ; после завершающего слова end текст процедуры повторяется в строке вывода (в общем случае в несколько ином виде). Если это повторение не нужно, после слова end надо поставить знак двоеточия. Обратите также внимание на то, что для обозначения действительной и мнимой частей процедуры в ее тексте появились готические буквы.
Оператор возврата значения RETURN
Как отмечалось, процедуры, которые возвращают значение результата в ответ на обращение к ним, во многом тождественны функциям. Будем называть их процедурами-функциями. Обычно процедура возвращает значение последнего выражения в ее теле или выражения, намеченного к возврату специальным оператором RETURN: > modc:<=proc(z)
> evalf(sqrt(Re(z)^2+Im(z)"2)):
> RETURN№
>end;
mode := proc(z) e valf) sqrt( 9t( z )Л2 + 3(z)A2)); RETURN(%) end proc
modc(3.+I*4.);
5.000000000
Параметром оператора RETURN может быть любое выражение. В Maple не принято выделять процедуры-функции в какой-то отдельный класс. Действует правило — если не использован оператор RETURN, процедура возвращает значение последнего выражения в ее теле. Для устранения выдачи значений выражений внутри процедуры-функции после них просто надо установить знак двоеточия.
Статус переменных в процедурах и циклах
Переменные, которые указываются в списке параметров (например, z, в нашем случае), внутри процедуры являются локальными. Это означает, что изменение их значений происходит лишь в теле процедуры, то есть локально. За пределами тела процедуры эти переменные имеют то значение, которое у них было до использования процедуры. Это хорошо поясняет следующий пример:
restart:?:-!;
z := 1
modc:=proc(z)
evalf(sqrt(Re(z)A2+Im(z)A2));
end;
mode :=proc(z) evalf(sqrt(9i(z)A2 + 3(z)A2)) end proc
modc(3.+I*4.);'
5.000000000
z;
■
Нетрудно заметить, что внутри процедуры z = 3 + 1*4, тогда как вне ее значение z = 1. Таким образом, имена переменных в списке параметров процедуры могут совпадать с именами глобальных переменных, используемых за пределами процедуры.
Переменные, которым впервые присваивается значение в процедуре, также относятся к локальным. Кроме того, переменные, применяемые для организации циклов, являются локальными. Все остальные переменные — глобальные.
Объявления переменных локальными с помощью оператора local
Если в теле процедуры имеются операции присваивания для ранее определенных (глобальных) переменных, то изменение их значений в ходе выполнения процедуры создает так называемый побочный эффект. Он способен существенно изменить алгоритм решения сложных задач и, как правило, недопустим.
Поэтому Maple-язык программирования имеет встроенные средства для исключения побочных эффектов. Встречая такие операции присваивания, Maple-язык корректирует текст процедуры и вставляет в нее объявление переменных локальными с помощью ключевого слова local и выдает предупреждающую надпись о подобном применении:
restart:т:=0;
т := 0
modc:=proc(z)
m:=evalf(sqrt(Re(z)A2+Im(z)A2)):RETURN(m)
end; .
Warning, 'nf is implicitly declared local to procedure 'mode'
mode := proc (z) local m; m := evalf(sqrt(9t(z)A2 + 3(z)A2)); RETURN)m) end proc
modc(3.+I*4.);
5.000000000
m:
0.'
Обратите внимание на то, что в тело процедуры было автоматически вставлено определение local m, задающее локальный статус переменной ш. Оператором print можно вывести текст процедуры:
print(mode);
proc(z) local m; m := eval^sqr^^RCz^ +3(z)A2)); RETURN(m) end proc
Объявления переменных глобальными с помощью слова global
Говорят, что запретный плод сладок! Что бы ни говорили о нежелательности работы с глобальными переменными, бывает, что их применение желательно или даже необходимо. Чтобы сделать переменные внутри процедуры глобальными, достаточно объявить их с помощью ключевого слова global, после которого перечисляются идентификаторы переменных.
Следующий пример поясняет применение оператора global в процедуре:
а:=1:Ь:=1;
а := 1
b;= 1
fg:=proc(x,y)
global a.b:
a:=xA2:b:=yA2:
RETURN(sqrt(a+b));
end;
fg := proc (x, y) global a,b;a := хЛ2; b := ^2; RETURN( sqrt( a + b)) end proc
fg(3,4);
5
[a.b];
[9,16]
В призере переменным а и b вначале присвоены значения 1. Поскольку они в процедуре объявлены глобальными, то внутри процедуры они принимают новые значения х2 и у2. В результате при выходе из процедуры они имеют уже новые значения. Это и есть побочный эффект при исполнении данной процедуры. Если пользователь не знает (или не помнит), что та или иная процедура имеет побочный эффект, то он рискует получить самые неожиданные (и неверные) результаты своих вычислений.
ПРИМЕЧАНИЕ Следует отметить, что нельзя делать глобальными переменные, указанные в списке параметров процедуры, поскольку они уже фактически объявлены локальными. Такая попытка приведет к появлению сообщения об ошибке следующего вида «Error, argument and global "х" have the same name». При этом соответствующие переменные останутся локальными.
Функция вывода сообщений об ошибках ERROR
При профессиональной подготовке процедур пользователь должен предусмотреть их поведение при возможных ошибках. Например, если он готовит процедуру или функцию, вычисляющую квадратный корень из действительных чисел, то надо учесть, что такой корень нельзя извлекать из отрицательных чисел (будем, исключительно в учебных целях, считать, что комплексные числа в данном примере недопустимы). '
Для контроля за типом данных обычно используются различные функции оценки и тестирования. При выявлении ими ошибки, как правило, предусматривается вывод соответствующего сообщения. Для этого используется функция ERROR: ERROR(expr_l. expr_2, ...)■
где expr_l, ... — ряд выражений (возможно, пустой). Наиболее часто ERROR выводит просто строковое сообщение об ошибке, например ERROR('strings'). Полное сообщение об ошибке имеет вид:
Error, (in name) string, ...
Приведем пример процедуры, в которой предусмотрен вывод сообщения об ошибке при задании переменной х < 0:
f := proc (X) if х<0 then error "invalid variable x: И", x else xA(l/2) end if end proc; /:= proc (x) if x < 0 then error "invalid variable x: %1", x else sqrt(x) end if end proc
f(3.);
1.732050808
f(-3.);
Error, (in f) invalid variable x: -3.
lasterror;
"invalid variable x: %1" -3.
> lastexception;
/, "invalid variable x: %1". -3.
Эта процедура вычисляет квадратный корень из числа х. При х < 0 выводится заданное сообщение об ошибке. Еще раз обращаем внимание читателя на учебный характер данного примера, поскольку вычисление квадратного корня (в том числе из комплексных и отрицательных действительных чисел) реализовано встроенной функцией sqrt.
Ключи в процедурах
В объявление процедуры можно включить ключевые слова, вводимые словом options opseq
Иногда их называют расширяющими ключами. Предусмотрены следующие ключи:
О arrow — определят процедуру-оператор в нотации ->;
О bull tin — определяет функцию как встроенную;
О call_external — задает обращение к внешним программным модулям;
О copyright — защищает процедуру от копирования;,
О inline — определяет процедуру как подчиненную (возможно, не для всех процедур - см. справку);
О load=memberName — загружает нужный для определений процедуры модуль (см. также опцию unload и детали в справке);
О operator — объявляет процедуру — функциональный оператор;
О system — определяет процедуру как системную,
О remember — определяет таблицу памяти для процедуры;
О trace — задает трассировку процедуры;
О unload=memberName — выгружает нужный для определения процедуры модуль (см. опцию load).
Ключ remember
Ключ remember обеспечивает занесение результатов обращений к процедуре в таблицу памяти, которая используется при исполнении процедуры. Функция ор позволяет вывести таблицу:
f:=proc(x) options remember; хА3 end:
f(2):
8
f(3);
27
op(4,eval(f)):
table([2 = 8, 3 = 27])
Ключ remember особенно полезен при реализации итерационных процедур. К примеру, в приведенной ниже процедуре (без использования ключа remember) время вычисления и-го числа Фибоначчи растет пропорционально квадрату и:
f:=proc(n) if n<2 then n else f(n-l)+f(n-2) fi end;
/:= ptoc(n) if n < 2 then n else f(n - 1) + f(« - 2) end if end proc
time(f(30)):
27.400
f(30):.
832040.
Вычисление f(30) по этой процедуре на ПК с процессором Pentium II 350 МГц занимает около 30 с — см. контроль этого времени с помощью функции time (результат в секундах).
Стоит добавить в процедуру ключ remember, и время вычислений резко уменьшится:
restart:
fe:=proc(n) options remember; if n<2 then n else fe(n-l)+fe(n-2) fi end:
fe(30);
832040
time(fe(30)): 0.
При этом вычисление fe(30) происходит практически мгновенно, так как все промежуточные результаты в первом случае вычисляются заново, а во втором они берутся из таблицы. Однако это справедливо лишь тогда, когда к процедуре было хотя бы однократное обращение. Обратите внимание на то, что данные процедуры являются рекурсивными — в их теле имеется обращение к самим себе.
Ключ builtin
Ключ builtin придает процедуре статус встроенной. Он должен использоваться всегда первым. С помощью функции evaKname) можно проверить, является ли функция с именем name встроенной:
eval(type) ;
proc() option builtin; 268 end proc
eval (print) ;
proc() option builtin; 229 end proc
Числа в теле процедур указывают системные номера функций. Следует отметить, что в новой версии Maple 7 они существенно отличаются от принятых в предшествующих версиях.
Ключ system
Этот ключ придает процедуре статус системной. У таких процедур таблица памяти может быть удалена. У обычных процедур таблица памяти не удаляется и входит в так называемый «мусорный ящик» (garbage collector).
Ключи operator и arrow
Эта пара ключей задает процедуре статус оператора в «стрелочной» нотации (->). Это достаточно пояснить следующими примерами:
o:=proc(x,y) option operator , arrow: x-sqrt(y) end:
о := (x,y)->x-y5^
o(4,2):
4-^2
o(4.2.):
2.585786438.
Ключ trace
Ключ trace задает вывод отладочной информации:
o:=proc(x,y) option trace, arrow; x-sqrt(y) end:
о := proc (x, y) option trace, arrow; x - sqrt(y) end proc
0(4,2.);
{--> enter o. args = 4. 2.
2.585786438
-- exit о (now at top level) = 2.585786438}
2.585786438
Ключ copyright
Этот ключ защищает тело процедуры от просмотра. Это поясняют следующие два примера:
o:*proc(x.y) x-sqrt(y) end:
о := proc(x,y)x - sqrt(y) end proc
> oo:=proc(x,y) option Copyright: x-sqrt(y) end: oo := proc (x, у) ... end proc
> 00(4,2.);
2.585786438
Нетрудно заметить, что во втором примере тело процедуры уже не просматривается. Для отмены защиты от просмотра можно использовать оператор 1nterfасе(verboseproc=2).
Общая форма задания процедуры
Выше мы рассмотрели основные частные формы задания процедур. Все они могут быть объединены в общую форму задания процедуры: name:=proc(<argseq>)# объявление процедуры
local<nseq>;#объявлениелокальных переменных
global <nseq>:#объявлениеглобальных переменных
options<nseq>;#объявлениерасширяющих ключей
description<str1ngseq>:#объявлениекомментарий
<stateq># выражения - тело процедуры
end: (или end:)# объявление конца процедуры
Эта форма охватывает все описанные выше частные формы и позволяет готовить самые сложные и надежно работающие процедуры.
Средства контроля и отладки процедур
Большая часть функций и операторов системы Maple 7 реализована в виде процедур, написанных на Maple-языке программирования. Благодаря возможности их просмотра пользователь получает неисчерпаемый источник примеров программирования на этом языке. Кроме того, пользователь может создавать свои собственные процедуры.
Для контроля и отладки процедур прежде всего надо уметь вывести их текст. Для этого служит функция: print(name);'
где name — имя процедуры..■
Однако перед тем, как использовать эту функцию, надо исполнить команду:
1nterfасе(verboseproc=2,prettyprint=l,version);
Maple Worksheet Interface, Maple 7, IBM INTEL NT, May 28 2001 Build ID 96223
Ее смысл будет пояснен ниже. Пока же отметим, что эта команда обеспечивает полный вывод текста процедур библиотеки. Встроенные в ядро процедуры, написанные не на Maple-языке, в полном тексте не представляются. Поясним это следующими примерами:
print(evalf);
procQ option builtin, remember; 167 end proc’
print(erf):
proc(x::algebraic)
local Re_x, Im_x, sr, si, xr, xi;
option ' Copyright (c) 1994 by the University of Waterloo. All rights reserved.';
if nargs о 1 then error "expecting 1 argument, got %1", nargs
elif type(x, 'complex(float)') then evalf('erf'(x))‘
elif x = 0 then 0
elif type(x, 'infinity') then
if type(x, {'cxjnfinity', 'undefined'}) thenundefined + undefined*!
elif type(Re(x), 'infinity') then CopySign(l, Re(x))
elif type(x, 'imaginary') then x else infinity + infinity*!
end if
elif type(x, 'undefined') then x*undefined
elif type(x, 'complex(numeric)') then
if csgn(x) = -1 then -erf(-x) else 'erf'(x) end if
elif type(x, '*') and type(op(l, x), 'complex(numeric)1)
and csgn(op(l, x)) = -1 then -erf(-x)
elif type(x, ' +') and traperror(sign(x)) = -1 then -
erf(-x)
else erf(x) := 'erf’(x)
end if
end proc
Здесь вначале выполнен вывод сокращенного листинга встроенной в ядро процедуры evalf, а затем выведен полный листинг процедуры вычисления функции ошибок erf. Эта функция имеет довольно короткую процедуру — многие важные функции и операторы задаются гораздо более сложными и большими процедурами.
Но вернемся к функции interface. Эта функция служит для управления выводом и задается в виде:
interface! argl. arg2. ... )
где аргументы задаются в виде равенств вида name=value и слов-указателей:
ansi
autoassign
echo
errorbreak
errorcursor
imaginaryunit
indentamount
labelling
label width
latexwidth
longdelim
patchlevel
plotdevice
plotoptions
plotoutput
postplot
preplot
prettyprint
prompt
quiet
rtablesize
screenheight
screenwidth
showassumed
verboseproc
version
warnlevel
К сожалению, объем и характер данной книги не позволяют остановиться на всех вариантах использования этой очень мощной функции, тем более что в ней может использоваться множество аргументов. Мы рассмотрим только некоторые, наиболее важные возможности.
Указание verboseproc=n задает степень детальности вывода листинга процедур. При п=0 текст не выводится, при п=1 выводится текст только заданных пользователем процедур, а при п=2 — всех процедур на Maple-языке. Пример этого был дан выше. Указание prettyprint=O или 1 управляет выводом стандартных сообщений. Указание plotdevice-string управляет выводом графики, например plotdevice-gif указывает на то, что запись графиков в виде файлов будет происходить в формате,gif. '
Одним из основных средств отладки процедур является функция трассировки trace(name). Детальность ее работы задается системной переменной printlevel (уровень вывода). При printlevel :=п (значение и = 1 по умолчанию) выводится результат только непосредственно исполняемой функции или оператора. Для вывода информации о выполнении ^-го уровня вложенности надо использовать значение этой переменной от 5*^ до 5*(&+1). Так, при и от 1 до 5 выводятся результаты трассировки первого уровня, при п от 6 до 10 — второго и т. д. Максимальное значение п = 100 обеспечивает трассировку по всем уровням вложенности процедуры name. Следующий пример показывает осуществление трассировки для функции int(x^n,x):
printlevel:=5;
printlevel := 5
trace(int);
{--> enter trace, args = int
-- exit trace (now at top level) = int} int
> int(xAn,x);
{--> enter int. args = xAn. x
U + li
x
answer :=;—
n + 1
(и + n
n + 1
<-- exit int (now at top level) = xA(n+l)/(n+l)} + f)
X
ll + 1
Действие функции трассировки отменяется командой untrace:
untrace (int) ;
{--> enter untrace, args = int
-- exit untrace (now at top level) = }
int(xAn,x);'
{--> enter int. args = xAn, x
-- exit int (now at top level) = x~(n+l)/(n+l)}
(л + 1)
X
П + 1
printlevel:=1;
printlevel := 1
int(xAn,x);
0> + D
X.
Л+1
При отладке алгоритмов выполнения вычислений надо тщательно следить за сообщениями об ошибках. Для этого в Maple предусмотрены функция traceerr
и системная переменная lasterr, в которой сохраняется последнее сообщение об ошибке. При каждом обращении к tracerr переменная lasterr очищается:
2/0;
Error, numeric exeption:division by zero
2/4;
1/2
2/.3;
6.666666667
lasterror:
"division by zero"
traperror(3/4):
3/4
lasterror;
lasterror ■
traperror(5/0):
Error, numeric exeption:division by zero
lasterror;
"numeric exeption:division by zero"
Этот пример показывает, как может быть проведено отслеживание ошибок в ходе вычислений. Вообще говоря, пользователь системы Maple 7 редко привлекает описанные средства, поскольку проще отладить вычислительный алгоритм прежде, чем на его основе будет составлена процедура. При правильном построении процедур ошибочные ситуации заведомо предусматриваются и должным образом обрабатываются.
Работа с отладчиком программ
В большинстве случаев составители программ (процедур) редко прибегают к пошаговой их отладке. Средства общей диагностики Maple 7 развиты настолько хорошо, что позволяют выявлять грубые ошибки в процедурах при их выполнении. Иногда, правда, для этого приходится неоднократно «прогонять» процедуру, пока она не начнет работать как задумано. Тем не менее для отладки процедур служит специальный интерактивный отладчик (debugger). Опишем, как его запустить и как с ним работать.
Допустим, мы составили некоторую процедуру demo, вычисляющую сумму квадратов чисел (1Т2+2^2+...+пА2):
demo:=proc(n::integer) local y.i:
y:=0:
for i to n do y:=y+i'2 od
end;
demo := proc \n;;integer^ local y,z;y:=0;for zto n do у := у + zA2 end do end proc
demo(3);
14
Чтобы включить отладчик в работу, надо исполнить команду stopat:
> stopat(demo);
[ demo ]
> demo(3);
demo:
1* у :=0;
DBG>
Признаком, указывающим на работу отладчика, является изменение приглашения к вводу со знака > на DBG> (как нетрудно догадаться, DBG означает debugger). Теперь, подавая команды next (следующий), step (шаг) и stop (остановка), можно проследить выполнение процедуры:
DBG> next
О
demo:
2 for i to n do
end do
DBG> step
0
demo:
3 у := y+iA2
DBG> step■
'
demo:
у := y+iA2
DBG> step
5.
demo:
y—y+iA2
DBG> step
14
В последнем случае процедура по шагам дошла до конца вычислений; на этом работа отладчика завершается сама собой.■
Можно также вывести листинг процедуры с помощью команды showstat:
> showstat(demo);
demo := proc(n::integer) local у, i;
*у := 0;
for i to n do
у := y+iA2
end do end proc
Обратите внимание, что в этом листинге строки вычисляемых элементов пронумерованы. Это сделано для облегчения разбора работы процедуры.
В общем случае отладчик выключается при выполнении команд stopat, stopwhen или stoperr. Если используется команда stopat, то вывод на экран соответствует ' исполнению последней выполненной команды. Для отмены этой команды используется команда unstopat.
Команда stopwhen позволяет установить точку наблюдения за указанной в команде переменной. Отменить ее можно командой unstopwhen. Команда stoperror позволяет задать остановку при появлении определенной ошибки. Для отмены этой команды используется команда unstoperror.
Команда cont используется для продолжения работы до следующей точки прерывания, установленной указанными выше командами, или до конца процедуры. Для прерывания отладки можно использовать команду quit. После команды stop можно вычислить любое Maple-выражение.
■ В действительности команд отладчика намного больше и их функции более развиты, чем это описано выше. Пользователи, заинтересованные в серьезной работе с отладчиком (скорее всего, их немного), могут просмотреть его подробное описание. Для этого в разделе справочной системы Context найдите раздел Programming, а в нем — раздел Debugging.
Операции ввода и вывода
Считывание и запись программных модулей
В уроке 2 рассматривалась работа с файлами документов. Вводимые в текущий документ программные модули хранятся вместе с ним, так что при отказе от загрузки какого-либо документа все его программные блоки не могут использоваться в других документах. Кроме того, порой неудобно загружать объемный документ ради использования одного или нескольких модулей, например процедур. Поэтому в Maple 7 введены средства, позволяющие записывать нужные модули (в том числе результаты вычислений) на диск и считывать их в случае необходимости.
Для записи на диск используется оператор save:
О save f 11 ename — запись всех определений текущего файла под именем filename;
О save name_l, name_2namek, filename — запись избранных модулей с именами name_l, name_2, ..., name_k под именем filename.
Считывание имеющегося на диске файла filename осуществляется оператором read: read <filename>.
При считывании все имеющиеся в файле определения становятся доступными для рабочих документов Maple. При записи файлов отдельных определений используется специальный внутренний Maple-формат файлов. Для загрузки файлов типа *.т из стандартной библиотеки используется функция readl ib. А для записи файлов вкачестве библиотечных достаточно в имени filename оператора
save указать расширение .гл. Разумеется, можно считывать такие файлы и оператором read, указав в имени файла расширение .т:
save my_proc,'my_1ib.m': # запись файла ту_ргос и
# библиотечного файла mylib.m;
load 'my_lib.m‘: # считывание библиотечного файла
# my_lib.m.
Создание своей библиотеки процедур
Если приведенные выше примеры составления процедур кажутся вам простыми, значит, вы неплохо знаете программирование и, скорее всего, уже имеете несколько полезных процедур, которые вы хотели бы сохранить — если не для потомков, то хотя бы для своей повседневной работы. Сделать это в Maple 7 довольно просто.
Прежде всего надо определить имя своей библиотеки, например myl 1Ь, и создать для нее на диске каталог (папку) с заданным именем. Процедуры в Maple 7 ассоциируются с таблицами. Поэтому вначале надо задать таблицу-пустышку под будущие процедуры:
restart;
myl1b:=tabl е():
mylib := table([])
Теперь надо ввести свои библиотечные процедуры. Они задаются с двойным именем — вначале указывается имя библиотеки, а затем в квадратных скобках имя процедуры. Для примера зададим три простые процедуры с именами fl, f2 и f3: > mylib[fl]:=proc(x::anything) sin(x)+cos(x) end:
mylib[f2]:=proc(x: anything) sin(xC2+cos(x)'2 end:
mylib[f3]:=proc(x::anything) if x=0 then 1 else sin(x)/x fi end:
Рекомендуется тщательно проверить работу процедур, прежде чем записывать их на диск. Ограничимся, скажем, такими контрольными примерами:
mylib[fl](x): sin(ac) + cos(x)
mylib[fl](l.):
1.3817.73291■'
mylib[f2](x):
sin(x)2 + cos(x)2
simplify(mylib[f2](x)):
1
evalf(myl1b[f3J(x));
sin(x)
x
sin(0)/0;
Error, division by zero
mylib[f3](0):
1
evalf(mylib[f3](.5)): .9588510772'
Можно построить графики введенных процедур-функций. Они представлены на рис. 7.4.■
Рис. 7.4. Построение графиков процедур-функций fl, f2 и f3
С помощью функции with можно убедиться, что библиотека mylib действительно содержит только что введенные в нее процедуры. Их список должен появиться при обращении with(mylib):■
with(mylib);
WLMA '
Теперь надо записать эту библиотеку под своим именем на диск с помощью команды save:
save(myl1b,'c:/myl1b.m‘):
Обратите особое внимание на правильное задание полного имени файла. Обычно применяемый для указания пути знак Л в строках Maple-языка используется как знак продолжения строки. Поэтому надо использовать либо двойной знак \\, либо знак /. В нашем примере файл записан в корень диска С. Лучше поместить библиотечный файл в другую папку (например, в библиотеку, уже имеющуюся в составе системы), указав полный путь до нее.
После всего этого надо убедиться в том, что библиотечный файл записан. После этого можно сразу и считать его. Для этого вначале следует командой restart устранить ранее введенные определения процедур: > restart:
С помощью команды with можно убедиться в том, что этих определений уже нет:
with(mylib);
Error, (in pacman:-pexports) mylib is not a package
После этого командой read надо загрузить библиотечный файл:
read('c:/mylib.m'):
Имя файла надо указывать по правилам, указанным для команды save. Если все выполнено пунктуально, то команда with должна показать наличие в вашей библиотеке списка процедур fl, f2 и f3:
with(mylib): [fl. f2. f3]
И наконец, можно вновь опробовать работу процедур, которые теперь введены из загруженной библиотеки:
Шх):
sin(x) + cos(x)
simplify(f2(y)):
1
f3(0):
*z
> f3(l.);/
.8414709848/
Описанный выше способ создания своей библиотеки вполне устроит большинство пользователей. Однако есть более сложный и более «продвинутый» способ ввода своей библиотеки в состав уже имеющейся. Для реализации этого Maple 7 имеет следующие операции записи в библиотеку процедур si, $2, ... и считывания их из файлов filel, Ще2, ...: savelib(sl. s2 sn. filename) readlib(f. filel. file2. ...)
С помощью специального оператора makehelp можно задать стандартное справочное описание новых процедур:
makehelp(n,f,b).
где п — название темы, f — имя текстового файла, содержащего текст справки (файл готовится как документ Maple) и b — имя библиотеки. Системная переменная libname хранит имя директории библиотечных файлов. Для регистрации созданной справки надо исполнить команду вида:
libname:“libname. '/mylib';
С деталями применения этих операторов можно ознакомиться в справочной системе.
К созданию своих библиотечных процедур надо относиться достаточно осторожно. Их применение лишает ваши Maple-программы совместимости со стандартной версией Maple 7. Если вы используете одну-две процедуры, проще поместить их в те документы, в которых они действительно нужны. Иначе вы будете'вынуждены к каждой своей программе прикладывать еще и библиотеку процедур. Она нередко оказывается большей по размеру, чем файл самого документа. Не всегда практично прицеплять маленький файл документа к большой библиотеке, большинство процедур которой, скорее всего, для данного документа попросту не нужны. Особенно рискованно изменять стандартную библиотеку Maple 7.
Впрочем, идти на это или нет — дело каждого пользователя. Разумеется, если вы готовы создать серьезную библиотеку своих процедур, то ее надо записать и тщательно хранить. С Maple 7 поставляется множество библиотек полезных процедур, составленных пользователями со всего мира, так что и вы можете пополнить ее своими творениями (см. урок 14).
Запись и считывание данных
Обширные возможности Maple 7 делают привлекательным применение этой программы для автоматической обработки данных, поступающих от каких-либо экспериментальных установок. Для этого установки снабжаются интерфейсными платами (например, аналого-цифровыми преобразователями) и необходимым программным обеспечением. Возможна и передача данных, полученных с помощью Maple 7, в экспериментальные установки.
Обмен информацией между Maple 7 и внешней средой (к ней, кстати, относятся и другие программы) чаще всего осуществляется через файлы текстового формата, поскольку именно с такими файлами могут работать практически все программы. Для записи данных в файл служит оператор writedata:
wr1tedata[APPEND](filelD. data)
wr1tedata[APPEND](f1leID. data, format)
writedata[APPEND](f1leID. data, format, default)
Здесь filelD — имя или дескриптор файла данных, data — список, вектор или матрица данных, format — спецификация формата данных (integer, float или string), default — процедура, задающая запись нечисловых данных, например:
writedata(F.A,float,proc(f.x) fprintf(f, 'CMPLXWg ДдГ ,Re(x). Im(x)) end):
Необязательный указатель APPEND используется, если данные должны дописываться в уже созданный файл.
Считывание из файла filename обеспечивает функция readdata:
readdata(fileID. n)
readdata(filelD, format, n)
readdata(fileID. format).'
Здесь n — целое положительное число, задающее число считываемых столбцов. Ниже представлены примеры этих операций:
> data:-array([[l,2,3].[4,5,6],[7,8.9]]):
Г1 2
data := 4 5
7 8
3"
6
9
writedata('C:\\mydata.txt'.data);
restart;
data;
data
> data:=readdata('C:\\mydata.txt',3);
data :=[[!., 2., 3.], [4., 5., 6.], [7., 8., 9.]]
Maple 7 имеет также типичные файловые операции:
О writeto — запись в файл;
О appendto — добавление к файлу;
О open — открытие файла;
О close — закрытие файла;
О write — запись в открытый файл;
О save — запись выражений в файл;
О read — считывание из файла.
Их реализация, однако, зависит от платформы, на которой установлена система, и от ее настройки.
Вывод в специальных форматах
Вывод в формате LaTeX
Maple 7 имеет ряд средств для общения с другими программами. Часть из них, в основном относящаяся к обмену через файлы, уже была описана. Однако Maple 7 способна генерировать коды для прямого их включения в такие программы, причем не только математические.
Для подготовки математических статей и книг широкое распространение получили редакторы ТеХ и LaTeX. Для подготовки выражений или файлов в их формате служит функция:
latextexpr.filename)
Параметр filename не обязателен, если достаточно получить нужное выражение в ячейке вывода Maple 7:
latex(a*x*2+b*x+c);
а{х}Л{2}+Ьх+с
latex(diff(xAn,x$2));.
{\frac {{x}A{n}{n}A{2}}{{x}A{2}}}-{\frac «х}л{п}п}«х}А{2}}}
Генерация кодов на языке Фортран
Язык Фортран вот уже многие десятилетия используется для программирования вычислительных задач. Накоплены обширные библиотеки решения таких задач на Фортране. Почитателей этого языка Maple 7 порадует тем, что она позволяет готовить коды для программ на Фортране. Для этого вначале надо загрузить библиотечную функцию:
with(codegen,fortran);
^fortran ]
После этого может использоваться функция fortran:
fortran(expr,f 11ename=str.opt1 ml zed)
Два последних параметра не обязательны при выводе выражения ехрг в форме, присущей языку Фортран:
fortran(a*x'2+b*x+c):
tO = a*x**2+b*x+c
fortran(diff(x^n,x$2));
tO = x**n*n**2/x**2-x**n*n/x**2
Параметр optimize позволяет генерировать оптимизированные коды:
fortran(a*x^2+b*x+c,optimized);
tl = x**2
t4 = a*tl+b*x+c
При этом вычислительный процесс строится так, чтобы минимизировать число арифметических операций.
Генерация кодов на языке С
Язык С (Си) также широко используется для решения вычислительных задач. Достаточно отметить, что сама система Maple 7 создана на языке С.
Для генерации кодов на языке С вначале надо подключить соответствующую функцию:
with(codegen.C):
[С]
Затем можно использовать функцию С:
C(expr.folename=str.optimized)
Эта функция используется по аналогии с функцией fortran, что и показывают приведенные ниже примеры:
> C(diff(x"b,x$2)):
tO = pow(x,1.0*b)*b*b/(x*x)-pow(x,1.0*b)*b/(x*x);
C(diff(x"b.x$2).optimized);
tl = pow(x,1.0*b);
t2 = b*b;
14 = х*х;
t5 = l/t4;
t9 = tl*t2*t5-tl*b*t5;
Обширные возможности преобразования выражений в различные формы предоставляет функция convert. А функция interface позволяет управлять выводом. К сожалению, объем книги не позволяет рассмотреть все многочисленные варианты применения этих функций.
Дополнительные возможности Maple-языка
Переназначение определений
В большинстве случаев Maple-язык использует достаточно длинные идентификаторы для своих определений, например функций. Однако с помощью функции alias можно изменить любое определение на другое, если оно кажется пользователю более удобным. Функция alias записывается в виде:
alias(el. е2eN)
где el, е2, ..., eN — ноль или более равенств.
Эта функция возвращает список переназначений и осуществляет сами переназначения. Например, для замены имени функции Bessel J на более короткое имя BJ достаточно параметром функции alias записать BJ=BesselJ:
alias(BJ=BesselJ);
BJ, Fx
[BJ(0,l.),BesselJ(0,l.)];
[.7651976866, .7651976866]
Можно также переназначить функцию пользователя:
al 1as(Fx=F(x));
В J, Fx
diff(F(x),x):
int(F(x),x=a..b):
Fxdx а
Для отмены переназначения, например BJ, используется та же функция alias с повтором переназначения:
alias(BJ=BJ):
Fx
> BJ(O.l-):
BJ(O, 1.)
Обратите внимание на то, что BJ исчезло из списка переназначений и функция BJ(O,1.) уже не вычисляется, поскольку ее больше нет.
Модули
Модули придают языку программирования Maple 7 некоторые свойства языков объектно-ориентированного программирования. Они служат для реализации абстрактного типа данных на основе инкапсуляции — объединения данных и процедур их обработки. Модули задаются ключевым словом module с пустыми скобками О и завершаются словами end module или просто end:
name := moduleO
export eseq: local Iseq: global gseq: option optseq: description desc: Тело модуля end module (или просто end)
Хотя структура модуля во многом напоминает структуру процедуры, включая объявление локальных и глобальных переменных, параметров и описаний, между ними есть существенная разница:
О модуль не имеет списка входных параметров;
О в модуле могут размещаться данные;
О модули могут использоваться для создания пакетов процедур, доступ к которым обеспечивается командой with;
О модули имеют свойства в виде локальных переменных и методы в виде процедур интерфейса модулей;
О реализация абстактных типов данных с помощью модулей скрыта от пользователя;
О модули могут содержать оператор export eseq, объявляющий экспортируемые переменные модуля;
О для доступа к экспортируемым переменным модуля может использоваться специальный оператор «:-» (двоеточие и минус);
О модули и процедуры могут вкладываться друг в друга без ограничения уровня вложенности;
О модули могут иметь специальные конструкторы объектов.
Следующий пример демонстрирует создание модуля pt, в котором заданы две операции (сложения plus и умножения times) и показан доступ к ним:
pt:= moduleO
export plus, times: plus := (a.b) -> a + b; times := (a.b) -> a * b;
end module;
pt := module () export plus, times; end module
> pt:-plus(3,5):
8.
pt: -timesO,?);
21
Детальную информацию о модулях и о конструкторах объектов можно найти в справках по ним. Некоторые пакеты Maple 7 (в основном сравнительно новые) реализованы уже не в виде процедур, а в виде модулей (например, в виде модуля сделан пакет LinearAlgebra). В простейшем виде модули могут использоваться всеми пользователями системы Maple 7, но их серьезное применение (например, с целью создания полноценных пакетов Maple 7) требует серьезного знакомства с техникой объектно-ориентированного программирования. Такое зна- ' комство выходит за рамки данной книги.
Макросы
Макрос — это макрокоманда, короткая запись длинных определений. По сравнению с переназначениями макросы более гибки и могут использоваться для сокращения операций загрузки новых определений из библиотеки и пакетов. Макросы создаются с помощью функции macro:
macrotel. е2 еп)
где el, е2еп — ноль или более равенств.
В следующем примере функция numbperm с помощью макроса заменена на пр:
numbperm([l,2,3,4]);
24-
macro!np=numbperm(V));
"Р
> V:=[1.2.3.4];
T:= [ 1,2, 3, 4]
np(V);
24
Макросы могут быть использованы для конструирования выражений из их макроопределений.
Внешние вызову
Maple 7 имеет команду system!string), с помощью которой можно исполнить любую команду MS-DOS, записанную в виде строки string. Например, для форматирования гибкого диска из среды Maple 7 можно использовать стандартную команду MS-DOS:
system!'format а:');
На экране появится окно MS-DOS с начальным диалогом форматирования диска А. Это окно показано на рис. 7.5.
При работе в операционной системе Windows эта возможность практически бесполезна, поскольку форматирование диска с большими удобствами можно выполнить средствами Windows.
Внешние вызовы командой system куда более полезны для MS-DOS-реализаций Maple, которые кое-где используются и по сей день. Но поскольку данная книга посвящена самым современным Windows-реализациям системы Maple 7, более подробное рассмотрение операций внешних вызовов не имеет особого смысла.
Рис. 7.5. Результат выполнения команды форматирования гибкого диска
Вызов внешних процедур, написанных на языке С
Maple 7 имеет средства для вызова внешних откомпилированных процедур, написанных на языке С. Такая необходимость для подавляющего числа пользователей Maple 7 вызывает большие сомнения в силу следующих причин:
вся идеология системы Maple 7 основана на максимальном исключении программирования на других языках, помимо Maple-языка;
язык С сложен для большинства пользователей Maple 7, которых трудно отнести к «путным» программистам;
О отладка комплекса Maple 7 + компилятор С (например, фирмы Microsoft) вряд ли под силу обычным пользователям, тем более что на практике такой комплекс реально не работает без кропотливой отладки.
Учитывая сказанное, мы отметим лишь, что для использования внешних процедур (например, остро нужных пользователю или более быстрых, чем аналогичные процедуры Maple) используется специальная команды define_external, которая генерирует две интерфейсные программы — на языке С и на языке Maple соответственно. Программа на языке С компилируется вместе с внешней процедурой, которая будет использоваться. Результирующий код создает динамически подключаемую бублиотеку DLL. В свою очередь, программа на языке Maple служит как интерфейсная для организации взаимодействия с вызываемой внешней процедурой. Более подробное описание возможностей работы с внешними процедурами можно найти в справке по ним.
Что нового мы узнали?
В этом уроке мы научились:
О О о о о о о о о оО О о о о о о о о оЗадавать функции пользователя.
О О о о о о о о о о
О О о о о о о о о о
Использовать условные операторы.
Применять циклы for и while.
Использовать операторы пропуска и прерывания.
Задавать процедуры и процедуры-функции.
Использовать средства контроля и отладки процедур.
Работать с отладчиком программ.
Применять операции ввода и вывода.
Осуществлять вывод в специальных форматах.
Использовать дополнительные возможности Maple-языка.
Математический анализ
Вычисление сумм последовательностей
Вычисление произведений членовпоследовательностей
Вычисление производных
Вычисление интегралов
Разложение функций в ряд
Решение уравнений и неравенств
Вычисление сумм последовательностей
Основные формулы для вычисления сумм последовательностей
Применение систем символьной математики особенно эффективно при решении задач математического анализа. Maple 7 обладает богатейшей базой данных по формулам математического анализа и может полноценно заменять тома книг со справочными данными. При этом важно, что Maple не только «знает» многие формулы, но и может успешно использовать их при решении достаточно сложных задач в аналитическом (символьном) виде.
Начнем рассмотрение таких операций с вычисления сумм последовательностей. Вычисление суммы членов некоторой последовательности /(^) при изменении целочисленного индекса к от значения т до значения п с шагом +1, то есть выражения:
У fW = /(m) + /(m +1) +... + /(n -1) + /(и) . к-т
является достаточно распространенной операцией математического анализа. Для вычисляемой и инертной форм сумм последовательностей служат следующие функции:
sum(f.k);sum(f,k=m..n);sum(f,k=alpha);
Sum(f.k);Sum(f,k=m..n);Sum(f,k=alpha):
Здесь f — функция, задающая члены суммируемого ряда, к — индекс суммирования, тип — целочисленные пределы изменения k, alpha — RootOf-выражение. Значение п может быть равно бесконечности. В этом случае для п используется обозначение ? или infinity.
Допустимо (а зачастую рекомендуется с целью исключения преждевременной оценки суммы) заключение f и к в прямые кавычки, например sum('f , 'k'=m. .n). Это сделано во всех примерах справочной системы Maple 7, относящихся к функции sum. Мы, однако, отказываемся от этого в тех случаях, когда результат идентичен при заключении f и к в кавычки и без такового. Во избежание путаницы, связанной с этой тонкостью синтаксиса функции sum, рекомендуется все примеры проверять после команды restart, убирающей предыдущие определения f и к.
Последовательности с заданным числом членов
Простейшими являются суммы последовательностей с фиксированным числом членов. Ниже даны примеры применения этих функций: "
restart;k:-2:
к:=2
Sum(kA2,k-l..4);
4
2=1
sum(k*2,k=l..4);
Error, (in sum) summation variable previously assigned, second argument evaluates to 2 = 1 .. 4
sum('kA2‘,'к'—1..4);
30
sum(l/i,1=l..100);
14466636279520351160221518043104131447711
2788815009188499086581352357412492142272
Обратите внимание, что во втором примере система отказалась от вычисления, а в третьем даже выдала сообщение об ошибке, связанной с тем, что переменной к перед вычислением сумм было присвоено численное значение 2. После заключения выражения и переменной индекса к в прямые кавычки ошибка исчезла, поскольку такая операция означает, что переменной придается неопределенное значение.
Суммы с заданным пределом
Особый класс образуют последовательности, у которых предел задается в общем виде значением переменной. Ниже представлен ряд последовательностей, у которых предел задается как 0.. п или 1.. п:
restart;
sum(k,k=l..n):
22
sum("i/(т+1), 1=0. ,n);
n + l-4,(n+2)-y
sum(k*b1nomial (n.k),k=0..n);
Такого рода последовательности, как видно из приведенных примеров, нередко имеют аналитические выражения для своего значения. Его вычисление намного проще, чем формирование заданной последовательности с прямым суммированием ее членов. Некоторые из таких сумм выражаются через специальные математические функции.
Суммы бесконечных последовательностей
Многие суммы бесконечных последовательностей сходятся к определенным численным или символьным значениям, и система Maple 7 способна их вычислять. Это поясняют следующие примеры:
> restart:
> sum(-exp(-k),k); e
(-1 + e)e*
> sum(k*aAk,k):
ak ^ka -k-a)
sumd/kl,k=0..infinity);
e
> Sumd/iA2,i-l.. infinity)=sumd/iA2,i=l..infinity):
1 _ 1 —2 z2 б"
Sumd/n! ,n=l.. infinity)=sumd/n!,n=l..infinity):
evalfd):
1.718281828 = 1.718281828
Sum(1/1A2.1)=sum(1/1A2,i):
i I
Sum(1/1A2,1=1..infinity)=sum(l/iA2.1=1..infinity):
У — = 1.2
" z2 6
> Sum(l/n!,n=l.. infinity)=sum(l/n!,n-l..infinity):
s^ed-e1-11)
> eval f№;
1.718281828 = 1.718281828
> Sum(1/1A2,1)=sum(1/1A2.1);
£-l = -T(i,i)
Сумма от перемены мест слагаемых меняется!
Даже школьники xopoiuo знают, что от перестановки слагаемых сумма не изменяется. Однако Maple 7 (кстати, как и большинство других систем компьютерной математики) при вычислении сумм, увы, этому правилу не следует. Приведенные ниже примеры наглядно показывают этот просчет системы:
> restart:
> Sum(k,k-1..5)“SUm(k,k«l. .5):
3>=15
к = 1
> Sum(k,k=5..l)=sum(k,k=5..1):
Z к = -9
> 5+4+3+2+1:
15
При вычислении сумм последовательностей надо строго соблюдать прямой (нарастающий) порядок задания значений индексной переменной суммы. Нарушение этого порядка чревато грубыми ошибками.
Двойные суммы
Могут встречаться множественные суммы по типу «сумма в сумме». Ограничимся приведением примера двойной суммы, имеющей аналитическое значение:
> Sum( Sum(kA2, k = l..m), m- 1..N): factor! simp!ify( value(X))):
N ( m \
m = 1 A = 1
^(N+IHN+Vf,
При конкретном значении N такую сумму нетрудно вычислить подстановкой:
> subs! N = 100, X):
8670850
Как видно из приведенных примеров, средства вычисления сумм последовательностей Maple 7 позволяют получать как численные, так и аналитические значения сумм, в том числе представляемые специальными математическими функциями.
Вычисление произведений членов последовательностей
Основные формулы для произведения членов последовательностей
Аналогичным образом для произведений членов /(г) некоторой последовательности, например вида:
ЦЛО = №№ + !)../(» -1)/(")
i—m
используются следующие функции:
product(f.k):product(f,k-m..n):product(f,k=alpha):
Product(f.k):Producttf,k=m..n);Product(f,k=alpha).
Обозначения параметров этих функций и их назначение соответствуют приведенным для функций вычисления сумм. Это относится, в частности, и к применению одиночных кавычек для f и к.
Примеры вычисления произведений членов последовательностей
Примеры применения функций вычисления произведений даны ниже:
restart;
Product(kA2.k=l. ,5)=product(kA2,k=l..5);
5
Й 14400
к = 1
Product(kA2,k)=product(kA2,k);
П^гШ
к
product(a[k],к=15):
д|а2 «3 а4 а5
f :=[1,2,3.4,5];
Z:= [1,2, 3,4, 5]
product(f[к],к=1..4);
24
product(n+k,k=l..4);
(n + 1) (n + 2)(« + 3)(« +4)
Product(n+k,k=l..m)=product(rn-k.k=l.,m);
> product(k,k=Root0f(xA3-9)): 9
Как и в случае вычисления сумм, вычисление произведений возможно как в численной, так и в аналитической форме — разумеется, если таковая существует. Это показывает следующий пример:
Product(2/1,1=1. .infinity)=product(2/1,1=1..infinity);
Нетрудно понять, что при i, стремящемся к бесконечности, перемножаемые члены последовательности стремятся к нулю, а потому к нулю стремится и их произведение. Вопросы доказательства подобных утверждений находятся за рамками данного учебного курса, ибо он посвящен не математике как таковой, а конкретной программе для математики — Maple 7. .
От перемены места сомножителей произведение меняется!
Хотя произведение не зависит от порядка расположения сомножителей, их перестановка в Maple 7 недопустима. Это иллюстрируют следующие примеры:
> Product(kA2,k=l.,4)=product(kA2.k=l..4);
П ^ = 576
А = 1 > Product(k'2,k^4..l)=product(kA2,k=4..1);
> 4А2*3А2*2А2*Г2;
576
IX) ВНИМАНИЕ Привычислении произведений надо строго соблюдать прямой (нарастающий) порядок задания значений индексной переменной произведения. Нарушение этого порядка чревато грубыми ошибками.
Вычисление производных
Функции дифференцирования выражений diff и Diff
Вычисление производных функций f"(x) = d/"(x)/cLx" и-го порядка — одна из самых распространенных задач математического анализа. Для ее реализации Maple 7 имеет следующие основные функции:
diff(a. xl. х2 xn)d1ff(a. [xl, х2 хп])
D1ff(a, xl. х2 xn)Diffia. [xl. х2 хп])
Здесь а — дифференцируемое алгебраическое выражение, в частности функция f(xl, х2 хп) ряда переменных, по которым производится дифференцирование. Функция Diff является инертной формой вычисляемой функции diff и может использоваться для естественного воспроизведения производных в документах. Первая из этих функций (в вычисляемой и в инертной форме) вычисляет частные производные для выражения а по переменным xl, х2, ..., хп. В простейшем случае diff(f(x),x) вычисляет первую производную функции f(x) по переменной х. При п, большем 1, вычисления производных выполняются рекурсивно, например diff(f(x), х, у) эквивалентно diff(diff (f(х), х), у). Оператор $ можно использовать для вычисления производных высокого порядка. Для этого после имени соответствующей переменной ставится этот оператор и указывается порядок производной. Например, выражение diff(f(x),х$4) вычисляет производную 4-го порядка и эквивалентно записи diff(f Сх) .x.x.XfX). A diffСд(х,у) ,х$2,у$3) эквивалентно diff(g(x,y) ,х,х,у,у,у),
Примеры вычисления производных: > restart;
D1ff(a*xAn,x)-d1ff(a*xAn,x);
д „ а х п т-ах = охх
Diff(a*sin(b*x),x)=diff(a*sin(b*x),х);
a sin(Z)x) = a cos(bx) b ох
> D1ff([siп(х),xAn,exp(a*x)].x)=di ff([si n(x),xAn,exp(a*x)],x);
3 , , , , П <“^3[sin(x), x , e ] = ox3 , , , , П <“^3[sin(x), x , e ] = ox, x x" n (ax) cos(x), —^—, a e, x x" n (ax) cos(x), —^—, a e
3 , , , , П <“^3
[sin(x), x , e ] = ox
3 , , , , П <“^3
[sin(x), x , e ] = ox
, x x" n (ax) cos(x), —^—, a e
, x x" n (ax) cos(x), —^—, a e
Diff(a*xAn,x$3)=diff(a*xAn,x$3):
d3 n a x" n" 3 a x" n2 2 ax" n ; a X =;:+:
> DIff([xA2,xA3,xAn],x)=di ff([xA2,xA3,xAn],x);
d з 3x n
[x, x3, x 1 = 2 x, 3 x, OXX
simplify(l);
Д [x2, x3, x"] = [2 x, 3 x2, x" "л] dx
Как видно из приведенных примеров, функции вычисления производных могут использоваться с параметрами, заданными списками. Приведенные ниже примеры показывают эти возможности и иллюстрируют дифференцирование функции пользователя для двух переменных:
restart;
f(x,y):=cos(x)*yA3:
f(x,y) := cos(x)^3
Diff(f(x,y),x)=diff(f(x,y),x);
dзз
^ cos(x)y = -sin(x)y
Diff(f(x,y),y)-diff(f(x.y),y);
dзI
^ cos(x) у = 3 cos(x) у
Diff(f(x,y),x,y)=diff(f(x,y),x,y):
d2з,
g^gx COS(x)y = -3 Sin(x)y '
Diff(f(x,y),x$4)-diff(f(x,y),x$4);
d4
— cos(x)/ = cos(x)y3 ox
Diff(f(x,y),y$2)-diff(f(x.y),y$2);
g2
—т cos(x)y3 = 6 cos(x)y
dr
> D1ff(f(x,y),x$4.y$4)=diff(f(x,y),х$3,у$2);
d8
4, 4 cos(x) У3 = 6 sin(x) у
oy ox
Получаемые в результате дифференцирования выражения могут входить в другие выражения. Можно задавать их как функции пользователя и строить графики производных.
Дифференциальный оператор D
Для создания функций с производными может также использоваться дифференциальный оператор D. Порою он позволяет создавать более компактные выражения, чем функции diff и Diff. Дифференциальный оператор можно записывать в следующих формах: D(f) или D[i](f), где параметр f — выражение или имя функции, i — положительное целое число, выражение или последовательность. Оператор D(f) просто вычисляет имя производной от f, поскольку в этой форме он эквивалентен unnaply(diff(f(x) ,х) ,х). В форме D(f) (х) этот оператор подобен diff(f(x) ,х). Приведем примеры дифференцирования функций, заданных только именами, и функций с одним параметром:
restart;
D(cosA2):
2 sin cos
D(expA2+cosA2+tan+GAMMA);
2 exp2 - 2 sin cos + 1 + tan2 + Y Г
D(ln);
1 a ^> — a
D(sin)(x)=diff(sin(x),x);
cos(x) = cos(x)
Следующий пример показывает дифференцирование функции пользователя fun с применением дифференциального оператора D и функции diff:
fun:—(х)->sin(x^2);
fun :=х —э sin(x2)
D(fun)—d1ff(fun(x),х);
(х —> 2 cos(x2) х) = 2 cos(x2) х
Дифференциальный оператор можно применять и для дифференцирования функций нескольких переменных по заданной переменной:
f:-(x,y,z)->x*exp(y)+ln(z);
/ := (х,у, z) —>хеу + ln(z)
D[l](f);
(х,^, z) —> еу
D[2](f):
<x,y,z)-^xey
D[3](f):
(х, У, z)—
Пример применения дифференциального оператора для функции f, заданной программным объектом-процедурой, представлен ниже:
restart;
f:=proc(x,b,n) local 1,d,s:
s:=0;
for 1 from n by -1 to 0 do s:=s*x+b[1] od;
s
end:
D[l](f);
proc (x, b, n) local i, s, sx;
sx := 0;
s := 0;
for i from n by -1 to 0 do sx := yxxx + s-; s := yXx + Z>[z] end do ;
sx
end proc'
D[l](sin*cos);
cos2 - sin2
Этот пример показывает реализацию схемы Горнера для полинома b степени п от Переменной х. При этом применение оператора дифференцирования возвращает процедуру. Ряд интересных возможностей по вычислению производных предоставляет пакет расширения student.
Вычисление интегралов
Вычисление неопределенных интегралов
Вычисление неопределенного интеграла обычно заключается в нахождении первообразной функции. Это одна из широко распространенных операций математического анализа.
Для вычисления неопределенных и определенных интегралов Maple V предоставляет следующие функции:
int(f.x):int(f.x=a..b);1nt(f,x=a..b,continuous);
Int(f.x);Int(f,x=a..b);Int(f,x=a..b.continuous);
Здесь f — подынтегральная функция, x — переменная, по которой выполняются вычисления, а и b — нижний и верхний пределы интегрирования, continuous — необязательное дополнительное условие.
Maple 7 старается найти аналитическое значение интеграла с заданной подынтегральной функцией- Если это не удается (например, для «не берущихся» ин-
тегралов), то возвращается исходная запись интеграла. Для вычисления определенного интеграла надо использовать функцию evalf(int(f,х=а. .Ь)). Ниже приведены примеры вычисления интегралов:
Int(a*xAn,x)=1nt(a*x*n,x);.
Г „ , ах
а х dx =:—
J «+ 1
> Int(s1n(x)/x,x)=int(sin(x)/x.x);
^* = SiW
Int(1n(x)"3.х):
J"ln(x)3 dx
value(l):
ln(x)3 x - 3 x ln(x)2 + 6 x ln(x) - 6 x
Int(xA5*exp(-x),x);
f 5 J
x e dx
value(X);
5 (~x), 4 (~x)3 (-x)„ 2 (~x)(-x)(-x)
-x e -5x e -20x e -60x e -120xe-120e
Int(l/x,x)=int(l/x,x):
-^ dx = ln(x)
Обратите внимание, что в аналитическом представлении неопределенных интегралов отсутствует произвольная постоянная С. Не следует забывать о ее существовании. Для вычисления кратных интегралов (двойных, тройных и т. д.) следует применять функцию 1 nt (или I nt) внутри такой же функции, делая это столько раз, сколько нужно. В отличие от функции дифференцирования для функции интегрирования нельзя задавать подынтегральные функции в виде списка или множества.
Возможно вычисление сумм интегралов и интегралов сумм, а также интегралов от полиномов:
Sum(Int(xA1,х),1=1..5):
5 г .
У J х' dx
> value(X);
21 з 141516
2Х +3Х +4Х +5Х +6Х
> Int(Sum(xA1,i=l..5),x);
> valued);
> Р(х):=a*XA3+b*xA2+c*x+d;
Р(х) ;= а х3 + b х2 + с х + d
1nt(P(x),x);
ПРИМЕЧАНИЕ Maple 7 успешно берет большинство справочных интегралов. Но не всегда форма пред
ставления интеграла совпадаете приведенной в справочнике. Иногда требуется доводка ее до нужной формы, а иногда Maple 7 упорно дает иное выражение (в большинстве случаев правильное). Тем не менее следует помнить, что всегда может найтись интеграл, который окажется «не по зубам» и Maple 7.
Конвертирование и преобразование интегралов
В некоторых случаях Maple 7 не может вычислить интеграл. Тогда она просто повторяет его. С помощью функций taylor и convert можно попытаться получить аналитическое решение в виде полинома умеренной степени, что демонстрирует следующий характерный пример:
1nt(exp(sin(x)),х);
f sin^x)
е dx
convert(taylord,x=0,8).polynom);
12^3* S *67* R
Х + 2Х +6Х ”40 Х ”90Х ~Тб80Х +720Х
Естественно, что в этом случае решение является приближенным, но оно все же есть и с ним можно работать, например построить график функции, представляющей данный интеграл.
Система Maple непрерывно совершенствуется. Например, в Maple V R4 интеграл с подынтегральной функцией ехр(>С4) не брался, а система Maple 7 с легкостью берет его:
Int(exp(xA4),x)=1nt(exp(xA4) ,х):
Хотя полученный результат, выраженный через гамма-функцию, нельзя назвать очень простым, но он существует и с ним также можно работать. Например, можно попытаться несколько упростить его, используя функцию simplify:
> simp!1fy(X):
Разумеется, существует также множество иных возможностей и приемов для выполнения операции интегрирования. В дальнейшем мы неоднократно будем рассматривать и другие, более специфические функции для осуществления интегрирования и вычисления интегральных преобразований. В частности, ряд средств вычисления интегралов реализован в пакете student.
вычисление определенных интегралов
Другой важной операцией является нахождение в аналитической или числен- ной\форме определенного интеграла:
6
а
Определенный интеграл удобно трактовать как площадь, ограниченную кривой /(х), осью абсцисс и вертикалями с координатами, равными а и Ь. При этом площадь ниже оси абсцисс считается отрицательной. Таким образом, значение определенного интеграла — это число или вычисляемое выражение.
Для вычисления определенных интегралов используются те же функции int и Int, в которых надо указать пределы интегрирования, например х=а.. Ь, если интегрируется функция переменной х. Это поясняется приведенными ниже примерами:
> Int(sin(x)/x,x=a..b)=int(sin(x)/x,x=a..b);
^^dx = Si(bVSi(a)
> Int(sin(x)/x,x=O..1.)=1nt(sin(x)/x,x=0..1.);
A .
——dx=.9460830704 x
Int(x*ln(x).x-O..l)=int(x*ln(x),x=O..1);
J" x ln(x) dx = -±
Int(x*exp(- x).x=0..1nf1nity)-1nt(x*exp(- x),x-0.. 1nfin1ty);
Int(l/(xA2+6*x+12),x=-infinity..infinity);
—dx
х + 6 х + 12
valued);
5"V3
Как видно из этих примеров, среди значений пределов может быть бесконечность, обозначаемая как infinity.
Каверзные интегралы и визуализация результатов интегрирования
Выше мы уже сталкивались с примерами вычисления «каверзных» интегралов. Немного продолжим эту важную тему и заодно рассмотрим приемы визуализации вычислений, облегчающие понимание их сущности.
В Соросовском образовательном журнале (№ 6, 2000, с. 110) приводятся не совсем удачные примеры вычислений определенного интеграла с применением системы Mathematica, при которых якобы встречаются настолько большие трудности, что они не под силу любому калькулятору или компьютеру. При некоторых попытках вычисления этого интеграла он давал нулевое значение.
Но Maple 7 (кстати, как и Mathematica 4) с легкостью берет этот интеграл и позволяет сразу и без какой-либо настройки вычислить для него как точное, так и приближенное значение:
Int(xA20*exp(-x),х=0..l)=1nt(xA20*exp(-x),х=0..1);
1
Г х1'’^ dx = -6613313319248080001 е("П + 2432902008176640000
evalfd.30);
.0183504676972562063261447542317 = .01835046770
Хотя первое из решений является самым кратким и, скорее всего, единственным точным решением, оно может и должно насторожить опытного пользователя. Дело в том, что в полученном выражении фигурируют большие числа, и потому для правильного приближенного решения (в виде вещественного числа в научной нотации) нужно заведомо использовать аппарат точной арифметики и ни в коем случае не полагаться на погрешность, заданную по умолчанию, — вот в чем основная ошибка в упомянутой статье.
Именно поэтому левая и правая части приближенного решения (выполненного с точностью до 30 цифр) заметно различаются. Знак равенства между ними вызывает чувство протеста у истинных математиков. На самом деле, не надо забывать, что знак равенства здесь был введен просто как текстовый комментарий, — вы можете попробовать сами заменить его на более приемлемую; здесь
знак приближенного равенства. Любопытно, что предшествующая версия Maple 6 при задании погрешности по умолчанию вычисляла значение этого интеграла также как 0, тогда как Maple 7 «поумнела» уже настолько, что дает значение 0.01835046770 даже в этом случае.‘
При таких условиях многие читатели могут сомневаться в корректности конечного результата. Между тем Maple 7 позволяет наглядно проиллюстрировать характер промежуточных вычислений подобных интегралов. Например, для этого можно вычислить неопределенный интеграл подобного вида:
1nt(xA20*exp(-x),x);
-х20 е* х) - 20 х19 е'^' - 380 х18 е'х) - 6840 х17 е^ - 116280 х16 е"х)
- 1860480 х15 е< х) - 27907200 х14 е("х) - 390700800 х13 е*"х)
\- 5079110400 х12 е('л) - 60949324800 х11 е'^’ - 670442572800 х10 е'”'’
Х- 6704425728000 х9 е(~х) - 60339831552000 х8 е("х) - 482718652416000 х7 е'"'1
3379030566912000 х6 - 20274183401472000 х5 е'х>
101370917007360000 х4 е('х) - 405483668029440000 х3 е'х)
-1216451004088320000 х2 е' ~Х> - 2432902008176640000 хе'1'*
2432902008176640000 е^'
Нетрудно заметить, что решение распадается на множество слагаемых, соответствующих общеизвестному интегрированию по частям. В каждом слагаемом имеются большие числа, и потому принципиально необходимо применение арифметики высокой точности (или разрядности). Maple 7 такими средствами, причем превосходными, обладает.
Продолжим изучение данного «каверзного» интеграла. Опробуем силы Maple 7 на интеграле более общего вида, где конкретный показатель степени заменен на обобщенный — п. Здесь нас ожидает приятный сюрприз — Maple 7 с легкостью выдает аналитическое решение для данного определенного интеграла:
y:=(n)->1nt(xAn*exp(-x),x=0..1);
у := п —> х е ах
у(п):
е( 1/2) WhittakerM^ ^ и, ^ и + ^, 1 и + 1
У(20);
-6613313319248080001 е'-” + 2432902008176640000
eval Ш,30); ■ .01835046770
> у(20.);
0.
Однако радоваться несколько преждевременно. Многие ли математики знают, что это за специальная функция — WhittakerM? Студенты, любящие подшучивать над своим профессором, могут попробовать спросить у него об этом. Скорее всего, профессор стушуется, а потом будет долго копаться в литературе, прежде чем найдет ее определение и сможет разъяснить, что это такое.
Но хуже другое — Maple 7 при конкретном и = 20 дает грубо неверное решение — 0 (почему — уже объяснялось). Забавно, что при этом сама по себе функция WhittakerM вычисляется для п = 20 без проблем:
> WhittakerMdO, 10.5,1):
.6353509348
А теперь присмотритесь к новому результату вычисления злополучного интеграла. Оказывается, он уже не содержит больших чисел, свойственных прямому решению! Зная значение WhittakerM с погрешностью по умолчанию, можно уверенно вычислить приближенное численное значение интеграла с той же погрешностью, уже не прибегая к арифметике высокой точности:
> (exp(-.5)*WhittakerM(10,10.5,l))/21:
.01835046770
Итак, мы вычислили нужный интеграл несколькими разными способами. В этом и проявляется могущество современной математики, достойно представленной такими системами, как Maple 7. Заинтересованный читатель может попытаться найти еще ряд методов решения данного интеграла и преуспеть в этом! Мы же как торжество Maple 7 приведем график зависимости значений данного интеграла от показателя степени п при его изменении от 0 до 50 (рис. 8.1). Надо ли говорить о том, что полученный результат имеет куда более важное значение, чем вычисление нашего злополучного интеграла при конкретном и = 20? А плавный ход графика показывает, что в вычислении данного интеграла нет никаких признаков неустойчивости решения при изменении п, если соблюдать правило выбора погрешности вычислений.
Наличие у функции особых (сингулярных) точек нередко затрудняет выполнение с ней ряда операций, таких как численное интегрирование. В этом случае могут помочь соответствующие параметры. Например, вычисление следующего интеграла дает явно неудобное выражение в виде набора значений, разных для разных интервалов изменения а;
> Ш(1/(х+аГ2,х-0..2);
2 + 2
' 0
ОО
а<-2> а < 0
а +
/
■ 0
ОО
а<-2\
а < 0
а2
0
0<а J
0
02а,
^2 +а) а
Рис. 8.1. Значение интеграла от хЛп*ехр(-х) как функция л
Увы, попытка вычислить по этому выражению значение интеграла не всегда дает корректный результат. Например, при х от -2 до 0 получаются бесконечные значения. Да и график зависимости значения интеграла от параметра а имеет подозрительный вид (рис. 8.2). Это как раз тот случай, когда с ходу доверяться результатам Maple 7 рискованно.
В данном случае приходится констатировать давно известный факт — системы компьютерной математики (и Maple 7 в их числе) не всесильны и всегда можно найти интегралы даже с обманчиво простым внешним видом, которые поставят систему в тупик или дадут неверные результаты в той или иной области изменения аргументов. Особенно опасны интегралы от кусочных функций с разрывами и интегралы, представляемые такими функциями. Именно к ним и относится обсуждаемый сейчас интеграл. Не меньше проблем вызывают интегралы от функций, области определения которых заданы некорректно или просто не изучены. Между тем ситуация вовсе не является безнадежной. Надо просто знать, что предпринять, чтобы подсказать системе правильный путь решения. Например, в нашем случае, применив параметр continuous (в апострофах), можно получить куда более простое выражение:’
> 1nt(l/(x+a)A2,x-0..2.‘continuous*);
2——
(2+e)«
Рис. 8.2. Построение графика зависимости значений интеграла с подынтегральной функцией 1/(х+а)Л2 от параметра а
Рисунок 8.3 показывает это решение с двумя важными дополнениями — оно представляется функцией пользователя, а ее график строится при изменении а от - 10 до 10.
Приведем еще один пример «каверзного» интеграла довольно простого вида:
1nt(l/xA3,x=-l..2):.
undefined
Этот интеграл вообще не берется функцией 1 nt без указания параметров (в строке вывода сообщается об этом). Но введение параметра CauchyPrinci pal Value позволяет получить значение интеграла:
int(l/xA3,x=-l. .2;'CauchyPnncipalValue');
3
8
Возьмем еще один наглядный пример — вычисление интеграла от синусоидальной функции при произвольно больших пределах, но кратных 2л! Очевидно, что при этом (учитывая равность площадей положительной и отрицательной полуволн синусоиды) значение интеграла будет равно 0. Например:
> tnt(s1n(x),х--1000*р1. .1000*р1):
0
H Maple 7 - |«n> mws - (Sewet Hl
(2 + a) a(2 + a) a> Fl:-(a)->int<l/(x+a)Л2, x—0. . 2,'continuous'); —, x = 0 2, continuous (x + «)2.
(2 + a) a
(2 + a) a
> value([F1(-3),Fl(-1),Fl(1)]);
> plot (Fl(a) , a—10 . . 10 ,y=-10 . . 10,color=black) ;> plot (Fl(a) , a—10 . . 10 ,y=-10 . . 10,color=black) ;
> plot (Fl(a) , a—10 . . 10 ,y=-10 . . 10,color=black) ;
> plot (Fl(a) , a—10 . . 10 ,y=-10 . . 10,color=black) ;
Рис. 8.3. Зависимость значения интеграла с подынтегральной функцией 1/(х+а)Л2и пределами от 0 до 2 от параметра а
Однако распространение этого правила на бесконечные пределы интегрирования является грубейшей ошибкой. Интеграл такого рода уже не берется (или говорят, что он не сходится), и Maple 7 дает соответствующий результат:
int(sin(x),х=-infinity..infinity);
undefined
Во многих областях техники часто употребляются выражения «затухающая синусоида» или «нарастающая синусоида». Иногда говорят и о «синусоиде с уменьшающейся или возрастающей амплитудой». Бесполезно утверждать, что эти названия принципиально ошибочны — в рамках допущений, принятых в технических расчетах, такие утверждения весьма наглядны и эта, в частных случаях вполне оправданная, наглядность с позиций математики идет в ущерб точности фундаментальных определений.
Возьмем, к примеру, широко распространенную функцию: у(0 = exp(-0sin(2nt). Построим ее график и вычислим определенный интеграл от этой функции с пределами от 0 до °® (рис. 8.4).
С первого взгляда на график видно, что каждая положительная полуволна функции (затухающей «синусоиды») явно больше последующей отрицательной полуволны. К тому же осцилляции функции быстро затухают и через десяток- другой периодов значение функции становится исчезающе малым. Вот почему Maple 7 уверенно вычисляет интеграл с такой подынтегральной функцией. Ее свойство — неопределенность при t-><» исчезает.
Рис. 8.4. График «затухающей синусоиды» и интеграл от нее с пределами от 0 до =о
Однако называть такую функцию «затухающей синусоидой», безусловно, неточно. Умножение sin(2p£) на множитель, зависящий от времени t, лишает функцию главного свойства синусоиды — ее строгой симметрии. Так что exp(--t)sin(2p<) — это совсем новая функция со своими отличительными свойствами. Главные из них — несимметрия при малых t и исчезающе малые значения при больших t. Ни тем, ни другим свойством обычная синусоида не обладает.
А теперь возьмем антипод этой функции — «синусоиду с экспоненциально нарастающей до стационарного значения 1 амплитудой». Такая функция записывается следующим образом:
W = (1 - exp(-t)) s1n(2nt).
Ее график и попытки вычисления интеграла с такой подынтегральной функцией приведены на рис. 8.5.
Обратите внимание на то, что здесь прямое вычисление интеграла к успеху не привело, хотя из графика функции видно, что каждая положительная полуволна в близкой к Г = 0 области явно больше по амплитуде, чем последующая отрицательная полуволна. Однако в отличие от предыдущей функции при больших значениях аргумента данная функция вырождается в обычную синусоиду с неизменной (и равной 1) амплитудой. Вот почему трудяга Maple 7 честно отказывается вычислять интеграл от такой коварной функции.
Рис. 8.5. График «экспоненциально нарастающей синусоиды» и интеграл от нее с пределами от 0 до =
На этом примере очень четко отслеживается разница в мышлении инженера и математика. Инженер скажет, что интеграл с такой функций должен быть, поскольку вначале положительные площади явно меньше отрицательных, а в дальней области они выравниваются, и потому площадь каждого «периода» функции становится примерно нулевой. По-своему инженер прав — если его не интересует точное определение подынтегральной области в заоблачных высотах бесконечности, то мы должны получить то же значение интеграла, что в предшествующем примере, но со знаком «минус». И в самом деле (см. рис. 8.5), интегрируя в пределах от 0 до 100л, мы получаем именно это значение (опять-таки в пределах погрешности по умолчанию).
И все же прав здесь математик — переход от интегрирования с конечным (да еще и кратным 2л) пределом к интегрированию с бесконечным пределом — далеко не простая операция. Она требует учета поведения функции при значении аргумента, стремящегося к бесконечности, а тут говорить о нулевой алгебраической площади синусоиды некорректно, ибо никакой кратности величине 2л у бесконечности нет! Остается лишь радоваться тому, что система Maple 7 может примирить математиков и инженеров, дав им в руки средства, позволяющие решать подобные задачи с приближениями, приемлемыми для тех или иных категорий пользователей.
Мы подробно рассмотрели этот класс задач потому, что многие важные интегральные преобразования (например, преобразование Фурье) оперируют с по-
ПРИМЕЧАНИЕПРИМЕЧАНИЕдобными подынтегральными функциями и надо тщательно разбираться в областях их применения.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Приведенные выше примеры показывают, что интегрирование является гораздо более тонким делом, чем это кажется на первый взгляд. Тут уместно напомнить, что и студент вуза, и профессор математики университета должны очень внимательно исследовать возможности вычисления интегралов того или иного типа разными математическими системами. Иными словами, применять системы компьютерной математики должны только пользователи, обладающие не столько учеными званиями и степенями, сколько культурой выполнения математических вычислений.
Интегралы с переменными пределами интегрирования
К интересному классу интегралов относятся определенные интегралы с переменными пределами интегрирования. Если обычный определенный интеграл представлен числом (или площадью в геометрической интерпретации), то интегралы с переменными пределами являются функциями этих пределов.
На рис. 8.6 показано два примера задания простых определенных интегралов с переменным верхним пределом (сверху) и обоими пределами интегрирования (снизу).
Рис. 8.6. Примеры интегралов с переменными пределами интегрированияРис. 8.6. Примеры интегралов с переменными пределами интегрирования
Рис. 8.6. Примеры интегралов с переменными пределами интегрирования
Рис. 8.6. Примеры интегралов с переменными пределами интегрирования
На этом рисунке построены также графики подынтегральной функции (это наклонная прямая) и функции, которую задает интеграл.
Вычисление кратных интегралов
Функции int и Int могут использоваться для вычисления кратных интегралов, например двойных и тройных. Для этого функции записываются многократно: > restart:
> Int(Int(l/(x*y),х=4.0..4.4),у=2.0..2.6):
— dx dy
J2.0 *4.0
> value(K): .02500598527
> Int(Int(Int((x^2+yA2)*z, x=0..a), y=O..a), z=0..a);
кх2 + у2^ z dx dy dz
о Л “О
value(K):
Int(Int(2-x-y, x=sqrt(y).,yA2). y=0..1):
Г [ 2 - x -ydx dy
value(X);
-11
30
24 4cos(u)
оор2 sin( w) dp dw dq
о
о
ми4 8
11 := - - cos - л л + - л
3 у 3
> evalf(Il);
-2.666666667 cos( .2500000000 л)4 л + 2.666666667 л
Обратите внимание на нечеткую работу функции evalf в последнем примере. Эта функция уверенно выдает значение eval f(Pi) в форме вещественного числа с плавающей точкой, но отказывается вычислить значение интеграла, в которое входит число Pi. Этот пример говорит о том, что отдельные недостатки у Maple 7 все же есть, как и поводы для ее дальнейшего совершенствования.
Описанная возможность вычисления кратных интегралов функциями Int и 1 nt не является вполне законной. В пакете расширения student имеются дополнительные функции интегрирования, которые дополняют уже описанные возможности. В частности, в этом пакете есть функции для вычисления двойных и тройных интегралов.
Вычисление пределов функций
Для вычисления пределов функции / в точке х = а используются следующие функции:
I1m1t(f,х=а):11 mlt(f.х=а.di г);
Lim1t(f,х=а):L1m11(f.х=а.di г):
Здесь f — алгебраическое выражение, х — имя переменной, dlr — параметр, указывающий на направление поиска предела (left — слева, right — справа, real — в области вещественных значений, complex — в области комплексных значений). Значением а может быть бесконечность (как положительная, так и отрицательная). Примеры применения этих функций для вычисления пределов в точке приведены ниже:
> L1m1t(f(х),х=а):
lim fl»
> L1mit(sin(x)/x.x=0)=limit(s1n(x)/x,x=0);
sin(x)
lim,= I
L1mit(l-exp(-x),x=infinity)=limit(l-exp(-x),x=infinity):
lim 1 - e = 1
L1mit(exp(x),x=1nf1n1ty)=limit(exp(x),x=infin1ty): lim e' = “
Limit(exp(-x),x=infinity)=l1mit(exp(-x),x=infinity);
lim e = 0
L1mit((x-sin(x))/xA3,x=0)=l1mit((x-s1n(x))/xA3,x=0);
> Limit((Pi-2*x)*tan(x),x=P1/2)=limit(tan(x)*(Pi-2*x),x=Pi/2);
lim(л - 2 x) tan(x) = 2
x—> (1/2 л)
Обратите внимание на то, что в первом примере фактически дано обозначение предела в самом общем виде. Рисунок 8.7 показывает вычисление пределов функции tan(x) в точке х=л/2, а также слева и справа от нее. Для указания направления используются опции right (справа) и left (слева). Видно, что в самой точке предел не определен (значение undefined), а пределы справа и слева уходят в бесконечность.
Рис. 8.7. Пример вычисления пределов функции tan(x) и построение ее графика
Показанный на рис. 8.7 график функции tan(x) наглядно подтверждает существование пределов справа и слева от точки х = л/2 и отсутствие их в самой этой точке, где функция испытывает разрыв от значения +°° до -■».
Разложение функций в ряды
Разложение в степенной ряд
Огромное разнообразие функций давно заставляло математиков задумываться над возможностями их приближенного, но единообразного представления. К таким представлениям относятся различные ряды, сходящиеся к значениям функций в окрестности заданной точки. Для разложения функции или выражения ехрг в обычный степенной ряд служат функции series(expr, eqn) и ser1es(expr, eqn, n). Здесь ехрг — разлагаемое выражение, eqn — условие (например, в виде х=а) или имя переменной (например, х) и п - необязательное и неотрицательное целое число, задающее число членов ряда (при его отсутствии оно по умолчанию берется равным 6, но может переустанавливаться системной переменной Order). Если в качестве eqn задано имя переменной, то это соответствует разложению по этой
переменной в области точки с ее нулевым значением. Задав eqn в виде х=хО, можно получить разложение по переменной х в окрестности точки х = х0.
Разложение получается в форме степенного многочлена, коэффициенты которого задаются рациональными числами. Остаточная погрешность задается членом вида 0(х)Ап. При точном разложении этот член отсутствует. В общем случае для его удаления можно использовать функцию convert. Ниже представлены примеры разложения различных выражений в ряд:
> series!si nh(x),х=0):
О 120
series(sinh(x).х=1.3);
1212- е + —2 е- е + —2 е1 А
12
12
- е + —
2 е
- е + —
2 е
0~ O+f^e-^^- 1)2 + 0((х- I)3)
> series(sinh(x),х=1.0.3):
1.175201193 + 1.543080635 (х - 1.0) + .5876005967 (х - 1.0)2 + 0((х - 1.0)3)
> series(2*xA2-x+l,x=l,10):
2 + 3 (х - 1) + 2 (х - 1 )2
f(x):=sin(x)/x;
,z ч sinW fW :=~~
series(f(x),x=0,10):
1 _1у2 + — х4 - 1 х6 +iх8 + О(х9)
61205040 3628801’
converter.polynom):
111Y4- 1 r6 + 1 r8
61205040 362880
s:=series(ln(x),x=2,4);
s:= ln(2)+^(x-2)-^(x-2)2+^(x-2)3 + O((x-2)4)
evalf(convert(s,polynom)):■
-.3068528194 + .5000000000 x - . 1250000000 (x - 2. )2 + .04166666667 (x - 2. )3
Здесь видно, что член, обозначающий погрешность, отсутствует в тех разложениях, которые точны, например, в разложениях степенных многочленов. Для визуализации приближения рядами заданных аналитических зависимостей очень полезно построить на одном графике кривые аналитической зависимости и разложения в ряд. Мы это покажем чуть позже на примере ряда Тейлора.
Разложение в ряды Тейлора и Маклорена
Для разложения в ряд Тейлора используется функция taylorCexpr, eq/nm, п). Здесь ехрг — разлагаемое в ряд выражение, eq/nm — равенство (в виде х=а) или имя переменной (например^ х), п — необязательный параметр, указывающий на по-
рядок разложения и представленный целым положительным числом (при отсутствии указания порядка он по умолчанию принимается равным 6). При задании eq/nm в виде х=а разложение производится относительно точки х = а. При указании eq/nm в виде просто имени переменной разложение ищется в окрестности нулевой точки, то есть фактически вычисляется ряд Маклорена.
Ниже представлены примеры применения функции taylor:
taylог(1-ехр(х),х=1,4);
(1 - е) - е (х - 1) -1 е (х - 1У - е (х - 1 )3 + О((х - 1 )4)
converts,polynom); 1 5
~3 С х
х2 х5
2+ —7=-
ул jулул
taylor(s1nh(x),x,10);
612050403628801 '
taylor(1nt(sin(x)/x,x),x):■
X"l8X + 600 + °(xc6^
taylor(erf(x),x);
2 —==x--—j=x^ + -j-t=x5 + O(x6) ул 5 ул 5 уд
He все выражения (функции) имеют разложение в ряд Тейлора. Ниже дан пример такого рода:
taylor(l/x+xA2,x,5);
Error, does not have a taylor expansion, try series()
series(l/x+xA2,x,10);
x"1 + x2
taylor(l/x+xA2,x=l,5):'
2 +x - 1 + 2 (x - 1 )2 - (x - 1 )3 + (x - 1 )4 + O((x - 1 )5)
Здесь Maple. 7 отказалась от вычисления ряда Тейлора в окрестности точки х = 0 (по умолчанию) и предложил воспользоваться функцией series. Однако эта функция просто повторяет исходное разложение. В то же время в окрестности точки х = 1 ряд Тейлора вычисляется.
Для разложения в ряд Тейлора функций нескольких переменных используется библиотечная функция mtaylor:
mtaylor(f. v)
mtaylor(f, v. n)
mtaylor(f, v, n, w)
Здесь f — алгебраическое выражение, v — список имен или равенств, п — необязательное число, задающее порядок разложения, w — необязательный список целых чисел, задающих «вес» каждой из переменных списка v. Эта функция должна Вызываться из библиотеки Ц^р1е 7 с помощью команды геасПЦз:
readlib(mtaylor):
mtaylor(s1n(x*y),[x,y],10.[2,1]);
proc() ... end proc
3 3■
xy~6x y
mtaylor(exp(-x)*sin(y).[x.y],5);
1 31 2131 3
У"ХУ"6У +2x y+6xy "6х y
Для получения только коэффициента при к-м члене ряда Тейлора можно использовать функцию coeftayl(expr,var,k). Если ехрг — функция нескольких переменных, то к должен задаваться списком порядков коэффициентов.
Пример документа — разложение синуса в ряд
Полезно сочетать разложение выражений (функций) в ряд Тейлора с графической визуализацией такого разложения. Рассмотрим документ, в котором наглядно показаны возможности представления функции рядами Тейлора и Маклорена.
На рис. 8.8 показана первая часть документа. Она дает пример разложения в ряд Тейлора функции sin(x) с построением ее графика и графика по разложению в ряд. Поскольку выбрано разложение относительно точки х = 0, то полученный ряд является рядом Маклорена. Это хороший пример визуализации результатов математических вычислений — здесь наглядно видно, что при малых значениях х график ряда практически повторяет разлагаемую функцию, но затем начинает сильно от нее отходить.
Обратите внимание, несмотря на то что мы задали шестой порядок ряда, последний член имеет только пятый порядок. Это связано со спецификой данного разложения — в нем просто отсутствуют члены четного порядка.
Можно буквально в считанные секунды попробовать изменить число членов ряда или диапазон изменения переменной х, что и показано на рис. 8.9 (вторая часть документа). При этом легко убедиться в том, что при больших х поведение ряда не имеет ничего общего с поведением разлагаемой в ряд функции, в частности нет и намека на периодичность разложения, которая присуща тригонометрической функции sin(x).
В заключительной (третьей) части этого документа (рис. 8.10) представлено уже истинное разложение синуса в ряд Тейлора в окрестности смещенной от нуля точки х = 1. При смещении точки, относительно которой ведется разложение, выражение для ряда Тейлора существенно изменяется. В нем, во-первых, появляются члены четных степеней, а во-вторых, фигурирует аргумент вида (х - 1)”. Нетрудно заметить, что даже при представлении такой «простой» функции, как sin(x), приемлемая погрешность представления одного периода достигается при числе членов ряда Тейлора порядка 10 и более. Однако существенное повышение порядка ряда нецелесообразно из-за резкого возрастания вычислительных погрешностей. Кроме того, серьезным недостатком аппроксимации рядом Тейлора является непредсказуемое поведение полинома вдали от точки, относительно которой задается представление. 3lto хорошо видно на всех трех приведенных примерах.
■ QMaple 7 - (atdykx.mws - (Server 1(1■ QMaple 7 - (atdykx.mws - (Server 1(1> approx :- taylor( sin(x), х-0, б> approx :- taylor( sin(x), х-0, б
■ QMaple 7 - (atdykx.mws - (Server 1(1
■ QMaple 7 - (atdykx.mws - (Server 1(1
> approx :- taylor( sin(x), х-0, б
> approx :- taylor( sin(x), х-0, б
Аппроксимация рядом Тейлора (Маклорена)
Вычислим представление функции sin(x) ^форме ряда Тейлора (при х=0 - Маклорена):
approx -=х- -х^ ♦ ^*" + О(х")
Преобразуем это выражение в степенной многочлен - полином:
poly : — convert( approx, polynom ):
А теперь построим графики исходной функции и ее разложения в ряд:
plot( { sin(x), poly ), х—4..4, title-'Sin(х) and Taylor (Macloren) Series Approximation (order 6)',color—black);
Sin(x) and Taylor (Macloren) Series Approximation (order 6)
Рис. 8.8. Разложение функции sin(x) в ряд Маклорена 6-го порядка и построение ее графика
jQMapte? - (ataylor mws - (Server 1Ц
.Н#* Fr^otiiйй> , <' ,
Зададим сразу полиномиальное представление для аппроксимации рядом Тейлора (Маклорена), но теперь уже 12-го порядка:
> poly2 :- convert(taylor( sin(x), х=0, 12),polynom);
1 з 1 51 ■ 719111
poly2 -.= x--x + ^т "^х * 362880Х ~ 39916800 х
Построим графики исходной функции и аппроксимации для этого случая:
> plot( ( sin(x), poly2 }, Х--5..5, title-'Sin(х)and Taylor (Macloren) Series- (order 12)',color—black);
Sin(x)and Taylor (Macloren) Series (order 12)-
рис. M« Разложение функции sin(x) в ряд Маклорена 12-го порядка и построение ее графика
Рис. 8.10. Разложение функции sin(х) в ряд Тейлора 12-го порядка относительно точки х = 1 и построение ее графика
Помимо указанных выше разложений в ряд Maple 7 имеет множество функций для иных разложений. Например, в пакете numapprox имеется функция laurent(expr.var.n), позволяющая получить разложение в ряд Лорана, функция Chebyshev (ехрг, eq/nm, eps) дает разложение в форме полиномов Чебышева и т. д.
Решение уравнений и неравенств
Основная функция solve
Решение линейных и нелинейных уравнений и неравенств — еще одна важная область математического анализа. Maple 7 имеет мощные средства для такого решения. Так, для решения линейных и нелинейных уравнений в аналитическом виде используется достаточно универсальная и гибкая функция solveleqn, var) или solve({eqnl,eqn2,.. .},{varl,var2,...}), где eqn — уравнение, содержащее функцию ряда переменных, van — переменная, по которой ищется решение. Если при записи eqn не используются знак равенства или знаки отношения, считается, что solve ищет корни уравнения eqrrO.
Характер решений можно изменить с помощью глобальных переменных:
О _SolutionsMayBeLost — при значении true дает решение, которое при обычном применении функции solve возвращает значения NULL;
О _MaxSols — задает максимальное число решений;'
О EnvAl 1 Solutions — при значении true задает выдачу всех решений.
В решениях могут встречаться следующие обозначения:
О _NN — указывает на неотрицательные решения;
О _В — указывает на решения в бинарной форме;
О Z — указывает на то, что решение содержит целые числа;
О XN — при текстовом формате вывода задает общие члены решения и обеспечивает более компактную форму его представления.
В форме solve[subtopic] возможны параметры subtopic функции solve следующих типов:
floatsfunctionsidentityineqlinear
radicalscalarseriessystem
При решении систем уравнений они и список переменных задаются как множества, то есть в фигурных скобках. При этом и результат решения получается в виде множества. Чтобы преобразовать его к обычному решению, нужно использовать функцию assign, которая обеспечивает присваивание переменным значений, взятых из множества.
Функция solve старается дать решение в аналитическом виде. Это не означает, что ее нельзя использовать для получения корней уравнений в численном виде. Просто для этого придется использовать функции evalf или convert. Если результат решения представлен через функцию RootOf, то зачастую можно получить все корни с помощью функции al lvalues.
Решение одиночных нелинейных уравнений
Решение одиночных нелинейных уравнений вида /(х) = 0 легко обеспечивается функций sol ve(f(x) ,х). Это демонстрируют следующие примеры:
solve(x*3-2*x+l,x);
solve(xA(3/2)=3,x);
3(2/3)
evalf(Я);
2.080083823
solve(sqrt(ln(x))=2,x);
е4
evalf(*):
54.59815003
Часто бывает удобно представлять уравнение и его решение в виде отдельных объектов, отождествленных с определенной переменной:
eq:-(2*xA2+x+3=0);
eq := 2 х2 + х + 3 = О
s:=[solve(eq,x)];
4 4 v 4 4 v
В частности, это позволяет легко проверить решение (даже если оно не одно, как в приведенном примере) подстановкой (subs):
subs(x=s[l],eq);
+-У- + ЬТ2з=о
4 v 4 4 v
subs(x=s[2],eq):
+ ^--^7J23=0
4 4 v J 4 4 v
evalfUI;
0. +0.7=0.
Сводящиеся к одному уравнению равенства вида/1(х) = /2(х) также решаются функцией solve(fl(x)=f2(x) ,х):
solve(xA4=-x-l,x):
RootOf(_Z4 + _Z + 1, index = 1), RootOf(_Z4 + _Z + 1, index = 2 ),
RootO^Z4 + _Z + 1, index = 3), RootOftZ4 + _Z + 1, index = 4)
evalfW:.
.7271360845 + .9340992895 7, -.7271360845 + .4300142883 7,
-.7271360845 - .4300142883 7, .7271360845 - .9340992895 I
solve({exp(x)=sin(x)},x):
{x = RootOf(_Z - ln(sin(_Z)))}
evalfU):
{x =.3627020561 - 1.133745919 7}
solve(xA4=2*x,x);
eval fCt):
0., 1.259921050, -.6299605250 + 1.091123636 7, -.6299605250 - 1.091123636 7
Обратите внимание в этих примерах на эффективность применения функции eval f, позволяющей получить решения, выраженные через функцию RootOf, в явном виде.
Решение тригонометрических уравнений
Функция solve может использоваться для решения тригонометрических уравнений: > solve(sin(x)=.2,x):,
.2013579208 > solve(siп(х)-1/2,х); 1 6 Л > solve(cos(x)=.5.x): 1.047197551
Однако из приведенных примеров видно, что при этом найдено только одно (главное) решение. Периодичность тригонометрических функций и связанная с этим множественность решений оказались проигнорированы. Однако можно попытаться найти все периодические решения, выполнив следующую команду: > _EnvAllSolutions:=true:
EnvAUSolutions := true
Указанная в ней системная переменная отвечает за поиск всех периодических решений, когда ее значение равно true, и дает поиск только главных решений при значении false, принятом по умолчанию. Так что теперь можно получить следующее:
> solve(sin(x)=l/2.x);
2
-л+-л 57~ + 2л_77~
о 3
На рис. 8.11 показан более сложный случай решения нелинейного уравнения вида / (х) = / (х), где / (х) = sin(x) и / (х) = cos(x) - 1.
1212
Решение дано в графическом виде и в аналитическом для двух случаев — нахождения главных значений корней и нахождения всех корней.
В решениях встречаются переменные _В1~ и _Z1~, означающие ряд натуральных чисел. Благодаря этому через них можно представить периодически повторяющиеся решения.'
Примеры решения уравнений с обратными тригонометрическими функциями показаны ниже:
> eqns ;= 2*arcsin(x) - arccos(5*x); eqns := 2 arcsin(x) - arccos(5 x)
> sol vet eqns, {x} );
> eqns :- arccos(x) - arctan(x/2);
eqns := arccos(x) - arctai
Рис. 8.11. Пример решения уравнения, имеющего периодические решения
solve( eqns, {х} );
7-2 + 2#,
Решение систем линейных уравнений
Для решения систем линейных уравнений созданы мощные матричные методы, которые будут описаны отдельно. Однако функция solve также может с успехом решать системы линейных уравнений. Такое решение в силу простоты записи функции может быть предпочтительным. Для решения система уравнений и перечень неизвестных задаются в виде множеств (см. приведенные ниже примеры).
Рисунок 8.12 дает два примера решения систем из двух линейных уравнений. В первом примере функция solve возвращает решение в виде значений неизвестных х и у, а во втором отказывается это делать.
В чем дело? Оказывается, в том, что во втором случае система просто не имеет решения. Импликативная графика пакета расширения plots дает прекрасную возможность проиллюстрировать решение. Так, нетрудно заметить, что в первом случае геометрическая трактовка решения сводится к нахождению точки
пересечения двух прямых, отображающих два уравнения. При этом имеется единственное решение, дающее значения х и у.
Рис. 8.12. Примеры решения системы из двух линейных уравнений с графической иллюстрацией
Во втором случае решения и впрямь нет, ибо уравнения задают параллельно расположенные прямые, которые никогда не пересекаются. Рекомендуем читателю самостоятельно проверить и третий случай — бесконечного множества решений. Он имеет место, если оба уравнения описывают одну и ту же зависимость и их графики сливаются в одну прямую.
Решение систем из трех линейных уравнений также имеет наглядную геометрическую интерпретацию — в виде точки, в которой пересекаются три плоскости, каждая из которых описывается функцией двух переменных. Для наглядности желательно представить и линии пересечения плоскостей. Это позволяет сделать функция импликативной трехмерной графики 1mplicitplot3d, что и показано на рис. 8.13. Для объединения графиков площадей использована функция display. '
Некоторые проблемы с решением систем из трех линейных уравнений иллюстрируют примеры, приведенные на рис. 8.14. В первом примере решения вообще нет. График показывает, в чем дело, — -линии пересечения плоскостей' идут параллельно и нигде не пересекаются. Во втором примере все три плоскости пересекаются по одной линии.
^^^.^ж\- у,у-* ^ ^^Ш;
Г> restart; with(plots):|
Warning, the name changecoords has been redefinedЦ
[> sys ( z 4, x+y- 10, x-y - 5■
[> solve( sys, (x,y,z) );
515
k-^-^x-y)
> display(implicitplot3d(sys, x — -10..10, у - -10..10, Z--10..10, shading - xyz,style—patchnogrid, orientation — [158,701), spacecurve({[t,10-t,4], [t,t-5,4J, (15/2,5/2,t]},t10..10, color - black, thickness - 2)) ;
Рис. 8.13. Пример решения системы из трех линейных уравнений с графической иллюстрацией решения
Рис. 8.14. Графическая иллюстрация особых случаев решения системы из трех линейных уравнений
Следующий пример показывает решение системы из четырех линейных уравнений:
>sys :- { 4*х1 + 7*х2 - хЗ + 3*х4 - 11,
-2*х1 -к 2*х2 - 6*хЗ + х4 - 4.
х1 - 3*х2 + 4*хЗ - х4 - -3.
3*х1 - 5*х2 - 7*хЗ + 5*х4 = 8 }:•
> solve! sys, {xl. х2. хЗ, х4 } );
{х2 19,хЗ19,х/19,х419 }
Эта система имеет решение, но его простая графическая иллюстрация уже невозможна.
Случай решения неполной системы уравнений (уравнений — 3, а неизвестных — 4) иллюстрирует следующий пример:
>sys : = { xl + 2*х2 + 3*х3 + 4*х4 = 51,
xl - 3*х2 + 4*хЗ + х4 =32.
■xl + 2*х2 - 6*хЗ + х4 = -23}:
>solve! sys, {xl. х2, хЗ, х4 } ):
, „ 2 , 113 , 1391 , 77 ,„
{х2 = - xl - —, х4 = - - л-7 + -у, хЗ = - xl + —, xl = xl}
Как видно из приведенных примеров, функция sol ve неплохо справляется с решением систем линейных уравнений.
Решение систем нелинейных и трансцендентных уравнений
Функция solve может использоваться для решения систем нелинейных и трансцендентных уравнений. Для этого система уравнений и перечень неизвестных задаются в виде множеств. Ниже приведены примеры решения уравнений:
restart;
solve({x*y=a,x+y=b},{x,y});
{у = RootOf(_Z2 - _Z b + a), x = -RootOf(_Z2 - _Z b + a) + b} > allvalues(t);
{y = 1 b +1Jb2-4 a, x = 1 b -14^^4a },
{y = ^ b -1 ^b2-4a, x = 1 b +1 ^b2-4a }
s:=solve({x*y=2,x+y=3},{x,y});'
s := {y= l,x = 2}, {y = 2,x = 1}
assign(s);x;y;
1
2-
> unassign('x’);y:-'y';'
y:=y
> [x,y]:'
В этих примерах хорошо видна техника работы с функциями solve и assign. В конце примеров показано восстановление неопределенного статуса переменных х и у с помощью функции unassign и снятие определения переменных с помощью заключения их в прямые апострофы.
Функция RootOf
В решениях уравнений нередко появляется функция RootOf, означающая, что корни нельзя выразить в радикалах. Эта функция применяется и самостоятельно в виде RootOf(expr) или RootOf(expr, х), где ехрг — алгебраическое выражение или равенство, х — имя переменной, относительно которой ищется решение. Если х не указана, ищется универсальное решение по переменной Z. Когда ехрг задано не в виде равенства, решается уравнение ехрг=0. Для получения решений вида RootOf в явном виде может использоваться функция al lvalues.
Примеры применения функции RootOf:
RootOf(хА2+1=0,х):
RootOf(_Z2 + 1)
allvalues(t):
1,-1
RootOf(a*bA2+a/b,b);
RootOf(_Z3 + 1)
al 1 values(^):.
2 2*2 2 *
> Root0f(xA3-l,x)mod 7;
RootOf(_Z3 + 6)
> allvalues(t):
_(l/3) 1 ^(1/3)1 r H/3) 1(1/3)1 r- (1/3)
-6, ~66,-6+ -/J3 6
22 *22 '
evalf(^);
-1.817120593, .9085602965 - 1.573672596/, .9085602965 + 1.573672596/
Root0f(xA2-2*x+l,x)mod 5:
1
Итак, функция RootOf является эффективным способом представления решения в компактном виде. Как уже отмечалось, наряду с самостоятельным применением она часто встречается в составе результатов решения нелинейных уравнений.
Решение уравнений со специальными функциями
К важным достоинствам Maple 7 относится возможность решения уравнений, содержащих специальные функциичсак в записи исходных выражений, так и в результатах решения. Приведем несколько примеров такого рода:
> eqns := Psi(3*x-99) - Psi(3*x-100) + 3/х*2:
3
eqns := ^(3 х - 99) - ^(3 х - 100) + —7
х2
solve! eqns, [x) );
{х = -| + |/128Г}, {х = -?-|/128Г}
> eqns := max(x.3*x-12)=min(10*x+8,22-x);
eqns := max(-l2 + 3 x, x) = min( 10 x + 8, 22 -x)
solve! eqns, (x) );
,-8, ,17,
{x = -}, tx = _)
eqns := LambertW(3*x)=ln(x);
eqns := LambertW(3 x) = ln(x)
> solve! eqns, {x} );
{x = e3}
Решение неравенств
Неравенства в математике встречаются почти столь же часто, как и равенства. Они вводятся знаками отношений, например: > (больше), < (меньше) и т. д. Решение неравенств существенно расширяет возможности функции solve. При этом неравенства задаются так же, как и равенства. Приведенные на рис. 8.15 примеры поясняют технику решения неравенств.
Из приведенных примеров очевидна форма решений — представлены критические значения аргумента, вплоть до не включаемых значений области действия неравенства (они указываются словом Open). Всегда разумным является построение графика выражения, которое задает неравенство, — это позволяет наглядно убедиться в правильности решения.
Приведем еще несколько примеров решения неравенств в аналитической форме: > solve(5*x>10,x);
RealRange( Open( 2), °° )'
> solve(5*x>=10,x);
RealRange(2, =°)
> solve(ln(x)>2,x):
RealRange(Open(e2), °°)
> solve(exp(x)>10,x);
RealRange( Open( ln( 10)), °°)
solve(a*x>b,{x});
signum(a)6
{-signum( a) x <-}
> eqns :- abs(z)A2/(z+l) < exp(2)/(exp(l)-l):
Рис. 8.15. Примеры, иллюстрирующие решение неравенствРис. 8.15. Примеры, иллюстрирующие решение неравенств
Рис. 8.15. Примеры, иллюстрирующие решение неравенств
Рис. 8.15. Примеры, иллюстрирующие решение неравенств
solve( eqns, {z} );
{Z<-1}{Z<-1}.1 e2 + V(e2) + 4e2e-4e2 1 e2 - V (e2) +4 e2 e -4 e2
{Z<-1}
{Z<-1}
z <2 “e^l’ 2e - 1
eqns := exp(x)*x*2 >= 1/2;
1 X 2
eqns := - < e x
sol vet eqns, (x) );
{2 Lambert W -1,{2 Lambert W -1,-—V5 x,x < 2 Lambert W I -—V24)( 4
{2 Lambert W -1,
{2 Lambert W -1,
eqns := abst (z+abs(z+2))A2-l )A2 = 9; ,2
eqns := |(z +|z + 21) — 11 =9
solveC eqns, {z} );
{z = 0},{z<-2}
evalf(X);
-2.617866616 < x, x < -1.487962064}, {.5398352768 < x}
eqns :- { xA2<l. ^«-l, x+y<l/2 }:
eqns := {х2 < 1,у1 < 1, х + у <-}
sol vet eqns, { х. у } );
{}'< 1, -1 <у,х+у<^, -1 <Х,Х< 1 }
solve({x*y*z>0,x>-l,y+z>10},{x,y,z});
{z = О, -1 <х, 10 <у}, {у = О, -1 <х, 10 < z}
В последних примерах показано решение систем неравенств. При этом выдаются области определения нескольких переменных.
Решение функциональных уравнений
Решение функционального уравнения, содержащего в составе равенства некоторую функцию Дх), заключается в нахождении этой функции. Для этого можно использовать функцию solve, что демонстрируют приведенные ниже примеры:
A:=solve(f(x)A2-x+l,f):
А := proc (х) RootOf(_ZA2 - х + 1, label = _L1) end proc
convert(Atx).radical);
Vx - T
al 1values(^):
/x- i
B:=solvetf(x)*x=l n(xA2),f):
В := proc (x) ln(xA2 )lx end proc
convert(Btx).radical):
ln(x2)
x
C:=solvetf(x)*xA2=a*xA2+b*x+c,f):
C := proc (x) (axrA2 + bxx + с)/хл2 end proc
> convert(Ctx),radical):
a x2 + bx + c
Решение уравнений с линейными операторами
Maple 7 позволяет решать уравнения с линейными операторами, например с операторами суммирования рядов и дифференцирования. Ограничимся одним примером такого рода:
> S :- sumt (а+Ь*ехр(х[1])-у[1])А2, 1=0..п ):
п /2
8 := (п + 1) а2 +8 := (п + 1) а2 +2 b е а - 2 а у. + Ь2 (е ) - 2 b е у. + у.
8 := (п + 1) а2 +
8 := (п + 1) а2 +
> eqns := { diff(S, a), diff(S.b)};
fl | X.X. 'X. j/' JI /'X.
eqns :=eqns :=X 2 e ' a + 2 b (e ‘) - 2 e ' у J, 2 (n + 1) a + У, 2 b e ' - 2 у.
eqns :=
eqns :=
/ - о2। = сЛ
> solve( eqns. {a. b} );
- X (е')
/ = 0
4i> ^ / = 0
Д /=°J
2
2\
lj = 0/
t(e
п -
f(e')
Решение в численном виде — функция fsolve
Для получения численного решения нелинейного уравнения или системы нелинейных уравнений в форме вещественных чисел удобно использовать функцию: fsolve( eqns. vans, options )
Эта функция может быть использована со следующими параметрами:
О complex — находит один или все корни полинома в комплексной форме;
О full di gits — задает вычисления для полного числа цифр, заданного функцией Digits;
О maxsol s=n — задает нахождение только п корней;
О interval — задается в виде а. .Ь или х=а. .Ь, или {х=а. .Ь, у=с. .d, ...} и обеспечивает поиск корней в указанном интервале.
Функция fsolve дает решения сразу в форме вещественных или комплексных чисел, что и показывают следующие примеры:
> fsolve(sin(x)=P1/4,x): .9033391108
> fsolve(s1n(x)=l/2,x=4..8);
6.806784083
> fsolve(2*xA2+x-l=10.x):
-2.608495283,2.108495283
fsolve(xA5-x,x);•
-l.,0„ 1.000000000
fsolve(xA5-x.x,complex):
-1.000000000,-1.0000000007.0., 1.0000000007, 1.000000000
>eqns := abs(x)*x+exp(x) > 0;
eqns :— 0 < | x | x + ex
solve! eqns, {x} );
{-2 Lambert^ < x}'
f := sin(x+y) - exp(x)*y = 0:
g := xA2 - у = 2:
fsolve({f,g},{x,y},{x=-l..l.y=-2..0});
{x = -.6687012050, у = -1.552838698}
Заметим, что локализация поиска корней в заданном интервале позволяет отыскивать такие решения, которые не удается получить с помощью функций solve и fsolve в обычном применении. В последнем из приведенных примеров дается решение системы нелинейных уравнений, представленных уравнениями f и д. Чтобы еще раз показать различие между функциями solve и fsolve, рассмотрим пример решения с их помощью одного и того же уравнения erf(x) = 1/2:
solve(erf(x)=l/2,x);
RootOf(2 erf(_Z)- 1)
fsolve(erf(x)=l/2);"
.4769362762
Функция solve в этом случае находит нетривиальное решение в комплексной форме через функцию RootOf, тогда как функция fsolve находит обычное приближенное решение.
Решение рекуррентных уравнений — rsotve
Функция solve имеет ряд родственных функций. Одну из таких функций — fsolve — мы рассмотрели выше. В справочной системе Maple 7 можно найти ряд и других функций, например rsolve для решения рекуррентных уравнений, 1 solve для решения целочисленных уравнений, msolve для решения по модулю т и т. д. Здесь мы рассмотрим решение уравнений важного класса — рекуррентных. Напомним, что это такие уравнения, у которых заданный шаг решения находится по одному или нескольким предшествующим шагам.
Для решения рекуррентных уравнений используется функция rsol ve:
rsolveteqns. fens)
rsolve(eqns. fens, 'genfunc’(z))
rsolve(eqns, fens, 'makeproc')
Здесь eqns — одиночное уравнение или система уравнений, fens — функция, имя функции или множество имен функций, z — имя, генерирующее функциональную переменную.
Ниже представлены примеры применения функции rsolve:
restart;
rso1ve(f(n)=-2*f(n-l)-f(n-2),f(k));
(-f(0) - f( 1)) (^+ 1) (-1 / + (f( 1) + 2 f(0)) (-1 /
rsolve({f(n)=-3*f(n-l)-2*f(n-2),f(1..2)=l},(f});
{f<») = -3 (-1)" +(-2)"}
rsolve([y(n)=n*y(n-l),y(O)=l),y):
F(n + 1)
rsolve({y(n)*y(n-l)+y(n)-y(n-l)=0,y(0)=a},y):
a
+ n a
> rsolve((F(n)=F(n-l)+F(n-2),F(1.,2)=1},F,'genfunc'(x)):
x
-1 + x +x2
> rsolve({y(n+l)+f(n)=2*2'n+n,f(n+l)-y(n)=n-2'n+3,y(k=l..5)=2Ak-l,f(5)=6},{y,f});
{Й>\=л + 1,уО) = 2”-1}
А теперь приведем результат вычисления функцией rsolve и-го числа Фибоначчи. Оно задается следующим выражением:
eql := (f(n+2) = f(n+l) + f(n) , f(0) = 1 , f(l) = 1}; eql := {f(« + 2) = f(n + 1) + f(«), f(0) = 1, f( 1) = 1}
В нем задана рекуррентная формула для числа Фибоначчи — каждое новое число равно сумме двух предыдущих чисел, причем нулевое и первое числа равны 1. С помощью функции rsolve можно получить поистине ошеломляющий результат:
al:=rsolve(eql,f);
Числа Фибоначчи — целые числа. Поэтому представленный результат выглядит как весьма сомнительный. Но на самом деле он точный и с его помощью можно получить числа Фибоначчи. Ниже показан процесс получения чисел Фибоначчи для п = 5, 7, 10 и 20:
(normal(subs(n=5.al),expanded),normal(subs(n-7,al),expanded), normal(subs (n-10,al).expanded) .normal(subs(n-20,al),expanded)]:
[8,21,89,10946]
Решение уравнений в целочисленном виде — isolve
Иногда бывает нужен результат в форме только целых чисел. Для этого используется функция isolveCeqns, vans), дающая решение в виде целых чисел. Приведем примеры ее применения:
> isolve([2*x-5=3*y}):
{х = 4 + 3 _Zl,y = 1 + 2_Z7}
> 1solve(y'4-z'2*y"2-3*x*z*y'2-xA3*z):■
Во втором из приведенных примеров в выводе появилась вспомогательная переменная И, которая упрощает запись результата при текстовом формате его вывода (Character Notation). Напоминаем, что в стандартной математической нотации вспомогательная переменная вида KN не формируется. В этом случае упомянутый пример будет выглядеть следующим образом:
> isolve(yA4-zA2*yA2-3*x*z*yA2-xA3*z):
Z3 _Z24
Z"" igcd(-Z14_Z22- _Z12), -Z13 _Z2, _Z24Y
_Z3 _Z12 (_Z22 - _Z/2)
~ igcd(-_Z72 (_Z22 - _Z72), -_Z13 _Z2, _Z24)’
_Z3 _Z13 _Z2
? ~ igcd( -_Z12(_Z22- _Z12), -_Z13 _Z2, _Z24)
Результат вычислений одинаков при любом формате вывода, но иногда вывод в текстовом формате с выделением вспомогательных переменных имеет преимущество, поскольку выглядит более компактным.
Функция msolve
Функция msolve(eqns,vars,m) или msolve (eqns.m) обеспечивает решение вида Z mod т (то есть при подстановке решения левая часть при делении на т дает остаток, равный правой части уравнения). При отсутствии решения возвращается объект NULL (пустой список).
Ниже даны примеры использования функции msolve:
> msolve({3*x-4*y=l,7*x+y=2},12);
{у = 5,х=3}
> msolve(2Ai=3,19):
{i = 13 + 18 _ZZ~}
> msolve(8Aj=2,x,17);
{/ = 3 + 8 x }
На этом мы завершаем рассмотрение функций для решения уравнений, неравенств и систем с ними.
Что нового мы узнали?
В этом уроке мы научились:
О Вычислять суммы членов последовательностей.
О Вычислять произведения членов последовательностей.
О Вычислять производные.
О Вычислять интегралы.
О Разлагать функции в ряды.
О Решать уравнения и неравенства.
(ЩУРОК(ЩУРОКАнализ функцийи полиномов
(ЩУРОК
(ЩУРОК
Анализ функций
Поиск минимумов и максимумованалитических функций
Анализ функций на непрерывность
Нахождение сингулярных точек функций
Вычисление асимптотических
и иных разложений
Пример анализа сложной функции
Операции с полиномами
Интерполяция и аппроксимацияфункциональных зависимостей
Прямое и обратное Z-преобразования
Анализ функций
Поиск экстремумов функций
Важным разделом математики является исследование аналитических функций. Оно обычно заключается в определении координат особых точек функции и ее значений в этих точках, а также в выяснении особенностей функции, таких как наличие точек разрыва, асимптот, точек перегибов, разрывов и т. д. К сожалению, пока нет средств, сразу выявляющих все особенности функций, поскольку даже средства, решающие частные задачи анализа функций, довольно сложны и специфичны. Достаточно отметить проблему поиска экстремумов функций (особенно функций нескольких переменных). Поэтому функции приходится анализировать индивидуально.
С помощью функции fsolve легко находятся значения независимой переменной х функций вида /(х), при которых /(х) = 0 (корни этого уравнения). При этом данная функция позволяет (в отличие от функции solve) изолировать корни функции /(х) указанием примерного интервала их существования. Ряд функций служит для вычисления экстремумов, максимумов и минимумов функций, а также для определения их непрерывности. Одна из таких функций, extrema, позволяет найти экстремумы выражения ехрг (как максимумы, так и минимумы) при ограничениях constrs и переменных vans, по которым ищется экстремум: extrema(ехрг, constrs) extrema(expr. constrs. vars) extrema(ехрг, constrs. vars, 's')
Ограничения contrs и переменные vars могут задаваться одиночными объектами или списками ряда ограничений и переменных. Найденные координаты точки экстремума присваиваются переменной 's'. При отсутствии ограничений в виде равенств или неравенств вместо них записывается пустой список {}.
Эта функция в предшествующих версиях Maple находилась в стандартной библиотеке и вызывалась командой readlib(extrema). Но в Maple 7 ее можно использовать без предварительного объявления. В этом убеждают приведенные ниже примеры:
> extrema(а*хА2+Ь*х+с.{},х,'s'):s;
b2 - 4 с а
а }
1 d
> extrema(x*exp(-x),{},x,'s'):s:
, (-D, {е } {{х^1}}
extrema(sin(x)A2,{},x.'s'):s;
{0,1}
{{х = 0}, {х = ^л}}•
extrema(x+y/z,xA2+yA2+zA2=l.{x,y,z},'s');s;
л 2л 2
{max( 1 - RootOf(_Z4 + 1) , -1 + RootOf(_Z4 + 1) ),
22
min( 1 - RootOf(_Z4 + 1) , -1 + RootOf(_Z4 + 1) )}
{(z = RootOf(_Z4 + 1), x = -1, у = RootOf(_Z4 + 1) },
{x = 1,z — RootOf(_Z4 + 1), у = -RootOf(_Z4 + 1 /}}
Как видно из приведенных примеров, функция extrema возвращает как значения экстремумов, так и значения аргументов, при которых экстремумы наблюдаются. Для проверки оптимизационных алгоритмов существует ряд тестовых функций. Одна из таких функций — функция двух переменных Розенброка. В представленном ниже примере она задана как rf(x,y):
> rf:=(x,y)->100*(у-хА2)А2+(1-х)А2:
;/:=(х,у)^ 100 (у-х2/+ (1 -х)2
> extrema(rf(x.y),{х,у),'s');s: s
Как нетрудно заметить, минимум этой функции при значениях х = у = 1, равный 0, функцией extrema не обнаружен. Однако это не недостаток данной функции, а просто неудачное ее применение. Функция Розенброка имеет минимум значения, и для его обнаружения надо использовать функцию minimize, описанную ниже.
/> {ПРИМЕЧАНИЕ Функция extrema дает неплохие результаты при поиске экстремумов простых аналити- 4—*ческих функций, не имеющих особенностей. Однако при анализе сложных функций, со
держащих функции со сравнением аргумента (например, abs(x), signum(x) и др.), функция extrema часто отказывается работать и просто повторяет запись обращения к ней.
Поиск минимумов и максимумов аналитических функций
Часто нужно найти минимум или максимум заданной функции. Для поиска минимумов и максимумов выражений (функций) ехрг служат функции стандартной библиотеки: ■ m1n1m1ze(expr. optl, opt2optn) maximizeCexpr^ optl. opt2optn)
Эти функции могут разыскивать максимумы и минимумы для функций как одной, так и нескольких переменных. С помощью опций optl, opt2,..., optn можно указывать
дополнительные данные для поиска. Например, параметр ’ 1 nf i ni ty' означает, что поиск минимума или максимума выполняется по всей числовой оси, а параметр location (или location=true) дает расширенный вывод результатов поиска — выдается не только значение минимума (или максимума), но и значения переменных в этой точке.
Примеры применения функции minimize приведены ниже:
minimize(xA2-3*x+yA2+3*y+3): -
-3
2
minimize(xA2-3*x+yA2+3*y+3, location);
-32’-32’-33-31-33-31
-3
2’
-3
2’
-33-31
-33-31
minimize(xA2-3*x+yA2+3*y+3, х=2..4, у=-4..-2, location);
1, {[ {х = 2,у =-2},-1 ]}
> minimize(xA2+yA2,x=-10..10,у=-10..10);
О
> minimize(xA2+yA2,x=-10.,10,у=-10..10,location);
О, {[ {у = 0, х = 0}, 0]}
> minimize(abs(x*exp(-xA2)-l/2). х=-4..4);
11 су (-1/2)
2"2^е
> m1nimize(abs(x*exp(‘-xA2)-l/2), х=-4..4,location=true);
11 су (-1/2)11 су (-1/2)
11 су (-1/2)
11 су (-1/2)
Приведем подобные примеры и для функции поиска максимума — maximize:
> maximize(x*exp(-x));
> maximize(x*exp(-x),location): e ,{[{x=l},e]}
> maxim)ze(sin(x)/x.x--2..2.location);
°O, {[{x = 0 },«>]}
{x =-10,y = | л}, e10{x =-10,y = | л}, e10> maximize(exp(-x)*sin(y),x=-10..10,y=-10..10.location);
{x =-10,y = | л}, e10
{x =-10,y = | л}, e10
e10, { {у = -|л,х =-10}, e10 {у = | л,х =-10}, e10 }
Обратите внимание на то, что в предпоследнем примере Maple 7 явно «оскандалилась» и вместо максимума функции sin(x)/x, равного 1 при х=0, выдал результат в виде бесконечности. Другими словами, система обнаружила, что в данном случае ей незнакомо понятие предела sin(x)/х при х—>0. Эта ситуация кажется более чем странной, если учесть, что в этом примере Maple 6 давал правильный результат.
Применим функцию minimize для поиска минимума функции Розенброка. Рисунок 9.1 показывает, что minimize прекрасно справляется с данной задачей. На рис. 9.1 представлено также построение функции Розенброка, хорошо иллюстрирующее ее особенности. "
:1Д^1^|:1Д^1^|Q Maple 7 - Imimoz.mws - [Seiver 1]]
:1Д^1^|
:1Д^1^|
0» Й* ^₽w Jnwd Годадг - g^ens Wirdow fjefe
гС:-(х,у)->100*(у-хЛ2)Л2+(1-х)Л2;
2
.zf := (x,>‘)100 tv- x2) +(l-x)2
minimize(rf(x,y),location);
0, {[{x = l,^ = 1], 0 ]}> plot3d(rf(x,y), x=-3..3,y=-2. . 4,axes=BOXED);0, {[{x = l,^ = 1], 0 ]}> plot3d(rf(x,y), x=-3..3,y=-2. . 4,axes=BOXED);Рис. 9.1. Поиск минимума функции Розенброка и построение ее графикаРис. 9.1. Поиск минимума функции Розенброка и построение ее графика
0, {[{x = l,^ = 1], 0 ]}
> plot3d(rf(x,y), x=-3..3,y=-2. . 4,axes=BOXED);
0, {[{x = l,^ = 1], 0 ]}
> plot3d(rf(x,y), x=-3..3,y=-2. . 4,axes=BOXED);
Рис. 9.1. Поиск минимума функции Розенброка и построение ее графика
Рис. 9.1. Поиск минимума функции Розенброка и построение ее графика
Трудность поиска минимума функции Розенброка связана с ее характерными особенностями. Из рис. 9.1 видно, что эта функция представляет собой поверхность типа «глубокого оврага с почти плоским дном», в котором и расположена точка минимума. Такая особенность этой функции существенно затрудняет поиск минимума. То, что система Maple 7 справляется с данной тестовой функцией, вовсе не означает, что трудности в поиске минимума или максимума других функций остаются позади.
Анализ функций на непрерывность
Для исследования функций на непрерывность Maple 7 имеет функцию i scont, записываемую в ряде форм:
1scont(expr. х = а .. Ь)
iscont(expr. х = а .. b. 'closed')
iscont(expr. х - а .. b,. 'open')
Она позволяет исследовать выражение ехрг, заданное в виде зависимости от переменной х, на непрерывность. Если выражение непрерывно, возвращается логическое значение true, иначе — false. Возможен также результат типа FAIL. Параметр ’closed’ показывает, что конечные точки должны также проверяться, а указанный по умолчанию параметр 'open' — что они не должны проверяться. Работу функции iscont иллюстрируют следующие примеры:
> iscont(1/х*2,х=-1..1);
false
* > iscont(l/x*2.x=-l..1.'closed');
false
> iscont(1/х,х=0..1);
true
> iscont(l/x,x=0..1,'closed'):
false
> iscont(l/(x+a),x=-l..1);-
FAIL
Рекомендуется внимательно присмотреться к результатам этих примеров и опробовать свои собственные примеры.
Определение точек нарушения непрерывности
Функции, не имеющие непрерывности, доставляют много хлопот. Поэтому важным представляется анализ функций на непрерывность. В Maple 7 функция discont(f.x) позволяет определить точки, в которых нарушается непрерывность функции ffxf Она вычисляет все точки в пределах изменения х от -? до +?. Результаты вычислений могут содержать особые экстрапеременные с именами вида _Zn~ и _NNn~. В частности, они позволяют оценить периодические нарушения непрерывности функций.
Примеры применения функции discont приведены ниже:
> discont(l/(x-2),х):
{2}
> discont(l/((x-l)*(x-2)*(x-3)),х);
{1,2,3}
> discont(GAMMA(x/2),х):
{-2_AW7~}
Весьма рекомендуется наряду с применением данной функции просмотреть график анализируемой функции.
ПРИМЕЧАНИЕ В ряде примеров в выводе используются специальные переменные вида _NameN~, где ———————цате — имя переменной и N—ее текущий номер. После выполнения.команды restart
отсчет № начинается с 1. Если вывод с такими переменными уже применялся, то их текущие номера могут казаться произвольными. Специальные переменные часто используются для упрощения выводимых выражений.
Нахождение сингулярных точек функции
Многие операции, такие как интегрирование и дифференцирование, чувствительны к особенностям функций, в частности к их разрывам и особым точкам. Функция singu1ar(expr, vars) позволяет найти особые (сингулярные) точки выражения ехрг, в которых она испытывает разрывы. Дополнительно в числе параметров может указываться необязательный список переменных.
Примеры применения этой функции приведены ниже:
s1ngular(ln(x)/(x*2-a));
{а = а,х = 0}, {а=х2,х=х}
s1ngular(tan(x));
{x = _Z22~ л + |л}
singular(l/siп(х)):
{х = л _Z23~^
singular(Psi(x*y),{x,y});
singular(x+y+l/x,{x,y});
{y=y,X = 0}, {y=y,X = -oo}, {y = oo,X=x}, {y = -°o X = x}, {x = °°,y=y}
Вычисление асимптотических и иных разложений
Важным достоинством системы Maple является наличие в ней ряда функций, позволяющих выполнять детальный анализ функций. К такому анализу относится вычисление асимптотических разложений функций, которые представляются в виде рядов (не обязательно с целыми показателями степени). Для этого используется следующая функция: asympt(f.х) asympt(f.x.n).
Здесь f — функция переменной х или алгебраическое выражение; х — имя переменной, по которой производится разложение; п — положительное целое число (порядок разложения, по умолчанию равный 6). Ниже представлены примеры применения этой функции:
> asympt(x/(l-xA2),x):
> asympt(n!,п,3):
> asympt(exp(xA2)*(l-exp(x)),x);
(х2) х (х2)
-е е + е
> asympt(sqrt(Pi/2)*BesselJ(0.x),х,3);
Пример анализа сложной функции
Ниже мы рассмотрим типичный анализ достаточно «сложной» функции, имеющей в интересующем нас интервале изменения аргумента х от -4 до 4, нули, максимумы и минимумы. Определение функции /(х), ее графики и график производной dF(x)/dx даны на рис. 9.2. Этот рисунок является началом полного документа, описываемого далее.
Функция Дх) на первый взгляд имеет не совсем обычное поведение вблизи начала координат (точки с х = у = 0). Для выяснения такого поведения разумно построить график функции при малых х и у. Он также представлен на рис. 9,2 (нижний график) и наглядно показывает, что экстремум вблизи точки (0, 0) является обычным минимумом, немного смещенным вниз и влево от начала координат.
Теперь перейдем к анализу функции F(x\ Для поиска нулей функции (точек пересечения оси х) удобно использовать функцию fsolve, поскольку она позволяет задавать область изменения х, внутри которой находится корень. Как видно из приведенных ниже примеров, анализ корней F(x) не вызвал никаких трудностей, и все корни были уточнены сразу:
Поиск нулей функции
fsolve(F(x) ,х,-2...-1);
-1.462069476 '
fsolve(Ftx),х. - .01. .0.01);
0.
fsolve(F(x),x,-.05..0);
-.02566109292
fsolve(F(x),x.l..2);
1.710986355
fsolve(F(x),x.2.5..3):
2.714104921
Нетрудно заметить, что функция имеет два очень близких (но различных) корня при х, близких к нулю.
Анализ функции на непрерывность, наличие ее нарушений и сингулярных точек реализуется следующим образом:
Анализ функции на непрерывность, наличие ее нарушений и наличие сингулярных точек
1scont(F(x),х=-4..4);
true
d1scont(F(x),х);
{ }
s1ngular(F(x));
{Х=о°}, {х = -»о}
|S Maple 7 - {analizfmws - [Setvei 1)]
[Анализ сложной функции
[> restart;
Г> F:-х->.05*x+x*exp(-abs(х))*sln(2*x);
sm(2 х)
Построение графика функции общего вида
> plot(F(x),х=-4..4,color=black);
Построение графика производной функции
> plot(diff(F(x), х) ,х=-4 . . 4,color=black);
Построение графика точки в окрестности х=у=0
> plot(F(x)fх=-. 05.,0.05,у—.001..0.001,color=black);
-0.04
-0.0004
.02
0.0008
0.0004
0.04
Рис. 9.2. Задание функции F^ и построение графиков функции и ее производной
Этот анализ не выявляет у заданной функции каких-либо особенностей. Однако это не является поводом для благодушия — попытка найти экстремумы F^x) с помощью функции extrema и минимумы с помощью функции minimize завершаются полным крахом:
Неудачный поиск экстремумов и минимумов функции
>extrema(F(x),{},x, 's'):s;
>minimize(F(x) ,х=- .1.. .1):
minimize (.05 х + х е^^ sin(2 х), х = -.1 .. 1)
minimize(F(x),х=-2.5..-2);S
minimize (.05 х + х е^^ sin(2 х), х = -2.5 .. -2)
Приходится признать, что в данном случае система Maple 7 ведет себя далеко не самым лучшим образом. Чтобы довести анализ F(x) до конца, придется вспомнить, что у функции без особенностей максимумы и минимумы наблюдаются в точках, где производная меняет знак и проходит через нулевое значение. Таким образом, мы можем найти минимумы и максимумы по критерию равенства производной нулю. В данном случае это приводит к успеху:
Поиск минимумов по критерию равенства нулю производной
fsolve(diff(F(x),x)=0.x,-.5...5):
-.01274428224
>xm:=X;-
хт := -.0003165288799
>[F(xm).F(xnH-.001).F(xm-.001)J:
[-.00001562612637, .00003510718293, -.00006236451216]
fsolve(diff(F(x),х)=0,х,-2.5..-2);
-2.271212360
>fsolve(diff(F(x).x)=0.x,2. .2.5):
2.175344371
Неудачный поиск максимума
>maxim1ze(F(x) ,х=-1.. ■ .5);
maximize(.O5 х + х е^ ^ sin(2 х), х = -1 .. -.5)
Поиск максимумов по критерию равенства нулю производной
fsolve(diff(F(x),х),х,-1..-.5):
-.8094838517
fsolve(diff(F(x),x),x,.5..2):
' .8602002115
>fsolve(diff(F(x),x),x.-4..-3);
-3.629879137
fsolve(diff(F(x),x),x,3..4);
3.899664536
Итак, все основные особые точки данной функции (нули, минимумы и максимумы) найдены, хотя и не без трудностей и не всегда с применением специально предназначенных для такого поиска функций. В уроке 12 будет описана процедура, которая автоматизирует процесс анализа не очень сложных функций и обеспечивает его наглядную визуализацию.
Функции из отдельных кусков
Создание функций из отдельных кусков
Для создания функций, составленных из отдельных кусков, Maple 7 располагает интересной функцией:
piecewise(cond_l,f_l. cond_2.f_2 cond_n,f_n, f_otherwise)
где f_1 — выражение, cond_1 — логическое выражение, f_otherwise — необязательное дополнительное выражение. В зависимости от того или иного условия эта функция позволяет формировать соответствующую аналитическую зависимость. К кусочным функциям (подчас в скрытой форме) приводят функции с элементами сравнения аргумента, например abs, signum, max и др. Поэтому в Maple 7 введен достаточно мощный аппарат обработки и преобразований таких функций по частям.
Простые примеры применения функции piecewise
Рисунок 9.3 показывает задание функции /(т), содержащей три характерных участка. По определенной через функцию пользователя зависимости Дх) можно, как обычно, построить ее график.
Рис. 9.3. Пример задания и применения функции, составленной из отдельных кусков
Важно отметить, что созданная с помощью функции piecewise зависимость может участвовать в различных преобразованиях. Например, на рис. 9.3 показано, что она легко дифференцируется и можно построить график производной этой функции. При этом каждая часть функции обрабатывается отдельно.
Работа с функциями piecewise
С функциями типа piecewise можно работать, как с обычными функциями. При этом необходимые операции и преобразования осуществляются для каждой из частей функции и возвращаются в наглядной форме.
Ниже приведен пример задания функции f в аналитической форме:
restart;
f :- max(x"2 - 2. х-1);
/:= max(x2 - 2, х - I)
Для выявления характера функции воспользуемся функцией convert и создадим объект g в виде кусочной функции:
>g := convert(f, piecewise);
х2 - 2х2 - 2х - 1х2 - 2х - 1х2 - 2
х2 - 2
х2 - 2
х - 1
х2 - 2
х - 1
х2 - 2
Выполним дифференцирование и интегрирование функции: > fprlme := diff (f, x);
fprime := ■
2 х undefined
1
undefined
2х
X <
X =
X <
X =
1
2 +
]_
2 '
2"
1
2H
1
2 4
£
23
II '2
"2
1 "2
1 "2
/5
Vs"
Vs
Vs
Vs
<x
> Int(g,x)=
х2 - 2
1nt(g,x);
1 1
X-2-2"
1 1
/5
| x3 - 2 xx < - - ^ -/s'
1 275 r-11 r-
• х - 1
х2-2
J
J 5 dx
CX
< + 2X " 12+X-2+2^5
1 з .51 1
- x - 2 X + 7 V 5- + - J 5 < X
302 2
Как нетрудно заметить, результаты получены также в виде кусочных функций. Можно продолжить работу с функцией f и выполнить ее разложение в степенной ряд: > series(f, х);
1 +х + О(х6)
Чтобы убрать член с остаточной погрешностью, можно выполнить эту операцию следующим образом:
series(g, х);
1 + х.
Обратите внимание на то, что поскольку разложение в ряд ищется (по умолчанию) в окрестности точки х=0, то при этом используется тот кусок функции,
в котором расположена эта точка. Читатель может продолжить работу с кусочными функциями и далее.
Операции с полиномами
Определение полиномов
К числу наиболее известных и изученных аналитических функций относятся степенные многочлены — полиномы. Графики полиномов описывают огромное разнообразие кривых на плоскости. Кроме того, возможны рациональные полиномиальные выражения в виде отношения полиномов. Таким образом, круг объектов, которые могут быть представлены полиномами, достаточно обширен, и полиномиальные преобразования широко используются на практике, в частности, для приближенного представления других функций.
Под полиномом в системе Maple 7 понимается сумма выражений с целыми степенями. Многочлен для ряда переменных — многомерный полином. К одномерным полиномам относятся степенной многочлен:
р (х) = а„ х" + а„_х х" ' + ... а, х + а0,
а также отдельная переменная х и константа. Большое достоинство полиномов состоит в том, что они дают единообразное представление многих зависимостей и для своего вычисления требуют только арифметических операций (их число значительно сокращается при использовании хорошо известной схемы Горнера). Производные от полиномов и интегралы с подынтегральными функциями- полиномами легко вычисляются и имеют простой вид. Есть и достаточно простые алгоритмы для вычисления всех (в том числе комплексных) корней полиномов на заданном промежутке.
Выделение коэффициентов полиномов
Для выделения коэффициентов полиномов в Maple 7 служат следующие функции:
О coeff(p, х) — возвращает коэффициент при х полинома р;
О coeff(p.x.n) — возвращает коэффициент для члена со степенью п полинома р;
О coeff(p,xAn) — возвращает коэффициенты при хАп полинома р;
О coeffs(p, х, 't') — возвращает коэффициенты полинома нескольких переменных, относящиеся к переменной х (или списку переменных) с опцией ' t', задающей имя переменной;
О collect(p.x) — возвращает полином, объединяя коэффициенты при степенях переменной х. '
Ниже даны примеры применения этих функций:
p:=a4*x*4+a3*xA3+a2*xA2+al*x+aO;
р := а4х* + аЗх\+а2х2 + а1 х + аО
coeff(p.x):
al
coeff(p,xA3): аЗ
coeff(p,x,4);
а4
coeffs(p.x);
аО, а4, al, аЗ, а2
q:=xA2+2*yA2+3*x+4*y+5;
q := х2 + 2 у2 + 3 х + 4 'у + 5
coeffs(q);
2, 3,4, 1
coeffs(q.y);
х2 + 3 х + 5, 2,4
coeffs(q.x.y);
+ 2/ + 4у,3, 1
collect(q.x);
х^ЗЦ^х) +3x + (4,4x2,4x) + 5
collect(q.x.y);
у( 1) х2 + у( 3) х + у( 5 + 2 у2 + 4 у)
ПРИМЕЧАНИЕ Следует обратить внимание на то, что при выполнении операции collect в прежних версиях Maple довольно часто возникала фатальная ошибка. Как видно из приведенных примеров, в Maple 7 такой ошибки уже не возникает.
Оценка коэффициентов полинома по степеням
Полином может быть неполным, то есть не содержать членов со степенями ниже некоторой. Функция 1 coeff возвращает старший, а функция tcoeff — младший коэффициент полинома нескольких переменных. Эти функции задаются в виде:
Icoefftp) Icoefftp. х) Icoefftp, х. 't')Icoefftp) Icoefftp. х) Icoefftp, х. 't')tcoeff(p)tcoefftp. x)tcoefftp. x. 't')tcoeff(p)tcoefftp. x)tcoefftp. x. 't')
Icoefftp) Icoefftp. х) Icoefftp, х. 't')
Icoefftp) Icoefftp. х) Icoefftp, х. 't')
tcoeff(p)
tcoefftp. x)
tcoefftp. x. 't')
tcoeff(p)
tcoefftp. x)
tcoefftp. x. 't')
Функции Icoeff и tcoeff возвращают старший (младший) коэффициент полинома р относительно переменной х или ряда переменных при многомерном полиноме. Если х не определено, Icoeff (tcoeff) вычисляет старший (младший) коэффициент относительно всех переменных полинома р. Если третий аргумент t определен, то это имя назначено старшему (младшему) члену р. Если х — единственное неизвестное и d — степень р по х, то Icoefftp, х) эквивалентно coefftp, х, d). Если х — список или множество неизвестных, Icoeff (tcoeff) вычисляет старший (младший) коэффициент р, причем р рассматривается как полином многих переменных. Имейте в виду, что р должен быть раздожен по степеням неизвестного х до вызова функций 1 coeff или tcoeff. 1 ■
Приведем примеры применения функций Icoeff, tcoeff и coeffs:
> q:-l/x*2+2/x+3+4*x+5*x"2:
2 „ „, 2
в:= — + — + 3+ 4х + 5х
X А
lcoeff(q.x);
5
lcoeff(q.x.'t’);
5
t:
х2
coeffs(q,x,'t'):
1,4, 2,5
t:
Оценка степеней полинома
Функция degree возвращает высшую степень полинома, а 1 degree — низшую степень. Эти функции задаются следующим образом: -
degree(a.x)Idegree(a.x)
Функции degree и 1 degree используются, чтобы определить высшую и низшую степени полинома от неизвестного (неизвестных) х, которое чаще всего является единственным, но может быть списком или множеством неизвестных. Полином может иметь отрицательные целые показатели степеней при х. Таким образом, degree и 1 degree могут возвратить отрицательное или положительное целое число. Если выражение не является полиномом от х данным параметром, то возвращается FAIL.
Чтобы degree и 1 degree возвратили точный результат, полином обязательно должен быть сгруппирован по степеням х. Например, для выражения (х + 1) (х + 2) - х2 функция degree не обнаружит аннулирование старшего члена и неправильно возвратит результат 2. Во избежание этой проблемы перед вызовом degree следует применять к полиному функции collect или expand. Если х — множество неизвестных, degree/ 1 degree вычисляет полную степень. Если х — список неизвестных, degree/1 degree вычисляет векторную степень. Векторная степень определяется следующим образом: degree(p,[]) = О
degree(р. [xl.х2....]) =degree(р. xl) degreedcoeff(р, xl). [х2....])
Полная степень тогда определяется следующим образом:
degree(p.{xlxn}) - maximum degree(p,{xl,...xn})
или
degree(p.(xlxn}) = degree(p.[xlxn])
Обращаем внимание на то, что векторная степень зависит от порядка перечисления неизвестных, а полная степень не зависит. '
Примеры применения функций degree и 1 degree:
restart:
p:=a4*xA4+a3*xA3+a2*xA2;
р := а4 х4 + аЗ х* + а2 х2
degree(p.x):
4
Idegree(p.x);
2
q:=l/xA2+2/x+3+4*x+5*xA2;
q := — + —н 3 + 4 х + 5 х х2 х
degree(q.x):
2
Idegree(q.x):
-2
degree(x*sin(x),х);
FAIL
zero := y*(x/(x+l)+l/(x+l)-l):
> degree(zero,x);degree(zero,у);
FAIL
1
degree(col 1ect(zero.x.normal), x);degree(col 1ect(zero, у, normal),y);
Разложение полинома на множители
Для контроля того, имеет ли полином несокращаемые множители, может использоваться функция irreduc(p) и ее вариант в инертной форме IreducCp.К), где К — RootOf- выражение. Ниже приведены примеры применения этих тестовых функций:
>irreduc(xA2-l);
false
>irreduc(xA2-2);
true
>Irreduc(2*xA2+6*x+6) mod 7:
false
>Irreduc(xA4+x+l) mod 2;
true
>al1as(alpha=RootOf(xA4+x+l)):
>Irreduc(xA4+x+l,alpha) mod 2;
false
Разложение полинома по степеням
Для разложения полинома р по степеням служат инертные функции AFactor(p) и AFactors(p). Полином может быть представлен в виде зависимости от одной или нескольких переменных.
Функция Afactor(р) выполняет полную факторизацию (разложение) полинома р от нескольких переменных с коэффициентами в виде алгебраических чисел над полем комплексных чисел. При этом справедливо отношение eval a(AFactor(p) )=factor(p, complex). Таким образом, эта функция является, по существу, избыточной.
В случае одномерного полинома полное разложение на множители является разложением на линейные множители. Функция AFactors аналогична функции Afactor, но создает структуру данных формы [u, [[f[l] ,е[1]][f[n],е[п]]]] так, что p=u*f[l]Ae[l]*...*f[n]Ae[n], где каждый f[i] — неприводимый полином.
Ниже даны примеры применения функции Afactor:
> evala(AFactor(2*xA2+4*x-6));
2(х + 3)(х- 1)
> evala(AFactor(xA2+2*yA2)):
(х - RootOf(_Z2 + 2)у)(х + RootOf(_Z2 + 2)у)
expand((x-l)*(x-2)*(x-3)*(x-4)): х4- 10х3 + 35 х2 - 50 х + 24
AFactor(t);
AFactor(x4 - 10 х3 + 35 х2 - 50 х + 24)'
evala(t):
(х - 1)(х-2)(х-3)(х-4)
expand((x-l+I*2)*(x+l-I*2)*(x-3)):
х3-Зх2 + Зх-9+4/х-12 7
evalatAFactor(Я)):
(х - 3) (х2 + 3 + 4/)
evala(AFactors(xA2-2*yA2)):
[1, [[х - RootOf(_Z2 - 2)у, 1], [х + RootOf(_Z2 - 2)у, 1 ]]]
Нетрудно заметить, что разложение полинома на множители позволяет оценить наличие у него корней. Однако для этого удобнее воспользоваться специальными функциями, рассмотренными ниже.
Вычисление корней полинома
Для вычисления действительных и комплексных корней полиномов служит уже известная нам функция solve(p.x), возвращающая список корней полинома р одной переменной. Кроме того, имеются следующие функции для вычисления корней полиномов: rootstp)rootstp. К)
rootstp. х)rootstp. х. К)
Эти функции вычисляют точные корни в рациональной или алгебраической области чисел. Корни возвращаются в виде [ [rl.ml], „.. [rri.mn] ], где ri — это
корень полинома, a mi — порядковый номер полинома. С действиями этих функций можно разобраться с помощью приведенных ниже примеров:
р:=хА4+9*хА3+31*хА2+59*х+60:
р := х4 + 9 х3 + 31 х2 + 59 х + 60
solve(p.x);
3,-4,-1 + 2 7,-1 - 2 7
roots(p.x);
[[-4,1], [-3,1]]
roots(xA2-4,x);
[[2,1], [-2,1]]
expand((x-l)*(x-2)*(x-3)*(x-4));
x4 - 10 x3 + 35 x2 - 50 x + 24
roots(t.x);
[[1,1],[2,1],[3,1],[4,1]].
Основные операции с полиномами
С полиномами могут выполняться различные операции. Прежде всего отметим некоторые функции, которые относятся к одному полиному:
О psqrt(p) — возвращает квадрат полинома;
О proot(p.n) — возвращает и-ю степень полинома;
О real root (р) — возвращает интервал, в котором находятся действительные корни полинома;
О randpolylvars, eqns) — возвращает случайный полином по переменным vars (список) с максимальной степенью eqns;
О discrim(p,var) — вычисление дискриминанта полинома по переменной var;
О Primitive(a) mod р — проверка полинома на примитивность (возвращает true, если полином примитивен).
Действие этих функций достаточно очевидно, поэтому ограничимся приведением примеров их использования:
readlib(psqrt):
readlib(proot):■
psqrt(xA2+2*x*y+yA2);
у + х
proot(xA3+3*xA2+3*x+l. 3):
х + 1
psqrt(x+y);
NOSQRT
proot(x+y, 2);
NOROOT
p:-xA3-3*xA2+5*x-10:
p:=x3-3x2 + 5x- 10
discrim(p.x):
-1355.
readlib(realroot):v
realroot(p);
[[0,4]]’
randpolу([х],degree-10);
63 х10 + 57 х8 - 59 х5 + 45 х4 - 8 х3 - 93
randpoly([x],degree-10);
5 x9 + 99x8-61 x6-50x5- 12x3- 18x
randpolуC[x],degree-10);
41 x9 - 58 x8 - 90 x7 + 53 x6 - x4 + 94 x
PrimitiveC xA4+x+l ) mod 2;.
true.
Обратите внимание на то, что для использования некоторых из приведенных функций необходим вызов их из стандартной библиотеки. Для функции randpol у приведенные результаты случайны, так что, скорее всего, их повторение невозможно.
С полиномами можно выполнять обычные операции, используя для этого соответствующие операторы:
readlib(psqrt):
readlib(proot):
PrimitiveC хА4+х+1 ) mod 2;
true
pl:=al*xA3+bl*xA2+cl*x+dl: p2:=a2*xA2+b2*x+c2:
pl+p2:
al x3 + bl x2 + cl x + dl + a2 x2 * b2 x * c2
pl*p2;
(a7 x3 + bl x2 + cl x + dl) (a2 x2 + b2x + c2)
collected,x):
al a2 x5 + (bl a2 + al b2)x4 + (cl a2 + bl b2 + al c2^x3 + (dl a2 + cl b2 + bl c2)x2
+ (dl b2 + cl c2)x + dl c2
pl/p2;
al x3 + bl x2 + cl x + dl
a2 x2 + b2 x + c2.
expandCI,x);
al x3bl x2cl xdl
а2хг + Ь2х + с2 a2x2 + b2x + c2 a2x2 + b2x + c2 a2 x2 + b2 x + c2
В целом надо отметить, что аппарат действий с полиномами в Maple 7 хорошо развит и позволяет выполнять с ними практически любые математические операции. В частности, можно вычислять производные от полиномов и интегралы, у которых полиномы являются подынтегральными функциями:
diff(pl.x);
3 al ^ + 2 Ы х + cl
> diff(pl,x$2);
6а1 х + 2Ы
> Int(pl,x)=int(pl,x);
Г111
а/ х3 + Ы х2 + cl х + dl dx = - al х4 + ^ bl х3 + ^ cl х2 + dl х
> Int(pl,x=0..l)=1nt(pl,x=0..1):
Операции над степенными многочленами с отрицательными степенями
Хотя в подавляющем большинстве случаев используются степенные многочлены (полиномы) с положительными степенями, Maple 7 не накладывает особых ограничений и на многочлены с отрицательными степенями. Например, можно задать такой степенной многочлен:
pp:=a*xA(-2)+b*xA(-l)+c*x+d+e*xA2+f*xA3:
а b,2 г з
рр := —-нvcx + d + ex +j х
х2
Нетрудно показать, что с ним можно выполнять различные операции:
рр+рр;
„ а 2 b _« , „? „
2 — -I+ 2сх + 2<7 + 2ех2 + 2/х3
рр-рр;
О
ррА2:
( а b,2 г
—- НVcx + d + ex + fх
U х)
simplify(^);
(а + b х + с х3 + d х2 + е х4 +/х5)
D1ff(pp,x)=diff(pp,x);
d ( a b ,2 у з
— + — + сх + d + ex +f х
ox x2 X
Int(pp,x);
О Ь,2i
— -IVcx + d + ex +fx dx
I » ПРИМЕЧАНИЕ Maple? не накладывает ограничений на применение степенных многочленов (поли- —^номов) с отрицательными степенями. Однако свойства таких полиномов заметно отли
чаются от свойств полиномов с положительными степенями, поэтому при применении первых надо проявлять известную осторожность.,
Интерполяция и аппроксимация функциональных зависимостей
Интерполяция, экстраполяция и аппроксимация
Вычисление многих функций, особенно специальных, требует больших затрат времени. Поэтому до сих пор широко применяются таблицы таких функций. Достаточно отметить знаменитые на весь мир таблицы в книге «Справочник по специальным функциям с формулами, графиками и таблицами» под редакцией М. Абрамовица и И. Стиган [59].
Если некоторая зависимость у(х) представлена рядом табличных отсчетов у^х), то интерполяцией принято называть вычисление значений у(х) при заданном х, расположенном в интервале между отсчетами. За пределами общего интервала определения функции [а, 6], то есть при х < а и х > Ь, вычисление у(х) называют экстраполяцией (или иногда предсказанием значений функции). В данном случае речь идет об одномерной интерполяции, но возможны двумерная интерполяция функций двух переменных г(х, у) и даже многомерная интерполяция для функций многих переменных.
Интерполяция и экстраполяция часто выполняются по некоторой скрытой, но подразумеваемой зависимости. Например, если узловые точки функции соединить отрезками прямых, то будем иметь многоинтервальную линейную интерполяцию данных. Если использовать отрезки параболы, то интерполяция будет параболической. Особое значение имеет многоинтервальная сплайн-интерполяция, области применения которой уже сейчас весьма обширны и непрерывно расширяются. Интерполяция рядом Фурье (набором синусоидальных функций) также достаточно хорошо известна; она эффективна при интерполяции периодических функций. Аппроксимацией в системах компьютерной математики обычно называют получение приближенных значений какого-либо выражения. Однако под аппроксимацией функций подразумевается получение некоторой конкретной функции, вычисленные значения которой с некоторой точностью аналогичны аппроксимируемой зависимости. Обычно предпочитают найти одну зависимость, приближающую заданный ряд узловых точек. Часто для этого используют степенные многочлены — полиномы.
Здесь мы будем рассматривать такие виды аппроксимации, которые дают точные значения функции у(х) в узловых точках в пределах погрешности вычислений по умолчанию. Если аппроксимирующая зависимость выбирается из условия наименьшей среднеквадратической погрешности в узловых точках (ме- . тод наименьших квадратов), то мы имеем регрессию или приближение функций по методу наименьших квадратов/
Аппроксимация аналитически заданных функций
Если функция задана аналитически, то наиболее простым способом нахождения ее аппроксимирующей зависимости является применение функции convert. Это поясняют следующие примеры:
> convert(taylor(ехр(х),х,5).polynom);
1 2 1 з 1 4
1+х+2Х + -х + _х
> f:=x->(xA3+x)/(x"2-l);
> convert(f(x),parfrac,х);
11
х +— +—
х - 1 X + 1
На рис. 9.4 представлен пример полиномиальной аппроксимации хорошо известной статистической функции erfc(x). Для полинома задана максимальная степень 12, но ввиду отсутствия в разложении четных степеней максимальная степень результата оказывается равна И.
Рис. 9.4. Пример полиномиальной аппроксимации функции erfc(x)
Как видно из приведенного рисунка, в интервале изменения г от -1,5 до 1,5 аппроксимирующее выражение почти повторяет исходную зависимость. Однако затем график аппроксимирующей функции быстро отходит от графика исходной зависимости. При этом он ведет себя иначе даже качественно, никоим образом не показывая асимптотическое поведение, характерное для исходной зависимости.
Полиномиальная интерполяция табличных данных
Если данные некоторой зависимости у(х) заданы векторами X и Y ее дискретных значений, то для получения интерполяционного степенного многочлена достаточно записать многочлен для всех Д'пар значений у^х) при г = 1..^(или г = 0...N - 1, если индексы отсчетов начинаются с нуля). Полученная при этом система линейных (относительно коэффициентов полинома) уравнений после решения дает коэффициенты аппроксимирующего полинома. Степень полинома на 1 меньше N, а вычисляемые при х значения у (х) совпадают с табличными (узловыми) в пределах вычислительной погрешности.
На самом деле все это делать не нужно, поскольку Maple 7 имеет реализующую данный алгоритм встроенную функцию interp(X, Y, v) или в инертной форме Interp(X,Y,v).
Переменная v указывает имя переменной интерполяционного полинома. Векторы X и Y должны содержать п + 1 = N координат точек исходной зависимости, где п — степень интерполирующего полинома.
Рисунок 9.5 показывает технику применения полиномиальной аппроксимации на основе функции interp с построением графика исходных точек и аппроксимирующего полинома. Нетрудно заметить, что график полинома проходит точно через исходные точки — они показаны квадратиками.
В этом примере полезно присмотреться к визуализации результатов вычислений и совместному построению графика интерполирующего полинома и исходных точек. В частности, для построения последних использована обычная функция plot, позволяющая выводить на график точки с заданными координатами, причем не только в виде окружностей, но и в виде точек, маленьких крестиков, кружков, квадратов и других фигур. Для выбора типа точек и других параметров графика его надо выделить (установив указатель мыши в поле графика и щелкнув левой кнопкой) и нажать правую кнопку мыши — появится контекстно-зависимое меню с операциями форматирования графика. Это меню показано на рис. 9.5.
Приведем еще несколько примеров использования функции Interp:
Interp([2,5,6]. [9,8.3], х) mod 11: 8х2 + 6х + 9
alias(alpha=Root0f(xA4+x+l)); а
а :- InterpC[0.1.alpha],[alpha,alphas,alphaA3], x) mod 2;
a :=x2 + (a2 + a +l )x + a
Рис. 9.5. Пример осуществления полиномиальной аппроксимации
Сплайн-интерполяция и аппроксимация
Точность полиномиальной аппроксимации катастрофически падает при увеличении степени аппроксимирующих полиномов. От этого недостатка можно избавиться, используя для аппроксимации отрезки полиномов невысокой степени, применяемые для представления части узловых точек. Самым известным методом такой аппроксимации является сплайн-аппроксимация на основе применения отрезков кубических полиномов. При этом аппарат сплайн-аппрокси- мации позволяет получить полиномы, которые дают в узловых точках непрерывность не только представляемой ими функции, но и ее первых и даже вторых производных.
Наглядно сплайн-функцию можно представить в виде гибкой стальной линейки, закрепленной в узловых точках и плавно изгибающейся. Благодаря указанным свойствам сплайнов они неплохо описывают функции, представленные как небольшим числом узловых точек (благодаря плавности сплайн-кривых), так и функции, представляемые очень большим числом узловых точек (поскольку порядок полиномов от этого числа уже не зависит). Недостатком сплайн-ап- проксимации является отсутствие общего выражения для всей кривой. Фактически приходится использовать набор сплайн-функций для различных интервалов между узловыми точками.
Для получения сплайн-интерполяции используется Maple-функция spl ine(X,Y, var ,d). Здесь X и Y — одномерные векторы одинакового размера, несущие значения координат узловых точек исходной функции (причем в произвольном порядке), var — имя переменной, относительно которой вычисляется сплайн-функция, наконец, необязательный параметр d задает вид сплайна. Он может иметь следующие значения: 1 Inear — линейная функция, или полином первого порядка, quadratic — квадратичная функция, или полином второго порядка, cubic — полином третьего порядка, quartic — полином четвертого порядка. Если параметр d опущен, то сплайн-функция будет строиться на основе полиномов третьего порядка (кубические сплайны).
Технику сплайновой аппроксимации наглядно поясняет рис. 9.6. На нем представлено задание векторов узловых точек X и Y и четырех сплайновых функций, по которым построены их графики. Для одной из функций (с линейной интерполяцией между узлами) показан вид сплайновой функции.
Рис. 9.6. Задание сплайновой аппроксимации и построение графиков полученных функций
Как видно из рис. 9.6, сплайновая функция представляет собой кусочную функцию, определяемую на каждом отдельном интервале. При этом на каждом участке такая функция описывается отдельным полиномом соответствующей степени. Функция pl ot «понимает» такие функции и позволяет без преобразования типов данных строить их графики. Для работы с кусочными функциями можно использовать функции convert и piecewise.
Прямое и обратное Z-преобразования
Прямое и обратное Z-преобразования функций широко используются при решении задач автоматического управления. Эти преобразования задаются следующими функциями:
О ztrans(f, п, 2) — прямое преобразование функции /(и) в /(z);
О invztrans(f, z, n) — обратное преобразование /(z) в /(и).
Заметим, что прямое Z-преобразование базируется на соотношении ztrans(f(n) ,n,z)= = sum(f(n)/zAn,n=O. .infinity), записанном на Maple-языке. В первых версиях системы Maple Z-преобразования выполнялись средствами библиотеки и требовали вызова командой readlib(ztrans). Но в Maple 7 они включены в ядро системы и предварительного вызова уже не требуют. В этом убеждают следующие примеры:
a:=ztrans(n'2,n.z):
_ z (z + 1)
invztrans(a.z.n):
n"
Родственные Z-преобразованиям интегральные преобразования Лапласа и Фурье реализуются с помощью пакета inttrans (интегральные преобразования).
Что нового мы узнали?
В этом уроке мы научились:
О Выполнять поиск экстремумов функций.
О Осуществлять поиск минимумов и максимумов аналитических функций.
О Анализировать функции на непрерывность.
О Находить сингулярные точки функций.
О Вычислять асимптотические и иные разложения.
О Анализировать сложные функции.
О Работать с кусочными функциями.
О Выполнять операции с полиномами.
О Интерполировать и аппроксимировать функциональные зависимости.
О Вычислять прямые и обратные Z-преобразования.
□ □□ □ □□ □□ □ □
□ □
□ □ □
□ □
□ □ □
Символьные (аналитические) операции
Основные операции с выражениями Подстановки
Упрощение выражений Расширение выражений Факторизация выражений Комплектование по степеням Программирование символьных операций
Основные операции с выражениями
Работа с частями выражений
Выражения (ехрг) или уравнения (eqn) обычно используются как сами по себе, так и в виде равенств или неравенств. В последнем случае объекты с выражениями имеют левую и правую части. Для простейших манипуляций с выражениями полезны следующие функции:
О cost (а) — возвращает число сложений и умножений в выражении а (функция пакета codegen);
О Ihs(eqn) — выделяет левую часть eqn;
О rhs(eqn) — выделяет правую часть eqn;
О normal (ехрг) — дает нормализацию (сокращение) ехрг в виде дроби;
О numer(expr) — выделяет числитель ехрг;
О denom(expr) — выделяет знаменатель ехрг.
Ввиду очевидности действия этих функций ограничимся наглядными примерами их применения:
> with(codegen,cost):
> cost(xA3+bA2-x);
2 additions + 3 multiplications
> lhs(sin(x)A2+cos(x)A2=l);
sin(x)2 + cos(x)2
> rhs(sin(x)A2+cos(x)A2=l);
,
> normal(2/4+3/6+6/12);
3
2
> f:=5*(a-b)A2/(aA2-2*a*b-bA2);
a2 -lab-b2■
numer(f);
5(a-6)2
denom(f):
a2 - 2 a b - b2
ПРИМЕЧАНИЕПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Обратите внимание на то, что в предшествующих версиях Maple загрузка библиотечной функции cost выполнялась иначе — командой readlib(cost). Это обстоятельство может служить причиной неверной работы документов, созданных в старых версиях Maple, в среде описываемой версии Maple 7.
Работа с уровнями вложенности выражений
В общем случае выражения могут быть многоуровневыми и содержать объекты, расположенные на разных уровнях вложенности. Приведем две функции для оценки уровней выражений и списков;
О nops(expr) — возвращает число объектов первого уровня (операндов) в выражении ехрг;
О ор(ехрг) — возвращает список объектов первого уровня в выражении ехрг;
О ор(п,ехрг) — возвращает и-й объект первого уровня в выражении ехрг.
Ниже представлены примеры применения этих функций:
nops(a+b/c);
2
op(a+b/c):
b а, — с
ор(1.а+Ь/с);
а
ор(2,а+Ь/с):
с
Рекомендуется просмотреть и более сложные примеры на применение этих функций в справке.
Преобразование выражений в тождественные формы
Многие математические выражения имеют различные тождественные формы. Порою преобразование выражения из одной формы в другую позволяет получить результат, более удобный для последующих вычислений. Кроме того, различные функции Maple 7 работают с разными формами выражений и разными типами данных. Поэтому большое значение имеет целенаправленное преобразование выражений и данных.
Основной функцией для такого преобразования является функция convert:
convert(ехрг. form. arg3, ...)
Здесь ехрг — любое выражение, form — наименование формы, агдЗ, ... — необязательные дополнительные аргументы.
convert — простая и вместе с тем очень мощная функция. Ее мощь заключается в возможности задания множества параметров. Их полный перечень (76 штук!) можно найти в справке по функции convert. Многие из этих параметров очевидны с первого взгляда, поскольку повторяют наименования типов чисел, данных или функций. Например, опции binary, decimal, hex и octal преобразуют заданные числа в их двоичное, десятичное, шестнадцатеричное и восьмеричное представление. Параметр vector задает преобразование списка в вектор (напоминаем, что список и вектор — разные типы данных), а параметр matrix — в матрицу. Приведем примеры применения функции convert:
> convert(123, Ы nary);
1111011
> convert([a,b.c,d],'+'):
а + b + с + d
> f:=seq(x[i]'n,i=l..4);
>x:=’x': convert(sinh(x),exp);
x :=x
> convert(1.234567,fraction);
50737
41097
convert(l/7.float);
.1428571429
convert(sin(I*x),exp);
/1 . in
262 Л
converttsinh(x) ,exp);
x 1 1
е 2
> convert(arcsinh(x),ln):
ln(x + 7x2 + 1 )
> convert(12345,11 st);
[12345]
> convert(binomial(m,n),factorial):
m\
n! (m - и)!
> convert([[1.2].[3,4],[5,6]],tabie);
table([( 1, 1) = 1, (2, 1) = 3, (2, 2) = 4, (3, 1) = 5, (3, 2) = 6, (1, 2) = 2])
convert(-Pi,signum):
-л'
s:=taylor(sin(x),x,8):
5:=Х4х3 + П0?-5^0х7 + °(х8)
p:=convert(s,polynom);
_1 з 1517
Р' Х 6Х + 120Х 5040Х
convert(p.float);
х- .1666666667х3 + ,008333333333х5 - .0001984126984.?
f:=(xA4+x)/(x2-l);
х4 +х
'21
X - 1
convert(f,parfrac,х);
V + 1 + —
s:=series(f,х,5);
у := - х - х3 - х4 + О(х5)
convert(s.polynom);# Удаление члена ряда, описывающего погрешность 14
-х - х - X
Из этих примеров (их список читатель может пополнить самостоятельно) следует, что функция преобразования convert является одной из самых мощных функций Maple. С ее помощью можно получить множество различных форм одного и того же выражения.
Преобразование выражений
Еще одним мощным средством преобразования выражений является функция combine. Она обеспечивает объединение показателей степенных функций и преобразование тригонометрических и некоторых иных функций. Эта функция может записываться в трех формах:
combine(f) combine(f. n) combine(f. n. optl. opt2, ...)
Здесь f — любое выражение, множество или список выражений; п — имя, список или множество имен; optl, opt2, ... — имена параметров. Во втором аргументе можно использовать следующие функции:
@@ In Ps
absarctanconjugateexp
piecewisepolylogpowerproduct
radicalrangesignumtrig
Примеры применения функции combine представлены ниже:
combine(exp(2*x)A2,exp);
(4.г) е
> combine(2*s1n(x)A2+2*cos(x)A2);
2
combine(sin(x)*cos(x));
.'
- sin(2x)
combine(Int(x,x=a..b)■Int(xA2,x=a..b));
/ 7
I -Г + x dx
Эти примеры далеко не исчерпывают возможностей функции combine в преобразовании выражений. Рекомендуется обзорно просмотреть примеры применения функции combine с разными параметрами, приведенные в справочной системе Maple 7.
Контроль за типами объектов
Выражения и их части в Maple 7 рассматриваются как объекты. В ходе манипуляций с ними важное значение имеет контроль за типом объектов. Одной из основных функций, обеспечивающих такой контроль, является функция whattype(object), возвращающая тип объекта, например string, integer, float, fraction, function и т. д. Могут также возвращаться данные об операторах. Примеры применения этой функции даны ниже:
whattype(2+3): integer
whattype(Pi);
symbol
whattype(123./5): float
whattype(l/3);
fraction
whattype(sin(x));
function
whattype([l,2.3,a,b,c]): list
whattype(a+tH-c);
+
whattype(a*b/c): *
whattype(aAb);
whattype(l+2+3=4);
С помощью функции type(object.t) можно выяснить, относится ли указанный объект к соответствующему типу t, например:
type(2+3,integer);
true
type(sin(x),function):
true
type(hello,string);
false•
typeChello",string);
true
type(l/3,fraction);
true
При успешном соответствии типа объекта указанному (второй параметр) функция type возвращает логическое значение true, в противном случае — false.
Для более детального анализа объектов может использоваться функция hastype(expr, t), где ехрг — любое выражение и t — наименование типа подобъекта. Эта функция возвращает логическое значение true, если подобъект указанного типа содержится в выражении ехрг. Примеры применения этой функции даны ниже:
hastype(2+3,integer);
true
hastype(2+3/4,integer);
false
hastype(2*sin(x),function):
true
hastype(a+b-c/d,"+'):
true
Еще одна функция — has(f.x) — возвращает логическое значение true, если подобъект х содержится в объекте f, и false в ином случае:
has(2*sin(x),2):
true
has(2*sin(x),'/'):
false
has(2*sin(x),3-l):
true
Следует отметить, что соответствие подобъеКта выражения указанному подобъекту понимается в математическом смысле. Так, в последнем примере подобъект «3 - 1», если понимать его буквально, в выражении 2*sin(x) не содержится, но Maple-язык учитывает соответствие 3 - 1 = 2, и потому функция has в последнем примере возвращает true.
Подстановки
Функциональные преобразования подвыражений
Нередко бывает необходимо заменить некоторое подвыражение в заданном выражении на функцию от этого подвыражения. Для этого можно воспользоваться функцией applyop:
О applyop(f. 1, е) — применяет функцию f к z-му подвыражению выражения е;
О applyop(f, 1, е, .... хк, ...) — применяет функцию f к z-му подвыражению выражения е с передачей необязательных дополнительных аргументов хк.
Ниже даны примеры применения этой функции:
restart;applyoptsin.2.а+х);
а + sin(x)
applyop(f.1,g.2.a+b);
f(g, 2, a + b)
applyop(f.[2,3},a+x+b):
a + f(x) + O)
applyop(f.{l,2}.x/y*z):
p:=yA2-2*y-3:
P :=y2-2y-3
applyop(f.2,p);
y2 + f(-2y)-3
applyop(f.(2,3},p);
y2 + f(-2y) + f(-3)
applyop(f,{[2,l].3).p):
y2 + f(-2)y + f(-3).
applyop(abs,([2,l],3},p):
y2 + 2 у + 3
Функциональные преобразования элементов списков
Еще две функции, реализующие операции подстановки, указаны ниже:
map(fcn. expr. arg2 argn)
map2(fcn. argl. expr. arg3 argn)
Здесь fen — процедура или имя, expr — любое выражение, argi — необязательные дополнительные аргументы для fen.
Первая из этих функций позволяет приложить fen к операндам выражения expr.
Приведенные далее примеры иллюстрируют использование функции тар.
f:=x->xA2;
/:=х->х2
map(f.[1.2.3]);
[1,4,9]'=
map(f,[x.y,z]);
[<V2,Z21
map(x->xAn,[1,2,3]);
[1,2", 3"]
L:=[l,2,3,4];
L -[1,2,3,4]
map(proc(x.y) x*y+l end,[1,2,3,4],2);
[3,5, 7,9]
map(int.L.x);
[x, 2x, 3 x, 4 x]
map(F,[1,2,3],x.y,z);
[F(l,x,y,z),F(2,x,y,z),F(3,x,^z)]
Из этих примеров нетрудно заметить, что если второй параметр функции тар — список, то функция (первый параметр) прикладывается к каждому элементу списка, так что возвращается также список. Из последнего примера видно, что если за вторым параметром идет перечисление аргументов, то они включаются в список параметров функции.
Функция тар2 отличается иным расположением параметров. Ее действие наглядно поясняют следующие примеры:
map2(w,g,{a,b.c});
{w(g, a), w(g, b), w(g, с)}
map2(op,l,[a+b+i.c+d+k.e+f+j]):
[a, c, e]
map2(op,3,[a+b+1,c+d+k,e+f+j]):
[', к,Л
map2(diff,[sin(x),cos(x),xAn],x);
. ,. x" и
cos(x), -sin(x),
Подстановки с помощью функций add, mul и seq
Заметим, что операции, подобные описанным выше, Maple 7 реализует и с рядом других функций. Ограничимся примерами на подстановки с помощью функций сложения add, умножения mul и создания последовательностей seq:
add(i,i-[a,b,c]);
а + b + с
add(iA2.i-[a.b,c]);
а2 + Ь2 + с2
> add(1A2,1=[l.2,3]);
14
mul(х-1,1=0..4):
х(х- 1 ) (х - 2) (х - 3) (х - 4)
mul(хА1,1=0..4);
х’°
seq(w(i),1={а.Ь,с});
w(ti), w(.b), w(c)
seq(w(x,y,z),1={1,2,3});
w(x, у, z), w(x, y, z), w(x,y, z)
seq(1nt(xAi,x),1={1,2,3.4});
Подстановки с помощью функций subs и subsop
Подстановки в общем случае служат для замены одной части выражения на другую. Частными видами подстановок являются такие виды операций, как замена одной переменной на другую или замена символьного значения переменной ее численным значением. Основные операции подстановки выполняют следующие функции:
О subs(x=a,e) — в выражении е заменяет подвыражение х на подвыражение а;
О subs(slsn,e) —■ в выражении е заменяет одни подвыражения на другие, выбирая их из списков si, ..., sn вида х=а;
О subsopCeql, eq2 eqieqn, e) — в выражении e заменяет указанные в eqi операнды другими, указанными в правой части равенств eqi вида ni=ei, где гл — номер операнда, ei — выражение для замены.
Все эти функции возвращают измененное после подстановки выражение. Ниже показаны примеры применения функций подстановок:
subs(a=b,bA2-2*a*b-bA2);
2 b2
subs(a=2.b=l.bA2-2*a*b-bA2):'
-4
subs(c=a-b,(aA2-2*a*b+bA2)/c);
а2 - 2 а b + Ь2
а-Ь
normal(Ж);
а-Ь
subs(a=x,b=y,c=z,[a,b.c]):
[x,y,z]
subs({x=y,y=x},[x,y]):
[Л*]
subs(a=sin(x),b=cos(x).a'2+b*b):
sin(x)2 + cos(x)2
simpHfy(X):
'
subsop(l=x,a+b+c);
x + b + c
subsop(2=x,a+b+c);
a+ x + c'
subsop(3=x,a+b+c);
a + b+x
subsop(3=x,a+b/c);
Error, improper op or subscript selector
subsop(l=sin(x),(l+cos(x))/b):
sin(x) b
subsop(2=sin(x),(l+cos(x))/b):
(1 + cos(x)) sin(x)
subsop(l=sin(x),2=sin(x),(l+cos(x))/b);
sin(x)2
Следует обратить внимание на то, что результат подстановок, полученный с помощью функции subop, порой может не совпадать с ожидаемым. Поэтому полезно контролировать получаемые в результате подстановок выражения на их корректность.
Одним из важных применений подстановок является проверка правильности решений уравнений и систем уравнений. Ниже дан пример такой проверки:
eqs:={x+y+z=6,y/x=z-l.z-x=2};
у
eqs := {х + у + z = 6, z - х = 2, — = z - 1}
res:=solve(eqs,{x,y,z}):
res := {z = -2, у = 12, x = -4}, {у = 2, z = 3, x = 1}
subs(res,eqs):
[2 = 2, 6 = 6,-3 =-3}
Здесь задана система из трех нелинейных уравнений, которая затем решена функцией solve. В конце примера с помощью функции подстановки выполнена проверка правильности решения. Оно верно, поскольку у всех уравнений значение левой части совпадает со значением правой части.
Функции сортировки и селекции
Сортировка и селекция выражений широко используются в практике символьных преобразований. Для выполнения сортировки служит функция sort, применяемая в одной из следующих форм:
sort(L)sortd. F)sort(A) sort(A. V)
Здесь L — список сортируемых значений, F — необязательная булева процедура с двумя аргументами, А — алгебраическое выражение, V — необязательные дополнительные переменные.
restart;
> sort([y,s,f,a,c,1]);t([2,5,l,7,3,8]);
[a,c,/,z,5,y]
t([2, 5, 1,7,3, 8])
sort([y.s,f,a.c,i]);
[a, c,/,z, s,y]
sort([y,s.f,a.c,i],lexorder);
[a, cj, i, 5,y]
sort(l+xA4-xA2+x);
x4-x2+x + 1
sort(y*xA2+x*y+y-xA2+xA4*yA5);
x4/ -Vx^-x1 + xy +y
sort((y+z+x)/(y-x-z),{x,y});
X + y + z
x + у - z
names:=["Peter", "Anna","VIadimir","Ivan"];
names := ["Peter", "Anna", "Vladimir", "Ivan']
sort(names);
["Anna", "Ivan] "Peter", "Vladimir"]
integers:=[$10..30];'
integers :=.
[ 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30]
ПРИМЕЧАНИЕ Вы можете проверить, что функция sort в Maple 7 способна сортировать буквы и даже ————слова русского языка.
Если функция сортировки меняет порядок расположения членов в выражении (или порядок расположения выражений), то другая функция — select — служит для выделения требуемого выражения:
select(f, е)
select(f, е, М bn)
Как бы обратной ей по действию служит функция remove, устраняющая заданные выражения:
remove(f, ,е)
remove(f, е, Ы bn)
В этих функциях f — процедура, возвращающая логическое значение, е — список, множество, сумма, произведение или функция, М, ..., bn — необязательные дополнительные аргументы.
Далее даны примеры применения этих функций.
integers := [$10.,30]:
seiectdsprime,integers); [11, 13, 17, 19, 23,29]
remove(isprime,integers);■
[10, 12, 14, 15, 16, 18, 20,21,22, 24, 25,26, 27, 28, 30]
f:=2*ln(a*x)*exp(x)*ln(y);
/:= 2 ln(ax) e’ ln(y)
select(has,f,x);
ln(ax) eA
remove(has,f,x);
2 ln(y)
f:=indets(f);
/:= {a, x, y, e\ ln(y), ln(a x)}
seiect(type,f.name);
{a,x,y}
remove(type,f,name):
{eA, ln(y), ln(ax)}
f:=2*ln(x)*(y+l);
/:= 2 ln(x) (y + 1)
c:=remove(has,f,x);
c := 2 у + 2
f/c:
ln(x) (y + 1)
2^ + 2
select(has.f.x): ln(x)
Maple имеет также оператор селекции А[ехрг]. Его действие поясняют следующие примеры: > restart;
S:=[a+b*c,xA2,c,l,2,3]:
S:=[a + Ac,x2, с, 1,2,3]
S[l]: а + b с
>S[1.,2];
[a + bc, x2]
SE-2.,-1];
[2,3]
>S[3..3J:
S[3.,2];
[ 1
S[4..6J:
[1,2,3]
X.--SCJ;
X := а + b с, х2, с, 1,2,3
Х[1];
а + b с
Х[1..2]:
а + b с, х2
Х[-2..-1]:
2,3
S:={a,b.c);
S := {а, 6, с}
S[l]:
а
S[3];
с
5[1..2]:
{а,6}
5[-2..-1]:
{/?,<?}
Упрощение выражений
Функция simplify — одна из самых мощных в системах символьной математики. Она предназначена для упрощения математических выражений. «Все гениальное просто», — любим мы повторять, хотя это далеко не всегда так. Тем не менее стремление представить многие математические выражения в наиболее простом виде поощряется в большинстве вычислений и нередко составляет их цель.
В системе Maple 7 функция упрощения используется в следующем виде:
О simplify(expr) — возвращает упрощенное выражение ехрг или повторяет его, если упрощение в рамках правил Maple 7 невозможно;
О simplify(expr, nl, п2, ...)—возвращает упрощенное выражение ехрг с учетом параметров с именами nl, п2, ... (в том числе заданных списком или множеством);
О simplify(expr,assume=prop) — возвращает упрощенное выражение ехрг с учетом всех условий.
Функция simplify — многоцелевая. Она обеспечивает упрощение математических выражений, выполняя следующие типовые действия (для простоты обозначим их как ■>):
О комбинируя цифровые подвыражения (3*х*5->15*х, 10*х/5->2*х);
О приводя подобные множители в произведениях (хА3*а*х->а*хА4);
О приводя подобные члены в суммах (5*х+2+3*х->8*х+2);
О используя тождества, Содержащие ноль (а+0->а, х-0->х);
О используя тождества, содержащие единицу (1*х->х);
О распределяя целочисленные показатели степени в произведениях ((3*х*уА3)А2 ->9*хА2*уА6);
О сокращая ехрг на наибольший общий полиномиальный или иной множитель;
О понижая степень полиномов там, где это возможно;
О используя преобразования, способные упростить выражения.
Несмотря на свою гибкость, функция simplify не всегда способна выполнить возможные упрощения. В этом случае ей надо подсказать, в какой области ищутся упрощения и где можно найти соответствующие упрощающие преобразования. С этой целью в функцию simplify можно включать дополнительные параметры. В качестве параметров могут задаваться имена специальных математических функций и указания на область действия упрощений: Bessel I, Bessel J, BesselK, Bessel Y, Ei, GAMMA, RootOf, LambertW, di log, exp, In, sqrt, polylog, pg, pochhammer, trig (для всех тригонометрических функций), hypergeom, radical, power и atsign (для операторов). Полезен также параметр symbolic, явно указывающий на проведение символьных преобразований.
Возможно также применение функции simplify в форме simplify[<name>], где <name> — одно из следующих указаний: atsi gn, GAMMA, hypergeom, power, radi cal, RootOf, sqrt, trig.
Ниже даны примеры применения функции simplify:
simplify(4A(l/2)+3);
5
simplify((xAy)Az+3A(3),power):
(x’f+ 27
simplify(sin(x)A2+cos(x)A2,trig);
1
e:=cos(x)A5+sin(x)A4+2*cos(x)A2-2*sin(x)A2-cos(2*x);;
e := cos(x)5 + sin(x)4 + 2 cos(x)2 - 2 sin(x)2 - cos(2 x)
simplify(e): cos(x)5 + cos(x)4
simplify(GAMMA(n+4)/GAMMA(n),GAMMA):
n (и + 1) (n + 2) (n + 3)
r:=Root0f(xA2-2=0,x):
s1mplify(rA2,RootOf);
2
simplifyd/r.RootOf);
RootOf(Z2 - 2)
simplify(ln(x*y),power,symbolic): ln(x) + ln(y)
e:=(-5*b22*a)A(l/2):
e := ^-5 b2 a
simplify(e,radical);
^-b2 а
simplify(e,radical.symbolic);
b-fS
simplify(GAMMA(n+l)/n!)[GAMMA];
Действие функции simplify существенно зависит от областей определения переменных. В следующем примере упрощение выражения не произошло, поскольку результат этой операции неоднозначен:
restart:
simplify(sqrt(xA4*yA2));
Однако, определив переменные как реальные или положительные, можно легко добиться желаемого упрощения:
simplify(sqrt(xA4*yA2),assume=positive);
simplify(sqrt(xA4*yA2),assume=real):
Читателю настоятельно рекомендуется просмотреть все разделы справочной системы, относящиеся к примерам применения функции simplify (в том числе с другими функциями символьных преобразований), поскольку их число очень велико и эти примеры наглядно демонстрируют необходимость правильного применения разнообразных параметров для придания упрощениям нужного характера. Если функция simplify не способна выполнить упрощение выражения ехрг, то она просто его повторяет. Это сигнал к применению опций.
Расширение выражений
Даже в жизни мы говорим: «не все так просто». Порою упрощенное выражение скрывает его особенности, знание которых является желательным. Функция expand «расширяет» выражение ехрг и записывается в виде:
expand(expr. expri. expr2 exprn)
где ехрг — расширяемое выражение, expri, ехрг2, ..., exprn — необязательные подвыражения — опции. Имеется также инертная форма данной функции — Expand(ехрг). Кроме того, возможно применение операторной конструкции frontend(expans,[expr]). Функция expand раскладывает рациональные выражения на простые дроби, полиномы на полиномиальные разложения, она способна раскрыть многие математические функции, такие как sin, cos, tan, sinh, cosh, tanh, det, erf, exp, factorial, GAMMA, In, max, min, Psi, binomial, sum, product, int, limit, bernoulli, euler, abs, signum, pochhammer, polylog, Bessel J, BesselY, Bessel I, BesselK, AngerJ, Beta, Hankel, Kelvin,
Struve, WeberE и функция pi ecewi se. С помощью дополнительных аргументов expri, ехрг2, ..., ехргп можно задать расширение отдельных фрагментов в ехрг.
Примеры применения функции expand приведены ниже:
expand!(х+2)*(х+3)*(х+4));
х3 + 9 х2 + 26 х + 24
expand(sin(2*x)):
2 sin(x) cos(x)
expand(sin(x+y));
sin(x) cos(y) + cos(x) sin(y)
> expand([(a+b)*(a-b),tan(2*x)]);
expand!(a+d)*(b+d)*(c+d));
abc + abd + adc-\-ad2 + dbc + d1b + d2c + di
expand!(x+l)*(y+l)):
xy + X + y + 1
expand!(y+l).(x+l));
У + 1
expand!(x+l)*(y+z));
xy+ xz+ y + z
expand!(x+l)*(y+z), x+1):
(x + 1 )y + (x + 1) z
frontend(expand,[!a+b)A3]);
a3 + 3 a2 b + 3 a b2 + b1
Факторизация выражений
Разложение целых и рациональных чисел
Для разложения целых или рациональных чисел на множители в виде простых чисел служит функция:
ifactor(n) или 1factor(n.method)
где п — число, method — параметр, задающий метод разложения. Другая библиотечная функция, i factors (п), возвращает результат разложения в форме вложенных списков:
1 factor(123456789):
(З)2 (3803) (3607)
1factor(30l);
. (2)26 (З)14 (5)7 (7)4 (11)2 (13)2 (17) (19) (23) (29)
> ifactor(121/201);
(2)8 (З)3 (5)2 (7) (13) (17) (19)
> ifactor(100/78);
(5)2
(13)
> readlib(ifactors):
> ifactors(100/78);
[1, [[2, 1], [5,2], [3,-1], [13,-1]]]
Разложение выражений (факторизация)
Для алгебраических выражений функция факторизации записывается в вычисляемой и невычисляемой (инертной) формах:
factor(a)Factor(a)
factor(a.K)FactorCa.К)
Здесь а — полином с несколькими переменными, К — необязательное алгебраическое расширение. Для получения результата от инертной формы функции факторизации надо использовать функции вычисления eval а или evalgf.
Главная цель факторизации — это нахождение максимального числа независимых сомножителей выражения, линейных по заданным переменным с коэффициентами наиболее простой формы. Ниже представлены примеры применения функции factor:
factor(aA2+2*a*b+bA2);
(a + Z?)2
factor(aA2-2*a*b-bA2);
a2 -2ab-b2
p:=expand((x-l)*(x-2)*(x-3)*(x-4));
p :=x4 - 10 x3 + 35 x2 - 50 x + 24
factor (p); yt
(x- l)(x-2)(x-3)(x-4)
> factor(xA5-2,2A(l/5));
(x-2)(x +x 2 +x 2+x2+2)
alias(alpha=RootOf(xA2-2));
a
factor(xA2-2,alpha);
(x + a) (x-a)
factor(xA3-yA3);
(x-y)(x2+xy+/)
factor(xA3-yA3.(-2)A(l/2));'
(x-y) (x2+xy+.y2)
factor(xA3-yA3.(-3)A(l/2D;
^x+y-y^^x-t-y+y^Hx-y)
factor(хА3-3, complex);
(х+.72 И247852+ 1.249024766/) (х + .7211247852 - 1.249024766/)
(х- 1.442249570)
Комплектование по степеням
Еще одна функция общего назначения — collect — служит для комплектования выражения ехрг по степеням указанного фрагмента х (в том числе множества либо списка). Она задается в одной из следующих форм: collectta, х) collect(а. х. form, func)
Во второй форме этой функции дополнительно задаются параметры form (форма) и func (функция или процедура). Параметр form может иметь два значения: recursive (рекурсивная форма) и distributed (дистрибутивная форма). Параметр func позволяет задать имя функции, по которой будет идти комплектование ехрг. Примеры применения функции collect представлены ниже:
collect(x+xA3-2*x,x):
-х + х3
col 1ect(х+2*уА3+х+3+хА3*у.recursive.x);
х(2 х + 2 у3 + 3 + х3у)
collect(х+2*уА3+х+3+хА3*у,distributive,у);
у(2х + 2у3 + 3 + х3 у)
f:=a*exp(x)-exp(x)*x-x;
/:= а ех - ехх -х
collect(f,exp(x));
(а-х')ех-х™
g:=int(x*(exp(x)+exp(-x)).x);
г г х 1
g := е х- е ех ех
collect(g,exp(x));
р:=х*уга*х*у+у*хА2-а*у*хА2+х+а*х; р:-ху + аху+ух2 — аух2+х + ах > collect(p.[x.у].recursive);
( 1 - о ) у х2 + ( (1 + а ) у + 1 + а ) х
collect(p,[x,у],distributed):
(1 + а)х + (1 + а)ху + (1 -а) ух2
f :=аА3*хА2.-х+аА3+а:
/:= а3 х2 - х + а3 + а
collect(f.x): а3 х2-х +а3 + а
collect(f,x,factor);
а3 х2 -х + а (а2 + 1)
p:-y/x+2*z/x+xA(l/3) -у*хА(1/3);
РРу 2z (1/3)(1/3)
Р
Р
collect(p.x);
ч (|/3) > У+ 2z (1-у)х+—-—
Программирование символьных операций
Реализация итераций Ньютона в символьном виде
Найти достаточно простую и наглядную задачу, решение которой отсутствует в системе Maple 7, не очень просто. Поэтому для демонстрации решения задачи с применением аналитических методов воспользуемся примером, ставшим классическим, — реализуем итерационный метод Ньютона при решении нелинейного уравнения вида /(х) = 0.
Как известно, метод Ньютона сводится к итерационным вычислениям по следующей формуле:
х,., = х, + f(x,)/f Чх,).
Реализующая его процедура выглядит довольно просто:
restart:
NI:=proc(expr,x) local iter;
iter:“x-expr/diff(expr.x);
unapply(iter.x)
end;
NI := proc (expr, x) local iter; iter := x - expr/diff( expr, x); unapply( iter, x) end proc
Для получения итерационной формулы в аналитическом виде здесь используется функция unapply. Теперь, если задать решаемое уравнение, то можно получить искомое аналитическое выражение:
expr:-sin(x)A2-0.5:
expr := sin(x)2 - .5
F:-NI(expr,x):
„,1 sin(x)2-.5
2 sm(x) cos(x),
Далее, задав начальное приближение для х в виде х = х0, можно получить результаты вычислений для ряда итераций:
х0:=0.2:
хО := .2’
to 8 do xO:=F(xO):od:
xO := 1.38261 1210
xO := .117460944
xO := 2.206529505
xO := 2.360830634
xO " 2.356194357
xO := 2.356194490
xO := 2.356194490
xO := 2.356194490
Нетрудно заметить, что, испытав скачок в начале решения, значения х довольно быстро сходятся к конечному результату, дающему корень заданной функции. Последние три итерации дают одно и то же значение х. Заметим, что этот метод дает только одно решение, даже если корней несколько. Вычислить другие корни в таком случае можно, изменив начальное условие.
Можно попробовать с помощью полученной процедуры получить решение и для другой функции:
ехрг:=1п(хА2)-0.5:
ехрг := 1п(хА) - .5
F:=NI(expr,x);
17
F=x —> х - - (ln(x2) - .5) х
хО-О.2; xO := .2
to 8 do xO:=F(xO):od;
xO -.5718875825
xO := 1.034437603
xO := 1.258023119
xO := 1.283760340
xO := 1.284025389
xO := 1.284025417
x0:= 1.284025416
xO := 1.284025417
Здесь итерационная формула имеет (и вполне естественно) уже другой вид, но сходимость к корню также обеспечивается за несколько итераций.
Возможна и иная форма задания итерационной процедуры с применением оператора дифференцирования D и заданием исходной функции также в виде процедуры:
МI:=ргос(f::procedure)
(x->x)-eval(f)/D(eval(f));
end;
MI := proc (/-.procedure) (x —> x) - eval(/)/D( eval(/)) end proc
g:=x->x-cos(x);
g :-x —> x - cos(x)
SI:=MI(g);
x0:=0.1:
xO := .1
to 6 do xO:=SI(xO) od;
xO := .9137633858
xO := .7446642419
xO := .7390919660
xO :=. 7390851333.
xO := .7390851332
xO :=.7390851332
Вообще говоря, в программных процедурах можно использовать любые операторы и функции, присущие Maple-языку, в том числе и те, которые реализуют символьные вычисления. Это открывает широкий простор для разработки новых процедур и функций, обеспечивающих выполнение символьных операций.
Вычисление интеграла по известной формуле
Рассмотрим следующий пример: > Int(eAx*xAn,x)=int(eAx*xAn.x);
J6ххп dx = -(-l /*л) 1п(е)н 'л) (хп (-1У 1п(е)" и Г(л) (-х ln(e))(~"’
-х" (-1У 1п(е)” е<х1п(е)) -х” (-1)” 1п(е)” п (-х 1п(е))(~л) Г(и, -х 1п(е)))
Прежние версии системы Maple не брали этот интеграл, поскольку он не имеет аналитического представления через обычные функции. Maple 7 блестяще вычисляет этот «крепкий орешек», но полученное выражение довольно сложно.
Из математики известно, что такой интеграл может быть представлен в следующем виде:■
Используя эту формулу, мы можем создать простую процедуру для численного и аналитического вычисления данного интеграла:
> IntExpMonomial:=ргос(п::anything,x::name)
local 1;
n!*exp(x)*sum(((-l)A(n-i)*xAi)/i!.1=0..n):
end:
IntExpMonomial := proc (n::anything, r/.name)
local i;
n!xexp(x)xsum((-l )Л(и - i')xxAi/i'., i = 0 ..л)
end proc
Проверим ее в работе: > IntExpMonomial(З.х);Проверим ее в работе: > IntExpMonomial(З.х);> IntExpMonomial(5,х):> IntExpMonomial(5,х):
Проверим ее в работе: > IntExpMonomial(З.х);
Проверим ее в работе: > IntExpMonomial(З.х);
> IntExpMonomial(5,х):
> IntExpMonomial(5,х):
120 erf—1 + х — ~ х2 + ^х3+ "^х5
I2 о 24120
> IntExpMonomial(п,х):
л^МГе'"’
х<п+11 ((-х/ 1 л) е( г) Г(2 + л) - (л + 1) (-х)1 * е1 Г(л + 1,-х)))
+(„ + 1)!J
Результат в аналитическом виде довольно прост для данного интеграла с конкретным значением п. Более того, мы получили несколько иной результат и для п в общем случае. Но точен ли он? Для ответа на этот вопрос продифференцируем полученное выражение:
> diffO.x);
/йе^СИГе'"*’
+ л! ех+ л! ехх ((-х) е Г(2 + п) - (л + 1) (-х) е Г(л+1,-х))
+ л! ех
+ л! ех
+(л+1)!
-(-1)"
х* ” (п + 1) ((-х)1 е* 1 Г(2 +„) - (п + 1) (-х)* ' )е< *Г(л + 1,-х)) +Г^ГГП!
Г(2 + п)Г(2 + п)(л+1) (-х)(-1-и)еГ(2 + л) ..(-!-«) (-.г)
Г(2 + п)
Г(2 + п)
х(-х) е
V
(и + 1) (-х)( ’ п> (-1 - и) е( Y) Г(п + 1, -х)
+ (н + 1) (-х)( 1 '^ е* v) Г(и + 1, -х) - (л + 1) (—х)* * "* е* v) (-х)" ev ^(п + 1)! j
Результат дифференцирования выглядит куда сложнее, чем вычисленный интеграл. Однако с помощью функции simplify он упрощается к подынтегральной функции:
> simplify(^);
е1 х"
Это говорит о том, что задача вычисления заданного интеграла в аналитической форме действительно решена. А что касается громоздкости результатов, так ведь системы, подобные Maple 7, для того и созданы, чтобы облегчить нам работу с громоздкими вычислениями — в том числе аналитическими.
Вложенные процедуры и интегрирование по частям
Теперь мы подошли к важному моменту, о котором читатель наверняка уже давно догадался — в составляемых пользователем процедурах можно использовать ранее составленные им (или кем-то еще) другие процедуры! Таким образом, Maple-язык позволяет реализовать процедуры, вложенные друг в друга.
Для иллюстрации применения вложенных процедур рассмот^км операцию интегрирования по частям. Пусть нам надо вычислить интеграл:
| р^ех dx.
где р(х) — выражение, представляющее полином.
Приведенный ниже пример подготовлен в реализации Maple 7 [38]. Вначале подготовим процедуру IntExpMonomialR, реализующую вычисление уже рассмотренного ранее интеграла, но рекурсивным способом:
> IntExpMonomialR:=proc(n::nonnegint,x::name)
local i:if n=0 then RETURN(exp(x)) fi;
x*n*exp(x)-n*IntExpMonomialR(n-l,x);
end:
IntExpMonomialR := proc (n::nonnegint, x/.name)
local i;
if n = 0 then RETURN(exp(x)) end if;
xAzzxexp( x) - «xIntExpMonomialR( n - 1, x) end proc
Проверим ее в работе:
> IntExpMonomialR(4.х);
х4 er - 4 x3 e' + 12 x2 e v - 24 x e v + 24 ex
> collect(X,exp(x)):
(?-4?+ 12 x2 - 24x + 24) ex
Теперь составим процедуру для вычисления по частям нашего интеграла:
> IntExpPolynomial:=proc(p::polynom,x::name)
local 1,result:
## WARNING: degree(O.x) now returns -infinity
result:=add(coeff(p,x,i)*IntExpMonomialR(i,x).1=0. .degree(p.x)): collect(result,exp(x)): end;
IntExpPolynomial := proc (pwpolynom, x::name) local i, result',
result := add(coeff(p, x, z )x!ntExpMonomialR( z, x), i = 0 .. degree(p, x)); collect(reszz/Z, exp(x)) end proc
В этой процедуре имеется обращение к ранее составленной процедуре IntExpMonomialR. Обратите внимание на то, что в процедуре введено предупреждение об определенных проблемах, связанных с использованием функции degree (сообщение начинается с символов ##). Тем не менее процедура работает, в чем убеждают по крайней мере следующие примеры:■
> р:=(хА2+1)*(1-3*х):
р := (х2 + 1) (1 - 3 х)
> expand(p):
х2 - 3 х3 + 1 - 3 х
1nt(p*exp(x),x):
10 х2 е* - 23 х ех + 24 ех - 3 х3 ех
IntExpPolynomial (р,х);
(Юх2 -23х +24 - 3 х3) ех
В заключение остается отметить, что данный пример в Maple V R4 дает неточный результат, хотя никаких сообщений об ошибках не выводится.
Что нового мы узнали?
В этом уроке мы научились:
О Осуществлять основные операции с выражениями.
О Выполнять приложения и подстановки.
О Упрощать и расширять выражения.
О Осуществлять факторизацию выражений.
О Выполнять комплектование выражений по степеням.
О Программировать некоторые символьные операции.
(Шурок
Типовые средства построения графиков
□
□
□
□ □
□
Основные возможности построения двумерных графиков
Основная функция построения двумерных графиков — plot
Задание координатных систем двумерных графиков
Управление цветом и стилем двумерных графиков
Основные типы двумерных графиков
Трехмерные графики
Построение поверхностей
Быстрое построение графиков
Специальные приемы построения трехмерных графиков
Структуры двумерной и трехмерной графики
Введение в построение двумерных графиков
Основные возможности двумерной графики
Maple 7 реализует все мыслимые (и даже «немыслимые») варианты математических графиков. Строятся как графики простых функций в декартовой и полярной системах координат, так и графики, показывающие реалистические образы сложных, пересекающихся в пространстве фигур с их функциональной окраской. Возможны наглядные графические иллюстрации решений самых разнообразных уравнений, включая системы дифференциальных уравнений.
В само ядро Maple 7 встроено ограниченное число функций построения графиков. Это прежде всего функция для построения двумерных графиков plot и функция для построения трехмерных графиков plot3d. Они позволяют строить графики наиболее распространенных типов. Для построения специальных графиков (например, векторных полей градиентов, решения дифференциальных уравнений, построения фазовых портретов и т. д.) в пакеты системы Maple 7 включено большое число различных графических функций. Для их вызова необходимы соответствующие указания.
Вообще говоря, средства для построения графиков в большинстве языков программирования принято считать графическими процедурами, или операторами. Однако мы сохраним за ними наименование функций, в силу двух принципиально важных свойств:
О графические средства Maple V возвращают некоторые графические объекты, которые размещаются в окне документа —■ в строке вывода или в отдельном графическом объекте;
О эти объекты можно использовать в качестве значений переменных, то есть переменным можно присваивать значения графических объектов и выполнять над ними соответствующие операции (например, с помощью функции show выводить на экран несколько графиков).
Графические функции заданы таким образом, что обеспечивают построение типовых графиков без какой-либо особой подготовки. Для этого нужно лишь указать функцию, график которой строится, и пределы изменения независимых переменных. Однако с помощью дополнительных необязательных параметров можно существенно изменить вид графиков — например, настроить стиль и цвет линий, вывести титульную надпись, изменить вид координатных осей и т. д.
Основная функция построения двумерных графиков plot
В математике широко используются зависимости вида/(.г) или у(х\ Их графики строятся на плоскости в виде ряда точек у^У обычно соединяемых отрезками прямых. Таким образом, используется кусочно-линейная интерполяция двумерных графиков. Если число точек графика достаточно велико (десятки или сотни), то приближенность построения не очень заметна.
Для построения двумерных графиков служит функция plot. Она задается в виде: plot(f. h. v) plot(f, h. v. о)
где f — визуализируемая функция (или функции), h — переменная с указанием области ее изменения, v — необязательная переменная с указанием области изменения, о — параметр или набор параметров, задающих стиль построения графика (толщину и цвет кривых, тип кривых, метки на них и т. д.).
Самыми простыми формами задания этой функции являются следующие:
О plot(f ,xmin. .xmax) — построение графика функции /, заданной только своим именем;
О plot(f(x) ,x=xmin. .xmax) — построение графика функции Дх).
Диапазон йзменения независимой переменной х задается как xmin. .xmax, где xmin и xmax — минимальное и максимальное значение х, .. (две точки) — составной символ, указывающий на изменение независимой переменной. Разумеется, имя х здесь дано условно — независимая переменная может иметь любое допустимое имя.
Помимо построения самой кривой у^ или /(х) необходимо задать ряд других свойств графиков, например вывод координатных осей, тип и цвет линий графика и др. Это достигается применением параметров графика — специальных указаний для Maple. Графики обычно (хотя и не всегда) строятся сразу в достаточно приемлемом виде. Это достигается тем, что многие параметры задаются по умолчанию и пользователь, по крайней мере начинающий, может о них ничего не знать. Однако язык общения и программирования Maple 7 позволяет задавать управляющие параметры и в явном виде.
Для двумерного графика возможны следующие параметры:
О adaptive — включение адаптивного алгоритма построения графиков (детали см. ниже);
О axes — вывод различных типов координат (axes=NORMAL — обычные оси, выводятся по умолчанию, axes=BOXES — график заключается в рамку с осями- шкалами, axes=FRAME — оси в виде перекрещенных линий, axes=NONE — оси не выводятся);
О axesfont — задание шрифтов для подписи делений на координатных осях (см. также параметр font);
О color — задает цвет кривых (см. далее);
О coords — задание типа координатной системы (см. далее);
О discont — задает построение непрерывного графика (значения true пли false);
О filled — при filled=true задает окраску цветом, заданным параметром color, для области, ограниченной построенной линией и горизонтальной координатной осью х;
О font — задание шрифта в виде [семейство, стиль, размер];
О labels — задание надписей по координатным осям в виде [X, Y], где X и Y — надписи по осям х и у графика;
О labeldirections — задает направление надписей по осям [X, Y], где X и Y может иметь строковые значения 1IORISONTAL (горизонтально) и VF2RTICAL (вертикально);
О label font — задает тип шрифта подписей (см. font);
О legend — задает вывод легенды (обозначения кривых);
О linestyle — задание стиля линий (1 — сплошная, 2 — точками, 3 — пунктиром и 4 — штрихпунктиром);
О numpoints — задает минимальное количество точек на графике (по умолчанию numpoints=49);
О resolutions — задает горизонтальное разрешение устройства вывода (по умолчанию resolutions=200, параметр используется при отключенном адаптивном методе построения графиков);
О sample — задает список параметров для предварительного представления кривых;
О scaling — задает масштаб графика: CONSTRAINED (сжатый) или UNCONSTRAINED (несжатый — по умолчанию); 1
О size — задает размер шрифта в пунктах;
О style — задает стиль построения графика (POINT — точечный, LINE — линиями);
О symbol — задает вид символа для точек графика (возможны значения BOX — прямоугольник, CROSS — крест, CIRCLE — окружность, POINT — точка, DIAMOND — ромб);
О symbol size — установка размеров символов для точек графика (в пунктах, по умолчанию 10);
О title — задает построение заголовка графика (title="string", где string — строка);
О titlefont — определяет шрифт для заголовка (см. font);
О thickness — определяет толщину линий графиков (0, 1, 2, 3, значение по умолчанию — 0);
О view=[A, В] — определяет максимальные и минимальные координаты, в пределах которых график будет отображаться на экране, А = [xmin. .xmax], B=[ymin. .ушах] (по умолчанию отображается вся кривая);
О xtickmarks — задает минимальное число отметок по оси х;
О ytickmarks — задает минимальное число отметок по оси у.
В основном задание параметров особых трудностей не вызывает, за исключением задания титульной надписи с выбором шрифтов по умолчанию — в этом случае не всегда поддерживается вывод символов кириллицы (русского языка). Подбором подходящего шрифта эту проблему удается решить. Модификация графиков с помощью управляющих параметров подробно рассматривается ниже. Специальный параметр adaptive задает работу специального адаптивного алгоритма для построения графиков наилучшего вида. При этом Maple автоматически учитывает кривизну изменения графика и увеличивает число отрезков прямых в тех частях графиков, где их ход заметно отличается от интерполирующей прямой. При задании adapt!ve=false адаптивный алгоритм построения графиков отключается, а при adapt! ve=true включается (значение по умолчанию).
Задание координатных систем двумерных графиков
В версии Maple 7 параметр coords задает 15 типов координатных систем для двумерных графиков. По умолчанию используется прямоугольная (декартова) система координат (coords=cartesian). При использовании других координатных систем координаты точек для них (zz, г) преобразуются в координаты (л; z/) как (п, и) —> (л; г/). Ниже приведены наименования систем координат (значений параметра coords) и соответствующие формулы преобразования.
bipolar:
х = s 1 nn (v)/(cosh(v)-cos(и))
у = sin(и)/(cosh(v)-cos(и)) cardioid:
x = l/2*(uA2-vA2)/(uA2+vA2)A2
у = u*v/(uA2+vA2)A2 cartesian:
x = и
У = v
cassinian:
x = a*2A(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)A(l/2) +
exp(u)*cos(v)+l)A(l/2)
у = a*2A(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)AG/2) -
exp(и)*cos(v)-1)A(1/2)]
elliptic:'
x = cosh(u)*cos(v)
у = s1nh(u)*sin(v)
hyperbolic:
x = ((uA2+vA2)A(l/2)+u)A(l/2)
у = ((uA2+vA2)A(l/2)-u)A(l/2)
1nvcassin1an:
x = a*2A(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)A(l/2) +
exp(u)*cos(v)+l)A(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)A(l/2)
у - a*2A(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)A(l/2) -
exp(u)*cos(v)-l)A(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)A(l/2)
invelliptic:'
x - a*cosh(u)*cos(v)/(cosh(u)A2-sin(v)A2)
logarithmic:logarithmic:У = a*s!nh(u)*sin(v)/(cosh(u)A2-s1n(v)A2)
logarithmic:
logarithmic:
x = a/P1*ln(uA2+vA2)
у = 2*a/Pi*arctan(v/u)
logcosh:
x = a/P1*1n(cosh(u)A2-si n(v)A2)
у = 2*a/Pi*arctan(tanh(u)*tan(v))
maxwel1:
x = a/P1*(u+l+exp(u)*cos(v)) у = a/P1*(v+exp(u)*sin(v))
parabolic:
x = (uA2-vA2)/2 у = u*v
polar:
x = u*cos(v) у = u*sin(v)
rose:
x = ((uA2+vA2)A(l/2)+u)A(l/2)/(uA2+vA2)A(1/2) у = ((uA2+vA2)A(l/2)-u)A(l/2)/(uA2+vA2)A(l/2)
tangent:
x = u/(uA2+vA2)
у = v/(uA2+vA2)
Управление стилем и цветом линий двумерных графиков
Maple 7 позволяет воспроизводить на одном графике множество кривых. При этом возникает необходимость как-то идентифицировать их. Для этого можно использовать построение линий разными стилями, разными цветами и с разной толщиной. Набор средств выделения кривых позволяет уверенно различать их как на экране цветного дисплея и в распечатках, сделанных цветным струйным принтером, так и при печати монохромными принтерами.
Параметр style — позволяет задавать следующие стили для линий графиков:
О POINT или point — график выводится по точкам;
О LINE или line — график выводится линией.
Если задано построение графика точками, то параметр symbol позволяет представить точки в виде различных символов, например прямоугольников, крестов, окружностей или ромбов.
Другой параметр — color — позволяет использовать обширный набор цветов линий графиков:
aquamarine
black
blue
navy
coral
cyan
brown
gold
green
gray
grey
khaki
magenta
maroon
orange
pink
plum
red
sienna
tan
turquoise
violet
wheat
white
yel1ow
Различные цветовые оттенки получаются благодаря использованию RGB-комбинаций базовых цветов: red — красный, gray — зеленый, Ы ие — синий. Приведем перевод ряда других составных цветов: black — черный, white — белый, khaki — цвет «хаки», gold — золотистый, orange — оранжевый, violet — фиолетовый, yellow — желтый и т. д. Перевод цветов некоторых оттенков на русский
язык не всегда однозначен и потому не приводится. Средства управления стилем графиков дают возможность легко выделять различные кривые на одном рисунке, даже если для выделения не используются цвета.
Основные типы двумерных графиков
Графики одной функции
При построении графика одной функции она записывается в явном виде на месте шаблона f. Примеры построения графика одной функции представлены на рис. 11.1. Обратите внимание на то, что график функции sin(x)/x строится без характерного провала в точке х = 0, который наблюдается при построении графиков этой функции многими программами. Он связан с используемым в них правилом — функция задается равной нулю, если ее числитель равен нулю. Данная функция в этой точке дает устранимую неопределенность 0/0->1, что и учитывает графический процессор системы Maple 7.
^Mapte'T'j'lPh^^
■^ t^ ^ Sf*1* Iri$ert Fq^t , л'''-/ Options }t!£ridcw |ДОлШ1^
Г Построение простейшего графика функции в декартовой системе координат
> plot (sin(x) /х, х==-15. . 15, color-black) ;Т
[ Построение графика функции в декартовой системе координат утолщенной линией > plot(sin(хЛ2)/х,x=-3*Pi..3*Pi,thickness-2,color-black);[ Построение графика функции в декартовой системе координат утолщенной линией > plot(sin(хЛ2)/х,x=-3*Pi..3*Pi,thickness-2,color-black);
[ Построение графика функции в декартовой системе координат утолщенной линией > plot(sin(хЛ2)/х,x=-3*Pi..3*Pi,thickness-2,color-black);
[ Построение графика функции в декартовой системе координат утолщенной линией > plot(sin(хЛ2)/х,x=-3*Pi..3*Pi,thickness-2,color-black);
Рис. 11.1, Примеры построения графиков одной функции
При построении графиков одной функции могут быть введены описание диапазонов и различные параметры, например: для задания цвета кривой, толщины линии, которой строится график функции, и др. К примеру, запись в списке
параметров col ог=Ы ack задает вывод кривых черным цветом, а запись thi kness=2 задает во втором примере рис. 11.1 построение графика линией, удвоенной по сравнению с обычной толщиной. Кстати говоря, запись color=red дает красный цвет, color=green — зеленый цвет, color=blue — синий цвет и т. д. При чернобелой печати цвета представляются оттенками серого цвета.
Управление диапазоном изменения переменной и значения функции
Для управления отображаемой на графике области служит задание диапазонов принимаемых значений для переменной и функции. В ряде случаев их можно не применять, тогда Maple автоматически задает приемлемые диапазоны. Однако их явное указание позволяет управлять областью графика вручную. Иногда соответствующее задание диапазонов случайно или целенаправленно ведет к отсечению части графика — например, на рис. 11.2 в первом примере отсечена верхняя часть графика.
Рис. 11.2. Построение графиков функции с явным указанием масштаба
Правильный выбор диапазонов повышает представительность графиков функций. Рекомендуется вначале пробовать строить графики с автоматическим выбором диапазонов, а уже загед указывать их вручную.
Графики функций в неограниченном диапазоне
Изредка встречаются графики функций /(л), которые надо построить при изменении значения х от нуля до бесконечности или даже от минус бесконечности до плюс бесконечности. Бесконечность в таких случаях задается как особая константа infinity. В этом случае переменной х, устремляющейся в бесконечность, откладывается значение arctan(x)- Рисунок 11.2 (второй пример) иллюстрирует сказанное.
Графики функций с разрывами
Некоторые функции, например tan(x), имеют при определенных значениях х разрывы, причем случается, что значения функции в этом месте устремляются в бесконечность. Функция tan(.r), к примеру, в точках разрывов устремляется к + ? и -?. Построение графиков таких функций нередко дает плохо предсказуемые результаты. Графический процессор Maple 7 не всегда в состоянии определить оптимальный диапазон по оси ординат, а график функции выглядит весьма непредставительно, если не сказать безобразно (рис. 11.3, первый пример).
Рис. 11.3. Построение графиков функций с разрывами
Среди аргументов функции plot есть специальный параметр discont. Если задать его значение1 равным true, то качество графиков существенно улучщается,
ПРИМЕЧАНИЕПРИМЕЧАНИЕсм. второй пример на рис. 11.3. Улучшение достигается разбиением графика на несколько участков, на которых функция непрерывна, и более тщательным контролем за отображаемым диапазоном. При discont=false данный параметр отключен и строятся обычные графики.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Следует отметить, что вид графика можно улучшить, просто задав диапазон по оси у (например, введя в параметры функции запись у=-10..10). При этом в точках разрыва могут появиться вертикальные линии. Иногда это бывает полезно.
Графики нескольких функций на одном рисунке
Важное значение имеет возможность построения на одном рисунке графиков нескольких функций. В простейшем случае (рис. 11.4, первый пример) для построения таких графиков достаточно перечислить нужные функции и установить для них общие интервалы изменения.
Рис. 11.4. Графики трех функций на одном рисункеРис. 11.4. Графики трех функций на одном рисунке
Рис. 11.4. Графики трех функций на одном рисунке
Рис. 11.4. Графики трех функций на одном рисунке
Обычно графики разных функций автоматически строятся разными цветами. Но это не всегда удовлетворяет пользователя т например, при распечатке графиков монохромным принтером некоторые кривые могут выглядеть слишком
блеклыми или даже не пропечататься вообще. Используя списки параметров color (цвет линий) и style (стиль линий), можно добиться выразительного выделения кривых — это показывает второй пример на рис. 11.4 для случая, когда линии графиков выделяются стилем. Однако если кривые задаются разным цветом, то при черно-белой печати они могут перестать различаться. '
На рис. 11.5 показан еще один пример такого рода. Здесь построен график функции sin(x)/r и график ее полиномиальной аппроксимации. Она выполняется настолько просто, что соответствующие функции записаны прямо в списке параметров функции plot.
10 Maple 7 - (PJot5. mws -[Server 1)]
-^ EM £$ ^tv Fotmaf. , ' * n^^^W^bw F^fojslSiJSi
Построение графика функции f(x) (сплошная черная линия) и ее полиномиальной4
аппроксимации (синие ромбики)~> f (х) : =sin (х)/х ;> plot ( [f (х) , convert (series (f (х) ,x,15) , polynonO ] , x=-10 . . 10 , y--0.3 . . 1; color® [b lack,blue],style-[line,point]);аппроксимации (синие ромбики)~> f (х) : =sin (х)/х ;> plot ( [f (х) , convert (series (f (х) ,x,15) , polynonO ] , x=-10 . . 10 , y--0.3 . . 1; color® [b lack,blue],style-[line,point]);sin(x) f(x) := >sin(x) f(x) := >
аппроксимации (синие ромбики)~
> f (х) : =sin (х)/х ;
> plot ( [f (х) , convert (series (f (х) ,x,15) , polynonO ] , x=-10 . . 10 , y--0.3 . . 1; color® [b lack,blue],style-[line,point]);
аппроксимации (синие ромбики)~
> f (х) : =sin (х)/х ;
> plot ( [f (х) , convert (series (f (х) ,x,15) , polynonO ] , x=-10 . . 10 , y--0.3 . . 1; color® [b lack,blue],style-[line,point]);
sin(x) f(x) := >
sin(x) f(x) := >
Рис. 11.5. График функции sin(x)/x и ее полиномиальной аппроксимации
В данном случае сама функция построена сплошной линией, а график полинома точками — ромбами. Хорошо видно, что при малых х аппроксимация дает высокую точность, но затем с ростом х ее погрешность резко возрастает.
Рисунок 11.6 показывает построение нескольких любопытных функций, полученных с помощью комбинаций элементарных функций. Такие комбинации позволяют получать периодические функции, моделирующие сигналы стандартного вида: в виде напряжения на выходе двухполупериодного выпрямителя, симметричных прямоугольных колебаний (меандр), пилообразных и треугольных импульсов, треугольных импульсов со скругленной вершиной.
Рис. 11.6. Построение графиков нескольких любопытных функций
В этом рисунке запись axes=N0NE убирает координатные оси. Обратите внимание, что смещение графиков отдельных функций вниз с целью устранения их наложения достигнуто просто прибавлением к значению каждой функции некоторой константы.
Графики функций, построенные точками
Показанный на рис. 11.5 график полинома, построенный ромбиками, не означает, что полином представлен отдельными точками. В данном случае просто выбран стиль линии в виде точек. Однако часто возникает необходимость построения графиков функций, которые представлены просто совокупностями точек. Такая совокупность может быть создана искусственно, как на рис. 11.7, либо просто задаваться списком координат х и значений функции.
В данном случае переменная Р имеет вид списка, в котором попарно перечислены координаты точек функции sin(x). В этом нетрудно убедиться, заменив знак «:» после выражения, задающего Р, на знак «;». Далее по списку Р построен график точек в виде крестиков, которые отображают отдельные значения функции sin(r). На рис. 11.8 показано построение графиков функций по точкам при явном задании функции списком координат ее отдельных точек. В первом примере эти точки соединяются отрезками прямых, так что получается кусочно-линейный график. Видно также, что указание типа точек после указания стиля линии игнорируется (а жаль, было бы неплохо, чтобы наряду с кусочно-линейной линией графика строились и выделенные окружностями точки).
Рис. 11.7. Формирование списка отдельных точек функции и их построение на графике
'ОMaple 7 - [Plot9.mw* - [Server 1|]
^ £fe £& ^ei* Insert Fopaet:
', 0р1ЮП1 ^f«xfo«! Це$>
Построение графиков данных, заданных отдельными точками^
> plot <[[0,0], [1,0.5], [2,0.7], [3,0.4], [5,0.2]], х=0 . . 5 , style-line, symbolicire1 e,color=black);
0.7
0.6
0.5
0.4
0.3
02
0.1
О
> plot([[0.2,0.1], [1,0.5], (2,0.7], [3,0.4],[5,0.2]],x=O..5,style-point,symbol- circle, color-black) ;
0.7
0.6
0.5
0.4
0.
03 0.2
i
Рис. 11.#^ Постровдие графЛа фуикчии; явив заданнойотДе^ьнум* точками
Во втором примере рис. 11.8 показано построение только точек заданной функциональной зависимости. Они представлены маленькими кружками. Читателю предлагается самостоятельно совместить оба подхода к построению графиков по точкам и создать график в виде отрезков прямых, соединяющих заданные точки функции, представленные кружками или крестиками.
Графики функций, заданных своими именами
Способность Maple 7 к упрощению работы пользователя просто поразительна — жаль только, что многие возможности этого становятся ясными после основательного изучения программы, на что уходят, увы, не дни, а месяцы, а то и годы. Применительно к графикам одной из таких возможностей является построение графиков функций, заданных только их функциональными именами — даже без указания параметров в круглых скобках. Такую возможность наглядно демонстрирует рис. 11.9.
Рис. 11.9. Построение графиков четырех функций, заданных только их именами
Этот пример показывает, что возможно построение графиков функций даже без указания в команде plot диапазонов. При этом диапазон по горизонтальной оси устанавливается равным по умолчанию -10.. 10, а по вертикальной оси выбирается автоматически в соответствии с экстремальными значениями функций в указанном диапазоне изменения независимой переменной (условно д^.
Графики функций с ординатами, заданными вектором
Часто возникает необходимость построения графика точек, ординаты которых являются элементами некоторого вектора. Обычно при этом предполагается равномерное расположение точек по горизонтальной оси. Пример построения такого графика дан на рис. 11.10.
Рис. 11.10. Построение графика точек с ординатами, заданными элементами вектора
Из этого примера нетрудно заметить, что данная задача решается составлением списка парных значений координат исходных точек — к значениям ординат точек, взятых из вектора, добавляются значения абсцисс. Они задаются чисто условно, поскольку никакой информации об абсциссах точек в исходном векторе нет, так что фактически строится график зависимости ординат точек от их порядкового номера п.
Графики функций, заданных процедурами
Некоторые виды функций, например кусочные, удобно задавать процедурами. Построение графиков функций, заданных процедурами, не вызывает никаких трудностей.:и,лддюстрируется рис. 11.11.
Рис. 11.11. Построение графика функций, заданных процедурами
Здесь, пожалуй, полезно обратить внимание на то, что в функции plot указывается имя процедуры без списка ее параметров.
Графики функций, заданных функциональными операторами
Еще одна «экзотическая» возможность функции plot — построение графиков функций, заданных функциональными операторами. Она иллюстрируется рис. 11.12. Имена функций (без указания списка параметров в круглых скобках) тоже, по существу, являются функциональными операторами. Так что они также могут использоваться при построении графиков упрощенными способами.
Графики функций, заданных параметрически
В ряде случаев для задания функциональных зависимостей используются заданные параметрически уравнения, например х-/^) и у ”/2(0 при изменении переменной t в некоторых пределах. Точки (х, у) наносятся на график в декартовой системе координат и соединяются отрезками прямых. Для этого используется функция plot в следующей форме: 1 /
ЕЗ Maple 7 - |Plot12.mws - IServec 1]) №5113ЕЗ Maple 7 - |Plot12.mws - IServec 1]) №5113Ф tfc £* У"* **•* R®iW-*5^ •****■ fleHem jgeneb* fi* -«»~.w*w.lelxlПостроение графиков функций, заданных функциональными операторами иЛвстроенными функциями, и с выводом титульной надписи~> plot((ехр/2,sin,х->хЛ2,х->хА3],-1..1,color-black,thickness-2,title-'He все так просто!',titlefont—[TIMES,BOLD,20]);Ф tfc £* У"* **•* R®iW-*5^ •****■ fleHem jgeneb* fi* -«»~.w*w.lelxlПостроение графиков функций, заданных функциональными операторами иЛвстроенными функциями, и с выводом титульной надписи~> plot((ехр/2,sin,х->хЛ2,х->хА3],-1..1,color-black,thickness-2,title-'He все так просто!',titlefont—[TIMES,BOLD,20]);Рис. 11.12. Построение графиков функции, заданной функциональными операторамиРис. 11.12. Построение графиков функции, заданной функциональными операторами
ЕЗ Maple 7 - |Plot12.mws - IServec 1]) №5113
ЕЗ Maple 7 - |Plot12.mws - IServec 1]) №5113
Ф tfc £* У"* **•* R®iW-*5^ •****■ fleHem jgeneb* fi* -«»~.w*w.lelxl
Построение графиков функций, заданных функциональными операторами иЛ
встроенными функциями, и с выводом титульной надписи~
> plot((ехр/2,sin,х->хЛ2,х->хА3],-1..1,color-black,thickness-2,title-'He все так просто!',titlefont—[TIMES,BOLD,20]);
Ф tfc £* У"* **•* R®iW-*5^ •****■ fleHem jgeneb* fi* -«»~.w*w.lelxl
Построение графиков функций, заданных функциональными операторами иЛ
встроенными функциями, и с выводом титульной надписи~
> plot((ехр/2,sin,х->хЛ2,х->хА3],-1..1,color-black,thickness-2,title-'He все так просто!',titlefont—[TIMES,BOLD,20]);
Рис. 11.12. Построение графиков функции, заданной функциональными операторами
Рис. 11.12. Построение графиков функции, заданной функциональными операторами
plot([fl(t).f2(t),t=tmin..Стах],h.v.p)
Если функции /,(£) и /2(£) содержат периодические функции (например, тригонометрические), то для получения замкнутых фигур диапазон изменения переменной t обычно задается равным О..2*Р1 или -Р1..Р1. К примеру, если задать в качестве функций f^ и /2(£) функции sin(t) и cos(t), то будет получен график окружности. Рисунок 11.13 показывает другие, чуть менее тривиальные примеры построения графиков такого рода.
Задание диапазонов для изменений h и v, а также параметров р не обязательно. Но, как и ранее, они позволяют получить вид графика, удовлетворяющий всем требованиям пользователя.
Графики функций в полярной системе координат
Графики в полярной системе координат представляют собой линии, которые описывают конец радиус-вектора г(£) при изменении угла t в определенных пределах — от до £гаах. Построение таких графиков также производится функцией plot, котСфая для этого записывается в следующем виде:
Рис. 11.13. Построение функций, заданных параметрически
рТоШгШ .theta(t), t-tmin. .tmaxj ,h.v.p.coords-polar)
Здесь существенным моментом является задание полярной системы координат параметром coords=polar. Рисунок 11.14 дает примеры построения графиков функций в полярной системе координат.
Графики параметрических функций и функций в полярной системе координат отличаются огромным разнообразием. Снежинки и узоры мороза на стеклах, некоторые виды кристаллов и многие иные физические объекты подчиняются математическим закономерностям, положенным в основу построения таких графиков.
Построение трехмерных графиков
Особенности применения функции plotSd
Трехмерными называют графики, отображающие функции двух переменных z(x, у). Каждая точка z; таких графиков является высотой (аппликатой) точки, лежащей в плоскости XY и представленной координатами (х, у). Поскольку экран монитора компьютера в первом приближении является плоским, то на деле трехмерные графики представляют собой специальные проекции объемных объектов.
10 Maple 7 - [P1o<14.*wi - [Serve* 111ИИ И
<&£fe ^"^to* |г«ей Fqpwfti^A^'i*^"9*w $ndwt-$Кр --- - «1#< *1
Построение графиков функций в полярной системе координат^
> plot([l-sin(t),t,t=0..2*P1],color-black,coords-polar);“
Рис. 11.14. Построение графиков функций в полярной системе координат
Для построения графиков трехмерных поверхностей Maple имеет встроенную в ядро функцию pl ot3d. Она может использоваться в следующих форматах:
plot3d(exprl, x=a..b. y=c..d.p)
plot3d(f, а.. b. с.. d,р)
plot3d(Eexprf.exprg,exprh], s=a..b. t=c..d.p)
plot3d([f.g.h], a. :b. c..d.p)
В двух первых формах plot3d применяется для построения обычного графика одной поверхности, в других формах — для построения графика с параметрической формой задания поверхности. В приведенных формах записи f, g и h — функции; expri — выражение, отражающее зависимость от х и у; exprf, exprg и exprh — выражения, задающие поверхность параметрически; s, t, а и b — числовые константы действительного типа; с и d — числовые константы или выражения действительного типа; х, у, s и t — имена независимых переменных; р — управляющие параметры.
Параметры функции plot3d
С помощью параметров р можно в широких пределах управлять видом трехмерных графиков, выводя или убирая линии каркасной сетки, вводя функциональную окраску поверхностей, меняя угол их обзора и параметры освещения, изме-
пяя вид координатных осей и т. д. Следующие параметры функции plot3d задаются аналогично их заданию для функции plot:
axesfontfontcolorcoordsfont
label fontlinestylenumpointsscalingstyle
symbolthicknesstitletitlefont
Однако функция plot3d имеет' ряд дополнительных специфических параметров:
О ambientlight=[r,g,b] — задает интенсивность красного (г), зеленого (д) и синего (Ь) цветов подстветки в относительных единицах (от 0 до 1):
О axes=f — задает вид координатных осей (BOXED, NORMAL, FRAME и NONE, по умолчанию NONE);
О grid=[m,n] — задает число линий каркаса поверхности;
О gridstyle=x — задает стиль лишш каркаса х ('rectangular' или 'triangular');
О labels=[x,y,z] — задает надписи по осям (х, у и z — строки, по умолчанию пустые);
О light=[phi ,theta,r,g,b] — задает углы, под которыми расположен источник освещения поверхности и интенсивности составляющих цвета (г, g и Ь);
О 1 ightmodel=x — задаст схему освещения (соответственно 'none', 'lightl', 'light2', 'light3' и 'Tight4');
О ori entation=Etbeta, phi ] — задает углы ориентации поверхности (по умолчанию 45°);
О projections — задает перспективу при обзоре поверхности (г может быть числом 0 или 1, задающим включение или выключение перспективы, а также одной из строк 'FISHEYE', 'NORMAL' или 'ORTHOGONAL' (это соответствует численным значениям г, равным 0, 0,5 или 1, причем по умолчанию задано project!on=0RTH0G0NAL));
О shadings — задает направления, по которым меняется цвет функциональной окраски (значения s могут быть XYZ, XY, Z, ZGREYSCALE, ZHUE, NONE);
О tickmarks=[l ,n,m] — задает характер маркировки по осям х, у и z (числа 1, п и m имеют значения не менее 1);
О view=zmin. .zmax или view=[xmin. .xmax, ymin..ymax, zmin. .zmax] — задает минимальные и максимальные координаты поверхности для ее видимых участков.
Выбор и пересчет координат трехмерных графиков
Для трехмерных графиков возможно задание 31 типа координатных систем с помощью параметра соогй5=Тип_координатной_системы. Поскольку на экране монитора поверхность отображается только в прямоугольной системе координат и характеризуется координатами х, у и г, то для представления поверхности, заданной в иной системе координат с координатами и, у и w, используются известные [46, 47] формулы для преобразования (и, у, ж) --> (х, у, z). Ниже
перечислены типы трехмерных координатных систем и соответствующие формулы преобразования.
Ыpol arcyl1ndr1cal:
х = a*sinh(v)/(cosh(v)-cos(u))■
у = a*s1n(u)/(cosh(v)-cos(u)) z = w
bisphencal:
x = sin(u)*cos(w)/d
у = sin (u)*s1n(w)/d
z = sinh(v)/d где d = cosh(v) - cos(u) cardloldal:
x = u*v*cos(w)/tuA2+vA2)A2
у = u*v*sin(w)/(uA2+vA2)A2
z = (uA2-vA2)/2/(uA2+vA2)A2 cardioidcyl indrical:
x = (uA2-vA2)/2/(uA2+vA2)A2
у = u*v/(uA2+vA2)A2 z = w casscylindrical:
x = a*2A(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)A(l/2)+exp(u)*cos(v)+l)A(l/2)
у = a*2A(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)A(l/2)-exp(u)*cos(v)-l)A(l/2) z = w.
confocalellip:
x = ((aA2-u)*(aA2-v)*(aA2-w)/(aA2-bA2)/(aA2-cA2))A(l/2)
у = ((bA2-u)*(bA2-v)*(b*2-w)/(b*2-aA2)/(b^2-cA2))*(l/2)
z = ((cA2-u)*(cA2-v)*(cA2-w)/(cA2-aA2)/(cA2-bA2))A(l/2) confocalparab:
x = ((aA2-u)*(aA2-v)*(aA2-w)/cbA2-a"2))A(1/2)
у = ((bA2-u)*(bA2-v)*(bA2-w)/(bA2-aA2))A(l/2)
z = (aA2+bA2-u-v-w)/2 conical:
-x = u*v*w/(a*b)
у = u/b*((vA2bA2)*(bA2-wA2)/(aA2-bA2))A(l/2)
z = u/a*((aA2 - vA2)*(aA2 - wA2)/(aA2-bA2))A(l/2) cylindrical:
x = u*cos(y)
у = u*sin(y) z = w
ellcylindrical:
' x = a*cosh(u)*cos(v)
у = a*sinh(u)*sin(v) z = w
ellipsoidal:
x = u*v*w/a/b
у - ((uA2-bA2)*(vA2-bA2)*(bA2-wA2)/(aA2-bA2))A(l/2)/b
z = ((uA2-aA2)*(aA2-vA2)*(aA2-wA2)/(aA2-bA2))A(l/2)/a hypercylindrical:
x - ((uA2+vA2)A(l/2)+u)A(l/2)
у = ((uA2+vA2)A(l/2)-u)A(l/2) z = w
invcasscylindrical:
x = a*2A(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)A(l/2) +
exp(u)*cos(v)+l)A(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)A(l/2) у = a*2A(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)A(l/2) -
exp(u)*cos(v)-l)A(l/2)/(exp(2*u)+2*exp(u)*cos(v)+l)A(l/2) z = w
7nvel1 cyl 1ndrical:
x = a*cosh(u)*cos(v)/(cosh(u)A2-sin(v)A2) у = a*sinh(u)*sin(v)/(cosh(u)A2-sin(v)A2) z = w
invoblspheroidal:
x = a*cosh(u)*sin(v)*cos(w)/(cosh(u)A2-cos(v)A2)
у = a*cosh(u)*sin(v)*sin(w)/(cosh(u)A2-cos(v)A2)
z = a*sinh(u)*cos(v)/(cosh(u)A2-cos(v)A2) invprospheroidal:
x = a*sinh(u)*sin(v)*cos(w)/(cosh(u)A2-sin(v)A2)
у = a*sinh(u)*sin(v)*sin(w)/(cosh(u)A2-sm(v)A2)
z = a*cosh(u)*cos(v)/(cosh(u)A2-sin(v)A2) logcyPmdrical: x = a/Pi*ln(uA2+vA2) у = 2*a/Pi*arctan(v/u) z w
logcoshcylindrlcal:
x = а/P1*1n(cosh(u)A2-son(v)A2) у = 2*a/Pi*arctan(tanh(u)*tan(v)) z = w
maxwell cylindrical:
x = a/Pi*(u+l+exp(u)*cos(v)) у = a/Pi*(v+exp(u)*sin(vD z = w
oblatespheroidal:
x = a*cosh(u)*sin(v)*cos(w) у ’ a*cosh(u)*sin(v)*sin(w) z = a*sinh(u)*cos(v)
paraboloidal:
x = u*v*cos(w) у = u*v*sin(w) z = (uA2 - vA2)/2 paraboloi dal 2:
x = 2*((u-a)*(a-v)*(a-w)/(a-b))A(l/2)
у = 2*((u-b)*(b-v)*(b-w)/(a-b))A(l/2) z = u+v+w-a-b
paracylindrical: x = (uA2 - vA2)/2 у = u*v z = w
prolatespheroidal;
x = a*sinh(u)*sin(v)*cos(w)
y=a*sinh(u)*sin(v)*s1n(w) z=a*cosh(u)*cos(v)
rectangular: x = u у = v z = w
rosecylindrlcal:
х = ((uA2+vA2)A(l/2)+u)A(l/2)/(uA2+vA2)A(l/2)
у = ((uA2+vA2)A(l/2)-u)A(l/2)/(uA2+vA2)A(l/2) z = w
sixsphere:
x = u/(uA2+vA2+wA2)
у = v/(uA2+vA2+wA2)
z = w/(uA2+vA2+wA2) spherical:
x = u*cos(v)*s1n(w)
у = u*sin(v)*sin(w)
z = u*cos(w) tangentcyl 1ndr1ca1:
x = u/(uA2+vA2)
у = v/(uA2+vA2) z = w
tangentsphere:
x = u*cos(w)/(uA2+vA2)
у = u*sin(w)/(uA2+vA2)
z = v/(uA2+vA2) toroidal:
x = a*sinh(v)*cos(w)/d
у = a*sinh(v)*s1n(w)/d
z = a*sin(u)/dгдеd=cosh(v)-cos(u)
Эти формулы полезно знать, поскольку в литературе встречаются несколько отличные формулы пересчета. Вид графиков трехмерных поверхностей очень сильно различается в разных координатных системах. По умолчанию трехмерные графики строятся в прямоугольной системе координат — rectangular.
Построение поверхностей
Построение поверхностей с разными стилями
На рис. 11.15 показано два примера простейших построений графиков трехмерной поверхности. По умолчанию в Maple 7 строится поверхность с функциональной окраской и стилем style=patch (верхний рисунок). Функциональная окраска делает рисунки более информативными, но, увы, на рисунках в книге она превращается в окраску оттенками серого цвета.
Параметр style=hidden строит каркасную поверхность с функциональной окраской тонких линий каркаса и удалением невидимых линий. Чтобы график выглядел более четким, построение во втором примере задано линиями черного цвета с помощью параметра color=black (см. нижний рисунок на рис. 11.15).
Помимо значения patch для построения трехмерных поверхностей можно задавать ряд других стилей: poi nt — точками, contour — контурными линиями, 11 пе — линиями, hidden — линиями каркаса с удалением невидимых линий, wireframe — линиями каркаса со всеми видимыми линиями, patchnogrid — с раскраской, но без линий каркаса, patchcontour — раскраска с линиями равного уровня.
Рис. 11.15. Примеры простейшего построения трехмерных поверхностей
Цвет трехмерного графика может задаваться (как и для двумерного) параметром со1ог=с, где с — цвет (оттенки цвета перечислялись ранее). Возможно еще два алгоритма задания цвета:
О HUE — алгоритм с заданием цвета в виде color=f(x,y);
О RGB — алгоритм с заданием цвета в виде color=[exprr,exprg,exprb], где выражения ехргг, exprg и exprb задают относительную значимость (от 0 до 1) основных цветов (красного — ехргг, зеленого — exprg и синего — exprb). ч
Удачный выбор углов обзора фигуры и применение функциональной окраски позволяют придать построениям трехмерных фигур весьма эффектный и реалистический вид.
Построение фигур в различных системах координат
Как отмечалось, вид графика трехмерной поверхности существенно зависит от выбора координатной системы. Рисунок 11.16 показывает пример построения нелинейного конуса в цилиндрической системе координат. Для задания такой системы координат используется параметр coords=cylindrical.
Рис. 11.16. Нелинейная цилиндрическая поверхность
При построении этой фигуры также использована цветная (функциональная окраска. Кроме того, этот пример иллюстрирует вывод над рисунком титульной надписи (кстати, сделанной на русском языке).
Приведем еще один пример построения трехмерной поверхности — на этот раз в сферической системе координат (рис. 11.17). Здесь (функция задана вообще элементарно просто — в виде числа 1. Но, поскольку выбрана сферическая система координат, в результате строится поверхность шара единичного радиуса. О том, насколько необычным может быть график тоН или иной функции в различных системах координат, свидетельствует рис. 11.18. На нем показан график параметрически заданной функции от одной координаты t — sin(^), построенный в сферической системе координат.
Кстати, рис. 11.18 иллюстрирует возможность одновременного наблюдения нескольких окон. В одном окне задано построение графика, а в другом построен сам график. При построении графика в отдельном окне появляется панель форматирования графика. С помощью ее довольно наглядных кнопок можно легко скорректировать вспомогательные параметры графика (окраску, наличие линий каркаса, ориентацию и др.).
хвниЬМоох энэхэиэ иоиэаьидэфэ e MiaoHxdaeou ион»о atna яифвdJ *8141 ‘зиа
ibhuWoox аиаииэ иоюаьидафэ s maoHxdasou noHcedgoodem anHaodiaou YTII ‘ай,!
.' (qoqBd-syAqs 'TEDT^eqds-spjooo'Ta • • 0—d'Td»Z 1 1 E/Td-VI)PE}°Td <
„iBHHtrdoox 9пеюиэ иохэакибафэ s
tniooHxdesou вxифвdJ eMHeodioou
’хПГ"' ^^^i-^^j^isSSgi^^S^^^^:^^^^^^^?^^^^^*^^^-^^^^^^^ 4»q «еиД «aa»BJ jwv}^ <wk *^» «о» »ш- «*% »з <e ^
ЙЩ(Il I=«"st-S~"C PCIdl" ZaideHQ
аолифесЬ кинэоскэои eaiDt/adD энаоиих 41 иос!д q^
3D-графики параметрически заданных поверхностей
На рис. 11.19 показано построение поверхности при полном ее параметрическом задании. В этом случае поверхность задается тремя формулами, содержащимися в списке.
Рис. 11.19. График трехмерной поверхности при полном параметрическом ее задании
В данном случае функциональная окраска задана из меню, поэтому в состав функции соответствующий параметр не введен. Обратите внимание на технику удаления частей фигуры путем задания соответствующего диапазона изменения параметров t и и.
Следующий пример показывает построение простого тороида — цилиндра, свернутого в кольцо (рис. 11.20). Здесь также использован прием удаления части фигуры, что делает ее представление более наглядным и красочным. Кроме того, введены параметры, задающие функциональную окраску.
Тор на рис. 11.20 выглядит, как произведение искусства. Он дает полное и наглядное представление об этой фигуре.
Масштабирование трехмерных фигур и изменение углов их обзора
Полезно обратить внимание на параметр масштаба scaling=constrained, явно введенный в документ рис. 11.20. Его можно было бы и не вводить, поскольку
этот параметр задается по умолчанию. Он выравнивает масштабы представления фигуры по осям координат, обычно используется по умолчанию и позволяет снизить до минимума геометрические искажения фигур — тор, например, при этом виден как круглая труба, свернутая в кольцо. У таких графиков есть специфический недостаток — они занимают малую часть окна вывода.
Рис. 11.20. Тор с функциональной окраской поверхности
Задание параметра scaling=unconstrained означает отказ от равного масштаба по осям. График при этом увеличивается в размерах, но становятся заметны его искажения по осям координат. В итоге тор превращается в толстую сплющенную трубу с эллиптическим сечением (рис. 11.21).
Весьма важным является учет углов, под которыми наблюдается трехмерная поверхность или объект. К примеру, построение рис. 11.21 неудачно в том плане, что оно не показывает наличия у тора дырки. В общем, как в поговорке: «кому бублик, а кому дырка от бублика» — ведь бублик и есть материально реализованный тор. Простейший и очень удобный способ изменить угол обзора заключается во вращении фигуры на рисунке мышью при нажатой левой кнопке. При этом можно повернуть фигуру так, что ее геометрические особенности будут видны (рис. 11.22).
В Maple есть способ явно задать углы обзора с помощью параметра orientation=[theta, phi], где theta и phi — углы, через которые задаются параметрические уравнения трехмерной фигуры или поверхности. Рисунок 11.23 дает пример такого задания фигуры, которую можно назвать «квадратным» тором. Обратите внимание, что значения заданных углов обзора повторяются в полях углов на контекстной панели инструментов. Разумеется, последние будут меняться, если начать вращать фигуру на рисунке мышью.
Рис. 11.22. Тор с рис. 11,21 после поворота мышью демонстрирует, что он и впрямь имеет дыркуРис. 11.22. Тор с рис. 11,21 после поворота мышью демонстрирует, что он и впрямь имеет дырку
Рис. 11.22. Тор с рис. 11,21 после поворота мышью демонстрирует, что он и впрямь имеет дырку
Рис. 11.22. Тор с рис. 11,21 после поворота мышью демонстрирует, что он и впрямь имеет дырку
Рис. 11.23. «Квадратный» тор, представленный под заданными углами обзора
Занимательные фигуры — трехмерные графики
Параметрическое задание уравнений поверхности открывает почти неисчерпаемые возможности построения занимательных и сложных фигур самого различного вида. Приведем пару построений такого рода. ,
На рис. 11.24 показан тор, сечение которого имеет вид сплюснутой шестиконечной звезды. Вырез в фигуре дает прекрасный обзор ее внутренней поверхности, а цветная функциональная окраска и линии сетки, построенные с применением алгоритма удаления невидимых линий, дают весьма реалистичный вид фигуры. Замените параметр scaling=unconstrained на scaling=constrained, и вы получите тор с неискаженным сечением.
ПРИМЕЧАНИЕПРИМЕЧАНИЕНа рис. 11.25 показан еще один тор. На этот раз он круглого сечения, но сверху и снизу имеет вид пятиконечной звезды.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
В приведенных на рис. 11.19-11.25 программах построения различных поверхностей и трехмерных фигур имеется ряд характерных констант и математических выражений, определяющих как вид фигур, так и их размеры и положение. Рекомендуется тщательно проанализировать эти примеры и попробовать их в работе с несколько измененными теми или иными данными. Полезно построить ряд подобных примеров самостоятельно. Все это будет способствовать привитию учащимся специального геометрического стиля мышления, при котором геометрические особенности фигур связываются с их расчетным описанием.
|Q Maple 7 |iof2mws |Seivet 1ЦРЮЁЗ
^а» ел ^ i— *. '—r.w sfeaaaoteasSM^n. tv ?; wv'-:f? " W.& > plot3d ( [30+(11+(4 + sin (6*s)) *cos (s) ) *cos (t) ,Л
20+(11+(4+sin(6*s))*cos(s))*sln(t) , ■"
(4 + sin(6*s))*sin(s)] ,<
s-0..2*Pi,t=0..3/2*Pl,grld-[36,24],orientation-[-60,64],■
style-patch, shading-ZHUE , axes-frame, scaling-unconstrained) ;
Maple7^torlmwi^Seivetl]|ЙЁ31Ё11Maple7^torlmwi^Seivetl]|ЙЁ31Ё11Рис. 11.24. Top с сечением в виде шестиконечной звезды
Maple7^torlmwi^Seivetl]|ЙЁ31Ё11
Maple7^torlmwi^Seivetl]|ЙЁ31Ё11
$#• £dt ^ W PW<^ю«< ^ккж 8*'л1М*
> plot3d([30+(9+2*sin<5*t)+2*cos(s))*cos(t),£
10+(9+2*sin(5*t)+2*oos(s))*sin(t),5
2*sin(s)],8-0..2*Pi,t-0..ll*Pi/6,grid-[12,36],й
style-patch,axes-frame,scaling—constrained);
Рис. 11.25. Top к^глогр сечения в виде пятиконечной звезды
Быстрое построение графиков
Двумерная быстрая графика — smartplot
В последние реализации системы Maple (5, 6 и 7) введены новые функции быстрого построения графиков. Функция smartplot(f) предназначена для создания двумерных графиков. Параметр f может задаваться в виде одиночного выражения или набора выражений, разделяемых запятыми. Задание управляющих па- рамтеров в этих графических функциях не предусмотрено; таким образом, их можно считать первичными, или черновыми. Для функции построения двумерного графика по умолчанию задан диапазон изменения аргумента -10.. 10.
Рисунок 11.26 иллюстрирует применение функции smartplot для построения трех (верхний пример) и двух (нижний пример) графиков функций на одном рисунке.
Рис. 11.26. Построение графиков с помощью функции smartplot
Обратите внимание на второй пример применения функции smartplot. Здесь график выражения 5sin(z/)/y построен относительно вертикальной оси. Поэтому он развернут на 90° относительно графика, построенного обычным образом.
^)пРИМЕЧАНИЕ^)пРИМЕЧАНИЕНа графиках, построенных командой smartplot(x), присутствует надпись «Live», что видно на рис. 11.26.
^)пРИМЕЧАНИЕ
^)пРИМЕЧАНИЕ
Быстрое построение трехмерных графиков smartplot3d
Рис. 11.27. Примеры применения функции smartplot3dРис. 11.27. Примеры применения функции smartplot3dБыстрое (не в смысле ускорения самого построения, а лишь в смысле более быстрого задания построения графиков) построение трехмерных графиков обеспечивает функция smartpl ot3d. Для этой функции задан диапазон изменения обоих аргументов -5..5. Рисунок 11.27 поясняет применение функции smartpl ot3d.
Рис. 11.27. Примеры применения функции smartplot3d
Рис. 11.27. Примеры применения функции smartplot3d
Как видно из второго примера, представленного на рис. 11.27, функция smartplot3d обеспечивает построение не только отдельных поверхностей, но и ряда пересекающихся поверхностей. При этом линии пересечения поверхностей строятся вполне корректно. '
Специальные приемы построения трехмерных графиков
Трехмерный график как графический объект
Принадлежность функций plot и plot3d к функциям (в ряде книг их именуют операторами, командами или процедурами) наглядно выявляется при создании графических объектов. Графический объект — это, в сущности, обычная переменная, которой присваивается значение графической функции. После этого такая переменная, будучи вызванной, производит построение соответствующего графика. Пример этого дан на рис. 11.28.
Рис. 11.28. Пример задания и вывода трехмерного графика — графического объекта
В данном случае строится лента Мебиуса, свойства которой (например, плавный переход с одной стороны ленты на другую) уже много веков будоражат воображение людей. ' '
Поскольку можно говорить, что вызов переменной возвращает графический объект, то это дает повод считать pl ot и pl ot3d графическими функциями.
Задание трехмерных графиков в виде процедур
Язык программирования Maple 7 допускает применение в процедурах любых внутренних функций, в том числе графических. Пример такого применения дает рис. 11.29. 1
□ Maple? - (Gprocl.ms - (Server 1](ВЕЗ 13
■Д№ ЕЛ X»» $«w* &**-- Йй«« Ww Н* .-leixi
Процедура построения кольца Мёбиуса]$
> mob := proc(width)Z
> plot3d([(5+cos(l/2*t)*u)*cos(t), (5+cos(l/2*t)*u)*sin(t),sin(l/2*t)*u],t=0..2*Pi, > u=-width/5..width/5, grid=[60,10], > scaling=UNCONSTRAINED, orientation=[0,140]); > end: > mob(5) ;
Рис. 11.29. Пример создания и применения процедуры трехмерной графики
Этот пример показывает еще один способ задания и построения кольца Мебиуса. Практически любые графические построения можно оформлять в виде процедур и использовать такие процедуры в своих документах.
Построение ряда трехмерных фигур на одном графике
Функция plot3d позволяет строить одновременно несколько фигур, пересекающихся в пространстве. Для этого достаточно вместо описания одной поверхности задать список описаний ряда поверхностей. При этом функция plot3d обладает уникальной возможностью — автоматически вычисляет точки пересечения фигур и показывает только видимые части поверхностей. Это создает изобра-
жения, выглядящие вполне естественно. Пример такого построения для.двух функций показан на рис. 11.30.
Рис. 11.30. Пример построения двух трехмерных фигур, пересекающихся в пространстве
Двумерные и трехмерные графические структуры
Понятие о графических структурах
Функции PLOT и PL0T3D (с именами, набранными большими буквами) позволяют создавать графические структуры, содержащие ряд графических объектов si, s2, s3 и т. д. Каждый объект может представлять собой точку или фигуру, поли- ■ гон, надпись и т. д., позиционированную с высокой точностью в заданной системе координат. Координатные оси также относятся к графическим объектам. Важно отметить, что функции PLOT и PL0T3D одновременно являются данными, описывающими графики. Их можно записывать в виде файлов и (после открытия файлов) представлять в виде графиков. Особые свойства этих функций подчеркиваются их записью прописными буквами.
Графические структуры двумёрной графики
Графическая структура двумерной графики задается в виде:
PLOT(sl. s2. s3о):•
где si, s2, s3 ... — графические объекты (или элементарные структуры — примитивы), о — общие для структуры параметры.
Основными объектами являются:
О POINTS([xl,yl], [х2,у2] ,...[хп,уп]) — построение точек, заданных их координатами;
О CURVES([[xll,yll],...[xln.yln]], [[х21,у21] ,...[x2n,y2n]].... [[xml.yml].„.[xmn.ymn]]) - построение кривых по точкам;
О POLYGONS([[xll.yll],...[xln,yln]]. [[х21.у21]....[х2п,у2п]],„. [[xml.yml],...[xmn.ymn]]) - построение замкнутой области-полигона (многоугольника, так как последняя точка должна совпадать с первой);
О ТЕХТЦх,у],'string'.horizontal, vertical) — вывод текстовой надписи 'string', позиционированной в точке с координатами [х.у], с горизонтальной или вертикальной ориентацией. Параметр horizontal может иметь значение ALIGNLEFT или ALIGNRIGHT, указывающие, в какую сторону (влево или вправо) идет надпись. Аналогично параметр vertical может иметь значение ALIGNABOVE или ALIGNBELOW, указывающее в каком направлении (вверх или вниз) идет надпись.
При задании графических объектов (структур) si, s2, s3 и т. д. можно использовать описанные выше параметры и параметры, например, для задания стиля построения - STYLE (POINT, LINE, PATCH, PATCHNOGRID); толщины линий, - THICKNESS (кроме координатных осей); символа, которым строятся точки кривых — SYMBOL (BOX, CROSS, CIRCLE, POINT, DIAMOND и DEFAULT); стиля линий - LINESTYLE; цвета - COLOR (например, C0LOR(HUE,0) для закраски непрерывной области), типа шрифта — FONT; вывода титульной надписи — TITLE (string); имени объекта — NAME(string); стиля координатных осей — AXESSTYLE (BOX, FRAME, NORMAL, NONE или DEFAULT) и т. д.
Следует отметить, что параметры в графических структурах задаются несколько иначе — с помощью круглых скобок. Например, для задания шрифта TIMES ROMAN с размером символов 16 пунктов надо записать FONT(TIMES,ROMAN, 16), для задания стиля координатных осей в виде прямоугольника — AXESSTYLE(BOX) и т. д.
На рис. 11.31 показан пример графических построений при использовании основных структур двумерной графики.
Как видно из этого примера, графическая двумерная структура позволяет задавать практически любые двумерные графики и текстовые надписи в пределах одного рисунка.
Рис. 11.31. Пример использования двумерных структур
Графические структуры трехмерной графики
Графические структуры трехмерной графики строятся функцией PL0T3D:
PL0T3D(sl.s2,s3о)
В качестве элементарных графических структур можно использовать уже описанные выше объекты POINTS, CURVES, POLYGONS и TEXT — разумеется, с добавлением в списки параметров третьей координаты. Пример такого построения дан на рис. 11.32.
Кроме того, могут использоваться некоторые специальные трехмерные структуры. Одна из них — структура GRID:
О GRID(a. .b.c. .d, 1 istl 1st) — задание поверхности над участком координатной плоскости, ограниченной отрезками [а, 6] и [с, d\, по данным, заданным переменной-списком 11 stl 1st:=[[zll,...zln], [z21, ...z2n], ...[zml...zmn]] с размерностью n?m. Заметим, что эта переменная задает координату z для равноотстоящих точек поверхности.
На рис. 11.33 показан пример создания структуры трехмерной графики на базе GRID. Изображение представляет собой линии, соединяющие заданные точки.
Еще один тип трехмерной графической структуры — это MESH:
О MESH(11 stl т st) — задание трехмерной поверхности по данным списочной переменной 11 stl 1st, содержащей полные координаты всех точек поверхности (возможно задание последней при неравномерной сетке).
И
Maple 1 • (Cube.mws • (Server 1Ц
Sa* е® s*» 1кы fw< -. ■. a»»» wn« нф "> PLOT3D(POLYGONS([[0,0,0],[1,0,0],[1,1,0],[0,1,0]], I[[0,0,0], [0,1,0], [0,1,1], [О,0,1]],
I[[1,0,0],[1,1,0],[1,1,1],[1,0,1]],
[[0,0,0], [1,0,0], [1,0,1], [0,0,1]], [[0,1,0],[1,1,0],[1,1,1],[0,1,1]], [[0,0,1],[1,0,1],[1,1,1],[0,1,1]]), LIGHT(0,О,0.0,0.7,0.0), LIGHT(100,45,0.7,0 . О,0.0), LIGHT(100,-45,0.0,0.0,О.7), AMBIENTLIGHT(0.4,0.4,0.4), TITLE(CUBE),STYLE(PATCH) ,COLOUR(ZHUE) ) ;
CUBE
нив
■ -1*1 xj
Рис. 11.32. Пример создания структуры трехмерной графики
0Meple7 - (Giid.mwx -(Server 1])
S'* W N« F4M ■О*» №d6* 4*-НЯ Xi
Пример задания структуры трехмерной графики (1)а
G0:-[[3,l,0],[2,1,3],[2,3,2],[3,0,3],[1,3,1], [1,2,3]]:$
> PLOT3D( GRID(1. .3,1. .3,GO) , AXESLABELS(X,Y,Z) ,
ORIENTATION(140,30),AXES(BOXED),COLOR(RGB,0,1,0));
Рис. 11.33. Пример задания графической структуры типа GRID
Обычная форма задания этой структуры следующая:
MESH([[[xll.yll ,zll] ....[xln.yln.zln]], [[x21.y21.z21],...[x2n.y2n.z2n]], ....
[[xml.yml.zml]...[xmn.ymn.zmn]]])
Пример задания такой структуры представлен на рис. 11.34.
Рис. 11.34. Пример задания графической структуры типа MESH
Описанные структуры могут использоваться и в программных модулях. Много таких примеров описано в книгах, поставляемых с системой Maple 7.
Что нового мы узнали?
В этом уроке мы научились:
О Использовать основную функцию построения двумерных графиков — plot.
О Задавать координатные системы двумерных графиков.
О Управлять цветом и стилем двумерных графиков.
О Использовать основные типы двумерных графиков.
О Строить трехмерные графики.
О Строить различные поверхности..
О Выполнять быстрые (черновые) построения.
О Использовать специальные приемы для построения трехмерных графиков.
О Задавать графические структуры двумерной и трехмерной графики.
Ю урокyi*************Ю урокyi*************Расширенные средства графики
Ю урок
yi*************
Ю урок
yi*************
Пакет plots
Техника анимирования графиков
Пакет plottools
Расширенные средства графической визуализации
Расширенная техника анимации
Новая функция для построения стрелок arrow
□ Построение сложных комбинированных графиков
Пакет plots
Общая характеристика пакета plots
Пакет plots содержит почти полсотни графических функций, существенно расширяющих возможности построения двумерных и трехмерных графиков в Maple 7: > with(plots);
^animate, animate3d, animatecurve, changecoords, complexplot, complexplot3d, conformal, contourplot, contourplot3d, coordplot, coordplot3d, cylinderplot, densityplot, display, display3d,fieldplot,fieldplot3d, gradplot, gradplot3d, implicitplot, implicitplot3d, inequal, listcontplot, Hstcontplot3d, listdensityplot, listplot, Ustplot3d,loglogplot, logplot, malrixplot, odeplot, pareto, pointplot, pointplot3d, polarplot, polygonplot, polygonplot3d,
polyhedra_supported,polyhedraplot, replot, rootlocus, semilogplot, setoptions, setoptions3d, spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, textplot3d, tubeplot]
Ввиду важности этого пакета отметим назначение всех его функций:
О animate — создает анимацию двумерных графиков функций;
О animate3d — создает анимацию трехмерных графиков функций;
О animatecurve — создает анимацию кривых;1
О changecoords — смена системы координат;
О complexplot — построение двумерного графика на комплексной плоскости;
О compl expl ot3d — построение трехмерного графика в комплексном пространстве;
О conformal — конформный график комплексной функции;
О contourplot — построение контурного графика;-
О contourpl ot3d — построение трехмерного контурного графика;
О coordplot — построение координатной системы двумерных графиков;
О coordpl ot3d — построение координатной системы трехмерных графиков;
О cylinderplot — построение графика поверхности в цилиндрических координатах;
О densityplot — построение двумерного графика плотности;
О di spl ay — построение графика для списка графических объектов;
О di spl ay3d — построение графика для списка трехмерных графических объектов;
О fieldplot — построение графика двумерного векторного поля;
О f 1 el dpi ot3d — построение графика трехмерного векторного поля;
О gradplot — построение графика двумерного векторного поля градиента;
О gradpl ot3d — построение графика трехмерного векторного поля градиента;
О implicitplot — построение двумерного графика неявной функции;
О implicitplot3d — построение трехмерного графика неявной функции;
О Inequal — построение графика решения системы неравенств;
О 11 stcontpl ot — построение двумерного контурного графика для сетки значений;
О 11 stcontpl ot3d — построение трехмерного контурного графика для сетки значений;
О listdensityplot — построение двумерного графика плотности для сетки значений;
О listplot — построение двумерного графика для списка значений;
О listplot3d — построение трехмерного графика для списка значений;
О loglogplot — построение логарифмического двумерного графика функции;
О logplot — построение полулогарифмического двумерного графика функции;
О matrixplot — построение трехмерного графика со значениями Z, определенными матрицей;
О odeplot — построение двумерного или трехмерного графика решения дифференциальных уравнений;
О pareto — построение диаграммы (гистограммы и графика);
О pointplot — построение точками двумерного графика;
О pointplot3d — построение точками трехмерного графика;
О polarplot — построение графика двумерной кривой в полярной системе координат;
О polygonplot — построение графика одного или нескольких многоугольников;
О polygonpl ot3d — построение одного или нескольких многоугольников;
О polyhedraplot — построение трехмерного многогранника;
О replot — перестроение графика заново;
О rootlocus — построение графика корней уравнения с комплексными неизвестными;
О semi logplot — построение графика функции с логарифмическим масштабом по оси абсцисс;
О setoptions — установка параметров по умолчанию для двумерных графиков;
О setoptions3d — установка параметров по умолчанию для трехмерных графиков;
О spacecurve — построение трехмерных кривых;
О sparsematrixplot — построение двумерного графика отличных от нуля значений матрицы;
О sphereplot — построение графика трехмерной поверхности в сферических координатах;
О surfdata — построение трехмерного графика поверхности по численным данным;
О textplot — вывод текста на заданное место двумерного графика;
О textpl ot3d — вывод текста на заданное место трехмерного графика;
О tubeplot — построение трехмерного графика типа «трубы».
Среди этих функций надо отметить прежде всего средства построения графиков ряда новых типов (например, в виде линий равного уровня, векторных полей и т. д.), а также средства объединения различных графиков в один. Особый интерес представляют две первые функции, обеспечивающие анимацию как двумерных (animate), так и трехмерных графиков (animate3d). Этот пакет вполне заслуживает описания в отдельной книге. Но, учитывая ограниченный объем данной книги, мы рассмотрим лишь несколько характерных примеров его применения. Заметим, что для использования приведенных функций нужен вызов пакета, например командой with(plots).
Построение графиков функций
в двумерной полярной системе координат
В пакете plots есть функция для построения графиков в полярной системе координат. Она имеет вид polarplot(L.o), где L — объекты для задания функции, график которой строится, ио — необязательные параметры. На рис. 12.1, сверху, представлен пример построения графика с помощью функции polarplot.
В данном случае для большей выразительности опущено построение координатных осей, а график выведен линией удвоенной толщины. График очень напоминает лист клена, весьма почитаемого в Канаде и ставшего эмблемой Maple.
Построение двумерных графиков типа implicitplot
В математике часто встречается особый тип задания геометрических фигур, при ■ котором переменные х и у связаны неявной зависимостью. Например, окружность задается выражением х? + у2 = R2, где R — радиус окружности. Для задания двумерного графика такого вида служит функция импликативной графики:
impl1citplot(eqn,x=a..b.y-c..d.options)
Пример построения окружности с помощью этой функции показан на рис. 12.1, снизу. Чуть ниже мы рассмотрим подобную функцию и для трехмерного графика.
Q Maple 7 - [pol impl mws - (Server 11)
^W ^ ¥®w ^Й Рф'М -л (^6to ^-Wfew Цй»"%4ьЙ1^1
Графики в полярной системе координат и типа implicitplot!-
> with(plots):S :- t->100/(100+(t-Pi/2)Л8) : R :- t~
->S(t)*(2-sin(7 *t)-cos(30*t)/2):polarplot([R,t->t,-Pi/2..3/2*Pi],numpoints= 200,axes=NONE,thickness=2,color=black);:
> implicitplot(хл2+ул2=9,x=-Pi..Pi,y=-Pi..Pi,color=black);
Рис. 12.1. Графики, построенные с помощью функций polarplot и implicitplot
Построение графиков линиями равного уровня
Графики, построенные с помощью линий равного уровня (их также называют контурными графиками), часто используются в картографии. Эти графики получаются, если мысленно провести через трехмерную поверхность ряд равноотстоящих плоскостей, параллельных плоскости, образованной осями X и Y графика. Линии равных высот образуются в результате пересечения этих плоскостей с трехмерной поверхностью.
Для построения таких графиков используется функция contourpl ot, которая может использоваться в нескольких форматах:
contourplot(exprl,x=a..b.y=c..d)
contourplot(f.a..b.c..d)
contourplot([exprf .exprg.exprh ].s=a.,b,t=c..d)
contourplot([f.g.h ].a..b,c..d)
contourplot3d(exprl,x=a.,b.y=c..d)
contourplot3d(f.a..b.c..d)
contourplot3d([exprf.exprg.exprh].s=a..b.t=c,.d)
contourplot3d([f.g.h ].a..b.c..d)
Здесь f, g и h - функции; expri — выражение, описывающее зависимость высоты поверхности от координат х и у; exprf, exprg и exprh — выражения, зависящие от s и t, описывающие поверхность в параметрической форме; а и b — константы вещественного типа; end— константы или выражения вещественного типа; х, у, s и t — имена независимых переменных.
На рис. 12.2 показано построение графика линиями равного уровня для одной функции. Параметр filled=true обеспечивает автоматическую функциональную окраску замкнутых фигур, образованных линиями равного уровня. Порою это придает графику большую выразительность, чем при построении только линий равного уровня.
1,151Х1,151ХПостроение графика в виде линий равного уровня> restart:with(plots):'> contourplot(sin(x*y),х=-3. . 3, у—3. .3,grid—[15,15],filled=true);Построение графика в виде линий равного уровня> restart:with(plots):'> contourplot(sin(x*y),х=-3. . 3, у—3. .3,grid—[15,15],filled=true);Warning, the name changecoords has been redefinedWarning, the name changecoords has been redefinedРис. 12.2. Пример построения графика функции линиями равного уровняРис. 12.2. Пример построения графика функции линиями равного уровня|П] Maple 7 - IContploLmws - [Servei 1П
1,151Х
1,151Х
Построение графика в виде линий равного уровня
> restart:with(plots):'
> contourplot(sin(x*y),х=-3. . 3, у—3. .3,grid—[15,15],filled=true);
Построение графика в виде линий равного уровня
> restart:with(plots):'
> contourplot(sin(x*y),х=-3. . 3, у—3. .3,grid—[15,15],filled=true);
Warning, the name changecoords has been redefined
Warning, the name changecoords has been redefined
Рис. 12.2. Пример построения графика функции линиями равного уровня
Рис. 12.2. Пример построения графика функции линиями равного уровня
Обратите внимание на то, что данная функция по умолчанию строит легенду — она видна под графиком в виде линий с надписями. К сожалению, в данном варианте окраски сами контурные линии получаются черными и их невозможно отличить. Однако если убрать параметр filled=true, то контурные линии (и линии легенды) будут иметь разный цвет и легко различаться.
Функция contourplot позволяет строить и графики ряда функций. Пример такого построения показан на рис. 12.3. Множество окружностей на этом рисунке создается четырьмя поверхностями, заданными функциями cl, с2, сЗ и с4.
QMaple 7 - [Contmultmws - [Server 11)
О &K Jifew ^ W’itt Legend ^;3>Д”^^'№“ ^<^‘*Т*^^*~^ЬЙ
[ Г рафик в виде линий равного уровня для нескольких функцийА
Г> restart; with(plots):®
cl:- [cos(х)-2*cos(0.4*у) ,sin(x)-2*sin(0.4*у),у]: с2:- [cos(x)+2*cos(0.4*у) ,sin(x)+2*sin(0.4*у),у]: сЗ:- [cos(х)-3*cos(0.4*у) ,sin(х)-3*sin(0.4*у),у]: с4:- [cos(х)+3*cos(0.4*у) ,sin(x)+3*sin(0.4*у),у]: contourplot<(cl,c2,c3,c4], х-0..2*Р1,у—0..10,grid-[25,15], color—black);
Warning, the name changecoorcis has been redefined
Рис. 12.3. Пример построения графиков многих функций линиями равного уровняРис. 12.3. Пример построения графиков многих функций линиями равного уровня
Рис. 12.3. Пример построения графиков многих функций линиями равного уровня
Рис. 12.3. Пример построения графиков многих функций линиями равного уровня
ВНИМАНИЕВНИМАНИЕ
ВНИМАНИЕ
ВНИМАНИЕ
Обратите внимание, что на многих графиках Maple 7 по умолчанию вписывает легенду, то есть список линий с обозначениями. Иногда (как, например, на рис. 12.3) этот список оказывается просто некстати. Легенду можно убрать, расширив заодно место для графика, сняв флажок Show legend в меню Legend, которое появляется при двойном щелчке на графике (это меню видно на рис. 12.3). То же самое можно сделать с помощью той же команды в контекстном меню. Заодно запомните, что легенду можно редактировать, выполнив команду Edit Legend.
Следует отметить, что хотя графики в виде линий равного уровня выглядят не так эстетично и естественно, как обычные графики трехмерных поверхностей (ибо требуют осмысления результатов), у них есть один существенный плюс — экстремумы функций на таких графиках выявляются порой более четко, чем на обычных графиках. Например, небольшая возвышенность или впадина за большой «горой» на обычном графике может оказаться невидимой, поскольку заслоняется «горой». На графике линий равного уровня этого эффекта нет. Однако выразительность таких графиков сильно зависит от числа контурных линий. '
График плотности
Иногда поверхности отображаются на плоскости как графики плотности окраски — чем выше высота поверхности, тем плотнее (темнее) окраска. Такой вид графиков создается функцией densityplot. Она может записываться в двух форматах:
densltyplot(exprl.х=а..b.y=c.,d)
densltyplot(f.а..b.c..d)
где назначение параметров соответствует указанному выше для функции contourplot.
На рис. 12.4 (верхняя часть) дан пример построения ["рафика такого типа. Нетрудно заметить, что в плоскости XY график разбит на квадраты, плотность окраски которых различна. В пашем случае плотность окраски задается оттенками серого цвета.
Рис. 12.4. Графики плотности и поля векторов
Обычно графики такого типа не очень выразительны, но имеют свои области применения. К примеру, оттенки окраски полупрозрачной жидкости могут указывать на рельеф поверхности дна емкости, в которой находится эта жидкость.
Двумерный график векторного поля
Еще один распространенный способ представления трехмерных поверхностей — графики полей векторов. Они часто применяются для отображения полей, например электрических зарядов. Особенность таких графиков в том, что для их построения используют стрелки, направление которых соответствует направлению изменения градиента поля, а длина — значению градиента. Так что термин «поле векторов» надо понимать в смысле, что поле графика заполнено векторами.
Для построения таких графиков в двумерной системе координат используется функция f 1 el dpi ot:
f1eldplot(f. rl, r2)
f1eldplot(f. rl. r2. ...)
где f — вектор или множество векторов, задающих построение; rl и г2 — пределы. На рис. 12.4 в нижней части документа показан вид одного из таких графиков. Следует отметить, что для получения достаточного числа отчетливо видных стрелок надо поработать с форматированием графиков. Иначе графики этого типа могут оказаться не очень представительными. Так, слишком короткие стрелки превращаются в черточки и даже точки, не имеющие острия, что лишает графики наглядности.
Несколько позже мы рассмотрим построение на одном рисунке графиков плотности и векторного поля, а также создание более наглядных толстых стрелок.
Трехмерный график типа implicitplot3d
Трехмерные поверхности также могут задаваться уравнениями неявного вида. В этом случае для построения их графиков используется функция i mpl i ci tpl ot3d:
impl1citplot3d(exprl,х=а. ,b.y=c. ,d,z=p. ,q.<options>)
1mpl1 citplot3d(f.a..b.c..d.p.,q.<options>)
На рис. 12.5 показаны два примера построения объемных фигур с помощью функции impl icitplot3d.
Эти примеры хорошо иллюстрируют технику применения функции impl icitplot3d. С ее помощью можно строить весьма своеобразные фигуры, что, впрочем, видно и из приведенных примеров. Для наглядности фигур на рис. 12.5 они несколько развернуты в пространстве с помощью мыши.
Графики в разных системах координат
В пакете plots имеется множество функций для построения графиков в различных системах координат. Объем книги не позволяет воспроизвести примеры всех видов таких графиков, ибо их многие сотни. Да это и не надо — во встроенных в справочную систему примерах можно найти все нужные сведения. Так что ограничимся лишь парой примеров применения функции tubeplot (С, options),
позволяющей строить весьма наглядные фигуры в пространстве, напоминающие трубы или иные объекты, образованные фигурами вращения.
Рис. 12.5. Примеры применения функции implicitplotSd
На рис. 12.6 показана одна из таких фигур. Она поразительно напоминает раковину улитки. Функциональная окраска достигнута доработкой графика с помощью панели форматирования.
Эта функция может использоваться и для построения ряда трубчатых объектов в пространстве. При этом автоматически задается алгоритм удаления невидимых линий даже для достаточно сложных фигур. Это наглядно иллюстрирует пример на рис. 12.7, показывающий фигуру «цепи». Не правда ли, реалистичность этой фигуры поражает воображение?
Можно долго размышлять о том, как те или иные математические закономерности описывают предметы реального мира, положенные в основу тех или иных геометрических объектов, или, возможно, о гениальности людей, сумевших найти такие закономерности для многих из таких объектов. В наше время Maple 7 открывает огромные возможности для таких людей.
Графики типа трехмерного поля из векторов
Наглядность ряда графиков можно существенно увеличить, строя их в трехмерном представлении. Например, для такого построения графиков полей из векторов можно использовать графическую функцию fieldplot3d. В отличие от функции fieldplot она строит стрелки как бы в трехмерном пространстве (рис. 12.8).
Q Maple? - (Conhoid ms - (Seivef 1]]
^ Pt Ed» Sow !№«t ?<№&'fietiwt IMoM'H*'- „jg^
Построение "улитки”f
> restart,"with(plots): Warning, the name changecoords has been redefined
[> f :-[(t-5*Pi)*sin<t)/3, (t-5*Pi)*cos(t)/3, (t-5*Pi)*. 9,t—. 15*Pi. . 5*Pi] : ’> tubeplot(f,radius-(t-5*Pi)*.2,orientation—[-37,81],tubepoints-25,style-PATC H) ;
Рис. 12.6. Построение графика-«улитки»
^ |ife g* y®w insert РвдлЫ '^$ дфж» ^wckw НФ* lffl X;
Построение фигуры "цепи"4
[> with(plots):N:-15: k:-3.A(l/2):“
> knot :— tubeplot(( [l+k*cos(t),k*sin(t),. 3*sin(3*t),
> t=0 . . 2*Pi,radius—.3,numpoints—trune(6.4*N),tubepoints=N],
> [-l/2+k*cos(t),k/2+k*sin(t),.3*sin(3*t),
> t-0 2*Pi,radius—.3,numpoints-trunc(6.4*N),tubepoints=N],
> [-l/2+k*cos(t),-k/2+k*sin(t),-3*sin(3*t),
> t—0 . . 2*P±,radius-.3,numpoints-trunc(6.4*N),tubepoints=N]),
> scaling-UNCONSTRAINED,orientation-[40, -160]):knot;
[2 Maple 7 - (Vp3d.mws - [Setver 1]]
•^ Efe £<Й giew |вмй RpsS им»’,»' jJpSws Window gob /. 1'- .tat*
График типа “трехмерное векторное поле"-
Г> with(plots):—
fieldplot3d([(х,у,z)->2*cos(х),(х,у,z)~>2*у,(х,у,z)->1], -3 ..3,-1..1,-1..1,с olor=black,axes=boxed);
Рис. 12.8. Построение поля в трехмерном пространстве с помощью векторов
Все сказанное об особенностях таких двумерных графиков остается справедливым и для графиков трехмерных. В частности, для обеспечения достаточной наглядности нужно тщательно отлаживать форматы представления таких графиков.
Контурные трехмерные графики
В отличие от векторных графиков контурные графики поверхностей, наложенные на сами эти поверхности, нередко повышают восприимчивость таких поверхностей — подобно изображению линий каркаса. Для одновременного построения поверхности и контурных линий на них служит функция contourpl ot3d. Пример ее применения показан на рис. 12.9.
Для повышения наглядности этот график доработан с помощью контекстной панели инструментов графиков. В частности, включена функциональная окраска и подобраны углы обзора фигуры, при которых отчетливо видны ее впадина и пик.
|[3 Maple 7 - |Conl3d.mws - [Seive^—
'£2 t* £» y*w »WI FefewOp*m №dtw ti* - "' ---.aSf x|
[ Трехмерная графика с линиями равного уровня^
Г> restart/with(plots) :Г/
contourplot3d(xA2 + yA2 , х—3 ..3,у=-3..3,1
filled-true, coloring-[blue,green]) ;|
Warning, rhe name changecoocds has been redefined™
Рис. 12.9. График поверхности с контурными линиями
Техника визуализации сложных пространственных фигур
Приведенные выше достаточно простые примеры дают представление о высоком качестве визуализации геометрических фигур с помощью пакета plots. Здесь мы рассмотрим еще несколько примеров визуализации трехмерных фигур. Многие видели катушки индуктивности, у которых провод того или иного диаметра намотан на тороидальный магнитный сердечник. Некую математическую абстракцию такой катушки иллюстрирует рис. 12.10.
В документе рис. 12.10 для функции tubeplot использовано довольно большое число параметров. Не всегда их действие очевидно. Поэтому на рис. 12.11 показано построение трех взаимно пересекающихся торов с разными наборами параметров. Этот рисунок дает также наглядное представление о возможности построения нескольких графических объектов (представленных функциями pl, р2 и рЗ) с помощью функции tubeplot. '
^ Fite EdS V»w tfiseft Faimat ". / Dptfot» Window Heb . .., .-J5IX
' Построение спирали на торе|
with (plots) : N:=10:**
tortube := tubeplot({ (10*cos(t),10*sin(t),0, > t—0. . 2*Pi,radius=2,numpoints=10*N,tubepoints—2*N]
,[cos(t)*(10+4*sin(9*t)),sin(t)*(10+4*sin(9*t)),4*cos(9*t),t=0..2*Pi,radius : =1,numpoints=trunc(37.5*N),tubepoints=N]},scaling=UNCONSTRAINED,orientation = [60,40 ]): tortube;
Рис. 12.10. Top с обмоткой — толстой спиралью
Наконец, на рис. 12.12 показано построение тора с тонкой обмоткой. Рекомендуется внимательно посмотреть на запись функции tubeplot в этом примере и в примере, показанном на рис. 12.11. Можно также поэкспериментировать с управляющими параметрами графика, от которых сильно зависят его представительность и наглядность.
Рис. 12.12. Тор с тонкой обмоткой
В ряде случаев наглядно представленные фигуры можно строить путем объединения однотипных фигур. Пример графика подобного рода представлен на рис. 12.13. Здесь готовится список графических объектов s, смещенных по вертикали. С помощью функции display они воспроизводятся на одном графике, что повышает реалистичность изображения.
Последний пример имеет еще одну важную особенность — он иллюстрирует задание графической процедуры, в теле которой используются функции пакета plots. Параметр п этой процедуры задает число элементарных фигур, из которых строится полная фигура. Таким образом, высотой фигуры (или шириной «шины») можно управлять. Возможность задания практически любых графических процедур средствами Maple-языка существенно расширяет возможности Maple'.
Наглядность таких графиков, как графики плотности и векторных полей может быть улучшена их совместным применением. Такой пример показан на рис. 12.14.
Q Maple 7 - [Gpioc ms - (Server 1]]ROO
<&-№4<*''W W«i FiCM ^-v^ St^"!^^-' .|»IX'
Пример построения графика с использованием процедуры4
with(plots):^
Г> torii proc(n)
local s,k; > s :== seq(tubeplot([cos<t),sin(t),k], >t=0 2*Pi, numpoints=100 , radius=. 25 ), k=0 n-1) ;
display({s));
torii(5);
Рис. 12.13. Построение фигуры, напоминающей шину автомобиля
Рис. 12.14. Пример совместного применения графиков плотности и векторного поля
Этот пример иллюстрирует использование «жирных» стрелок для обозначения векторного поля. Наглядность графика повышается благодаря наложению стрелок на график плотности, который лучше, чем собственно стрелки, дает представление о плавности изменения высоты поверхности, заданной функцией /.
Техника анимирования графиков
Анимация двумерных графиков
Визуализация графических построений и результатов моделирования различных объектов и явлений существенно повышается при использовании средств «оживления» (анимации) изображений. Пакет plots имеет две простые функции для создания анимированных графиков.
Первая из этих функций служит для создания анимации графиков, представляющих функцию одной переменной F(x):
animatecurve(F. г, ...)
Эта функция просто позволяет наблюдать медленное построение графика. Формат ее применения подобен используемому в функции plot.
При вызове данной функции вначале строится пустой шаблон графика. Если активизировать шаблон мышью, то в строке главного меню появляется меню Animation. Меню Animation содержит команды управления анимацией. Такое же подменю появляется и в контекстном (рис. 12.15).
Указанное подменю содержит следующие команды анимации:
О Play — запуск построения графика;
О Next — выполнение следующего шага анимации;
О Backward/Forward — переключение направления анимации (назад/вперед);
О Faster — ускорение анимации;
О Slower — замедление анимации;
О -Continiuus/Single cycle — цикличность анимации.
При исполнении команды Play происходит построение кривой (или нескольких кривых). В зависимости от выбора команд Faster или Slower построение идет быстро или медленно. Команда Next выполняет один шаг анимации — построение очередного фрагмента кривой. Переключатель Backward/Forward позволяет задать направление построения кривой — от начала к концу или от конца к началу. Построение может быть непрерывным или циклическим в зависимости от состояния позиции Continiuus/Single cycle в подменю управления анимацией. При циклической анимации число циклов задается параметром frames=n.'
Рис. 12.15. Пример анимационного построения графика функцией animatecurve
Проигрыватель анимированной графики
При включенном выводе панели форматирования во время анимации она приобретает вид панели проигрывателя клипов (рис. 12.15). Эта панель имеет кнопки управления с обозначениями, принятыми у современных магнитофонов:
Поле координат перемещающейся точки графика.
Остановка анимации.
Пуск анимации.
Переход к следующему кадру (фрейму).
Установка направления анимации от конца в начало.
Установка направления анимации из начала в конец (по умолчанию).
Уменьшение времени шага анимации.
Увеличение времени шага анимации.
Установка одиночного цикла анимации.
Установка серии циклов анимации.
Итак, кнопки проигрывателя, по существу, повторяют команды подменю управления анимацией.
Нажав кнопку пуска (с треугольником, острием обращенным вправо), можно наблюдать изменение вида кривой для функции sin(x)/(x). Другие кнопки управляют характером анимации. Проигрыватель дает удобные средства для демонстрации анимации, например, во время занятий со школьниками или студентами.
Построение двумерных анимированных графиков
Более обширные возможности анимации двумерных графиков обеспечивает функция animate:
an1mate(F. х. t)
an1mate(F. х. t. о)
В ней параметр х задает пределы изменения переменной х, а параметр t — пределы изменения дополнительной переменной t. Суть анимации при использовании данной функции заключается в построении серии кадров (как в мультфильме), причем каждый кадр связан со значением изменяемой во времени переменной t. Если надо явно задать число кадров анимации N, то в качестве о следует использовать frame=N.
Рисунок 12.16 показывает применение функции animate.
Рис. 12.16. Анимация функции sin(i*x)/(i*x) на фоне неподвижной синусоиды
В документе рис. 12.16 строятся две функции — не создающая анимации функция sin(x) и создающая анимацию функция sin(i*x)/(i*x), причем в качестве переменной t задана переменная L Именно ее изменение и создает эффект анимации. Проигрыватель анимационных клипов и меню, описанные выше, могут использоваться для управления и этим видом анимации. Обратите внимание на вызов графических функций в этом примере командой with и на синтаксис записи этих функций.
К сожалению, картинки в книгах всегда неподвижны и воспроизвести эффект анимации невозможно. Можно лишь представить несколько текущих кадров анимации. Представленная на рис. 12.16 картина соответствует последнему кадру анимации.
Еще один пример анимации представлен на рис. 12.17. Этот документ показывает кадр анимированного процесса улучшения приближения синусоидальной функции рядом с различным числом членов (и порядком последнего члена ряда). Результирующая картина, изображенная на рис. 12.17, показывает как приближаемую синусоидальную функцию, так и графики всех рядов, которые последовательно выводятся в ходе анимации.
Рис. 12.17. Анимационная демонстрация приближения синусоиды рядом с меняющимся числом членов
Анимация графиков может найти самое широкое применение при создании учебных материалов. С ее помощью можно акцентировать внимание на отдель-
ных параметрах графиков и образующих их функций и наглядно иллюстрировать характер их изменений.
Построение трехмерных анимационных графиков
Аналогичным образом может осуществляться и анимирование трехмерных фигур. Для этого используется функция animate3d:
ammate3d(F.x. y.t.o)
Здесь F — описание функции (или функций); х, у и t — диапазоны изменения переменных х, у и Г. Для задания числа кадров N надо использовать необязательный параметр о в виде frame=N.
На рис. 12.18 показано построение анимированного графика. После задания функции, график которой строится, необходимо выделить график и запустить проигрыватель, как это описывалось для анимации двумерных графиков.
Рис. 12.18. Подготовка трехмерного анимационного графика
На рис. 12.18 показано также контекстное меню поля выделенного графика. Нетрудно заметить, что с помощью этого меню (и содержащихся в нем подменю) можно получить доступ к параметрам трехмерной графики и выполнить
необходимые операции форматирования, такие как включение цветовой окраски, выбор ориентации фигуры и т. д.
Назначение параметров, как и средств управления проигрывателем анимационных клипов, было описано выше.
Анимация с помощью параметра insequence .
Еще один путь получения анимационных рисунков — создание ряда графических объектов pl, р2, рЗ и т. д. и их последовательный вывод с помощью функций display или display3d:
di splay(pl.p2.p31 nsequence=true)
di sp 1 ay3d (pl. p2. p3.... 1 nsequence=true)
Здесь основным моментом является применение параметра insequence=true. Именно он обеспечивает вывод одного за другим серии графических объектов pl, р2, рЗ и т. д. При этом объекты появляются по одному и каждый предшествующий объект стирается перед появлением нового объекта.
Графика пакета plottools
Примитивы пакета plottools
Инструментальный пакет графики plottools служит для создания графических примитивов, строящих элементарные геометрические объекты на плоскости и в пространстве: отрезки прямых и дуг, окружности, конусы, кубики и т. д. Его применение позволяет разнообразить графические построения и строить множество графиков специального назначения. В пакет входят следующие графи
аге
arrow
circle
cone
cuboid /
curve
cutin
cutout
cylinder
disk
dodecahedron
ellipse
ellipticArc
hemisphere
hexahedron
hyperbola
icosahedron
line
octahedron
pieslice
point
polygon
rectangle
semitorus
sphere
tetrahedron
torus
ческие
примитивы:
Вызов перечисленных примитивов осуществляется после загрузки пакета в память компьютера командой with(plottools). Только после этого примитивы пакета становятся доступными. Обычно примитивы используются для задания графических объектов, которые затем выводятся функцией display. Возможно применение этих примитивов совместно с различными графиками.
Большинство примитивов пакета plottools имеет довольно очевидный синтаксис. Например, для задания дуги используется примитив arc(c, г, а..Ь,...), где с — список с координатами центра окружности, к которой принадлежит дуга, г — радиус этой окружности, а.. b — диапазон углов. На месте многоточия мо-
гут стоять обычные параметры, задающие цвет дуги, толщину ее линии и т. д. Конус строится примитивом cone (с, г, h...), где с — список с координатами центра, г — радиус основания, h — высота и т. д. Все формы записи графических примитивов и их синтаксис можно найти в справочной системе. В необходимых случаях стоит проверить синтаксис того или иного примитива с помощью справки по пакету plottools.
Примеры применения двумерных примитивов пакета plottools
Па рис. 12.19 показано применение нескольких примитивов двумерной графики для построения дуги, окружности, закрашенного красным цветом эллипса и отрезка прямой. Кроме того, на графике показано построение синусоиды. Во избежание искажений пропорций фигур надо согласовывать диапазон изменения переменной .г. Обычно параметр scalling=constrained выравнивает масштабы и диапазоны по осям координат, что гарантирует отсутствие искажений у окружностей и других геометрических фигур. Однако при этом размеры графика нередко оказываются малыми. Напоминаем, что этот параметр можно задать и с помощью подменю Projection.
^ Efe £dit View Jaw Fcsmat - fiiAom ^«dow JWл1&|2£1
Применение графических примитивов пакета plottools£
with(plottools): а := arc([0,0], 0.9, Pi/2..1.l*Pi,thickness=4): l:=line([-1,-1], [1,1]): c:-circle([0,0],0.7,thickness=2,color-blue): e:-ellipse([1.1,0.5],0.4,0.2,color-red,filled—true): s : -plot (sin (x) , x--Pi/2 . .Pi/2 , у—1. . 1) : plots[display](a,l,c,e,s);
Warning, the naine arrow has been redefinedш
Рис. 12.19. Примеры применения примитивов двумерной графики пакета plottools
Рисунок 12.20 иллюстрирует построение средствами пакета plottools четырех разноцветных стрелок, направленных в разные стороны. Цвет стрелок задан списком цветов с, определенным после команды загрузки пакета. Для построения стрелок используется примитив arrow с соответствующими параметрами.
Рис. 12.20. Построение разноцветных стрелок, направленных в разное стороныРис. 12.20. Построение разноцветных стрелок, направленных в разное стороны
Рис. 12.20. Построение разноцветных стрелок, направленных в разное стороны
Рис. 12.20. Построение разноцветных стрелок, направленных в разное стороны
Примитивы могут использоваться в составе графических процедур, что позволяет конструировать практически любые типы сложных графических объектов.
В качестве примера на рис. 12.21 представлена процедура SmithChart, которая строит хорошо известную электрикам диаграмму Смита (впрочем, несколько упрощенную). В этой процедуре используется примитив построения дуг arc. При
этом задается верхняя часть диаграммы, а нижняя получается ее зеркальным
^ПРИМЕЧАНИЕ^ПРИМЕЧАНИЕотражением.
^ПРИМЕЧАНИЕ
^ПРИМЕЧАНИЕ
Обратите внимание на то, что, начиная с рис. 12.21, мы не указываем загрузку пакета plottools, поскольку она уже была проведена ранее. Однако надо помнить, что все примеры этого раздела предполагают, что такая загрузка обеспечена. Если вы использовали команду restart или только что загрузили систему Maple 7, то для исполнения примера рис. 12.21 и последующих примеров надо исполнить команду wrth(plottools).
0 Maple 7 - [pt2.mws - [Server 1)|BUSSES
Г> Smithchart :- proc (r) local i, a, b ;2.
a :- PLOT ( seq( arc( [-l*r / 4, 0], i*r/4, 0..P1), 1 = 1..4 ),~
arc( [0, r/2], r/2, Pi-arcsin(3/5)..3*Pr/2), arc( [0,r],r, Pi. . Pi+arcsin( 15/17) ), arc((0, 2*r], 2*r, Pi+arcsin(3/5)Pi+arcsin(63/65)),arc( [0, 4*r] , 4*r,;
Pi+arcsin(15/17)..Pi+arcsin(63/65) ) );.
b :- transform! (x, y)->[x, -y] ) (a) : display( a, b, line([0, 0], [-2*r, 0] ), args [2. .nargs] ) ; end:«
Smithchart(1 , axes= boxed);
Рис. 12.21. Построение диаграммы Смита
Примеры применения трехмерных примитивов пакета plottools
Аналогичным описанному выше образом используются примитивы построения трехмерных фигур. Это открывает возможность создания разнообразных иллюстрационных рисунков и графиков, часто применяемых при изучении курса стереометрии. Могут строиться самые различные объемные фигуры и поверхности — конусы, цилиндры, кубы, полиэдры и т. д. Использование средств функциональной окраски делает изображения очень реалистичными.
Рисунок 12.22 показывает построение цилиндра и двух граненых шаров. Цилиндр строится примитивом cylinder, а граненые шары — примитивом icosahedron. Другой пример (рис. 12.23) иллюстрирует построение на одном графике двух объемных фигур, одна из которых находится внутри другой фигуры. Этот пример демонстрирует достаточно корректное построение вложенных фигур.
На рис. 12.24 показано совместное построение двух пересекающихся кубов и сферы в пространстве. Нетрудно заметить, что графика пакета приблизительно (с точностью до сегмента) вычисляет области пересечения фигур. С помощью контекстно-зависимого меню правой кнопки мыши (оно показано на рис. 12.24) можно устанавливать условия обзора фигур, учитывать перспективу при построении и т. д. В частности, фигуры на рис. 12.24 показаны в перспективе.
Рис. 12.22. Построение цилиндра и двух граненых шаров
^ fife gdityiew Insert Рвум , ;* &йю»$. JJfuxtew Ц«фaISJ-SJ
р :-display( stellate( dodecahedroni(),3),style=pa^ch):д
q : —display( outout( icosahedron( [1,1,0],2.2), 7/6\ )):
display( p, q, scaling^unconstrained );\
Рис. 12.24. Примеры применения примитивов трехмерной графики пакета plottools
Построение еще одной забавной трехмерной фигуры — «шкурки ежа» — демонстрирует рис. 12.25. В основе построения лежит техника создания полигонов.
Построение фигур, очень напоминающих улитки, показано на рис. 12.26. При построении этих фигур используется функция tubeplot. Обратите внимание на то, что строятся две входящие друг в друга «улитки».
Наконец, на рис. 12.27 показано построение фигуры — бутылки Клейна. Фигура задана рядом своих фрагментов, определенных в процедуре cl einpoints. Эта процедура является еще одним наглядным примером программирования графических построений с помощью Maple-языка.
С другими возможностями этого пакета читатель теперь справится самостоятельно или с помощью данных справочной системы. Много примеров построения сложных и красочных фигур с применением пакета plottools можно найти в Интернете на сайте фирмы Maple Software, в свободно распространяемой библиотеке пользователей системы Maple и в книгах по этой системе.
Построение графиков из множества фигур
В ряде случаев бывает необходимо строить графики, представляющие собой множество однотипных фигур. Для построения таких графиков полезно использовать функцию повторения seq(f,i=a. .Ь). На рис. 12.28 показано построение фигуры, образованной вращением прямоугольника вокруг одной из вершин..
QMaple 7 [ptS.mws - {Server 1]) ®F3E3
S WX^'^''^** f<S№!?- А'^л'^ ^ял^^ойе# й* \ ' / ryWT\V ;H - ''^' ''; ?-^^<| .^[> p:*piot3d(l,x-Pi. .2*Pi,y-0. .Pi,coords-spherical):S
[> s: -convert (op(select (x->op(0 ,x)*b4ESH, [op(p) ] ) ) ,POLYGONS) :*
> si:—display (stellate(s, 2) , style—patch, scaling-unconstrained) :sl;
Рис. 12.25. Построение трехмерной фигуры — «шкурки ежа»
П1 Maple 7 - [ptB.mws - (Serve* 1|)
Рис. 12.27. Построение фигуры «бутылка Клейна»
В этом примере полезно обратить внимание еще и на функцию поворота фигуры — rotate. Именно сочетание этих двух функций (мультиплицирования и поворота базовой фигуры — прямоугольника) позволяет получить сложную фигуру, показанную на рис. 12.28.
Анимация двумерной графики в пакете plottools
Пакет plottools открывает возможности реализации анимационной графики. Мы ограничимся одним примером анимации двумерных графиков. Этот пример представлен на рис. 12.29. В этом примере показана анимационная иллюстрация решения дифференциального уравнения, описывающего незатухающий колебательный процесс. Строится качающийся объект — стрелка с острием вправо, решение дифференциального уравнения в виде синусоиды и большая стрелка с острием влево, которая соединяет текущую точку графика синусоиды с острием стрелки колеблющегося объекта.
Этот пример наглядно показывает возможности применения анимации для визуализации достаточно сложных физических и математических закономерностей. Перспективы применения системы Maple 7 в создании виртуальных физических и иных лабораторий трудно переоценить.
Анимация трехмерной графики в пакете plottools
Хорошим примером ЗО-анимации является документ, показанный на рис. 12.30. Представленная на нем процедура springPlot имитирует поведение упругой системы, первоначально сжатой, а затем выстреливающей шар, установленный на ее верхней пластине. Упругая система сострит из неподвижного основания, на котором расположена упругая масса (например, из Пористой резины), и верхней пластины.
Рис. 12.28. Построение фигуры, образованной вращением прямоугольника
Рис. 12.30. Имитация отстрела шара сжатой упругой системой
Управление анимацией, реализованной средствами пакета plottools, подобно уже описанному ранее. Последний пример также прекрасно иллюстрирует возможности применения Maple 7 при математическом моделировании различных явлений, устройств и систем.
Расширенные средства графической визуализации
Построение ряда графиков, расположенных по горизонтали
Обычно если в строке ввода задается построение нескольких графиков, то в строке вывода все они располагаются по вертикали. Это не всегда удобно, например, при снятии копий экрана с рядом графиков, поскольку экран монитора вытянут по горизонтали, а не по вертикали. Однако при применении функций pl ots и display можно разместить ряд двумерных графиков в строке вывода по горизонтали. Это демонстрирует пример, показанный на рис. 12.31.
Этот пример достаточно прост и нагляден, так что читатель может пользоваться данной возможностью рсегда, когда ему это нужно.
□ Maple? (pdh mws - [Server 1ЦЯВН
ф £w £dl y»w tneefl Г«ДО&phyt Window h*P,• ISf XI
Построение в одной строке вывода нескольких графиков разного типа,4
расположенных по горизонтали
Создадим графические объекты а, b и с
[> with(plots, conformal, display):
Г> a: -plot (sin (х) , х—10 . . 10 , color—black) : b := conformal(z, z = 0..2*Pi+Pi*I, grid = [2< color-black): c := conformal(cos(z), z — 0..2*Pi+Pi*I, grid color—black):
Построим их в один ряд, используя функции plots и display Г> plots[display](array(1..3, [a, b, с]));
Рис. 12.31. Пример расположения трех графиков в строке вывода по горизонтали
Визуализация решения систем линейных уравнений
Мы уже не раз использовали графические возможности Maple для визуализации решений математических задач. Так, многие особенности даже функций одной переменной вида /(х) могут быть выявлены с помощью графика этой функции. Затем можно точно вычислить корни функции (точки перехода через 0), экстремумы, крутизну наклона (производную) в заданных точках и т. д. Еще более информативна в этом отношении трехмерная графика — для большинства функций двух переменных вида z(x, г/) нужно очень богатое математическое воображение, чтобы представить их вид — особенно в одной из многих десятков координатных систем.
Однако некоторые виды графиков трудно представить себе даже при наличии такого воображения. В этом отношении Maple 7 предоставляет поистине уникальные возможности, обеспечивая простую и быструю визуализацию решений. Ниже мы рассмотрим несколько наиболее характерных примеров такой визуализации. Системы линейных уравнений могут решаться как с помощью функции solve, так и с помощью матричных методов. Замечательной возможностью функции sol ve является возможность решения относительно ограниченного числа переменных. Например, систему линейных уравнений с переменными х, у, г, < и и можно решить относительно только первых трех переменных х, у и z. При этом
решения будут функциями относительно переменных t и в и можно будет построить наглядный график решения (рис. 12.32).
Рис. 12.32. График, представляющий решения системы линейных уравнений
На рис. 12.32 система задана пятью равенствами: el, е2, еЗ, е4 и е5. Затем функцией solve получено вначале решение для всех переменных (для иллюстрации), а затем для трех переменных х, у и z. Для получения решения в виде списка, а не множества, как в первом случае для всех переменных, использована функция подстановки subs. После этого функция plot3d строит плоскость решения в пространстве.
Визуализация решения систем неравенств
Пожалуй, еще более полезным и наглядным средством является визуализация решения системы уравнений в виде неравенств. В пакете plots имеется специальная графическая функция inequal, которая строит все граничные линии неравенств и позволяет раскрасить разделенные ими области различными цветами:
Inequal(ineqs. xspec. yspec. options)
Параметры этой функции следующие: ineqs — одно или несколько неравенств или равенств или список неравенств или равенств; xspec — xvar=min_x. .max x;
yspec — yvar=min_y. .шаху; о — необязательные параметры, например указывающие цвета линий, представляющих неравенства или равенства, и областей, образованных этими линиями и границами графика.
Пример применения этой функции представлен на рис. 12.33.
1^13 Maple 7 - IlneQal.mws - [Seiver 111
^ Ffe Edit y®w Insert Format > " t •' Options Window Це(р|;T Isj X
Отображение областей, представленных неравенствами*
> with(plots) :
inequal( (х+у>-1, х-у<=1,y<=2 + 0 . l*x}, x=-4..4, y=-4..4, optionsfeasible—(color=magenta), optionsopen=(color=blue,thickness=2) , optionsclosed—(color=black, thickness—3), optionsexcluded=(color=yellow) );
Рис. 12.33. Пример графической интерпретации решения системы неравенств
Обратите внимание на задание цветов: optionsfeasible задает цвет внутренней области, для которой удовлетворяются все неравенства (равенства), optionsopen и optionsclosed задают цвета открытых и закрытых границ областей графика, optionsexciuded используется для цвета внешних областей. График дает весьма наглядную интерпретацию действия ряда неравенств (или равенств).
Конформные отображения на комплексной плоскости .
Объем данной книги не позволяет объяснить столь тонкое понятие, как конформные отображения на комплексной плоскости. Ограничимся лишь указанием на то, что в пакете plots имеется функция для таких отображений:
conformal(F.rl,r2.о);
где F — комплексная процедура или выражение; г1, г2 — области, задаваемые в виде а. .Ь или name=a. . b; о — управляющие параметры. Таким образом, для построения нужного графика достаточно задать нужное выражение и области изменения rl и г2. Пример построения конформных изображений для трех выражений дан на рис. 12.34.
Рис. 12.34. Конформное отображение на комплексной плоскости графиков трех зависимостей
Средства конформного отображения в Maple 7, к сожалению, остаются рудиментарными и вряд ли достаточными для специалистов в этой области математики.
Графическое представление содержимого матрицы
Многие вычисления имеют результаты, представляемые в форме матриц. Иногда такие результаты можно наглядно представить графически, например в виде гистограммы. Она представляет собой множество столбцов квадратного сечения, расположенных на плоскости, образованной осями строк (row), и столбцов (column) матрицы. При этом высота столбцов определяется содержимым ячеек матрицы.
Такое построение обеспечивает графическая функция matrixplot из пакета plots. На рис. 12.35 показано совместное применение этой функции с двумя
функциями пакета linalg, формирующими две довольно экзотические матрицы А и В..
ГУ Maple 7 - fMatrptot.niw» - [Seivet 1Ц
^Е^ £# £*w J0^ ^^£)ptms Window Hgjpm^^-^
Визуализауция матрицы с помощью графической функции matrixplot4
> 1'estart: with(plots): with (linalg) :^
A: = Hilbert(8): B: — toeplitz([1,2,3,4,-4,-3,-2,-1]):i
F := (x,y) -> sin(x*y)/x: matrixplot(A-B,heights=histogram,axes-frame,gap—0. 25,style-patch,color*F);
Рис. 12. 35. Графическое представление матрицы
На рис. 12.35 показана графическая визуализация матрицы, полученной как разность матриц А и В. Для усиления эффекта восприятия применяется функциональная закраска разными цветами. Для задания цвета введена процедура F.
Визуализация ньютоновских итераций в комплексной области
Теперь займемся довольно рискованным экспериментом — наблюдением ньютоновских итераций с их представлением на комплексной плоскости. На рис. 12.36 задана функция /(z) комплексного аргумента. Проследить за поведением этой функции на комплексной плоскости в ходе ньютоновских итераций позволяет графическая функция complexplot3d из пакета plots.
Наблюдаемая картина весьма необычна и свидетельствует о далеко не простом ходе итерационного процесса.
Рис. 12.36. Наблюдение за процессом ньютоновских итераций в трехмерном пространствеРис. 12.36. Наблюдение за процессом ньютоновских итераций в трехмерном пространствеРиск работы с этим примером заключается в том, что в системе Maple 7 он иногда вызывает фатальные ошибки, ведущие к прекращению работы с системой. Обычно при запуске этого примера сразу после загрузки системы Maple такого не происходит, но, когда память загружена, сбой вполне возможен. Объективности ради надо заметить, что в системах Maple б и 7 подобное поведение системы не было замечено. Тем не менее рекомендуется записывать подобные примеры на диск перед их запуском.
Рис. 12.36. Наблюдение за процессом ньютоновских итераций в трехмерном пространстве
Рис. 12.36. Наблюдение за процессом ньютоновских итераций в трехмерном пространстве
Визуализация корней случайных полиномов
Наряду с традиционной для математических и статистических программ возможностью генерации случайных чисел Maple 7 предоставляет довольно экзотическую возможность генерации случайных полиномов с высокой максимальной степенью. Для этого используется функция:
randpoly(var.о)
Она возвращает случайный полином переменной var, причем максимальная степень полинома птах может указываться параметром о вида degree=nmax.
Приведем примеры генерации случайного полинома с максимальной степенью 50:
> poly:=randpoly([x],degree=50):
poly := 56 х44 + 49 х36 + 63 х34 + 57 х33 - 59 х8 + 45 х6
> poly:=randpoly([x],degree=50);
poly := 66 х48 + 54 х37 - 5 х20 + 99 х17 - 61 х5 - 50 х3
>polу:=randpol у([х],degree=50);
poly := -91 х49 - 47 х32 - 61 х27 + 41 х12 - 58 х9 - 90 х8
С помощью функции all values можно построить список SA корней случайного полинома. А с помощью команды вида:
> with(plots):complexplot(SA.x=-1.2..1.2.style=po1 nt):
построить комплексные корни полученного случайного полинома в виде точек на комплексной плоскости. Один из таких графиков (их можно построить множество) показан на рис. 12.37.
Рис. 12.37. Расположение корней случайного полинома на комплексной плоскости
Можно заметить любопытную закономерность — точки, представляющие корни случайного полинома, укладываются вблизи окружности единичного радиуса с центром в начале координат. Однако этот пример, приводимый в ряде книг по Maple, показывает, что порою вычисления могут давать довольно неожиданные результаты. Кстати говоря, аналитически можно вычислять корни полинома с максимальной степенью не более четырех.
Визуализация поверхностей со многими экстремумами
Maple 7 дает прекрасные возможности для визуализации поверхностей, имеющих множество пиков и впадин, другими словами, экстремумов. Рисунок 12.38 показывает задание «вулканической» поверхности с глубокой впадиной, окруженной пятью пиками. Здесь полезно обратить внимание на способ задания такой поверхности Да, Ь, с) как функции трех переменных а,Ьи с. Он обеспечивает индивидуальное задание координат каждого экстремума и его высоты (отрицательной для впадины). .
|QMaple7 (3dcont.MWS (Server 11] МЗЕ&
Построение 3D графика поверхности с контурными линиями на ней4
> f:=(а,b,с)->с*ехр(-(х-а)Л2-(у-b)Л2);
moon:=f(0,0,-3)+f(2,2,2)+f(-2,-2,2)+f(-1,2,3)+f(1,-2,2)+f(2,0,2) : plot3d(moon,x=-3..3,у—-3..3,contours=20,title—'Вулканическая поверхность', style—patchcontour,axes=frame,shading—ZHUE,orientation-[60,50]);
Вулканическая поверхность
Рис. 12.38. Построение графика поверхности с множеством экстремумов
Наглядность этого графика усилена за счет применения функциональной окраски и контурных линий, нанесенных на саму поверхность. Все эти возможности обеспечивают параметры основной функции plot3d.
А на рис. 12.39 представлен еще один способ задания поверхности — с помощью функции двух угловых переменных /(6, ф).
При построении этого рисунка также используются функциональная окраска и построение контурных линий.
Визуализация построения касательной
и перпендикуляра
В ряде геометрических построений нужно строить касательную и перпендикуляр к кривой, отображающей произвольную функцию Дх) в заданной точке х = а. Рисунок 12.40 поясняет, кдк это можно сделать. Линии касательной Т(х) и перпендикуляра N(x) определены аналитически через производную в заданной точке. Во избежание геометрических искажений положения касательной и перпендикуляра при построении графика функцией plot надо использовать параметр scaling=constrained.
| Q Maple 7 - (3df2v mw$ - [Servct 1ЦRR I
^^ И Sew^Wt fw "^" ^ &8*« W* ЙФ 44" "'' *'' A -^л '^ *'' v< *-vs;'' "" ' ?л*ШЛ
3D график поверхности, заданной функцией двух переменных4
> f:-(theta,phi)-> (8*sin(phi)-8*sin(theta)-6*sin(theta-phi))/T
(15+6*cos(theta)+6*cos(phi)) л2;
8 sm(^) - 8 sm(9) - 6 sin(0 - ^) /:= (5,:~
(15 + 6 cos(0) + 6 cos(^))2
'> plot3d(f(theta,phi),theta—Pi. .5*Pi/2,phi=-Pi/2. . 3*Pi,grid™ [35,35], contours—20,title—'График поверхности, заданной функцией двух переменных f (theta, phi) ', style-patchcontour, axes-frame, shading—ZHUE, oriental ion—[115,55]);
График поверхности, заданной функцией двух переменных f(theta,phi):
Рис. 12.39. Построение графика поверхности, заданной функцией двух угловых переменных
1Г>ЗМар1е 7 • hn cmve.mwe - fSeiv® 1П
^ fie- £dil yiBX Insert Pelmet ,* - 2#«x* ^гк4э* Це^>*151 .^
[ Построение касательной и перпендикуляра к функции f(x) в точке х=аf
[> f :=х -> 2+ sin(xA2)/(x-l):а :=2.1:“
Г(Я) D(/)(.«) У--2..5, discont = true,Г(Я) D(/)(.«) У--2..5, discont = true,> Т :- х -> f(a) + (x-a)*D(f)(а); Г:=х-> f(a) + (х-Л)Р(Л(«) > N :- х -> f(a) - (x-a)/D(f)(a);
Г(Я) D(/)(.«) У--2..5, discont = true,
Г(Я) D(/)(.«) У--2..5, discont = true,
N := х
[> plot( ff(x), Т(х), N(x>], х— 5. .5, scaling—constrained,color—black);
Рис. 12.40. Построение касательной и перпендикуляра к заданной точке графика функции Дх)
Визуализация вычисления определенных интегралов
Часто возникает необходимость в геометрическом представлении определенных интегралов в виде алгебраической суммы площадей, ограниченных кривой подынтегральной функции /(х), осью абсцисс х и вертикалями х = а и х = b (пределами интегрирования). При этом желательно обеспечение закраски верхней и нижней (отрицательной и положительной) площадей разными цветами, например зеленым для верхней площади и красным для нижней. Как известно, численное значение определенного интеграла есть разность этих площадей.
К сожалению, в Maple 7 нет встроенной функции, явно дающей такое построение. Однако ее несложно создать. На рис. 12.41 представлена процедура a_plot, решающая эту задачу. Параметрами процедуры являются интегрируемая функция /(х) (заданная как функция пользователя), пределы интегрирования а и b и пределы слева ат и справа Ьт, задающие область построения графика /(х).
Рисунок 12.41 дает прекрасное представление о сущности интегрирования для определенного интеграла. Приведенную на этом рисунке процедуру можно использовать для подготовки эффектных уроков по интегрированию разных функций.
Рис. 12.41. Графическое представление определенного интеграла
Визуализация теоремы Пифагора
Еще один пример наглядного геометрического представления математических понятий — визуализация известной теоремы Пифагора (рис. 12.42).
В этом примере используется функция построения многоугольников. Наглядность построений усиливается выбором разной цветовой окраски треугольников и квадрата.
^ fte ^4t y^w insert F^mai '.л*"иЯ Ш^’^ ^xiow £|e&jjJ^|2^
[ Иллюстрация к теореме Пифагора-
[> а :- 3; Ь :- 5;"
а := 3
Д:=5
> with(plots):
display( polygonplot ( [ [0,0] , [b, 0] , [0, а] ] ,color - red ), polygonplot( [[b,0], [a+b,0], [a+b,b]], color — green ), polygonplot( [[a+b,b],[a+b,a+b],[a,a+b]], color = blue ), polygonplot ( [ [0, a], [a, a+b], [0, a+b] ] , color — violet ), polygonplot ({[ [b, 0] , [a+b, b] , [a, a+b] , [0 , a] ]), color * yellow), scaling™ constrained);
Рис. 12.42. Графическая иллюстрация к теореме ПифагораРис. 12.42. Графическая иллюстрация к теореме Пифагора
Рис. 12.42. Графическая иллюстрация к теореме Пифагора
Рис. 12.42. Графическая иллюстрация к теореме Пифагора
Визуализация дифференциальных
параметров кривых
Дифференциальные параметры функции /(т), описывающей некоторую кривую, имеют большое значение для анализа ее особых точек и областей существования. Так, точки с нулевой первой производной задают области, где кривая нарастает (первая производная положительна) или убывает (первая производная отрицательна) с ростом аргумента х. Нули второй производной задают точки перегиба кривой.
Следующая графическая процедура служит для визуализации поведения кривой /t = f^ на отрезке изменения х от а до 6:'
with(plots):
shape plot := proc(fl.a.b)
local 1,n,xl.x2,xmid,d.yl,y2,A,B, m.M,slope. concav:
n:= 200; d := (b-a)/n; x2 := a;
M := maximizeC f(x). x = a..b); m := minimize(f(x),x = a..b);1
for 1 from 1 to n do
xl := evalf(x2); yl := evalf( f(xl));
x2 := evalf(a + i*d):y2 := evalf( f(x2));
xmid := xl + d/2;
slope := evalf( subs( x = xmid, diff( fl.x )));
concav := eva1f( subs( x = xmid, diff( fl.x $
2)));
if( slope > 0 ) then A[i]:=plot(fl,x=xl. .x2,color=blue,thickness=4,axes=box); else A[1]:=plot(f1.x=xl.. x2,color=red,th1ckness=2,axes-box); fl: if( concav > 0 ) then
В[1]:=polygonplot ([ [xl. M]. [xl, yl]. [x2. y2], [x2, M] ], color=green,style-patchnogri d):
else
B[1]:-polygonplot( [[xl,m],[xl,yl],[x2.y2], [x2, m] ], color-coral.style-patchnogrid);
fi:
od;
display({ seq( A[1],i-l..n ),seq( B[i],i=l..n ) } );
end:
В этой процедуре заданы следующие цвета (их можно изменить):
Таблица 12.1. Цвета при визуализации в процедуре shape_plot
Изменение/(х)
Цвет
Возрастание
Синий
Убывание
Красный
Площадь
Цвет
Над минимумом
Зеленый
Под максимумом
Коралловый
Например, для функции:
f:=x->sin(x)+x/2;shape_plot(f(x),-6.6);
/:=х —> sin(x) + -х
построенный график будет иметь вид, представленный на рис. 12.43 (естественно, в книге цвета — лишь оттенки серого).
Рисунок 12.43 дает наглядное представление о поведении заданной функции. Рекомендуется опробовать данную процедуру на других функциях. Следует отметить, что, поскольку процедура использует функции mi mi mi ze и maximize, она может давать сбои при исследовании сложных функций, содержащих специальные математические функции или особенности. Иногда можно избежать такой
ситуации, исключив особенность. Например, для анализа функции sin(x)/x можно записать ее в виде:
>f:=x->if х=0 then 1 else sin(x)/x end if;
shape_plot(f(x),-10,10);
Исполнение приведенной выше строки ввода дает график, представленный на рис. 12.44.
Рис. 12.43. Визуализация поведения функции/(х)
Рис. 12.44. Визуализация поведения функции sin(x)/x
Данная процедура дает хорошие результаты при анализе функций, представленных полиномами. Вы можете сами убедиться в этом.
Иллюстрация итерационного решения уравнения f (х) - х
Классическим методом решения нелинейных уравнений является сведение их к виду х = Дх") и применение метода простых итераций xN = s(xjt_1) при заданном значении х0. Приведем пример такого решения:
> f := х ->3*1п(х+1);
/:= х 3 ln(x + 1)
>х||0 := 0.5;
хО := .5
> хО := .5;
хО ~ .5
> for k from 1 to 16 do х| (к := evalf( f(x||(к-1) )): od;
xl := 1.216395324
x2 := 2.387646445
x3 := 3.660406248
x4 := 4.617307866
x5 := 5.177557566
x6 := 5.462768931
x7:= 5.598173559
x8 := 5.660378631
x9 := 5.688529002
xlO = 5.701181910
xll := 5.706851745
x!2 := 5.709388956
xH := 5.710523646
xl4 := 5.711030964
xl5 - 5.711257755
x!6;= 5.711359134'
Нетрудно заметить, что значения хь в ходе итераций явно сходятся к некоторому значению. Проведем проверку решения, используя встроенную функцию solve:
> f (х) = х; solveU, х);
31п(х+1)=х.
0,-3LambertW -1, - е( 1/3- 1
Результат выглядит необычно — помимо довольно очевидного корня х = 0 значение другого корня получено в виде специальной функции Ламберта. Впрочем, нетрудно найти и его численное значение: > evalf(t);
0., 5.711441084
Однако как сделать процесс решения достаточно наглядным? Обычно Для этого строят графики двух зависимостей — прямой х и кривой f^ — и наносят на них ступенчатую линию перемещения точки хк. Специальной функции для графиков подобного рода Maple 7 не имеет. Однако можно составить специальную
процедуру для их построения. Ее листинг, заимствованный из примера, описанного в пакете обучения системе Maple 7 — PowerTools, представлен ниже:
>restart; with(plots):
Warning, the name changecoords has been redefined
>rec_plot := proc! fl. a . b, xO)
local xl, x2, yl, y2. 1 , pl, p2, p3, n, al.a2;
x2 := xO:y2: = 0; n :=10;
for 1 from 1 to n do
xl := x2; yl := y2;y2:=f(xl); x2 := y2;
pl[i] := plot([[xl, yl],[xl, y2]],x = a..b,color =black):
p2[i] := plot([[xl.y2],[x2, y2]],x=a.,b,color=black):od:
display! plot! fl(x), x = a..b, thickness = 2. color = blue).
plot(x, x = a..b, thickness = 2, color = black),
seq! pl[i], i = l..n), seq! p2[i], i = l..n) ); end:
Параметрами этой процедуры являются: fl — функция /(х); а и b — пределы изменения х при построении графика; хО — значение х, с которого начинаются итерации. Исполнив команду:
>rec_plot( f(x). 0. 8, xO):
можно наблюдать график, иллюстрирующий итерационный процесс. Он представлен на рис. 12.45.
Рис. 12.45. Иллюстрация процесса итераций
Нетрудно заметить, что для данной функции процесс итераций хотя и не очень быстро, но уверенно сходится к точке пересечения прямой у = х и кривой у = /(х). Вы можете, меняя зависимость /(х), провести исследования сходимости уравнений х = /(х).
Построение сложных фигур в полярной
системе координат
Некоторые виды математичеекой графики имеют определенную художественную ценность и фигурируют в символике различных стран и общественных
организаций. Остановимся на нескольких таких примерах применительно к графике в полярной системе координат. Представим фигуры, образованные множеством линий на плоскости.
Рисунок 12.46 демонстрирует одну из таких фигур. Это семейство из 10 кардиоид разного размера. Параметр scalling=constrained обеспечивает правильное отображение фигур — каждая кардиоида вписывается в огибающую ее невидимую окружность. Размер кардиоид задается значением параметра а.
Рис.12.46. Семейство кардиоид на одном графике
Еще одно семейство кардиоид, на сей раз шестилепестковых, представлено на рис. 12.47. Здесь также изменяемым параметром каждой фигуры является ее размер, заданный параметром а.
Фигуре, представленной на рис. 12.48, трудно дать определенное название. Назовем ее волнообразной спиралью.
По образу и подобию приведенных фигур читатель может опробовать свои силы в создании новых красочных фигур в полярной системе координат. Некоторые из них поразительно напоминают снежинки, картинки в калейдоскопе и изображения морских звезд. Если убрать параметр color=black, введенный ради черно-белой печати картинок в книге, то можно усилить красочность фигур за счет их разноцветной окраски.
[^Maple? (polgs mws - (Seivei 1Ц^ПН?
«^Нч^Я ^^ '^^Ч Л1^*^^ ? SS Ч ^^^^°^9? Ч^^Ч »44.^44V4 444S4S44\SS4-^' V<S 4.»\'>k<:44\4S'4^»<%.5~SS''V^'444^.4^4^^
> polarplot( {10 + a*cos(6*theta) $ a - 1..15), theta - O..2*P1, scaling - s constrained,color—black);|
Рис. 12.47. Семейство шестилепестковых кардиоид
Рис.12,48. Фигура — волнообразная спираль
Построение сложных фигур импликативной графики
Импликативные функции (см. урок 7) нередко имеют графики весьма любопытного вида. Ограничимся парой примеров построения таких графиков, представленных на рис. 12.49. Эти фигуры напоминают контурные графики функции двух переменных.
Приведенные примеры дают весьма наглядное представление о больших возможностях визуализации решений самых различных задач в системе Maple V. Можно значительно расширить их, эффектно используя описанные ранее приемы анимации изображений. В целом надо отметить, что графические возможности Maple 7 дают новый уровень качества графики современных математических систем, о котором с десяток лет тому назад можно было только мечтать.
Рис. 12.49. Построение сложных фигур, заданных импликативными функциями
Расширенная техника анимации
Анимирование разложения импульса в ряд Фурье
Анимирование изображений является одним из самых мощных средств визуализации результатов моделирования тех иди иных зависимостей или явлений.
Порою изменение во времени одного из параметров зависимости дает наглядное представление о его математической или физической сути.
Здесь мы расширим представление об анимации и рассмотрим не вполне обычный пример — наблюдение в динамике за гармоническим синтезом некоторой произвольной функции /(х) на отрезке изменения х от 0 до 1. Значения функции /(х) могут быть одного знака или разных знаков. В этом примере можно наблюдать в динамике синтез заданной функции рядом Фурье с ограниченным числом синусных членов (гармоник) — до 1,2, З...Л^. На рис. 12.50 представлен документ, реализующий такое разложение и затем синтез для пилообразного линейно нарастающего импульса, описываемого выражением /(х) = -1 + 2 * х. На графике строится исходная функция и результат ее синтеза в динамике анимации.
Рис. 12.50. Один из первых стоп-кадров анимации разложения импульса в ряд Фурье
Рисунок 12.51 показывает завершающий стоп-кадр анимации, когда число гармоник N равно 30. Нетрудно заметить, что такое число гармоник в целом неплохо описывает большую часть импульса, хотя в его начале и в конце все еще заметны сильные отклонения.
Для /(х) = 1 строится приближение для однополярного импульса с длительностью 1 и амплитудой 1, при /(х) = х — приближение для пилообразного линейно
нарастающего импульса, при Дх) = х^З — приближение для нарастающего по параболе импульса, при /(х) = signum(.r-l/2) — приближение для симметричного прямоугольного импульса-меандра и т. д. Фактически можно наблюдать анимационную картину изменения формы импульса по мере увеличения числа используемых для синтеза гармоник. Выбор используемого числа гармоник осуществляет амплитудный селектор — функция af(t,k), основанная на применении функции Хевисайда.
Рис. 12.51. Второй (завершающий) кадр анимации
Самым интересным в этом примере оказывается наблюдение за зарождением и эволюцией эффекта Гиббса — так называют волнообразные колебания на вершине импульса, связанные с ограничением числа гармоник при синтезе сигнала. С ростом числа гармоник эффект Гиббса не исчезает, просто обусловленные им выбросы вблизи разрывов импульса становятся более кратковременными. Амплитуда импульсов может достигать 18% от амплитуды перепадов сигнала, что сильно ухудшает приближение импульсных сигналов рядами Фурье и вынуждает математиков разрабатывать особые меры по уменьшению эффекта Гиббса.
Можно ли наблюдать одновременно все фазы анимации? Можно! Для этого достаточно оформить анимационную картину, созданную функцией animate, в виде
отдельного графического объекта, например д, после чего можно вывести все его фазы оператором display. Это и иллюстрирует рис. 12.52. На этот раз задано /(.г) = signum(.r-l/2) и N = 25. Таким образом рассматриваются симметричные прямоугольные импульсы - меандр. У каждого рисунка координатные оси с делениями удалены параметром axes=none.
IQMapteZ IAIouueLmwx-ISeiveiUI'; в®В|
\Д File Edit View Insect FcgmM -. • gptions Window Цй>«sJSf^
[ Фазы представления функции f(x) рядом Фурье при анимации&
J > with(plots): N:=2 5:f:—x->signum(x-l/2):bf:—array(1. .N):£
[> af:=(t/k)->Heaviside(t-k)*(t-k)-Heaviside(t-l-k)*(t-l-k):
"> for k to N do bf[k]:=evalf(2*int(sin(k*Pi*x)*f(x),x=0..1))
od:ts:=(x,t)->sum(af(t,n)*bf[n]*sin<n*Pi*x),n-1..N):
> g:-animate({f(x),ts(x,t) } ,x=0. .1,t=0..N,frames=N,numpoints=10*N,color-black ):display(g,axes=none);
Рис. 12.52. Иллюстрация получения всех кадров анимации двумерного графикаРис. 12.52. Иллюстрация получения всех кадров анимации двумерного графика
Рис. 12.52. Иллюстрация получения всех кадров анимации двумерного графика
Рис. 12.52. Иллюстрация получения всех кадров анимации двумерного графика
Любопытно отметить, что при определенных числах гармоник связанная с колебательными процессами неравномерность вершины импульса резко уменьшается. Наблюдение этого явления и является наиболее интересным и поучительным при просмотре данного примера.
При внимательном просмотре рис. 12.52 заметно, что после некоторого периода установления фазы анимационной картинки практически повторяются. Это связано с известным обстоятельством — установившийся спектр меандра содержит только нечетные гармоники. Поэтому, к примеру, вид спектрального разложения при 22 гармониках будет тот же, что и при 21 гармонике, при 24 гармониках тот же, что при 23, и т. д. Однако эта закономерность проявляется только при установившемся (стационарном) спектре.
Наблюдение кадров анимации поверхности
Наблюдение за развитием поверхности производит на многих (особенно на студентов) большое впечатление. Оно позволяет понять детали создания сложных трехмерных графиков и наглядно представить их математическую сущность. Рассмотрим анимацию поверхности на примере рис. 12.18.
Как и для случая анимации двумерного графика, большой интерес представляет построение всех фаз анимации на одном рисунке. Делается это точно так же, как в двумерном случае. Это иллюстрирует рис. 12.53. На нем представлены 8 фаз анимации трехмерной поверхности cos(t*x*y/3), представленной функцией трех переменных t, х и у. При этом изменение первой переменной создает фазы анимации поверхности.
[В Maple 7 - [Anim3dmmws - [Server 11|
■Slffe £* »w (пиЖ Fc®6« -.v-w* gp5W iieto,,,Пример реализации анимации трехмерной фигуры~> with(plots) :~■Slffe £* »w (пиЖ Fc®6« -.v-w* gp5W iieto,,,Пример реализации анимации трехмерной фигуры~> with(plots) :~Рис. 12.53. Фазы анимации трехмерной поверхностиРис. 12.53. Фазы анимации трехмерной поверхности
■Slffe £* »w (пиЖ Fc®6« -.v-w* gp5W iieto,,,
Пример реализации анимации трехмерной фигуры~
> with(plots) :~
■Slffe £* »w (пиЖ Fc®6« -.v-w* gp5W iieto,,,
Пример реализации анимации трехмерной фигуры~
> with(plots) :~
Рис. 12.53. Фазы анимации трехмерной поверхности
Рис. 12.53. Фазы анимации трехмерной поверхности
Применение анимации дает повышенную степень визуализации решений ряда задач, связанных с построением двумерных и трехмерных графиков. Следует отметить, что построение^анимированных графиков требует дополнительных и достаточно существенных затрат оперативной памяти. Поэтому злоупотреблять числом стоп-кадров таких графиков не стоит.
Новая функция для построения стрелок arrow
В пакет plots системы Maple 7 введена новая функция построения стрелок arrow. Она задается в виде arrow(u,[v,]opts) или arrow(U.opts)
Построение стрелок задается одномерными массивами координат начала стрелок и их направления и и v или двумерным массивом U, которые могут быть представлены векторами, списками или множествами. Вид стрелок задается параметром opts, который может иметь значения shape, length, width, head_width, head_length или plane и задает вид стрелок (форму, длину, ширину и т. д.). Детали задания параметров можно найти в справке по данной функции. Рисунок 12.54 дает наглядное представление о ее возможностях.
Рис. 12.54. Построение стрелок с помощью функции arrow
Построение сложных комбинированных графиков
В заключение этой главы рассмотрим построение с помощью системы Maple 7 достаточно сложных комбинированных графиков, содержащих различные графические и текстовые объекты. Пример построения такого графика представлен на рис. 12.55.
Рис. 12.55. Пример построения сложного объекта, состоящего из 8 графических и текстовых объектов
Представленный на рис. 12.55 объект задает построение восьми графических объектов от pl до р8. Среди них цилиндр, две пересекающие его плоскости и иные (в том числе текстовые) объекты. Обратите внимание на способ вывода этих объектов функцией display3d. Этот пример показывает, что с помощью графических программных средств Maple 7 можно строить достаточно замысловатые графики, которые могут использоваться для визуализации тех или иных геометрических и иных объектов/
Что нового мы узнали?
В этом уроке мы научились:
О Пользоваться графикой пакета plots.
О Пользоваться техникой анимации графиков пакета plots.
О Применять графику пакета plottools.
О Использовать расширенные средства графической визуализации.
О Использовать расширенную технику создания графической анимации.
О Использовать новую функцию Maple 7 для построения стрелок.
О Строить сложные комбинированные графики.
Ш) урокШ) урок
Ш) урок
Ш) урок
Решениедифференциальныхуравнений
Основная функция dsolve
Решение дифференциальных уравнений первого порядка
Решение дифференциальных уравнений второго порядка
Решение систем дифференциальных уравнений
Численное решение дифференциальных уравнений
Дифференциальные уравненияс кусочными функциями
Структура неявного представления дифференциальных уравнений DESol
Инструментальный пакет решения дифференциальных уравнений DEtools
Графическое представление решений дифференциальных уравнений
Углубленный анализ решений
дифференциальных уравнений
Основные средства решения дифференциальных уравнений
Основная функция dsolve
Важное место в математических расчетах занимает решение дифференциальных уравнений. К нему, в частности, обычно относится анализ поведения различных систем во времени (анализ динамики), а также вычисление различных полей (тяготения, электрических'зарядов и т. д.). Трудно переоценить роль дифференциальных уравнений в моделировании физических и технических объектов и систем.
Maple 7 позволяет решать одиночные дифференциальные уравнения и системы дифференциальных уравнений как аналитически, так и в численном виде. Разработчиками системы объявлено о существенном расширении средств решения дифференциальных уравнений и о повышении их надежности в смысле нахождения решений для большинства классов дифференциальных уравнений. Поэтому данный урок целиком посвящен решению уравнений данного класса. Для решения системы простых дифференциальных уравнений (задача Коши) используется функция dsolve в разных формах записи:
dsolve(ODE)
dsolve(ODE. у(х). extra_args)
dsolve({ODE. ICs). y(x). extra_args) dsolve({sysODE. ICs}, {funcs}extra_args)
Здесь ODE — одно обыкновенное дифференциальное уравнение или система из дифференциальных уравнений первого порядка с указанием начальных условий, у(х) — функция одной переменной, Ies — выражение, задающее начальные условия, {sysODE} —множество дифференциальных уравнений, {funcs} —множество неопределенных функций, extra_argument — опция, задающая тип решения.
Параметр extra_argument задает класс решаемых уравнений. Отметим основные значения этого параметра:
О exact — аналитическое решение (принято по умолчанию);
О explicit — решение в явном виде;
О system — решение системы дифференциальных уравнений;
О ICs — решение системы дифференциальных уравнений с заданными начальными условиями;
О formal series — решение в форме степенного многочлена;
О integral transform — решение на основе интегральных преобразований Лапласа, Фурье и др.;
О series — решение в виде ряда с порядком, указываемым значением переменной Order;
О numeric — решение в численном виде.
Для решения задачи Коши в параметры dsolve надо включать начальные условия, а при решении краевых задач — краевые условия. Если Maple способна найти решение при числе начальных или краевых условий меньшего порядка системы, то в решении будут появляться неопределенные константы вида _С1, _С2 и т. д. Они же могут быть при аналитическом решении системы, когда начальные условия не заданы. Если решение найдено в неявном виде, то в нем появится параметр _Т.
По умолчанию функция dsolve автоматически выбирает наиболее подходящий метод решения дифференциальных уравнений. Однако в параметрах функции dsolve в квадратных скобках можно указать предпочтительный метод решения дифференциальных уравнений. Допустимы следующие методы:
quadraturelinearBernoulli-separable
1nverse_lInearhomogeneousChiniI1n_sym
exactAbelpot_sym
Информацию о каждом методе можно получить, используя команду ?dsolve, method и указав в ней конкретный метод. Например, команда ?dsolve, 1 inear вызовет появление страницы справочной системы с подробным описанием линейного метода решения дифференциальных уравнений.
Производные при записи дифференциальных уравнений могут задаваться функцией diff или оператором D. Выражение sysODE должно иметь структуру множества и содержать помимо самой системы уравнений их начальные условия.
Решение ОДУ первого порядка
Начнем рассмотрение практических примеров с решения одиночных обыкновенных дифференциальных уравнений (ОДУ) первого порядка:
> dsolve(diff(y(x),x)-a*x=0,y(x)):
у(х) = |«х2 + _С1
> dsolve(diff(у(х),х)-у(х)=ехр(-х),у(х));
<-2.г) А'
У(х) = ~2е*-С Г
> dsolve(diff(y(x),x)-y(x)=sin(x)*x.y(x)):
у(х) = -1 cos(x) ^ ~ ^ cos(x) - ^ sin(x) х + е* _С1
Следующие примеры иллюстрируют возможность решения одного и того же дифференциального уравнения ode_L разными методами:
ode_L := sin(x)*diff(y(x),x)-cos(x)*y(x)-0;
/ QX
ode_L := sin(x) ^ y(x) - cos(x) y(x) = 0
dsolve(ode_L. [linear], uselnt):
( fcos(.v) ) sm(.v) y(x) = _C7eu 1 > valued);
y(x) = Cl sin(x)
dsolve(ode_L, [separable], uselnt);
valued);
ln(sin(x)) - ln(y(x)) + _C1 = 0
mu := intfactor(odeL):
p := intfactoi^sin(x)^^ y(x)^ - cos(x) y(x) = 0
dsolve( mu*ode_L, [exact], uselnt):
Объем данной книги не позволяет остановиться на всех тонкостях аналитического решения дифференциальных уравнений. Множество примеров такого решения дано в справочной базе данных Maple 7. К ней нужно обратиться в случае, если решение того или иного дифференциального уравнения выходит за рамки учебного курса.
Решение дифференциальных уравнений второго порядка
Здесь видно, что для задания производной используется ранее рассмотренная функция diff. С помощью символа $ можно задать производную более высокого порядка. Ниже представлено решение двух дифференциальных уравнений второго порядка:
> dsolye(diff(y(x),x$2)-diff(y(x),x)=sin(x).y(x)): у(х) = - ^ sin(x) + ^ cos(x) + е* _С1 + _С2
> de:-m*diff(у(х),х$2)-k*di ff(у(х),х);
de ::de ::f d2JI dx If d2JI dx I^y(^)j^y(^)j
de ::
de ::
f d2J
I dx I
f d2J
I dx I
^y(^)j
^y(^)j
> ух0:-у(0)=-0.у(1)=1: ухО := у(0) = 0, у( 1) = 1
> dsolve((de.yxO},y(x)):
Обратите внимание на решение второго из этих уравнений. Здесь использован прием визуализации исходного дифференциального уравнения, и оно задается значением переменной de. Кроме того, и это особенно важно, решение осуществляется при заданных начальных условиях. Именно поэтому в решении отсутствуют произвольные постоянные вида _CN.
Решение систем дифференциальных уравнений
На рис. 13.1 представлено решение системы из двух дифференциальных уравнений различными методами — в явном виде, в виде разложения в ряд и с использованием преобразования Лапласа. Здесь следует отметить, что решение в виде ряда является приближенным. Поэтому полученные в данном случае аналитические выражения отличаются от явного решения и решения с применением преобразования Лапласа.
^Ы1М- Решение системы из двух дйфферрнциальных уравнений различными методеми
Следует отметить, что, несмотря на обширные возможности Maple 7 в области аналитического решения дифференциальных уравнений, оно возможно далеко не всегда. Поэтому, если не удается получить такое решение, полезно попытаться найти решение в численном виде.
Численное решение дифференциальных уравнений
Большинство нелинейных дифференциальных уравнений не имеет аналитического решения. Кроме того, часто аналитическое решение и не нужно, но требуется получить ответ в виде графических зависимостей.
В таких случаях для решения дифференциальных уравнений в численном виде используется функция dsolve с параметром numeric или type=numeric. При этом решение возвращается в виде специальной процедуры, по умолчанию реализующей широко известный метод решения дифференциальных уравнений Рунге—Кутта—Фелберга порядков 4 и 5 (в зависимости от условий адаптации решения к скорости его изменения). Эта процедура называется rkf45 и символически выводится (без тела) при попытке решения заданной системы дифференциальных уравнений. Последнее достаточно наглядно иллюстрирует рис. 13.2.
№ЗМар1е]^"и)<^^
Г Решение системы из двух дифференциальных уравнений#
численным методом7
sys :- diff(y(x) ,х)-2*z(х)-у(х)-х, diff(z(х),х)-у(х); fens :- (у(х), z(x)}: F: =dsolve (( sys ,y(0)=0,z(0)— 1), fens , numeric) ; 33
sys " T-yPO * 2 z(x) - y(x) - x, — z(x) - y(x)8x3x
F := proc(nk/45_x) ... end proc > F<2) ;
[x - 2, y(x) - 2.94775566255468746, z(x) - 3.72065020474031360] "> plots[odeplot](F, [x,z(x) ] , 0 . .2.5,labels-[x,z],color-black);
Рис. 13.2. Решение системы дифференциальных уравненийчисленным методом rkf45 с выводом графика решения
Указанная процедура возвращает особый тип данных, позволяющих найти решение в любой точке или построить график решения (или решений). Для графического отображения Maple 7 предлагает ряд возможностей, и одна из них представлена на рис. 13.2 — см. последнюю строку ввода. При этом используется функция plot[odeplot] из пакета odeplot, предназначенного для визуализации решений дифференциальных уравнений.
В список параметров функции dsolve можно явным образом включить указание на метод решения, например опция mathod=dverk78 задает решение непрерывным методом Рунге—Кутта порядка 7 или 8. Вообще говоря, численное решение дифференциальных уравнении можно производить одним из следующих методов:
О classical — одна из восьми версий классического метода, используемого по умолчанию;
О rkf45 — метод Рунге—Кутта 4 или 5 порядка, модифицированный Фелбергом;
О dverk78 — непрерывный метод Рунге—Кутта порядка 7 или 8;
О gear — одна из двух версий одношагового экстраполяционного метода Гира; О mgear — одна из трех версий многошагового эктраполяционного метода Гира; О 1 sode — одна из восьми версий Ливенморского решателя жестких дифференциальных уравнений;
О taylorseries — метод разложения в ряд Тейлора.
Обилие используемых методов расширяет возможности решения дифференциальных уравнений в численном виде. Большинство пользователей Maple 7 вполне устроит автоматический выбор метода решения по умолчанию. Однако в сложных случаях возможна прямая установка одного из указанных выше методов. С деталями реализации методов можно ознакомиться по справочной системе. С помощью параметра 'abserr'=aerr можно задать величину абсолютной погрешности решения, а с помощью 'minerr’=mine — минимальную величину погрешности. В большинстве случаев эти величины, заданные по умолчанию, оказываются приемлемыми для расчетов.
Maple 7 реализует адаптируемые к ходу решения методы, при которых шаг решения h автоматически меняется, подстраиваясь под условия решения. Так, если прогнозируемая погрешность решения становится больше заданной, шаг решения автоматически уменьшается. Более того, система Maple способна автоматически выбирать наиболее подходящий для решаемой задачи метод решения.
Еще один пример решения системы дифференциальных уравнений представлен на рис. 13.3. Здесь на одном графике представлены зависимости у(.г) и z(x), представляющие полное решение заданной системы. При этом процедура имеет особый вид 1 i stprocedure и для преобразования списка выходных данных в векторы решения Y и Z используется функция subs.
Для решения достаточно 'сложных задач полезны специальная структура DESol для решения дифференциальных уравнений и инструментальный пакет DEtool s, содержащий самые изысканные средства для графической визуализации результатов решения дифференциальных уравнений. Эти средства мы более подробно рассмотрим в дальнейшем.
Рис. 13.3. Решение системы дифференциальных уравнений численным методом с выводом всех графиков искомых зависимостейРис. 13.3. Решение системы дифференциальных уравнений численным методом с выводом всех графиков искомых зависимостейВНИМАНИЕВНИМАНИЕПри решении некоторых задач физики и радиоэлектроники выбираемый по умолчанию шаг изменения аргумента х или t - h может привести к неустойчивости решения. Неустойчивости можно избежать рядом способов. Можно, например, нормировать уравнения, избегая необходимости использования малого шага. А можно задать заведомо малый шаг. Например, при method-classical для этого служит параметр stepsize=h. Примеры такого подхода будут даны в уроке 17 (см. Решение физических задач и моделирование цепи на туннельном диоде).
Рис. 13.3. Решение системы дифференциальных уравнений численным методом с выводом всех графиков искомых зависимостей
Рис. 13.3. Решение системы дифференциальных уравнений численным методом с выводом всех графиков искомых зависимостей
ВНИМАНИЕ
ВНИМАНИЕ
Дифференциальные уравнения с кусочными функциями
Функции кусочного типа широко используются при математическом моделировании различных физических объектов и систем. В основе такого моделирования обычно лежит решение дифференциальных уравнений, описывающих поведение объектов и систем. Покажем возможность применения кусочных функций для решения дифференциальных уравнений.
Ниже представлено задание дифференциального уравнения первого порядка, содержащего кусочную функцию:
е5:= ^^ г {е5:= ^^ г {(1/2х) ео(1/2х) еох < х2 - 3 otherwiseх < х2 - 3 otherwiseУ(х)У(х)>eq := diff(y(x), х)+ piecewise(x<xA2-3, ехр(х/2))*у(х);
е5:= ^^ г {
е5:= ^^ г {
(1/2х) е
о
(1/2х) е
о
х < х2 - 3 otherwise
х < х2 - 3 otherwise
У(х)
У(х)
Используя функцию dsolve, выполним решение этого дифференциального уравнения: >dsolve(eq, у(х));
, , <1/2v>
(—2е
С] е
( 1/4 - 1/4 V 13 )
у(х) =у(х) =<-2е■
у(х) =
у(х) =
С/ е
( 1/4 - 1/4-/Тз )( 1/2 л )(1/4+ I/4J13)
С1е"2е"2е+2с
Нетрудно заметить, что результат получен также в форме кусочной функции, полностью определяющей решение на трех интервалах изменения х.
Приведем пример решения дифференциального уравнения второго порядка с кусочной функцией:
>eq := d1ff(y(x), х$2) + x*diff(y(x), х) + у(х) = piecewise(x > 0, 1);
( д2 )/ д Л10 <х
;У(х) +х д-у(х) +у(х)= {.
Эх* J I ох )0 otherwise
>dsolve(eq, у(х)); у(л-) =
-\^х | С1+см,2,:) С2х<0
-ШхА C\+eHi-?) C2 + ^ln?V,1$h0<x
В конце этого раздела приведем пример решения нелинейного дифференциального уравнения Риккати с кусочной функцией:
>eq := diff(y(x). x)=piecew1se(x>0, х)*у(х)"2:
д ( х {од ( х {ои Л / \2 otherwiseи Л / \2 otherwise
д ( х {о
д ( х {о
и Л / \2 otherwise
и Л / \2 otherwise
>dsolve({ у(0) = 1, eq }, у(х)):
В ряде случаев желательна проверка решения дифференциальных уравнений. Ниже показано, как она делается для последнего уравнения:
>simplify( eval(subs(X, eq))/:
0
х < 0
'0
х<0
(х2-2)
0 <х =
(V-2)
0 <х
ПРИМЕЧАНИЕПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Как видно из приведенных достаточно простых и наглядных примеров, результаты решения дифференциальных уравнений с кусочными функциями могут быть довольно громоздкими. Это, однако, не мешает эффективному применению функций данного класса.
Структура неявного представления дифференциальных уравнений — DESol
В ряде случаев иметь явное представление дифференциальных уравнений нецелесообразно. Для неявного их представления в Maple 7 введена специальная структура:
DESol(expr.vars)
где exprs — выражение для исходной системы дифференциальных уравнений, vans — заданный в виде опции список переменных (или одна переменная).
Структура DESol образует некоторый объект, дающий представление о дифференциальных уравнениях, чем-то напоминающее RootOf. С этим объектом можно обращаться, как с функцией, то есть его можно интегрировать, дифференцировать, получать разложение в ряд и вычислять численными методами. На рис. 13.4 показаны примеры применения структуры DESol.
Рис. 13.4. Примеры применения структуры DESolРис. 13.4. Примеры применения структуры DESolОбратите внимание на последний пример — в нем структура DESol использована для получения решения дифференциального уравнения в виде степенного ряда.
Рис. 13.4. Примеры применения структуры DESol
Рис. 13.4. Примеры применения структуры DESol
Инструментальный пакет решения дифференциальных уравнений DEtools
Средства пакета DEtools
Решение дифференциальных уравнений самых различных типов — одно из достоинств системы Maple 7. Пакет DEtools предоставляет ряд полезных функций для решения дифференциальных уравнений и систем с такими уравнениями:
> with(DEtools):
Warning, the name adjoint has been redefined
[DEnormal, DEplot, DEplot 3d, DEplot_polygon, DFactor, DFactorLCLM, DFactorsols, Dchangevar, GCRD, LCLM, PDEchangecoords, RiemannPsols, Xchange, Xcommutator, Xgauge, abelsol, adjoint, autonomous, bcrnoullisol, buildsol, buildsym, canoni, caseplot, casesplit, checkrank, chinisoi, clairautsol, constcoeffsols, convertAlg, convertsys, dalembertsol, dcoeffs, de2diffop, dfieldpiot, diffop2de, dsuhs,
eigenring, endomorphism _charpoly, eqttinv, eta_k, eulersols, exactsol, expsols, exterior_power,firint, firtest,.formal sol, gen exp, generateJc, genhomosol, gensys, hamilton_eqs, indicialeq, infgen, initialdata, integrate sols, intfactor, invariants, kovacicsols, leftdivision, liesol, linejnt, linearsol, malrixDE, matrix riccati, moser_reduce, muchange, mult, mutest, newton_polygon, normalG2, odeadvisor, odepde, parametricsol, phaseportrait, poincare, polysols, ratsols, redode, reduceOrder, reduceorder, regularjtarts, regularsp, remove_RootOf, riccati_system, riccatisol, rifsimp, rightdivision, rtaylor, separablesol, solve_group, superj'educe, symgen, symmetric_power, symmetric_product, symtest, transinv, translate, untranslate, varparam, zoom]
Этот пакет дает самые изысканные средства для аналитического и численного решения дифференциальных уравнений и систем с ними. По сравнению с версией Maple V R5 число функций данного пакета в Maple 7 возросло в несколько раз. Многие графические функции пакета DEtools были уже описаны. Ниже приводятся полные наименования тех функций, которые есть в реализациях R5, 6 и 7 системы Maple:
О DEnormal — возвращает нормализованную форму дифференциальных уравнений;
О DEplot — строит графики решения дифференциальных уравнений;
О DEpl ot3d — строит трехмерные графики для решения систем дифференциальных уравнений;
Q Dchangevar — изменение переменных в дифференциальных уравнениях;
О PDEchangecoords — изменение координатных систем для дифференциальных уравнений в частных производных;
О PDEplot — построение графиков решения дифференциальных уравнений в частных производных;
О autonomous — тестирует дифференциальные уравнения на автономность;
О convertAlg — возвращает список коэффициентов для дифференциальных уравнений;
О convertsys — преобразует систему дифференциальных уравнений в систему одиночных уравнений;■
О dfieldplot — строит график решения дифференциальных уравнений в виде векторного поля;
О indicialeq — преобразует дифференциальные уравнения в полиномиальные;
О phaseportrait — строит график решения дифференциальных уравнений в форме фазового портрета;
О reduceOrder — понижает порядок дифференциальных уравнений;
О regularsp — вычисляет регулярные особые точки для дифференциальных уравнений второго порядка;
О translate — преобразует дифференциальные уравнения в список операторов;
О untranslate — преобразует список операторов в дифференциальные уравнения;
О varparam — находит общее решение дифференциальных уравнений методом вариации параметров.
Применение этих функций гарантирует совместимость документов реализаций Maple R5, 6 и 7.
Основные функции пакета DEtools
Ввиду обилия функций пакета DEtools дать их полное описание в данной книге не представляется возможным. Поэтому выборочно рассмотрим наиболее важные функции этого пакета. Функция:
autonomous(des.vars.Ivar)
тестирует дифференциальное уравнение (или систему) des. Ее параметрами помимо des являются независимая переменная i var и зависимая переменная dvar. Следующие примеры поясняют применение этой функции:
> autonomous(s1n(z(t)-z(t)'2)*(D@@4)(z)(t)-cos(z(t))-5,z,t); true
DE:=diff(x(s),s)-x(s)*cos(arctan(x(s)))=arctan(s):
autonomous(DE,(x).s):
false
Функция Dchangevar используется для обеспечения замен (подстановок) в дифференциальных уравнениях:
Dchangevar(trans. deqns. c_ivar, n_ivar)
Dchangevar(tranl. tran2 tranN. deqns. c_1var. njivar)
В первом случае trans — список или множество уравнений, которые подставляются в дифференциальное уравнение, список или множество дифференциальных уравнений deqns. При этом c_ivar — имя текущей переменной, n Ivar — имя новой переменной (его задавать необязательно). Во второй форме для подстановки используются уравнения tranl, tran2, ....
Ниже представлены примеры применения функции Dchangevar:
Преобразование 1-го типа
▻Dchangevar(m(x)=l(x)*sin(x),n(x)=k(x).[D(m)(x)=m(x),(D@@2)(n)(x)=
n(x)*2],x);
[D(Z)(.r) sin(.v) + l(.r) cos(.r) = l(x) sin(.r), (D<2))(A')(x) = k(.r)2]'
>Dchangevar(c=d,e=s1n(f),{D(c).(D@@2)(e)}.dummy);
[D(</), (D<2l)(sin(/))]
Преобразование 2-го типа
Dchangevar(t=arctan(tau),diff(x(t),t)=sin(t).t.tau);
D(.r)(arctan(t)) = sin(arctan(t))
Dchangevar(x=sin(cos(t)),d1ff(y(x),x,x,x),x,t);
(D(3’)(y)(sin(cos(r)))
Преобразование 3-го типа
Dchangevar(x(t)=L*y(phi),d1ff(x(t),t$3) = tan(t).t.phi);
— Лу(ф) = 1ап(ф)
Эф
Дополнительные примеры
Dchangevar({t=T*phi,x(t)=L*y(phi)),diff(x(t). t$3)=tan(t).t,phi);
^ = (ап(Гф)
7
de := diff(y(x),x$2) = y(x)*diff(y(x),x)/x;
32y(-r)(|:yU))
de := —- y(x) =**-
дх2 У
> Dchangevar({x=exp(t),y(x)=Y(t)}.de.x.t);
Следует отметить, что подстановки являются мощным средством решения дифференциальных уравнений. Нередки случаи, когда дифференциальное уравнение не решается без их применения. Дополнительные примеры использования подстановок можно найти в справочной базе данных системы Maple 7.
Функция нормализации ОДУ DEnormal синтаксически записывается в виде: DEnormal(des. 1 van.dvar)
где des — система дифференциальных уравнений, ivar — независимая переменная и dvar — зависимая переменная. Применение этой функции поясняют следующие примеры:
DE := xA3*y(x)+xA2*(x-l)*D(y)(x)+50*xA3*(D@@2)(y)(x)=x*s1n(x);
DE := х3 у(л') + х2 (х - 1) D(y)(x) + 50 х3 (D1 ^(уХх) =х sin(x)
DE2 := convertAlg(DE,у(х)):
DE2 := [[х3, xJ -х2, 50 х3],x sin(x)]
DEnormal(DE.х,у(х));
х у(х) + (х - 1f у у(х)) + 50 х f ™ у(х) ] = / I ох" I
DEnormal(DE2,x):
Г Г 11 sinWl
[х, х - 1, 50 х—-—
Функция convertAlg(des,dvar) возвращает список коэффициентов формы системы дифференциальных уравнений des с зависимыми переменными dvar. Это поясняют следующие примеры:
А -.= diff(y(x),x)*sin(x)-diff(y(x),x)-tan(x)*y(x)=5;
А ^У^А^sin(A') ~^ у^х^~ tanO') у(л') = 5
convertAlд(А,у(х)):
[[-tan(x), sin(x) - 1 ], 5]
В : = (D@@2)(у)(x)*cos(x) + (D@@2)(y)(x)*5*xA2:
В ;= (D,2)X.vXx) cos(x) + 5 (D<2,XyX-v)x2
convertAlg(B,y(x)):
[ [0, 0, cos(x) + 5 x2], 0]
Для изменения переменных в системах дифференциальных уравнений используется функция convertsys:
convertsystdeqns. inlts, vars. 1var. yvec. ypvec)
Здесь deqns — одно дифференциальное уравнение или список (множество), представляющие систему дифференциальных уравнений первого порядка, inlts — множество или список начальных условий, vars — зависимые переменные, ivar — независимые переменные, yvec — вектор решений и ypvec — вектор производных.
Функция:-
1ndicialeq(des,ivar.alpha.dvar)
обеспечивает полиномиальное представление для линейного однородного дифференциального уравнения второго порядка des. Параметр alpha намечает точку сингулярности.
Y :- (2*xA2+5*xA3)*d1ff(y(x).x,x)+(5*x-xA2)*diff(y(x).x)+(l+x)*y(x)-0:
Y:- convertAlg( Y. у(х) ):
К := [ [ 1 + х, 5 х - х2, 2 х2 + 5 х3 ], 0 ] > indicialeq( Y. х, -2/5, у(х) );
indicialeqC Y, х, 0, у(х) );
31 „
х‘ + -х + - = 0
22
indicialeqf Y. х. 1, у(х) );
х2 - х = О
Функция:
reduceOrdertdes.dvar.partsol, solutionForm)
обеспечивает понижение порядка дифференциального уравнения des (или системы уравнений, представленных списком или множеством) при зависимых переменных dvar, частном решении partsol (или списке частных решений) и флаге solutionForm, показывающем, что решение происходит явным методом (explicitly). Для демонстрации действия этой функции воспользуемся примером из ее справочной страницы:
de := diff(y(x),х$3) - 6*diff(y(x),х$2) + ll*diff(y(x),х) - б*у(х):
- 6 у(х)- 6 у(х)Г д2/ д
- 6 у(х)
- 6 у(х)
de := —3 уМ - 6 —; у(х) + 11 д- I dx I 1дх*
sol := ехр(х); sol := ет
reduceOrder( de, у(х), sol):
f ^ywl-3|^y(x)) + 2y(x)
I ox I)
reduceOrder( de, y(x), sol, basis);
e , e , - e
Функция:
regularsp(des. Ivar.dvar)
вычисляет регулярные особые (сингулярные) точки для дифференциального уравнения второго порядка или системы дифференциальных уравнений des. Следующий пример поясняет применение данной функции:
coefs := [21*(х*2 - х + 1),0,100*х"2*(х-1Г2]:
regularsp(coefs. х);
[0,1]
Еще две функции пакета 'DEtool s:
translate(des,ivar.pt.dvar)
untranslate(des.1var.pt.dvar)
выполняют особую операцию трансляции дифференциального уравнения (или списка дифференциальных уравнений) из центрированного относительно 0 в цен-
трированное относительно 1 и наоборот. С деталями этого специфического процесса заинтересованный читатель может познакомиться в справочной базе данных.
И еще одна полезная функция пакета:
varparam(sols.v.lvar)
находит общее решение дифференциального уравнения (или системы уравнений) sols методом вариации параметров. Параметр v задает правую часть уравнения; если он равен 0, ищется только частичное решение:
> varparam( [ul(x), u2(x)J, g(x), x);
_СХ ul(x) + _С2 и2(т) +_СХ ul(x) + _С2 и2(т) +Га "^"Уаa A “'M +u1(t) i u2(x) | - u2(x) | ul(.r) |dxax
_СХ ul(x) + _С2 и2(т) +
_СХ ul(x) + _С2 и2(т) +
dx u2(x)dx u2(x)ul(x)g(x)
dx u2(x)
dx u2(x)
ul(x) u2(x)) - u2(x) uI(a-)lII С/Л
Более подробную информацию об этих функциях читатель найдет в их справочных страницах, а также в информационном документе detools.mws, содержащем систематизированное описание пакета DEtools с многочисленными примерами его применения.
Графическое представление решений дифференциальных уравнений
Применение функции odeplot пакета plots
Для обычного графического представления результатов решения дифференциальных уравнений может использоваться функция odepl ot из описанного выше пакета plots. Эта функция используется в следующем виде:
odeplot(s.vars.r.o)
где s — запись (в выходной форме) дифференциального уравнения или системы дифференциальных уравнений, решаемых численно функцией dsolve, vars — переменные, г — параметр, задающий пределы решения (например, а. .Ь), и о — необязательные дополнительные опции.
На рис. 13.5 представлен пример решения одиночного дифференциального уравнения с выводом решения г/(х) с помощью функции odeplot.
В этом примере решается дифференциальное уравнение:
уЧх) = cos(x2y(x))
при 2/(0) = 2 и х, меняющемся от -5 до 5. Левая часть уравнения записана с помощью функции вычисления производной diff. Результатом построения является график решения у(х).
В другом примере (рис. 13.6) представлено решение системы из двух нелинейных дифференциальных уравнений. Здесь с помощью функции odeplot строятся графики двух функций — у(х) и z(x).
В этом примере решается система:
у'(х) = z(x).
z'(x) = 3 sin(y(x))
при начальных условиях z/(0) = 0, z(0) = 1 и х, меняющемся от -4 до 4 при числе точек решения, равном 25.
Иногда решение системы из двух дифференциальных уравнений (или одного дифференциального уравнения второго порядка) представляется в виде фазового портрета — при этом по осям графика откладываются значения у(х) и z(x) при изменении х в определенных пределах. Рисунок 13.7 демонстрирует построение фазового портрета для системы, представленной выше.
Обычное решение, как правило, более наглядно, чем фазовый портрет решения. Однако для специалистов (например, в теории колебаний) фазовый портрет порою дает больше информации, чем обычное решение. Он более трудоемок для построения, поэтому возможность Maple 7 быстро строить фазовые портреты трудно переоценить.
Рис. 13.5. Пример решения одиночного дифференциального уравнения
iQMapie? (0depl2 mws -[Server 1ЦiQMapie? (0depl2 mws -[Server 1Ц
iQMapie? (0depl2 mws -[Server 1Ц
iQMapie? (0depl2 mws -[Server 1Ц
ф э*"ЕЛ"зл *nm w«*i'^’W W^SW3V"^,',_'!"'~ 1 Т" ^vt *^'" ” *' ” '-ivfxl Решение системы из двух дифференциальных уравнений#
с выводом графиков решения~
> with(plots): sys := diff(у(х),х)=z(х),diff (z(х),х)=3*sin(у(х) ) :i
fens := (у(х), z(x)): р:= dsolve (( sys ,у (0)-0 , z (0 )==1), fens , type=numeric) : odeplot(р, [[х,у(х)], [x,z(x)]],-4.. 4,numpoints-25,color=black);
Рис. 13.6. Пример решения системы из двух дифференциальных уравнений
Рис. 13.7. Представление решения системы дифференциальных уравнений в виде фазового портрета
Функция DEplot из пакета DEtools
Специально для решения и визуализации решений дифференциальных уравнений и систем с дифференциальными уравнениями служит инструментальный пакет DEtools. В него входит ряд функций для построения наиболее сложных и изысканных графиков решения дифференциальных уравнений. Основной из этих функций является функция DEplot.
Функция DEplot может записываться в нескольких формах:
DEplot(deqns. vans, trange. eqns)
DEplot(deqns, vars, trange. 1n1ts. eqns)
DEplot(deqns. vars. trange. yrange. xrange. eqns)
DEp)ot(deqns, vars. trange, Inits. xrange. yrange. eqns)
Здесь deqns — список или множество, содержащее систему дифференциальных уравнений первого порядка или одиночное уравнение любого порядка; vars — зависимая переменная или список либо множество зависимых переменных; trange — область изменения независимой переменной t; inits — начальные условия для решения; yrange — область изменения для первой зависимой переменной, xrange — область изменения для второй зависимой переменной; eqns — опция, записываемая в виде keyword=value. Замена имен переменных другими в данном случае недопустима.
Эта функция обеспечивает численное решение дифференциальных уравнений или их систем при одной независимой переменной t и строит графики решения. Для автономных систем эти графики строятся в виде векторного поля направлений, а для неавтономных систем — только в виде кривых решения. По умолчанию реализуется метод Рунге—Кутта 4-го порядка, что соответствует опции method=classical[rk4],
С функцией DEplot могут использоваться следующие параметры:
О arrows = type — тип стрелки векторного поля ('SMALL', 'MEDIUM', 'LARGE', 'LINE' или 'NONE');
О colour, color = arrowcolour — цвет стрелок (задается 7 способами);
О dirgrid = [integer,integer] — число линий сетки (по умолчанию [20, 20]);
О iterations = integer — количество итераций, представленное целым числом;
О linecolor, linecolor = line_info — цвет линии (задается 5 способами);
О method='rk4' — задает метод решения (’eul er', 'backeuler', 'impeuler' или 'rk4');
О obsrange = TRUE, FALSE — задает (при TRUE) прерывание вычислений, если кривая решения выходит из области обзора;
О scene = [name, name] — задает имена зависимых переменных, для которых строится график;
О stepsize = h — шаг решения, по умолчанию равный abs((b-a))/20 и представленный вещественным значением.
На рис. 13.8 показано решение системы дифференциальных уравнений:
XV) = х(0 (I -Х0),
У(О = о,зхо «0-1),
описывающих модель Лотки—Вольтерра при заданных в документе изменениях t, x(f) и y(t). Решение представлено в виде векторного поля, стрелки которого являются касательными к кривым решения (сами эти кривые не строятся). Обратите внимание на функциональную закраску стрелок векторного поля, делающую решение особенно наглядным (правда, лишь на экране цветного дисплея, а не на страницах книги).
Рис. 13.8. Решение системы дифференциальных уравнений Лотки—Вольтерра с выводом в виде графика векторного поля
Еще интересней вариант графиков, представленный на рис. 13.9. Здесь помимо векторного поля несколько иного стиля построены фазовые портреты решения с использованием функциональной закраски их линий. Фазовые портреты построены для двух наборов начальных условий: д(0) = у(0) = 1,2 и х(0) = 1 иг/(0) = 0,7. •
Следует отметить, что функция DEplot может обращаться к другим функциям пакета DEtool s для обеспечения специальных графических возможностей, таких как построение векторного поля или фазового портрета решения.
Рис. 13.9. Пример построения двух фазовых портретов на фоне векторного поля
Функция DEpLot3d из пакета DEtools
В ряде случаев решение систем дифференциальных уравнений удобно представлять в виде пространственных кривых — например, линий равного уровня или просто в виде кривых в пространстве. Для этого служит функция DEplot3d:
DEplot3d(deqns, vars. trange. inltset. о)
DEplot3d(deqns. vans, trange. yrange. xrange. inltset. o)
Назначение параметров этой функции аналогично указанному для функции DEpl ot.
Рисунок 13.10 поясняет применение функции DEPlot3d для решения системы из двух дифференциальных уравнений с выводом фазового портрета колебаний в виде параметрически заданной зависимости x(f), y(t). В данном случае фазовый портрет строится на плоскости по типу построения графиков линий равной высоты.
Другой пример (рис. 13.11) показывает решение системы из двух дифференциальных уравнений с построением объемного фазового портрета. В этом случае используется трехмерная координатная система и графические построения соответствуют параметрическим зависимостям x(t), z/(t) и z(t). Вид фазового портрета напоминает разворачивающуюся в пространстве объемную спираль.
Функциональная окраска делает график пикантным, что, увы, теряется при черно-белом воспроизведении графика.
QMapleZ - (DetooO mws -(Server 1Ц^OIE^
^£fe ЕЛ w inwt RW ;?rrf=r>' №**wsW*;№*>. --<<. ‘ .’ ' -V»xi
Построение фазового портрета для решения системы из двух дифференциальных 4
уравнений с выводом фазового портрета функцией DEplot3d5
Г> with(DEtools):
Г> DEplot3d( { diff(x(t), t) = y(t), diff(y(t), t) sin(x(t))
[X(t), y(t)] , t=0..10, [[x(0)=0, y(0)-.5],[x(0)=0, y(0)=l] , [x(0)=0, y(0)=l. 8] , [x(0)=-2*Pi, y(0)-l], [x(0)=2*Pi, y(0)=.5],[x(0)=-2*Pi, y(0)=2.1] , [x(G)-2*Pi, y(0)=-2.1]], stepsize=.2, title™'Pendulum Vibrations', orientation™[0,90], method=classical[abmoulton] , corrections=3, axes==NORMAL, linecolor=black);
Pendulum Vibrations•
Рис. 13.10. Пример решения системы из двух дифференциальных уравнений с помощью функции DEplot3dРис. 13.10. Пример решения системы из двух дифференциальных уравнений с помощью функции DEplot3d
Рис. 13.10. Пример решения системы из двух дифференциальных уравнений с помощью функции DEplot3d
Рис. 13.10. Пример решения системы из двух дифференциальных уравнений с помощью функции DEplot3d
Возможности функции DEpl ot3d позволяют решать системы, состоящие более чем из двух дифференциальных уравнений. Однако в этом случае число решений, представляемых графически, выходит за пределы возможного для трехмерной графики. При этом от пользователя зависит, какие из зависимостей опускаются при построении, а какие строятся.
Функция PDEplot пакета DEtools
Еще одна функция пакета DEtools — DEtools[PDEplot] — служит для построения графиков решения систем с квазилинейными дифференциальными уравнениями первого порядка в частных производных.
Эта функция используется в следующем виде:
PDEplot(pd1ffeq. van. 1_curve. srange. о)
PDEplot(pdiffeq. var. 1_curve, srange. xrange, yrange, urange. o)
Рис. 13.11. Пример решения системы из двух дифференциальных уравнений с построением трехмерного фазового портрета
Здесь помимо упоминавшихся ранее параметров используются следующие: pdiffeq — квазилинейные дифференциальные уравнения первого порядка (PDE), vars — независимая переменная и i_curve — начальные условия для параметрических кривых трехмерной поверхности. Помимо опций, указанных для функции DEplot, здесь могут использоваться следующие опции:
О basechar = TRUE, FALSE, ONLY — устанавливает показ базовых характеристик кривых;
О basecolor, basecolor = b_color — устанавливает цвет базовых характеристик;
О 1 nitcolor, initcolor = i_color — инициализация цветов;
О numchar = integer — задает число отрезков кривых, которое не должно быть меньше 4 (по умолчанию 20);
О numsteps = [integerl, 1nteger2] — задает число шагов интегрирования (по умолчанию [10, 10]).■
Рисунок 13.12 демонстрирует применение функции PDEplot. Этот пример показывает, насколько необычным может быть решение даже простой системы дифференциальных уравнений в частных производных.
Q Maple 7 - (DeloolS mws (Server 1))НИЕ?
^^ Х^ ^tew.. |»М F^Mi, „*'^v.»-"j gpiaxg ,^*wkw &й ^«.* -x »jSjx3
[ Построение графика решения ДУ с помощью функции PDEplot-
> with(PDEtooIs):PDEplot(diff(z(u,v),u)*u*cos(v)-diff(z(ufv), v)*v*surd(u,3) =sin(u-v),z(u,v),[t,sin(t), t/2],t--2*Pi..3*Pi,basechar^true, iterations=2,numchar=40,stepsize-.05,numsteps=[20,20], orientation=[-120,70],style-PATCHCONTOUR):
Рис. 13.12. Пример применения функции PDEplotРис. 13.12. Пример применения функции PDEplot
Рис. 13.12. Пример применения функции PDEplot
Рис. 13.12. Пример применения функции PDEplot
В данном случае решение представлено трехмерной фигурой весьма нерегулярного вида.
Другой пример использования функции PDEplot показан на рис. 13.13. Он иллюстрирует комбинированное построение графиков решения разного типа с применением функциональной закраски, реализуемой по заданной формуле с помощью опции initcolor.
Еще раз отметим, что, к сожалению, рисунки в данной книге не дают представления о цвете выводимого Maple графика. Поэтому наглядность решений, видимых на экране монитора, существенно выше.
Графическая функция dfieldplot
Графическая функция dfieldplot служит для построения поля направления с помощью векторов по результатам решения дифференциальных уравнений. Фактически эта функция как бы входит в функцию DEplot и при необходимости вызывается последней. Но она может использоваться и самостоятельно, что демонстрирует рис. 13.14, на котором показан пример решения следующей системы дифференциальных уравнений: x'(t) =т(£)(1 - y(t)), у'(f) = 0,3 z/(t)(x(Z) - 1).
Q Maple? - (DetoolS.mws -[Server 1И
•^ ENs^dil"^6w |й»й. ^«рш у," •'."'?\ ^6n$s ^Bd&* l^^-^xx s --$.■. ^ -, v< ''s . ч ^s <. ^ x , s. , «JS£x
Г Пример построения комбинированного графика с помощью функции PDEplot4
> with(PDEtools) : PDEplot ( (уЛ2 + 2(x,у)Л2 + хЛ2)*diff(z(x,у) , x) -2*x*y*diff(2 (x,y) , T y)-2*z(x,y)*x=0, 2(x, y), [t,t, sin(Pi*t/0.1)/10],t=0. .0.1,numchar=40, orientation=[-160,60),basechar=true,numsteps=[20,20],stepsize—, 15,•
initcolour=cos(t)*t,animate-false,style-PATCHCONTOUR) :■
Рис. 13.13. Построение комбинированного графика с помощью функции PDEplot
Обратите внимание па использование опций в этом примере, в частности на вывод надписи на русском языке. В целом список параметров функции phaseportrait аналогичен таковому для функции DEplot (отсутствует лишь задание начальных условий).
Графическая функция phaseportrait
Графическая функция phaseportrait служит для построения фазовых портретов по результатам решения одного дифференциального уравнения или системы дифференциальных уравнений deqns. Она задается в следующем виде:
phaseportrait(deqns.vans.trange.inits.0)
При задании уравнений достаточно указать их правые части. На рис. 13.15 представлен пример применения функции phaseportrait для решения системы из трех дифференциальных уравнений первого порядка.
В этом примере система дифференциальных уравнений задана с помощью оператора дифференцирования D: Функциональная окраска линии фазового портрета достигается использованием параметра 11 necol or, в правой части которого задана формула для цвета.
Рис. 13.14. Построение фазового портрета в виде графика векторного поля
[QMapleZ - [Detod9m«vi-(Servet 1Ц
^ $fo- &М ^ew jhN«t Ев$тЫ ' ' • v 2^юг» ^**4ж yelp^hSLxl
[Построение простого фазового портрета с помощью функции phaseportrait пакета DEtools 4
> with(DEtools):
phaseportrait([D(x)<t)-y(t)-z(t),D(y)(t)—z(t)-x(t),D(z)(t)-x(t)-y(t)*2], [x( t) ,y(t) ,z(t)] ,t—2. .2, [[x(0)-1,y(0)—0, z (0) —2 ] ],stepsize-.05,scene-[z(t),x(t)] , linecolour-sin(t*Pi/2), method-classical[foreuler]);
Рис. 13.15. Построение фазового портрета с помощью функции phaserportrait
Еще более интересный пример решения дифференциального уравнения представлен на рис. 13.16. Здесь построены фазовые портреты для асимптотических решений.
В целом надо отметить, что возможности визуализации решений дифференциальных уравнений с помощью системы Maple 7 весьма велики и приведенные выше примеры лишь частично иллюстрируют сказанное. В справочной системе можно найти ряд других весьма эффектных решений систем дифференциальных уравнений с визуализацией последних.
Рис. 13.16. Построение асимптотического решения на фоне графика векторного поля
Углубленный анализ дифференциальных уравнений
Задачи углубленного анализа ДУ
Maple 7 существенно доработана по части решения дифференциальных уравнений (ДУ) и систем с ДУ. Эта доработка прежде всего направлена на получение верных решений как можно большего числа ДУ разных классов и систем с ДУ.
В частности, расширен круг нелинейных дифференциальных уравнений, для которых Maple 7 способна дать аналитические решения.
Весь арсенал средств решения ДУ и методика их применения вполне заслуживают отражения в отдельной большой книге. Мы ограничимся описанием только трех средств системы Maple 7 — проверки ДУ на автономность, углубленным анализом решения с помощью контроля уровня выхода и получением приближенного полиномиального аналитического решения. Более подробное знакомство с новыми возможностями решения дифференциальных уравнений можно получить из соответствующей статьи справки symbolics в разделе What is new....
Проверка ДУ на автономность
Одиночное дифференциальное уравнение или система дифференциальных уравнений называются автономными, если их правая часть явно не зависит от независимой переменной. Для автономных дифференциальных уравнений или систем при построении графиков решений функцией DEplot не обязательно задавать начальные условия, но нужно указывать диапазон изменения искомых переменных.
Для проверки уравнений (или систем) на автономность используется функция:
autonomous(des.vans.Iva г)
где des — заданное дифференциальное уравнение или (в виде списка) система дифференциальных уравнений, vans — зависимые переменные и Ivar — независимая переменная. Если система автономна, то эта функция возвращает true, в противном случае false.
Примеры:
difl:=diff(x(t),t)=x(t)*(l-y(t)); dif2:=diff(y(t),t)=.3*y(t)*(x(t)-1):
difl v-^xpVxftpX -^tp
di.P :=l"ty(t) = .3y(i)(x(i)- 1)
autonomous([di fl,dif2),[x(t),y(t)],t);
true
autonomous(diff(x(t),t)=sin(t),x,t);
false
В первом случае система дифференциальных уравнений (модель Лотки-Воль- терра) автономна, а во втором случае дифференциальное уравнение не автономно.
Контроль уровня вывода решения ДУ
Для углубленного анализа аналитического решения ДУ (или системы ДУ) можно использовать специальную возможность управления уровнем вывода ре-
шения с помощью системной переменной 1 nfilevel (dsolve) :=level. Значение level=all дает обычный вывод решения без комментариев, уровень 1 зарезервирован для информации, которую может сообщить пользователь, уровень 2 или 3 дает более детальный вывод (включая сообщения об использованном алгоритме и технике решения) и, наконец, уровни 4 и 5 дают наиболее детальную информацию (если таковая есть в дополнение к той информации, которую дает уровень 2 или 3).
Приведем пример аналитического решения ДУ третьего порядка с контролем уровня вывода решения:
myDE := xA2*diff(y(x).х.х.х)-2*(n+l)*x*diff(y(x),х,х)+(а*хА2+6*п)*
*d1 ff(у(х),х)-2*а*х*у(х)=0:
myDE :=х2| ^Цу(х) (п + 1) х | у(х) | + (а х2 + 6 п)у(х)1 - 2 а х у(х) = О
I ох II ох I)
Infolevel [dsolve] := all:
dsolve(myDE);
y(x) = _C7x( 2 BesselY^-n - ^x^ + _C2 (4 n - 2 + a x2) (1/2 + Ю„1 Г"
_C3 x BcsselJ -n x
infolevel[dsolve] := 1:
dsolve(myDE):
No Liouvillian solutions exists
y(x) = _C1 x' " Bessel Y^-/i - ^ax^ + _C2 x L" + "1 BessclJ^-/; - ^, ^a x + C3 (4 n - 2 + о x2)
infolevel[dsolve] := 2:
dsolvetmyDEJ;
Methods for third order ODEs:
rying to isolate the derivative dA3y/dxA3...
Successful isolation of dA3y/dxA3
Trying classification methods —
trying a quadrature
checking if the LODE has constant coefficients
checking if the LODE is of Euler type
trying high order exact linear fully integrable
trying to convert to a linear ODE with constant coefficients
Equation is the LCLM of -2*x/(2*(2*n-l)/a+xA2)*y(x)+diff(y(x),x), a*y(x)-2*n/ x*diff(y(x),x)+diff(diff(y(xy,x),x) checking if the LODE is of Euler type
checking if the LODE is of Euler type exponential solutions successful
"Partial success" case. Entering dsolve with a lower order ODE trying a quadrature
checking if the LODE has constant coefficients
checking if the LODE is of Euler type
trying a symmetry of the form [xi=0, eta=F(x)]
checking if the LODE is missing 'y'
trying a Liouvillian solution using Kovacic's algorithm
No Liouvillian solutions exists
trying a solution in terms of special functions:
> Bessel
- Bessel successful
- solution in terms of special functions successful
/ ч(И2 + л)1(l/2 + »)„1
y(x) = _C/x BesselJуa x + _C2 x BesselY -л - a x
+ _C3 (4 n - 2 + a x2)
В данном случае повышение уровня вывода до 4 или 5 бесполезно, поскольку вся информация о решении сообщается уже при уровне 2 (или 3).
Приближенное полиномиальное решение ДУ
Во многих случаях аналитические решения даже простых ДУ оказываются весьма сложными, например содержат специальные математические функции. При этом нередко полезна подмена такого решения другим, тоже аналитическим, но приближенным решением. Наиболее распространенным приближенным решением в этом случае может быть полиномиальное решение, то есть замена реального решения полиномом той или иной степени. При этом порядок полинома задается значением системной переменной Order, а для получения такого решения функция dsolve должна иметь параметр series.
На рис. 13.17 представлено решение ДУ третьего порядка различными методами: точное аналитическое и приближенное в виде полинома с максимальным заданным порядком 10 и 60. График дает сравнение этих решений для зависимости y(t).
Дадим небольшой комментарий. Нетрудно заметить, что точное аналитическое решение весьма сложно и содержит специальные функции Бесселя и гамма- функции. При порядке полинома 8 (он несколько меньше заданного максимального) решение практически совпадает с точным до значений t < 2, а при максимальном заданном порядке 60 область совпадения расширяется до значений t < 5,5. Затем приближенное решение резко отходит от точного.
Этот пример, с одной стороны, иллюстрирует хорошо известный факт — быстрое нарастание погрешности полиномиального приближения за пределами области хорошего совпадения решений. С другой стороны, он показывает, что сте-
пень полинома более 60 (и даже выше) вовсе не так уж бесполезна, как это утверждается во многих статьях и книгах по полиномиальному приближению. Точность полиномиальных вычислений Maple 7 достаточно высока, чтобы обеспечить получение приближенных полиномиальных выражений со степенью порядка десятков и иногда даже сотен. Другое дело, что столь «длинный» полином не всегда удобен для аналитических расчетов, даже несмотря на его структурную простоту.
Рис. 13.17. Примеры решения ДУ третьего порядка
Что нового мы узнали?
В этом уроке мы научились:
О Использовать основную функцию решения дифференциальных уравнений dsolve.-'.
О Решать дифференциальные уравнения первого порядка.
О Решать дифференциальные уравнения второго порядка.
О Решать системы дифференциальных уравнений.
О Выполнять численное решение дифференциальных уравнений.
О Решать дифференциальные уравнения с кусочными функциями.
О Использовать структуру неявного представления дифференциальных уравнений DESol.
О Применять инструментальный пакет решения дифференциальных уравнений DEtools.
О Осуществлять графическое представление решений дифференциальных уравнений.
О Осуществлять углубленный анализ аналитических решений дифференциальных уравнений.
^Гурок
Математические пакеты
Назначение пакетов и обращение к ним
Пакеты функций комбинаторики
Пакет финансово-экономических функций finance
Пакет ортогональных многочленов orthpoly
Пакет для работы с суммами sumtools
Пакет реализации степенных разложений powerseries
Пакет числовой аппроксимации numapprox
Пакет интегральных преобразований inttrans
Пакет приближения кривых CurveFitting
Пакет для работы с полиномами PolynomialTools
Назначение пакетов расширения и обращение к ним
Как уже отмечалось, некоторые функции системы Maple помимо их нахождения в ядре могут быть расположены в стандартной библиотеке и в пакетах, входящих в поставку системы. Это значит, что их не надо приобретать дополнительно, однако перед использованием таких функций надо загрузить их или отдельно, или вместе с целым пакетом, если большинство его функций представляет интерес для пользователя.
Обзор пакетов
В этом уроке дается выборочная информация о функциях, содержащихся в пакетах. Напоминаем, что список пакетов можно получить, используя команду: >?packages.
Этот список приведен ниже:
О DEtools — решение дифференциальных уравнений;
О Domains — создание областей определений в вычислениях; •
О GF — поля Галуа;
О Gausslnt — работа с целыми числами Гаусса; -
О Groebner — вычисления в базисе Гробнера;
О LREtools — манипуляции с линейными рекуррентными отношениями;
О LinearAlgebra — линейная алгебра;
О Matlab — интеграция с MATLAB;
О Ore_algebra — основные вычисления в алгебре линейных операторов;
О PDEtools — решение дифференциальных уравнений в частных производных;
О Spread — работа с таблицами;
О algcurves — работа с алгебраическими кривыми;
. О codegen — генерация кодов;
О combinat — функции комбинаторики; -
О combstruct — структуры комбинаторики;
О context — контекстно-зависимые меню;
О diffalg — дифференциальная алгебра;'
О difforms — дифференциальные формы;
О finance — финансовые расчеты;
О genfunc — рациональные функции;
О geom3d — трехмерная геометрия Евклида;
О geometry — евклидова геометрия;
О group — представление бесконечных групп;
О inttrans — интегральные преобразования;
О liesymm — симметрия Ли;
О linalg — линейная алгебра и структуры данных массивов;
О networks — графы;
О numapprox — численная аппроксимация;
О numtheory — теория чисел;
О orthopoly — ортогональные полиномы;
О padic — Пи-адические числа;
О plots — расширения графики;
О plottools — создание дополнительных графических объектов;
О polytools — действия с полиномами;
О powseries — формальные степенные ряды;
О process — мультипроцессы (для операционной системы Unix);
О simplex — линейная оптимизация (симплекс-метод);
О stats — статистика;
О student — функции в помощь студентам;
О sumtools — определенные и неопределенные суммы;
О tensor — тензоры и теория относительности.
Как следует из просмотра этого обширного списка, пакеты Maple 7 охватывают многие крупные разделы математики и существенно дополняют возможности системы, предоставляемые средствами ее ядра. Пакеты расширения пишутся на Maple-языке программирования, поэтому они могут легко модернизироваться и пополняться. Этим, в частности, объясняется тот факт, что набор пакетов расширения в Maple 7 существенно пополнен по сравнению с предшествующими реализациями системы.
Новые пакеты Maple 7
Система Maple 7 пополнилась рядом, новых пакетов:
О CurveFutting — приближение кривых;
О Externalcalling — внешние вычисления;
О LinearFunctionalSystem — линейные функциональные системы;
О MathML — поддержка средств языка MathML 2.0;
О OrthogonalSeries — серии с ортогональными полиномами;
О PolynomialTools — работа с полиномами.
Из этих пакетов надо особо выделить пакет приближения кривых. Он содержит наиболее важные функции для приближения кривых, которые до сих пор были разбросаны по ряду пакетов. В конце данного урока содержится описание пакета CurveFitting. Там же имеется описание другого нового и полезного пакета — PolynomialTools.
Получение информации о конкретном пакете
С помощью команды:
>?name_package;
можно получить информацию о любом пакете расширения и найти список входящих в него функций. Названия пакетов были приведены выше.
Для обращения к функциям того или иного пакета используется его полная загрузка командой:
>with(package):[;J
Знак : блокирует вывод списка функций пакета, а знак : указывает вывести этот список.
Если вам необходима какая-то одна функция пакета или небольшая их часть, то не стоит загружать пакет целиком. Это может привести к избыточным затратам памяти компьютера и даже нарушить нормальную работу некоторых функций — следует помнить, что нередко пакеты переопределяют некоторые функции ядра. Для загрузки избранных функций используется команда with в форме
>with(package, fl. f2, ...):
или
>w1th(package. [fl, f2, ...]):
При этом загружаются функции fl, f2, ... из пакета с именем packages.
Может показаться, что было бы лучше иметь все функции в ядре. Однако создание ядра, реализующего все функции системы (в версии Maple 7 их около 3000), неразумно. Такое ядро занимало бы много места в памяти, имело большое время загрузки и затрудняло бы поиск конкретных нужных функций.
Поэтому ядро Maple 7 содержит определенный (и довольно обширный) минимум хорошо апробированных функций, а большинство других функций размещается в стандартной библиотеке и пакетах. Они готовятся на Maple-языке программирования и могут* легко модернизироваться. К тому же пакеты могут модифицироваться (что не очень желательно) или дополняться (что приветствуется) пользователями. Некоторой платой за это является необходимость вызова того или иного пакета или функции перед их применением.
В этом разделе описана структура пакетов Maple 7, имеющих математическую направленность. Ограниченный объем книги и огромное число функций в пакетах не позволяют остановиться даже на описании синтаксических правил применения всех функций этих пакетов. Очевидно, что в этом нет и особого смысла — подавляющее большинство функций представляет малый интерес для конкретного пользователя. Те же, кто ими интересуются, могут легко восполнить пробелы в их описании с помощью справочной системы.
Однако в описании состава каждого пакета в данном уроке упомянуты имена всех без исключения его функций. Это позволяет оценить полноту того или иного пакета и без труда вызвать справочные страницы для любой функции. Описание функций пакетов в урокс дано выборочно, при этом предпочтение отдавалось тем функциям, которые используются в массовых математических и научно-технических расчетах и представляют интерес для достаточно широкого круга читателей.
Полезно отметить, что большинство функций имеет вполне понятные имена, отражающие их суть и назначение. К примеру, назначение функций animate или даже textplot в пакете plots пли Diff, Int и Limit в пакете student понятны, пожалуй, всем. Но и в гораздо более специализированных пакетах имена входящих в них функций в значительной мере знакомы специалистам, поскольку почти всегда ассоциируются с общепринятыми названиями тех или иных специализированных функций или с их комбинациями.
Пакеты функций комбинаторики
Пакет combinat
Функции комбинаторики достаточно известны из обычного курса математики. При вызове пакета выводится (если вывод не заблокирован двоеточием) список его функций:
> with(combinat);
Warning, the protected name Chi has been redefined and unprotected
[Chi, bell, binomial, cartprod, character, choose, composition, conjpart, decodepart, encodepart,fibonacci,firstpart, graycode, inttovec, lastpart, multinomial, nextpart, numbcomb, numbcomp, numbpart, numbperm, partition, permute, powerset, prevpart, randcomb, randpart, randperm, stirlingl, stirling2, subsets, vectoint]
Ввиду важности функций комбинаторики приведем их подные определения:
О Chi (х) — гиперболический косинусный интеграл;
О Ье11(п) — возвращает число ехр(ехр(х)-1) = sumCbell(n)/n!*xAn, n=0. .infinity), причем для вычислений используется рекуррентное соотношение bell(n+i) = (bell(n)+l)An; '
О binomial(п, г) — возвращает биноминальные коэффициенты, причем, если п иг — целые числа, удовлетворяющие условию 0 <= г<= п, то функция возвращает C(n,r)=n!/(r!(n-r)l), а в общем случае С(п, г) = limit(GAMMA(N+l)/ GAMMA(R+l)/GAMMA(N-R+l),R=r.N=n);
О composition^, k) — возвращает списки композиций для целых неотрицательных пик;.
О "Fibonacci (п) — возвращает числа Фибоначчи, вычисляемые по рекуррентной формуле F(n) = F(n - 1) + F(n - 2), где F(0) = 0 и F(l) = 1;
О Fibonacci(n, х) — возвращает значение полинома Фибоначчи F(n, х) = =х F(n - 1, х) + F(n - 2, х), где F(0, х) = 0 и F( 1, х) = 1, при этом F(n) = F(n, 1);
О firstpart(n) — возвращает первую часть канонической последовательности ряда;
О nextpart(l) — возвращает следующую часть канонической последовательности ряда;
О lastpart(n) — возвращает последнюю часть канонической последовательности ряда;
О prevpart(l) — возвращает предыдущую часть канонической последовательности ряда;
О conjpart(l) — возвращает объединенный раздел в канонической последовательности ряда;
О graycode(n) — возвращает список кодов Грея для и-битовых чисел;
О multinomial (n, kl, k2 km) — возвращает мультиномиальные коэффициенты;
О numbcomb(n) и numbcomb(n, m) — возвращает число комбинаций;
О numbcomp(n, к) — возвращает число композиций;
О numbpart(n) — возвращает список всех возможных сумм, дающих п;
О permute(n) и permute(n, г) — возвращает numbperm(n, г) = nops(permute(n, г));
О powerset(s) — возвращает степень множества в множестве s;
О randcomb(n, m) — возвращает случайную комбинацию;
О randpart(n) — возвращает случайную часть;
О randperm(n) — возвращает случайную композицию;
О stirlingKn, m) — возвращает число Стирлинга первого рода; /
О stirling2(n. m) — возвращает число Стирлинга второго рода;
О subsets(L) — задает итерационную процедуру над степенями множества или списка L;
О vectoint(l) — возвращает индекс вектора канонического упорядочения 1;
О inttovecCm, п) — возвращает вектор канонического упорядочения для неотрицательных целых чисел тип.
Ниже даны примеры применения некоторых из этих функций: > choose(4,3);
[[1,2,3],[1,2,4],[1,3,4],[2,3,4]]
choose([a,a,b,c].3):
[[а, а, 6], [а, а, с], [а, Ь, с]]
composit1on(3,2);
{[2,1],[1,2]}
decodepart(4,2);
[1,1,2]
fibonacci(lO):
55
seq(fibonaccKi) ,1=1. .12):
1,2, 3,5, 8, 13,21,34, 55,89, 144
part1tion(5);
[[1,1, 1,1,1], [1,1, 1,2], [1,2, 2], [1,1,3], [2,3], [1,4], [5]]
firstpart(3);
[U,l]
nextpartU);
[1,2]
prevpart(^);
[1,1,1]
lastpart(3);
[3]
conjpart(X);
[U,l]
multinomial(8,2,3,3):
560
numbcomp(8,5);
35•
numpart(3);
numpart(3)
numbperm(4);
24
numbperm([a,b]);,
2
numbperm({a,b,c},2);
6
permute(3,2);
[[1,2],[1,3],[2,1],[2,3],[3,1],[3,2]]
permute([a,a.b],2);,.
[[a, a], [a, 6], [6, a]]
powerset([a,a,b]);.
[[ ].[«],[*], [a, 6], [a, a], [a, a, 6]]
> randcomb([а,Ь,с,d],3):
[а, с, б/]
> randcomb([a,b,c,d],3);
[а, ь, ад
> randpart(10);
[2,8]
> randpart(10);
[Ю]
> stirlingl(10,5);
-269325
> stlrl1ng2(10,5);
42525
> S:=subsets({l,2}):
> while not S[f1nished] do S[nextvalue]() od;
(1}
{2}
{1,2}
> vectoint([1,0,0]):
1
> inttovec(6,3):
[1,0,1]
Читателю, желающему использовать данный пакет, рекомендуется внимательно ознакомиться с этими простыми примерами и просмотреть примеры из справочной базы данных для имеющихся в пакете функций.
Пакет combstruct
Еще девять функций, относящихся к структурам комбинаторики, содержит пакет combstruct:
with(combstruct);
[allstructs, count, draw, finished, gfeqns, gfseries, gfsolve, ilerstructs, nextstruct^
Эти функции служат для создания случайно однородных объектов, принадлежащих заданному комбинаторному классу. Ограничимся приведением примеров применения этих функций:
allstructs(Subset({one,two})):
{ { }, {one, two}, {two }, { one} }
allstructs(Permutation([x,y,z]), size=2):
[[*,?], [x,z], [y,x], [^z], [z,x], [z,j]]
> count(Subset({l,2,3}));
8
> draw(Comb1nat1on(5),s1ze=4):
{1,3,4,5}
count(Permutat1on([a.a,b])):
3
it :=iterstructs(Permutation([a,a.b]),size=2);
it := tabkyjinished =false, nextvalue = (proc() ... end proc )])■
draw(Partition(9));
[2,2, 2,3]
ailstructs(Composition(3), size=2):
[[2,1],[1,2]]
Для более полного знакомства с этими специфическими функциями обратитесь к справочной системе.
Пакет финансово-экономических функций finance
Пакет финансово-экономических расчетов открывается командой:
W1th(finance);
^amortization, annuity, blackscholes, cashflows, effectiverate, futurevalue, growingannuity, growingperpetuity, levelcoupon, perpetuity, presentvalue, yieldtoniaturity}
Этот пакет представлен рядом указанных выше функций в двух формах:
functlon(args)
f 1 nancelfuncti on](args)
Благодаря правилам задания аргументов можно реализовать практически все известные финансово-экономические расчеты, такие как амортизация, накопления и платежи по вкладам и т. д. В свете задач рыночной экономики эти функции полезны для приверженцев решения всего на свете без выхода из оболочки Maple. Все же надо отметить, что малозаметные тонкости в определении финансово-экономических функций затрудняют их применение. Есть множество специальных финансово-экономических пакетов, например «Бухгалтерия 1С», которые лучше подходят для наших экономических реалий, чем «заумный» и прозападный Maple 7.
Полный перечень функций можно найти в справке по этому пакету. Ограничимся упоминанием нескольких наиболее характерных функций, связанных с использованием вкладов:
О annuity(cash,rate,nperiods) — вычисление суммы, находящейся на вкладе с начальным значением cash, процентом начисления rate и числом периодов nperiods;
О cashflows(flows.rate) — вычисление общей суммы вклада по списку вложений flows и проценту обесценивания денег rate;
О futurevalueCamount, rate, nperiods) — вычисление будущего значения вклада при начальном вложении amount, проценте начисления rate и числе периодов nperiods;
О presentvaluetamount, rate, nperiods) — вычисление начального вклада для получения суммы в amount при проценте начислении rate и числе вкладов nperiods.
Примеры применения этих функций даны ниже:
annuitydOO. .10, 15): 760.6079506
annuityfeash,rate,nperiods):
11
CQSh rate rate {rate +
cashf1ows([1000,800,700.600].- 0.05):
3492.146316
s:=1000+800+700+600;
s :=3100
futurevalue(1000,0.1.5);
1610.51000
presentvalue(1610.0.1,5);
999.6833301
Поскольку формулы и обозначения в финансово-экономических расчетах в различной литературе порою заметно различаются (особенно сильны различия между нашей и западной литературой), это может создать серьезные ошибки при вычислениях. К примеру, в формулах Maple на самом деле используются не проценты начислений или обесценивания вкладов, а соответствующие им относительные единицы, например 10% соответствует 0,1. В нашей литературе проценты обычно задаются в явном виде, то есть rate = 10 при 10%. Надо следить и за знаком величины rate, поскольку она может трактоваться как процент начислений или процент обесценивания денег по вкладам, что соответствует различным ее знакам.
Расчеты такого рода для Maple 7 относятся к достаточно простым, так что даже начинающий пользователь может составить свои функции для таких расчетов по вполне понятным ему и апробированным формулам. Надо отметить, однако, что, используя символьное задание параметров функций, легко получить вывод именно тех формул, которые использует система Maple, и сравнить их со своими формулами. В случае совпадения применение функций Maple возможно и предпочтительно.
В целом применение Maple 7 как системы с символьной и точной арифметикой весьма предпочтительно в финансово-экономических и статистических расчетах, поскольку обеспечивает принципиально повышенную точность и устойчивость таких расчетов.В целом применение Maple 7 как системы с символьной и точной арифметикой весьма предпочтительно в финансово-экономических и статистических расчетах, поскольку обеспечивает принципиально повышенную точность и устойчивость таких расчетов.^ПРИМЕЧАНИЕ
В целом применение Maple 7 как системы с символьной и точной арифметикой весьма предпочтительно в финансово-экономических и статистических расчетах, поскольку обеспечивает принципиально повышенную точность и устойчивость таких расчетов.
В целом применение Maple 7 как системы с символьной и точной арифметикой весьма предпочтительно в финансово-экономических и статистических расчетах, поскольку обеспечивает принципиально повышенную точность и устойчивость таких расчетов.
Пакет ортогональных многочленов orthopoly
Ортогональные многочлены (полиномы) находят самое широкое применение в различных математических расчетах. В частности, они широко используются в алгоритмах интерполяции, экстраполяции и аппроксимации различных функциональных зависимостей. В пакете orthopoly задано 6 функций:
> with(orthopolу):
VG,H,L,P, Т, С]
Однобуквенные имена этих функций отождествляются с первой буквой в наименовании ортогональных полиномов. Вопреки принятым в Maple 7 правилам, большие буквы в названиях этих полиномов не указывают на инертность данных функций — все они являются немедленно вычисляемыми. В данном разделе функции этого пакета будут полностью описаны.
Отметим определения указанных функций:
О G(n,a,x) — полином Гегенбауэра (из семейства ультрасферических полиномов);
О Н(п,х) — полином Эрмита;
О Цп.х) — полином Лагерра;
О Цп.а.х) — обобщенный полином Лагерра;
О Р(п,х) — полином Лежандра;
О Р(п,а,Ь,х) — полином Якоби;
О Т(п,х) — обобщенный полином Чебышева первого рода;
О U(n,x) — обобщенный полином Чебышева второго рода.
Свойства ортогональных многочленов хорошо известны. Все они характеризуются целочисленным порядком п, аргументом х и иногда дополнительными параметрами а и Ь. Существуют простые рекуррентные формулы, позволяющие найти полином п-го порядка по значению полинома (и - 1)-го порядка. Эти формулы и используются для вычисления полиномов высшего порядка.
Ниже представлены примеры вычисления ортогональных полиномов:
6(0,1,х):'
1
6(1,1,х);
2 х
6(1,1.5);
10
Н(3,х);
8х3- 12 х
1(3.X);
1-Зх + |х2-1х3
> 1(2.а.х);
,3„1 ,1 -
1+-а-2.г + -а - а х + -х*
> Р(2.х):
> Р(2,1,1,х):
15 ? 3
4 Х ”4
> Т(5,х);
16.v5-20r1 + 5x
> U(5,x):
32 г-32 г3+ 6 л
Представляет интерес построение графиков ортогональных многочленов. Па рис. 14.1 построены графики ряда многочленов Гегенбауэра и Эрмита.
Рис. 14.1. Графики ортогональных многочленов Гегенбауэра и Эрмита'
На рис. 14.2 построены графики ортогональных многочленов Лагерра и Лежандра.
Наконец, на рис. 14.3 даны графики ортогональных многочленов Чебышева Т(п, х) и и^п, х).
Приведенные графики дают начальное представление о поведении ортогональных многочленов. К примеру, многочлены Чебышева Имеют минимальное
Рис. 14.2. Графики ортогональных многочленов Лагерра и Лежандра
1.3. Графики ортогональных многочленов Чебышрва
отклонение от оси абсцисс в заданном интервале изменения х. Это их свойство объясняет полезное применение таких многочленов при решении задач аппроксимации функций. Можно порекомендовать читателю по их образу и подобию построить графики ортогональных многочленов при других значениях параметра п и диапазонах изменения аргумента х
В отличие от ряда элементарных функций ортогональные многочлены определены только для действительного аргументах При комплексном аргументе просто повторяется исходное выражение с многочленом:
> evalf(U(2,2+3*1));
Р(2, 2 + 3 7)
> evalf(sqrt(2+3*D);
1.674149228 + .8959774761 I
Ортогональные многочлены не определены также и для дробного показателя п. Впрочем, надо отметить, что такие многочлены на практике используются крайне редко.
Пакет для работы с суммами sumtools
Состав пакета sumtools
Этот инструментальный пакет предназначен для работы со специальными суммами. Он содержит указанные ниже функции:
> with(sumtools);
[ Hypersum, Sumtohyper, extended_gosper, gosper, hyperrecursion, hypersum, hyperterm, simpcomb, sumrecursion, sumtohyper]
Назначение функций данного пакета перечислено ниже:
О hypersum(U, L, z, п) и Hypersum(l), L. z, n) — вычисление гиперсумм;
О sumtohyper(f, k) и Sumtohyperlf, k) — преобразование сумм в гиперсуммы;
О extended_gosper(f, k), extended_gosper(f, k=m..n) и extended_gosper(f, k, j) — реализация расширенного алгоритма Госпера;'
О gosper(f, к) и gosper(f, k=m..n) — реализация алгоритма Госпера;
О hyperrecursion(U, L, z, s(n)) — реализация гиперрекурсионного алгоритма;
О hyperterm(U, L, z, к) и HypertermCU, L, z, k) — ввод гипергеометрического терма.
Работа с пакетом sumtools
Приведем примеры на применение этих функций:
>extended_gosper(k*(k/2)1. к);
г^А + г^+П
>extended_gosper(k*(k/2)!,k,2):
> extended_gosper(k*(k/2)!,k-l..n):
> gosper(k*(k/2)1,k): FAIL
> gosper(pochhammer(k. n), k);
(A -1) pochhammer(A, и)
и +1
> hyperrecursion([ - n, a], [b], 1, f (n));
(-« + «- /?+l)f(«-l) +(«+/>-]) f(w)
> Hypersum([a,l+a/2,b,c.d,l+2*a-b-c-d+n.-n],
[a/2,1+a-b,1+a-c.1+a-d.1+a■(l+2*a-b•c•d+n),1+a+n], 1,n):
Hyperterm( [1,1+a, a - d - c + \, a + \ - d - b, a - c + 1 - b], [ 1 + a - d, 1 + a - c, 1 + a- b, a-b-c-d+ 1 ], 1, n)
> simpcomb(binom1al(n,k));
Г(« + 1)
Г(и - A+1) Г(А+1)
>sumrecursion(binomial(n,k)A3,k,f(n));,
-8 <n - 1 )2 Kji - 2) - (7 /г2 - 7 n + 2) f(n - 1) + f(«) w2
> hyperterm( [a, b], [c], z, k) ;
pochhammer(a, A) pochhammer(6,A) zk pochhammer(c, A) к!
Из этих примеров применение функций данного пакета достаточно очевидно.
Пакет реализации степенных разложений powseries
Состав пакета powseries
Степенные разложения часто используются в математических расчетах для приближенного представления разнообразных функций и обеспечения единообразия такого представления. В пакете powseries сосредоточены расширенные средства по реализации таких -разложений. Они представлены 22 функциями:
> with(powseries);
V compose, evalpow, inverse, multconst, multiply, negative, powadd, powcos, powcreate, powdiff, powexp, powint, powlog, powpoly, powsin, powsolve, powsqrt, quotient, reversion, subtract, template, tpsform^
Ниже представлено определение этих функций:
О compose(а,Ь) — объединяет ряды а и Ь;
О evalpow(expr) — вычисляет выражение ехрг и возвращает его в виде ряда;
О inverse(p) — инвертирует ряд р;
О multconst(p,const) — умножает ряд р на константу const;
О multiply(a.b) — умножает ряд а па ряд Ь;
О negative(p) — возвращает аддитивный, обратный по отношению к р ряд;
О powadd(a,b,...) — складывает ряды а. Ь,
О powcreate(expr) — создает ряд для выражения ехрг;
О powpoly(po) .van) — создает ряд для полинома ро! по переменной van;
О powsol ve(sys) — создает ряд для решения дифференциальных уравнений sys;
О quotients,b) — возвращает частное для а и b в виде ряда;
О reversion (а) — дает обратное к композиции разложение ряда а;
О subtract(а,Ь) — дает разность рядов а и Ь.
В выражении ехрг могут использоваться операторы +, -, *, / и ". С ними могут комбинироваться встроенные функции и функции пользователя, например /(g). Кроме того, могут использоваться следующие функции:
Powexp
powinv
powlog
powneg
powrev
Powd1ff
powint
powquo
powsub
powcos
Powtan
powsec
powcsc
powcot
powsinh
Powcosh
powtanh
powsech
powcsch
powcoth
Powsqrt
powadd
multiply
Примеры применения пакета powseries.
Назначение большинства этих функций очевидно пз их названий — они возвращают соответствующую функцию (указанную после слова pow в имени) в виде разложения в ряд или полинома. Например, powexp раскладывает выражения с экспоненциальными функциями в ряд.
Получаемые функциями ряды представляются в специальном формате. Поэтому для их применения в обычном виде необходимо использовать функцию tpsform в следующих видах:
О tpsform(p, var, order) — преобразует ряд р в обычную форму с заданием порядка order;
О tpsform(p, var) — преобразует ряд р в обычную форму с порядком, заданным переменной Order.
Здесь р — имя степенного ряда, var — переменная, относительно которой записан ряд, order — порядок ряда. Если параметр order не указан, используется зна-
челне глобальной переменной Order. Ниже даны примеры, иллюстрирующие технику работы со степенными разложениями:
pl:=powexp(sin(x));
pl := ptoc(powparm) ... end proc
p2:=powexp(cos(x));
p2 := proc (powparm} ... end proc
tpsform(pl.x);
1 +х + |х2-|-/--^? + О(л-6)
tpsform(p2,x);
e - e x2 + 7 e a4 + O(x6)
26
a := powser1es[powexp](x):
b := powser1es[tpsform](a, x. 5);
:= 1 + A' + — A'*" + ~ A'2 + 2^ X4 + ОС.Ф )
> c := powadd( powpoly(l+x'2+x,x), powlog(l+x) ):
d := tpsform(c. x. 6):
d := 1 + 2 a + a-2 +1 a-3 - - a-4 +1 x5 + O(x6)
Применение функций этого пакета достаточно просто и прозрачно, так что заинтересованный читатель может сам опробовать па примерах работу тех функций, которые не были использованы в приведенных примерах.
Пакет числовой аппроксимации numapprox
Состав пакета numapprox
Этот пакет содержит небольшое число безусловно очень важных функций:
with(numapprox):
Vchebdeg, chebmult, chebpade, chebsort, chebyshev, confracform, hermite_pade. hornerform, infnorm, laurent, minimax, pade, remez]
В их числе функции интерполяции и аппроксимации полиномами Чебышева, рядом Тейлора, отношением полиномов (Паде-аппроксимация) и др. Все они широко применяются не только в фундаментальной математике, но и при решении многих прикладных задач. Рассмотрим их, начиная с функций аппроксимации аналитических зависимостей.
Разложение функции в ряд Лорана
Для разложения функции f в ряд Лорана с порядком п в окрестности точки х = а (или х = 0) служит функция laurent: laurent(f. х=а. п) laurent(f, х. п)
Представленный ниже пример иллюстрирует реализацию разложения в ряд Лорана:
> laurent(f(x),х=0,4);
f( 0) + D(/)( 0) л- +1 (D*2 ’ ХП( 0) л-2 + А (D( 3 ’)(/)(0) х3 + О( т4) 2о
> laurent(exptx),х,5):
+ т + - л-2 + - л-3 + — .г4 + О(х5) 2 о
Паде-аппроксимация аналитических функций
Для аппроксимации аналитических функций одной из лучших является Паде- аппроксимация, при которой заданная функция приближается отношением двух полиномов. Для осуществления такой аппроксимации используется функция pade: pade(f. х=а. [т.п]) pade(f, х. [т.п])
Здесь f — аналитическое выражение или функция, х — переменная, относительно которой записывается аппроксимирующая функция, а — координата точки, относительно которой выполняется аппроксимация, m, п — максимальные степени полиномов числителя и знаменателя. Технику аппроксимации Паде поясняет рис. 14.4.
На рис. 14.4 представлена аппроксимация синусоидальной функции, а также построены графики этой функции и аппроксимирующей функции. Под ними дан также график абсолютной погрешности для этого вида аппроксимации. Нетрудно заметить, что уже в интервале [-л, л] погрешность резко возрастает на концах интервала аппроксимации.
Важным достоинством Паде-аппроксимации является возможность довольно точного приближения разрывных функций. Это связано с тем, что нули знаменателя у аппроксимирующего выражения способны приближать разрывы функций, если на заданном интервале аппроксимации число разрывов конечно. На рис. 14.5 представлен пример Паде-аппроксимации функции tan(x) в интервале от -4,5 до 4,5, включающем два разрыва функции.
Как видно из рис. 14.5, расхождение между функцией тангенса и ее аппроксимирующей функцией едва заметно лишь на краях интервала аппроксимации. Оба разрыва прекрасно приближаются аппроксимирующей функцией. Такой характер аппроксимации подтверждается и графиком погрешности, которая лишь на концах интервала аппроксимации [-4,0, 4,0] достигает значений 0,01 (около 1%).
Рис. 14.4. Аппроксимация Паде для синусоидальной функции
^Ma^eT-iPadrtarunwT^fSei*»!]]
^£6 £& $ew |t«®t Fopna* ^' С^ю^ 5й5^11* й.«Ф*161 ^^
Паде-аппроксимация аналитической разрывной функции^
> f:-(х)->tan(x): with(numapprox):fp:=pade(f(x),x, [5,6]) ;
5 _ £ 3 +495X33XX
,2 1 t 1 416
11X99X10395X:
[> fu:-(x)-> fp: > plot ( [f (x) , fu(x) ] ,x— 4.5 . . 4.5 , y=-10 . . 10 ,color=blacK) ;
Рис. 14.5. Аппроксимация Паде для разрывной функции тангенса
Паде-аппроксимация с полиномами Чебышева
Для многих аналитических зависимостей хорошие результаты дает аппроксимация полиномами Чебышева. В общем случае применяется Паде-аппроксимация отношением таких полиномов. Она реализуется функциями chebpade:
chebpade(f. x=a..b. [т.п])■
chebpade(f. х. [т.п])
chebpade(f, а. .b. [т.п])
Здесь а..Ь задает отрезок аппроксимации, тип— максимальные степени числителя и знаменателя полиномов Чебышева. Приведенный ниже пример показывает аппроксимацию Паде полиномами Чебышева для функции f=cos(x):
> Digits:=10:chebpade(cos(x),х=0..1.5);
.8235847380 Т(0, 2 х - 1)- .2322993716 Т( 1, 2 х - 1)- .05371511462 Т(2, 2х- 1)
+ .002458235267 Т(3, 2 х - 1) + .0002821190574 Т(4, 2 х - 1)
- .7722229156 10"5 Т(5, 2 х - 1)
> chebpade(cos(x),x=0..1,[2.3]);
(.8162435876 Т(0,2 х - 1)-.1852356296 Т(1,2 х - 1 )-.05170917481 Т(2,2х- 1))/(
Т(0, 2 х- 1) +.06067214549 Т( 1,2х - 1) +.01097466398 Т(2, 2 х - 1)
+ .0005311640964 Т(3,2х- 1))
Наилучшая минимаксная аппроксимация
Минимаксная аппроксимация отличается от Паде-аппроксимации минимизацией максимальной абсолютной погрешности во всем интервале аппроксимации. Она использует алгоритм Ремеза (см. ниже) и реализуется следующей функцией: m1n1max(f, x=a..b. [т.п], w, 'maxerror') m1n1max(f, a..b, [т.п], w, 'maxerror')
Здесь помимо уже отмеченных параметров w — процедура или выражение, maxerror — переменная, которой приписывается значение minimax-нормы. Ниже дан пример аппроксимации функции cos(x) в интервале [-3, 3]:
m1nimax(cos(x),х=-3..3.[2,3],1,’minmax'):
.5458304182+ (.5119634586 10"9 - .2308484266 х) х
.5217186403 + (.1496104420 10"8 + .1062847466 х) х
minmax:
.04621605601
Наилучшая минимаксная аппроксимация по алгоритму Ремеза
Для получения наилучшей полиномиальной аппроксимации используется алгоритм Ремеза, который реализует следующая функция:
remezlw. f, a. b. m. n, crit. ‘maxerror').
Здесь w — процедура, представляющая функцию ю(х) > 0 в интервале [а, 6], f — процедура, представляющая аппроксимируемую функцию j\x\ а и b — числа, задающие интервал аппроксимации |«, bY тип— степени числителя и знаменателя аппроксимирующей функции, crlt — массив, индексированный от 1,до т + п + 2 и представляющий набор оценок в критических точках (то есть точек максимума/миннмума кривых погрешности), maxerror — имя переменной, которой присваивается минимаксная норма ?о abs(/ - г\
Следующий пример иллюстрирует применение данной функции для аппроксимации функции erf(x):
Digits:=12:w:=proc(x) 1.0 end;
w := proc (x) 1.0 end proc
f:=proc(x) evalf(erf(x)) end;
/:= proc(x) evalf(erf(x)) end proc
> crit:=array(l..7.[0,.1,.25..5,.75, .9,1.]);
crit := [0, .1, .25, .5, .75, .9, 1.]
> remez(w,f,0,1,5.0,crit,'maxerror');
x -+ .0000221268863 +(1.12678937620 +
(.018447321509 + (-.453446232421 + (. 141246775527 + .00966355213050 x) x) x) x) x
maxerror;
.0000221268894463
Другие функции пакета.
Отметим назначение других функций пакета numapprox:
О chebdeg(p) — возвращает степень полинома Чебышева р;
О chebmult(p, q) — умножение полиномов Чебышева р и q;
О chebsort(e) — сортирует элементы ряда Чебышева;
О confracform(r) — преобразует рациональное выражение г в цепную дробь;
О confracform(r, х) — преобразует рациональное выражение г в цепную дробь с независимой переменной х;
О hornerform(r) — преобразует рациональное выражение г в форму Горнера;
О hornerform(r, х) — преобразует рациональное выражение г в форму Горнера с независимой переменной х;
О infnorm(f, x=a...b, ’хтах') — возвращает L-бесконечную норму функции на отрезке х [а, 6];
О infnorm(f, a...b, ’хтах') — возвращает L-бесконечпую норму функции на отрезке [а, 6].
Действие этих функций очевидно, и читатель может самостоятельно опробовать их в работе.
Пакет интегральных преобразований inttrans
Общая характеристика пакета
Это один из пакетов, наиболее важных для общематематических и научно-технических приложений. Он содержит небольшой набор функций:
with(1nttrans);
[addtable, fourier,fouriercos,fouriersin, hankel, hilbert, invfourier, invhilbert, invlaplace, invmellin, laplace, mellin, savetable]
Однако эти функции охватывают такие практические важные области математики, как ряды Фурье, прямые и обратные преобразования Лапласа и Фурье и ряд других интегральных преобразований. Ниже они обсуждены более подробно.
В предшествующих реализациях системы Maple функции прямого и обратного Z-преобразований также входили в пакет inttrans, однако в Maple 6 и 7 они перенесены в ядро системы.
Прямое и обратное преобразования Лапласа
Прямое преобразование Лапсаса заключается в переводе некоторой функции времени /(f) в операторную форму F(p). Это преобразование означает вычисление интеграла
00'
F(p] = ^f(tKS,dt
О
Для осуществления прямого преобразования Лапласа Maple 7 имеет функцию laplace(expr.t.p)
Здесь ехрг — преобразуемое выражение, t — переменная, относительно которой записано ехрг, и р — переменная, относительно которой записывается результат преобразования.
Обратное преобразование Лапласа означает переход от функции F(p) к функции /(t) с помощью формулы
S+Ico
F(t)= \F(p)e~ptdp
S-Ico
Для вычисления этого интеграла служит функция:
1nvlaplace(expr. р, t)-
где ехрг — выражение относительно переменной р, t — переменная, относительно которой записывается результирующая зависимость. Оба преобразования широко применяются в практике научно-технических вычислений и отражают суть
операторного метода. При этом прямое преобразование создает изображение, а обратное — оригинал функции. Ниже приведены примеры применения прямого и обратного преобразований Лапласа:
> laplace(sin(t)+a*cos(t),t,p):
а р
—;4—:
р + 1 р + 1
invlaplace(^.p.t):
sin(Z) + a cos(z)
Нетрудно заметить, что в данном случае последовательное применение прямого, а затем обратного преобразования восстанавливает исходную функцию sin(z) + а cos(t).
Прямое и обратное преобразования Фурье
Прямое преобразование Фурье преобразует функцию времени /(Z) в функцию частот и заключается в вычислении следующей интегральной функции:
Оно реализуется следующей функцией пакета интегральных преобразований inttrans:
fourier(expr.t.w)
Здесь ехрг — выражение (уравнение или множество), t — переменная, от которой зависит ехрг, и w — переменная, относительно которой записывается результирующая функция.
Обратное преобразование Фурье задается вычислением интеграла:
1 00
2л J
Оно фактически переводит представление сигнала из частотной области во временную..
Примеры применения преобразования Фурье представлены ниже:
fourier(sin(t),t,w);
-Iл Dirac(w- 1) + / л DiracOv + 1)
invfourier(X,w,t):
., ио НО.
-Ц-е + е )
simplifyW:
sin(Z)'
fourier(l-exp(-a*t),t,w);
2 л Dirac(w) - fourier(e( ° *\ t, w)
invfourier(t.w.t):
Обратите внимание на то, что даже в простом первом примере применение обратного преобразования Фурье вслед за прямым не привело к буквальному восстановлению исходной функции sin^ty Потребовалась команда simplify, чтобы перевести результат в виде представления синуса через экспоненциальные функции к обычному виду sm(f).
Вычисление косинусного
и синусного интегралов Фурье
Разложение функции /(t) в ряд Фурье требует вычисления интегралов следующего вида:
гусе
F^ = V~ ifCOcos(st)dt
л о
/у®
= J-J/(0sin(5/)^
л о
Они получили название косинусного и синусного интегралов Фурье и фактически задают вычисление коэффициентов ряда Фурье, в который может быть разложена функция /(t).
Для вычисления этих интегралов в пакете используются следующие функции: fourlercos(expr.t.s) fouriersin(expr,t.s)
Поскольку формат задания этих функций вполне очевиден, ограничимся примерами их применения:
> fouriercos(5*t,t,s):
> fouriersin(5*t,t,s):
5 пг
> fouriercos(exp(-t),t,s):
Интегральное преобразование Ханкеля
Интегральное преобразование Ханкеля задается следующим выражением:
F[«w](x) = | f(t) • t • BesseU(nw, s ■ t)dt 0
и выполняется функцией:
hankel(expr. t. s. nu)
Здесь ехрг — выражение, равенство (или множество, или список с выражения- ми/равенствами), t — переменная в ехрг, преобразуемая в параметр преобразования s, пи — порядок преобразования.
Следующий пример демонстрирует применение функции Ханкеля:=
> hankel(t"(1/3),t,s.2);
Прямое и обратное преобразования Гильберта
Прямое преобразование Гильберта задается следующим выражением:
л J t-s —оо
и превращает функцию /(f) в F(s).
Обратное преобразование Гильберта означает нахождение /(t) по заданной F(s).
Эти преобразования выполняются функциями:
hilbert(expr. t. s) invhilberttexpr, t. s)
где назначение параметров очевидно.
Приведенные ниже примеры иллюстрируют выполнение этих преобразований:
assume(a>0);
hi 1bert(ехр(1), г, z):
О
hilbert(f(u), u, t);
hilbert(f(i/), и, t)
МПЬегШ. t, s);
-f(0
> hilbert(t*f(t), t, s):
5hilbert(f(Z), ?,s)n + J f(_U)d_U
л
hilbert(t/(t*2+l),t,s);'
1'
s2 + 1
InvhilbertU.s.t);
t
Z2 + 1
hl1bert(siп(х)/х.х.у);..
cos( у) - 1
.у■
hilbert(ln(I*a*x),х,у);
hilbert(ln(/.r), х, у) + hilbert(ln(«~), х, у)
hi 1bert(^.у,z);
-ln(/z)
Как видно из этих примеров, обратное преобразование Гильберта, осуществленное над результатом прямого преобразования, не восстанавливает функцию /(Z) буквально.
Интегральное преобразование Меллина
Интегральное преобразование Меллина задается выражением:
М(s) = Jm(x)xs ^dx
О
и реализуется функцией:•
mellintexpr. х. s)
с очевидными параметрами ехрг, х и s.
Применение преобразования Меллина иллюстрируют следующие примеры:
> assume(a>0);
mellin(xAa,x,s);
Г(у + а ~) Heaviside(y + я ~) Г(-я —у) Hea\Tside(-« —у)
Г(у + а~+1)Ц1-у-д~)"
Функция addtable
Как видно из приведенных примеров, не всегда интегральные преобразования дают результат в явном виде. Получить его позволяет вспомогательная функция:
addtabiettname.patt.expr,t.s)
где tname — наименование преобразования, для которого образец patt должен быть добавлен к таблице поиска. Остальные параметры очевидны.
Следующие примеры поясняют применение этой функции:
fouriersin(f(t),t,s);
fouriersin(f(z), t, у)
addtabie(fouriersin.f(t),F(s),t,s);
fouriersin(f(x),x,z);
F(z)
Пакет приближения кривых CurveFitting
Общая характеристика пакета CurveFitting
Новый пакет приближения кривых CurveFitting весьма полезен тем, кто занимается столь распространенной задачей, как приближение кривых. Он содержит ряд функций:
with(CurveFitting);
Доступ к функциям пакета возможен с помощью конструкций:
CurveFitting[function](arguments) function(arguments)
Число функций пакета невелико и все они описаны ниже.
Функция вычисления В-сплайнов Bspline
Функция BSpline(k, v, opt) служит для вычисления В-сплайнов. Она имеет следующие параметры: к — порядок сплайна (целое число), v — имя и opt — параметр в виде knots=knotlist, где knotlist — спискок из к+1 элементов алгебраического типа. Используя функцию CurveFitting[BSplineCurve], можно строить кривые В-сплайнов. Примеры применения этой функции представлены ниже:
BSplineO, х);
Г 0х<0
- - + х - (х - 1 )2 х < 2
517
--х + ^(х-2ух<3
03 <х
> BSpline(2, х, knots=[0.a,2]);
'0х<0
х
— х <а а
О 2 Sx
Как нетрудно заметить из этих примеров, функция Bspline возвращает результат в виде кусочных функций типа piecewise.
Функция построения В-сплайновых
кривых BsplineCurve
Функция BsplineCurve служит для построения кривых В-сплайнов. Она может использоваться в формах:•
BSplineCurve(xydata. v. opts)
BSplIneCurve (xdata, ydata. v. opts)
Здесь:
xydata — список, массив или матрица точек в форме [[xl.yl], [х2,у2][хп.уп]];
xdata — список, массив или вектор значений независимой переменной [х1,х2хп]; ydata — список, массив или вектор значений зависимой переменной в форме [у1.у2уп]:
v — имя независимой переменной;
opts — необязательный параметр в форме одного или более выражений вида order=k или knots=knotl 1st.
Примеры применения функции BsplineCurve с порядком, заданным ио умолчанию, и с третьим порядком (кубический В-сплайн) представлены на рис. 14.6.
Q Maple 7 - [curbefit mws - (Server 1|]
•4^ £бе £di* View tossrE Formal ,. • . •' ^pfeon? Window Нф
Г> with(CurveFitting):
xydata :- [ [0.1,0 ] , [1, . 9 ] , [2.5,6 ] , [3,6] , [4,5 ] , [5,3 ] , [6,2 ] ] :
cl := BsplineCurve(xydata, v):plot({cl, xydata},color»black);
> c2 := BSplineCurve(xydata, v, order=3,
knots=[0,0,1,2,3,3,4 ,5,6,7]):plot((c2, xydata},colorsblack);
Рис. 14.6. Применение функции BsplineCurve
Следует отметить, что при малом числе точек аппроксимация В-сплайнами дает невысокую точность, что и видно из рис. 14.6.
Функция реализации метода
наименьших квадратов LeastSquares
Функция LeastSquares служит для реализации аппроксимации по методу наименьших квадратов:
LeastSquares (xydata, v. opts)
LeastSquares(xdata. ydata, v, opts)
Все входящие в нее параметры были определены выше (см. параметры функции BSplineCurve). Параметр opts задается в форме выражений weight=wlist, curve=f или params=pset.
Следующие примеры иллюстрируют применение функции LeastSquares:
with(CurveFitting):
LeastSquares([[O,.5].[1.2].[2.4],[3.8]], v);
-.0500000000000+2.44999999999999974 v
LeastSquares([0.1,2,3], [1.2.4,6], v, weight=[l,l.l,10]):
95 259
■4- —— у
146 146
LeastSquares([0,l,3,5,6], [1,-1,-3.0,5], v, curve=a*vA2+b*v+c);
856 33 , 2231
1V
637 49637
Функция полиномиальной аппроксимации Polynomiallnterpolation
Функция Polynomial Interpolation реализует полиномиальную интерполяцию и может использоваться в виде:
Polynomial Interpolation (xydata, v)
Polynom1allnterpolat1on(xdata. ydata. v)
Параметры функции были определены выше. Параметр v может быть как именем, так и численным значением. Примеры применения функции представлены ниже:
> with(CurveFitting):
Polynomial Interpolation([CO.0].[1.2].[2.4],[3,3]]. z);
з 3 2
“ 2 2 + 2 Z + Zz
> Polynomiallnterpolation([0,2,5.8], [2,а,1,3]. 3);
24 + 6 Я24 + 6 Я5-
24 + 6 Я
24 + 6 Я
Функция рациональной аппроксимации Racionallnterpolation
Функция рациональной интерполяции задается в виде:
Rational Interpolation (xydata. z. opts)
RationalInterpolation(xdata. ydata. z. opts)
где необязательный параметр opts задается выражениями method=methodtype или degrees=[dl,d2], Функция возвращает результат в виде отношения двух полиномов. Параметр methodtype может иметь значения 'lookaround или subresultant, задающие учет или пропуск сингулярных точек.
Пример применения функции Rational Interpolation (загрузка пакета опущена, но предполагается):
xpoints := [0,1.2,3,4,-1]: ypoints := [0,3,1,3,8.1/11]:
f := Rationallnterpolationtxpoints, ypoints, x);'
Щ -3,.
4r- 17 a-+ 12
for i from 1 to 6 do normal(eval(f,x=xpoints[i])-ypoints[i]) end do;
0
0
0
0
0
Функция вычисления обычных сплайнов Spline
Функция:
Splinetxydata. v. opts)Spline(xdata, ydata. v. opts)
вычисляет обычные (не В-типа) сплайны. Примеры ее применения даны ниже: > Spline([[0.1],[l,2].[2.5],[3,3]]. х);
х< 1х < 2otherwiseх< 1х < 2otherwise,213 з
х< 1
х < 2
otherwise
х< 1
х < 2
otherwise
+ 15Л + 15Л
2114248 2 7 з
515'V+5'V 3Х
131 54266 2 22 з
5 + 15 Х 5 Х + 15Х
> Spline([0.1,2,3], [1.2,5,3], v, degree=l);
1 + vv < 1
-l+3vv<2
9 - 2 votherwise
Функция аппроксимации непрерывными
дробями Thielelnterpolation
Функция Thielelnterpolation осуществляет интерполяцию на основе непрерывных дробей (Thiele’s-интерполяцию). Она задается в виде:
Thielelnterpolation (xydata. v)
Th1elelnterpolat1on(xdata. ydata. v)
Примеры применения дайной функции представлены ниже:
Th1elelnterpolation([[l,3].[2.5].[4,75].[5.4]], х);
2 + 1944 402
~ 77 + 77 *
> Thie1elnterpolation([1.2.a].' [2.4,3], 3):
Пакет для работы с полиномами PolynomialTools
Обзор возможностей пакета PolynomialTools
Пакет для работы с полиномами PolynomialTools предназначен для выполнения ряда специальных операций с полиномами или создания полиномов с заданными свойствами. Этот пакет имеет небольшое число функций:
with(PolynomialTools):
[IsSelfRecipmcal, MinimalPolynomial, PDEToPolynomial, PolynomialToPDE. Shorten,
Shorter, Sort, Split, Splits, Translate]
В пакет входят функции расщепления, сортировки и преобразования полиномов (в том числе в дифференциальные уравнения и наоборот) и др.
Функции для работы с полиномами
Рассмотрим несколько фуйкций пакета PolynomialTools общего характера.
Примеры применения этой функции представлены ниже:'
with(PolynomialTools):
IsSeifReciprocal(x*4+xA3+x+l. х. 'р');-
^ПРИМЕЧАНИЕ^ПРИМЕЧАНИЕФункция IsSelfReciprocal(a, х, 'р') проверяет полином а(х) на условие coeff(a,x,k) = =coeff(a,x,d-k) для всех k = O..d, где d = degree(a, х) — порядок полинома. Если это условие выполняется, то возвращается логическое значение true, иначе — false. Если порядок d четный и если задан третий аргумент р, то р будет представлять полином Р порядка d/2, такой, что хЛ(d/2)*Р(х+1/х) = а. При нечетном d полином а будет взаимо- обратным, что подразумевает деление на х+1. В этом случае, если р указано, результат вычисляется в форме а/(х+1).
^ПРИМЕЧАНИЕ
^ПРИМЕЧАНИЕ
true
> р:
—2 + х +
IsSelfReciprocal(х*5-3*х*4+х,3+х*2-3*х+1, х, 'р');
true
Р:
3 - 4 % + х2
г := evalf( l+sqrt(2) );
г := 2.414213562
Функция MinimalPolynomlal (г, n, асе) возвращает полином минимальной степени не превышающей п, имеющий корень г. Необязательный аргумент асе задает погрешность приближения. Функция MinimalPolynomiа!(г, n) использует решетчатый алгоритм и находит полином степени п (или менее) с наименьшими целыми коэффициентами. Корень г может быть действительным или комплексным. Результат зависит от значения переменной окружения Digits. По умолчанию асе задано как 10A(Digits-2). Примеры применения данной функции:
Minimal Polynomial( г. 2 );
1 -2_Х+_Х2
г : = l+sqrt(2);
г := 1 + /I
( г. 2 );
1 +/2,2
Minimal Polynomlal ( 1.234, 3 ):
-109 + 61 _X-5 _X2 + 22 _X3
fsolveC X, _X ):
1.234000001
Функция SplitCa. x, b) служит для расщепления полинома а с независимой переменной х. Параметр Ь— необязательный. Функция Split(а, х) осуществляет комплексную факторизацию инвариантного полинома а по х. Если третий аргумент b задан, он представляет множество элементов [tltm), таких что полином а расщепляется над K=Q(tltm), где Q означает поле рациональных чисел. Примеры:
Split(xA2+x+l.x);
(у - RootOf(_Z2 + _Z + 1)) (х + 1 + RootOf(_Z2 + _Z + 1))
Split(хА2+у*х+1+уА2, x. 'b'):
(x- RootOf(_Z2 + y _Z+ 1 +y2)) (x + y + RootOf(_Z2 + y _Z+ 1 + y2))
b;
{RootOf(_Z2 + у Z + 1 + у2)}
В пакете определена еще одна подобная функция Splits, с которой можно познакомиться по справке на нее.
Функция Translated, х, хО) преобразует полином а(х) с подстановкой х = х + хО, где хО — константа. Примеры применения этой функции даны ниже:
Translate(xA2,x,l);
1 + 2 х + х2
expand(eval(xA2,x=x+l));
1 + 2 х + х2
Translate(xA3,x,2);
8 + 12 х + 6 х2 + х2
expand(eval(хА3,х=х+2));
8 + 12x + 6xz+x3
Translate((x+DA3,x,-1);
Функции сортировки полиномов
Для сортировки полиномов предназначены следующие три функции:
Shorter(f. g. х) Sort(v. х) Shortentf, х)
Здесь f и g полиномы, v — список полиномов их— независимая переменная. Функции отличаются характером сортировки.
Функция Shorter определяет полином f как более короткий, чем д, по следующим признакам: меньшая длина, меньшее имя независимой переменной х, не дробный и меньшая степень других переменных. Функция Sort сортирует лист полиномов х по признакам, определяемым Shorter. Функция Shorten использует преобразования Мебиуса. Многочисленные детали ее применения можно найти в справке по данной функции.
Примеры применения функций сортировки:
Shorten(xA2+x+l,x):
х2 + 3
Shorten(3*xA3+18*x+14,x):
х3 - 6
Shorten(xA4+32):
х4 + 2
Shorter(хА3.х+5.х);
falsez
Sort([xA3.x'2,x+l.x+5]);
Error, (in sort_poly) sort_poly uses a 2nd argument, x,which is missing
> Sort([xA3,xA2.x+l,x+5],x):
Функции преобразования полиномов в PDE и обратно
Функция PolynomialToPDE(polys, vans, depvars) преобразует полиномы polys по независимым переменным vars в дифференциальные уравнения с частными производными (PDE). Другая функция PDEToPolynomial (pdes, vars, depvars) осуществляет обратное преобразование.
Следующие примеры иллюстрируют применение этих функций:
S:=S:=> S:= PolynomialToPDE([(x*2 - 2*х + l)*u + xA3*v], [х]. [u.v]);
S:=
S:=
u(x) Г 2 Д'UW + UW + дх2I ах
> PDEToPolynomial(5. [х], [u.v]);
[(х2 - 2х + 1) и + .x3 v]
Что нового мы узнали?
В этом уроке мы научились:
О Обращаться к пакетам расширения.
О Пользоваться функциями пакетов комбинаторики.
О Применять пакет финансово-экономических функций.
О Использовать ортогональные многочлены из пакета orthpoly.
О Работать с суммами пакета sumtools.
О Применять степенные разложения пакета powerseries.
О Работать с пакетом численной аппроксимации numapprox.
О Использовать интегральные преобразования пакета inttrans.
О Осуществлять приближение кривых с помощью пакета CurveFitting.
О Использовать пакет работы с полиномами PolynomialTools.
®) УРОК®) УРОКПакеты линейной алгебры и функциональных систем
®) УРОК
®) УРОК
Основные определения линейной алгебры
Пакет решения задач линейной алгебры linalg
Пакет линейной алгебры с алгоритмами NAG LinearAlgebra
Интеграция системы Maple 7 с матричной системой MATLAB
Пакет линейных функциональных систем
LinearFunctionalSystems
Основные определения линейной алгебры
Прежде чем перейти к рассмотрению обширных возможностей пакетов Maple 7 по части решения задач линейной алгебры, рассмотрим краткие определения, относящиеся к ней.
Матрица (тхп) — прямоугольная двумерная таблица, содержащая т строк и п столбцов элементов, каждый из которых может быть представлен числом, константой, переменной, символьным или математическим выражением (расширительная трактовка матрицы).
Квадратная матрица — матрица, у которой число строк т равно числу столбцов п. Пример квадратной матрицы размера 3x3:
1 2 3
4 5 6
7 8 9
Сингулярная (вырожденная) матрица — квадратная матрица, у которой детерминант (определитель) равен 0. Такая матрица обычно не упрощается при символьных вычислениях. Линейные уравнения с почти сингулярными матрицами могут давать большие погрешности при решении.
Единичная матрица — это квадратная матрица, у которой диагональные элементы равны 1, а остальные элементы равны 0. Ниже представлена единичная матрица размера 4x4:
10 0 0
0 10 0
0 0 10
0 0 0 1
Сингулярные значения матрицы А — квадратные корни из собственных значений матрицы Ат-А, где Ат - транспонированная матрица А (см. ее определение ниже); Транспонированная матрица — матрица, у которой столбцы и строки меняются местами, то есть элементы транспонированной матрицы удовлетворяют условию AT(i,j)=A(j,i). Приведем простой пример.
Исходная матрица:
b с е /
к I
Транспонированная матрица:
a d i b е к с f I
Обратная матрица — это матрица М~‘, которая, будучи умноженной на исходную квадратную матрицу М, дает единичную матрицу Е.
Ступенчатая форма матрицы соответствует условиям, когда первый ненулевой элемент в каждой строке есть 1 и первый ненулевой элемент каждой строки появляется справа от первого ненулевого элемента в предыдущей строке, то есть все элементы ниже первого ненулевого в строке — нули.
Диагональ матрицы — расположенные диагонально элементы А матрицы А. В приведенной ниже матрице элементы диагонали представлены заглавными буквами:
Обычно указанную диагональ называют главной диагональю — для матрицы А, приведенной выше, это диагональ с элементами А, Е и L. Иногда вводят понятия поддиагоналей (элементы d и к") и наддиагоналей (элементы b и /). Матрица, все элементы которой, расположенные кроме как на диагонали, поддиагонали и наддиагонали, равны нулю, называется ленточной.
Ранг матрицы — наибольший из порядков отличных от нуля миноров квадратной матрицы.
След матрицы -- сумма диагональных элементов матрицы.
Определитель матрицы — это многочлен от элементов квадратной матрицы, каждый член которого является произведением п элементов, взятых по одному из каждой строки и каждого столбца со знаком произведения, заданным четностью перестановок:
detA = ^aly(-l)/+1M^>.■
где М^7> — определитель матрицы порядка п - 1, полученной из матрицы А вычеркиванием первой строки и /го столбца. В таком виде определитель (он же детерминант) легко получить в символьных вычислениях. В численных расчетах мы будем подразумевать под определителем численное значение этого многочлена.
Матрица в целой степени — квадратная матрица в степени п (п — целое неотрицательное число), определяемая следующим образом: М° = Е, М1 = М, М2 = ММ М = М"-*-М.
Идемпотентная матрица — матрица, отвечающая условию Р2 “ Р. Симметрическая матрица — матрица, отвечающая условию Ат = А.
Кососимметрическая матрица — матрица, отвечающая условию Ат = -А.
Ортогональная матрица — матрица, отвечающая условию Ат = А"1.
Нуль-матрица — матрица, все элементы которой равны 0.
Блок-матрица — матрица, составленная из меньших по размеру матриц, также можно представить как матрицу, каждый элемент которой — матрица. Частным случаем является блок-диагональная матрица — блок-матрица, элементы-матрицы которой вне диагонали — нуль-матрицы.
Комплексно-сопряженная матрица — матрица А, полученная из исходной матрицы А заменой ее элементов на комплексно-сопряженные.
Эрмитова матрица — матрица А, удовлетворяющая условию А = АТ.
Собственный вектор квадратной матрицы А -- любой вектор х е V", х * 0, удовлетворяющий уравнению Ах = gx, где g — некоторое число, называемое собственным значением матрицы А.
Характеристический многочлен матрицы — определитель разности этой матрицы и единичной матрицы, умноженный на переменную многочлена, — |А - gE|. Собственные значения матрицы — корни ее характеристического многочлена. Норма — обобщенное понятие абсолютной величины числа.
Норма трехмерного вектора |jx|i — его длина.
Норма матрицы — значение sup(||Ax||/||x||).
L-норма матрицы А — число ||А||д = тах^|Д- у|.
У i
Матричная форма записи системы линейных уравнений — выражение АХ = В, где А — матрица коэффициентов системы, X — вектор неизвестных и В — вектор свободных членов. Один из способов решения такой системы очевиден — X = А ‘В, где А"1 — обратная матрица.
Пакет решения задач линейной алгебры linalg
Состав пакета linalg
Несомненно, что уникальной возможностью системы Maple 7, как и других систем компьютерной алгебры, является возможность решения задач линейной алгебры в символьном (формульном, аналитическом) виде. Однако такое решение представляет скорее теоретический, чем практический интерес, поскольку даже при небольших размерах матриц (уже при 4-5 строках и столбцах) символьные результаты оказываются очень громоздкими и труднообозримыми. Они полезны только при решении специфических аналитических задач, например
с разреженными матрицами, у которых большинство элементов имеют нулевые значения.
Поэтому разработчики Марф 7 были вынуждены реализовать в своей системе численные методы решения задач линейной алгебры, которые широко используются в основных сферах ее приложения — математическом моделировании систем и устройств, расчетах в электротехнике, механике, астрономии и т. д.
В ядро Maple 7, как отмечалось, введены очень скромные и минимально необходимые средства для решения задач линейной алгебры. Основной упор в их реализации сделан на подключаемые пакеты. Основным из них, унаследованным от предшествующих реализаций системы, является пакет решения задач линейной алгебры 11 nal д. Это один из самых обширных и мощных пакетов в области решения задач линейной алгебры. Он содержит свыше ста функций:
> with(linalg):
Warning, the names fibonacci, inverse and multiply have been redefined
Warning, the protected names norm and trace have been redefined and unprotected [BlockDiagonal, GramSchmidt,JordanBlock,LUdecomp, QRdecomp, Wronskian, addcol, addrow, adj, adjoint, angle, augment, backsub, band, basis, bezout, blockmatrix, charmat, charpoly, cholesky, col, coldim, colspace, colspan, companion, concat, cond, copyinto, crossprod, curl, definite, delcols, delrows, det, diag, diverge, dotprod, eigenvals, eigenvalues, eigenvectors, eigenvects, entermatrix, equal, exponential, extend, ffgausselim, fibonacci,forwardsub, frobenius, gausselim, gaussjord, geneqns, genmatrix, grad, hadamard, hermite, hessian, hilbert, htranspose, thermite, indexfunc, innerprod, intbasis, inverse, ismith, issimilar, iszero,jacobian, jordan, kernel, laplacian, leastsqrs, linsolve, matadd, matrix, minor, minpoly, mulcol, mulrow, multiply, norm, normalize, nullspace, orthog, permanent, pivot, potential, randmatrix, randvector, rank, ratform, row, rowdim, rowspace, rowspan, rref scalarmul, singularvals, smith, stackmatrix, submatrix, subvector, sumbasis, swapcol, swaprow, Sylvester, toeplitz, trace, transpose, vandermonde, vecpotent, vectdim, vector, Wronskian]
Ниже указано назначение тех функций пакета linalg, которые подробно не описаны:
О addcol — добавляет к одному из столбцов другой столбец, умноженный на некоторое число;
О addrow — добавляет к одной из строк другую строку, умноженную на некоторое число;
О angle — вычисляет угол между векторами;
О augment — объединяет две или больше матриц по горизонтали;
О backsub — реализует ме/од обратной подстановки при решении системы линейных уравнений (см. также forwardsub);
О band — создает ленточную матрицу;
Q basis — находит базис векторного пространства;
О bezout — создает Bezout-матрицу двух полиномов;
О BlockDi agonal — создает блок-диагональную матрицу;
О blockmatrix — создает блок-матрицу;
О cholesky — декомпозиция Холесского для квадратной положительно определенной матрицы;
О charmat — создает характеристическую матрицу (charmat(M,v) — матрица, вычисляемая как v Е-М);
О charpoly — возвращает характеристический полином матрицы;
О col space — вычисляет базис пространства столбцов;
О col span — находит базис линейной оболочки столбцов матрицы;
О companion — вычисляет сопровождающую матрицу, ассоциированную с полиномом;
О cond — вычисляет число обусловленности матрицы (cond(M) есть величина norm(M) norm(M4));
О curl — вычисляет ротор вектора;
О definite — тест на положительную (отрицательную) определенность матрицы;
О di ад — создает блок-диагональную матрицу;
О diverge — вычисляет дивергенцию векторной функции;
О eigenvals — вычисляет собственные значения матрицы;
О eigenvects — вычисляет собственные векторы матрицы;
О equal — определяет, являются ли две матрицы равными;
О exponential — создает экспоненциальную матрицу;
О ffgausselim — свободное от дробей Гауссово исключение в матрице;
О fibonacci — матрица Фибоначчи;
О forwardsub — реализует метод прямой подстановки при решении системы линейных уравнений (например, для матрицы L и вектора b forwardsub(L, b) возвращает вектор решения х системы линейных уравнений L x=b);
О frobenius — вычисляет форму Фробениуса (Frobenius) матрицы;
О gausselim — Гауссово исключение в матрице;
О gaussjord — синоним для rref (метод исключения Гаусса—Жордана);
О geneqns — генерирует элементы матрицы из уравнений;
О genmatrix — генерирует матрицу из коэффициентов уравнений;
О grad — градиент векторного выражения;
О GramSchmidt — вычисляет ортогональные векторы;
О hadamard — вычисляет ограничение на коэффициенты детерминанта;
О hessian — вычисляет гессиан-матрицу выражения;
О hilbert — создает матрицу Гильберта;
О htranspose — находит эрмитову транспонированную матрицу;
О Thermite — целочисленная эрмитова нормальная форма;.
О indexfunc — определяет функцию индексации массива;
О innerprod — вычисляет векторное произведение;
О intbasis — определяет базис пересечения пространств;
О 1 smith — целочисленная нормальная форма Шмитта;
О iszero — проверяет, является ли матрица ноль-матрицей;
О Jacobian — вычисляет якобиан векторной функции;
О JordanBlock возвращает блок-матрицу Жордана;
О kernel — находит базис ядра преобразования, соответствующего данной матрице;
О laplacian — вычисляет лапласиан;
О leastsqrs — решение уравнений по методу наименьших квадратов;
О 1 insolve — решение линейных уравнений;
О Ludecomp — осуществляет LU-разложение;
О minpoly — вычисляет минимальный полином матрицы;
О mulcol — умножает столбец матрицы на заданное выражение;
О mul row — умножает строку матрицы на заданное выражение;
О multiply — перемножение матриц или матрицы и вектора;
О normalize — нормализация вектора;
О orthog — тест на ортогональность матрицы;
О permanent — вычисляет перманент матрицы — определитель, вычисляемый без перестановок;
О pivot — вращение относительно элементов матрицы;
О potential — вычисляет потенциал векторного поля;
О Qrdecomp — осуществляет QR-разложение;
О randmatrix — генерирует случайные матрицы;
О randvector — генерирует случайные векторы;
О ratform — вычисляет рациональную каноническую форму;
О references — выводит список основополагающих работ по линейной алгебре;
О rowspace — вычисляет базис пространства строки;
О rowspan — вычисляет векГоры охвата для места столбца;
О rref — реализует преобразование Гаусса-Жордана матрицы;
О scalarmul — умножение матрицы или вектора на заданное выражение;
О singval — вычисляет сингулярное значение квадратной матрицы;
О singularvals — возвращает список сингулярных значений квадратной матрицы;
О smith — вычисляет Шмиттову нормальную форму матрицы;
О submatrix — извлекает указанную подматрицу из матрицы;
О subvector — извлекает указанный вектор из матрицы;
О sumbasis — определяет базис объединения системы векторов;
О swapcol — меняет местами два столбца в матрице;
О swaprow — меняет местами две строки в матрице;
О Sylvester — создает матрицу Сильвестра из двух полиномов;
О toepl itz — создает матрицу Теплица;
О trace — возвращает след матрицы;
О vandermonde — создает вандермондову матрицу;
О vecpotent — вычисляет векторный потенциал;
О vectdim — определяет размерность вектора;
О wronskian — вронскиан векторных функций.
Ниже мы рассмотрим более подробно наиболее часто используемые функции из этого пакета. С деталями синтаксиса (достаточно разнообразного) для каждой из указанных функций можно ознакомиться в справочной системе Maple. Для этого достаточно использовать команду ?name;, где name — имя функции (из приведенного списка).
Интерактивный ввод матриц
Для интерактивного ввода матриц можно, определив размерность некоторого массива, использовать функцию entermatrix:
> A:=array(l..3.1..3):
А :=агтау(1 .. 3, 1 .. 3, [ ])
После исполнения этого фрагмента документа диалог с пользователем имеет следующий вид:
> entermatrix(A);
enter element 1,1 > 1: enter element 1.2 > 2: enter element 1.3 > 3: enter element 2,1 > 4; enter element 2,2 > 5: enter element 2,3 > 6: enter element 3,1 > 7; enter element 3,2 > 8; enter element 3.3 > 9:
"123'
456
789
> B:-W:
> В[1.1]; 1
> В[2.2]; 5
> В[3,3]: 9
Основные функции для задания векторов и матриц
В библиотечном файле 11 nalg имеются следующие функции для задания векторов и матриц:
О vector(n, 1 ist) — создание вектора с п элементами, заданными в списке list;
О matrix(n,m, 11st) — создание матрицы с числом строк п и столбцов m с элементами, заданными списком list.
Ниже показано применение этих функций:
> V:=vector(3.[12,34,56]);
Ю=[12, 34, 56]
M:=matr1x(2.3,[1.2,3,43);
Г1 23 1
V[2];
34
М[1,3];-
3
> М[2.3];
Обратите внимание на последние примеры — они показывают вызов индексированных переменных вектора и матрицы.
Функции для работы с векторами и матрицами
Для работы с векторами и матрицами Maple 7 имеет множество функций, входящих в пакет 11 nalg. Ограничимся приведением краткого описания наиболее распространенных функций этой категории. .
Операции со структурой отдельного вектора V и матрицы М:
О coldim(M) — возвращает число столбцов матрицы М;
О rowdim(M) — возвращает число строк матрицы М;
О vectdim(V) — возвращает размерность вектора V;
О col(M.i) — возвращает г-й столбец матрицы М;
О row(M,i.) — возвращает г-ю строку матрицы М;
О штпог(М, 1, J) — возвращает минор матрицы М для элемента с индексами 1 и j;
О delcols(M,1.. j) — удаляет столбцы матрицы М от г'-го доу-го;
О del rows(V,i.. j) — удаляет строки матрицы М от г-й доу-й;
О extend(M,m,n,x) — расширяет матрицу М на m строк и п столбцов с применением заполнителя х.
Основные векторные и матричные операции:
О dotprod(U.V) — возвращает скалярное произведение векторов U и V;
О crossprod(U.V) — возвращает векторное произведение векторов U и V;
О norm(V) или norm(M) — возвращает норму вектора или матрицы;
О copyinto(A,B,1, j) — копирует матрицу А в В для элементов последовательно от 1 до j;
О concat(Ml,M2) — возвращает объединенную матрицу с горизонтальным слиянием матриц Ml и М2;
О stack(Ml,M2) — возвращает объединенную матрицу с вертикальным слиянием Ml и М2;
О matadd(A.B) и evalm(A+B) — возвращает сумму матриц А и В;
О multiply(A.B) и evalm(A&*B) — возвращает произведение матриц А и В;
О adjoint(M) или adj(M) — возвращает присоединенную матрицу, такую что M?adj(M) дает диагональную матрицу, определитель которой есть det(M);
О charpoly(M,lambda) — возвращает характеристический полином матрицы М относительно заданной переменной lambda;
О det(M) — возвращает детерминант (определитель) матрицы М;
О E1genvals(M,vector) — инертная форма функции, возвращающей собственные значения матрицы М и (при указании необязательного параметра vector) соответствующие им собственные векторы;
О jordan(M) — возвращает матрицу М в форме Жордана;
О hermite(M) — возвращает матрицу М в эрмитовой форме;
О trace(M) — возвращает след матрицы М;
О rank(M) — возвращает ранг матрицы М;
О transpose(M) — возвращает транспонированную матрицу М;
О inverse(M) или evalm(l/M) — возвращает матрицу, обратную к М;
О singularvals(A) — возвращает сингулярные значения массива или матрицы А.
Приведем примеры применения некоторых из этих функций:
> M:-matrix(2,2,[a,b.c,d]);
transpose(M);
"а с" b d
inverse(M);
" db
-ad + bc -a d + b c
ca
-a d + b c -a d + b c
det(M);
d - b c
rank(M);
2
trace(M):
a + d
M:=matrix(2,2,[1,2,3,4]);
ev:=evalf(Eigenvals(M,V));
ev := [-.372281323, 5.372281323]
> eval(V): '-.8245648401.5657674650> eval(V): '-.8245648401.5657674650-.4222291504"-.9230523142-.4222291504"-.9230523142
> eval(V): '-.8245648401
.5657674650
> eval(V): '-.8245648401
.5657674650
-.4222291504"
-.9230523142
-.4222291504"
-.9230523142
charpoly(M.p);
/-5/7-2/-5/7-2> jordan(M);> jordan(M);
/-5/7-2
/-5/7-2
> jordan(M);
> jordan(M);
> A:= array! [[1,0,1],[1,0,1],[0,1,0]] );
A := 1A := 1000 Г
A := 1
A := 1
0
0
0 1
1 0
singularvals(A);
[0,2,1]
Читатель, понимающий суть матричных вычислений, легко справится с тестированием других функций, входящих в пакет linalg. В приведенных примерах полезно обратить внимание на то, что многие матричные функции способны выдавать результаты вычислений в аналитическом виде, что облегчает разбор выполняемых ими операций.
Решение систем линейных уравнений
Ниже представлен простой пример составления и решения трех систем линейных уравнений с применением функций, входящих в пакет linalg:
> wl th(11nalg):
> C:-matr1x(3.3.[[4.8.2].[6.2.3].[3.7.11]]);
2"
3
11
> B:=matrix(3.1.[5.6.1]);
5"
6
1
> A:=evalm(C):
"4 86 2"4 86 2T
"4 8
6 2
"4 8
6 2
3
11
> Al:=copy1nto(B,C.l.l):
'5
8
2'
Al :=
6
2
3
1
7
И
> C:-evalm(A):A2:-copy1nto(B,C,1.2):
"4
5
2'
А2 :=
6
6
3
_3
1
И,
> C:=evalm(A):A3:=copyinto(B,C,l,3);
АЗ :=
"4 8 5"
6 2 6
3 7 1
> xl:-det(Al)/det(A): ,419
X1 ‘380
> x2:=det(A2)/det(A);
3
20
> x3:-det(A3)/det(A) x3‘ 95
А теперь рассмотрим пример решения матричного уравнения в символьном виде: > A:-matrix(2.2,[a,b,c,d]):
'а Ь"с d
> B:=vector(2,[c.d]); В := [c,d]
> X:=linsolve(A,B);
A:=A:=d(-b + c) -da + c2bc- da ’ b c - d a
A:=
A:=
Следующий пример показывает решение более сложной системы линейных уравнений с комплексными коэффициентами:
A:=matrix(2,2.[[10+200*1,-200*1],[-200*1,170*1]]):
Г10 + 200 7 -200 Г
Я ’ [ -200 7170 7.
B:=vector(2,[5,0]):
S := [5, 0]
X:=multiplу(1nverse(A).В);
_г 289510 , 170600 "
7778 3889 ’3889 3889
Digits:=5: convertteval(X).float);
[.037156 + .13114 7, .043713 + .15428 7]
На этот раз решение получено использованием функций умножения матриц и вычисления обратной матрицы в виде X = А'1 В, то есть в матричном виде. В конце примера показано преобразование результатов с целью их получения в обычной форме комплексных чисел с частями, представленными в форме чисел с плавающей точкой.
Пакет линейной алгебры с алгоритмами NAG LinearAlgebra
Назначение и загрузка пакета LinearAlgebra
В последние годы разработчики систем символьной математики осознали, что малая скорость выполнения векторных и матричных операций при решении задач линейной алгебры оборачивается потерей заметной части рынка систем компьютерной математики. Новые версии таких систем (Mathematica 4/4.1 и Maple 6/7) отличаются от прежних прежде всего резким повышением эффективности решения задач линейной алгебры в численном виде.
В новых реализациях систем Maple и MATLAB была сделана ставка на использование давно апробированных быстрых алгоритмов линейной алгебры, предложенных создателями Number Algorithm Group (NAG). Эти алгоритмы издавна применяются на больших ЭВМ и суперкомпьютерах, обеспечивая ускорение численных матричных операций от нескольких раз до нескольких десятков раз. Их применение обеспечивает эффективное использование систем символьной
математики в решении задач, сводящихся к задачам линейной алгебры. В числе таких задач многочисленные задачи теоретической электротехники, механики многих объектов, моделирования электронных устройств и т. д.
В Maple 7 использование алгоритмов NAG является одной из первых отличительных черт новой версии системы. Оно реализуется новым пакетом LinearAlgebra. Для его загрузки используются следующие команды:
restart; with(LinearAlgebra):
VAdd, Adjoint, BackwardSubstitute, BandMatrix, Basis, BezoutMatrix, BidiagonalForm, BilinearForm, CharacteristicMatrix, CharacteristicPolynomial, Column, ColumnDimension, ColumnOperation, ColumnSpace, CompanionMatrix, ConditionNumber, ConstantMatrix, ConstantVector, CreatePermutation,
CrossProduct, DeleteColumn, DeleteRow, Determinant, DiagonalMatrix, Dimension,
Dimensions, DotProduct, Eigenvalues, Eigenvectors, Equal, ForwardSubstitute, FrobeniusForm, GenerateEquations, GenerateMatrix, GetResultDataType, GetResultShape, GivensRotationMatrix, GramSchmidt, HankelMatrix, HermiteForm, HermitianTranspose, HessenbergForm, HilbertMatrix, HouseholderMatrix, IdentityMatrix, IntersectionBasis, IsDefinite, IsOrthogonal, IsSimilar, IsUnitary,
JordanBlockMatrix, JordanForm, LA_Main, LUDecomposition, LeastSquares, LinearSolve, Map, Map2, MatrixAdd, Matrixinverse, MatrixMatrixMultiply, MatrixNorm, MatrixScalarMultiply, MatrixVectorMultiply, MinimalPolynomial, Minor, Multiply, NoUserValue, Norm, Normalize, NullSpace, OuterProductMatrix, Permanent, Pivot, QRDecomposition, RandomMatrix, Random Vector, Rank, Row,
RowDimension, RowOperation, RowSpace, ScalarMatrix, ScalarMultiply,
ScalarVector, SchurForm, SingularValues, SmithForm, SubMatrix, SubVector, SumBasis, SylvesterMatrix, ToeplitzMatrix, Trace, Transpose, TridiagonalForm, UnitVector, VandermondeMatrix, VectorAdd, VectorAngle, VectorMatrixMultiply, VectorNorm, VectorScalarMultiply, ZeroMatrix, ZeroVector, Zip]
infolevel[LinearAlgebra]:=l;
infolevel,. „ v :- 1
LinearAlgebra
Нетрудно заметить, что многие функции этого пакета повторяет по назначению функции более старого пакета linalg, описанного выше. Поэтому мы не будем останавливаться на их повторном описании. Главное то, что эти функции задействуют возможности быстрых алгоритмов NAG и в отличие от функций пакета 11 nal g ориентированы на численные расчеты в формате обработки вещественных чисел, характерном для компьютерной платформы. Знающий матричные методы читатель легко поймет назначение функций пакета LinearAlgebra по их составным названиям. Например, DeleteColumn означает удаление столбца матрицы, ToeplitzMatrix означает создание матрицы Теплица, ZeroMatrix — создание матрицы с нулевыми элементами и т. д. Все имена функций этого пакета начинаются с заглавной буквы.'
Примеры матричных операций с применением пакета LinearAlgebra
Применение алгоритмов NAG особенно эффективно в том случае, когда используется встроенная в современные микропроцессоры арифметика чисел с плавающей запятой. С помощью специального флага такую арифметику можно отключать или включать:
UseHardwareFloats := false; # use software floats
UseHardwareFloats :=false
UseHardwareFloats ;= true; # default behaviour
UseHardwareFloats ;= true
Матрицы в новом пакете линейной алгебры могут задаваться в угловых скобках, как показано ниже:
> М1:=«1|2>,<4|5»; М2:=«1|2.>,<4|5»;
После этого можно выполнять с ними типовые матричные операции. Например, можно инвертировать (обращать) матрицы:
> М1Щ-1); М2Ч-1);
" -52"
33
4-1
33
Matrixinverse: "calling external function"
Matrixinverse: "NAG" hw_f07adf
Matrixinverse: "NAG" hw_fU7ajf
'-1.66666666666666652 .666666666666666630"
1.33333333333333326 -.333333333333333315
Обратите внимание, что Maple 7 теперь выдает информационные сообщения о новых условиях реализации операции инвертирования матриц с вещественными элементами, и в частности об использовании алгоритмов NAG и арифметики, встроенной в сопроцессор.
Следующий пример иллюстрирует создание двух случайных матриц Ml и М2 и затем их умножение:"
> Ml:=RandomMatrix(2,3): M2:=RandomMatrix(3,3);
Mult1ply(Ml,M2,'inplace'); Ml;
-Г*50 62 -711
Ml :
30 -79 28
"20 -34
-21"
М2:=
-7 -62
-56
16 -90
-8
"-2570
4246
-1854"
1601
1358
3570
Г-2570
4246
-18541
1601 1358 3570
Параметр inplace в функции умножения обеспечивает помещение результата умножения матриц на место исходной матрицы Ml — излюбленный прием создателей быстрых матричных алгоритмов NAG. Поскольку матрицы Ml и М2 заданы как случайные, то при повторении этого примера результаты, естественно, будут иными, чем приведенные.
Следующий пример иллюстрирует проведение хорошо известной операции LU-разложения над матрицей М, созданной функцией Matrix:
> M:=Matrix([[14,-8,l],[-ll,-4,18],[3,12,19]]. datatype=float);
LUDecompositionCM,output=['NAG'],1nplace): ipiv:=l[lj;
M;
M;=M;="14.-11.3."14.-11.3.-8.-4.12.-8.-4.12.1."18.19.1."18.19.
M;=
M;=
"14.
-11.
3.
"14.
-11.
3.
-8.
-4.
12.
-8.
-4.
12.
1."
18.
19.
1."
18.
19.
LUDecomposition: calling external function"
LUDecomposition: "NAG" hw_f07adf
" 11 Г 14.-8.1.
3 , .21428571428571427413.714285714285713618.7857142857142848
3 -.785714285714285698 -.750000000000000000 32.8750000000000000
Г
ipiv :=ipiv :=3
ipiv :=
ipiv :=
3
'14..214285714285714274-.785714285714285698'14..214285714285714274-.785714285714285698-8.13.7142857142857136-.750000000000000000-8.13.7142857142857136-.7500000000000000001.18.785714285714284832.87500000000000001.18.785714285714284832.8750000000000000
'14.
.214285714285714274-.785714285714285698
'14.
.214285714285714274-.785714285714285698
-8.
13.7142857142857136
-.750000000000000000
-8.
13.7142857142857136
-.750000000000000000
1.
18.7857142857142848
32.8750000000000000
1.
18.7857142857142848
32.8750000000000000
Конечной целью большинства матричных операций является решение систем линейных уравнений. Для этого пакет LinearAlgebra предлагает великое множество методов и средств их реализации. Мы ограничимся простым примером одновременного решения сразу трех систем уравнений. Дабы не загромождать книгу массивными выражениями, ограничимся решением систем из двух линейных уравнений, матрица коэффициентов у которых одна, д векторы свободных членов разные. Ниже показан цример решения такой системы:
> M:-MatMx([[l..3],[4.53].datatype»float);
Vl:*a,,2»r
V2:=<7,-11>;
V3:=<-34,-67>:
LinearSolve(M,<Vl|V2|V3>);
LinearSolve: "calling external function"
LinearSolve: "NAG" hw_fD7adf
LinearSolve: "NAG" hw_f07aef
".142857142857142905 -9.71428571428571352 -4.42857142857143060"
.285714285714285698 5.57142857142857118 -9.85714285714285588
M:=Matrix([[l.,3],[4.5]],datatype-float):
ipiv, M := LUDecomposition(M.output=['NAG'],inplace):
LinearSolve([1piv, M], <V1|V2|V3>):
LUDecomposition: "calling external function"
21 Г 4.21 Г 4.ipiv, M :=ipiv, M :=LUDecomposition: "NAG" hw_f07adf
21 Г 4.
21 Г 4.
ipiv, M :=
ipiv, M :=
2 ’ .250000000000000000 1.75000000000000000
LinearSolve: "calling external function"
LinearSolve: "NAG" hw_f07aef
".142857142857142905 -9.71428571428571352 -4.4285714285714306O
.285714285714285698 5.57142857142857118 -9.85714285714285588
На этом, учитывая ограниченный объем книги, мы завершаем обзор пакета LinearAlgebra. Читатель, познающий или знающий методы линейной алгебры, может опробовать в работе любые функции этого пакета самостоятельно или познакомиться со множеством примеров, размещенных в справочной системе Maple 7. Возможности пакетов linalg и LinearAlgebra удовлетворят самых требовательных специалистов в этой области математики.
Интеграция Maple 7 с MATLAB
Краткие сведения b MATLAB
Несмотря на обширные средства линейной алгебры (да и многие другие), имеющиеся у системы Maple 7, есть системы компьютерной математики, решающие нех«й^*е классы задач более эффективно, и прежде всего быстрее. В области
линейной алгебры к таким системам, безусловно, относится система MATLAB, созданная компанией MathWorks, Inc. Ее название происходит именно от слов MATrix LABoratory — матричная лаборатория.
MATLAB содержит в своем ядре многие сотни матричных функций и является одной из лучших матричных систем для персональных компьютеров. Она реализует самые современные алгоритмы матричных операций, включая, кстати, и алгоритмы NAG. Однако главное достоинство MATLAB — наличие множества дополнительных пакетов как по классическим разделам математики, так и по самым новейшим, таким как нечеткая логика, нейронные сети, идентификация систем, обработка сигналов и др. Знаменитым стал пакет моделирования систем и устройств Simulink, включаемый в пакет поставки системы MATLAB. Последней версией системы является MATLAB 6.0.
В то же время нельзя не отметить, что MATLAB — одна из самых громоздких математических систем. Инсталляция ее полной версии занимает около 1,5 Гбайт дискового пространства. Несмотря на это, интеграция различных математических систем с данной системой, похоже, становится своеобразной модой. Такая возможность предусмотрена и в системе Maple 7 с помощью пакета Matlab.
Загрузка пакета расширения Matlab
Для загрузки пакета Matlab используется команда:
with(Matlab);
\chol, closelink, defined, det, dimensions, eig, evalM,fft, getvar, inv, lu, ode45, openlink, qr, setvar, size, square, transpose ]
Использование этой команды ведет к автоматическому запуску системы MATLAB (гарантируется работа с версиями MATLAB до 5.3.1 включительно) и установлению необходимой объектной связи между системами Maple 7 и MATLAB.
2>^ПРИМЕЧАНИЕ Как нетрудно заметить, данный пакет дает доступ всего к 18 функциям системы MATLAB (из многих сотен, имеющихся только в ядре последней системы). Таким образом, есть все основания полагать, что возможности MATLAB в интеграции с системой Maple 7 используются пока очень слабо и носят рудиментарный характер. Стоит ли ради этих функций иметь на компьютере огромную систему MATLAB, пользователи должны решать сами. Если ответ положительный, то, скорее всего, пользователь решает тот класс задач, для которых лучше подходит MATLAB, и надо задуматься уже над тем, нужен ли в этом случае Maple.
Типовые матричные операции пакета расширения Matlab
Большинство функций пакета Matlab (не путайте с системой MATLAB, имя которой надо записывать прописными буквами) реализуют самые обычные матричные операции, что и иллюстрируют приведенные ниже примеры.
Зададим матрицу М в формате Maple:
maplefnatrix_a:-array(1..3,1..3,[[6.4,2],[7,8,l],[3,7.3]]):1
Гб 4 21
maplematrix_a := 7 8maplematrix_a := 7 8113 73 733
maplematrix_a := 7 8
maplematrix_a := 7 8
1
1
3 7
3 7
3
3
Ниже даны примеры транспонирования матрицы, ее инвертирования, вычисления детерминанта и собственных значений матрицы:
> Mat! ab[transpose] (mapl ematri х а);
"6.7.3."
4.8.7.
1.3.
Matlab[inv](maplematrix_a);
".212499999999999967 .0250000000000000360 -.150000000000000022"
-.224999999999999978 .149999999999999966.100000000000000032
.312500000000000000 -.374999999999999944 .249999999999999944
Matlab[det](maplematrix_a); 80.
Matlab[eig](maplematrix_a);
"13.8861968635740444 +0./'
1.55690156821298186 + 1.82679340924767875 /
1.55690156821298186 - 1.82679340924767875 I
Можно проверить, является ли матрица квадратной:
Matlab[square](maplematrix_a); true
а также вычислить размер матрицы:
Matlab[dimensions](maplematrix_a);
[3,3]~
Можно также проверить, является ли данная матрица матрицей системы MATLAB:
Mat!ab[defined]("maplematrix_a"):
false
Здесь надо иметь в виду, что форматы матриц в системах Maple и MATLAB различны. Выполним LU-преобразование матрицы:
Matlab[lu](maplematrlх а,output-'L);
"7.8.1."
-.857142857142857094 3.57142857142857162 2.57142857142857162
-.428571428571428548 .799999999999999820 3.19999999999999972
Таким образом, видно, что пакет Maple в данном случае реализует типовые матричные операции, но средствами системы MATLAB. Загрузка последней происходит автоматически при загрузке пакета Matlab. Если система MATLAB не установлена на вашем компьютере, то доступ к функциям пакета Matlab будет отсутствовать, a Maple 7 при попытке использования данных функций будет выдавать сообщения об ошибках. 1 '
Выделение сигнала на фоне шумов
Среди небольшого числа доступных функций системы MATLAB в пакете Matlab нельзя не выделить особо функции быстрого прямого и обратного преобразований Фурье. В системе MATLAB эти функции реализуют наиболее эффективные алгоритмы быстрого преобразования Фурье (БПФ), обеспечивающие решение крупноразмерных задач (например, обработки сигналов, представленных векторами и матрицами больших размеров) в десятки раз быстрее, чем при обычных методах выполнения преобразований Фурье.
Покажем возможность применения БПФ на ставшем классическим примере — выделении спектра полезного сигнала на фоне сильных помех. Зададим некоторый двухчастотный сигнал, имеющий 1500 точек отсчета:
num := 1500:
Time := [seq(.03*t, t=l..num)]:
data := [seq((3.6*cos(T1me[t]) + cos(6*T1me[t])), t=l..num)]:
plots[po1ntplot](z1p((x,y)->[x,y].Time,data), style=Hne);
График сигнала представлен на рис. 15.1.
Рис. 15.1. График исходного сигнала
Теперь с помощью генератора случайных чисел наложим на этот сигнал сильный «шум» (слово «шум» взято в кавычки, поскольку речь идет о математическом моделировании шума, а не о реальном шуме физической природы):
tol := 10000:.
г := rand(0..tol):
noisy data := [seq(r()/(tol)*data[t], t=l..num)J:
plots[pointplot](z1p((x,y)->[x,y],T1me,no1sy_data), style=line):
Нетрудно заметить, что теперь форма сигнала настолько замаскирована шумом (рис. 15.2), что можно лишь с трудом догадываться, что сигнал имеет периодическую составляющую малой амплитуды. Эта высокочастотная составляющая сигнала скрыта шумом.
Подвергнем полученный сигнал (в виде временной зависимости) прямому преобразованию Фурье, реализованному функцией fft:
ft :- fft(no1sy_data):
VectorOptions(ft. datatype):
complex^
Эта операция переводит задачу из временного представления сигнала в частотное, что позволяет использовать частотные методы анализа сигнала. Выделим, к примеру, действительную и мнимую части элементов вектора ft и проверим его размер:
Рис. 15.2. Временная зависимость сигнала с шумомРис. 15.2. Временная зависимость сигнала с шумом> realpart := map(Re, ft):1mag_part := map(Im, ft):> dimensions(ft):[1500]Теперь выполним обычные операции вычисления спектра и зададим построение графика частотного спектра мощности сигнала:> setvarC'FT", ft) ;setvar("n". num):> evalMC'result = FT.*conj(FT)/n");> pwr := getvart"result"):> VectorOptions(pwr, datatype);,fbat%>pwr_list := convert(pwr, list):>pwr_points := [seq([(t-l)/T1me[num], pwr_list[t]]. t=l..num/2)]:>plots[pointplot](pwr_points, style=line):Спектрограмма сигнала представлена на рис. 15.3.> realpart := map(Re, ft):1mag_part := map(Im, ft):> dimensions(ft):[1500]Теперь выполним обычные операции вычисления спектра и зададим построение графика частотного спектра мощности сигнала:> setvarC'FT", ft) ;setvar("n". num):> evalMC'result = FT.*conj(FT)/n");> pwr := getvart"result"):> VectorOptions(pwr, datatype);,fbat%>pwr_list := convert(pwr, list):>pwr_points := [seq([(t-l)/T1me[num], pwr_list[t]]. t=l..num/2)]:>plots[pointplot](pwr_points, style=line):Спектрограмма сигнала представлена на рис. 15.3.
Рис. 15.2. Временная зависимость сигнала с шумом
Рис. 15.2. Временная зависимость сигнала с шумом
> realpart := map(Re, ft):
1mag_part := map(Im, ft):
> dimensions(ft):
[1500]
Теперь выполним обычные операции вычисления спектра и зададим построение графика частотного спектра мощности сигнала:
> setvarC'FT", ft) ;setvar("n". num):
> evalMC'result = FT.*conj(FT)/n");
> pwr := getvart"result"):
> VectorOptions(pwr, datatype);
,fbat%
>pwr_list := convert(pwr, list):
>pwr_points := [seq([(t-l)/T1me[num], pwr_list[t]]. t=l..num/2)]:
>plots[pointplot](pwr_points, style=line):
Спектрограмма сигнала представлена на рис. 15.3.
> realpart := map(Re, ft):
1mag_part := map(Im, ft):
> dimensions(ft):
[1500]
Теперь выполним обычные операции вычисления спектра и зададим построение графика частотного спектра мощности сигнала:
> setvarC'FT", ft) ;setvar("n". num):
> evalMC'result = FT.*conj(FT)/n");
> pwr := getvart"result"):
> VectorOptions(pwr, datatype);
,fbat%
>pwr_list := convert(pwr, list):
>pwr_points := [seq([(t-l)/T1me[num], pwr_list[t]]. t=l..num/2)]:
>plots[pointplot](pwr_points, style=line):
Спектрограмма сигнала представлена на рис. 15.3.
BOO
600
400
200-
246810121416246810121416tr
246810121416
246810121416
' Рис. 15.3. Спектрограмма сигнала
Из нее отчетливо видно, что сигнал представлен двумя частотными составляющими с разной амплитудой. Таким образом, задача четкого выделения полезных компонент спектра из зашумленного сигнала с применением средств системы MATLAB успешно решена.
Пакет анализа линейных функциональных систем LinearFunctionalSystems
Назначение пакета LinearFunctionalSystems
Пакет LinearFunctionalSystems содержит набор функций для решения задач, связанных с анализом линейных функциональных систем. Обычно такие системы описываются линейными дифференциальными уравнениями, имеющими то или иное решение. Пакет LinearFunctionalSystems позволяет провести тестирование подготовленной системы, оценить ряд ее параметров и получить решение одним из ряда методов.
Вызов всех функций пакета осуществляется командой:
> with(LinearFunctionalSystems);
[AreSameSolution, CanonicalSystem, ExtendSeries, HomogeneousSystem, IsSolution, MatrixTriangularization, Polynomialsolution, Properties, RationalSolutidn, SeriesSolution, UmversalDenominator].
Тестовые функции пакета LinearFunctionalSystems
Прежде чем рассматривать основные функции пакета, рассмотрим две тестовые функции. Они представлены следующими формами записи:
IsSolution(sol. sys. vars)IsSolution(sol. A. b. x. case)
IsSolutlon(sol. A. x. case) AreSameSolution(sol. soli)
В них: sol — тестируемое решение, sys — система функциональных уравнений, х — независимая переменная решения, А и b — матрица и вектор с рациональными элементами, case — имя метода решения ('differential', 'difference' или 'qdifference').
Функции решения линейных функциональных систем
Группа основных функций пакета LinearFunctionalSystems имеет идентичный синтаксис и записывается в виде:
name(sys,vars.[method]) или name(A[.b].x.case.[method])
Здесь name — одно из следующих имен:
О Polynomial Solution — решение в форме полинома;
О RationalSolution — решение в форме рационального выражения;
О SeriesSolution — решение в виде ряда;
О Universal Denominator — решение с универсальным знаменателем (и числителем, равным 1).
Система функциональных уравнений задается либо в виде полной системы sys со списком переменных vars, либо в матричном виде с заданием матрицы коэффициентов системы А и вектора свободных членов b (может отсутствовать) с указанием независимой переменной х и параметра case, имеющего значения 'differential', 'difference' или 'qdifference'. Параметр method, задающий метод EG-исключения, может иметь значения 'quasimodular' или 'ordinary'.
Вспомогательные функции
Несколько вспомогательных функций пакета LinearFunctionalSystems представлено ниже:
О MatrixTriangularization(mat, m, n, х, It) — триангуляция матрицы mat размера mxn с указанием типа It ('lead' или 'trail');
О Canon! cal System!shift, sys, vars) или CanonicalSystem(shift, A[, b], x, case) — возвращает систему в каноническом виде (параметр shi ft задается как ' di fference' или ' q - di fference', назначение других параметров соответствует указанным выше для других функций);
О ExtendSeries(sol, deg) — расширяет ряд решения sol до расширенного ряда степени deg;
О HomogeneousSystem(homo, sys, vars) или HomogeneousSystem(homo, А[, b], х, case) — преобразует исходную систему в гомогенную с именем homo.
О Properties(sys, vars) или Properties(A[, b], x, case) — возвращает основные свойства системы.
Примеры применения пакета
LinearFunctionalSystems
Ниже представлен ряд примеров применения пакета LinearFunctionalSystems, иллюстрирующих его возможности;
> with(LinearFunctionalSystems): sys := [diff(yl(x), х) - у2(х), d1ff(y2(x), х) - уЗ(х) - у4(х), diff(y3(x), х) - у5(х), diff(y4(x), х) - 2*у1(х) - 2*х*у2(х) - у5(х), diff(y5(x), х) - xA2*yl(x) - 2*х*уЗ(х) - уб(х), diff(y6(x), х) - хА2*у2(х) + 2*уЗ(х)]:
vars := [yl(x), у2(х), уЗ(х), у4(х), у5(х), уб(х)]: sol:=PolynomialSolution(sys, vars);
sol :=sol :=111 2-_c2 - 2 -c3’ - 2 -c3’ -C1 + * -5 + 2111 2-_c2 - 2 -c3’ - 2 -c3’ -C1 + * -5 + 2-c3’-c3’1 2.C2~2X -c3’-C2+x-c3’1 2.C2~2X -c3’-C2+x-c3’
sol :=
sol :=
111 2
-_c2 - 2 -c3’ - 2 -c3’ -C1 + * -5 + 2
111 2
-_c2 - 2 -c3’ - 2 -c3’ -C1 + * -5 + 2
-c3’
-c3’
1 2
.C2~2X -c3’-C2+x-c3’
1 2
.C2~2X -c3’-C2+x-c3’
„21 з
c3 - 2 x _ct - x _c2 - - x _c3
> IsSoiutlon(sol, sys, vars): true'
> soli :- [-_с[1]+х*_с[3], _с[3], -_с[2]+х*_с[1]-хА2*_с[3], _с[2]-х*_с[1]+хА2*_с[3], _с[1]- 2*х*_с[3], -2*_с[3]+2*х*_с[2]-хА2*_с[1]+хА3*_с[3]]:
soil := [ -_сх + х _су _су -_с2 + х _с{- х2 _су _с2 -х _сх + х2 _су _сх - 2 х _су
-2 _с3 + 2 х _с2 - х2 _с + х3 _с3]
IsSolution(sol1, sys, vars);
true
AreSameSolut1on(sol.soil);
true
sold] := 1;
solx := 1
IsSolution(sol, sys, vars);
[0, -=,-=o,l,3, —]
so!2 := evaKsoll, _c[l]=O);
sol2 := [x _c3, _c3, -_c2 - x2 _cy _c2 + x2 _cy -2 x _c , -2 _c, + 2 x _c2 + x3 _c3 ]
IsSolution(sol2, sys. vars);
true
AreSameSolution(soll,sol2);
false
> sys := [-xA2*y2(x) + 2*xA2*yl(x) + 4*yl(x)*x - yl(x + l)*xA2 - 4*yl(x + l)*x + 2*yl(x) - 4*yl(x + 1), y2(x + 1) - yl(x)]:
vars:= [yl(x), y2(x)]:
Uni versa!Denominator(sys, vars);
1
(x+ 1 )2 x2
Properties(sys.vars);
res
Множество дополнительных примеров на анализ и решение линейных функциональных систем можно найти в справке по функциям данного пакета.
Что нового мы узнали? .
В этом уроке мы научились:
О Применять основные операции и определения линейной алгебры.
О Использовать пакет решения задач линейной алгебры linalg.
О Использовать пакет линейной алгебры LinearAlgebra с алгоритмами NAG.
О Осуществлять интеграцию системы Maple 7 с матричной системой MATLAB.
О Использовать некоторые функции системы MATLAB при работе в Maple 7.
О Применять функции нового пакета LinearFunctionalSystems.
ж) УРОКж) УРОКОбзор пакетовспециального
ж) УРОК
ж) УРОК
назначения
Пакет решения задач оптимизации simplex
Пакет двумерной геометрии geometry
Пакет трехмерной геометрии geom3d
Пакет для работы с алгебраическими кривыми algcurves
Пакет функций теории графов networks
Пакет статистических расчетов stats
Пакет для студентов student
Пакет работы с тензорами tensor
Пакет Domains
Обзор пакетов узкого назначения
Новые пакеты системы Maple 7
Пакет решения задач линейной оптимизации simplex
Обзор средств пакета
Задачи линейной оптимизации важны как в фундаментальных, так и в прикладных приложениях математики. В пакете simplex имеется небольшой, но достаточно представительный набор функций и определений для решения таких задач:
> with(simplex):
Warning, the protected names maximize and minimize have been redefined and unprotected
Vbasis, convexhull, cterm, define _zero, display, dual, feasible, maximize, minimize,pivot, pivoteqn, pivotvar, ratio, setup, standardize ]
Приведем краткое назначение этих функций:
О basis — возврат списка основных переменных для множества линейных уравнений;
О convexhull — вычисление выпуклой оболочки для набора точек;
О cterm — задание констант для системы уравнений или неравенств;
О define_zero — определение наименьшего значения, принимаемого за ноль (по умолчанию увязано со значением системной переменной Digits);
О display — вывод системы уравнений или неравенств в матричной форме;
О dual — выдача сопряженных выражений;
О equality — параметр для функции convert, указывающий на эквивалентность;
О feasible — выяснение возможности решения заданной задачи:
О maximize — вычисление максимума функции;
О minimize — вычисление минимума функции;
О pivot — создание новой системы уравнений с заданным главным элементом;
О pivoteqn — выдача подсистемы уравнений для заданного главного элемента;
О pivotvar — выдача переменных с положительными коэффициентами в целевой функции;
О ratio — выдача отношений для определения наиболее жесткого ограничения;
О setup — задание системы линейных уравнений;
О standardize — приведение заданной системы уравнений или неравенств к стандартной форме неравенств типа «меньше или равно».
Функции maximize и minimize
Главными из этих функций являются maximize и minimize, оптимизирующие задачу симплекс-методом. Они записываются в следующих формах:
maximizetf. С) minimize(f. С) maximize(f . С. vartype) m1n1mize(f . С. vartype) maximizeCf . С. vartype. 'NewC. 'transform') minimized . C. vartype, 'NewC. 'transform')
Здесь f — линейное выражение, С — множество или список условий, vartype — необязательно задаваемый тип переменных NONNEGATIVE или UNRESTRICTED, NewC и transform — имена переменных, которым присваиваются соответственно оптимальное описание и переменные преобразования. Ниже даны примеры применения этих функций:
minimize! х-у, (4*х+2*у <= 10, 3*х+4*у <= 16}. NONNEGATIVE,'NO','vf );
{х = 0,у = 4}
NC;vt;
1351
U’ = -- SL2+4--X, SL1 =2--x+- SL2X 4 -4 -22"
{ }
maximize! x+y, {4*x+2*y <= 10, 3*x+4*y <= 16}, NONNEGATIVE );
417
Прочие функции пакета simplex
Функция basis(C) возвращает базис для системы линейных уравнений С. Например:'
basis! [ х = 2*z+w , z = 2*у - w ] );
[x,z]
Функция convexhull(ps) возвращает выпуклую оболочку множества точек ps:
convexhul1({[0,0],[1,1],[2.-1],[1.1/3],[1,1/2]}); [[0,0],[2,-1],[1,1]]
Для определения констант для системы линейных уравнений или неравенств служит функция cterm(C):
> cterm([2*x+y<=6,7*y-z-3=4]);
[6,7]
Функция define_zero(C) возвращает ближайшее ненулевое значение, зависящее от установки переменной Digits: 1 > definezeroO;-
.1000000000 10'7
Digits:—40;
Digits := 40
define_zero():
.1000000000000000000000000000000000000000 IO'37 > define_zero(l*10A(-10));
. 1000000000000000000000000000000000000000 10"9
Функция display(C) имеет еще и форму display(C, [х, у, z]). Она задает вывод линейных уравнений и неравенств в матричной форме:
> display({2*x+5*y-z<= 0. 2*w-4*y-z<=2});
х
2"02"0"0 -4 2 -11 у
2"
0
2"
0
25 0 -1] w
z
Функция dual (f, С, у) имеет следующие параметры: f — линейное выражение , С — множество неравенств и у — имя. Эта функция возвращает сопряженное с f выражение:
dual( x-y.{2*x+3*y<=5,3*x+6*y<=15},z):
15 zl +5 z2, {1 <3 zl + 2z2,-1 <6 zl + 3z2}
Функция feasible может быть задана в трех формах:
feasi Ы е(С)
feaslЫ е(С.vartype)
feasiЫ е(С.vartype.'NewC.'Transform')
Здесь параметр vartype может иметь значения NONNEGATIVE или UNRESTRICTED. Эта функция определяет систему как осуществимую или нет:
feasiЫе({2*х+3*у<=5. 3*х+6*у<=15}. NONNEGATIVE);
true
feasible({2*x+3*y<=5, 3*х+6*у<=-15), NONNEGATIVE):
false
Если функция возвращает логическое значение true, то заданная система осуществима, а если fal se — неосуществима, то есть ни при каких значениях переменных не способна удовлетворить записанным неравенствам и равенствам.
Функция pivot(C, х, eqn) конструирует новую систему с заданным главным элементом:
pivot({_SLl=5-4*x-3*y,_SL2=4-3*x-4*y},х,[_SLl=5-4*x-3*y]);
15 31 37 .
{^ = ~7 SL1+7-7У, SL2=- + - SLl--y}
4-4, 4Z 4 4-4
Функция pivoteqnCC, var) возвращает подсистему для заданного диагонального элемента С: ■
> pivoteqnl {_SL1 - 5-3*х-2*у, _SL2 - 4-2*х-2*у}, х ):
[_SZ7 = 5-3x-2y]
Функция pivotvar(f, List) или pivotvar(f) возвращает список переменных, имеющих положительные коэффициенты в выражении для целевой функции:
> pivotvar! xl-2*x2+3*x3-x4);
х!
> pivotvar! xl + 2*хЗ - 3*х4 , [х4,хЗ,х1] );
хЗ
Функция ratio(C, х) возвращает список отношений, задающих наиболее жесткие ограничения:
> ratio! [_SLl=10-3*x-2*y,_SL2=8-2*x-4*y],x );
Функция setup может иметь три формы:
setup(C)
setupCC. NONNEGATIVE)
setuptC. NONNEGATIVE, 'f ),
Она обеспечивает конструирование множества уравнений с переменными в левой части:
> setup! {2*х+3*у<=5.3*х+5*у=15});
{_^/=-5+р,х = -^у + 5}
Последняя функция — standartize(C) — конвертирует список уравнений (неравенств) в неравенства типа «меньше или равно»:
> standard!ze((2*x+3*y<=5,3*x+5*y=15});
{2 х + Зу < 5, 3 х + 5у< 15, -Зх-5у<-15}
Пакет планиметрии geometry
Набор функций пакета geometry
Пакет геометрических расчетов geometry в системе Maple 7 получил как бы второе рождение — число его функций по сравнению с версией этого пакета в системе Maple V R5 возросло в несколько раз. Теперь загрузка пакета возвращает весьма внушительный список из более чем 100 функций:
> with(geometry);
{Appolonius, AreCollinear, AreConcurrent, AreConcyclic, AreConjugate, AreHarmonic, AreOrthogonal, AreParallel, ArePerpendicular, AreSimilar, AreTangent, CircleOfSimilitude, CrossProduct, CrossRatio, DefinedAs, Equation, EulerCircle, EulerLine, Exterior Angle, ExternalBisector, FindAngle, GergonnePoint, GlideReflection, HorizontalCoord, HorizontalName, Interior Angle, IsEquilateral,■
IsOnCircle, IsOnLine, IsRightTriangle, MajorAxis, MakeSquare, MinorAxis, NagelPoint, OnSegment, ParallelLine, PedalTriangle, PerpenBisector, Perpendicular Line, Polar, Pole, RadicalAxis, RadicalCenter, RegularPolygon, RegularStarPolygon, SensedMagnitude, SimsonLine, SpiralRotation, StretchReflection, StretchRotation, TangentLine, VerticalCoord, VerticalName,
altitude, apothem, area, asymptotes, bisector, center, centroid, circle, circumcircle, conic, convexhull, coordinates, detail, diagonal, diameter, dilatation, directrix, distance, draw, dsegment, ellipse, excircle, expansion, foci, focus, form, homology, homothety, hyperbola, incircle, inradius, intersection, inversion, line, medial, median, method, midpoint, orthocenter, parabola, perimeter, point, powerpc, projection,
radius, randpoint, reciprocation, reflection, rotation, segment, sides, similitude, slope, square, stretch, tangentpc, translation, triangle, vertex, vertices]
Этот пакет содержит средства расчета основных параметров ряда геометрических объектов. Для каждого объекта возможно задание различных исходных величин, так что пакет охватывает практически все виды классических геометрических расчетов на плоскости. Несомненно, этот пакет заинтересует всех, кто работает в области геометрии и смежных областях.
Обратите внимание на то, что многие функции этого пакета вовсе не рисуют на экране соответствующие фигуры, а лишь выполняют типовые геометрические расчеты. Разумеется, в дальнейшем, используя результаты этих расчетов, можно построить соответствующую фигуру с помощью графических функций.
Пример применения расчетных функций пакета geometry
К сожалению, описание всех функций этого пакета потребует привести справочные данные практически по всей геометрии на плоскости, объем которых намного превышает объем данной книги. Учитывая идентичность идеологии при работе с функциями этого пакета, большинство из которых имеет вполне прозрачные имена (правда, англоязычные), работу с пакетом поясним на примере одной из функций — circle. Она позволяет математически задать окружность и определить все ее геометрические параметры. Функция может иметь несколько форм записи. Например, в форме:
circletc, [А. В. С], п, 'centername'=т)
она определяет построение окружности, проходящей через три точки А, В и С. Необязательный параметр п — список с именами координатных осей. Параметр 'centername'=m задает имя центра.
В форме circletc, [А, В], n, 'centername'=m) задается окружность, проходящая через две точки А и В, а в форме circletc, [A, rad], n, 'centername'=m) задается окружность, проходящая через одну точку А с заданным (и произвольным) радиусом rad
и центром с. Наконец, функция circle в форме circle (с, eqn, п, 'centername'=m) позволяет задать окружность по заданным уравнению eqn и центру с.
Проиллюстрируем применение функции circle на следующих примерах. Зададим характеристические переменные:,
_EnvHorizontalName := m: EnvVertlcal Name := n:
Определим окружность cl, проходящую через три заданные точки А, В и С с указанными после их имен координатами, и найдем координаты центра этой окружности:
circle(cl,[point(A,0,0), point(В.2,0).point(С.1,2)].'centername'=01): > center(cl), coordinates(center(cl));
Далее найдем радиус окружности:
radius(cl);
^^5^6
и уравнение окружности, заданное в аналитическом виде:
Equation(cl);
3
/и2 + п2 - 2 т - - п = О
Наконец, с помощью функции detail получим детальное описание окружности:
detail(cl):
name of the object: cl
form of the object: circle2d■
name of the center: O1
coordinates of the center: [1, 3/4]
radius of the circle: //16*25'fl/2)*l6'/l/2j
equation of the circle: тл2+пл2-2*т-3/2*п = 0
Заинтересованный в таких расчетах читатель может самостоятельно ознакомиться с другими функциями аналогичным образом, тем более, что в справочной системе этого пакета имеется множество примеров работы с его функциями.
Визуализация геометрических объектов с помощью пакета geometry
Одно из важных достоинств пакета geometry — возможность наглядной визуализации различных геометрических понятий, например графической иллюстрации доказательства теорем или геометрических преобразований на плоскости. Проиллюстрируем это на нескольких характерных примерах, заодно показывающих технику работы с рядом функций этого пакета.
P[3Mapie7-[ge()mlmwi^P[3Mapie7-[ge()mlmwi^Рисунок* 16.1 показывает построение из множества окружностей фигуры — кардиоиды. Вопреки обычному построению этой фигуры, используется алгоритм случайного (но удовлетворяющего требованиям построения данной фигуры) выбора положений центров и радиусов окружностей.
P[3Mapie7-[ge()mlmwi^
P[3Mapie7-[ge()mlmwi^
ЗЕй &й ^ fas# F<W л > g$w$ &Н»» НФ»lffl.x!
[> restart:with(geometry):*
[> circle(cO, [point(o, 0, 0), 1]):randpoint(AO, cO):T
f> i :- 1: n :- 25: > while i <— n do randpoint(A||i, oO); if evalf(HorizontalCoord(AO) - HorizontalCoord(A||i)) <> 0 then oirole(c||i, [AO, A||i]); i := i+1;,3
end do: [> draw( { seq(c||i, i-0..n) }, printtext-false, scaling-unconstrained,<axes-none, 1111е=’тКардиоидатт ,color-black);end do: [> draw( { seq(c||i, i-0..n) }, printtext-false, scaling-unconstrained,<axes-none, 1111е=’тКардиоидатт ,color-black);КардиоидаКардиоидаРис. 16.1. Построение кардиоиды из окружностейРис. 16.1. Построение кардиоиды из окружностей
end do: [> draw( { seq(c||i, i-0..n) }, printtext-false, scaling-unconstrained,<
axes-none, 1111е=’тКардиоидатт ,color-black);
end do: [> draw( { seq(c||i, i-0..n) }, printtext-false, scaling-unconstrained,<
axes-none, 1111е=’тКардиоидатт ,color-black);
Кардиоида
Кардиоида
Рис. 16.1. Построение кардиоиды из окружностей
Рис. 16.1. Построение кардиоиды из окружностей
Рисунок 16.2 дает графическую иллюстрацию к одной из теорем Фейербаха. Здесь эффектно используются средства выделения геометрических фигур цветом, что, увы, нельзя оценить по книжной черно-белой иллюстрации.
На следующем рисунке (рис. 16.3) показано построение фигуры, образованной вращением множества квадратов относительно одной из вершин. Это хороший пример применения функций point, square, rotation и draw из пакета geometry.
^ПРИМЕЧАНИЕ^ПРИМЕЧАНИЕРисунок 16.4 показывает гомологические преобразования квадрата. Заинтересовавшийся читатель может легко разобраться с деталями простого алгоритма этой программы.
^ПРИМЕЧАНИЕ
^ПРИМЕЧАНИЕ
Обратите особое внимание на последний параметр в функции draw. Он задает построение титульной надписи с заданными шрифтом и размером символов. Сравните титульные надписи на рис. 16.4 и 16.3, где титульная надпись сделана шрифтом, выбранным по умолчанию. Приятно, что в обоих случаях нет преград для использования символов кириллицы и создания надписей на русском языке.
Наконец, на рис. 16.5 показан пример построения трех окружностей, имеющих две общие точки. Обратите внимание на вывод надписей «о», «о1» и«о2», ука- зывающихиоложение центров окружностей на рисунке.
IOW^e7Jgeom2jnws^Seiveiljj
[> restart:with(geometry):.
[> triangle( T, [point(A, 0, 0), point(B, 3, -1), point(C, 6, 2)] ):
[incircle( inc, T, ’centernameT-II ):
[excircle( obj, I, (exl(Il), ex2(!2), ex3(l3)] ):
EulerCircle( ec, T, ’centername’-X ):
Г> draw( [ inc(color-yellow), ec(color-plum), exl(color-green), T(color-blue, filled-false) ], filled-true, scaling-constrained, title-’’Иллюстрация к теореме Фейербаха” ) ;
Иллюстрация к теореме Фейербаха
02468
Рис. 16.2. Графическая иллюстрация к теореме Фейербаха
Рис 16Л.-»1«ура, получениая врмеииеи кеадрата
« й* Ь» ** #** .W W* W* N> ;V -" - ''V^^^tKT^^t ' VZ? ^Ж Г> point(о,0,0): square( sql, [point(al, -2,-2),Й
point(a2, 2, -2), point(a3, 2, 2),point(a4, -2, 2)] ):■“
for i from 2 to 10 do
homology<sq||i, sq||(i-l), o, Pi/4, counterclockwise,1/sqrt(2)); end do: square(sq, [point<aal, -11/5, -11/5), point(aa2,11/5,-11/5),point(aa3,11/5,11/5) ,point(aa4 , -11/5,11/5)]):
> draw( [seq(sq||i,i-1..10),sq(color-COLOR(RGB,1/2,1/2,1/2), filled—true)], color—’white ’, thickness—1, scaling-constrained,axes—none, printtext—false,tit le=’’Гомологические преобразования квадрата”, titlefont-[TIMES, ROMAN,16] );
Гомологические преобразования квадрата
:ЭД
Рис. 16.4. Гомологические преобразования квадрата
^i'MapieT^igeorns'niwj'j's^^
<S f& £«& ^®w jnseA Р«®(ай1 ,,' Qpiiot* Ж**^0* ^ейр*1^1 x|
Г> with(geometry):_EnvHorizontalName :- ’x’: _EnvVerticalName :- ’y’:^
circle(cl, хЛ2 + ул2 - 1, ’centername’ - ol) :T^
circle(c2, [point(A,3,3), 4], ’centername’ - o2): CircleOfSimilitude(c,cl,c2,’centername’—o);
> detail(c);
name of the object: c
form of the object: circle2d name of the center: о coordinates of the center: j-1/5, -1/5) radius of the circle: 1/50 *128^(1/2) *25^(172) equation of the circle: хл2-6/5-¥ул2+2/5*х+2/59у = 0■
" > draw( (c,cl,c2},printtext—true, view— [-1.5. . 3.5, -1.5. .3.5] ,color—black) ;
,Рмс<16.5«Эри.адф)1)1и«№и1 h?*6®^
Множество примеров применения всех функций пакета geometry дано в справочной системе Maple 7. Рекомендуется просмотреть те из них, которые нужны вам.
Пакет стереометрии geom3d
Набор функций пакета geom3d
Помимо существенного расширения пакета geometry в систему Maple 7 введен новый геометрический пакет geom3d. Он предназначен для решения задач в области трехмерной геометрии. При загрузке пакета появляется доступ к большому (свыше 140) числу новых функций:
> with(geom3d):
^Archimedean, AreCollinear, AreConcurrent, AreConjugate, AreCoplanar, AreDistinct, AreParallel, ArePerpendicular, AreSameObjects, AreSamePlane, AreSkewLines, DefinedAs, DirectionRatios, Equation, FindAngle, FixedPoint, GlideReflect, GlideRejlection, GreatDodecahedron, GreatIcosahedron, GreatRhombicuboctahedron, GreatRhombiicosidodecahedron,
GreatStellatedDodecahedron, HarmonicConjugate, Hexakislcosahedron, HexakisOctahedron, InRadius, IsArchimedean, IsEquilateral, IsFacetted, IsOnObject, IsQuasi, IsRegular, IsRightTriangle, IsStellated, IsTangent, MidRadius, NormalVector, OnSegment, ParallelVector, PentagonalHexacontahedron,•
Pentagonallcositetrahedron, PentakisDodecahedron, QuasiRegularPolyhedron,
RadicalCenter, RadicalLine, RadicalPlane, RegularPolyhedron, RhombicDodecahedron, RhombicTriacontahedron, RotatoryReflect, Rotatory Reflection, ScrewDisplace, ScrewDisplacement, SmallRhombicuboctahedron, SmallRhombiicosidodecahedron, SmallStellatedDodecahedron, SnubCube, SnubDodecahedron, StereographicProjection, StretchRotate, TangentPlane,
TetrakisHexahedron, TrapezoidalHexecontahedron, Trapezoidallcositetrahedron, Triakislcosahedron, TriakisOctahedron, TriakisTetrahedron,■
TruncatedCuboctahedron, TruncatedDodecahedron, TruncatedHexahedron, Truncatedlcosahedron, Truncatedlcosidodecahedron, TruncatedOctahedron, TruncatedTetrahedron, altitude, area, center, centroid, circle, coordinates, cube,
cuboctahedron, detail, dijate, distance, dodecahedron, draw, dsegment, duality, faces, facet, form, gtetrahedron, hexahedron, homology, homothety, icosahedron, icosidodecahedron, identity, incident, intersection, inverse, inversion, line, midpoint, octahedron, parallel, parallelpiped, plane, point, polar, pole, powerps, projection, radius, randpoint, reflect, reflection,-rotate,-rotation, Schlafly segment, sides, sphere,
stellate, tetrahedron, tname, transform, translate, translation, transprod, triangle, unit, valuesubs, vertices, volume, xcoord, xname, ycoord, yname, zcoord, zname]
Функции этого пакета обеспечивают задание и определение характеристик и параметров многих геометрических объектов: точек в пространстве, сегментов, отрезков линий и дуг, линий, плоскостей, треугольников, сфер, регулярных и квазирегулярных полиэдров, полиэдров общего типа и др. Для описания функций этого пакета пришлось бы воспроизвести обширное справочное руководство по стереометрии. В то же время назначение функций ясно из их названия, а характер применения тот же, что для функций описанного выше пакета geometry.
Пример применения пакета geom3d
Учитывая сказанное, ограничимся единственным примером применения этого пакета (рис. 16.6).
<2 ^ ^ $ew imerl ^^^ --',^; - SfAans V&idcw Ье^[> point(о,0,0,0): r:-1.:SmallStellatedDodecahedron(p,o,r):> duality(dp,p,sphere(s, [o,MidRadius(p)])) :draw([p(color=red),dp(color-green)],cutout=8/9,lightmodel*light4, orientation-[16,36 j);<2 ^ ^ $ew imerl ^^^ --',^; - SfAans V&idcw Ье^[> point(о,0,0,0): r:-1.:SmallStellatedDodecahedron(p,o,r):> duality(dp,p,sphere(s, [o,MidRadius(p)])) :draw([p(color=red),dp(color-green)],cutout=8/9,lightmodel*light4, orientation-[16,36 j);Рис. 16.6. Иллюстрация применения пакета geom3dРис. 16.6. Иллюстрация применения пакета geom3d
<2 ^ ^ $ew imerl ^^^ --',^; - SfAans V&idcw Ье^
[> point(о,0,0,0): r:-1.:SmallStellatedDodecahedron(p,o,r):
> duality(dp,p,sphere(s, [o,MidRadius(p)])) :
draw([p(color=red),dp(color-green)],cutout=8/9,lightmodel*light4, orientation-[16,36 j);
<2 ^ ^ $ew imerl ^^^ --',^; - SfAans V&idcw Ье^
[> point(о,0,0,0): r:-1.:SmallStellatedDodecahedron(p,o,r):
> duality(dp,p,sphere(s, [o,MidRadius(p)])) :
draw([p(color=red),dp(color-green)],cutout=8/9,lightmodel*light4, orientation-[16,36 j);
Рис. 16.6. Иллюстрация применения пакета geom3d
Рис. 16.6. Иллюстрация применения пакета geom3d
Напоминаем, что цель пакета не в построении рисунков геометрических фигур, а в аналитическом представлении объектов в пространстве. Поэтому в обширной базе данных справочной системы по этому пакету вы встретите очень много рисунков. ' .
Пакет для работы с алгебраическими кривыми algcurves
Пакет для работы с алгебраическими кривыми прекрасно дополняет возможности геометрических пакетов. При обращении к нему он дает доступ к полутора десяткам функций:
>restart;with(algcurves);
[ Weierstrassform, differentials, genus, homogeneous, homology, integral_basis, is_hyperelliptic, jfnvariant, monodromy, parametrization , period matrix, plotknot. puiseux. singularities ]
Ввиду важности функций пакета и их сравнительно небольшого числа приведем полную форму записи функций и их назначение:
О We1erstrassform(f,x,y,x0,y0,opt) — вычисление нормальной формы для эллиптических или гиперболических алгебраических кривых;
О d1fferent1als(f, х, у. opt) — вычисление голоморфных дифференциалов алгебраических кривых;
О genus(f,x,y,opt) — проверка подлинности алгебраической кривой;
О homogeneous (f, х. у, z) — создание полинома двух переменных, гомогенного в трех переменных;
О homologylf, х, у) — нахождение канонического гомологического базиса по алгоритму Треткоффа;
О integral_bas1s(f, х, у, S) — нахождение интегрального базиса алгебраического поля функции;
О is_hyperelliptic(f, х, у) — тестирование кривой на ее принадлежность к гиперболической;
О j_invariant(f,x,y) — вычислениеу-инварианта алгебраической кривой;
О monodromy(f, х, у, opt) — вычисляет монодромию алгебраической кривой;
О parametrization(f,x,y,t) — нахождение параметризации для кривой с родом (даваемым функцией genuc), равным 0;
О periodmatrix(f, х, у, opt) — вычисление периодической матрицы кривой;
О p)ot_knot(f.x.y.opt) — построение узла — несамопересекающейся замкнутой кривой в трехмерном евклидовом пространстве;
О puiseux(f,х=р,у,п.Т) — определение Пуизе-расширения алгебраической функции (может иметь и более простые формы записи);
О singularities(f,x,y) — анализ кривой на сингулярность.
Примеры применения пакета algcurves
Приведем примеры применения функций пакета algcurves:
>Weierstrassform( (ул2-1)'2+х*(х'2+1)*2 ,x,y,x0,y0):
У°2 - 1 - хО - хО5, —-, -у, -хО2, -уО
.х2 + 1
f:=уА3+хА3*уА3+хА4;
/ :=у3 +у3 х3 + х4
differentials(f,x,y);
х2 dx х dx х2 dx
_/(l+x3)’^(l+x3)’^(l+x3)_
differentials^ ,x.y,skip_dx);
[.r2jxj.r2]
nopsU);
3
genustf,x,y);
3
homogeneous(f,x,y,z);
x4 z2 + v3 z3 + у3 x3*..
homology(yA3-xA2-l,x,y);
table([cyc/e=table([l = [1,[-1.00000000000/, [1,3, 2]], 3, [1.00000000000 /,[1,3, 2]]],
2 = [1,[-1.00000000000 /,[1,3, 2]], 2, [1.00000000000/, [1,3,2]]],
= [1,[-1.00000000000 /, [1, 3, 2]], 3, [=, [1, 3,2]]],
= [ 1,[-1.00000000000 /, [1,3,2]], 2, [== [ 1, 3, 2]]],
]), basepoint = -.899000000000 genus = 1, canonycakycle = table([
al = [[ 1, [-1.0000000000/, 1], 3, [1.0000000000/,-1]]],
61 = [[ 1, [-1.0000000000/, 1],2, [1.0000000000/,-1]]],
, Г1 0 0 0'
1), fmearcombination =,
|_0 1 0 0
sheets =
[-.609142506531 -1.05506577036/,-609142506531 + 1.05506577036/, 1.2182501306]
])
>g := yA3-x*yA2+2*2A(l/2)*yA2+xA2-2*2A(l/2)*x+2+yA6;;
g := y3 -xy2 + 2 -/2" y2 + x2 - 2 ^2 x + 2 -Vy6
integral_basis(g,x,y);
i 2 3 4 у2 у5+У \,y,y2,y3,y\-—
-л[2 +x
is_hyperelliptic(f.x,y);
false
fl:=yA2+xA5+l:ishyperel1i pti c(f1.x,у); true
j_invariant(g,x,y);
71936606821 3803393323 r
38521803 + 38521803
monodromy(f1.x,y):
[ -1.47022820183 [ -2.4227005870? 2.42270058709, [[-.309016994375- .9510565162957, [[1,2]]], [.8090169943 75- .5877852522927, [[1, 2]]], [-1., [[ 1, 2]]],
[ .809016994375+ .5877852522927, [ [ 1, 2 ] ] ], [-.309016994375+ .9510565162957, [[1,2]]], [“,[[1,2]]]]]
>parametr1zation(xA4+yA4+a*xA2*yA2+b*yA3,x.y,t);
Г ?ь3tAb 1
_ Ь* + ГаЬлМ4' Ь^аЬ^Г _
>Z := periodmatr1x(fl,x,у.Riemann):
Г .4999999918 + 1.213922064 I -.9999999899 - .525731 1260 7”
-1.000000004 -.5257311066 I -.5000000106 + .6881909548 7
Построение алгебраических кривых класса knot
Функция plot_knot позволяет строить одну или несколько алгебраических кривых — узлов. Пример построения целого семейства узлов показан па рис. 16.7.
. Рис. 16.7. Семейство узлов
Для лучшего обзора таких кривых рекомендуется воспользоваться возможностью вращения трехмерных фигур мышью для уточнения угла, под которым рассматривается фигура — в нашем случае семейство алгебраических кривых. По-
строение на рис. 16.7 выполняется довольно медленно — даже на компьютере с процессором Pentium III 600 МГц оно занимает около минуты.
Новая функция Maple 7 plot_real_curve
В пакет расширения algcurves добавлена новая функция импликативной графики plot_real_curve. Она строит алгебраическую кривую для действительной части полиномиального выражения и записывается в виде:
plot_real_curve (р. х. у. opt)
Функция имеет следующие параметры:
Ор — полиномиальное выражение переменных х и у задающее алгебраическую кривую;
О opt — параметр, который может быть записан в форме приведенных ниже выражений:
showArrows = true или false — задает показ стрелок касательных или перпендикулярных к точкам вдоль кривой (по умолчанию false);
arrowinterval Step = posint — задает число точек, пропускаемых до показа очередной пары стрелок (по умолчанию 10);
arrowScaleFactor = positive — задает масштаб для длины стрелок (по умолчанию 1);
colorOfTangentVector = с — задает цвет касательных стрелок, по умолчанию заданный как зеленный, COLOR (RGB, 0,1,0);
col orOfNormal Vector = с — задает цвет перпендикулярных стрелок, по умолчанию заданный как красный, COLOR(RGB,1,0,0);
colorOfCurve = с — задает цвет кривой, по умолчанию заданный как синий, COLOR(RGB, 0, 0, 1);
eventTolerance = positive — задает погрешность при представлении сингулярных точек (nq умолчанию 0,01);
NewtonTolerance = positive — задает погрешность при выполнении ньютоновских итераций в ходе построений.
Функция plot_real_curve вычисляет и строит алгебраическую кривую по точкам и может (при использовании параметра opt) строить стрелки-векторы по касательным и перпендикулярным направлениям к каждой точке или к части точек. Возможно задание разных цветов для кривой и стрелок. Применение функции plotrealcurve показывает рис. 16.8.
При задании построения стрелок касательные стрелки строятся по внешней части кривой и указывают направление ее построения. Перпендикулярные стрелки строятся по внутренней части кривой. Нетрудно заметить, что острие стрелки указывается только для длинных стрелок. Короткие стрелки острия не имеют и отображаются как отрезки прямых линий. Построение стрелок оказывается не
вполне точным, если разнятся масштабы графика по горизонтали и вертикали, что можно подметить при внимательном рассмотрении графика на рис. 16.8, сверху.
§5 Maple 7 - (prc.mws - [Server 1Ц
^ Efe 1^ ^W insert FpTfftfit „ *'' Qptfons X^tdow £[*,w^^x
Г> with(algcurves):f1:=уЛ2-х*(xA2-2);plot_real_curve(f1,x,у,showArrows -X
I true,arrowlntervalStep=5,arrowScaleFactor=.25);**
Рис. 16,8, Примеры применения функции plot_real_curve
Пакет функций теории графов networks
Набор функций пакета networks
Графы широко используются при решении многих прикладных и фундаментальных задач. Пользователей, занятых решением таких задач, наверняка порадует пакет networks, содержащий весьма представительный Фабор функций:
> w1th(networks);
Warning, the names diameter, draw and vertices have been redefined
Vacycpoly, addedge, addvertex, adjacency, allpairs, ancestor, arrivals, bicomponents, charpoly, chrompoly, complement, complete, components, connect, connectivity, contract, countcuts, counttrees, cube, cycle, cyclebase, daughter, degreeseq, delete, departures, diameter, dinic, djspantree, dodecahedron, draw, duplicate, edges, ends, eweight,flow,flowpoly,fundcyc, getlabel, girth, graph, graphical, gsimp, gunion,
head, icosahedron, incidence, incident, indegree, induce, isplanar, maxdegree, mincut, mindegree, neighbors, new, octahedron, outdegree, path, petersen, random, rank, rankpoly, shortpathtree, show, shrink, span, spanpoly, spantree, tail, tetrahedron, tuttepoly, vdegree, vertices, void, vweight}
Объективности ради надо отметить, что в Maple 7 из этого пакета удалено несколько второстепенных функций, которые были в версии Maple V R5.
Теория графов используется достаточно широко даже при решении прикладных задач — например, для вычисления оптимальных маршрутов движения железнодорожных составов, наиболее целесообразной раскройки тканей и листов из различных материалов и т. д.
Примеры применения пакета networks
Рассмотрим некоторые избранные функции этого пакета, которые наиболее часто используются при работе с графами. Детали синтаксиса функций можно найти в справочной базе данных Maple 7.
Функции создания графов:
О new — создает пустой граф (без ребер и узлов);
О void — создает пустой граф (без ребер);
О duplicate — создает копию графа;
О complete — создает полный граф;
О random — возвращает случайный граф;
О petersen — создает граф Петерсена.
Функции модификации графов:
О addedges — добавляет в граф ребро;
О addvertex — добавляет в граф вершины;
О connect — соединяет одни заданные вершины с другими;
О delete — удаляет из графа ребро или вершину.
Функции контроля структуры графов:
О draw — рисует граф;
О edges — возвращает список ребер графа;
О vertices — возвращает список узлов графа;
О show — возвращает таблицу с полной информацией о графе;
О ends — возвращает именк вершин графа;
О head — возвращает имя вершины, которая является головой ребер;
О tail — возвращает имя вершины, которая является хвостом ребер;
О incidence — возвращает матрицу инцидентности;
О adjacency — возвращает матрицу смежности;
О eweight — возвращает веса ребер;
О vweight — возвращает веса вершин;
О isplanar — упрощает граф, удаляя циклы и повторяющиеся ребра, и проверяет его на планарность (возвращает true, если граф оказался планарным, и fal se — в противном случае).
Функции с типовыми возможностями графов:
О flow — находит максимальный поток в сети от одной заданной вершины к другой;
О shortpathtree — находит кратчайший путь в графе с помощью алгоритма Дейкстры.
Каждая из этих команд имеет одну или несколько синтаксических форм записи. Их можно уточнить с помощью справочной системы. С ее помощью можно ознакомиться и с назначением других функций этого обширного пакета. Проиллюстрируем его применение на нескольких типичных примерах.
На рис. 16.9 показан пример создания графа, имеющего четыре вершины, и графа Петерсона с выводом их графиков графической функцией draw.
На рис. 16.10 показан другой пример работы с графами —- построение графа функцией complete и затем его преобразование путем удаления части вершин. Исходный и преобразованный графы строятся функцией draw.
В третьем примере (рис. 16.11) граф формируется по частям — вначале задается пустой граф функцией new, а затем с помощью функций addvertex и addedge в него включаются вершины и ребра. Далее функция connect соединяет вершину а с вершиной с, делая граф замкнутым. Функция draw строит сформированный таким образом граф, а функции head и tail используются для выявления «голов» и «хвостов» графа.
В четвертом примере, представленном на рис. 16.12, показано создание графа G2 (его изображение было приведено на рис. 16.10) с вычислением для этого графа максимального потока от вершины 1. Обратите внимание, что в параметрах функции flow, использованной для этого, заданы две переменные: eset — принимает значение множества с ребрами, по которым проходит максимальный поток, и comp — принимает значение множества, в котором содержатся вершины, по которым проходит максимальный поток. Значения этих переменных выведены в области вывода. В заключительной части этого примера показано применение функции shortpathtree, ищущей наиболее короткий путь от вершины 1 до других вершин. -
^£3» &# Yww jn$stt ?яя*>( .' <•" fe№n$ 5йби*** НФ^Iffj*:
^wsxvH>x*.x-.w-»».vKX*x->K<<<»xw^^^х- х х х s х v хSxSs' s'* " s S " 'Sxxs' xxss
Работа с графами (пример 1)а
> . restart: with (networks) : new(G) : addvertex< (1,3,4,6 ), G) /***
1,3, 4, 6
> connect((1,3),(4,6),G)/edges(G);draw(G);
el, e2, e3, e4
[e^j e2, el, e4"\
..-3
> G1:-petersen(6):draw(Gl);
Рис. 16.10. Преобразование графа удалением части вершинРис. 16.10. Преобразование графа удалением части вершинРис. 16.9. Построение графов
Рис. 16.10. Преобразование графа удалением части вершин
Рис. 16.10. Преобразование графа удалением части вершин
Рис. 16.11. Формирование графа и определение его «голов» и «хвостов»
Рис. 1$.12. Пример вычисления максимального потокам наиболее коротких путей для заданного графа
Получение информации о графе
Еще один пример, приведенный ниже, иллюстрирует работу функции show, выдающей таблицу с полной информацией о графе, созданном функцией complete:
> restart:with(networks):G2:=complete(4):
> show(G2):
tabie(LNeighbors = table([l = {2, 3, 4}, 2 = {1, 3, 4}, 3 = {1, 2, 4 }, 4 = {1, 2, 3 }]).
_EdgeIndex = tab\e(symmetric, [(1,3)= {e2}, (2, 4) = {e5}, (1, 2) = {el},
(1, 4) = { e3}. (3, 4) = {eb},
(2,3)={e4[’
]), JEdges = {el, e2, еЗ, e4, e5, еб}, _Bicomponents = Bicomponents,
_Tail = table([]), _Countcuts = _Countcuts, _Head = table([]),
_Eweight = table([e6 = 1, e2 = 1, e5 = 1, el = 1, e4 = 1, e3 = 1 ]),
_Vweight = XaVAc^sparse, []), _Econnectivity = Econnectivity, _Ends =
table([<?6 = {3,4},e2 = {1, 3 }, e5 = {2, 4}, el = {1, 2 }, e4 = {2, 3 }, e3 = {1,4}]),
_Counttrees = _Counttrees, —Emaxname = 6, Vertices = {1, 2. 3, 4 |,
Status = {COMPLETE, SIMPLE}
])/
Разумеется, приведенные примеры далеко не исчерпывают всех задач, которые можно решать с применением графов. Но они наглядно демонстрируют, что для большинства пользователей пакет networks превращает графы из окутанного ореолом таинственности модного средства в простой рабочий инструмент.
Пакет статистических расчетов stats
Характеристика пакета stats
Мир математических систем сейчас насыщен статистическими системами, например такими, как Statistica или StatGraphics. Они прекрасно приспособлены для решения задач статистической обработки обширных массивов данных. Тем не менее проведение статистических расчетов в Maple 7 возможно и в ряде случаев весьма целесообразно — например, когда они являются частью исследовательского проекта.
Пакет stats для таких расчетов представлен всего двумя многоцелевыми статистическими функциями:
statsLsubpackage. function](args) subpackage[function](args).
Однако благодаря специальной форме задания параметров (в частности, в виде подпакетов — subpackages) возможно вычисление самых разнообразных статистических функций. Имеются следующие подпакеты:
О anova — вариационный анализ;
О describe — функции распределения вероятности;
О fit — регрессионный анализ;
О random — генерация случайных чисел с различными законами распределения;
О statevalf — вычисление статистических функций и получение оценок для массивов данных;
О statplots — построение графиков статистических функций;
О transform — функции преобразования данных.
Генерация случайных чисел
с заданным распределением
Основой этого подпакета является функция random:
random[distributi on] (quantity,urn form.method) или
statsirandom, distribution] (quantity.uniform.method)
где
О distribution — описание закона распределения случайных чисел;
О quantity — положительное число, указывающее на количество получаемых случайных чисел (по умолчанию 1, возможен параметр 'generator');
О uniform — процедура генерации чисел с равномерным распределением или ключевое слово 'default' (по умолчанию);
О method — указание па один из трех методов ('auto', 'inverse' пли 'builtin').
Возможно задание дискретных и непрерывных распределений, например bi nomial d — дискретное биномиальное распределение, discreteuniform -- дискретное равномерное распределение, empirical — дискретное эмпирическое распределение, poisson — дискретное распределение Пуассона, beta — бета-распределение, cauchi — распределение Коши, exponential — экспоненциальное и др. (есть функции практически для всех известных распределений).
Следующие примеры демонстрируют технику получения случайных чисел с заданным законом распределения:
w1th(stats):O1g1ts:=5:
stats[random. normald](5):
.79697. -.40654, -.085304. .71297. 1.1119
statsErandom. normald](5,'default'.'Inverse');
.63631, .72218, -.063423. -1.5123, .84664
seed:=l:
uniform_generator:=proc()
global seed;
seed:=1rem(seed*ll,101):
R£TURN(seed/101)
end:
random[gamma[3]](5,uniform_generator);
1-1719. 1.5144. 3.3684. 1.9976. 4.8183
Графика статистического пакета stats
Статистический пакет stats имеет свою небольшую библиотечку для построения графиков. Она вызывается в следующем виде:
stats[statplots. functionl(args)
или
statplots[function](args)
Вид графика задается описанием function: boxplot, histogram, notchedbox, quantile, quantile2, scatterld, scatter2d и symmetry. Данные функции обеспечивают построение типовых графиков, иллюстрирующих статистические расчеты. В качестве примера на рис. 16.13 показано задание множества случайных точек и его отображение на плоскости в ограниченном прямоугольником пространстве.
Majple 7 - [Grand.mws - [Server 1|)
22 5'^ ^£п$е<* Fc^mai ,, ‘ ’ gf&eir» Window ^ф'*1^1 Xi
। Создание массивов случайных чисел и их графическое представление^
। > with(stats): d:=rand[0. .1000]:“
[> xdata:=[seq(evalf(d()/100),1=1..400)]:
[> ydata:=[seq(evalf(d()/100)fj=l..400)]:
f> statplots[scatterplot](xdata,ydata,color—black,axes=boxed);
Рис. 16.13. Создание случайных точек и построение их на плоскостиРис. 16.13. Создание случайных точек и построение их на плоскости
Рис. 16.13. Создание случайных точек и построение их на плоскости
Рис. 16.13. Создание случайных точек и построение их на плоскости
По равномерности распределения точек можно судить о качестве программного генератора случайных чисел, встроенного в Maple 7.
Довольно часто для визулизации вычислений используется построение гистограмм. Для их создания пакет stats имеет функцию histogram:
stats[statplots, hlstogram](data)
statplots[hi stogram](data)
stats[statplots. histogram[scale](data) statplots[hi stogram[scale](data)
Здесь data — список данных, scale — число или описатель. Детали применения этой простой функции поясняет рис. 16.14. На нем дан два примера — построение столбцов заданной ширины и высоты и построение гистограммы 100 случайных чисел с нормальным распределением.
Рис. 16.14. Построение гистограмм
Обратите внимание на то, что для второго примера гистограмма будет несколько меняться от пуска к пуску, так как данные для ее построения генерируются случайным образом.
Регрессионный анализ
Под регрессионным анализом (или просто регрессией) обычно подразумевают нахождение некоторой формальной аналитической зависимости, которая приближенно (по критерию минимума среднеквадратической ошибки) аппроксимирует исходную зависимость. Последняя чаще всего бывает представлена некоторым набором точек (например, полученных в результате эксперимента).
Для проведения регрессионного анализа служит функция fit, которая вызывается следующим образом:
stats[f1t,leastsquare[vars,eqn.parms]](data)
или
fit[leastsquare[vars.eqn,parms]](data)
где data — список данных, vars — список переменных для представления данных, eqn — уравнение, задающее аппроксимирующую зависимость (по умолчанию линейную), parms — множество параметров, которые будут заменены вычисленными значениями.
На приведенных ниже примерах показано проведение регрессии с помощью функции fit для зависимостей вида у(х):
with(stats):Dig1ts:=5;
Digits := 5
fit[leastsquare[[x,y]]]([[l,2,3.4],[3,3.5,3.9,4.6]]);
у = 2.4500 + .52000 x
f 1 t[leastsquare[[x,y], y=a*x'2+b*x+c]]([[1,2,3,4],[1.8,4.5.10,16.5]]): 2
у = .95000 x + .21000 x + .55000
В первом примере функция регрессии не задана, поэтому реализуется простейшая линейная регрессия, и функция fit возвращает полученное уравнение регрессии для исходных данных, представленных списками координат узловых точек. Это уравнение аппроксимирует данные с наименьшей среднеквадратичной погрешностью. Во втором примере задано приближение исходных данных степенным многочленом второго порядка. Вообще говоря, функция fit обеспечивает приближение любой функцией полиномом.
Рисунок 16.15 показывает регрессию для одних и тех же данных полиномами первой, второй и третьей степени с построением их графиков и точек исходных данных. Нетрудно заметить, что лишь для полинома третьей степени точки исходных данных точно укладываются на кривую полинома, поскольку в этом случае (4 точки) регрессия превращается в полиномиальную аппроксимацию. В других случаях точного попадания точек на линии регрессии нет, но обеспечивается минимум среднеквадратической погрешности для всех точек — следствие реализации метода наименьших квадратов.
Функция fit может обеспечивать регрессию и для функций нескольких переменных. При этом надо просто увеличить размерность массивов исходных данных. В качестве примера ниже приведен пример регрессии для функции двух переменных:
>f:=fit[leastsquare[[x,y,z],z=a+b*x+c*y,{a,b,c}]]\ ([[l,2,3,5.5].[2.4,6,8,8],[3.5,7,10.Weight(15.2)]]): f:=z= 1 + 13/3x-7/6y
fa:=unapply(rhs(f),x,y);
fa := (x, y) -> 1 + 13/3 x - 7/6 у
z> fad.,2.);
2.999999999 > fa(2.3);
37/6
Рис. 16.15. Примеры регрессии полиномоми первой, второй и третьей степени
В данном случае уравнение регрессии задано в виде г = а + b х + с у. Обратите внимание на важный момент в конце этого примера — применение полученной функции регрессии для вычислений или построения ее графика. Прямое применение функции f в данном случае невозможно, так как она представлена в невычисляемом формате. Для получения вычисляемого выражения она преобразуется в функцию двух переменных fa(x.y) путем отделения правой части выражения для функции f. После этого возможно вычисление значений функции fa(x,y) для любых заданных значений х и у.
К сожалению, функция fit неприменима для нелинейной регресии. При попытке ее проведения возвращается структура процедуры, но не результат регресии — см. пример ниже:
f1t[leastsquare[[x.у],y=a*exp(x)+b*x+c],{a,b,с}]([[1.2,3.4],\
[3,3.5,3.9.4.6]]):
fit,, А Д[ 1,2, 3,4], [3,3.5, 3.9, 4.6]])
J leastsquare,^a,b,cpLLJ LJ J 7
lx,yl,y = aex + bx + c
Для проведения нелинейной регрессии произвольного вида нужно обратиться к средствам нового пакета CurveFitting, включенного в состав Maple 7. Этот пакет был описан в главе 14.
Пакет для студентов student
Функции пакета student
Пакет student — это, несомненно, один из пакетов, наиболее привлекательных для студентов и аспирантов. В нем собраны наиболее распространенные и нужные функции, которые студенты университетов и иных вузов обычно используют на практических занятиях, при подготовке курсовых и дипломных проектов. Набор этих функций, разумеется, не ограничивается «скромными» потребностями студентов — просто это наиболее распространенные функции, в основном относящиеся к математическому анализу. Наряду со студентами эти функции широко используют профессионалы-математики и ученые, применяющие математические методы в своей работе.
В этом пакете имеется почти полсотни функций:
О D - дифференциальный оператор;
О Diff инертная форма функции вычисления производной;
О Doubleint — инертная форма функции вычисления двойного интеграла;
О Int — инертная форма функции интегрирования int;
О Limit — инертная форма функции вычисления предела limit;
О Lineint — инертная форма функции вычисления линейного интеграла lineint;
О Point — тестирование объекта на соответствие типу точки (point);
О Product — инертная форма функции вычисления произведения членов последовательности;
О Sum — инертная форма функции вычисления суммы членов последовательности:
О Triplei nt — инертная форма функции вычисления тройного интеграла;
О changevar — замена переменной;
О combine — объединение подобных членов;
О completesquare — вычисление полного квадрата (многочлена);
О distance — вычисление расстояния между точками;
О equate — создание системы уравнений из списков, таблицы, массивов;
О extrema — вычисление экстремума выражения;
О integrand — вывод подынтегрального выражения из-под знака инертного интеграла;
О intercept — нахождение точки пересечения двух кривых;
О intparts — интегрирование по частям;
□isolate — выделение подвыражения;'
О leftbox — графическая иллюстрация интегрирования методом левых прямоугольников;
О leftsum — числовое приближение к интегралу левыми прямоугольниками;
О makeproc — преобразование выражения в процедуру Maple;
О maximize — вычисление максимума функции;
О middlebox — графическая иллюстрация интегрирования методом центральных прямоугольников;
О middlesum — числовое приближение к интегралу центральными прямоугольниками;
О midpoint — вычисление средней точки сегмента линии;
О minimize — вычисление минимума функции;
О powsubs — подстановка для множителей выражения;
О rightbox — графическая иллюстрация интегрирования методом правых прямоугольников;
О rightsum — числовое приближение к интегралу правыми прямоугольниками;
О showtangent — график функции и касательной линии;
О simpson — числовое приближение к интегралу по методу Симпсона;
О slope — вычисление и построение касательной к заданной точке функции;
О trapezoid — числовое приближение к интегралу методом трапеций;
О value — вычисление инертные функции.
Функции интегрирования пакета student
В пакетах Maple 7 можно найти множество специальных функций для вычисления интегралов различного типа. Например, в пакете student имеются следующие функции:
О Int(expr.x) — инертная форма вычисления неопределенного интеграла;
О Doublet nt(ехрг.х, у, Domain) — вычисление двойного интеграла по переменным х и у по области Domain;
О Tripleint(expr,x,y,z) — вычисление тройного интеграла;
О 1 ntparts(f,и) — интегрирование по частям.
Ниже дан пример применения функции Tripleint пакета student:
Tripleint(f(x,y,z),x,y,z):
JJJ f(x, y,z)dx dy dz
Tripleint(x*y*zA2,x=0..2,y=0.,3,z=0..5);
xyz^dxdydz '
evalf(X);
375.0000000■
1nt(int(1nt(x*y*zA2,x=0..2).y“0..3),z=0..5);
375
Объективности ради надо отметить, что вычисление тройного интеграла с помощью функции Triplei nt занимает много времени (около 20 с на компьютере с процессором Pentium II 350 МГц). Однако тот же результат (см. последний пример) получается за доли секунды при использовании тройного интегрирования с помощью функции int.
Иллюстративная графика пакета student
Пакет student имеет три графические функции для иллюстрации интегрирования методом прямоугольников:
О leftbox(f(x), x=a..b, о) или leftbox(f(x), x=a..b, n, 'shading'=<color>, о);
О rightbox(f(x), x=a..b, о) или rightbox(f(x), x=a..b, п, о);
О middlebox(f(x), x=a..b, о) или middlebox(f(x), x=a..b, п, о);
Здесь f(x) — функция переменной х, х — переменная интегрирования, а — левая граница области интегрирования, b — правая граница области интегрирования, п — число показанных прямоугольников, color — цвет прямоугольников, о — параметры (см. ?plot,options).
Рис. 16.16. Примеры иллюстративной графики пакета student
В этих функциях прямоугольники строятся соответственно слева, справа и посередине относительно узловых точек функции /(х), график которой также строится. Кроме того, имеется функция для построения касательной к заданной точке х = а для линии, представляющей f(x):‘
showtangent (f(х). х = а)
Рисунок 16.16 показывает все эти возможности пакета student. Три вида графиков здесь построены в отдельных окнах.
Графические средства пакета student ограничены. Но они предоставляют как раз те возможности, которые отсутствуют в основных средствах построения графиков.
Пакет для работы с тензорами tensor
Этот пакет впервые появился в реализации Maple V R5. Он дает средства для работы с тензорами и вычислениями, используемыми в общей теории относительности. В нем использован специальный тип данных tensor_type в виде таблиц с двумя полями: компонентов и характеристик индексов. Поле компонентов — массив с размерностью, эквивалентной рангу объекта. Поле характеристик индексов задается списком чисел 1 и -1. При этом 1 на z-й позиции означает, что соответствующий индекс контрвариантный, а -1 — что он ковариантный.
Процедура tensor_type возвращает логическое значение true, если ее первый аргумент удовлетворяет свойствам тензора, и false, если он этому свойству не удовлетворяет.■
Каждому тензору соответствуют еще две таблицы. Таблица коэффициентов вращения задает коэффициенты вращения Ньюмена—Пенроуза, которые вычисляются функцией tensor[npsp1n] и индексируются именами греческих букв alpha, beta, gamma, epsilon и т. д. Другая таблица (компонент кривизны) содержит компоненты кривизны Ньюмена—Пенроуза. Они представлены тремя полями: полем Phi в виде массива размерности (0..2.0..2) с компонентами Риччи, поле Psi с массивом размерности (0..4) с компонентами Вейля и полем R со скаляром Риччи.
Объявление:
> with(tensor):
[Christoffel 1, Christoffel2, Einstein, Jacobian, Killing_eqns, Levi_Civita, Lie_diff, Ricci,
Ricciscalar, Riemann, RiemannF, Weyl act, antisymmetrize, change basis, commutator, compare, conj, connexF, contract, convertNP, cov_diff, create, dlmetric, d2metric, directional_diff, displayGR, display_allGR, dual, entermetric, exterior_diff, exterior_prod, frame, geodesic_eqns, get_char, get compts, get rank, init, invars, invert, lin com, lower,
npcurve, npspin,partial diff,permute-indices,petrov,prod, raise, symmetrize, tensorsGR, transform ]
дает доступ к следующим функциям пакета:
О Chri Stoffel 1 — вычисление символов Кристоффеля первого рода;
О Chri Stoffel 2 — вычисление символов Кристоффеля второго рода;
О Einstein — возвращение тензора Эйнштейна;
О display_alJGR — описывает ненулевые компоненты всех тензоров и параметров, вычисленных командой tensorsGR (общая теория относительности);
О displayGR — описывает ненулевые компоненты конкретного тензора (общая теория относительности);
О Jacobian — Якобиан преобразования координат;
О KIT 11ng_eqns — вычисление компонентов для уравнений Киллинга (имеет отношение к симметриям пространства);
О LeviCivita — вычисление ковариантных и контрвариантных псевдотензоров Леви—Чивита;
О Lie_diff — вычисляет производную Ли тензора по отношению к контрава- риантному векторному полю;
О Ricci — тензор Риччи;
О Ricciscalar — скаляр Риччи;
О Riemann — тензор Римана;
О RiemannF — тензор кривизны Римана в жесткой системе отсчета;
О tensorsGR — вычисляет тензор кривизны в данной системе координат (общая теория относительности);
О Weyl — тензор Вейля;
О act — применяет операции к элементам тензора, таблицам вращений или кривизны;
О anti symmetrize — антисимметризация тензора по любым индексам;
О change_basis — преобразование системы координат;
О commutator — коммутатор двух контравариантных векторных полей;
О compare — сравнивает два тензора, таблицы вращений или кривизны;
О conj — комплексное сопряжение;
О connexF — вычисляет связующие коэффициенты для жесткой системы координат;
О contract — свертка тензора по парам индексов;
О convertNP — преобразует связующие коэффициенты или тензор Римана к формализму Ньюмена—Пенроуза;
О cov_diff — ковариантное дифференцирование;
О create — создает тензорный объект;
О dlmetric — первая частная производная метрики;
О d2metric — вторая частная производная метрики;
О di recti onal_diff — производная по направлению;
О dual — осуществляет дуальную операцию над индексами тензора;
О entermetric — обеспечивает ввод пользователем координатных переменных и ковариантных компонент метрического тензора;
О exterior_difF — внешнее дифференцирование полностью антисимметричного ковариантного тензора;
О exterior_prod — внешнее произведение двух ковариантных антисимметричных тензоров;
О frame — задает систему координат, которая приводит метрические компоненты к диагональной сигнатурной матрице (с положительными пли отрицательными единицами);
О geodesic_eqns — уравнение Эйлера—Лагранжа для геодезических кривых;
О get_char — возвращает признак (ковариантный/контравариантный) объекта;
О getcompts — возвращает компоненты объекта;
О get_rank — возвращает ранг объекта;
О invars — инварианты тензора кривизны Римана (общая теория относительности);
О invert — обращение тензора второго ранга;
О 1 Incom — линейная комбинация тензорных объектов:
О lower — опускает индексы;
О npcurve — компонента кривизны Ньюмена—Пенроуза в формализме Дебевс- ра (общая теория относительности);
О npspin — компонент вращения Ньюмена— Пенроуза в (формализме Дебевсра (общая теория относительности);
О partial_diff — частная производная тензора;
О permuteindices — перестановка индексов;
О petrov — классификация Петрова тензора Вейля;
О prod — внутреннее и внешнее тензорные произведения;
О raise — поднятие индекса;
О symmetrize — симметризация тензора по любым индексам;
О transform — преобразование системы координат.
Примеры применения этого пакета можно найти в справочной базе данных системы. Пакет представляет интерес для физиков-теоретиков, работающих в области общей теории относительности и ее приложений. Для них (но не для большинства пользователей) приведенные данные полезны и понятны.
Пакет Domains
Этот небольшой пакет служит для создания доменов — таблиц операций для вычислений. При его загрузке появляется сообщение о переопределениях объектов и список из всего лишь шести функций:
>restart;with(Domains);
—- Domainsversion 1.0-—
Initially defined domains are Z and Q the integers and rationals
Abbreviations, e.g. DUP for DenseUnivariatePolynomial, also made
Warning, the protected names Array, Matrix and Vector have been redefined and unprotected
[Лггоу, Matrix, Matrixinverse, Vector, init, s/iow]
Пакет допускает применение следующих конструкций:
Domains[domain]Domains[eval domains]
Domainslexample]Domains[coding]
Приведенный ниже пример поясняет создание и использование доменов Q (для рациональных данных) и 1 (для целочисленных данных):
> Q['+'](l/2,2/5,3/8);
51
40
Z[Gcd](660.130);
10
Следующая операция показывает, что домен 1 является таблицей;
type(Z,table);
true
А функция show позволяет вывести полный перечень всех операций, доступных для домена Z:
> show(Z,operations);
' Signatures for constructor Г
" note: operations prefixed by are not available'
'* : (Integers.Z) -> Z'
'* : (Z.Z*)Г
'+ : (Z.Z*)->T
'-:(Z.Z)->T
'-:Z Г
'0:Z'
'1:Z'
'<:(Z.Z)->Boolean'
'<= : (Z.Z)->Boolean'
'<> : (Z.Z)->Boolean'
= : (Z.Z) -> Boolean'•
'> : (Z.Z) -> Boolean'
'>= ; (Z.Z) -> Boolean'
' Abs : 1 -> Z"
'Characteristic : Integers'
'Coerce : Integers -> Z'
' Div : (Z.Z) -> Union(Z.FAIL)'
'FuelIdeanNorm : 1 -> Integers'
' Factor : Z -> [Z,[[Z,Integers]*]]'
' Ged : Z* -> Z'
' Gcdex : (Z.Z.Name) -> Г
' Gcdex : (Z.Z.Name.Name) -> T
' Input : Expression -> Union(Z.FAIL)'
' Inv : Z -> Unlon(Z.FAIL)'
' Lem : Z* -> Z'
' Max : (Z.Z*) -> V
' М1п : (Z.Z*) -> Г
'Modp :(Z.Z) -> Z'
"Mods :(Z.Z) -> Z'
' Modular-Homomorphism : 0 -> (Z -> Z.Z)'
'Normal: Z -> Z',
'Output: Z -> Expression'
' Powmod : (Z.Integers.Z) -> Z'
' Prime : Z -> Boolean'
' Quo : (Z.Z.Name) -> T
'Quo : (Z.Z) -> T
'Random : () -> Z'
' Relat1velyPr1me : (Z.Z) -> Boolean'
' Rem : (Z.Z.Name) -> Z'
' Rem : (Z.Z) -> Z'
' Sign : Z -> UNION(l.-l.O)'
' SmallerEuclIdeanNorm : (Z.Z) -> Boolean'.
' Sqrfree : Z -> [Z.[[Z.Integers]*]]'
' Type : Expression -> Boolean'
' Unit : Z -> Z'
' UnltNormal : Z -> [Z.Z.Z]'
' Zero : Z -> Boolean'
' A : (Z.Integers) -> Z'
Домены позволяют передавать в качестве параметра процедур набор функций в виде единого целого, что и объясняет название этих объектов. Предполагается, что это может привести к заметному сокращению кодов программ вычислений в будущих реализациях системы Maple. Пока же возможности доменов скорее выглядят как очередная экзотика, чем как реальное средство для оптимизации вычислений. Потребуется время, чтобы показать, что это не так.
Обзор пакетов узкого назначения
Мы уже не раз обращали внимание читателя на выборочный характер описания системы Maple 7 в данной книге. Хотя она и является одной из самых полных книг по данной системе, книга не претендует на роль детального справочника по Maple 7. Более того, такого справочника в виде книги нет и, вероятно, учитывая быстрые темпы модернизации программы, так и не будет. Для подобного описания Maple пришлось бы подготовить многотомное издание, охватывающее практически все области математики.
Учитывая это, мы вынуждены отказаться от попытки описать ряд пакетов специального назначения. Такими пакетами интересуются серьезные специалисты в области математики и им (не без труда, разумеется) под силу разобраться с назначением функций таких пакетов и примерами их применения, приведенными в справочной системе Maple 7. В связи с вышесказаннным, мы ограничимся перечислением оставшихся неизученными пакетов.
Пакет функций теории чисел numtheory
В этом обширном пакете собрано 46 функций, относящихся к теории чисел:
with(numtheory):
Warning, the protected name order has been redefined and unprotected
VGIgcd, bigomega, cfrac, cfracpol, cyclotomic, divisors ,factorEQ, factorset ,fermat, imagunit, ■ index, integral_basis, invcfrac, invphi, issqrfreejacobi, kronecker, X, legendre, mcombine, mersenne, minkowski, mipolys, mlog, mobius, mroot, msqrt, nearestp, nthconver, nthdenom, nthnumer, nthpow, order, pdexpand, ф, Л, pprimroot, primroot, quadres, rootsunity, safeprime, C, sq2factor, sum2sqr, t, thue ]
В новой реализации Maple 7 число функций было уменьшено. Большинство функций этого пакета достаточно просты и заинтересовавшийся читатель вполне в состоянии провести их тестирование самостоятельно.
Пакет для работы с р-адическими числами padic
Этот весьма специфический пакет содержит следующие функции для работы с р-адическими числами:■
with(padic);
Yarccoshp, arccosp, arccothp, arccotp, arccschp, arccscp, arcsechp, arcsecp, arcsinhp, arcsinp, arctanhp, arctanp, coshp, cosp, cothp, cotp, cschp, cscp, evalp, expansion, expp, Icoeffp, logp, orderp, ordp, ratvaluep, rootp,sechp, seep, sinhp,sinp, sqrtp, tanhp, tanp, valuep"\
В Maple 7 число функций этого пакета увеличено почти в четыре раза. Однако ввиду специфичности данных функций их изучение мы оставляем за читателем для самостоятельной работы.
Пакет для работы с гауссовыми целыми числами Gausslnt
Гауссово целое число — это число вида а + 1*Ь, где а и b — любые целые рациональные числа. Таким образом, они образуют решетку всех точек с целыми координатами на плоскости комплексных чисел. Пакет Gausslnt содержит достаточно представительный набор функций для работы с этими числами:
with(GaussInt);
Warning, the name GIgcd has been redefined
VGIbasis, Glchrem, GIdivisor, GIfacpoly, GIfacset, GIfactor, GIfactors, GIgcd, GIgcdex,
Glhermite, Glissqr, Gllcm, GImcmbine, GInearest, GInodiv, GInorm, Glnormal, Glorder, GIphi, GIprime, Glquadres, Glquo, GIrem, GIroots, GIsieve, GIsmith, GIsqrfree, GIsqrt, Glunitnormal ]
Нетрудно заметить, что в этот набор входят уже известные числовые функции, к именам которых добавлены буквы GI. Например, функция Glfactor(c) раскладывает гауссово число (в том числе комплексное) на простые множители, GI ged (cl,с2) находит наибольший общий делитель гауссовых чисел cl и с2 и т. д. Функции этого пакета достаточно просты, так что ограничимся приведенными примерами. Гауссовы целые числа в большинстве научно-технических расчетов встречаются крайне редко. Так что этот пакет рассчитан на специалистов-математиков, работающих в области теории чисел.
Пакет алгебры линейных операторов Ore_algebra
Пакет Ore_algebra содержит набор функций алгебры линейных операторов, состав которого виден после обращения к пакету:
w1th(0re_algebra);
[Ore_to_DESol, Ore_to_RESol, Ore_to_diff, Ore_to_shift, annihilators, applyopr,diff_algebra, poly_algebra, qshift_algebra, rand_skew_poly, shift_algebra, skew_algebra, skew_elim. skew_gcdex, skew pdiv, skew_power, skew_prem, skew_product ]
Этот пакет поддерживает решение задач в области алгебры линейных операторов.
Инструментальный пакет для линейных рекуррентных уравнений LREtools
Этот пакет полезен математикам, часто использующим рекуррентные отношения и формулы. Он дополняет функцию rsolve основной библиотеки и содержит следующие функции:.
with(LREtools);
YREcontent, REcreate, REplot, REprimpart, REreduceorder, REtoDE, REtodelta, REtoproc, autodispersion, constcoeffsol, 8, dispersion, divconq, firstlin, hypergeomsols, polysols, ratpolysols, riccati, shift ]
С назначением функций этого пакета можно познакомиться по справочной системе Maple 7.
Пакет функций дифференциальных форм difforms
В пакете дифференциальных форм содержится следующий ряд функций:
with(difforms);
[<£Л, d, defform, formpart, parity, scalarpart, simpform, wdegree]
Демонстрационные материалы по применению этого пакета входят в поставку Maple 7.
Пакет для работы с рациональными производящими функциями genfunc
В пакете genfunc, предназначенном для работы с производящими функциями, содержатся следующие средства:
with(genfunc):
Yrgfcharseq, rgf_encode, rgfexpand, rgfJindrecur, rgf_hybrid, rgfnorm, rgf_pfrac, rgf_relate, rgfsequence, rgfsimp, rgfjerm, termscale}
Эти функции представляют специальный интерес для пользователей, работающих в области теории чисел и рациональных функций.
Пакет операций для работы с конечными
группами group
Этот пакет содержит довольно представительный набор функций для работы с конечными группами:
> w1th(group):
\DerivedS, LCS, NormalClosure, RandElement, SnConjugales, Sylow, areconjugale, center, centralizer, core, cosets, cosrep, derived, elements, groupmember, grouporder, inter, invperm, isahelian, isnormal, issubgroup, midperms, normalizer, orbit, parity, permrep, pres, transgroup ]
Функции этого пакета представляют интерес для математиков, работающих в области конечных групп. Но вряд ли они будут полезны большинству пользователей. Тем не менее, наличие таких функций говорит о полноте функциональных возможностей системы Maple 7.
Пакет для работы с симметрией Ли liesymm
В этом пакете, являющемся реализацией алгоритма Харрисона-Эстабрука, имеется ряд функций:
> with(llesymm):
Warning, the protected name close has been redefined and unprotected
[ <£л, &mod, H, Lie, Lrank, TD, annul, autosimp, close, d, depvars, determine, dvalue, extgen, extvars, getcoeff, getform, hasclosure, hook, indepvars, makeforms, mixpar, prolong, reduce, setup, translate, vfix, wcollect, wdegree, wedgeset, im/fo]
Эти функции достаточно специфичны и могут пригодиться лишь узким специалистам.
Пакет команд для решения уравнений SolveTools
Пакет команд с весьма многообещающим названием SolveTools на самом деле содержит вовсе не средства для решения уравнений, а несколько весьма специфических функций:
> with(SolveTools);
[£«5и, Complexity, GreaterComplexity, RationalCoefficients, Sort By Complexity]
Функции этого пакета позволяют найти базис выражений, дескрипторы и рациональные коэффициенты. Примеры применения этого пакета очень просты, и с ними несложно ознакомиться. Однако при этом возникает вопрос «Зачем это надо?», который (увы!) остается без ответа.
Пакет для работы с таблицами Spread
Загрузка этого пакета дает средства для работы с таблицами:
> with(Spread) ,■
[CopySelection, CreateSpreadsheet, EvaluateCurrentSelection, EvaluateSpreadsheet,
GetCellFormula, GetCellValue, GetFormulaeMatrix, GetMaxCols, GetMaxRows, GetSelection, GetValuesMatrix, InsertMatrixlntoSelection , IsStale, SetCellFornnda, SetMatrix, SetSelection ]
Функции пакета не имеют самостоятельного значения и призваны поддерживать работу с электронными таблицами, которая уже была подробно описана. Они дают такие средства, как создание в документе шаблона таблиц, проведение операций по заполнению и редактированию ячеек таблиц, копированию содержимого таблиц в буфер памяти и т. д. Назначение функций достаточно очевидно из их составных имен.
Пакет генерации кодов codegen
Пакет codegen представляет собой набор команд, предназначенных для организации взаимодействия системы Maple 7 с другими программными средствами:
with(codegen):
[ С, GRAD, GRADIENT, HESSIAN, J A COB1AN, cost, declare, dontreturn, eqn,fortran, homer, intrep2maple Joinprocs, makeglobal, makeparam, makeproc, makevoid, maple2intrep, optimize, packargs, packlocals, packparams, prep2trans, renamevar, split, swapargs ]
Этот пакет очень полезен программистам, занимающимся разработкой сложных программных комплексов. Пакет позволяет создавать процедуры на языке Maple 7 и транслировать их в программные модули, записанные на других языках программирования, таких как Фортран или Си.
Пакет создания контекстных меню context
Пакет context служит для создания контекстных меню. Он содержит небольшое число функций:
with(context);
[buildcontext, clearlabels, defaultcontext, display, installcontext, restoredefault, testactions, troubleshoot]
Этот пакет используется довольно редко и в основном пользователями, решающими в среде Maple не вычислительные, а системные задачи. Описание таких задач выходит за рамки данной книги.
Пакет организации многопроцессорной работы process
Этот узкоспециализированный пакет содержит ряд функций по организации работы на нескольких процессорах:
with(process):
\block, exec, fork, kill, pclose, pipe, рореп, wait]
Данные функции представляют интерес для пользователей операционной системы UNIX, так что в проблематику данной книги не входят.
Новые пакеты системы Maple 7
Пакет поддержки вычислений с размерными величинами Units
При выполнении большинства вычислений рекомендуется использовать безразмерные величины. Однако в некоторых областях науки и техники, например в физике, широко используются размерные величины, у которых помимо их значения указываются единицы измерения. Довольно развитую поддержку таких расчетов обеспечивает новый пакет расширения системы Maple 7 — Units. Он содержит следующие функции:
with(Units):
[AddBaseUnit, AddDimension, AddSystem, AddUnit, Converter, GetDimension, GetDimensions, GetSystem, GetSystems, GetUnit, GetUnits, HasDimension, HasSystem, HasUnit, Natural, RemoveDimension, RemoveSystem, Standard, Unit, UseContexts, UseSystem, UsingContexts, UsingSystem]
Большинство функций этого пакета достаточно просты и даже очевидны. В связи с этим ограничимся несколькими характерными примерами их применения:
> convert(4.532, units, N/mA2, (lb*ft/sA2)/ftA2):
3.045363395
convert(W, dimensions), converttW, dimensions, base):
length1 mass power, time3
with(Units[Standard]):
distance := 3.5*Unit(ft) + 2.4*Unit(m);
distance := 3.466800000 [wi]
force := distance*Unit(lb)/Unit(s)A2:
force := 1.572514028 [IV] '
convert(force, units, Ibf);
.3535152166 llbf]
V := i*R;
V:=iR,
evaKV, [i = 2.3*Unit(mA), R = 50.0*llnit(u0mega)]);'
.1150000000 IO’6 [K]
converter, units, nV );
115.0000000 [пГ]
Пакет для работы с рядами ортогональных многочленов OrthogonalSeries
Новый пакет для работы с рядами ортогональных многочленов OrthogonalSeries имеет довольно представительный набор функций:
with(OrthogonalSeries):
[Add, Apply Operator, ChangeBasis, Coefficients, ConvertToSum, Copy, Create, Degree, Derivate, DerivativeRepresentation, Evaluate, Getlnfo, Multiply, PolynomialMultiply, ScalarMultiply, Simplify Coefficients, Truncate]'
Поскольку этот пакет представляет интерес в основном для опытных математиков, мы не будем рассматривать его функции (в целом достаточно простые) подробно и ограничимся несколькими примерами. В следующем примере с помощью функции Create создается бесконечный ряд с ортогональным многочленом Эрмита в составе базового выражения ряда:
Orthogonal Series[Create](u(n),HermiteH(n,x));
У u(«) HermiteH(/7,x)
n = 0
В другом примере показано представление полиномиального выражения в новом базисе с ортогональными многочленами Чебышева с помощью функции ChangeBasis:
Orthogonal Series[ChangeBasis](l+3*y*x*2+yA3*x,ChebyshevT(n,x).\
ChebyshevU(m.y)) :
3
1 + — ChebyshevT(2, x)ChebyshevU (1, у) + — ChebyshevU(l,
4
+ ^- ChebyshevT(l, x)ChebyshevU(l, y)
> OrthogonalSeries[Evaluate](^) ;
3 x2 у +y x + 1
Обратите внимание на то, что новое выражение после исполнения команды Evaluate приняло вид исходного выражения.
Следующий пример демонстрирует создание ряда на основе ортогональных многочленов Чебышева и его копирование с помощью функции Сору:
S:=Create((-l)An/n!.ChebyshevT(n.x)):
(-1)” ChebyshevT (и, х)
п!
T:=Copy(S):
Вычисление производной от ряда с ортогональными многочленами представлено ниже:
S := Create(u(n).ChebyshevT(n.x));
S := X и(л) ChebyshevT (и, х) п=0
Derlvate(S.x) ;
, (в + 1) и(л + 1) ChebyshevU (п, х) н = 0
Еще один пример демонстрирует операцию скалярного умножения ряда с помощью функции Seal arMul 11 pl у:
S := Create(n+l,Kravchouk(n,p,q,x));
5 := У (п + 1) Kravchouk (п,р, q, х') и — 0
SealarMultiply(alpha.S) ;
У а (л + 1) Kravchouk (п, р, q, х) н = о
Приведенные примеры показывают, что применение этого пакета достаточно просто. С деталями (порой довольно многочисленными) применения функций этого пакета можно познакомиться по справке на данный пакет.
Пакет поддержки стандарта Math ML
Для представления математической информации на страницах Интернета в последние годы был создан специальный язык MathML. Пока для большинства пользователей MathML — просто «экзотика», ио так как наряду с XML его поддерживает World Wide Web Consortium, его вынуждены поддерживать все солидные фирмы — причем не только создающие системы компьютерной математики. Среди них такие крупные корпорации, как Intel, IBM и Microsoft. В Maple 7 предусмотрена новая возможность поддержки стандарта MathML 2.0. Для такой поддержки используются MathML Viewer (см. урок 2) и пакетМаДМЕ. Пакет MathML дает минимальный набор функций для использования языка MathML:
with(MathML);
^Export, ExportContent, ExportPresentation, Import, ImportContent^
В нем всего 5 функций, что позволяет разобрать их достаточно детально. Первые три функции служат для экспорта выражений:
О Export(expr) — преобразует Maple-выражение ехрг в параллельное MathML- выражение;-
О ExportContent (ехрг) — преобразует Maple-выражение ехрг в MathML-выражение в формате содержания;
О Exportpresentation (ехрг) — преобразует Maple-выражение ехрг в MathML- выражение в формате представления.
Еще две функции служат для импорта строки в формате MathML и его преобразования в Maple-выражение:
Importtmmlstring) и Importcontent(mmlstr1 ng)
Следующий пример наглядно иллюстрирует применение функций пакета расширения MathML для преобразования математического выражения а*х+Ь вначале в запись на MathML, а затем преобразование этой записи str в Марк- выражение:
str:=MathML[Export]( а*х + b );
str := "<math xmlns='http://www.w3.org/1998/Math/MathML'xsemanticsxmrow xrb
f='id5Xmrow xref- id3'><mi xref='idl'>a</mi><mo>⁢</mo><mi xref-id2'>x</mix/mrowXmo>+</moXmi xref=’id4'>b</mix/mrowxannotati on-xml encoding='MathML-Content'><apply id-id5'xp]us/xapply id-id3'xti\ mes/xci id-id 1 ’>a</ci><ci id='id2'>x</cix/applyxci id-id4'>b</cix/apply>\
</annotation-xmlxannotation encoding- Maple'>a*x+b</annotationx/semantics\ x/math>"
Import(str):
a x + b
Этот пример показателен тем, что дает представление о виде записей на языке MathML. Нетрудно заметить, что это достаточно громоздкий язык. Функции, представленные выше, автоматизируют процесс составления записей на языке MathML обычных математических выражений, что делает доступной для обычных пользователей подготовку публикации в Интернете, содержащей математические выражения.
Пакет XMLTools
В Марк 7 резко расширены средства интеграции с Интернетом. Это сделано не только на уровне специфических для математических приложений средств, таких как рассмотренный выше пакет MathML, но и на уровне обычных языков сети, таких как HTML и XML.
Пакет XMLTools служит для поддержки средств языка XML. Этот пакет предоставляет весьма внушительное число функций для этого:
with(XMLTools):
[AddAttribute, AddChild, AttrCont, AttributeCount, AttributeNames, AttributeValue,
■ AttributeValueWithDefault, Attributes, CData, CDataData, CleanXML, Comment, CommentText, ContentModel, ContentModelCount, Element, ElementName, Elementstatistics, Equal, FirstChild,FromString, GetAttribute, GetChild, HasAttribute, HasChild, IsCData, IsComment, IsElement, IsProcessinglnstruction,
IsTree, JoinEntities, LastChild, MakeElement, Print, PrintToFile, PrintToString, ProcessA(tributes. Processinginstruction, ProcessinglnstructionData, ProcessinglnstructionName, ReadFile, RemoveAttribute, RemoveAttributes, RemoveChild, RemoveContent, SecondChild, SelectAttributes, SelectContent, SelectRemoveAttributes, SelectRemoveContent, SeparateEntities, Serialize, Strip Attributes, StripComments, SubsAttribute, SubsAttributeName, ThirdChild, ToString, WriteFile]
Рассмотрение этих средств (как и средств поддержки HTML) далеко выходит за пределы тематики данной книги, хотя многие из них достаточно просты. Поэтому ограничимся единственным примером применения функции Print для получения программы на языке XML соответствующей программе задания выражения, рассмотренного в предшествующем разделе:
XMLTools[Print]( * );
<math xmlns='httpV/www.w3.org/1998/Math/MathML1 >
<semant1cs>
<mrow xref='1d5'>
<mrow xref='1d3'>
<mi xref='1dT>a</mi>
<mo>&Inv1s1 bl eTimes:</mo>
<mi xref='1d2'>x</m1>
</mrow>
<mo>+</mo>
<mi xref='1d4'>b</ml>
</mrow>
<annotat1on-xml encodlng=1MathML-Content'>
<apply 1d="1d5">
<plus/>
<apply 1d='1d3’>
<times/>
<ci 1d='1dT>a</c1>
<c1 1d=’1d2'>x</ci>
</apply>
<c1 1d='1d4’>b</c1>
</apply>
</annotat1on-xml>
<annotat1 on encodlng-1Maple'>a*x+b</annotat1 on>
</semant1cs>
</math>
Пакет создания внешних программ Externalcalling
Пакет External Calling служит для создания внешних программ, записанных на языке Maple (или C++). Состав пакета представлен небольшим числом функций:
О DefineExternal (fn.extlib) — используя функцию def 1 ne_external, Maple 7 задает внешнюю функцию fn в таблице функций внешних библиотек ext lib;
О External LibraryName (basename, precision) — задает имя basename функции и точность вычислений precision для функции внешней библиотеки.
Детальное знакомство с этим пакетом мы опускаем. Заинтересованный читатель найдет нужные сведения в справке по этому пакету.
Пакет линейных операторов LinearOperators
Пакет линейных операторов LinearOperators — новый пакет, содержащий средства для работы с линейными операторами. Состав пакета виден из его вызова:
with(LinearOperators);
YApply, DEToOrePoly, FactoredAnnihilator, FactoredGCRD,
FactoredMinimalAnnihilator, FactoredOrePolyToDE, FactoredOrePolyToOrePoly, FactoredOrePolyToRE, IntegrateSols, MinimalAnnihdator, OrePolyToDE, OrePolyToRE, REToOrePoly, dAlembertianSolver]
Набор функций пакета достаточно представителен. Но, поскольку область применения пакета весьма специфична, рекомендуется знакомиться с его возможностями по справкам на его функции и обзорной статье по нему, имеющейся в обзоре новых пакетов расширения Maple 7 (также размещенной в справочной базе данных пакета).
Пакет для работы со случайными объектами RandomTools
Пакет для работы со случайными объектами RandomTools служит для расширения базовых возможностей системы Maple 7 (для большинства пользователей и так вполне достаточных) в части генерации различных случайных объектов, таких как числа различных форматов, векторов, матриц, строковых символов, таблиц и т. д. Они образно названы Flavor (в буквальном переводе «букет (вина)»), что подчеркивает возможную сложность структуры создаваемых объектов.
Пакет представлен небольшим числом основных функций:
with(RandomTools):
^AddFlavor, Generate, GetFlavor, GetFlavors, HasFlavor, RemoveFlavor^
Однако функции AddFlavor и Generate могут использоваться с внушительным набором типов случайных объектов:
Choose
complex
exprseq
float
identical
Integer
11st
11stlist
negative
neg1 nt
Nonnegative
nonnegint
nonposint
nonpositive
nonzero
Nonzero)nt
polynom
posint
positive
rational
Set
structured
truefalse
Действие большинства из них вполне очевидно из названий. Основной функцией является функция генерации случайных объектов Generate(expr). Если тип объекта не задан (например, функцией AddFl avor), то использование функции Generate будет порождать сообщение об ошибке. Примеры применения функций представлены ниже: > with(RandomTools):
Generate(a):ч
Error, (in RandomTools:-Generate) the flavor 'a' does not exist
AddFlavor (a = randd. .20)):
Generate(a);
2
Generate!а);
11
Generate(alphachar);
Error, (in RandomTools:-Generate) the flavor 'alphachar' does not exist
AddFlavortalphachar = procO [a,b.c,d.e,f][rand(l. .6)0] end proc):
GetFlavors!):
a, alphachar, choose, complex, exprseq, float, integer, list, listlist, negative, negint, nonnegative, nonnegint, nonposint, nonpositive, nonzero, nonzeroint, polynom, posint, positive, rational, set, string, truefalse
Generate!integer);
-72580330913
Generate!11 st(float, 3));
[.00007110693270, .02633073697, .7256143563 10’7]
Generate([a, Integer, float]);
Error, (in RandomTools:-Generate) the flavor 'a' does not
exist
> Matrix(3, 3, Generate!rational(denominator=10), makeproc));
' _3_J.4 "
1025
2 il
1052
> Matrix(3, 3. Generate(rational(denominator=10), makeproc));
"2i1"9 "
5ioio
142
255
-34-9
16510
> Vector(4, Generate(complex(integer(range=l..100)). makeproc));
'67 +10 Г■
74 + 82 7
75 + 671
74 + 43 7
Функция GetFlavor(fl vr) представляют случайный объект (или объекты) в форме процедуры:
AddFlavorta = randd. .20)):
Generate!а);
15
GetFlavor(a);
Proc ().'
local t;
global _seed;
_seed := \xem(ax_seed,py, t := _seed;
to conceits do _seed " \xe\fax_yeed, p); t := sxt + _seed end do ; irem( t, divisor) + offset
end proc
GetFlavertInteger);
module 0 local Defaults; export Main; end module
Другая функция GetFlavorsO возвращает все типы случайных объектов:
GetFlavorsO;
a, alphachar, choose, complex, exprseq,float, integer, list, listlist, negative, negint, nonnegative, nonnegint, nonposint, nonpositive, nonzero, nonzeroint, polynom, posint, positive, rational, set, string, truefalse
Функция HasFlavortflvr) служит для проверки наличия объекта данного типа в списке типов объектов, а функция RemoveFlavortfl vr) — для удаления типа объекта. Следующие примеры иллюстрируют применение этих функций:
HasFlavor(a):
true
RemoveFlavor(a);
HasFlavor(a);
false
GetFlavorsO;
alphachar, choose, complex, exprseq, float, integer, list, listlist, negative, negint, nonnegative, nonnegint, nonposint, nonpositive, nonzero, nonzeroint, polynom, posint, positive, rational, set, string, truefalse
Обратите внимание на то, что после уничтожения объекта типа а он исчез из списка, выводимого функцией GetFlavors. Этот пакет, несмотря на довольно специфические возможности, наверняка будет полезен тем читателям, которые всерьез заняты реализацией «продвинутых» методов Монте-Карло, основанных на моделировании случайных объектов и ситуаций. Он служит серьезным дополнением к пакету статистических расчетов stats, описанному в этом уроке выше.
Пакет для работы со списками ListTools
Новый пакет ListTools содержит ряд полезных команд для работы со списками. Их набор представлен ниже:
with(listTools);
Warning, the assigned name Group now has a global binding
\BinaryPlace, BinarySearch. Categorize, DotProduct, FindRepetitions, Flatten,
FlattenOnce, Group, Interleave, Join, JoinSequence, MakeUnique, Pad, PartialSums, Reverse, Rotate, Sorted, Split, Transpose ]
Пакет содержит набор известных функций для работы со списками, например скалярного умножения списков, их обращения, транспонирования, поворота, объединения и т. д. Ограничимся примером на вычисление скалярного произведения векторов:
L : = [0.. .84, .91. .14. -.76. -.96, -.28. .66, .99. .41. -.54];
L := [0., .84, .91, .14, -.76, -.96, -.28, .66, .99, .41, -.54]
М : = [1., .54. -.42, -.99, -.65, .28. .96, .75. -.15, -.91. -.84]:
М := [1., .54, -.42, -.99, -.65, .28, .96, .75, -.15, -.91, -.84]
DotProductd, L);
5.0063
DotProduct(L, М);
.3162
Другие новые пакеты, CurveFitting и LinearFunctionalSystem, мы рассмотрели ранее достаточно подробно (см. уроки 14 и 15). В целом надо отметить, что состав пакетов Maple 7 существенно расширен по сравнению с предшествующими версиями системы. В то же время все пакеты, вошедшие в состав Maple 6, сохранены в новой версии программы — Maple 7, что гарантирует полную совместимость с ней. Практически это было подтверждено проверкой всех (а их многие сотни) примеров применения системы Maple 6 применительно к повой версии Maple 7.
Что нового мы узнали?
В этом уроке мы научились:
О Применять пакет решения задач оптимизации simplex.
О Использовать пакет двумерной геометрии geometry.
О Избранно применять пакет трехмерной геометрии geomSd.
О Использовать пакет для работы с алгебраическими кривыми algcurves.
О Строить и модернизировать графы с помощью пакета networks.
О Использовать возможности пакета статистических расчетов stats.
О Применять пакет для студентов student.
О Использовать средства поддержки MathML.
Использовать средства ряда новых пакетов Maple 7.
Я?)урокЯ?)урок□□
Я?)урок
Я?)урок
□
□
Примеры решения научно-технических
задач
Небольшое введение
Выбор аппроксимации для сложной функции
Моделирование физических явлений
Моделирование и расчет электронных схем
Небольшое введение
Выше при изложении данного учебного курса приводились многие сотни примеров применения системы Maple 7. При этом намеренно подбирались достаточно простые примеры, занимающие немного места и не требующие чрезмерных ухищрений для решения.
Многие читатели полагают, что системы компьютерной математики хорошо работают на таких простых примерах, но от них мало толку при решении реальных задач математики, физики или радиоэлектроники. Это, конечно, заблуждение. Дело просто в том, что при решении таких задач руководящая роль пользователя сильно возрастает. Вы должны понимать, что не Maple 7 решает вашу задачу, а вы! И система Maple 7 лишь помогает в этом трудном деле. Так что при неудачах в решении своих специфических задач следует прежде всего пенять на себя и на свое незнание возможностей системы Maple 7, а вовсе не на свою помощницу.
В том, что Maple можно успешно использовать при решении вполне конкретных научных и практических задач, призваны убедить примеры, приведенные ниже. Разумеется, и их нельзя отнести к таким сложнейшим задачам, как проектирование ядерного реактора или расчет траектории полета космического корабля, — не стоит забывать, что такие расчеты делают на суперкомпьютерах, а не на домашнем компьютере, который стоит перед вами. И объем материалов по сопровождению и результатам таких расчетов многократно превосходит объем всей этой книги. Тем нс менее в этом уроке вы встретите решение вполне реальных и полезных задач в области математики, физики и радиоэлектроники. Почему не в механике, гидродинамике или в оптике? Да потому, как верно сказал наш народный пророк Козьма Прутков: «нельзя объять необъятное». Приведенные примеры отчасти обусловлены личными пристрастиями автора; но они полезны каждому пользователю, желающему всерьез оценить возможности Maple 7.
Описанные в этом уроке задачи являются реальными документами, созданными и отлаженными в среде Maple 7 и лишь затем перенесенными в рукопись книги. Так что они заодно служат примерами того, как надо оформлять такие документы. В то же время от некоторых «излишеств» оформления (например, закрывающихся и открывающихся секций) мы отказались, дабы не усложнять описание документов явно второстепенными деталями. Начнем этот урок с решения весьма актуальной для многих областей применения математики задачи — аппроксимации сложной функции.
Выбор аппроксимации для сложной функции
Задание исходной функции и построение ее графика
Трудно представить себе область более широкую и почитаемую, чем аппроксимация различных функциональных зависимостей. С получения простой аппроксимации сложной зависимости нередко начинаются (а часто и заканчиваются) научные исследования во многих областях как прикладной, так и фундаментальной науки. Покажем возможности в этом системы Maple 7 на одном из примеров, давно помещенных в библиотеку пользователей системы Maple V R2, и переработанных для Maple 7.
Воспользуемся возможностями пакета numapprox, для чего прежде всего подключим его:
restart:w1th(numapprox);
\chebdeg, chebmult, chebpade, chebsort, chebyshev, confracform, hermitejiade, hornerform,"
infnorm, laurent, minimax,pade, remez]
Будем искать приемлемую аппроксимацию для следующей, отнюдь не простой, тестовой функции:
f := х -> 1nt(l/GAMMA(t). t=0..x ) / хА2;
гД)'"
plot(f,0..4,color=black);
График этой функции представлен на рис. 17.1. С первого взгляда — это простой график, но тут как раз тот случай, когда простота обманчива. Вы сразу заметите, что график строится необычно медленно, поскольку в каждой из множества его точек системе Maple 7 приходится вычислять значение интеграла с подынтегральной функцией, содержащей довольно каверзную гамма-функцию. И делает это Maple 7 по сложному и медленному алгоритму адаптивного численного интегрирования.
Рис. 17.1. График аппроксимируемой функции
Итак, вычисление /(х) по ее интегральному представлению совершенно не эффективно. Наша цель состоит в разработке процедуры вычислений, которая дала бы 6 точных цифр результата в интервале [0..4] и требовала, по возможности, наименьшего числа арифметических операций для каждого вычисления. Втайне не вредно помечтать о том, чтобы после аппроксимации время вычислений уменьшилось бы хотя в несколько раз. Что получится на деле, вы увидите чуть позже. А пока войдем в дебри аппроксимации.
Аппроксимации рядом Тейлора
Начнем с аппроксимации функции хорошо известным рядом Тейлора степени 8 относительно середины интервала (точки с х=2):
s := mapCevalf. taylor(f(x), х=2, 9));
5 := .4065945998- . 1565945998(х - 2) + .00209790791(х - 2)2 + .017626263930 - 2)3 - .006207547150(х - 2)4 + .00057335660 - 2)5 + .000243311630 - 2)6 - .00010010532 (х - 2)7 + .000014142120 - 2)8 + О((х - 2)9)
TaylorApprox := convert(s, polynom):
Такой ряд позволяет использовать для вычислений только арифметические действия, что само по себе здорово! Для удобства преобразуем аппроксимацию в функцию, чтобы она соответствовала форме, указанной для первоначальной функции f{x). Тогда мы сможем построить график кривой ошибок для аппроксимации полиномом Тейлора:
TaylorApprox := unapply(TaylorApprox. х);
TaylorApprox "х -> .7197837994- . 1565945998х + .00209790791(х - 2)2
+ ,01762626393(х - 2)3 - .006207547150(х - 2)4 + ,0005733566(х - 2)5
+ .00024331163(х - 2)6 - ,00010010532(х - 2)7 + ,00001414212(х - 2)8
Кривая ошибок для аппроксимации полиномом Тейлора строится командой:
plot(f - TaylorApprox, 0.,4,color=black);
и имеет вид, представленный на рис. 17.2. Эта кривая нас, прямо скажем, не слишком радует, поскольку погрешность в сотни раз превышает заданную.
,1234
о!
-0.0002J/
0.0004- /
0.0006: /
0.0008- /
0.001-/
-0.00124
-0.0014-
Рис. 17.2. Кривая погрешности при аппроксимации рядом Тейлора
Типичное свойство аппроксимации рядом Тейлора состоит в том, что ошибка мала вблизи точки разложения и велика вдали от нее. В данном случае самая боль-
шая ошибка имеет место в левой оконечной точке. Чтобы вычислить значение ошибки в точке х = 0, что ведет к делению на нуль (см. определение для /(%)), мы должны использовать значение предела:
maxTaylorError := abs( limit(f(x), х=0) - TaylorApprox(O) ): maxTaylorError := .0015029620
Итак, в самом начале наших попыток мы потерпели полное фиаско. Но отчаиваться не стоит, ибо, как говорят, «даже у хорошей хозяйки первый блин — комом».
Паде-аппроксимация
Теперь опробуем рациональную аппроксимацию Паде (Fade) функции /(%) степени (4,4). Приближения по этому разложению будут аппроксимировать функцию более точно, и потому ошибки округления в вычислениях станут более заметными. Поэтому зададим еще два дополнительных знака для точности вычислений.
Digits := 12:
s := map(evalf, taylor(f(x), х=2, 9)):
PadeApprox := pade(s, x=2, [4.4]);
Pade^ro%:=(.341034780922 + .0327799093746% - .0061278352789 (% - 2)2
+ .00452991086617(% - 2)3 - .000431506275874(% - 2)4)/(.068484878062)
+ .465757560969%+ . 159149617732(% - 2)2 + .0266813702995(% - 2)3
+ .00346967814937(% - 2)4)
PadeApprox := unapply(PadeApprox, x):
Кривая ошибки для интервала [0, 4] строится командой:
plot(f - PadeApprox. 0..4,color=black);
и имеет вид, показанный на рис. 17.3.
0 00035
0.0003-1
0.00025- I
0.0002: 1
0.00015: \
0.0О0Г \ 5е-05-\
01234
Рис. 17.3. Кривая погрешности при Паде-аппроксимации степени (4,4)
Как и при аппроксимации рядом Тейлора, ошибка здесь мала вблизи точки разложения и велика вдали от нее. Мы снова видим из графика, что для указанной функции, самая большая ошибка — в левой оконечной точке. Однако максимальная ошибка в Паде-аппроксимации уже на порядок меньше, чем при аппроксимации полиномом Тейлора:
maxPadeError := abs(limit(f(x), х=0) - PadeApprox(O));
maxPadeError := .000353777214
Это успех, показывающий, что мы на верном пути. Но пока погрешность остается слишком большой по сравнению с заданной.
Аппроксимация полиномами Чебышева
Знатоки техники аппроксимации знают, что лучшие приближения на заданном интервале могут быть получены при использовании разложения в ряд Чебышева. Это связано с тем, что ортогональные полиномы Чебышева позволяют получить аппроксимацию, погрешность которой в заданном диапазоне изменения аргумента распределена более равномерно, чем в предшествующих случаях. Выбросы погрешности на краях интервала аппроксимации в этом случае исключены.
Разложим функцию/(х) на [0, 4] в ряд Чебышева с точностью 1 * 10 н. Это означает, что все члены с коэффициентами меньше чем эта величина, будут опущены. Такая точность обеспечивается полиномом 13 степени:
> evalf( limit(f(x). х=0) ); .500000000000
fproc := proc(x) if x=0 then 0.5 else evalf(f(x)) fi end:
ChebApprox := Chebyshev(fproc, x=0..4, IE-8):
ChebApprox := .379206274272TI 0,-x-l -.202632813998T| 1,-x-l
I 2 J I 2
.03690648364301] 2,-x-l | + .0370131431541T| 3,-x-l
( 2)( 2
( 13fl
-.00888944143050T 4,-x-l -.0001497893366367 5,-x-l
I 2 J4 2
+.000642974620794T| 6,-x-l |-.000170677949427jf 7,-x-l |
I 2 >I 2 J
+.0000126917283881T| 8,-x-l | + .4398749287381 O'5if 9,-x-l I
V 2 JI 2 J
15628413987610"5t| 10,-x-l | + .20498054066410"6Т| 11,-x-l
( 2)I 2
+.4562542777781O"8T| l2,-x-l |-.694323955261 10"sT| 13,-x-l 22
Можно проверить для этого примера, что кривая ошибки при аппроксимации рядом Чебышева колеблется. Поскольку ряд Чебышева был оборван на члене 8й степени (как и полином ряда Тейлора), то максимальная ошибка оказалась равной приблизительно 0,6* 10'5. Эта величина уже на два порядка меньше, чем ошибка при Паде-аппроксимации, вычисленная выше. Но все же немного не дотягивает до наших требований.
Для последующих вычислений полезно заметить, что мы можем использовать процедуру для нахождения численных значений /(х), которая будет намного эффективнее, чем прямое определение, которое требует численного интегрирования для каждого значения х. А именно определим процедуру численной оценки, основанную на оазложении в ряд Чебышева степени 13, так как максимальная ошибка
при такой аппроксимации меньше чем 10-8, и обеспечивает для нашей цели достаточную точность. Мы определим полином Чебышева Т(х) из пакета orthopol у и затем для эффективной оценки преобразуем его в форму Горнера:
F := hornerform( eval(subs(T=orthopoly[T], ChebApprox)) );
F := unapply(F, x):
F~x -> .500001 + (.192405 + (-. 163970 + (-.0083867+ (.0277086+ (-.00593183 + (-.00132727
+ (.000910060 +(-.000180351
+ (.576869 10"5 + (.448884 10"5 + (-.990278 10"6 + (.925434 10"7 - .347162 10'8 x) x) x) x) x) x
)x)x)x)x)x)x)x
Схема Горнера минимизирует число арифметических операций, заменяя операции возведения в степень операциями последовательного умножения.
Аппроксимация Чебышева-Паде
Теперь рассмотрим еще более точную рациональную аппроксимацию Чебыше- ва-Паде. Это такая рациональная функция г [т, п] (х) с числителем степени m и знаменателем степени п такой же, как и для разложения в ряд Чебышева. Функция г [т, п] (х) согласуется с разложением в ряд Чебышева f(x) членом степени m+n. Мы вычислим аппроксимацию Чебышева-Паде степени (4,4), подобную обычной Паде-аппроксимации, успешно выполненной ранее:
ChebPadeApprox := chebpade(F, 0..4, [4,4]);
ChebPadeApprox ^ х ->^.2856483845031^0,^х-1^ + .08960336454107^1,|х-1
-.0062654651372171 2,-x-l | + .005378467083217| 3,-x-l I
I 2 II 2 I
0004149390869577, 4,-x-l | / Т| 0,-х-1 ] + .87930898922871 1,-х-1 |
(2( 2 J(2 J
+289575811178Т| 2, -х -1 I +.04879633550597, 3, -х -1 |
I 2 II 2 I
+.0065027220666071 4,-х-1 ,
I 2 J
Построим кривую ошибок:-
with(orthopolу. Т):
plot(F - ChebPadeApprox. О. .4.со!ог=Ыack);
Она представлена на рис. 17.4.
Максимальная ошибка и на этот раз имеет место в левой оконечной точке. Величина максимальной ошибки несколько меньше, чем ошибка при аппроксимации рядом Чебышева. Главное преимущество представления в виде рациональной функции — высокая эффективность вычислений, которая может быть достигнута преобразованием в непрерывную (цепную) дробь (см. ниже). Однако полученная максимальная ошибка Чуть-чуть больше заданной:
Рис. 17.4. Кривая ошибки при Паде-Чебышева рациональной аппроксимации
maxChebPadeError := abs( F(0) - ChebPadeApprox(O) );
maxChebPadeError" .1236746 10"5
Мы достигли впечатляющего успеха и остается сделать- еще один шаг в направлении повышения точности аппроксимации.
Минимаксная аппроксимация
Классический результат теории аппроксимации заключается в том, что минимакс как наилучшая аппроксимация рациональной функции степени (т, п) достигается, когда кривая ошибки имеет m+n+2 равных по величине колебаний. Кривая ошибки аппроксимации Чебышева-Паде имеет нужное число колебаний, но эта кривая должна быть выровнена (по амплитуде выбросов кривой ошибки) с тем, чтобы обеспечить наилучшее минимаксное приближение. Эта задача решается с помощью функции minimax:
MinimaxApprox := minimax(F, 0..4, [4,4], 1. 'maxerror’);
MinimaxApprox ;=x —»(.174932901740
+ (.0833009461857+ (-.0201932631012+ (.00368157773344- .000157697316206c)x)x)x)/( .349866213807
+ (.031945313924+(.0622933587074+(-.0011478761209+.0033634361216&)x)x)x)
Максимальная ошибка в аппроксимации MinimaxApprox дается значением переменной maxerror. Заметим, что мы наконец достигли нашей цели получения аппроксимации с ошибкой меньшей, чем 1*10"6:
maxMinimaxError := maxerror;
maxMinimaxError := .585025375366 10"6
Построим график погрешности для данного типа аппроксимации:
p1ot(F - MinimaxApprox.O..4,color-black);
График ошибки, представленный на рис. 17.5, показывает равные по амплитуде колебания.
6е-07:
4е-07- 2е-07-
0v
-2е-07-
-4е-07:
-6е-0?7
Рис. 17.5. График ошибки при минимаксной аппроксимации
Таким образом, мы добились блестящего успеха в снижении погрешности до требуемого и довольно жесткого уровня. Если бы мы задались целью получить только четыре или пять точных знаков аппроксимации, что в целом ряде случаев вполне приемлемо, то могли бы получить нужный результат гораздо раньше. Нам остается оптимизировать полученную аппроксимацию по минимуму арифметических операций и проверить реальный выигрыш по времени вычислений.
Эффективная оценка рациональных функций
Полиномы числителя и знаменателя в минимаксной аппроксимации уже выражены в форме Горнера (то есть в форме вложенного умножения). Оценка полиномом степени п в форме Горнера при n-умножениях и п-суммированиях — это наиболее эффективная схема оценки для полинома в общей форме. Однако для рациональной функции степени (т, п) мы можем делать кое-что даже лучше, чем просто представить выражения числителя и знаменателя в форме Горнера. Мы можем нормализовать рациональную функцию так, что полином знаменателя будет со старшим коэффициентом, равным 1. Мы можем также заметить, что вычисление рациональной функции степени (т, п) в форме Горнера требует выполнения все m+n сложений , m+n-1 умножений и 1 деления. Другими словами, общий индекс действия есть:
О m+n операций умножения/деления;
О m+n операций сложения/вычитания.
Вычисление рациональной функции можно значительно сократить и далее, преобразуя ее в непрерывную (цепную) дробь. Действительно, рациональная функция степени (т, п) может быть вычислена, при использовании только
О max(m,n) операций умножения/деления;
О m+n операций сложения/вычитания.
Например, если m = п, тогда эта новая схема требует выполнения только половины числа действий умножения/деления по сравнению с предшествующим методом. Для рациональной функции MinimaxApprox вычисление в форме, выраженной выше, сводится к 9 действиям умножения/деления и 8 действиям сложения/вычитания. Число операций умножения/деления можно сократить до 8, нормализуя знаменатель к форме monic. Мы можем теперь вычислить непре-
рывную (цепную) дробь для той же самой рациональной функции. Вычисление по этой схеме, как это можно видеть из вывода Maple, сводятся только к 4 действиям деления и 8 действиям сложения/вычитания:
MlnimaxApprox := confracform(MinimaxApprox):
1print(MinlmaxApprox(x));
-.468857770747e-l + 1.07858705749/(x+4.41994843227+16.1901737091/
(x+4.29121842830+70.1948525272/(x-l 0.2912843004+4.77536150167/(x+1.23883665458))))
Сравнение времен вычислений
Теперь определим время, необходимое для вычисления функции /(f) в 1000 точек, используя первоначальное интегральное определение, и сравним его с временем, требующимся для схемы MlnimaxApprox в виде непрерывной дроби. Так как наше приближение будет давать только 6 точных цифр, мы также потребуем 6 точных цифр и от интегрального представления функции:
Digits := 6: st := timet):
seqt evalf(f(1/250.0)). 1 = 1..1000 ):
oldtime := timet) - st;
oldtime := 81.805
В процессе вычислений с использованием представления рациональной функции в виде непрерывной дроби иногда требуется внести несколько дополнительных цифр точности для страховки. В данном случае достаточно внести две дополнительные цифры. Итак, новое время вычислений:
Digits := 8: st := timet):
seqt MinimaxApproxti/250.0), i = 1..1000 ):
newtime := timet) - st;
newtime := .694
Ускорение вычисления при аппроксимации есть:
SpeedUp := oldtime/newtime;
SpeedUp,;= 117.87464
Мы видим, что процедура вычислений, основанная на MlnimaxApprox, выполняется почти в 120 раз быстрее процедуры с использованием исходного интегрального определения. Это просто феноменальный успех, полностью оправдывающий время, потерянное на предварительные эксперименты по аппроксимации и ее оптимизации! Разумеется, при условии, что вы будете применять эту аппроксимацию многократно.
Преобразование в код Фортрана или С
Один из поводов разработки эффективной аппроксимации для вычисления математической функции заключается в создании библиотек подпрограмм для популярных языков программирования высокого уровня, таких как Фортран или С. В Maple имеются функции преобразования на любой из этих языков. Например, мы можем преобразовывать формулу для минимаксной аппроксимации в код Фортрана.
> fortran(MinimaxApprox(x)): fortran (-.0468860934488
1.07859095973
x + 4.41993871351+x + 4.41993871351+16.190185810216.1901858102х + 4.29117952035+х + 4.29117952035+70.194164500870.1941645008х- 10.2912413941+х- 10.2912413941+4.77540023037х+ 1.238838603424.77540023037х+ 1.23883860342
x + 4.41993871351+
x + 4.41993871351+
16.1901858102
16.1901858102
х + 4.29117952035+
х + 4.29117952035+
70.1941645008
70.1941645008
х- 10.2912413941+
х- 10.2912413941+
4.77540023037
х+ 1.23883860342
4.77540023037
х+ 1.23883860342
Итак, нами показано, что правильный выбор аппроксимации для сложной функции обеспечивает уменьшение времени ее вычисления более чем на два порядка (!) при весьма приличной точности в 6 верных знаков и при использовании для вычислений минимального числа арифметических операций. Применение при этом средств системы Maple 7 позволяет генерировать разложения в различные ряды, быстро вычислять рациональные аппроксимации функций и выполнять преобразования в различные специальные формы, сочетая это с мощными средствами интерактивной работы и графической визуализации, в частности с построением графиков функции и кривых ошибок при разных видах аппроксимации. Все это обеспечивает идеальную среду для решения таких задач.
Моделирование физических явлений
Расчет траектории камня с учетом сопротивления воздуха
Вы хотите метнуть камень в огород вашего вредного соседа? Разумеется, во время его отсутствия. Давайте промоделируем эту ситуацию, предположив два актуальных случая: дело происходит на Луне и на Земле. В первом случае сопротивления воздуха (как и его самого) нет, а в другом — сопротивление воздуха есть и его надо учитывать. Иначе камень упадет в ваш огород, а не в огород соседа!
Итак, пусть подвернувшиеся под руку камни с массой 500 и 100 г брошены под углом 45° к горизонту со скоростью Vo = 20 м/с. Найдем их баллистические траектории, если сила сопротивления воздуха Ртр=А*У, где А=0,1 Н*с/м. Сравним их с траекториями, получающимися без учета сопротивления воздуха.
Начнем с подключения пакета plots, нужного для визуализации данной задачи:
. > restart;
with(plots):z.
Warning, the name changecoords has been redefined
Составим параметрические уравнения для проекций скорости на оси координат:
Vox:-Vo*cos(alpha);Voy:=Vo*sin(alpha):
Vox := Vo cos(a)
У°У-= Postal a)
Мы рассматриваем два случая: камень массой 500 г и камень массой 100 г. Поскольку для каждого случая мы предусматриваем расчет в двух вариантах (с учетом сопротивления воздуха и без такого учета), то мы должны составить 4 системы дифференциальных уравнений (ДУ). Каждая система состоит из двух ДУ второго порядка и вид этих систем известен из курса физики. Ниже представлено задание этих систем ДУ (для первой системы дан вывод ее вида):
> sysl:=massa[l]*diff(x(t),t$2)=-A[l]*diff(x(t),t), massa[l]*diff(y(t),t$2)=-A[l]*(diff(y(t),t))-massa[l]*g:
- massa x g- massa x gsysl := massa
- massa x g
- massa x g
> sys2:-massa[l]*diff(x(t).t$2)-A[2]*diff(x(t),t), massa[l]*diff(y(t),t$2)-A[2]*(diff(y(t),t))-massa[l]*g:
> sys3:=massa[2]*diff(x(t),t$2)=-A[l]*diff(x(t),t), massa[2]*diff(y(t),t$2)=-A[l]*(diff(y(t),t))-massa[2]*g:
> sys4:=massa[2]*diff(x(t),t$2)-A[2]*diff(x(t),t),
massa[2]*diff(y(t),t$2)=-A[2]*(diff(y(t),t))-massa[2]*g:
Зададим исходные числовые безразмерные данные для расчета:
> Vo:=20:massa:=[0.5,0.1]:A:=[0.1,0]:alpha:=Pi/4;g:-9.8:
Vo := 20
massa := [.5, .1 ]
А :=[.1,0]
1 а := - л
4
g:=9.8
Выполним решение заданных систем ДУ:
> pl:=dsolve({sysl,x(0)=0.D(x)(0)=Vox,y(0)=0,D(y)(0)=Voy}, (y(t),x(t)}.
type-numeriс ,output-11stprocedure):
pl :=p = (proc (?) ... end proc ), x(?) = (proc (?) ... end proc ), ^ x(?) = (proc (?) ... end proc ), y(?) = (proc (?) ... end proc ), ^y(?) = (proc(?) ... end proc )
> p2:=dsolve({sys2,x(0)=0,D(x)(0)=Vox,y(0)=0,D(y)(0)=Voy}, (y(t),x(t)},
type-numeric ,output-11stprocedure):
> p3:=dsolve({sys3,x(0)=0,D(x)(0)=Vox,y(0)=0,D(y)(0)=Voy},
(y(t).x(t)},
type-numeric ,output-11stprocedure):
> p4:=dsolve((sys4,x(0)=0,D(x)(0)=Vox,y(0)=0,D(y)(0)=Voy}, (y(t).x(t)},
type-numeric ,output-1istprocedure):
Создадим графические объекты — результаты решения систем ДУ:
> al:=odeplot(pl,[x(t),y(t)],0.,3,color-green, view=[0..50,0..15], thickness-2):
> a2:=odeplot(p2,[x(t),y(t)],0..3,color-red. view=[0..50,0..15], thickness-2):
> a3:=odeplot(p3,[x(t).y(t)],0..3.color-blue, view=[0..50,0..15], thickness-2:
> a4:=odeplot(p4,[x(t),y(t)],0..3.color-black. view=[0..50,0..15], thickness-2):
Построим графики траекторий для первого случая:
t:=textplot([[25.8,'A=0.1'].[35,9,'A=0']],color=blue.
font=[TIMES,ROMAN.12]):
tl:=textplot([[17,3,'A=0.1'].[35,9,'A=0']].color=blue,■
font=[TIMES,ROMAN.12]):
display({al,a2,t},title='TpaeKT. полета тела кассой 500г", 1abels=[x,y],1abelfont=[TIMES,ROMAN.14]);
Графики траекторий полета камня с массой 500 г представлены на рис. 17.6.
Траектория полета тела массой 500 г
14-
Рис. 17.6. Баллистические траектории камня с массой 500 гРис. 17.6. Баллистические траектории камня с массой 500 г5050
Рис. 17.6. Баллистические траектории камня с массой 500 г
Рис. 17.6. Баллистические траектории камня с массой 500 г
50
50
Теперь построим графики траекторий для второго случая:
dTsplay({a3,a4,tl},title='TpaeKT. полета тела массой 100 г'.
1abels=[x.у]. 1 abelfont=[TIMES.ROMAN,14]);
Они представлены на рис. 17.7.
Рис, 17.7. Баллистические траектории камня при массе 100 г
Из проведенных расчетов и графиков видно, что при учете силы сопротивления воздуха дальность и высота полета сильно уменьшаются по сравнению с полетом в вакууме, и эта разница зависит от массы тела, поэтому при небольшой массе тела сопротивлением воздуха пренебрегать нельзя.
Движение частицы в магнитном поле
От реального мира перейдем к микромиру. Пусть микрочастица массой 9*10-31 кг и зарядом + 1,6* 10'19 Кл влетает в магнитное поле с индукцией В = 0,1 Тл под углом а=80°. Рассчитаем траекторию движения частицы при начальной скорости Vo = 1*107 м/с:
restart;
Сила Лоренца, действующая на движущуюся частицу F = q*(E+[v, В]). Проекции векторного произведения [у, В] на оси х, у, z:
[v,B]x=vy*Bz-vz*By [v,B]y=vz*Bx-vx*Bz [v,B]z=vx*By-vy*Bz
В соответствии с этим известные из курса физики дифференциальные уравнения, описывающие траекторию полета частицы по осям х, у, z имеют вид:
sys:=diff(x(t),t$2)=q*(Ex+(d1ff(y(t),t)*Bz-diff(z(t),t)*By))/massa.diff(у(t),t$2)=
=q*(Ey+(diff(z(t),t)*Bx-diff(x(t),t)*Bz))/massa,diff(z(t).t$2)=
=q*(Ez+(diff(x(t),t)* By-diffty(t),t)*Bx))/massa;
q £y + v z(/) St - v Ф Sz
d , xdz v 7 dz
y( z) =kk
massa
a2
—- z(z) = —+VЛ-+7+
(щmassa
Зададим исходные числовые данные (опустив размерности):
q:=-1.6e-19:massa:=9.1e-31:V:=le7:alpha:=80*Pi/180:
Vx:=V*cos(alpha):Vy:=V*sin(alpha):Ex:=O:Ey:=O:Ez:=O: Bx:=0.1:By:=0: Bz:=0:
Построим траекторию движения частиц в пространстве:
with(DEtools):DEplot3d({sys},(x(t),y(t).z(t)},t=0..2e-9.[[x(0)=0,D(x)(0)=Vx,y(0)= =0,D(y)(0)=Vy.z(0)=0,D(z)(0)=0]],stepsize=le-ll,or1entation=[24,ll7]);
Полученная траектория представлена на рис. 17.8. Она имеет вид спирали в пространстве. При этом скорость движения частицы вдоль оси х неизменна, а вдоль осей у и z имеет характерную колебательную компоненту. Случай явно куда менее тривиальный, чем полет камня, описанный выше.
Рис. 13.8. Траектория движения частицы в магнитном полеРис. 13.8. Траектория движения частицы в магнитном поле
Рис. 13.8. Траектория движения частицы в магнитном поле
Рис. 13.8. Траектория движения частицы в магнитном поле
Мы можем найти аналитическое представление для траектории частицы в виде параметрически заданной (с параметром времени t) системы из трех уравнений:
>xyz:=dsolve({sys,x(0)=0,D(x)(0)=Vx,y(0)=0,D(y)(0)=
=Vy.z(0)=0,D(z)(0)=0},{x(t),y(t),z(t)}, method=laplace):
, , x 1000000 xyz: {z(?)- 879120879, , x 1000000 xyz: {z(?)- 879120879. /4 A,<4 A
, , x 1000000 xyz: {z(?)- 879120879
, , x 1000000 xyz: {z(?)- 879120879
sin! - к I sin(8791208790 Z) , x(z) = 10000000cos! 9 л I 0
=71 sin( 17582417580 Z)}
о/У LZUo/У ^y )
Моделирование движения заряженной частицы в пространстве с магнитным полем показывает, что для принятых для моделирования параметров решаемой задачи, движение частицы происходит по спиралеобразной траектории. Получен как график траектории движения частицы, так и аналитические уравнения, описывающие это движение.
Разделение изотопов
Рассмотрим еще одну классическую задачу ядерной физики — разделение изотопов (атомов с одинаковым зарядом ядра, но разной массой). Для этого используют различные способы. В частности, это может быть масс-спектроскопический метод. Из точки А вылетают однозарядные ионы (q = е = 1.6* 10"19 Кл) разной массы (от 20 до 23 а.е.м.) и под разными углами в пределах от 80 до 100° к оси х в плоскости ху (рис. 17.9). Вдоль оси z приложено магнитное поле В=10 2 Тл. Рассчитаем траектории полета частиц. Будем надеяться, что это подскажет способ разделения изотопов.
Приступим к решению данной задачи. Сила Лоренца, действующая на движущуюся частицу, F = q^E+^v, В]). Проекции векторного произведения [v, В] на оси х, у, z заданы выражениями:
[v.B]x=vy*Bz-vz*By [v,B]y=vz*Bx-vx*Bz [v,B]z=vx*By-vy*Bz
Рис. 17.9. Иллюстрация к методу разделения изотоповРис. 17.9. Иллюстрация к методу разделения изотоповВ соответствии с этим дифференциальные уравнения, описывающие траекторию полета частицы по осям х, у, z имеют вид:
Рис. 17.9. Иллюстрация к методу разделения изотопов
Рис. 17.9. Иллюстрация к методу разделения изотопов
restart;
sys:=d1ff(x(t).t$2)=q*(Ex+(d1ff(y(t),t)*Bz-diff(z(t),t)*By))/massa,diff(y(t),t$2)= =q*(Ey+(diff(z(t),t)*Bx-d1ff(x(t),t)*Bz))/massa,diff(z(t),t$2)=
=q*(Ez+(diff(x(t). t) *By-diff(y(t).t)*Bx))/massa;
^2q\Ex +
massamassa8у$;=—гх(е) = ~^
massa
massa
Зададим исходные числовые данные для расчета:
q:=1.6e-19:V:=le4:
> Vx:=V*cos(alpha):Vy:=V*s1n(alpha):Ex:=0:Ey:=0:Ez:=0:Bx:=0:
By:=0:Bz:=le-2:
Выполним решение составленной выше системы дифференциальных уравнений:
>xyz:=dsolve({sys,x(0)”0,D(x)(0)-Vx,y(0)=0,D(y)(0)=Vy,z(0)=0,D(z)(0)=0},
(x(t),y(t),z(t)},fnethod=laplace):
XX:-(massa,alpha)->.6250000000e25*massa*(s1n(alpha)-1.*sin(alpha)*
.*cos(.1600000000e-20*t/massa)+cos(alpha)*sin(.1600000000e-20*t/massa));
YY:-(massa,alpha)->.6250000000e25*massa*(-l.*cos(alpha)+cos(alpha)*
'*cos(.1600000000e-20*t/massa)+sin(alpha)*sin(.1600000000e-20*t/massa));
XX"(massa, a) -> .62500000001025 massa
sin(a) - 1. sin( a )cos f. 160000000010"20 —-—| + cos(a)sinf. 160000000010"20 —-—
' 77 Imassa)Vmassa
YY"(massa, a) —> .62500000001025 massa
-1. cos(a) + cos( a)cos . 160000000010"20-1. cos(a) + cos( a)cos . 160000000010"20—-—14-sin(a) sinf. 160000000010"20 massa)\—-—14-sin(a) sinf. 160000000010"20 massa)\tmassatmassa
-1. cos(a) + cos( a)cos . 160000000010"20
-1. cos(a) + cos( a)cos . 160000000010"20
—-—14-sin(a) sinf. 160000000010"20 massa)\
—-—14-sin(a) sinf. 160000000010"20 massa)\
tmassa
tmassa
Построим графики решения:
ает:=1.67е-27: ur:-3.14/180:
plot([[XX(20*ает.80*ur),YY(20*ает,80*ur), t=0..10е-5],[XX(20*aem,90*ur).YY(20*aem,90*ur). t=0..10e-5],[XX(28*aem.80*ur),YY(28*aem,80*ur). t=0..10e-5],[XX(28*aem,90*ur),YY(28*aem,90*ur), t=0..10e-5],[XX(24*aem,80*ur),YY(24*aem.80*ur). t=0.,10e-5],[XX(24*aem,90*ur),YY(24*aem,90*ur), t=0..10e-5]],view=[0..0.65,0..0.65],
color=[red,red, Ы ue,blue,bl ack,Ыack],1abels=[x,y]):
Эти графики показаны на рис. 17.10.
Рис. 17.10. Траектории движения частиц
Полученные графики (рис. 17.10) наглядно показывают на одну из возможностей разделения изотопов. Как говорится, осталось подставить «стаканчик» в нужное место для ловли нужных изотопов. Разумеется, это только изложение идеи одного из методов разделения изотопов. Увы, на практике приходится использовать сложнейшие и дорогие физические установки для решения этой актуальной задачи. '
Моделирование рассеивания альфа-частиц
Одним из фундаментальных доказательств существования ядра у атомов стал опыт с бомбардировкой тонкой фольги из металла альфа-частицами с высокой энергией. Если бы «массивных» ядер не существовало, то альфа-частицы должны были бы спокойно пролетать сквозь тонкую фольгу, практически не отклоняясь. Однако, как физики и ожидали, некоторая часть частиц испытывала сильное отклонение и даже поворачивала назад. Очевидно, что имели место отскоки (упругие столкновения) с малыми, но массивными ядрами металла фольги.
В нашем распоряжении, увы (а может быть и к счастью), нет ускорителя альфа- частиц. Так что мы, не опасаясь облучения и очередной Чернобыльской катастрофы, сможем смоделировйть это интереснейшее физическое явление с помощью математической системы Maple 7. Причем спокойно сидя перед своим домашним компьютером и глубокомысленно наблюдая за траекториями полета альфа-частиц.
Итак, пусть в нашем теоретическом опыте альфа-частицы с энергией 4 МэВ рассеиваются тонкой золотой фольгой. Рассчитать траекторию частицы, приближающейся к ядру атома Au. Прицельное расстояние р равно 2*10"15 м. Приступим к решению задачи и зададим вначале систему дифференциальных уравнений для траектории альфа-частицы:
restart;
> sys:=diff(x(t).t$2)=ql*q2*x(t)/(4*Pi*E0*massa* (x(t)A2+
+y(t)A2)А(3/2)),di ff (y(t).t$2)=ql*q2*y(t)/(4*P1*E0*massa*(x(t)А2+у(t)А2)А (3/2));
_ d2 1ql q2 x(t)
^ '~ Э? X Z - 42,(3/2)’
л EO massa lx-V^ + y(/)*)
ii , x 1ql д2^ ’ 4,, (3/2)
л EO massa (x(/)2 + y(/)2)
Введем исходные числовые данные для вычислений:
ql: =2*1.бе-19:q2: =79*1.бе-19:massa: =4*1.67е-27: ЕО: =8.85е-12: а: =4е-13:
р: =5е-15: Т: =4еб*1. бе-19:VOx: =sqrt (2*Т/massa):
Создадим графическую структуру решения нашей системы дифференциальных уравнений для нескольких расчетных отклонений линии движения альфа-частицы от центра ядра атома, находящегося на ее пути:
> with(DEtools):ss:=DEplot({sys}.{y(t),x(t)},t=0.,7е-20, [[x(0)=-a.D(x)(0)=V0x.y(0)=p,D(y)(0)=0],
[x(0)=-a,D(x)(0)=V0x,y(0)=p*4,D(y)(0)=0],
[x(0)=-a,D(x)(0)=V0x.y(0)=p*8,D(y)(0)=0], [x(0)=-a,D(x)(0)=V0x,y(0)=p*12,D(y)(0)=0].
[x(0)=-a,D(x)(0)=V0x,y(0)=p*16,D(y)(0)=0],
[x(0)=-a,D(x)(0)=V0x,y(0)=p*20,D(y)(0)=0],
[x(0)=-a,D(x)(0)=V0x,y(0)=p*24,D(y)(0)=0], [x(0)=-a,D(x)(0)=V0x,y(0)=p*28,D(y)(0)=0]].
x(t)=-a.,a,scene=[x(t),y(t)],steps)ze=le-21,11necolor=bl ack):
> with(plottools) :yy:=c1rcle([0,0] ,2E-14,coloured,thickness=2):
Warning, the name translate has been redefined
Построим центр ядра (кружок со знаком +) и траектории альфа-частиц:
> ss2:=PL0T(TEXT([0.-0.Зе-14].'+'). FONT(HELVETICA. OBLIQUE.14)):
Осталось построить график траекторий движения альфа-частиц вблизи центра атома:
> wlth(plots):
Warning, the name changecoords has been redefined
> display([ss,yy.ss2],title='PacceKBaHMe а-частиц',axes=framed):
График траекторий движения альфа-частиц вблизи ядра представлен на рис. 17.11. Этот график настолько нагляден, что не требует пояснения.
Моделирование движения альфа-частиц вблизи малого и «массивного» ядра атома дает наглядное представление о математической и физической сути данного опыта. Надо лишь помнить, что нельзя нацеливать альфа-частицы прямо
в центр ядра. Более сложные, чем приведенные, расчеты показывают, что при этом альфа-частица настолько близко подходит к ядру, что надо учитывать новые факторы, возникающие при близком взаимодействии. Они могут привести к тому, что частица будет поглощена ядром. Но это уже тема нового разговора, выходящего за рамки данной книги. '
Рис. 17.11. Траектории движения альфа-частиц вблизи ядра атома
Моделирование и расчет электронных схем
Нужно ли применять Maple для моделирования и расчета электронных схем?
Нужно ли применять системы компьютерной математики для анализа, расчета и моделирования электронных схем? Ответ на этот вопрос не так прост, как кажется с первого взгляда. С одной стороны, к услугам пользователя компьютера сейчас имеется ряд программ схемотехнического моделирования, например Micro-САР, Electronics Workbench, PSpice, Design Labs и др., автоматически составляющих и решающих большие системы уравнений состояния электронных схем и моделирующих работу бесчисленного множества электронных схем без кропотливого «ручного» составления уравнений.
Но, с другой стороны, 'анализ схем в таких программах настолько автоматизирован, что начисто теряется его физическая и математическая сущность. Это не так уж страшно, когда моделируются типовые схемы на давно известных или, скорее, просто хорошо знакомых электронных приборах. Но это явно плохо, когда объек-
том исследования и моделирования являются новые нетрадиционные схемы на новых или малоизвестных приборах или когда знание физических и математических основ работы таких схем принципиально необходимо. Например, при изучении их в вузах и университетах. В этом случае применение систем компьютерной математики не только возможно, но и принципиально необходимо.
Малосигнальный анализ усилителя
на полевом транзисторе
Рассмотрим классический усилительный каскад на полевом транзисторе, схема которого приведена на рис. 17.12, а. Его эквивалентная малосигнальная схема представлена на рис. 17.12,6.
Рис. 17.12. Принципиальная (о) и эквивалентная (б) схемы усилителя на полевом транзистореРис. 17.12. Принципиальная (о) и эквивалентная (б) схемы усилителя на полевом транзисторе
Рис. 17.12. Принципиальная (о) и эквивалентная (б) схемы усилителя на полевом транзисторе
Рис. 17.12. Принципиальная (о) и эквивалентная (б) схемы усилителя на полевом транзисторе
Наша цель заключается в расчете характеристик усилителя операторным методом. Подключим нужный нам пакет plots:
> restart:with(plots):
Warning, the name changecoords has been redefined
Из законов Киргофа вытекает, что сумма токов, втекающих в каждый узел и вытекающих из него равна 0. Следовательно, для узлов эквивалентной схемы рис. 17.12 можно записать следующую систему уравнений в операторной форме:
> eql := 0 => eql := 0 =VI - VvsRIVI - VvsRIVI - V21sClVI - V21sCl
> eql := 0 =
> eql := 0 =
VI - Vvs
RI
VI - Vvs
RI
VI - V2
1sCl
VI - V2
1sCl
eq2 := 0 =eq2 := 0 =V2 - VI V2 V2 - V3;+ -^r +;
eq2 := 0 =
eq2 := 0 =
5 Cls C2
„. V3—V2 V3 + \lV2 V3-Vo
eq3..= 0 = —__ + __ + __
s C3s C3s C2
s C3
s C3
eq4 := 0 =eq4 := 0 =Vo- V31Vo- V31VoR4VoR4
eq4 := 0 =
eq4 := 0 =
Vo- V3
1
Vo- V3
1
Vo
R4
Vo
R4
s СЗ
Переменные напряжения на узлах схемы находятся из аналитического решения данной системы. При этом заблокируем вывод их аналитических значений, поскольку он очень громоздок. Тем не менее вы можете посмотреть на полученные формулы, поставив знак точки с запятой вместо знака двоеточия в приведенных ниже выражениях:
solve({eql.eq2,eq3,eq4),{VI.М2,V3.Vo}):
Обеспечим присвоение переменным Vo, VI, V2 и V3 найденных из решения системы уравнений значений:
assign(X);
Теперь найдем операторную передаточную функцию в аналитическом виде:
' Vvs
H:=((s С2 R3-p) Cl R2 s2 C3R4)/(lAsC3 R3As2 C2 R2 Cl Rl+sC2R3+sC3 R4
C3 R4 s2 C2 R2 p + s2 C3 R3 C2 R2 A s C2 R2 via C3 R4 s2 C2 R2 A s C2 R2 A s Cl R2
As3 C2 R3 C3 R4 Cl R2 A s2 C3 R4 Cl R2 A s2 C2 R3 Cl R2 A s2 C3 R3 Cl R2
C3 R4 s3 C2 R3 Cl RI As2 C2 R2 \aC1R1a C3 R4 s3 C2 R2 Cl RI
C3 R4 s3 C2 R2 ц. CI RI A C3 R4 s2 Cl RI + C3 s3 R3 C2 R2 Cl RI + C3 s2 R3 Cl RI
as2 C2 R3 C3 R4 + C2 R3 s2 Cl RI As Cl RI)
В соответствии с выбранным операторным методом анализа введем обозначения:
со := 2 л/
з ~1ш
s:=2Inf
Это позволяет найти Н как функцию от частоты f также в аналитическом виде:
Н;
4 «21 Ttf С2 R3 - \л) Cl R2Tt1jiC3R4) / (Д А21 к/СЗ R3 АН т^СЗ R3
4ir2f С2 R2 Cl RI A2IitfC3 R4-4СЗ R4it2/ С2 R2 \х-4112/ СЗ R3 С2 R2
21 itfC2 R2 ц - 4 C3R4 л2 f С2 R2 a2I nfCl R2 -8 In3 f C2R3C3R4 Cl R2
4 л2/ C3 R4 Cl R2 - 4 л2/ СЗ R3C1R2-%I СЗ R4 л3/ С2 R3 Cl R1
4 л2/ С2 R2 ц Cl R1 - 81 СЗ R4 л3/ С2 R2C1R1-%I СЗ R4 л3/ С2 R2 ц Cl R1
4СЗ R4n2ji Cl RI -81 СЗ л3 / R3 C2R2 Cl R1-4C3 u2 f R3 Cl RI
4 л2/ C2 R3 C3R4-4 C2 R3 Л2/ Cl RI + 21 nfCl RI A2InfC2 R2
4 л2/ C2R3 Cl R2)
Это тоже довольно громоздкое выражение, и его применение при «ручном» анализе потребовало бы от нас немало изобретательности. Между тем Maple 7 позволяет «в два счета» определить из него амплитудно-частотную (AVM) и фазочастотную (PhaseAV) характеристики усилителя как функции частоты:
AVM:=evalc(abs(H)):
PhaseAV:=evalc(argument(H)):
Преобразуем AVD в логарифмическую характеристику, выражающую усиление в децибелах (dB):
AVdB:=20*1oglO(AVM):
Такая характеристика более привычна для специалистов в радиоэлектронике. Соответственно фазо-частотную характеристику выразим в градусах:
R2D:=evalf(360/(2*Pi)):
R2D := 57.29577950
AVdeg:=R2D*PhaseAV:
Теперь можно перейти к обычным численным расчетам. Зададим конкретные значения компонент эквивалентной схемы усилителя:
Rl:=100: R2:=100000: R3:=1000: R4:=10000:
Cl:=.l*10A(-6): C2:=5*10*(-12): СЗ:=1*10П-6):
mu:=50:
Построим амплитудно-частотную характеристику усилителя:
gaindata:=NULL: phasedata:=NULL:
for a from 0 to 8 do:
for i from 2*10'a to 10A(a+l) by 10Aa do
gaindata:=gaindata, [1, evalf(subs(f=i.AVdB))];
phasedata:=phasedata, [1, evalf(subs(f=1.AVdeg))];
od: od:
loglogplot([gaindata], thickness=2, color=Nack, style=line, axes=boxed,
11Пе='Коэффициент усиления K(f)', labels=['Частота (Hz)'.'K(dB)']):
Она показана на рис. 17.13.
Рис. 17.13. Амплитудно-частотная характеристика усилителя
Далее зададим построение фазо-частотной характеристики усилителя:
> loglogplot([phasedata], thickness=2. color=blue, style=line, axes=boxed, title-'Фазовый сдвиг (в градусах)'. labels=['Частота (Hz)','Фаза']);
Она представлена на рис. 17.14.
Рис. 17.14. Фазо-частотная характеристика усилителя
Найдем номинальный коэффициент усиления на частоте f=1000 (Гц):
AVmid:=evalf(subs(f=1000, AVdB));
AVmid := 33.12074854
Имея аналитическое выражение для амплитудно-частотной характеристики, можно составить уравнения для вычисления граничных частот (по спаду усиления на -dAV в dB):
dAV:=3: ^Ослабление (в dB на граничных частотах)
eq5:=AVmid-dAV=20*logl0(AVM):
Теперь можно найти эти частоты — нижнюю и верхнюю:
flow:=fsolve(eq5,f, f=10..2000);
flow ;= 23.61659476
fh1gh:-fsolve(eq5.f. f=2000..100*10*6);
fhigh := .5737800225 107
Мы можем построить и более наглядную амплитудно-частотную характеристику с точками, соответствующими граничным частотам:
with(plottools) :h:=1oglO(AVmid-dAV):
aplot:= loglogplot([gaindata], th1ckness=2, color=black, style=line, axes=boxed, title='4acTOTM flow и fhigh среза', labels=['Частота (Hz)'.'K(dB)']):
bplot:-line([0.1,h], [7.1,h], color=black, linestyle=3):
cplot:=line([logl0(flow),0.58], [logl0(flow),1.6], color=blue, linestyle=3);
dplot:=line([loglO(fhigh),0.58], [loglO(fhigh), 1.6]. coloured, linestyle=3):
displ ay([aplot.bplot,cplot.dpiot]);
Эта характеристика показана на рис. 17.15.
На ней проставлены синяя и красная пунктирные вертикали, соответствующие найденным граничным частотам flow и fhigh, а также пунктирная горизонталь, соответствующая коэффициенту усиления на этих частотах. Это позволяет наглядно оценить частотный диапазон работы усилителя.
Таким образом, задача расчета усилителя в малосигнальном режиме полностью решена. Мы получрли значение номинального коэффициента усиления, рассчитали нижнюю и верхнюю граничные частоты, получили аналитические выражения для амплитудно-частотной и фазо-частотной характеристик усилителя и построили их наглядные графики.
Частоты flow и fhigh среза
K(dB) 1 е2
.1е2 ,1еЗ 1е41е5 1еЧ)5 1е+06 1 е+07 1е+О8
Частота (Hz)
Рис. 17.15. Амплитудно-частотная характеристикас выделенными точками граничных частот
Расчет аналогового фильтра на операционном усилителе
Теперь рассмотрим проектирование аналогового полосового фильтра на операционном усилителе, схема которого приведена на рис. 17.16.
Рис. 17.16. Схема полосового фильтра ' на интегральном операционном усилителе
Подготовимся к расчету фильтра:
restart:
Зададим основные уравнения, описывающие работу фильтра на малом сигнале:
Vo := (-Z2/ZD* VI;
> Zl := R3 + l/(I*omega*C3):
> Z2 :- R4*l/(I*omega*C4) / (R4 + l/(I*omega*C4)):
Введем круговую частоту:
omega := 2*Pi*f;
to :=2л/
Найдем коэффициент передачи фильтра и его фазо-частотную характеристику как функции от частоты:
gain .— abs(evalc(Vo/Vi)):
phase := evalc(op(2,convert(Vo/Vi,polar))):
Для просмотра громоздких аналитических выражений для этих параметров замените знаки двоеточия у выражений для gain и phase на знак точки с запятой. Далее введем конкретные исходные данные для расчета:
R3 := 1000:
R4 := 3000:
СЗ := 0.08*104-6):
С4 := 0.01*104-6):
Построим АЧХ фильтра как зависимость коэффициента передачи в децибелах (dB) от частоты f в Гц:
plot([loglO(f), 20*1oglO(galn), f=10..50000], color-black, title-'Козффициент передачи dB как функция от частоты f в Гц'):
Эта характеристика представлена на рис. 17.17. Здесь полезно обратить внимание на то, что спад усиления на низких и высоких частотах происходит довольно медленно из-за малого порядка фильтра.
Коэффициент передачи dB как функция от частоты f в Гц
Рис. 17.17. АЧХ фильтра на операционном усилителе
Далее построим фазо-частотную характеристику фильтра как зависимость фазы в радианах от частоты f в Гц:
plot ([loglO(f), phase. f=10..50000], color-black, title-'Фазо-частотная характеристика фильтра');
Фазо-частотная характеристика (ФЧХ) фильтра показана на рис. 17.18.
На ФЧХ фильтра можно заметить характерный разрыв, связанный с превышением фазовым углом 'граничного значения л. Такой способ представления фазового сдвига общепринят, поскольку его изменения стремятся вписать в диапазон от -л до л.
Рис. 17.18. ФЧХ фильтра на операционном усилителе
Проектирование цифрового фильтра
Основной недостаток аналоговых активных фильтров, подобных описанному выше, заключается в их малом порядке. Его повышение за счет применения многих звеньев низкого порядка ведет к значительному повышению габаритов фильтров и их стоимости. От этого недостатка свободны современные цифровые фильтры, число ячеек которых N даже при однокристальном исполнении может достигать десятков и сотен. Это обеспечивает повышенную частотную селекцию.
Спроектируем фильтр N+1-го порядка класса FIR (Finite Impulse Response или с конечной импульсной характеристикой). Каждая из N ячеек временной задержки фильтра удовлетворяет следующей зависимости выходного сигнала у от входного х вида:
У = У h .г
к=0
Подключим пакет расширения plots, нужный для графической визуализации проектирования:
> restart:with(plots):
Warning, the name changecoords has been redefined
Зададим исходные данные для проектирования полосового цифрового фильтра, выделяющего пятую гармонику из входного сигнала в виде зашумленного меандра с частотой 500 Гц:
N := 64:# Число секций фильтра (на 1 меньше порядка фильтра)
fs:=10000:#Частотаквантования
fl:=2300:#Нижняя граничная частота
fh:=2700:#Верхняяграничная частота
ш := 10:#2Ат > N- число точек для анализа
Вычислим:
Т : = 2Аш-1;
Т;= 1023
Fl := evalf(fVfs):
F1 := .2300000000
F2 := evalf(fh/fs);
F2 := .2700000000
Dirac(O) := 1: # Функция Дирака
fpl:=2*Pi*Fl: fp2:=2*Pi*F2:
Зададим характеристику полосового фильтра:
g := (s1n(t*fp2)-sin(t*fpl))/(t*Pi);
sin(.5400000000 Z я) - sin(.4600000000 / л) g :=:
Вычислим FIR-коэффициенты для прямоугольного окна фильтра:
С := (п) -> limit(g.t=n):h := aray(O..N): N2:=N/2:
for n from 0 to N2 do h[N2-n]:= evalf(C(n)): h[N2+n] := h[N2-n]; od:
Определим массивы входного x(n) и выходного у(п) сигналов:
х := array(-N.Л):у := array(O..T):.
Установим значение х(п) равным 0 для времени меньше 0 и J для времени >=0:
for n from -N to -1 do x[n] := 0; od:
for n from 0 to T do x[n] := Dirac(n); od:
Вычислим временную зависимость для выходного сигнала:
for n from 0 to Т do y[n] := sum(h[k]*x[n-k],k=0..N); od:
Построим график импульсной характеристики фильтра, отражающей его реакцию на сигнал единичной площади с бесконечно малым временем действия:
р := [seq([j/fs,y[j]],j=0.Л)]:
plotCp, t1me=0. ,3*N/fs, 1 abe1s=[time,output]. axes=boxed. xtickmarks=4, 11Ле='Импульсная характеристика фильтра*,color=black);
Он показан на рис. 17.19. Нетрудно заметить, что эта характеристика свидетельствует об узкополосности фильтра, поскольку его частоты fl и fh различаются несильно. В этом случае полосовой фильтр по своим свойствам приближается к резонансному, хотя само по себе явление резонанса не используется.
Импульсная характеристика фильтра
время
Вычислим АЧХ фильтра, используя прямое преобразование Фурье. Оно после подготовки обрабатываемых массивов реализуется функцией FFT:
го := arrayd. .Т+1):iо := arrayd. .Т+1):
for n from 0 to Т do ro[n+l] := y[n]; io[n+l] := 0: od:
FFT(m,ro,1o):
Построим график АЧХ фильтра:
р := [seq([j*fs/(T+l),abs(ro[j+l]+io[j+l]*I)],j=0..Т/2)]:
plottp, frequency=0..fs/2. labels=[frequency.gain], title='A4X фильтра',color=black):
Он представлен на рис. 17.20. Нетрудно заметить, что и впрямь АЧХ фильтра напоминает АЧХ резонансной цепи — она имеет вид узкого пика. Вы можете легко проверить, что раздвижением частот fl и fh можно получить АЧХ с довольно плоской вершиной и резкими спадами (говорят, что такая характеристика приближается к прямоугольной).
и о.в: K(f)0^ 04: 02:о*и о.в: K(f)0^ 04: 02:о*10001000АЧХ фильтраАЧХ фильтраРис. 17.20. АЧХ цифрового полосового фильтраРис. 17.20. АЧХ цифрового полосового фильтра4000400050005000
и о.в: K(f)0^ 04: 02:
о*
и о.в: K(f)0^ 04: 02:
о*
1000
1000
АЧХ фильтра
АЧХ фильтра
Рис. 17.20. АЧХ цифрового полосового фильтра
Рис. 17.20. АЧХ цифрового полосового фильтра
4000
4000
5000
5000
Теперь приступим к тестированию фильтра. Зададим входной сигнал в виде зашумленного меандра с частотой 500 Гц и размахом напряжения 2 В:
1 := round(fs/2/500):
for n from 0 by 2*1 to T do
for n2 from 0 to 1-1 do
if n+n2<=Tthen
x[n+n2] := evalf(-l+rand()/10A12-0.5):
fi:
if n+n2+l<=Tthen
x[n+n2+l] := evalf(l+rand()/10A12-0.5):
fi;
od:
od:
Временная зависимость синтезированного входного сигнала представлена на рис. 17.21.
Входной сигналВходной сигналРис. 17.21. Синтезированный входной сигналРис. 17.21. Синтезированный входной сигнал
Входной сигнал
Входной сигнал
Рис. 17.21. Синтезированный входной сигнал
Рис. 17.21. Синтезированный входной сигнал
Вычислим реакцию фильтра на входной сигнал:
for n from 0 to Т do
y[n] := sum(h[k]*x[n-k],k=0..N);
od:
Построим график выходного сигнала:
р := [seq([j/fs,x[j]],j=O..T)]:q := [seq([j/fs,y[j]J,j-О.Л)]:
plot(p,time=0..T/fs/4,labels=[time,volts],title-'Входной сигнал'.color-black);
plot(q,time=0.,T/fs/4,labels=[time,volts],title-"Выходной сигнал'.color-black);
Временная зависимость выходного сигнала показана на рис. 17.22. Нетрудно заметить, что в конце концов выходной сигнал вырождается в пятую гармонику входного сигнала, но этому предшествует довольно заметный переходной процесс. Он связан с узкополосностью данного фильтра.
Выходной сигнал
Рис. 17.22. Временная зависимость выходного сигнала цифрового фильтра
Вычислим спектры входного и выходного сигналов, подготовив массивы выборок сигналов и применив прямое преобразование Фурье с помощью функции FFT:
ri := arrayU. .Т+1) :ii := arrayU. .Т+1):
for n from 0 to T do
ri[n+l] ;- x[n]*2/T; ii[n+l] := 0;
ro[n+l] .- y[n]*2/T; io[n+l] : = 0;
od:
FFT(m,ri,ii):FFT(m,ro,1o):
Построим график спектра входного сигнала, ограничив масштаб по амплитуде значением 0,5 В:-
р := [seq([j*fs/(T+D ,abs(ri[j+l]+ii[j+l]*D]. j=0. .Т/2)]:
q := [seq([j*fs/(T+l),abs(ro[j+l]+io[j+l]*D]. j=0. .Т/2)]:
plot(p, frequency-0..fs/2,y=0..0.5,label5=[частота,У], title-'Частотный спектр входного сигнала'. col ог=Ы ack);
Этот график представлен на рис. 17.23. Из него хорошо видно, что спектральный состав входного сигнала представлен только нечетными гармониками, амплитуда которых убывает по мере роста номера гармоники. Пятая гармоника на частоте 2500 Гц находится посередине полосы пропускания фильтра, ограниченной граничными частотами фильтра 2300 и 2700 Гц. Заметны также беспорядочные спектральные линии шума сигнала в пределах полосы прозрачности фильтра.
Теперь построим график спектра выходного сигнала:
plot(q, frequency-0.,fs/2.^=0..0.5,label$-[частота,У], title-'Частотный спектр выходного сигнала',color-black):
Он представлен на рис. 17.24. Хорошо видно эффективное выделение пятой гармоники сигнала и прилегающей к ней узкой полосы шумового спектра.
Частотный спектр входного сигналаЧастотный спектр входного сигнала0.5ч0.4^0.5ч0.4^Рис. 14.23. Спектрограмма входного сигналаРис. 14.23. Спектрограмма входного сигнала0.510.4;о.з-0.2:0.100.510.4;о.з-0.2:0.10Частотный спектр выходного сигналаЧастотный спектр выходного сигнала10001000, _ ^^УМ^._, ...2000 частота 3000, _ ^^УМ^._, ...2000 частота 30004000500040005000
Частотный спектр входного сигнала
Частотный спектр входного сигнала
0.5ч
0.4^
0.5ч
0.4^
Рис. 14.23. Спектрограмма входного сигнала
Рис. 14.23. Спектрограмма входного сигнала
0.51
0.4;
о.з-
0.2:
0.1
0
0.51
0.4;
о.з-
0.2:
0.1
0
Частотный спектр выходного сигнала
Частотный спектр выходного сигнала
1000
1000
, _ ^^УМ^._, ...
2000 частота 3000
, _ ^^УМ^._, ...
2000 частота 3000
40005000
40005000
Рис. 17.24. Спектрограмма выходного сигнала цифрового фильтра
Приведенные данные свидетельствуют, что спроектированный фильтр полностью отвечает заданным требованиям и обеспечивает уверенное выделение пятой гармоники зашумленного меандра. По образу и подобию данного документа можно выполнить проектирование и других видов цифровых фильтров.
Моделирование цепи на туннельном диоде
А теперь займемся моделированием явно нелинейной цепи. Выполним его для цепи, которая состоит из последовательно включенных источника напряжения Es, резистора Rs, индуктивности L и туннельного диода, имеющего М-образную вольтамперную характеристику (ВАХ). Туннельный диод обладает емкостью С, что имитируется конденсатором С, подключенным параллельно туннельному диоду. Пусть ВАХ реального туннельного диода задана выражением:
restart;
А:=.3: а:=10: В:=1*10А(-8): Ь:=20:
Id:=Ud->A*Ud*exp(-a*Ud)+B*(exp(b*Ud-D):
, ттл (-a Ud) (bUd-X)
Id := Ud —> A Ud e + В e
Построим график BAX:
plot(Id(Ud), Ud=-.O2..0.76,color=black):
Этот график представлен на рис. 17.25. Нетрудно заметить, что ВАХ туннельного диода не только резко нелинейна, но и содержит протяженный участок отрицательной дифференциальной проводимости, на котором ток падает с ростом напряжения. Это является признаком того, что такая цепь способна на переменном токе отдавать энергию во внешнюю цепь и приводить к возникновению колебаний в ней различного типа.
Работа цепи описывается системой из двух дифференциальных уравнений:
di /dt=(Es-1 (t Ws-uCt) )/L
du/dt=(1(t)-Id(u(t))/C
Рис. 17.25. BAX туннельного диода
Пусть задано Es = 0,35 В, Rs = 15 Ом, С = 10*10-12, L = 30*10-9 и максимальное время моделирования tm=10*10-9. Итак, задаем исходные данные:
> Es:=.35:Rs:=15:C:=10*10A(-12):L:=30*10A(-6):tm:=10*10*(-9):
Составим систему дифференциальных уравнений цепи и выполним ее решение с помощью функции dsolve:
> se:=diff(i(t),t)=(Es-i(t)*Rs-u(t))/L, diff(u(t),t)=(i(t)-Id(u(t)))/C:
se = 116666666710s - 500000000i(r)
|u(0 = 1000000000001(0 -.300000000010" u(r) ef-1°“<r)) — 1000e<2°u<')-'1 ot
> F:=dsolve({se,1(0)=0,u(0)=0}.{1(t),u(t)},type=numeric, method=classical, steps!ze=10A(- 11), output=l!stprocedure);
F:= [z = (proc(z) ... endproc ), u(z) = (proc(Z) ... endproc ),
i(Z) = (proc(z) ... end proc )]
Поскольку заведомо известно, что схема имеет малые значения L и С, мы задали с помощью парметров достаточно малый шаг решения для функции dsolve — steps1ze=lOA(-ll) (с). При больших шагах возможна численная неустойчивость решения, искажающая форму колебаний, получаемую при моделировании. Используя функции odepl ot и di spl ay пакета plots, построим графики решения в виде временных зависимостей u(t) и 10*1(t) и линии, соответствующей напряжению Es источника питания:,
gu:=odeplot(F,[t,u(t)].0..tm,color-black,
labels=CtVu(t).l0*1(tr]):
gi:-odeplot(F,[t,l0*1(t)],0..tm.colQr-black):
ge:-odeplot(F,[t.Es].0..tm,color=red):
> display(gu,gi,ge):
Эти зависимости представлены на рис. 17.26. Из них хорошо видно, что цепь создает автоколебания релаксационного типа. Их форма сильно отличается от синусоидальной.
Рис. 17.26. Временные зависимости напряжения на туннельном диоде и тока
Решение можно представить также в виде фазового портрета, построенного на фоне построенных ВАХ и линии нагрузки резистора Rs:
gv:=plot({Id(Ud),(Es-Ud)/Rs},Ud=-.05..0.75,color=b1ack.
labels=[Ud,Id]):
gpp:=odeplot(F,[u(t).1(t)],0..tm,color=blue):
display(gv.gpp):
Фазовый портрет колебаний показан на рис. 17.27.
Рис. 17.27. Фазовый портрет колебаний на фоне ВАХ туннельного диода и линии нагрузки резистора Rs
О том, что колебания релаксационные можно судить по тому, что уже первый цикл колебаний вырождается в замкнутую кривую — предельный цикл, форма которого заметно отличается от эллиптической.
Итак, мы видим, что данная цепь выполняет функцию генератора незатухающих релаксационных колебаний. Хотя поставленная задача моделирования цепи на туннельном диоде успешно решена, в ходе eq решения мы столкнулись с проблемой обеспечения малого шага по времени при решении системы дифферен-
циальных уравнений, описывающих работу цепи. При неудачном выборе шага можно наблюдать явную неустойчивость решения.
Применение интеграла Дюамеля для расчета переходных процессов
Вернемся к линейным цепям и рассмотрим еще один полезный метод расчета электрических цепей — с помощью интеграла Дюамеля. При нем можно рассчитать временную зависимость выходного напряжения u2(t) цепи по известному входному сигналу ul(t) и переходной характеристике цепи a(t). Возьмем в качестве первого классического примера дифференцирующую RC-цепь и вычислим ее реакцию на экспоненциально нарастающий перепад напряжения. Соответствующие расчеты приведены на рис. 17.28.
Рис. 17.28. Расчет реакции дифференцирующей цепи на экспоненциальный перепад напряжения
Рисунок 17.28 представляет начало документа, в котором выполнен указанный выше расчет. Представлены заданные зависимости ul(t) и a(t), аналитическое выражение для интеграла Дюамеля (одна из 4 форм) и аналитическое выражение для искомой зависимости u2(t). Пока последнее выражение довольно простое. В конце этого фрагмента документа построены графики зависимостей ul(t), a(t) и u2(t).
Окончание документа, представленное на рис. 17.29, демонстрирует расчет на основе интеграла Дюамеля реакции дифференцирующей RC-цепи на экспоненциально затухающий синусоидальный сигнал ul(t).
Рис. 17.29. Расчет реакции дифференцирующей цепи на синусоидальный сигнал с экспоненциально уменьшающейся амплитудой
Обратите внимание на то, что выражение для u2(t), получаемое с помощью интеграла Дюамеля, стало намного сложнее. Тем не менее получено как аналитическое выражение для реакции цепи u2(t), так и графики u l(t), a(t) и u2(t). Они показаны внизу графика.
Что нового мы узнали?
В этом уроке мы научились:
О Оценивать возможности Maple 7 в решении конкретных прикладных задач.
О Выбирать аппроксимацию для сложной функции по заданной точности.
О Моделировать различные физические явления (полет камня, движение частицы в магнитном поле и др.).
О Моделировать и проектировать различные электронные схемы (усилителя, аналогового и цифрового фильтра, нелинейной цепи на туннельном диоде).
О Применять интеграл Дюамеля для расчета переходных процессов в линейных цепях.
Заключение
Программа Maple корпорации Waterloo Maple Inc. — патриарх в мире систем компьютерной математики. Эта система, снискавшая себе мировую известность и огромную популярность, является одной из лучших среди систем символьной математики, позволяющих решать математические задачи в аналитическом виде. Эта книга познакомила читателей с новейшей версией Maple — Maple 7. Она вобрала в себя не только обширные и мощные возможности предшествующих реализаций системы, но и предоставила в распоряжение пользователя ряд новых возможностей. Прежде всего это целый букет пакетов: CurveFitting, PolynomialTools, Orthogonal Series и др.
Maple как система компьютерной математики развивается по ряду характерных направлений. Одно из них — повышение мощности и достоверности аналитических (символьных) вычислений. Это направление представлено в Maple наиболее сильно. Maple 7 уже сегодня способна выполнять сложнейшие аналитические вычисления, которые нередко не под силу даже опытным математикам. Конечно, Maple не способна на «гениальные догадки», но зато рутинные и массовые расчеты система выполняет с блеском. В новой версии ее возможности существенно расширены, особенно в области решений дифференциальных уравнений.
Другое важное направление — повышение эффективности численных расчетов. И тут успехи налицо — начиная с версии Maple 6 в систему включены эффективные алгоритмы группы NAG, лидирующей в области численных расчетов. Повышена эффективность и алгоритмов самой системы Maple 7. В результате этого заметно возросла перспектива использования Maple в численном моделировании и выполнении сложных численных расчетов — в том числе с произвольной точностью.
Интеграция Maple с другими программными средствами — еще одно важное направление развития этой системы. Ядро символьных вычислений Maple уже включено в состав целого ряда систем компьютерной математики — от систем «для всех» класса Mathcad до одной из лучших систем для численных расчетов и моделирования — MATLAB. Имеется целый ряд автоматизированных рабочих мест для математиков на основе ядра системы Maple: Math Office, Scientific Word, Scientific Workplace и др.
Предусмотрена и интеграция Maple 7 с Excel 2000 и MATLAB. Однако альянс Maple 7 с Excel трудно назвать удачным. Во-первых, потому, что куда более распространенная версия Excel 97 связь с Maple 7 не поддерживает. Во-вторых, введенные в Maple 7 средства работы с таблицами (в том числе новые) в большинстве случаев оказываются более удобными, чем обычные средства работы с таблицами у Excel. Достаточно отметить, что таблицы в Maple могут работать с формульными данными и построение рисунков в Maple не требует создания таблицы данных для них, как это нужно в Excel.
Существенно расширена поддержка системы Maple через Интернет. Появление на сайте корпорации Waterloo Maple Inc. массы информационных материалов, и прежде всего обучающих программ и примеров применения Maple, разгрузило саму программу и предоставило ее пользователям обширные возможности в пополнении своих знаний и навыков работы с Maple 7.
С другой стороны, резко повышены возможности Maple 7 для создания web-страниц — основы Интернета. Здесь прежде всего надо отметить включение в пакеты средств поддержки языков HTML, XML и (что особенно важно) MathML.
Все эти возможности в сочетании с прекрасно выполненным и удобным пользовательским интерфейсом и мощной справочной системой делают Maple 7 первоклассной программной средой для решения самых разнообразных математических задач: от самых простых до самых сложных. Особо следует отметить возможность создания превосходных электронных документов, статей, книг и учебников в среде Maple 7 с «живыми» и модифицируемыми примерами.
Maple — быстро развивающаяся система, и работа с ней не только полезна, но и приятна для всех категорий пользователей и учащихся. Автор надеется, что эта книга привлечет внимание наших читателей, и прежде всего специалистов, преподавателей вузов, аспирантов, студентов и даже школьников, к такому уникальному программному продукту, как система компьютерной математики Maple 7, и поможет им в решении учебных и реальных научно-технических задач.
Список литературы
Дьяконов В. П. Справочник по расчетам на микрокалькуляторах. 3-е издание, дополненное и переработанное. М.: Наука, Физматлит, 1989.
Дьяконов В. П. Справочник по алгоритмам и программам на языке Бейсик для персональных ЭВМ. М.: Наука, Физматлит, 1987.
Дьяконов В. П. Форт-системы программирования персональных ЭВМ. М.: Наука, Физматлит, 1992.
Дьяконов В. П. Справочник по применению системы Eureka. М.: Наука, Физматлит, 1993.
Дьяконов В. П. Mercury — отличная система для всех // Монитор-Аспект. 1995. № 5.
Дьяконов В. П. Как выбрать математическую систему? // Монитор-Аспект. 1993. № 2.
Дьяконов В. П. Компьютерная математика. Теория и практика. М.: Нолидж, 2001.
Дьяконов В. П. Расширяемые системы для численных расчетов MatLAB. Монитор-Аспект, № 2, 1993.
Дьяконов В. П. Справочник по применению системы PC MatLAB. М.: Наука, Физматлит, 1993.
Дьяконов В. П. Система MathCAD: Справочник. М.: Радио и связь, 1993.
И. MathCAD 6.0 PLUS. Финансовые, инженерные и научные расчеты в среде Windows 95. Пер. с англ. М.: Филинъ, 1996.
Дьяконов В. П. Справочник по MathCAD PLUS 6.0 PRO. М.: СК-ПРЕСС, 1997.
Дьяконов В. П. Справочник по MathCAD 7.0 PRO. М.: СК-ПРЕСС, 1998.
Очков В. Ф. MathCAD 7 Pro для студентов и инженеров. М.: Компьютер Press, 1998.
Дьяконов В. П., Абраменкова И. В. Mathcad 7 в математике, в физике и в Интернет. М.: Нолилж, 1998.
Дьяконов В. П., Абраменкова И. В. Mathcad 8 в математике, в физике и в Интернет. М.: Нолилж, 1999.
Очков В. Ф. MathCAD 8 Pro для студентов и инженеров. М.: Компьютер Press, 1999.
Плис А. И., Оливина Н. A. Mathcad: математический справочник. М.: Финансы и статистика, 1999.
Дьяконов В. П. Mathcad 8/2000: Специальный справочник. СПБ: Питер, 2000.
Дьяконов В. П. Mathcad 2000: Учебный курс. СПБ: Питер, 2000.
Дьяконов В. П. Mathcad 2001: Учебный курс. СПБ: Питер, 2001.
Дьяконов В. П. Справочник по применению системы Derive. М: Наука, Физмат - лит, 1996.
Дьяконов В. П. Справочник по системе символьной математики Derive. М.: СК-ПРЕСС, 1998.
Лобанова О. В. Практикум по решению задач в математической системе Derive. М.: Финансы и статистика, 1999.
Дьяконов В. П. Справочник по математической системе Mathematica 2 и 3. М:: СК-ПРЕСС, 1998.
Воробьев Е. М. Введение в систему «Mathematica». М.: Финансы и статистика, 1998.
Дьяконов В. П. Mathematica 4 с пакетами расширений. М.: Нолидж, 2000.
Дьяконов В. П. Mathematica 4: Учебный курс. СПБ: Питер, 2001.
Потемкин В. Г. MATLAB: Справочное пособие. М.: Диалог-МИФИ, 1997.
Дьяконов В. П., Абраменкова И. В. MATLAB 5.0/5.3 — система символьной математики. М.: Нолидж, 1999.
Дьяконов В. П. MATLAB 5.3: Учебный курс. СПБ: Питер, 2001.
Дьяконов В., Новиков Ю., Рычков В. Самоучитель. Компьютер для студента. СПб: Питер, 2000.
Дьяконов В. П. Maple V — мощь и интеллект компьютерной алгебры! // Монитор-Аспект. 1993. № 2.
Прохоров Г. В., Леденев М. А., Колбеев В. В. Пакет символьных вычислений Maple V. М.: Петит, 1997.
Манзон Б. М. Maple V Power Edition. М.: Филинъ, 1998.
Дьяконов В. П. Математическая система Maple V R3/R4/R5. М.: Солон, 1998.
Дьяконов В. П. Maple 6: Учебный курс. СПБ: Питер, 2001.
Матросов A. Maple 6. Решение задач высшей математики и механики. СПБ: БХВ-Санкт-Петербург, 2001.
Heal К. М., Hansen L. М., Rickard К. М.. Maple 6. Learning Guide. Waterloo Maple Inc., 2000.
Monagan M. B., Geddes К. O., Heal К. M., Labahn G., Vorkoetter S. M.. Maple 6. Programming Guide. Waterloo Maple Inc., 2000.
Дэвенпорт Дж., Сирэ И., Турнъе Э.. Компьютерная алгебра. Системы и алгоритмы алгебраических вычислений. М.: Мир, 1991.
Саймон Барри. Символьная математика: новые времена —- новые формы // PC Magazine/RE. 1992. № 5..
Гантмахер Ф. Теория матриц. М.: Наука, Физматлит, 1988.
Справочник по специальным функциям с формулами, графиками и математическими таблицами / Под ред. М. Абрамовица и И. Стиган. М.: Наука, Физмат - лит, 1979.
Корн Г., Корн Т. Справочник по математике для научных работников и инженеров. М.: Наука, 1973.
Воднев В. Т, Наумович А. Ф., Наумович Н. Ф. Основные математические формулы. Минск: Высшая школа, 1988.
МоопР., Spencer D. Е. Field Theory Handbook, 2nd Ed. Berlin: Springer-Verlag, 1971.''
Spiegel, Murray R. Mathematical Handbook of Formulas and Tables. New York: McGraw Hill Book Company, 1968.
Дьяконов В. П. Windows 98. 98 вопросов no Windows 98 с ответами. М.: Солон, 1999.
Дьяконов В. И. Мой Word 95/97. М.: ACT, 1998.
Дьяконов В. И. Internet. Настольная книга пользователя. 3-е издание. М.: Но- лидж, 2001.
Алфавитный указатель
Символы
%, оператор подстановки последней операции, 228
&, указатель нейтральных операторов, 231
@@, оператор композиции, 225
А
анализ математический, 288
аппаратная арифметика NAG, 561
аппаратные требования, 42
Б
библиотека, 67
бинарные (инфиксные) операторы, 224
блок-матрица, 550
БПФ (быстрое преобразование
Фурье), 565
броузер Интернета, 186
В
ввод выражений, 54 исходных данных, 60
ввод (продолжение')
матриц интерактивный, 554
с помощью палитр ввода, 186
строк интерактивный, 251
визуализация
импликативных функций, 257
решения СЛУ с двумя
уравнениями, 321
решения СЛУ с тремя
уравнениями, 321
функции пользователя, 256
внешние вызовы, 284
возможности
вычислений, 40
вычисления функций, 40
графической визуализации, 41
интерфейса, 39
линейной алгебры, 40
программирования, 41
решения уравнений, 40
системы Maple 6, 39
вставка
гиперссылки на объект, 169
объекта из файла, 169
объекта-рисунка, 168
вывод
непечатаемых символов, 179
панелей интерфейса, 172
вывод {продолжение) управление, 185
выделение сигнала из шума
с помощью БПФ, 566
вызов внешних процедур языка С, 285
выражение
представление, 61
выделение и активизация, 58
уровни вложенности, 361
части, 360
вычисление
интеграла в закрытой форме, 64
интеграла по известной
формуле, 380
производных и интегралов, 64
чисел Фибоначчи, 330 символьные, 58
Г
галерея графики, 116
генерация кодов на языке С, 281
гиперссылка, 160
д
диагональ, главная, 549
диалог
основные особенности, 53
с системой Maple 7, 53
документ редактирование, 141 форма представления, 60
3
загрузка библиотеки командой with, 277
задание
векторов и матриц, 555
импликативной функции
пользователя, 257
закладки, 176
запись данных оператором
writedata, 279
запуск системы Maple 7, 49
знаки фиксации, 54
И
имя файла, 137 инкапсуляция, 283
интеграл
неопределенный, 296
определенный, 299
от сумм и полиномов, 297
преобразование, 298
с особыми точками, 302
с переменными пределами, 308
интеграция систем Maple 7
и MATLAB, 564
интегрирование выбор метода, 298 пределы, 296, 299 произвольные постоянные, 297 функций с синусом, 304
Интернет
Maple на российских сайтах, 123
подключение, 93
страница разработчика Maple 7, 92 интерфейс
графический, 51
пользователя, 51
информация
о модернизации систем Maple, 115
о поддержке программных продуктов, 98
о продукции фирмы MapleSoft, 96
о публикациях по системам Maple, 99 исключение оценки выражений, 288
К
клавиши
выделения, 74
горячие (Hot Keys), 73
загрузки, сохранения и печати документа, 75
задания стиля и режимов ввода, 74
переходов по документу, 75
просмотра документа, 75
удаления, вставки и замены, 74 ключ
arrow, 269
builtin, 269
ключ (продолжение)
copyright, 269
remember, 268
trace, 269
ключи, 267
книги электронные, 180
комментарии
программные, 58
текстовые, 60
контроль
типа строковых данных, 250
типов выражений, 364
Л
линейная алгебра, основные понятия, 548
локализация корней уравнений, 329
м
макросы, 284
матрица, 548
блок-диагональная, 550
в целой степени, 549
вырожденная (сингулярная), 548
единичная, 548
идемпотентная, 549
квадратная, 548
комплексно-сопряженная, 550
кососимметричная, 550
ленточная, 549
обратная, 549
определитель, 549
ортогональная, 550
ранг, 549
симметричная, 549
след, 549
Эрмитова, 550
транспонированная, 548
матрицы
L-норма, 550
диагональ, 549
норма, 550
сингулярные значения, 548
собственные значения, 550
собственный вектор, 550
матрицы (продолжение) ступенчатая форма, 549 характеристический многочлен, 550
матричная форма записи системы линейных уравнений, 550
меню
контекстное, 58
системы Maple 7, 51
метод Ньютона решения уравнения f(x) = 0, 378
моделирование шума, 566 модули, 283
н
наддиагональ, 549
неравенства, 325
несовместимость документов, 135
норма, 550
трехмерного вектора, 550 нуль-матрица, 550
О
обозначения в решениях уравнений, 316 обучающий курс, 83 окна
закрытие, 197
закрытие всех, 197
печати документов, 139
операторы save, 275 основные понятия, 55 присваивания, 55 равенства, 55 композиционные, 230 логические (булевы), 229 нейтральные, 231 неопределенные, 230 определение, 224 просмотр свойств, 224 работы с множествами, 227 свойства, 232 специальные, 230 типы, 224
операторы (продолжение)
унарные, 227
функциональные, 230
прерывания quit, done, stop, 263
операции
векторные и матричные, 556
матричные в пакете Matlab, 564 матричные пакета
Li near Algebra, 561
матричные символьные, 248
просмотра и печати документов, 134
с буфером обмена, 142
с векторами, 246
с матрицами, 247
создания, записи, экспорта и
закрытия файлов, 133
справочной системы, 80
Exit, 134
ввода ячеек в секцию, 166
переноса формул, 146
опции
задания типов чисел, 362
функции convert, 362
функции solve, 317
отладчик (debugger), 273
очистка сигнала, 567
ошибки
алгоритмические, 36, 56
индикация, 57
семантические, 56 синтаксические, 57 сообщения, 57
пакет, 38, 568
LinearAlgebra алгоритмов NAG, 560
Matlab функций системы MATLAB, 564 linalg, 551
палитры математических символов, 174 панель
инструментов, 68
управление показом, 173
контекстная управление показом, 174 параметры
функции expand, 374
функции fsolve, 328
функции simplify, 373
переменные
глобальные, 255
объявление, 266
глобальные функции solve, 316
индексированные, 245
локальные, 264
объявление, 265
перемещение маркера ввода, 54
переназначение определений, 282 перестановка
слагаемых, 290
сомножителей, 293
поддиагональ, 549
подстановка
определение, 368
с помощью функций add, mul и seq, 367
показ элементов документа, 178
и ослсдовательн ость
бесконечная, 289
произведение членов, 291
с заданным пределом, 289
с фиксированным числом членов, 288
предел функции в точке, 310 преобразование
выражений в тождественные
формы, 361
списков в векторы и матрицы, 246
строк в выражения, 252
примеры
создания и применения модуля, 283 операций с матрицами пакета linalg, 556 работы с линейными
функциональными системами, 569 решения СЛУ с двумя
уравнениями, 320
принтеры, 139
присваивание переменной значения
функции, 254
проблема разбухания результатов вычислений, 65
проверка решения уравнений, 318 производная
высокого порядка, 293
определение, 293
функции двух переменных, 294
процедура задание, 263 интегрирования по частям, 383 определение, 263 вложенная, 382 общая форма, 270 рекурсивная, 268
процедуры-функции, 263
Р
работа с отладчиком, 273 со справочной системой, 87
расположение окон вертикальное, 194 горизонтальное, 194 каскадное, 192 мозаика, 193
расширение выражений, 374 редактирование объекта, 170 редактор документов, 38 решение, 559
квадратного уравнения, 65 кубического уравнения, 65 неполной СЛУ, 323 неравенств, 325 одиночных уравнений, 317 систем линейных уравнений, 558 систем линейных уравнений в пакете
LincarAIgebra, 562
СЛУ с помощью функции solve, 320 СЛУ с тремя уравнениями, 321 СЛУ с четырьмя уравнениями, 323 специальных видов уравнений, 329 трансцендентных уравнений, 323 тригонометрических уравнений, 319 уравнений в численном виде, 328 уравнений и неравенств, 316 уравнений с линейными операторами, 327
уравнений со специальными функциями, 324
функциональных уравнений, 327 решения
уравнений периодические, 319
русскоязычные надписи в элементах интерфейса, 136
ряды, 311
Маклорена, 313
преобразование, 312
Тейлора, 312, 313
С
свойства модуля, 283 секции
закрытие всех, 183
и подсекции, 180
раскрытие, 184
управление показом, 181
синтаксис, 56
система
справочная, 51, 80
линейных уравнений, 320
создание библиотеки пользователя, 276
сортировка и селекция, 369 список
загруженных документов, 197
последних документов. 134
строк обработка, 251
строка состояния, 73
управление показом, 174
Студенческий центр, 111
сумма последовательности, 288
схема Горнера, 296
У
упрощение выражений, 372 установка
шрифтов, 165
Maple 7, 43
Ф
файлы
библиотек, 115
документов, 132
системы Maple, 132
факторизация, 375
формат
HTML, 137
файлов, 137
форматирование документов, 163
функции
гиперболические, 237
для манипуляции с выражениями, 360
импликативные, 256
комплексного аргумента, 241
линейной алгебры пакета linalg, 551
линейных функциональных
систем, 568
логарифмические, 238
математические, 233
обратные гиперболические, 238
обратные тригонометрические, 236
пакета LinearAlgebra, 560
пакета Matlab, 564
подстановки subs и subsop, 368
пользователя 254
с отдельным вектором и матрицей, 555
с элементами сравнения, 240
специальные математические, 241
степенные, 238
тригонометрические, 234 целочисленные, 234
элементарные, 233.
инертная, 60
как объект, 55
основные понятия, 54
пользователя, 58
Центр применений Maple, 102
числа Фибоначчи, 232
экспорт файлов, 137
электронные таблицы
адресация ячеек, 154
вставка шаблона, 155
определение, 154
электронные таблицы (продолжение) автоматическое заполнение, 157 ввод данных в ячейку, 157 формулы, 157
Я
Ядро системы, 37
Язык
входной, 38
программирования, 38 реализации, 38
ячейки
управление показом, 182
А
А, оператор селекции, 371
About Maple 7, команда, 91
alias, функция переназначения определений, 282
applyop, функция подстановки, 366
Arrange Icons, упорядочение значков окон, 194
Assumed Variables, команда, 188
Auto Save Settings, флажок, 138
В
Bookmarks, команда, 176
break, оператор прерывания, 262
С
Cassiopeia А22Т, 127
Character, команда, 166
Clipboard, буфер обмена, 142
Close All Help, команда, 197
Close All, команда, 197
Close, комацда, 138
combine, функция объединения степеней, 363
Context Ваг, команда, 174
convert, функция преобразования выражений, 361
Copy As Maple Text, команда, 145
Сору, команда, 144
Cut, команда, 143
D
D, дифференциальный оператор, 295 define, оператор определения
операторов, 231
Delete, команда, 148
Diff, инертная функция вычисления производных, 293
diff, функция вычисления производных, 293
Drag and Drop, 145
Е
Edit, меню, 141
entermatrix, функция интерактивного ввода матриц, 554
ERROR, функция вывода сообщения об ошибке, 267
Execute, команда, 150
Execution Group, команда, 154
Exit, команда, 134, 138
expand, функция расширения выражений, 374
Export, команда, 186
F
Factor, инертная функция факторизации, 376
factor, функция факторизации, 376
false, константа логическая, 229
File, меню, 133
Find, команда, 149
for, оператор цикла, 259
Format, меню, 163
fsolve, функция решения уравнений в численном виде, 328
Full Text Search, команда, 89
н
has, функция контроля вложенности, 365 hastype, функция контроля типов
объектов, 365
Help on Context, команда, 82
Help, меню, 80
History, команда, 89
history, функция диалоговых
вычислений, 228
HTML, 137
HyperLink, команда, 160
I
if, оператор условных выражений, 258
ifactor, функция целочисленной факторизации, 375
Indent, команда, 166
Input Display, команда, 186
Input mode, команда, 150
Insert Mode, команда, 185
Insert Spreadsheet, команда, 154
Insert, меню, 152
Int, инертная функция
интегрирования, 64, 296
int, функция интегрирования, 296
interface, функция управления
выводом, 271
isolve, функция решения целочисленных уравнений, 331
L
Limit, инертная функция вычисления предела, 310
limit, функция вычисления предела, 310
м
тар и тар2, функции подстановки, 366
Maple
интегрированная система, 35
система компьютерной алгебры, 34
Maple 7
запуск, 49
новые возможности, 87
установка, 43
Maple Input, команда, 154
Maple Powertools, инструментальный
пакет, 109
MathML, 119
MathML Viewer, 120
MATLAB, 563
matrix, функция задания матриц, 555
method, параметр указания метода, 375
msolve, функция решения уравнений по модулю, 331
mtaylor, функция taylor для ряда переменных, 313
N
NAG (Number Algorithm Group), 35, 559
New Features, команда, 86,
New User's Tour, команда, 83
New, команда, 134
next, оператор выхода из цикла, 262
notebooks, стиль документов, 132
О
Object, команда, 168, 169
Open, команда, 135
Options, меню, 184
Order, число членов ряда, 312
Outdent, команда, 167
Output Display, команда, 187
Р
Paragraph, команда, 159, 165
Paste As Maple Text, команда, 148
Paste, команда, 146
patch-файлы, 115
plot, 191
Plot Display, команда, 189
plot, функция построения 2О-графика, 58 plot3d, функция построения
ЗО-графика, 59
Print Preview, команда, 140,
Print, команда, 139
print, функция вывода листинга процедуры, 270
Printer Setup, команда, 141
Product, инертная функция произведения, 292
product, функция произведения, 292
R
Redo, команда, 143
Register Maple 7, команда, 91
Remote Output, команда, 151
Remove Topic, команда, 90
remove, функция удаления выражений, 370
Replace Output, команда, 185
RETURN, оператор возврата, 264
RootOf, функция, 324
rsolve, функция решения рекуррентных уравнений, 329
S
Save As, команда, 136
Save Setting, команда, 138
Save to Database, команда, 90
Save, команда, 136
Section, команда, 160
Select All, команда, 149
select, функция селекции, 370
series, функция разложения в ряд, 311
Share Library, 117
showstat, функция просмотра
процедуры, 274
simplify, функция упрощения
выражений, 372
solve, функция решения уравнений и неравенств, 316
sort, функция сортировки, 369
Split or Join, команды, 150
Spreadsheet, меню, 156
Standard Math Input, команда, 154
Standard Math, команда, 153
Styles, команда, 164
Subsection, команда, 160
Sum, инертная функция суммирования, 288 sum, функция суммирования, 288
т
taylor, функция разложения в ряд
Тейлора, 312
Text, команда, 153
Toolbar, команда, 174
Topic Search, команда, 88
true, константа логическая, 229
и
unapply, задание функций пользователя, 255
Undo, команда, 143
Use system default, флажок, 186
V
vector, функция задания вектора, 555
View, меню, 73, 172
W
Web-сервер
фирмы MapleSoft, 81
What’s New, команда, 87
whattype, функция контроля типов
выражений, 364
while, оператор цикла, 261, 262
WhittakerM, специальная функция, 302
Windows, меню, 192
Z
Zoom Factor, команда, 175