Книга
Книга
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
Урок И. Типовые средства построения графиков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
Предметный поиск8 8
Предметный поиск с полным обзором текста справки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
Дополнительные информационные ресурсы в ИнтернетеИЗ
Регистрация Maple 7ИЗ
Контактные адреса корпорации 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
ЗВ-графики параметрически заданных поверхностей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) = х468
Построение сложных фигур в полярной системе координат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
Графическая функция dfieldplot5 04
Графическая функция 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
Polynomiallnterpolation
Функция рациональной аппроксимации Radonallnterpolation542
Функция вычисления обычных сплайнов Spline542
Функция аппроксимации непрерывными дробями543
Thielelnterpolation
Пакет для работы с полиномами 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
Пакет для работы с гауссовыми целыми числами Gausslnt606
Пакет алгебры линейных операторов 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
Преобразование в код Фортрана или С628
Моделирование физических явлений629
Расчет траектории камня с учетом сопротивления воздуха629
Движение частицы в магнитном поле632
Разделение изотопов633
Моделирование рассеивания альфа-частиц635
Моделирование и расчет электронных схем637
Нужно ли применять Maple для моделирования и расчета637
электронных схем?
Малосигнальный анализ усилителя на полевом транзисторе638
Расчет аналогового фильтра на операционном усилителе642
Проектирование цифрового фильтра644
Моделирование цепи на туннельном диоде648
Применение интеграла Дюамеля для расчета переходных651
процессов
Что нового мы узнали?652
Заключение653
Список литературы664
Алфавитный указатель655
Алфавитный указательвставкагиперссылки на объект, 169объекта из файла, 169объекта-рисунка, 168выводнепечатаемых символов, 179панелей интерфейса, 172управление, 185выделение сигнала из шума сАлфавитный указательвставкагиперссылки на объект, 169объекта из файла, 169объекта-рисунка, 168выводнепечатаемых символов, 179панелей интерфейса, 172управление, 185выделение сигнала из шума с
Алфавитный указатель
вставка
гиперссылки на объект, 169
объекта из файла, 169
объекта-рисунка, 168
вывод
непечатаемых символов, 179
панелей интерфейса, 172
управление, 185
выделение сигнала из шума с
Алфавитный указатель
вставка
гиперссылки на объект, 169
объекта из файла, 169
объекта-рисунка, 168
вывод
непечатаемых символов, 179
панелей интерфейса, 172
управление, 185
выделение сигнала из шума с
Символы
%, оператор подстановки последней операции, 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
помощью БПФ, 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
метод Ньютона решения уравнения
*х)=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
функции feolve, 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
В
Bookmarks, команда, 176
break, оператор прерывания, 262
С
Cassiopeia А22Т, 127
Character, команда, 166
Clipboard, буфер обмена, 142
Close All Help, команда, 197
Close АП, команда, 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 fector, функция факторизации, 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
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 О
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, функция построения 20- графика, 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
Whafs New, команда, 87
whattype, функция контроля типов
выражений, 364
while, оператор цикла, 261, 262 WhittakerM, специальная функция, 302
Windows, меню, 192
Z
Zoom Factor, команда, 175
Предисловие
Автор данной книги, как и многие почитатели компьютерных вычислений, прошел долгий путь их реализации: от программируемых микрокалькуляторов до работы на малых и персональных ЭВМ, использующих универсальные языки программирования высокого уровня. Это нашло отражение в его ранних книгах [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 операторов и функций этой системы, большинство из которых используется крайне редко).
Хотя книга посвящена вер^и 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 — ее возможностям в области символьной математики. Здесь описано много тонкостей работы с математическими выражениями и другими объектами системы, позволяющими выполюпъ множество математических преобразований и подстановок.
Два больших урока — уроки И и 12 — посвящены графическим возможностям системы. При этом урок И описывает обычные графические средства, а в уроке 12 дается описание расширенных средств, позволяющих эффективно решать задачи визуализации решений математических проблем — вплоть до подготрвки графиков с элементами анимации.
Учитывая огромную роль дифференциальных уравнений в решении ряда математических, физических и технических задач, работе с ними посвящен отдельный урок 13. Наряду с решением одиночных дифференциальных уравнений первого и второго порядка рассматривается решение систем линейных и нелинейных дифференциальных уравнений как аналитическими, так и численными методами. Большое внимание уделено графической визуализации решений и построению наглядных фазовых портретов решения. В уроке отражены новые возможности Maple 7 в решении дифференциальных уравнений.
В уроке 14 рассмотрены важнейшие пакеты системы Maple 7 математической направленности. Эти пакеты поставляются вместе с системой, и применение функций из них столь же важно, как и применение средств ядра системы. Описанные в уроке 14 пакеты рассмотрены достаточно полно.
В отдельный урок 15 вынесены широко используемые на практике средства решения задач линейной алгебры. Это операции с векторами и матрицами, различные их преобразования и техника решения систем линейных уравнений. Здесь описаны такие важные пакеты, как linalg (стандартные средства линейной алгебры) и LinearAlgebra. В последний пакет входят новые средства линейной алгебры повышенной эффективности на основе алгоритмов, заимстовапных из знакомого математикам пакета программ NAG (Numbering Algorithms Group). Впервые описан новый пакет анализа линейных функциональных систем Lin earF u notion alSystems, появившийся в версии 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@pitercom (издательство《Питер», компьютерная редакция).
Мы будем рады узнать ваше мнение!
На web-сайте издательства http://www.pitercom вы найдете подробную информацию о наших книгах.
9
,斫丽 Первое знакомство с системой Maple 7
Краткая характеристика систем класса Maple
Об ошибках в символьных вычислениях
Ядро и пакеты расширения Maple 7
Языки системы
Ориентация систем Maple
Загрузка Maple и ее составляющие
Интерфейс системы и работа в диалоговом режиме
Меню системы Maple 7
Управление формой представления документа
Повышение эффективности работы системой
Доступ к справке и примерам
Краткая характеристика систем класса Maple
Назначение и место систем Maple
Maple — система компьютерной математики, рассчитанная па широкий круг пользователей. До недавнего времени се называли ciictcmoii компьютерной алгебры, что указывало на особую роль символьных вычислений н преобразований, которые способна осуществлять зта система. По такое название сужает сферу применения системы, Па самом деле опа уже способна выполнять быстро п эффективно не только символьные, но п численные ])асчсты, причем сочетает это с превосходными средствами графической визуализации и подготовки электронных документов.
Казалось бы, нелепо называть такую мощную систему, как Maple 7 математической системой «для всех». Однако по мере се распространения она становится полезной для многих иользователсп ПК, вынужденных в силу обстоятельств (работа, учеба, хобби) заниматься математическими вычислениями п всем, что с ними связано, Л все это простирается от решения учебных задач в вузах до моделирования сложных ([шзпческпх объектов, систем и устройств, и даже создания художественной графики (лаиример, (фракталов).
Для наших читателе!! (в том числе и для математиков-профессионалов) возможности систем символьной математики, реализованных на массовых ПК класса IBM PC, порой являются полной неожиданностью и вызывают вполне заслуженное удпвлеипе и восхищение, но иногда и резкое отрицание. Впрочем, последнее характерно скорее для тех, к то с системе)!! Maple просто ис работал и относится к neii, как дама из анекдота о паровозе — увмаев паровоз впервые, она воскликнула: «Не может быть, что он едет без лошаде!!'»
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(%) или sin(%)/cos(%)? Система Derive полагает более простым выражением tan(x) и преобразует к нему выражение sin(%)/cos(%). А вот система Maple V ничуть не менее справедливо считает, что функции sin(%) и cos(x) математически более простые, чем tan(%), и вообще — tan(%), по сути, не самостоятельная функция, a sin(%)/cos(%). Поэтому Maple V везде вместо tan(x) будет выводить sin(%)/cos(%).
Представьте себе, что таких условностей десятки и вы ничего об этом не знаете. Поэтому не стоит удивляться, что символьное значение какой-либо производной или интеграла может заметно отличаться по виду от приводимого в том справочнике, из、которого взято исходное выражение для проверки правильности работы системы. Часто, чтобы получить результат в необходимом виде, необходимо приложить определенные усилия либо дать конкретные указания системе о типе преобразований в ходе вычислений. Указания реализуются в виде параметров к командам и функциям системы.
По образному выражению автора обзора [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 приближается к 250(), в реализации R5 — к 2700, а в Maple бив Maple 7 оно уже прсвышает 3000. Это означает, что большинство задач может решаться в режиме прямого диалога с системой без использования каких-либо средств программирования.
Языки системы Maple 7
Maple способна решить огромное число задач вообще без какого-либо программирования в общепринятом смысле этпго понятия. Достаточно лишь описать алгоритм решения задачи и разбить ею на отде.пьные вопросы, на которые система Марк способна дать ответы. Бо.чсс того. ес:ть тысячи задач, алгоритмы решения которых ужо реализованы в виде фупкцп!'! и команд системы. Тем нс менее это вовсе не означает, что в Maple нельзя программировать. На самом деле Maple поддерживает три собственных языка: входной, реа/шзащш и программирования.
Maple имеет входной язык сверхвысокоп» уровне, ориентированный па решение математических задач практически любой сложности. Он служит для задания системе вопросов или, говоря иначе, задания входных данных для последующей их обработки. Это язык интерпретирующего типа п по своей идеологии напоминает добрый старый Бейсик. II такое сходсгво вовсе не недостаток, а огромное достоинство — ведь именно с Бейсика начался подлинный диалог пользователя напрямую с компьютером! Входной язык имеет большое число заранее опреде.ченных математических м гра(})ических функций, а также обширную библиотеку, подключаемую по мере необходимости.
Имеет Maple и свой язык нрещедурного программирования — Maple-язык. Этот язык имеет вполне традиционные средства структурирования программ: операторы циклов, операторы условных и безусловных переходов, операторы сравнения, логические операторы, команды управления внешними устройствами, функции пользователя, процедуры и т. д. Он также включает в себя все команды и функции входного языка, ему доступны все специальные операторы и функции. Многие из них являются весьма серьезными программами, например символьное дифференцирование, интегрирование, разложение в ряд Тейлора, построение сложных трехмерных графиков и т. д.
Не следует путать входной язык и язык программирования системы (Maple- язык) с языком ее реализации. Им является один из самых лучших и мощных универсальных языков программирования — Си. На нем написано ядро системы, содержащее тщательно оптимизированные процедуры. Большинство же
функций, которые содержатся в пакетах, написаны на Maple-языке, благодаря чему их можно модифицировать и даже писать свои собственные библиотеки- По разным оценкам, лишь от 5 до 10 % средств Maple создано на языке реализации —все остальное написано на Maplc-языке. Таким образом, система имеет развитые возможности для расширения и адаптации к задачам пользователя. Для подготовки программ на языке Maple могут использоваться внешние редакторы, но система имеет и cisoii встроенный редактор, вполне удовлетворяющий требованиям большинства пользователей. Он открывается командами 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 6
Перечислим основные возможности предшествующей версии системы Maple 6, Интерфейс:
О работа со многими окнами;
О вывод графиков в отдельных окнах или в окне документа;
О представление выходных и входных данных в виде естественных математических формул;
О задание текстовых комментариев различными шрифтами;
О возможность использования гиперссылок и подготовки электронных документов;
О удобное управление с помощью клавиатуры через главное меню и инструментальную панель;
О управление с помощью мыши.
Символьные и численные вычисления:
О дифференцирование функций;
О численное и аналитическое интегрирование;
О вычисление пределов функций;
О разложение функций в ряды;
О вычисление сумм и произведений;
О интегральные преобразования Лапласа, Фурье и др.;
О дискретные Z-преобразования;
О прямое и обратное быстрое преобразование Фурье;
О работа с кусочно-заданными функциями.
Работа с уравнениями в численном и символьном виде:
Q решение систем линейных и нелинейных уравнений;
О решение систем дифференциальных уравнений;
О символьное вычисление рядов;
О работа с рекуррентными функциями;
О решение трансцендентных уравнений;
О решение систем с неравенствами.
Работа с функциями:
О вычисление значений всех элементарных функций;
О вычисление значений большинства специальных математических функций;
О пересчет координат точек между различными координатными системами;
О задание функций пользователя.
Линейная алгебра:
О свыше ста операций с векторами и матрицами;
О решение систем линейных уравпетшй;
О формирование специальных матриц и их преобразования;
О вычисление собственных значений и собственных векторов матриц;
Q поддержка быстрых векторных.и матричных алгоритмов пакета программ NAG.
Графическая визуализация результатов вычислений:
О построение графиков многих функций;
О различные типы осей (с линейным и логарифмическим масштабом); 4
О графики функций в декартовой и полярной системах координат;
О специальные виды графиков (точки массивов, векторные графики, диаграммы уровней и др,);
О системы координат, определяемые пользователем;
О графики, представляющие решения дифференциальных уравнений;
О графики трехмерных поверхностей с функциональной закраской;
О построение пересекающихся в пространстве объектов;
О задание пользователем окраски графиков;
О импорт графиков из других пакетов и программных систем;
О анимация графиков;
О создание и проигрывание анимационных файлов.
Программирование:
О встроенный язык процедурного программирования;
О простой н типичный синтаксис языка программирования;
О обширный набор типов данных;
О типы данных, задаваемых пользователем;
О средства отладки программ;
О мощные библиотеки функций;
О задание внешних функций и процедур;
О поддержка языков программирования С и Fortran;
О возможность записи формул в формате LaTeX,\
Новые возможности системы Maple 7
Система Maple 7 приобрела ряд новых возможностей. Кратко отметим их:
О расширенная поддержка численных алгоритмов пакета программ NAG, в том числе при решении численных задач математического анализа (например, вычисление определенных интегралов в Maple 7 ускорено в 20-40 раз в сравнении с Maple 6) и при решении дифференциальных уравнений;
О новый обучающий курс User's Tour, встроенный в ее справку;
О существенно переработанные и обновленные пакеты функций;
О ускоренные алгоритмы целочисленных вычислений (например, факториал числа 25000 вычисляется более чем на порядок быстрее, чем системой Maple 6);
О обширный набор новых алгоритмов решения дифференциальных уравнений, обеспечивающий дополнительную эффективность решения задач в области моделирования физических явлений и устройств;
О выполненное впервые 100% успешное испытание при решении специальных тестовых задач, что является высшим достижением на рынке средств компьютерной математики;
О усовершенствованные и новые алгоритмы реализации многих численных методов решения задач;
О новые встроенные пакеты анпроксимашш кривых CurveFitting, внешних вычислений Externalcalling, решения лппе1П1ых функциональных систем, LinearFunctiona] System, ортогональных рядов OrthogonalSeries, работы с полиномами PolynoniialTools, решения уравнений SolveTools и поддержки вычислений с размерными величинами Units;
О новый пакет для поддержки языка XML;
О поддержка новейшего стандарта записи математической информации — языка MathML 2,0;
О улучшение пользовательского интерфейса', в частности введение новой палитры ввода шаблонов векторов;
Q поддержка протокола TCP/IP, обеспечиваюихего динамический удаленный доступ к данным, например, для финансового анализа в реальном масштабе времени пли данных о погоде;
О дополнительные пакеты (Maple PowerToolsTW)» доступные через Интернет, поддерживающие анализ методом комечпых элементов (FEM), нелинейную оптимизацию и статистику, а также три новых пакета: вычисления для новичков, теоретическая физика ii программирование;
О возможность работы с курсом университетского математического образования, загружаемого через Интернет.
В сочетании с сохраненными возможностями предшествующей версии системы это дает новой версии Maple 7 обширные возможности в эффективном решении широкого класса математических и научно-технических задач, а также задач в области образования.
Установка системы Maple 7 на ПК
Аппаратные требования
В этой книге рассматривается реализация системы Maple 7, требующая:
О процессор — Pentium 150 МГц и выше;
О оперативная память — не менее 16 Мбайт (рекомендуется 32 Мбайта и выше);
О место на жестком диске — около 80 Мбайт (120 Мбайт для сетевой версии).
Обширная библиотека пользователя, поставляемая с предшествующими версиями системы Maple V, с новыми версиями Maple 6 и Maple 7 пока не поставляется, поскольку требует серьезной переработки. Достаточно отметить, что использование в новых версиях системы оператора % для вызова последнего результата (вместо применяемого ранее оператора кавычек) делает неработоспособными большинство программ этой библиотеки. Также в новой версии изменен синтаксис некоторых функций.
Установка системы Maple 7
Установка системы производится обычно с компакт-диска. Обычно компакт-диск с инсталляционной версией Maple 7 стартует автоматически. При этом появляется окно Мастера установки со шкалоii выполнения предварительной подготовки, показанное на рис, 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.& Задание имени патм да# размещения файлов системы Maple 7
Рис. 1.5. Выбор установки системы Maple 7 для одного пользователя или для многих пользователей
^м^1«^ Вы^сф ярлыка дАж^л^ха зстенм物懒 7
На этом предварительная часть установки завершается, и нажатием кнопки Next в окне рис. 1.6 можно перейти к этапу копирования файлов в намеченную папку (учтите, что часть файлов копируется и в папки с операционной системой Windows, установленной на вашем ПК). В процессе копирования файлов бкно Мастера установки сменяется информационными окнами, которые сообщают о возможностях Maple 7. Одно из таких окон представлено на рис. 1.7. Кроме того, на экране будет отображаться окно с индикатором процесса копирования файлов, который позволяет судить о том, какая часть работы уже проделана, а также какие файлы копируются в данньп! момент.
Simply the BestSimply the BestmC3^p)lE ^7 Cemmaod th« BfHMw; M、$ TMucod Nathemihtfin;mC3^p)lE ^7 Cemmaod th« BfHMw; M、$ TMucod Nathemihtfin;Рис. 1.7. Информационное окно и индикатор процесса копирования файловРис. 1.7. Информационное окно и индикатор процесса копирования файловCompt c henslve unit management, dramatic improvements in ODEs and PDEs. more industtuhstrength NAG routines, plus hundreds of othi» improvements offer the greatest functionality in in itnematkal software.
Simply the Best
Simply the Best
mC3^p)lE ^7 Cemmaod th« BfHMw; M、$ TMucod Nathemihtfin;
mC3^p)lE ^7 Cemmaod th« BfHMw; M、$ TMucod Nathemihtfin;
Рис. 1.7. Информационное окно и индикатор процесса копирования файлов
Рис. 1.7. Информационное окно и индикатор процесса копирования файлов
[M^eZSHup[M^eZSHup伝宏t闻m施瞧娱伝宏t闻m施瞧娱Irh oI Wtterlco tlatlt Ihc.Irh oI Wtterlco tlatlt Ihc.В процессе копирования файлов могут быть ситуации, когда встречается файл с таким же именем, что и копируемый. В этом случае Мастер установки сообщит вам об этом с помощью соответствующего сообщения. Чаще всего такая ситуация встречается, если Maple 7 устанавливается поверх прехеней версии системы Maple. Если пользователь твердо намерен установить новую версию системы, то рекомендуется предварительно удалить предшествующую версию (с помощью соответствующих программ и средств, разумеется), В противном случае придется решать, какой файл будеЛанимать место на диске — останется старый или его заменит новый (естественно, рекомендуется установить новый файл).
[M^eZSHup
[M^eZSHup
伝宏t闻m施瞧娱
伝宏t闻m施瞧娱
Irh oI Wtterlco tlatlt Ihc.
Irh oI Wtterlco tlatlt Ihc.
По завершении копирования файлов появляется окно Мастера с запросом о том, надо ли помещать ярлык запуска системы на рабочий стол, изображенное на рис. 1.8.
Рис. 1.8. Запрос о размещении ярлыка запуска Maple 7 на рабочий стол
Вы Можете отказаться от такого размещения и запускать Maple 7 из меню Пуск или из Проводника. Но, если вы намерены работать с Maple 7 часто, то рекомендуется поместить ярлык на рабочий стол Windows.
Установка завершается выводом окна Мастера установки, в котором сообщается о ее успешном завершении. Данное окно представлено на рис. 1.9.
В этом окне достаточно нажать кнопку Finish для завершения установки. Maple 7 будет установлена на вашем компьютере и готова к работе.
Проблемы, связанные с установкой и возможными конфликтами, оиисашя з файле readme.txt, который рекомендуется просмотреть перед инсталляцией системы. К сожалению, он подготовлен на английском языке, как п вся встроенная в Maple 7 документация.
Запуск системы
Запуск Maple 7 производится, как обычно, из меню Пуск (рис. 1.10). Hhisam строчку Maple 7, необходимо открыть подменю и щелкнуть на комапдс Maple 7 (рис. 1.10).
ккПрограммыПрограммыUJ Иийрлмж.八、 о ^змшм 八,, 激拆冲0可」, 4 Ь^йп* 、、口 $ЬЛ№МЛГUJ Иийрлмж.八、 о ^змшм 八,, 激拆冲0可」, 4 Ь^йп* 、、口 $ЬЛ№МЛГMnisstift Photo EditorMnisstift Photo Editor.7 •'- W.…2 J.7 •'- W.…2 J3m2bA3m2bA.E倉npt^nn 田匸旧 2.E倉npt^nn 田匸旧 2> d Yamaha、图 Mfc^UuHWfcA J HPLaMde(a^XR»4№ ㈢ U^HwWfWK、> d Yamaha、图 Mfc^UuHWfcA J HPLaMde(a^XR»4№ ㈢ U^HwWfWK、才昧MRw%%AiAodeskvckiVreH才昧MRw%%AiAodeskvckiVreHРис. 1.10. Запуск Maple 7 из меню ПускРис. 1.10. Запуск Maple 7 из меню ПускОтключаиша эп^мкгыМД)Ш 也^繪 12TtrixjFesca!MjthenatoNJ 鎗VW呻Отключаиша эп^мкгыМД)Ш 也^繪 12TtrixjFesca!MjthenatoNJ 鎗VW呻Тжеялвмие сеанса Д0П> 宀2&0屮Тжеялвмие сеанса Д0П> 宀2&0屮前 Utri*28前 Utri*28警啜彎門警啜彎門
к
к
Программы
Программы
UJ Иийрлмж.八、 о ^змшм 八,, 激拆冲0可」, 4 Ь^йп* 、、
口 $ЬЛ№МЛГ
UJ Иийрлмж.八、 о ^змшм 八,, 激拆冲0可」, 4 Ь^йп* 、、
口 $ЬЛ№МЛГ
Mnisstift Photo Editor
Mnisstift Photo Editor
.7 •'- W.…2 J
.7 •'- W.…2 J
3m2bA
3m2bA
.E倉npt^nn 田匸旧 2
.E倉npt^nn 田匸旧 2
> d Yamaha
、图 Mfc^UuHWfc
A J HPLaMde(a^XR»4№ ㈢ U^HwWfWK、
> d Yamaha
、图 Mfc^UuHWfc
A J HPLaMde(a^XR»4№ ㈢ U^HwWfWK、
才昧MRw%%
AiAodeskvckiVreH
才昧MRw%%
AiAodeskvckiVreH
Рис. 1.10. Запуск Maple 7 из меню Пуск
Рис. 1.10. Запуск Maple 7 из меню Пуск
Отключаиша эп^мкгы
МД)Ш 也^繪 12
TtrixjFesca!
MjthenatoNJ 鎗
VW呻
Отключаиша эп^мкгы
МД)Ш 也^繪 12
TtrixjFesca!
MjthenatoNJ 鎗
VW呻
Тжеялвмие сеанса Д0П> 宀2&0屮
Тжеялвмие сеанса Д0П> 宀2&0屮
前 Utri*28
前 Utri*28
警啜彎門
警啜彎門
Возможен также запуск с помощью ярлыка, помещенного на рабочий стол. В любом случае, вначале на некоторое время появляется красочное окно-заставка, показанное в центре рис. 1.1. После этого появляется рабочее окно системы, 蜀函阳隔^艇^也矗^tc< Lil.
Рис. 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 — операции вставки;
О Forrrwt — @м^£щии 夠дания ф€фматов;
О 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.);
L682941970
2*sin(l);
sin(l)
Обратите внимание на особую роль десятичной точки — здесь она служит указанием к выполнению вычисления значения sin( 7.0) (или, что то же самое, sin( /.)). А вот синус целочисленного аргумента 1 не вычисляется — считается, что вычисленное значение менее ценно, чем точное значение sin(7)J
I В данном случае надо понимать, что Maple предпочитает иметь с дело точными значениями функций. Логично, что точное значение синуса от 1 записывается в виде sin( /). — Прим.-ред.
Ради единства терминологии мы будем пользоваться расширительным понятием функции, относя к нему и те объекты, которые в некоторых языках программиро* вания именуют процедурами или командами. Например, слова plot и plot3d мы также будем называть функциями, которые возвращают графики аргументов? Под командами же мы будем подразумевать прежде всего команды, содержащиеся в меню. Помимо функций в математических системах для записи математических выражений используются специальные знаки — операторы. К примеру, вычисление квадратного корня часто записывается с помощью его специального знака — М, Достаточно хорошо известны операторы сложения +, вычитания -, умножения *, деления / п некоторые другие. Операторы обычно используются с операндами в виде констант или переменных, например в записи 2*(3+4) числа 2, 3 п 4 — это операнды, а знаки * и + — операторы. Скобки используются для изменения порядка выполнения операций. Так, без них 2*3+4=10, тогда как 2*(3+4)工 14, поскольку вначале вычисляется выражение в скобках.
Пожалуй, самым распространенным оператором является оператор присваивания :==. Он используется для задания переменным конкретных значений, панрнмер:
> х:=у;
> y:=z;
у := Z > z:=2: Z尸2
> х; 2
> У: 2
Этот простой пример наглядно иллюстрирует эволюцию переменных и особую роль оператора присваивания в системе Maple. В частности, в этом примере переменные х, у п z взаимосвязаны с помощью oncpamiii присваивания. Поэтому задание значения 2 переменной z приводит к тому, что п переменные у и х принимают то же значение.
Другой распространенный оператор — оператор равенства = — используется для задания равенств и логических условий (например, а=Ь), указания областей изменения переменных (например, 1=1. .5 означает формирование диапазона изменения 1 от 1 до 5) и определения знаиини» параметров в функциях и командах (например, color=black для задания черного цвета у линий графиков).
Операторы сами по себе результат не возвращают. Но они, наряду с функциями и своими параметрами (операндами), позволяют конструировать математические выражения, которые при их вычислении также возвращают результат. В силу этого математические выражения, содержащие операторы и операнды, могут быть параметрами функций. Выражения в Maple бывают очень простыми (например, имена переменных х и у или константы 1 и 2), а могут содержать многие тысячи знаков. С позиции канонов символьной математики квадратный корень из двух уже является основным результатом вычислений. Поэтому такая функция обычно не вычисляется в численном виде, а выводится в естественном виде с применением знака квадратного корня У. Для вычисления в привычном виде (в виде десятичного числа с мантиссой и порядком) надо воспользоваться функцией
evalf(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);
Но вернемся к ситуации с синтаксическими ошибками, которые система Maple 7 распознает с помощью встроенного в нее синтаксического анализатора. Например, если вы задали неправильное имя функции, то это будет опознано синтаксическим анализатором и вычисления не будут выполняться. Maple 7 просто повторит выражение в строке вывода:
son(l.O):
son( 1.0)
В этом примере вместо имени функции 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:M:
Error; missing operator or
Тут Maple 7 не только реагирует на ошибку, но и пытается подсказать, что именно пропущено. Более того, маркер ввода в виде мигающей вертикальной черточки будет помещен на место ошибки и вы сможете тут же устранить ошибку, Правда, подсказки не всегда точны — в нашем случае явно пропущен разделитель в виде двоеточия, a Maple 7 сообщает о пропуске точки с запятой, Впрочем, откуда системе знать, хотим мы вывести результат операции Y:=4 сразу (для этого нужен разделитель в виде точки с запятой) или откладываем на потом (с помощью символа двоеточия).
Вот еще один пример характерной ошибки 一 три знака * подряд:
2**|*3*sin(k):
Error; * unexpected
Здесь Maple 7 подсказывает, что один оператор * надо убрать 一 два знака * подряд означают вполне законный вариант оператора 一 возведение в степень. При этом маркер ввода вновь указывает место ошибки, Проанализируйте следующие простые примеры:
2**3*sin(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(x) с одним параметром х. Нетрудно заметить, что параметр указывается в скобках после имени функции а для записи выражения функции используется знак присваивания := (двоеточие со знаком равенства). Для построения графика функции f(x) используется функция 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 эту проблему решили созданием пане- jeft (НсШттр) с полным набором всех математических символов и шаблонов для пред- ста!Ь]сния сложных формул, таких как интегралы, суммы и произведения рядов, цреизводиые и т. д. Однако, хотя при этом их ввод и становится более простым, ;t('i кнм его не назовешь, а монотонность операций нервирует многих пользователей.
В Maple 7 ввод исходных данных производится привычными для языков програм- ^П!рования средствами — с помощью функций и операторов, задаваемых в командной строке. Зато результаты вычислении получаются по умолчанию в виде обычных фо)>мул (хотя есть возможность их представления в другом виде, например принятом в редакторе LaTeX пли языках программирования Fortran и С),
Тем не менее вид документа с таким специфическим заданием формул может озадачить математика и любого пользователя, не слишком знакомого с основами программирования. В целом он отрицательно сказывается на восприятии документов.
Представление входных выражений в математической форме
Для устранения подобного недостатка (а скорее, противоречия) Maple 7 предлагает ряд средств. Во-первых, это текстовые комментарии, в которые можно вводить формулы. Во-вторых, это инертные функции, которые не вычисляются, но дают вывод на экран в естественной математической форме (рис. 1.14). И в-третьих, это возможность быстрого преобразования строковых выражений ввода в естественные математические формулы.
Об инертных функциях мы поговорим позже более подробно. Отметим лишь, что имена таких функций начитаются с большой буквы и функции выводят
математическое выражение в естественной математической нотации. С помощью ряда функций, например evalf, можно вычислить математическое выражение, полученное инертной функцией. На рис. 1.14 внизу дан пример такого вычисления для предела функции sin(x)/x ,
Рис. 1.14. Примеры применения инертных функций
Теперь остановимся на преобразовании исполняемых выражений ввода на Maple- языке в обычные математические формулы. Для этого достаточно, выделив входное выражение, нажать первую кнопку контекстной панели — соответствующее выражение тут же приобретет вид обычной математической формулы. На рис. L15 показаны примеры вычислений интеграла при его задании в строках ввода в виде текстового выражения и в обычной математической нотащш.
Таким образом, всегда можно получить формульное представление входных выражений. Более того, другой кнопкой их можно превратить в инертную форму, тогда выражение перестает вычисляться и становится, по существу, обычным комментарием.
Следует, однако, учитывать, что представление входных выражений в виде формул обычно занимает заметно больше места на экране и в документе, чем описание выражения на Maple-языке, поэтому оно используется довольно редко. Кроме того, далеко не всякое входное выражение может быть представлено в виде математической формулы — многие функции ядра и библиотек Maple 7
попросту не имеют общепринятых обозначений в виде специальных математических знаков.
Рис. 1.15. Примеры вычислений интеграла при его задании в текстовой и математической нотации
Символьные вычисления
Простой пример символьных вычислений
Maple 7 открывает обширные возможности выполнения символьных (аналитических) вычислений. Начнем с простого примера — требуется найти сопротивление трех параллельно включенных резисторов R7, R2 и R3 произвольной величины. Из курса электротехники известно, что можно задать следующее равенство, определяющее суммарное сопротивление R0\
eq:=l/R0=l/Rl+l/R2+l/R3;
” RO RI R2 R3
Теперь достаточно использовать функцию решения уравнений solve, чтобы найти значение R0 в общей аналитической форме;
a R0:esolve(eq,R0);'
RI R2 R3
R2R3+RI R3 + RI R2
Нетрудно проверить, что результат может быть получен и в численном виде для конкретных значений R1, R2 и R3:
Rl:=l:R2:=2:R3:=3:R0;
6
IT
a evalf(^);
.5454545455
Типовые символьные вычисления
На рис. 1.16 показано несколько примеров выполнения символьных вычислений математического характера: преобразование тригонометрического выражения с помощью функции упрощения simplify, вычисление суммы ряда функцией sum и вычисление неопределенного интеграла функцией int.
Рис. 1.16. Примеры символьных вычислений
Обратите внимание на результат выполнения последнего примера. Он выделен. Выделение можно осуществить протаскиванием указателя мыши с нажатой левой кнопкой.
Вычисления производных и интегралов в символьном виде, пожалуй, являются наиболее характерными областями применения систем символьной математики. На рис. 1.17 показаны примеры таких вычислений с применением функции dif для вычисления производной и int для вычисления определенных интегралов.
Рис. 1.17. Примеры вычисления производной и интегралов
Обратите внимание на функцию Int — инертную форму функции Int. Как уже отмечалось, инертная форма служит для вывода записи интеграла в естественной математической форме, но с отложенным «на потом» выводом результата вычислений. Как отмечалось, это один из путей наглядного представления входных выражений. Все инертные функции имеют имена, начинающиеся с большой буквы, тогда как обычные функции имеют имена, начинающиеся с маленькой буквы.
На другом рисунке (рис. 1.18) показано вычисление интеграла, который не имеет представления через функции системы Maple 7, но может быть вычислен ею в численном виде.
-01EW BITK MEM ЕШ01 (41H3Od91O OHHOMOHOadu ОНЖОК EXwdO$ ХИЯЭЭЬИХЕИЭХЕИ! 0OH -ЗЕБ ей эияея Бенине OHoudMadu о丄3Eh FidoH。恥Hpj и内E&丄здовКон вз丄OE&HhEdogO ЕНО ИЯИНХ01 И Fld0H0^HH OEQl/'lOiaWH HWFldOlOM э 'hEBE£ XI4HlZEEMHdu XHJOHW BirK ОН 'ЯОЯИХЕКЭХЕК BirK ЕНЖЕ0 ЧНЭЬО (ОНаО1ГЭХ£Э9 'хехчеХеэс! ИННЬОХ ОНЧЕ01/ -0du ИЯЭЭЬИХЕМЭХЕК И ИННЕОЦ 41EIZFI0 ИИН0ЕМ0(11Э 專。а 1ЧКЭ1ЭИЭ Ч1ЭОНЧ1ГИ1ЭЦЭ]Л
(ЭЯИХЕКЭХЕК Я ВЭОЛЭШ
-EhX ВИНЭШ0Н10 丄 О ИХЭОКИЭИЯЕЕ Я — Я ОШ ИИЯЛ0Е ИМИ JdO13O0 4iqHd<9 10Е01ЧЕ1Ч0 оно) кин0Н0Е(1Х олояээьи9Хя эинэшэс! и (яинчеояш э90нХ а ииШсиЕяэцэХ^и ИМЗиТТЕ内-ОПТ内 И1Ч1/ЖЕЯ 丄ЗЕН£ О」。) KKHOH&edX OJOHlEdl/ЕаЯ 0ИНЗГП0(1 OHEeEMOU wod -охоя eh,6J1,зи(1 laXdHdiooiirEH и 0丄£ 'энЕ(1яе ен кэхиШсиеШэкоц е&Вз (EXwdo$ опия а о」з xoiElZiqa илихекэхек иончеойкиэ нкэхэиэ мем eizjoi [j] adoiKEXx -ЧЕЕЯ ЕН ЗЖЕК H919OHlZXdl 100ОЕ1Ч0 0H КИНЭПаЕ(1Х CXIOMBOhH9KЯ OHHOmod ЭОНН0ЕЭИН '/do内Hdu у 'aoMHixEdu оннздозо 'аоНоножни nHodoxo оэ квинэЕэиыча кияээних -ныне X КИНЭШ0Н10 OJOKlZEEXOdU EHHhHdll KEHOEEJ Oie (иХеЕЖОЦ — НЕГГее Х1Ч1Э -odu KEV ЗЖЕК WHMlZEOINOdJ EWq30& КЭЧ1ЕЕЕЯО 1ЭЖ0К CHOdOU 9HH0FaE13lZ0dU 3OM30h -И1И1ГВПЕ Olh '叭3丄 3 Oie OHEEKOQ XKHhOlX^OWOdu И ЯЕ1 (Х1ЧНЬ0НОЯО МЕХ — &O丄已丄 -чеАеэс!《3HHEX<9£Ed» КЭ1ЭВЕ0В i4d90JiTB HOHdaxoiquivox кэхэиэ fioit90dLi ей ^онк。
иинэюиычд Х1яняиоя1л1иэ дошчиЛеэс! эинехЛреез
KMHSi/geiJtfsdu o」o>33hn丄hurhr 0」3molawn эн 'RURd」aLHn кинэкенс эинэюиычз эоннэиэин *8l'l *3mj
二二雌:i無殖碑……「献乎踰旷'第,•灌鹤у
[9Z£9『以 6£
:tfoi»tfdoisou。丄 nodu iredjeiHM
«енЛц-э woic g 7 »|de^ 1чп»1эиэ ииПмнЛф cedeh tfMH»u,sei3tf»du ioi»wm »h iqiredj«iHM »iqdoioM»H
side牌(чнехэиэ ииПмнЛф eedeh iniHeifae丄trtTedu ojemoiemi ен 'einedje丄ни oJOHHeifetreduo iniHeifsiihiqa demidu
济,f
ВШЖ
til *f,"J $"l 00口n|| / 冲小收匚J
матика-теоретика или аналитика такое действо — типичное кощунство. Порою системы компьютерной алгебры выдают настолько «заумный» и огромный результат, что его упрощение может занять куда больше времени, чем получение более простого результата с заранее выполненными упрощениями. Впрочем, каждому свое! И Maple имеет множество функций, обеспечивающих преобразование результатов в ту или иную форму.
Рис. 1,19. Решение квадратного и кубического уравнений в символьной форме
Пример решения системы линейных уравнений
Приведем еще один характерный пример — решение системы линейных уравнений с помощью функции solve (рис. 1.20). Обратите внимание на форму задания уравнений и выдачи результатов и поразительную естественность решения задачи. Значение переменной z на рис. 1.20 выделено, где видно, что Maple отображает его поле под панелью инструментов.
Слова solve, diff и int с их аргументами являются именами встроенных в систему функций, возвращающих символьные значения результатов. Нормальному пользователю может стать дурно, если вспомнить, что таких функций с их вариантами система Maple 7 имеет около трех тысяч! Да к тому же многие
функции (та же solve для решения уравнений) подчас могут применяться во многих случаях и имеют массу параметров и директив для уточнения направлений решения и расширения областей применения.
В утешение можно отметить три важных обстоятельства:
О мало кто на практике использует из всей этой массы функций более чем несколько десятков;
О названия и формы представления многих функций интуитивно предсказуемы;
О наконец, система имеет превосходную справочную базу данных, с помощью которой при определенном терпении (и непременном желании) можно разобраться с синтаксисом любой функции.
Необходимые функции и правила их преобразования система черпает в библиотеке размером около 40 Мбайт (она содержит файлы maple.hdb, maple.lib, maple.ind и maple.cmd). Это ййогда занимает заметное время, особенно при первом использовании определенной группы операторов (например, тригонометрических). При повторном использовании этой группы система заметно убыстряется, так как использует уже загруженные средства.
Повышение эффективности работы с системой
Работа с панелью инструментов
Пока что мы при проведении вычислений пользовались лишь простейшими средствами управления системой — вводом выражений и текстовых надписей с клавиатуры. Теперь пора расширить представления о работе с Maple. Прежде чем начать работать с ее меню, надо отметить, что для многих (особенно начинающих) пользователей оказывается удобнее использовать кнопки, расположенные на панелях инструментов, которые находятся прямо под строкой меню.
На рис. 1.21 показано назначение кнопок панели инструментов (Tool Ваг). Эти кнопки дублируют наиболее важные операции главного меню и имеют наглядные и типовые для Windows-приложений обозначения. Назначение кнопок и других деталей интерфейса также показаны на рис. 1.21.
(^ Maple 7 Hootbdt m« ISeivei 1Ц鷗I爆^出白I驢齡Ldi藏麵ивма嚟欝發瞞餐瀛跚isai蠶纖噩齎鵬蒔豳ц團(^ Maple 7 Hootbdt m« ISeivei 1Ц鷗I爆^出白I驢齡Ldi藏麵ивма嚟欝發瞞餐瀛跚isai蠶纖噩齎鵬蒔豳ц團ЖЖ,ЖЖ,1 2 3 4 5 6 7 8 9 10 11 12131 2 3 4 5 6 7 8 9 10 11 12131416 16 17 18 19 20 21 22 23 241416 16 17 18 19 20 21 22 23 24
(^ Maple 7 Hootbdt m« ISeivei 1Ц
鷗I爆^出白I驢齡Ldi藏麵ивма嚟欝發瞞餐瀛跚isai蠶纖噩齎鵬蒔豳ц團
(^ Maple 7 Hootbdt m« ISeivei 1Ц
鷗I爆^出白I驢齡Ldi藏麵ивма嚟欝發瞞餐瀛跚isai蠶纖噩齎鵬蒔豳ц團
ЖЖ,
ЖЖ,
1 2 3 4 5 6 7 8 9 10 11 1213
1 2 3 4 5 6 7 8 9 10 11 1213
1416 16 17 18 19 20 21 22 23 24
1416 16 17 18 19 20 21 22 23 24
- Создание нового документа• Загрузка ULR адреса5 - Печать активного документа- Копирование выделения в буфер- Отмена последней операции- Вставка неисполняемого выражения- Вставка исполняемого выражения- Создание закрытых секций- Переход по гиперссылке вперед19-Масштаб 100%21 - Масштаб 200%23 • Полное раскрытие активного окна- Создание нового документа• Загрузка ULR адреса5 - Печать активного документа- Копирование выделения в буфер- Отмена последней операции- Вставка неисполняемого выражения- Вставка исполняемого выражения- Создание закрытых секций- Переход по гиперссылке вперед19-Масштаб 100%21 - Масштаб 200%23 • Полное раскрытие активного окна- Открытие нового документа• Сохранение активного документа- Перенос в буфер обмена выделения• Копирование из буфера в документ- Возврат к последней отмененной операции- Вставка комментария- Восстановление закрытых секций- Переход по гиперссылке назад• Остановка вычислений20-Масштаб 150%22 - Отображение непечатаемых символов24 - Команда restart- Открытие нового документа• Сохранение активного документа- Перенос в буфер обмена выделения• Копирование из буфера в документ- Возврат к последней отмененной операции- Вставка комментария- Восстановление закрытых секций- Переход по гиперссылке назад• Остановка вычислений20-Масштаб 150%22 - Отображение непечатаемых символов24 - Команда restart
- Создание нового документа
• Загрузка ULR адреса
5 - Печать активного документа
- Копирование выделения в буфер
- Отмена последней операции
- Вставка неисполняемого выражения
- Вставка исполняемого выражения
- Создание закрытых секций
- Переход по гиперссылке вперед
19-Масштаб 100%
21 - Масштаб 200%
23 • Полное раскрытие активного окна
- Создание нового документа
• Загрузка ULR адреса
5 - Печать активного документа
- Копирование выделения в буфер
- Отмена последней операции
- Вставка неисполняемого выражения
- Вставка исполняемого выражения
- Создание закрытых секций
- Переход по гиперссылке вперед
19-Масштаб 100%
21 - Масштаб 200%
23 • Полное раскрытие активного окна
- Открытие нового документа
• Сохранение активного документа
- Перенос в буфер обмена выделения
• Копирование из буфера в документ
- Возврат к последней отмененной операции
- Вставка комментария
- Восстановление закрытых секций
- Переход по гиперссылке назад
• Остановка вычислений
20-Масштаб 150%
22 - Отображение непечатаемых символов
24 - Команда restart
- Открытие нового документа
• Сохранение активного документа
- Перенос в буфер обмена выделения
• Копирование из буфера в документ
- Возврат к последней отмененной операции
- Вставка комментария
- Восстановление закрытых секций
- Переход по гиперссылке назад
• Остановка вычислений
20-Масштаб 150%
22 - Отображение непечатаемых символов
24 - Команда restart
<=« Скобка, определяющая ячейку
|Маркер ввода
Полоса прокрутки по вертикали
> Приглашение к вводу
Рис. 1.21. Панель инструментов
При необходимости панели инструментов можно убрать с помощью команд меню View (см. рис. 1.11). Если графика выводится в отдельное окно, там имеется своя панель инструментов, которая будет описана ниже.
Работа с контекстной панелью
Другое полезное средство для облегчения работы по форматированию текстов, заданию параметров входных математических выражений и графиков — контекстная панель инструментов. Как следует из названия, контекстная панель Context Ваг является контекстно-зависимой 一 ее содержание зависит от текущего положения маркера ввода или выделения.
Контекстная панель содержит следующие элементы при вводе текста комментария (рис. 1.22):
О списки для задания стиля, шрифта и размера символов, кнопки для придания полужирного (Bold), наклонного (Italic) и подчеркнутого (Underline) начертания;
О кнопки для выравнивания текста;
О кнопку команды исполнения всего документа.
|藤Maple7宀[СоШЬаг.пи • [Saver 1J]|藤Maple7宀[СоШЬаг.пи • [Saver 1J]鱼氏 R加 依我m^t F附^ ~。、?◎稲次掘mcfow НФ '值I圖图映画[丽圈日刁而叵]國国田画日即I丽 囤国鱼氏 R加 依我m^t F附^ ~。、?◎稲次掘mcfow НФ '值I圖图映画[丽圈日刁而叵]國国田画日即I丽 囤国也出土匍也出土匍Р NormalР Normalm扌点姦高,礴T:隸押 三捶图里|Д 春園&係Im扌点姦高,礴T:隸押 三捶图里|Д 春園&係I223434556 7 8 9 106 7 8 9 10
|藤Maple7宀[СоШЬаг.пи • [Saver 1J]
|藤Maple7宀[СоШЬаг.пи • [Saver 1J]
鱼氏 R加 依我m^t F附^ ~。、?◎稲次掘mcfow НФ '
值I圖图映画[丽圈日刁而叵]國国田画日即I丽 囤国
鱼氏 R加 依我m^t F附^ ~。、?◎稲次掘mcfow НФ '
值I圖图映画[丽圈日刁而叵]國国田画日即I丽 囤国
也出土匍
也出土匍
Р Normal
Р Normal
m扌点姦高,礴T:隸押 三捶图里|Д 春園&係I
m扌点姦高,礴T:隸押 三捶图里|Д 春園&係I
2
2
34
34
5
5
6 7 8 9 10
6 7 8 9 10
1 - Список стилей1 - Список стилей3579-3579-2 - Список шрифтов4 - Полужирное начертание6 - Подчеркнутое начертание8 - Выравнивание текста по центру10 - Исполнение документа2 - Список шрифтов4 - Полужирное начертание6 - Подчеркнутое начертание8 - Выравнивание текста по центру10 - Исполнение документа
1 - Список стилей
1 - Список стилей
3
5
7
9-
3
5
7
9-
2 - Список шрифтов
4 - Полужирное начертание
6 - Подчеркнутое начертание
8 - Выравнивание текста по центру
10 - Исполнение документа
2 - Список шрифтов
4 - Полужирное начертание
6 - Подчеркнутое начертание
8 - Выравнивание текста по центру
10 - Исполнение документа
Списокразмеров символов Курсивное начертание Выравнивание текста по левому краю Выравнивание текста по правому краю
Рис. 1.22. Контекстная панель инструментов для текста комментария
На рис. 1.15 была показана контекстная панель в случае, когда маркер ввода находится в строке ввода. Там же поясняется назначение кнопок панели для данного случая. Особо остановимся на кнопке со значком (М), которая обеспечивает проверку синтаксиса вводимого выражения до того, как оно завершено символами двоеточия или точки с запятой.
Поясним на примере. Допустим, мы ввели ошибочное выражение для интеграла, забыв указать показатель степени в подынтегральном выражении х*п:
> int(xA,x)
Если нажать кнопку автокоррекции, оно примет вид:
> int(xA %? ,х)
Maple явно указывает на необходимость ввода показателя степени — в нашем случае переменной п.
А вот другой пример — мы забыли ввести закрывающую скобку в выражение:
int(xAn ,х
Если теперь нажать кнопку автокоррекции, то вставка скобки произойдет автоматически:'
int(xAn ,х)
Таким образом, данная кнопка может быть полезна для оперативного контроля синтаксиса и исправления грубых ошибок при вводе выражений в формате Maple Input. Однако необходимо делать это до их исполнения.
Заметим, что пока формула является входным выражением в математической форме, она может редактироваться — но не сама по себе, а в виде текстового выражения, отображающегося в поле редактирования на контекстной панели. При этом изменение записи выражения в поле редактирования немедленно влечет соответствующее изменение вводимой формулы. Это тоже довольно удобное средство, имеющее свои преимущества перед прямым редактированием формулы —в MathCAD, например, прямое редактирование формул требует определенных навыков и усваивается довольно туго.
Рис. 1.23. Контекстная панель инструментов для выражений, представленных в математической нотации
Рисунок 1.23 показывает назначение кнопок контекстной панели при установке маркера ввода в строку, содержащую входное выражение в математической нотации. Нетрудно заметить, что в этом случае контекстная панель несколько изменяется — в частности, в ней появляется поле ввода, в котором выведено выделенное выражение на Maple-языке. Такой же вид контекстной панели будет, если выделено выражение или его часть в строке вывода.
Контекстная панель инструментов для двумерных графиков
Двумерные графики строятся с заданием ряда параметров, определяющих общий стиль графика. Эти параметры задают цвет и стиль линий графика, вывод координатных осей и т. д. Все параметры имеют значение по умолчанию — они и определяют вид графика, при формировании которого параметры не указаны. Однако ряд параметров можно изменять, щелкая на соответствующих кнопках контекстной панели. На рис. 1.24 показано назначение кнопок контекстной панели инструментов для редактирования параметров двумерных графиков. Такая панель появляется, если двумерный график выделен или на нем находится маркер ввода.
С^Maple 7 - (tnlerigZmws -{Se*ve» Ц] .::蹴^課
I Vwmt шяяии вллЛj
12345 6789 10- Координаты графического маркера■ Задание графика точками- Задание заливки без линий сетки- Задание осей по нижней и левой границе- Построение графика без осей12345 6789 10- Координаты графического маркера■ Задание графика точками- Задание заливки без линий сетки- Задание осей по нижней и левой границе- Построение графика без осей-Задание графика в виде сплошной линии- Задание заливки с линиями сетки■ Задание осей в виде рамки- Задание осей по центру графика- Установка масштаба графика-Задание графика в виде сплошной линии- Задание заливки с линиями сетки■ Задание осей в виде рамки- Задание осей по центру графика- Установка масштаба графика
12345 6789 10
- Координаты графического маркера
■ Задание графика точками
- Задание заливки без линий сетки
- Задание осей по нижней и левой границе
- Построение графика без осей
12345 6789 10
- Координаты графического маркера
■ Задание графика точками
- Задание заливки без линий сетки
- Задание осей по нижней и левой границе
- Построение графика без осей
-Задание графика в виде сплошной линии
- Задание заливки с линиями сетки
■ Задание осей в виде рамки
- Задание осей по центру графика
- Установка масштаба графика
-Задание графика в виде сплошной линии
- Задание заливки с линиями сетки
■ Задание осей в виде рамки
- Задание осей по центру графика
- Установка масштаба графика
Назначение кнопок панели форматирования двумерных графиковНазначение кнопок панели форматирования двумерных графиков> plot(sin(xA3)*cos(х),x—-Pi..Pi,color—blue);> plot(sin(xA3)*cos(х),x—-Pi..Pi,color—blue);Рис. 1.24. Контекстная панель инструментов для двумерного графикаРис. 1.24. Контекстная панель инструментов для двумерного графика
Назначение кнопок панели форматирования двумерных графиков
Назначение кнопок панели форматирования двумерных графиков
> plot(sin(xA3)*cos(х),x—-Pi..Pi,color—blue);
> plot(sin(xA3)*cos(х),x—-Pi..Pi,color—blue);
Рис. 1.24. Контекстная панель инструментов для двумерного графика
Рис. 1.24. Контекстная панель инструментов для двумерного графика
Действие большинства кнопок этой формы контекстной панели достаточно очевидно, и вы легко сможете опробовать эти кнопки в работе. Так, график на рис. 1.18 построен точками при нажатии кнопки, задающей стиль Point style. Кроме того, в функции plot построения графика явно использована опция color=blue, которая задает синий цвет точек графика.
Полезно отметить, что в левой части контекстной панели есть поле с координатами текущей выделенной точки графика. Чтобы выделить точку, надо подвести к ней указатель мыши и щелкнуть левой ее кнопкой.
При построении контурных .графиков и графиков плотности имеется возможность заливки их областей между линиями уровня с выводом линии сетки, на которой рассчитываются линии уровня, и без вывода линий сетки.
Контекстная панель инструментов для трехмерных графиков
£碱唯I参£碱唯I参14■ Видимые линии и заливка- Линии уровня и заливка■ Линии уровня без заливки- Построение фигуры точками■ Представление огибающих осей- Удаление осей14■ Видимые линии и заливка- Линии уровня и заливка■ Линии уровня без заливки- Построение фигуры точками■ Представление огибающих осей- Удаление осейСвой вид контекстной панели имеют и трехмерные графики. Назначение ее элементов представлено на рис. 1.25.
£碱唯I参
£碱唯I参
14
■ Видимые линии и заливка
- Линии уровня и заливка
■ Линии уровня без заливки
- Построение фигуры точками
■ Представление огибающих осей
- Удаление осей
14
■ Видимые линии и заливка
- Линии уровня и заливка
■ Линии уровня без заливки
- Построение фигуры точками
■ Представление огибающих осей
- Удаление осей
翦罗飞灘處w;
123 4 5 6 7 8 9 1011 1213
,2 - Угол обзора по вертикали и горизонтали
■ Заливка без линий
- Только видимые линии
- Все линии без заливки
- Представление осей в виде контейнера
- Представление осей в обычной форме
- Задание масштаба графика
Назначение кнопок панели форматированиятрехмерных графиков
Рис. 1.25. Контекстная панель инструментов для трехмерных графиковРис. 1.25. Контекстная панель инструментов для трехмерных графиков> pkt3dg2+ул2,х=-2 . . 2,у=-2. . 2);
Рис. 1.25. Контекстная панель инструментов для трехмерных графиков
Рис. 1.25. Контекстная панель инструментов для трехмерных графиков
С помощью контекстной панели трехмерных графиков можно задать 7 стилей построения трехмерных графиков и 4 стиля вывода координатных осей. Воз-
можны следующие стили трехмерных графиков (группа из семи кнопок в середине панели): функциональная окраска с видимыми линиями каркаса, функциональная окраска без линий каркаса, функциональная окраска с контурными линиями, цветной каркас с видимыми линиями, цветные контурные линии, цветной каркас со всеми (в том числе невидимыми) линиями и поверхность, построенная точками.
Два расположенных слева счетчика позволяют задавать нужный угол обзора, причем Maple сразу же отражает заданный поворот построенной фигуры. Ее также можно вращать мышью, поместив указатель в область графика и держа нажатой левую кнопку. При этом счетчики будут отображать изменяющиеся при перемещении мыши углы обзора. Это очень удобное средство для наблюдения за деталями трехмерных поверхностей и фигур, которые строит функция plot3d.
Строка состояния
При работе с Maple полезно следить за информацией в строке состояния системы, расположенной внизу экрана. В ней появляются надписи, поясняющие исполняемые операции. Кроме того, в полях на правой части выводится текущее время, объем используемой оперативной памяти и объем доступной памяти на жестком диске, на котором установлена система.
Хотя панели инструментов и строка состояния удобны для быстрого управления системой, они обладают одним существенным недостатком — занимают часть полезной площади экрана. Однако в меню View имеются команды, позволяющие убрать с экрана любые из этих элементов. Действие этих команд вы можете заметить, если внимательно присмотритесь к предыдущим рисункам.
Горячие клавиши системы
Для открытия меню можно использовать одновременное нажатие клавиши Alt и клавиши, которая подчеркнута в названии меню. Вызов команды при одновременном нажатии нескольких клавиш получило название «горячих» клавиш управления (Hot Keys).
Таблица 1.1. Горячие клавиши для открытия меню
Меню
Горячие клавиши
Edit File Format Help Insert Options View Spreadsheet Window
Alt+E Alt+F Alt+R Alt+H Alt+I Alt+O Alt+V Alt+S Alt+W
«Горячие» клавиши присвоены и многим другим, наиболее распространенным операциям. Они облегчают и ускоряют (наряду с кнопками панелей инструментов) быстрое управление программой. Ниже в таблицах приведен список наиболее используемых «горячих» клавиш, разбитых на ряд категорий. .
Таблица 1.2. Горячие клавиши для задания начертания символов и режимов ввода текста
Действие
Горячие клавиши
Полужирное начертание
Ctrl+B
Курсивное начертание
Ctrl+I
Подчеркнутое начертание
Ctrl+U
Включение/выключение ввода текста
F5
Установка режима ввода (Input Mode)
Ctrl+M
Задание режима ввода текста (Text Input Mode)
Ctrl+T
Таблица 1.3. Горячие клавиши для операций выделения
Действие
Горячие клавиши
Выделение символа слева
Shift+-
Выделение символа справа
Shift+®
Выделение строки вверх
Shift+-
Выделение строки вниз
Shift+?
Выделение от маркера ввода до начала строки
Shift+Home
Выделение от маркера ввода до конца строки
Shift+End
Выделение от маркера ввода и до начала документа
Shift+Pgllp
Выделение от маркера ввода и до конца документа
Shift+PgDn
Таблица 1.4. Горячие клавиши операций удаления, копирования и вставки
Операция
Горячие клавиши
Выделить все
Ctrl+A
Копирование выделения в буфер
Ctrl+C
Перенос выделения из документа в буфер
Ctrl+X
Вставка содержимого буфера в документ
Ctrl+V
каление строки ввода (параграфа)
Ctrl+Delete
Закрытие выделенной секции
Ctrl+.
Поиск
Ctrl+F
Вставка параграфа после маркера
Shift+Ctrl+J
Вставка параграфа до маркера
Shift+Ctrl+K
Восстановление закрытых секций
Ct「l+,
Вставка исполняемой группы после маркера
CtrM
Вставка исполняемой группы до маркера
Ctrl+K
Вставка конца страницы
Ctrl+Enter
Вставка выражения в стандартной математической форме
Ctrl+R
Вставка выражения в форме Standart Math Input
Ctrl+G
МасштабГорячие клавиши50%100% 150%200% 300% 400%Ctrl+1Ctrl+2Ctrl+3Ctrl+4Ctrl+5Ctrl+6МасштабГорячие клавиши50%100% 150%200% 300% 400%Ctrl+1Ctrl+2Ctrl+3Ctrl+4Ctrl+5Ctrl+6Таблица 1.8. Горячие клавиши установки масштаба (Zoom Factor)Таблица 1.8. Горячие клавиши установки масштаба (Zoom Factor)Таблица 1.5. Горячие клавиши переходов по документу
Масштаб
Горячие клавиши
50%
100% 150%
200% 300% 400%
Ctrl+1
Ctrl+2
Ctrl+3
Ctrl+4
Ctrl+5
Ctrl+6
Масштаб
Горячие клавиши
50%
100% 150%
200% 300% 400%
Ctrl+1
Ctrl+2
Ctrl+3
Ctrl+4
Ctrl+5
Ctrl+6
Таблица 1.8. Горячие клавиши установки масштаба (Zoom Factor)
Таблица 1.8. Горячие клавиши установки масштаба (Zoom Factor)
Действие
Горячие клавиши
Переход к началу строки
Ноте‘
Переход в конец документа
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
Разумеется, можно успешно работать с системой, вообще ничего не зная про «горячие» клавиши. Многие так и делают! Однако быстрая и профессиональная работа в Maple 7 невозможна без использования этих клавиш, поскольку они существенно экономят время пользователя.
При работе с русифицированной версией Windows латинские буквы в обозначениях «горячих» клавиш нередко заменяются русскими буквами, не несущими никакой смысловой связи с выполняемой операцией. В этом случае полезно знать, что соответствующая латинская буква (или иной знак) и указанная в меню русская находятся ла одной клавише (например, комбинация клавиш для сохранения документа (Ctrl+S) может быть показана как Ctrl+ы).
Доступ к справкам и примерам
В меню Help системы Maple 7 сосредоточены средства доступа к справке по всем функциям системы. Детально работу со справочной базой данных Maple 7 мы рассмотрим в следующей главе. Здесь лишь отметим, что справку по любой функции можно получить, просто установив на ее имени маркер ввода и нажав клавишу F1. На рис. 1.26 показано окно с началом справки по функции cos(x).
Рис. 1.26. ПримерoipaBt»i по функ^чи «косйнуса
Как видно из рис. 1.26, окно справки содержит пятиступенчатый контекстный указатель, позволяющий последовательно отыскивать нужный раздел справки. Когда справка запрашивается по конкретной теме (функции), то сразу появляется посвященный ей раздел, точнее начало этого раздела.
Примеры из справочной системы можно модифицировать, для этого их нужно скопировать в буфер и перенести в окно документа Maple 7 (см. следующую главу). Также в Maple 7 есть специальный раздел справки, дающий доступ к примерам и без их копирования. Для осуществления такого доступа в окне справки достаточно выбрать тему Exampleworksheets в первом же разделе контекстного указателя. Откроется окно (теперь уже документа) с индексным каталогом примеров (рис. 1.27).
Каталог примеров дает доступ к огромному числу примеров применения Maple 7. Просмотр одного из них (вычисление эллиптических интегралов) показан на рис. 1.27 справа. Рисунок 1.27 иллюстрирует также технику работы с двумя окнами документов.
<5 Maple 7
&te ^c№ 那w |wsfeft Fermat,с 二-J 八 й₽йж»5 Window 且曲
啥 examples.elliplic - (Serve» 1]啥 examples.elliplic - (Serve» 1]Index to Example WorksheetsIndex to Example WorksheetsThis worksheet provides you with access to all the example workshei The worksheets have been organized into topical sections, with a con all example worksheets at the end. Click the box in front of the secbo examples listed in it. Click the appropriate hyperlink in a section to gc interest.This worksheet provides you with access to all the example workshei The worksheets have been organized into topical sections, with a con all example worksheets at the end. Click the box in front of the secbo examples listed in it. Click the appropriate hyperlink in a section to gc interest.SI Language and SystemSI Language and SystemSI AlgebraSI AlgebraВ GeometryВ GeometryH Discrete MathematicsH Discrete MathematicsS IntegrationS Integratione艺ampk£;elh:>1k: Elliptic httegration examples.dxamplesfelliptic?: More ЕПфНс httegration examples.e艺ampk£;elh:>1k: Elliptic httegration examples.dxamplesfelliptic?: More ЕПфНс httegration examples.Й Integral TransformsЙ Integral TransformsElliptic IntegrationElliptic IntegrationElliptic integrals are of the formElliptic integrals are of the forma(x)b(x) Jy(x)a(x)b(x) Jy(x)where y(x) i$ a polynomial of degree 3 or4, and a(x) andb(x) are polynomials.where y(x) i$ a polynomial of degree 3 or4, and a(x) andb(x) are polynomials.> res;t ar t;> res;t ar t;-Complete Elliptic IntegralsMaple recognizes the complete elliptic integrals л-Complete Elliptic IntegralsMaple recognizes the complete elliptic integrals л—丁,dt (Tirst Kind),J1 -卢 sin«)20л —丁,dt (Tirst Kind),J1 -卢 sin«)20л 團Differentia] Equatiqiis . j 丄團Differentia] Equatiqiis . j 丄22-к sin(/) dt (Second Kind),22-к sin(/) dt (Second Kind),
啥 examples.elliplic - (Serve» 1]
啥 examples.elliplic - (Serve» 1]
Index to Example Worksheets
Index to Example Worksheets
This worksheet provides you with access to all the example workshei The worksheets have been organized into topical sections, with a con all example worksheets at the end. Click the box in front of the secbo examples listed in it. Click the appropriate hyperlink in a section to gc interest.
This worksheet provides you with access to all the example workshei The worksheets have been organized into topical sections, with a con all example worksheets at the end. Click the box in front of the secbo examples listed in it. Click the appropriate hyperlink in a section to gc interest.
SI Language and System
SI Language and System
SI Algebra
SI Algebra
В Geometry
В Geometry
H Discrete Mathematics
H Discrete Mathematics
S Integration
S Integration
e艺ampk£;elh:>1k: Elliptic httegration examples.
dxamplesfelliptic?: More ЕПфНс httegration examples.
e艺ampk£;elh:>1k: Elliptic httegration examples.
dxamplesfelliptic?: More ЕПфНс httegration examples.
Й Integral Transforms
Й Integral Transforms
Elliptic Integration
Elliptic Integration
Elliptic integrals are of the form
Elliptic integrals are of the form
a(x)b(x) Jy(x)
a(x)b(x) Jy(x)
where y(x) i$ a polynomial of degree 3 or4, and a(x) andb(x) are polynomials.
where y(x) i$ a polynomial of degree 3 or4, and a(x) andb(x) are polynomials.
> res;t ar t;
> res;t ar t;
-Complete Elliptic Integrals
Maple recognizes the complete elliptic integrals л
-Complete Elliptic Integrals
Maple recognizes the complete elliptic integrals л
—丁,dt (Tirst Kind),
J1 -卢 sin«)2
0
л
—丁,dt (Tirst Kind),
J1 -卢 sin«)2
0
л
團Differentia] Equatiqiis . j 丄
團Differentia] Equatiqiis . j 丄
22
-к sin(/) dt (Second Kind),
22
-к sin(/) dt (Second Kind),
Рис. 1,27. Работа с каталогом примеров
В этой книге использованы некоторые наиболее интересные примеры из справочной базы данных системы Maple 7. Однако большинство примеров книги не повторяет помещенные в справку Maple* носит оригинальный Характер и отражает р^у^Ш^ исследования ж^можностей системы №如© 7 автора. В связи
с этим читателю рекомендуется просмотреть не только примеры в данной книге, но и примеры, представленные в справочной системе по интересующим читателя функциям.
Что нового мы узнали?
В этом уроке мы научились:/
О о о о о о о
Устанавливать Maple 7.
Отличать языки системы — входной, реализации и программирования.
Загружать систему и работать с ней в режиме диалога.
Выполнять простые вычисления.
Строить простые графики.
Пользоваться кнопками быстрого управления системой.
Обращаться к справкам и примерам применения системы Maple 7.
B
)УРОК Информационная поддержка Maple
Работа со справочной системой Maple 7
Отражение систем класса Maple
в Интернете
Информационная поддержка Maple
в Интернете
Поддержка MathML
Maple на Российских Интернет-сайтах
Maple в карманном компьютере фирмы Casio
Работа со справочной системой
Меню Help
Справочной системе Maple 7 принадлежит исключительная роль — только в ней можно найти полную информацию обо всех почти трех тысячах функций Maple 7. Использование англоязычной справочной системы может быть полезно и для тех, кто и《двух слов по-английски связать не может», поскольку в ней приве* ден синтаксис функций и операторов, а также многочисленные примеры их применения — по самым скромным подсчетам их свыше десяти тысяч.
К сожалению, справочная система Maple 7 очень громоздка. Но это нельзя считать недостатком справочной системы, поскольку просто велик объем входящего в нее материала. В справочной системе имеются все присущие современным базам данных возможности для быстрого поиска нужной информации и даже для ее структурирования и пополнения.
Основные команды по работе со справочной системой Maple 7 сосредоточены в меню Help, показанном на рис. 2」.
Оно содержит команды, объединенные в несколько групп. В первую группу входят следующие команды:
О 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 и справки по. различным элементам интерфейса.
«Чм«Чм□ “aple 7 Imlfoduction]□ “aple 7 Imlfoduction]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 it$ vast library ofbuilt-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 it$ vast library ofbuilt-in functions and operations.跚鴻f»『:跚鴻f»『:
«Чм
«Чм
□ “aple 7 Imlfoduction]
□ “aple 7 Imlfoduction]
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 it$ vast library ofbuilt-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 it$ vast library ofbuilt-in functions and operations.
跚鴻f»『:
跚鴻f»『:
More information about Waterloo Maple Inc, and its products can be found at hl加歹?个y»;;*照卜依尹也 со;,.
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 m, the topic browser at the top of any help window.
Ne?? U^la Extr - provides an overview of the functionality and a quick tour of the features of Maple.
¥":a「s ITew - provides an overview of the features that are new in Maple 7.
Xfievr I 3 “ Ea 險*- <ie scribes the main features of Maple that you will need to know to get started using Maple.
Ushis 匕以心-describes the various ways to use Maple's online help
'<rk bF"r,广气 -describes a Maple worksheet.
O\?smew ot 理ew.i Bar - describes the menu bar and the various sets of menus available.
疗爲竺,赢;3加” Axaftabfer肅
Рис. 2.2. Окно справочной системы с введением
Обратите внимание на оригинальный подход к представлению пути нужной справки. Для его определения служат 5 окон-списков. На рис, 2,2 используется только одно окно, а остальные 4 пока пусты Выбирая последовательно по элементу из каждого списка, вы сможете достигнуть требуемой справочной информации. Подробнее навигация по справочной системе будет описана позже.
Оперативная справка по контексту
Оперативная справка по контексту — сравнительно новая возможность справочных систем. Она особенно удобна при разборе примеров, содержащих незнакомые пользователю функции и иные объекты системы Maple, Полезна она и в том случае, когда пользователь знаком с применяемым объектом, но хотел бы уточнить его свойства и синтаксис.
Для получения оперативной справки по контексту достаточно установить курсор на соответствующий объект, например на имя какой-либо функции, и открыть меню Help. В нем можно обнаружить, что операция Help on Context модифицируется и приобретает вид Help on "…”,где на месте многоточия стоит слово, на котором остановился курсор. На рис. 2.1 таким слйвом является имя функг ции, вычисляющей синус, — sin.
Допустим, что в тексте документа в строке ввода есть функция sin(x). Если теперь выполнить команду Help on "…"一тут же появится окно со справкой о 中у产к-
ции синуса. Существуют и горячие клавиши для этой команды — Ctrl+Fl (или просто Fl). Пример справки по функции sin представлен на рис. 2.3.
,E3Maple7 ■ *5
丽倒图楠&闷00 i陷H*l S回 ~~зй
BwicFfertwesk.
險4№«dFi»iu(6$ Cerywc^ .
Calsuitt*»._.—一 力丁-—
&rf/BfSfi(irf £qaatow,„к J) wifM%* fow» feneftww
w(k) cbs(x) tah(x)
$ес(х) с$с(х) cot(x)
sinh(x) cosh(x) tanh(x)
sech(x) c$ch(x) coth(x)
Parameters
x - an expression
H- Y1 srdenh Ecrwasfoft
О Description
Arguments for all trigonometric and hyperbolic functions must be given in radians (1 radian = 180/Pi degrees)
Maple also provides simplification and expansion procedures that apply most of the common trigonometric and hyperbolic
identities Also available are conversion routines that will convert trigonometric expressions to other forms Three examples are that (1) any trigonometric expression can be converted to an expression in terms of only ■忘:.and < <: :. , (2) expressions
involving
can be converted to their hyperbolic forms, and ⑶ trigonometric functions with an argument of the form ;:
K; where ^ is a rational can in some cases be converted to radic al form For more help, see convert
• For information about expanding and simplifying tngonometnc expressions, see expand, factor, combineftnaL and
Рис. 2.3. Пример справки по функции sin
Как видно из рис. 2.3, справка по контексту позволяет судить о назначении функции, синтаксических правилах ее задания и примерах применения. Реализована она по единым правилам справочной системы и содержит открываемые разделы и гипертекстовые ссылки.
В этом примере уже хорошо видна техника использования окон в верхней части справки для уточнения необходимого раздела. Так, обнаруженная функция cos (кстати не sin, это любопытное свойство справки Maple — наличие «союзных» разделов) находится уже в четвертном окне. Последовательность доступа к ней следующая: Mathematics-Basic Mathematics-Exponential, Trig and Hyperbolic-cos. Очевидно, что функция cos найдена потому, что она выступает в паре с функцией sin, — на странице справки приведены примеры и к той, и к другой функции. Учитывая огромное число функций системы Maple 7 и соответственно разделов справки, подобный способ поиска информации представляется очень удобным. Он, кстати, стал использоваться и^ Mathematica 3/4 — ближайшем конкуренте Maple.
Обучающий курс New User's Tour
Команда New User's Tbur открывает окно курса по обучению основам пользования Maple, показанное на рис. 24
Maple New Userfs 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 matl^matics. word processing 金cilibes. and a modern programming language, making it a powerful and flexible tool for users m education, research, and industry
The New User's Thur presents the fundamental Maple commands that every user should be aware of The tour covers many areas of Maple, including The Maple Worksheet Environment. Numerical Calculations. Algebraic Computations. Graphics. Calculus. Differential Equations. Linear Algebra. Finance 或附d Statistics. Programming, and Online Help The tour is easy to proceed through, and it can take up to two hours if 疝 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 tl(e tour.
?1k2 h?ft lg bf.汨i 收①User? Ibi;;
下哂 Ш 期0$皿 ’Avea^i?gB
Рис. 2.4. Окно курса обучения основам Maple
В конце страницы (рис. 2.4) имеется гиперссылка Click here to begin the New User's Тэйг. Она открывает окно обучающего курса по Maple с перечнем ее разделов, представленное на рис. 2.5. Наименования разделов являются гиперссылками.
Как видно из рис. 2.5, обучающий курс имеет следующие разделы:
О ⑴ 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, посвященного чиненным вычислениям;
□ Maple 1 -
[newusef .user menu
-fSeivet 1]|
号c* a i**=2、 r.-1*
1爭匍端!如国
и^и
Ш 口饰1 £二]H-j 9 f、:g 2J 倒划
,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 worksheet
fl) Working i'iu''-<i5^1 计心 N-rv? Uytr's
open the corresponding
f2) The Work.shfT;? .Bp.vu'?viment
⑶ Numeric^一飞:就涌心
AlgebraiuO 貿%::工吟
Graphics
Calculus
Dtfiferenbal Equations
⑻ Linear Algebra
⑼ Finance and Statistics
(]0) Programming
〔11) Online Help
(]2) Summary
For more information of interest to new Maple users, visit our Web site]
Рис. 2.5. Окно с перечнем разделов обучающего курса
□ Maple 7 - 絞謬堂 BBS
в и
еь1ор1с0Э Т
器昼0
〔一n [黄储㈢国司ITT回卜卜⑶凹図疹
(3) Numerical Calculations
Before examining this topic, please make sure that you have read QL:R込変?9氐工卫:然些.也£」红肾.艾?.亭££.工?出.
Use the rest aiT. command to clear Maple's internal memory and get started with this topic of the tour [> rest art,;
單 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*1,工3;
M*le recognizes many special operators, including factorial, greatest common divisor, least common multiple, and con^jutahon over the integers modulo m. The following line is an example of the factorial operator in use.
[> 200»;
You can easily include the previousn^sansion of2001 in any sidjsequent calculation without having to type it, The ditto “erator. represerrted by a percent sign C%), refers to tiw last expression computed by Maple. (For more information on the ditto operator, see tiie he® page for ditto.) The command if ac tor factors tiw previous result into its prime factors. [> ifaotor(%);
The next cotnmaod calculates tiie /oduct again, 5^ich is precisely tiie value of 2QQL
^Йй^.б、Начало раздела Мучающего крса по численном вычислениям
Основные достоинства обучающего курса в том, что он (в отличие от справочной базы данных) дает обычное описание работы с системой Maple 7 с «живыми» примерами, которые не надо копировать в документы. Фактически обучающая система является просто набором документов системы. Вначале примеры даны без ячеек вывода, которые появляются после исполнения команды Edit ► Execute ► Worksheet, Это иллюстрирует рис, 2,7.
图 Maple 7 - |newuser,topic03 • [Server 1Ц..飕陵發'
Numerical Calculations二
Before examining this topic, please make sure that you have read' C 丁◎『•:〉№;;•*?'П岁以nM:仪汜 j.3:・*、「U"r?工学壮.
Use the restart command to clear Maple's internal memoty 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*1^^13 /
[3423782572330304
Maple recognizes many special operators, including factorial, greatest common divisor, least cominon multiple, and computation over the integers modulo w, The following line is an example of the factorial operator in use.
f> 200!;J
7舞55?XS円64收然03g236? 2139M 2?芸0622处135”%汾1方2632"川2河3澜43594.抬^岁僞注42由0%小
234O119S46239O4177212I38919638S3O25764279O2426371O5O6192662455282993111346225727O763317\|
V?956$!66D2260.ti 1904170324062351760858796 i78922222?89623,70339737472OODOOOOOOOQOOOUOOaOOOn\|
OOOOOOOOGOOOOOOOOOOOOOOOOOO1
—
Рис. 2.7. Начало раздела обучающей системы по численным вычислениям послеисполнения команды Edit ► Execute ► Worksheet
Пользователь может модифицировать любой пример и немедленно получить новые результаты (попробуйте, например, заменить вычисление 200! на 100! или 500!). К сожалению, написан обучающий курс на английском языке и в отличие от обычной книги для работы с ним нужен компьютер.
Новые возможности Maple 7
Пользователи, знакомые с предшествующим и версиями системы Maple, обычно хотят узнать, что нового введено в последней версии. Однако, как у нас говорят, «лучшее — враг хорошего» — при большом числе новых возможностей (и особенно при модификации старых возможностей) появляется несовместимость между документами доя старых и новых версий системы; Несмотря на меры, предпринятые по предотвращению такой Совместимое!^ ее дроявление вполне возможно,
в частности документы, созданные в Maple 7, уже нельзя использовать в предшествующих версиях из-за различий в их внутренних форматах.
Выполнение команды Whafs New открывает окно с описанием новых возможностей Maple 7. Оно показано на рис. 2.8.1
Рис. 2.8. Окно справки с описанием новых возможностей системы Maple 7
С помощью гиперссылок на этой странице можно получить достаточно подробное описание всех появившихся в Maple 7 возможностей. Мы уже отмечали их в уроке 1.
Правила работы со справочной системой
Справочная система Maple 7, по существу, является мощной базой данных с обширными возможностями поиска нужной информации и многочисленными примерами применения Maple 7. Работа с такой системой может вызвать затруднения у начинающих пользователей, поэтому в состав справочной системы включено описание правил ее использования. При исполнении команды Using Help появляется страница с перечнем разделов описания справочной системы (рис. 2.9).
I目Maga 7 - IwoiksheetjelefencB.HelpGuirfeJI目Maga 7 - IwoiksheetjelefencB.HelpGuirfeJ'“у s:・е*rtuwToЧ1 я. f .\J j f* Ad^aMed %$kv6L'“у s:・е*rtuwToЧ1 я. f .\J j f* Ad^aMed %$kv6LNewU播令 TeuMM、, 心EO刊砸"’NewU播令 TeuMM、, 心EO刊砸"’legend Mena, Gvwwewlegend Mena, GvwwewS^g^MsfttfS^g^MsfttfCaffcjfrwnstfwe 剂 gm”'Eye$8嵯域唸然城豌喪区魂一.Caffcjfrwnstfwe 剂 gm”'Eye$8嵯域唸然城豌喪区魂一.Fe^Mw^apfe ' юйоуе^сг、'Fe^Mw^apfe ' юйоуе^сг、'$ 馭》l6~&*k$ 馭》l6~&*k礴敏图■生礴敏图■生尸冲;*]尸冲;*]
I目Maga 7 - IwoiksheetjelefencB.HelpGuirfeJ
I目Maga 7 - IwoiksheetjelefencB.HelpGuirfeJ
'“у s:・е*
rtuwTo
Ч1 я. f .\J j f* Ad^aMed %$kv6L
'“у s:・е*
rtuwTo
Ч1 я. f .\J j f* Ad^aMed %$kv6L
NewU播令 Teu
MM、, 心EO刊砸"’
NewU播令 Teu
MM、, 心EO刊砸"’
legend Mena, Gvwwew
legend Mena, Gvwwew
S^g^Msfttf
S^g^Msfttf
Caffcjfrwnstfwe 剂 gm”
'Eye
$8嵯域唸然城豌喪区魂一.
Caffcjfrwnstfwe 剂 gm”
'Eye
$8嵯域唸然城豌喪区魂一.
Fe^Mw^apfe ' юйоуе^сг、'
Fe^Mw^apfe ' юйоуе^сг、'
$ 馭》l6~&*k
$ 馭》l6~&*k
礴敏图■生
礴敏图■生
尸冲;*]
尸冲;*]
Using Help
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 find the help topics you need.
Рис. 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. Обратите внимание на то, что в большом поле этого окна указано существенно больше разделов справки, чем при поиске по индексу — очевидно, что большинство из них будет случайным упоминанием данного образца.
Topic SeaichTopic SeaichFull Text SeaichFull Text Seaich
Topic Seaich
Topic Seaich
Full Text Seaich
Full Text Seaich
Тор嘅:::[[[二]二:mТор嘅:::[[[二]二:m广哀加₽囂Ew*广哀加₽囂Ew*Рис. 2.10. Окно предметного поискаРис. 2.10. Окно предметного поиска电|g?|鐵图|藤电|g?|鐵图|藤
Тор嘅:::[[[二]二:m
Тор嘅:::[[[二]二:m
广哀加₽囂Ew*
广哀加₽囂Ew*
Рис. 2.10. Окно предметного поиска
Рис. 2.10. Окно предметного поиска
电|g?|鐵图|藤
电|g?|鐵图|藤
4w 回”…"…"]:::〕
烛球咖9丁讎5.
i coords |0 03)送
;:updates,v52 (0 02)史
::updates ,R5,symbolic |0 02)
::updalesR4.symbolic |0 02)
examples .solve (Q.Q2)
? examples_vib_membrane (0.01)::■;:;
::updates.v53 (0.01)
i: updates,R5,newpkg〔0 01)
■: examples .deplot (0 01)
扌 updates、* (0 01)
i: plot3d (0 01) 侑,Ю- f—譌
Г" Same宜aide*卩 食gMws:就M"eh,;
Рис. 2.11. Окно предметного поискас полным обзором текста справки
В этом окне используются те же кнопки управления, что и для окна поиска справки по образцу. Флажок Goodness of Match включает вывод статистики повторяемости образца в текстах разделов справочной системы.
История работы со справкой
Было замечено, что пользователь, занятый решением определенного класса задач, обычно неоднократно возвращается к ранее просмотренным разделам справочной системы. Чтобы не искать их всякий раз заново, справочная система хранит список разделов, просмотренных в данном сеансе работы. Он выводится операцией History (рис. 2.12).
Достаточно найти в этом окне нужный раздел справки и нажать кнопку ОК, чтобы вывести его на экран. Кнопка Apply позволяет просматривать каждый новый раздел в сш>^м окне.
wxkshed/efefence.HelpGuide r>ewuset,topic03 newuser^usetmenu - [Setvet 1] newuset,usermenu newuser,newuse( ■ JServer 1] newuser^newuserwxkshed/efefence.HelpGuide r>ewuset,topic03 newuser^usetmenu - [Setvet 1] newuset,usermenu newuser,newuse( ■ JServer 1] newuser^newuserupdates.v7newu$ef,topic03 newuset.usermenu ■ {Setver 1]updates.v7newu$ef,topic03 newuset.usermenu ■ {Setver 1]newusei.usetmenunewusef.newuser - [Serve) 1] newusef.usermenu newuser^newusei ■ [Setvet 1] newuser^newusetnewusei.usetmenunewusef.newuser - [Serve) 1] newusef.usermenu newuser^newusei ■ [Setvet 1] newuser^newuset
wxkshed/efefence.HelpGuide r>ewuset,topic03 newuser^usetmenu - [Setvet 1] newuset,usermenu newuser,newuse( ■ JServer 1] newuser^newuser
wxkshed/efefence.HelpGuide r>ewuset,topic03 newuser^usetmenu - [Setvet 1] newuset,usermenu newuser,newuse( ■ JServer 1] newuser^newuser
updates.v7
newu$ef,topic03 newuset.usermenu ■ {Setver 1]
updates.v7
newu$ef,topic03 newuset.usermenu ■ {Setver 1]
newusei.usetmenu
newusef.newuser - [Serve) 1] newusef.usermenu newuser^newusei ■ [Setvet 1] newuser^newuset
newusei.usetmenu
newusef.newuser - [Serve) 1] newusef.usermenu newuser^newusei ■ [Setvet 1] newuser^newuset
Рис. 2.12. Список ранее просмотренных разделов справки
Модернизация справочной базы данных
В справочной базе данных предусмотрена возможность ее расширения путем записи текущего документа, составленного пользователем, в указанный раздел. При выполнении операции Save to Database выводится специальное окно, в котором надо указать соответствующие данные о модернизируемом разделе справки. Вид окна представлен на рис. 2.13.
Ограничимся этим указанием, учитывая, что для нашего пользователя модернизация англоязычной справочной базы данных явно отдает экзотикой.
Удаление разделов базы данных
Для удаления разделов базы данных служит команда Remove Topic. Она выводит окно, показанное на рис. 2.14.
Обратите внимание, что модернизации в обоих случаях подвергается один и тот же файл базы данных maple.hdb.
划 4»M«;、I g市而S 呼m前 、受薪e蒞,券1丽0#6》承祈1atMMM划 4»M«;、I g市而S 呼m前 、受薪e蒞,券1丽0#6》承祈1atMMMе 'PROGRAM FtLESMibVmaple hdbе 'PROGRAM FtLESMibVmaple hdbРис. 2.13. Окно дополнения базы данныхРис. 2.13. Окно дополнения базы данныхРис. 2.14. Окно удаления разделов справочной базы данныхРис. 2.14. Окно удаления разделов справочной базы данных
划 4»M«;、
I g市而S 呼m前 、受薪e蒞
,券1丽0#6》承祈1atMMM
划 4»M«;、
I g市而S 呼m前 、受薪e蒞
,券1丽0#6》承祈1atMMM
е 'PROGRAM FtLESMibVmaple hdb
е 'PROGRAM FtLESMibVmaple hdb
Рис. 2.13. Окно дополнения базы данных
Рис. 2.13. Окно дополнения базы данных
Рис. 2.14. Окно удаления разделов справочной базы данных
Рис. 2.14. Окно удаления разделов справочной базы данных
Включение всплывающих подсказок
На первом этапе знакомства с пользовательским интерфейсом системы Maple 7 удобно использовать всплывающие подсказки. Они вводятся при установке флажка Balloon Help. Для получения подсказки по какому-либо объекту достаточно задержать на пару секунд указатель мыши на этом объекте. Пример вывода всплывающей подсказки показан на рис. 2.1 — она указывает на назначение команды меню Help — Help on "sin". 一
Регистрация системы
Команда Register Maple 7 меню справочной системы открывает окно регистрации системы Maple 7. Это окно позволяет вызвать браузер Интернета, с помощью которого выполняется регистрация.
Вывод окна с информацией о системе
Последняя команда меню Help — About Maple 7 — выводит окно с информацией о версии Maple 7 (рис. 2.15). В этом окне содержатся данные, необходимые для регистрации системы Maple 7 (номера лицензии и самого продукта), а также данные о времени выпуска системы.
[About Maple 7
Maple 7.00
£ЮШйd妳V/卦(few导鞘或輯党时 lfeS№陟賤找
、< 、灣瓶嗯螂窮耍期
РМг2・15・ Окно с данными о системе Maple 7
Обратите внимание, что данный продукт датирован концом мая 2001 г. Как уже отмечалось в уроке 1, официально он выпущен на рынок 21 июня 2001 г.
Информационная поддержка Maple 7 в Интернете
Значение Интернета в информационной поддержке
В последние годы все разработчики систем компьютерной математики уделяют огромное внимание информационной поддержке таких систем в глобальной общемировой сети. Это обусловлено следующими обстоятельствами:
О современные системы компьютерной математики — очень сложные и быстро развивающиеся программные средства, нуждающиеся в оперативной рекламе и, главное, в оперативной коррекции их возможностей и устранении обнаруженных недостатков;
О справочные базы систем компьютерной математики очень обширны и нуждаются в постоянном обновлении;
О для практического изучения систем компьютерной математики желательна постоянная модернизация примеров их применения, для чего Интернет предоставляет обширные возможности;
О при решении сложных научных задач и при разработке серьезных проектов в образовании (данная книга наглядный пример этого) необходима связь пользователей с разработчиками программных средств и со своими коллегами во всем мире;
О современные технологии программирования, такие как J ava-an пл еты и ActiveX, новые языки передачи структурированной информации, такие как XML и MathML, широко применяются как в Интернете, так и в системах компьютерной математики.
Для использования возможностей Интернета компьютер должен быть оснащен модемом Iurii подключен к локальной сети, имеющей вход в Интернет, и располагать необходимым программным обеспечением ~ прежде всего браузером и программой электронной почты. Необходимое программное обеспечение часто включается в состав операционной системы, хотя его можно приобрести и отдельно. Например, в Windows стандартаным браузером является Internet Explorer, а почтовой программой — Outlook Express фирмы Microsoft. Есть множество подобных программ и у других фирм. Как правило, доступ к ресурсам Всемирной паутины предоставляет провайдер — фирма, через сервер которой вы будете подключены к Интернету.
Подключение к интернет-серверу фирмы Waterloo Maple
Если все перечисленное выше есть, то вход в Интернет осуществляется прямо из вводного раздела справочной системы путем щелчка на гиперссылке с адресом начальной страницы фирмы Waterloo Maple — http://www.maplesoft.com. Это
2 厂乙 PHd еh КНННЕ£ЕЯОП '3[c1Еw 00卩32已丛 HHlIEdondOX еПиНЕ(11Э KEHqUEhEH КЗ丄ЗЕ恥6djE£ OJ3h 3U30U (EdaVHE0Odu KvsK x jvavow £3d3h ndaxoiqHwox эинэьсиеЖон iHVoxDHodu 口нбхзз оячгояээн £3d3h оныч9О 'кинэнсиея^он зВох о 珞инзЕдооз Вне! и 内 Kuoged oifEhEH — Кхзн -daiHpi x эинэьсига^он q丄ЕВсиидЕН онжок вэя1икоигх1/ои ихионх ни丄ежен эюоц
a]dew ооз^м Kwhedoudox еЬинедхэ кенчиеьен
■Э1ЧННЕ1/ иоаэ OJ9H а И1ЭЭНЕЕ НЭЖЕ01/ Ч1ГЭ.ЕГЯО£ЧЕОН ИМ^ЖЕЯ — daiAIHdn ХЕХ 331fo9 ЭН ОНЕВ 9厂乙 ЭИ(1 ЕН кинэьсиея^он 0IO1Q '(эиннобохооп Ч1ЭЭГ10С1п HVJOJAI ЭН qvoden 14901b 1И0ЯЬ01/£Эа£ КЭХЭКНЭТМее ХЕН£ И1Ч1/ЖЕЯ Kvoden оВо&н ndu) кгэхеаоЕчгон qvoden и ктми 'кинзниВзоз ктми мне!/ -ЕЕ ЧИЧ9 1ЧИЖЕ01/ ЗНХО W01G g 'X19Hd91Hpi X KHH3hOIIfXBOII ЕНХО И EdSSXEdg ЕНХО сиинэеткон х LiBoaHdu иягнээ ионнеееяХ киПесиаихяе '9厂乙 эис! ей онВии хе,
хэнбэхни g etfoxa оиеьен *91*2 .^Md
"9IN “and eh нвевлоц 丄ondaiupi a еПохн UEie И1чнч1гвьвн 'S'S/O'S」o」o[dxm 3。口」。3口1 oie oih (K3i0EJEVouir0du иэшиэнч1г^1Г a — EdaeXEdg зиненио欢X ou олоиэХечгопэи элеХскве цолээьихеиохяе л 工oao&Hdii
£6 элэнбэлни а z J]dBw exMdaWou иенноиТ1емс1офни
Waterloo Ма^йе £atpo«te Site .,:%出毋口而扌 沁诩 й teasrt-iTxxe 3fccii!:: ;: 笠М「кЯ冲*»:*wnw“介国у ^h* ^rjwf1*^ »й*< gjrmw饺 лй th* :a;wat (й<^м>;5 :кймк«Лда*)."二》5Mkd;3«p**n, Й5!Л':« <^ ир«О^Я ::: :*”3,出,ard *“ th» sBiMlrawts Jjiw;- ■:■.■■ ■■::. 二^「wwki-cf 豹恥域「';【;;;;;二;:「;;:;'ME4fHeAppIi€dtian Center . * …Waterloo Ма^йе £atpo«te Site .,:%出毋口而扌 沁诩 й teasrt-iTxxe 3fccii!:: ;: 笠М「кЯ冲*»:*wnw“介国у ^h* ^rjwf1*^ »й*< gjrmw饺 лй th* :a;wat (й<^м>;5 :кймк«Лда*)."二》5Mkd;3«p**n, Й5!Л':« <^ ир«О^Я ::: :*”3,出,ard *“ th» sBiMlrawts Jjiw;- ■:■.■■ ■■::. 二^「wwki-cf 豹恥域「';【;;;;;二;:「;;:;'ME4fHeAppIi€dtian Center . * …
Waterloo Ма^йе £atpo«te Site .,
:%出毋口而扌 沁诩 й teasrt-iTxxe 3fccii!:: ;: 笠М「кЯ冲*»:*wnw“介国у ^h* ^rjwf1*^ »й*
< gjrmw饺 лй th* :a;wat (й<^м>;5 :кймк«Лда*).
"二》5Mkd;3«p**n, Й5!Л':« <^ ир«О^Я ::: :*”3,出,ard *“ th» sBiMlrawts Jjiw;- ■:■.■■ ■■::. 二^「wwki-cf 豹恥域「';【;;;;;二;:「;;:;'
ME4fHeAppIi€dtian Center . * …
Waterloo Ма^йе £atpo«te Site .,
:%出毋口而扌 沁诩 й teasrt-iTxxe 3fccii!:: ;: 笠М「кЯ冲*»:*wnw“介国у ^h* ^rjwf1*^ »й*
< gjrmw饺 лй th* :a;wat (й<^м>;5 :кймк«Лда*).
"二》5Mkd;3«p**n, Й5!Л':« <^ ир«О^Я ::: :*”3,出,ard *“ th» sBiMlrawts Jjiw;- ■:■.■■ ■■::. 二^「wwki-cf 豹恥域「';【;;;;;二;:「;;:;'
ME4fHeAppIi€dtian Center . * …
Рис. 2.17. Начальная страница фирмы-разработчика системы Maple 7 — корпорации Waterloo Maple
Начальная страница не содержит никакой конкретной информации. Она представлена лишь красочным рисунком и четырьмя ссылками:
О Waterloo Maple Corporate Site — выход на главную страницу корпорации Waterloo 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.
3 Wateiloo Maple - Homepage ■ Miciosott tnleirx" I xplofei3 Wateiloo Maple - Homepage ■ Miciosott tnleirx" I xplofein• ” 0口 zrn• ” 0口 zrin»ds Watwrloo Mapiw hit.in»ds Watwrloo Mapiw hit.г**>1,)ttp //www maplesoft com/manshlmlг**>1,)ttp //www maplesoft com/manshlmlADVAMU NO MATHCM«ncaADVAMU NO MATHCM«ncartkfe he 收 *减 an t^r^ tsxirrtkfe he 收 *减 an t^r^ tsxirlewn more about Maple 7lewn more about Maple 7View the news releaseView the news release«Mist can Maple Do for me?«Mist can Maple Do for me?W<Uci loo MapleW<Uci loo MapleHam# I Abfittf !>s } <.ontA<t UsHam# I Abfittf !>s } <.ontA<t UsQL讣。居 L№,K3QL讣。居 L№,K3A special limited time u瞅&de after !s currently available Userx should coriact their \Werloo Ma^e ассошм reprsssrrtative or aulhonzeci internstional reseller for гтюге Iriformsdion,A special limited time u瞅&de after !s currently available Userx should coriact their \Werloo Ma^e ассошм reprsssrrtative or aulhonzeci internstional reseller for гтюге Iriformsdion,MAPLE APFLMriONaNTtfl, ,MAPL£SlUP£NrCthiTbK 第3 J *.爲FtGlbTERPROOUCrMAPLE APFLMriONaNTtfl, ,MAPL£SlUP£NrCthiTbK 第3 J *.爲FtGlbTERPROOUCr::喚經Z:■^Mepfe 7Siiidei4 Editor» Product OMions Msple? Powertools::喚經Z:■^Mepfe 7Siiidei4 Editor» Product OMions Msple? PowertoolsWHAT'S N&^'禹 EQJT USPRODUCT iNPORMAfiONSALESSUPPORT PUBLICATIONSPRESS ROOMCAB:£EfiSCONTACT I.ISWHAT'S N&^'禹 EQJT USPRODUCT iNPORMAfiONSALESSUPPORT PUBLICATIONSPRESS ROOMCAB:£EfiSCONTACT I.ISvVateHoo Maple is pleased to present Mepie 7, the newest version of the widety Adopted Ma^e mathemetlcal cwnpiJtstfon product line Maple 7 Ьчдэп shippiftg от, June 14,2001, IS days atiead of schedule, Maple 7 is avatl&We for 躺 supported ptatfwms, hdudrig VAidows:, Macintosh, Linux and UN*, hiew features include a sweeping range of ne^v msthemstical algorithms in key areas, such am differential equsikm &№ numerical computation And enhwicedWeb connectivity, inclucilfig comprehensive IvWfiML 2.0 support. XML support and TCP# sockeis-bnsed access to onhne mformation.vVateHoo Maple is pleased to present Mepie 7, the newest version of the widety Adopted Ma^e mathemetlcal cwnpiJtstfon product line Maple 7 Ьчдэп shippiftg от, June 14,2001, IS days atiead of schedule, Maple 7 is avatl&We for 躺 supported ptatfwms, hdudrig VAidows:, Macintosh, Linux and UN*, hiew features include a sweeping range of ne^v msthemstical algorithms in key areas, such am differential equsikm &№ numerical computation And enhwicedWeb connectivity, inclucilfig comprehensive IvWfiML 2.0 support. XML support and TCP# sockeis-bnsed access to onhne mformation.iEree Mif<«tk^h>№«owft;es avait^bleiEree Mif<«tk^h>№«owft;es avait^bleMdplu wE、uduiiitlofiai ccftwjHP Aw»rrl in twnMdplu wE、uduiiitlofiai ccftwjHP Aw»rrl in twn'HSH New MEe Peooner АуакШв^'HSH New MEe Peooner АуакШв^
3 Wateiloo Maple - Homepage ■ Miciosott tnleirx" I xplofei
3 Wateiloo Maple - Homepage ■ Miciosott tnleirx" I xplofei
n• ” 0口 zr
n• ” 0口 zr
in»ds Watwrloo Mapiw hit.
in»ds Watwrloo Mapiw hit.
г**>1,)ttp //www maplesoft com/manshlml
г**>1,)ttp //www maplesoft com/manshlml
ADVAMU NO MATHCM«nca
ADVAMU NO MATHCM«nca
rtkfe he 收 *减 an t^r^ tsxir
rtkfe he 收 *减 an t^r^ tsxir
lewn more about Maple 7
lewn more about Maple 7
View the news release
View the news release
«Mist can Maple Do for me?
«Mist can Maple Do for me?
W<Uci loo Maple
W<Uci loo Maple
Ham# I Abfittf !>s } <.ontA<t Us
Ham# I Abfittf !>s } <.ontA<t Us
QL讣。居 L№,K3
QL讣。居 L№,K3
A special limited time u瞅&de after !s currently available Userx should coriact their \Werloo Ma^e ассошм reprsssrrtative or aulhonzeci internstional reseller for гтюге Iriformsdion,
A special limited time u瞅&de after !s currently available Userx should coriact their \Werloo Ma^e ассошм reprsssrrtative or aulhonzeci internstional reseller for гтюге Iriformsdion,
MAPLE APFLMriONaNTtfl, ,MAPL£SlUP£NrCthiTbK 第3 J *.爲
FtGlbTERPROOUCr
MAPLE APFLMriONaNTtfl, ,MAPL£SlUP£NrCthiTbK 第3 J *.爲
FtGlbTERPROOUCr
::喚經Z:
■^Mepfe 7Siiidei4 Editor» Product OMions Msple? Powertools
::喚經Z:
■^Mepfe 7Siiidei4 Editor» Product OMions Msple? Powertools
WHAT'S N&^'
禹 EQJT US
PRODUCT iNPORMAfiON
SALES
SUPPORT PUBLICATIONS
PRESS ROOM
CAB:£EfiS
CONTACT I.IS
WHAT'S N&^'
禹 EQJT US
PRODUCT iNPORMAfiON
SALES
SUPPORT PUBLICATIONS
PRESS ROOM
CAB:£EfiS
CONTACT I.IS
vVateHoo Maple is pleased to present Mepie 7, the newest version of the widety Adopted Ma^e mathemetlcal cwnpiJtstfon product line Maple 7 Ьчдэп shippiftg от, June 14,2001, IS days atiead of schedule, Maple 7 is avatl&We for 躺 supported ptatfwms, hdudrig VAidows:, Macintosh, Linux and UN*, hiew features include a sweeping range of ne^v msthemstical algorithms in key areas, such am differential equsikm &№ numerical computation And enhwicedWeb connectivity, inclucilfig comprehensive IvWfiML 2.0 support. XML support and TCP# sockeis-bnsed access to onhne mformation.
vVateHoo Maple is pleased to present Mepie 7, the newest version of the widety Adopted Ma^e mathemetlcal cwnpiJtstfon product line Maple 7 Ьчдэп shippiftg от, June 14,2001, IS days atiead of schedule, Maple 7 is avatl&We for 躺 supported ptatfwms, hdudrig VAidows:, Macintosh, Linux and UN*, hiew features include a sweeping range of ne^v msthemstical algorithms in key areas, such am differential equsikm &№ numerical computation And enhwicedWeb connectivity, inclucilfig comprehensive IvWfiML 2.0 support. XML support and TCP# sockeis-bnsed access to onhne mformation.
iEree Mif<«tk^h>№«owft;es avait^ble
iEree Mif<«tk^h>№«owft;es avait^ble
Mdplu wE、uduiiitlofiai ccftwjHP Aw»rrl in twn
Mdplu wE、uduiiitlofiai ccftwjHP Aw»rrl in twn
'HSH New MEe Peooner АуакШв^
'HSH New MEe Peooner АуакШв^
Рис. 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.
a Product* - Maple 7 ■ Command the BiUliance ol a Thousand Mathematicians • MiciosoM Inteinct Explore,
j фвйй Пр«ж&g做 ^абдакнде Cjspew Q№mm,'-
? зН4ама " ^' @ Q t3 ^лёнсК 区)M微滩wws暂*眦《(3* 褻*風'酵”日
3sек适网淞 ▼3sек适网淞 ▼Vst^-'g Nev? ir; »僻於 厂 :%:4s 7 Demos System Requireinents Testimonies
3sек适网淞 ▼
3sек适网淞 ▼
Maple 7 Brochure (PDF) Free Trial Version Reviews $ Pies?
THAI'S NEW
ABOUT US
PRODUCT INFORMATION
SALES
SUPPOf? Г
PUBLICATIONS
PRESS NOCId
CAREERS
COWTAC! US
AFPLICAWMCENIC^rAFPLICAWMCENIC^rеМЛАХ57иОЕЯтСЕМЩееМЛАХ57иОЕЯтСЕМЩеUrtque among its industry peers. Mapie 7 continues the long-stancSngtreKftion of cooperative developmeri of *婀itrms with leading research groups at some of the most presttgious insttutions n ttie world. This ailows Waterioc Ма(э1е to cfeiver the most powerful and trusted computation engine evefcrfate.Urtque among its industry peers. Mapie 7 continues the long-stancSngtreKftion of cooperative developmeri of *婀itrms with leading research groups at some of the most presttgious insttutions n ttie world. This ailows Waterioc Ма(э1е to cfeiver the most powerful and trusted computation engine evefcrfate.N>at can Maple Do tor me?
AFPLICAWMCENIC^r
AFPLICAWMCENIC^r
еМЛАХ57иОЕЯтСЕМЩе
еМЛАХ57иОЕЯтСЕМЩе
Urtque among its industry peers. Mapie 7 continues the long-stancSngtreKftion of cooperative developmeri of *婀itrms with leading research groups at some of the most presttgious insttutions n ttie world. This ailows Waterioc Ма(э1е to cfeiver the most powerful and trusted computation engine evefcrfate.
Urtque among its industry peers. Mapie 7 continues the long-stancSngtreKftion of cooperative developmeri of *婀itrms with leading research groups at some of the most presttgious insttutions n ttie world. This ailows Waterioc Ма(э1е to cfeiver the most powerful and trusted computation engine evefcrfate.
Здесь можно найти информацию о получении демо-версии системы (с ограниченными возможностями, но бесплатно), просмотреть примеры демонстрации возможностей Maple 7, получить брошюру по Maple 7 в формате PDF, ознакомиться с отзывами прессы по этой системе и, наконец, получить доступ к уже отмеченным другим информационным ресурсам.
Информация о системных требованиях для работы с Maple 7 приведена на web- странице, изображенной на рис. 2.20< Maple 7 — сложная программа, и для успешной работы с ней нужен достаточно «приличный» компьютер — если н не самый новейший, то по крайней мере с процессором не хуже, чем Pentium.
I当Rtoduett ;Mapte?二SytewiHeguirenientt* Micg$ofHntetrtefE*pk»£
* дЯжна ,0 13 0 尊n《«禺由拚Зфанное铛**〃 Rr礬▼晉卽▼圆 讶:^Д₽露注:|組 hftp://www.maplesoft.com/pioducU/Maple7Zminsys.shtrTil
Г QUtCKHNKS УГ QUtCKHNKS УMaple 7 System RequirementsMaple 7 System RequirementsWiUCrloO Miipivfc; , {1«1СК4 Wat«rlo^> M*pU hic«Mo<n« t About Ut [CottlMtUi
Г QUtCKHNKS У
Г QUtCKHNKS У
Maple 7 System Requirements
Maple 7 System Requirements
:*W亜'&)咫:万:h M^yfe 7
:w«pfe7t.-effios
L'y«-3!Ti *eq3rf・mfEs.
Maple 7 Er ?chur? (PDF I
户内,2¥: №.:WALiOCT USPfiC-DUCT ;NFO^^ATIC-N■SALES^ljPPOf?rPL^LICATtONSP*E买 RCOMS*注淤fCON Г AC; :Ji'v'^iw can M^ple 8, icr me?:言次PL?冬沁:;:後签翁然簽隱 :網也!勢а0h侬陋£舞遷 ;МАЩ'ЙиО^^Т'СЕН11в'-; УA- J '««»■[*耗⑸ STER РНОйиСЙв 金点:*二綏:::二二「:.:.:.:.;芯羨;二峻:濯:亲:義户内,2¥: №.:WALiOCT USPfiC-DUCT ;NFO^^ATIC-N■SALES^ljPPOf?rPL^LICATtONSP*E买 RCOMS*注淤fCON Г AC; :Ji'v'^iw can M^ple 8, icr me?:言次PL?冬沁:;:後签翁然簽隱 :網也!勢а0h侬陋£舞遷 ;МАЩ'ЙиО^^Т'СЕН11в'-; УA- J '««»■[*耗⑸ STER РНОйиСЙв 金点:*二綏:::二二「:.:.:.:.;芯羨;二峻:濯:亲:義Free THE и吋務qc 忆<?Y沦":以 P疋%工
户内,2¥: №.:W
ALiOCT US
PfiC-DUCT ;NFO^^ATIC-N
■SALES
^ljPPOf?r
PL^LICATtONS
P*E买 RCOM
S*注淤f
CON Г AC; :Ji'
v'^iw can M^ple 8, icr me?
:言次PL?冬沁:;:後签翁然簽隱 :網也!勢а0h侬陋£舞遷 ;МАЩ'ЙиО^^Т'СЕН11в'-; УA- J '««»■[*
耗⑸ STER РНОйиСЙв 金点:*二綏:::二二「:.:.:.:.;芯羨;二峻:濯:亲:義
户内,2¥: №.:W
ALiOCT US
PfiC-DUCT ;NFO^^ATIC-N
■SALES
^ljPPOf?r
PL^LICATtONS
P*E买 RCOM
S*注淤f
CON Г AC; :Ji'
v'^iw can M^ple 8, icr me?
:言次PL?冬沁:;:後签翁然簽隱 :網也!勢а0h侬陋£舞遷 ;МАЩ'ЙиО^^Т'СЕН11в'-; УA- J '««»■[*
耗⑸ STER РНОйиСЙв 金点:*二綏:::二二「:.:.:.:.;芯羨;二峻:濯:亲:義
Windows System Requirernefits
■井脑sww ME 15u MHz w hiyhsr f'ertii-m-compatiele, 52 М3. 54 MB :eoc-iriiT;end&ci
• VW,dcw$ 2-jOO: -33 MHz oc h;gh『 Pentium-cornp.stfcle, ^4 Mf? :>q,"red for Winaow? ?口98
P)ote?jional, ?5й Мй required forV'/indCAS 2〕;■応 Stiver.
•V^TsM 98 cr»5Mjwt SS !r4el Ptritiurn 92 or fully compatioie, 16 М3,32 М3 wusumended
V\'indow? NT 4 “Mh Setvioe Pack 5) lf^t^l OeMium 90 or fuily сотр-Чю:е, 32 MB, 54 ME recommended
CD-ROMtitivefffjf CD ins!風电匕⑴.
For Command Une v芈$icn of Mafje, 4 №日 RAM sre requtred.
* For sirigie ute;、也旧心〕Mapie.SD М3 or ava;lahie S:sk space
F;o: nf5twm1; version of 泌笈條e. 123 MB of avPliable ansi- space.
»8>Ы yteiphics adapter and Sisniay to $i;prq" 256 $irnuitc'in6ou; caims at 640 by 430
гй;-;-з11Л1С:Г|- i4>bil Qofor at 600 by 占СЮ (or grsistet') resolution resmsEt圮fi
Рис. 2.20. Web-страница с данными о системных требованиях к компьютеру для работы с Maple 7
В уроке 1 уже приводились системные требования для версии Maple 7, предназначенной для компьютера с операционной системой Windows 95/98, На указанной странице можно найти такие требования и для других операционных систем, например Windows 2000, Unix, Linux и др.
Информация о покупке Maple 7
Информация о покупке программных продуктов содержится на страницах, к которым можно перейти, щелкнув на гиперссылке Sales. Вид первой страницы этого раздела сайта показан на рис. 2.21.
http: //www, maptesoft. com/sates/index. shtmlhttp: //www, maptesoft. com/sates/index. shtmlA8ANC NO MATFtEMATtC*A8ANC NO MATFtEMATtC*Sales ■ Noilh Атеист I Inteinatiunal Microsuit Inteinel [.Kplui^iSales ■ Noilh Атеист I Inteinatiunal Microsuit Inteinel [.Kplui^iWdtcHoo Maple I WdtcHoo Maple I Haftt« I About U» J Centaci 0*Haftt« I About U» J Centaci 0*4n$id» Wetwrloo Maple inc. - SoJes4n$id» Wetwrloo Maple inc. - SoJes5市囂(I謳这"У
http: //www, maptesoft. com/sates/index. shtml
http: //www, maptesoft. com/sates/index. shtml
A8ANC NO MATFtEMATtC*
A8ANC NO MATFtEMATtC*
Sales ■ Noilh Атеист I Inteinatiunal Microsuit Inteinel [.Kplui^i
Sales ■ Noilh Атеист I Inteinatiunal Microsuit Inteinel [.Kplui^i
WdtcHoo Maple I
WdtcHoo Maple I
Haftt« I About U» J Centaci 0*
Haftt« I About U» J Centaci 0*
4n$id» Wetwrloo Maple inc. - SoJes
4n$id» Wetwrloo Maple inc. - SoJes
Vflthin US & C«nad»
:登唸5eM % quote,
Confed a F^epreserrtative
North American ReseHers Become a Maple Reseller
Outside of Horth America
Contact a Marls Partner Biscome в Maple Reseller
WAT'S MEW
ASUJT US
PRODUCT INFORMATION
SALES
SUPPORT
PUBLJCA'UONS
PRESS ROOM
CAREERS
CONTACT US
,內hat can Maple Do for me?
:MAPLE吟三;二:滋w意憑 繚嗯K8H州您NI魏籌 泌晦誑10通進窿
To Purchase Wfthin US & CanadaTo Purchase Wfthin US & CanadaTg PurchaseOutside Nortn AmericaTg PurchaseOutside Nortn AmericaРис. 2.21. Первая страница раздела сайта, предоставляющая информацию о покупке Maple 7
To Purchase Wfthin US & Canada
To Purchase Wfthin US & Canada
Tg Purchase
Outside Nortn America
Tg Purchase
Outside Nortn America
Карта на этой странице символизирует, что «щупальца» корпорации Waterloo Maple и ее представителя Maple Software охватывают весь Земной шар. Однако надо помнить, что во многих странах Maple 7 можно приобрести только через региональных представителей (или покупкой «левого» компакт-диска). В России «приличные» пользователи могут заказать Maple 7 через Российскую фирму SoftLine — www.softline.ru.
Информация о поддержке программных продуктов
Maple 7, как и предшествующие версии Maple, относится к весьма сложным программным продуктам, требующим обновления и грамотного применения. Поэтому важное значение приобретает поддержка таких продуктов в ходе их эксплуатации со стороны фирмы Waterloo Maple. Этому и посвящена страница поддержки, показанная на рис. 2.22.
Поддержка обеспечивается только для легально приобретенных продуктов, номеру и лицензии которых занесены в базу данных фирмы. Поэтому пользователи нелегальных копий системы такой поддержки лишены, и обращаться за ней через Интернет бесполезно — вы получите вежливое сообщение о том, что ваш
продукт не зарегистрирован.
5
ACWANtUZa МАТИСМАТШ» _ :
T.“-hc“、4j «:”cc,“l
iWatcHoo Maple
Нзп* I About W» j CfMttMt
Inside Waterloo Meple Inc. > 冬uppnrt
a x -❖» 饱 we •
卡д涉: downgcis 「г;М*Н 7ег;Ьгйеа! &」г>рсН
Welcome to Waterloo Maple's Teclmical
Support Center
卄HATS Z&y дзоит us PRODUCT INFORMATION
SALES
SUPPORT
PU3JCATI0NS
PRESS RQQM
C&REE抬
CONTACi !J$
:1Mlst cm Maple E> fm me?
血1心侄:笨1值逑齡举图総
:APPUCA'TpN:CENTE^;::^; :ШР1£^1иОЕШ-Ж®
社GMWmg嘴
Walei loo M*a is com 1MM f« w“vi5ng1he highest level of support for the products It sells This exceheni standard of suppcrt lj inoviced for 9i| v\M products, including Maple ^,M*ple 7 $tu“匕“ Edition 纨e the N*伯dive Math Oictionary.
In 6ddition, WMerlc心 Maple is ais,j ccinr-itted to deNerinp q'jalfiy tftrvicej *加 will ena^e cuslome>s 3 "#丫 bsvorqgettia 3余?依$ of the Brcauct; sehs
Rf?gr>1t>r yout purchase
Ffsqu^ntly Ask QueMions
gvclu&ds anti Service Packs
* Discussiou C,roupsMewS':frO'jpi
Otl'er Resources
7ear 2D00 CcfTrpiioir.te
Рис. 2.22. Страница, посвященная Центру информационнойи технической поддержки систем Maple
Информация о публикациях
11а основной странице публикаций сайта можно найти информацию о многих сотнях книг и тысячах статей, посвященных системе Maple (рис. 2,23).
Как видно из рис, 2,23, эта страница содержит гиперссылки на книги и статьи по системе Maple и специальное электронное издание по ней — «The Maple Reporter».
Особый интерес представляет раздел публикаций, посвященный книгам, поскольку только в довольно большой книге можно описать достаточно серьезно и подробно такую сложную программу, как Maple. Щелкнув на гиперссылке Maple Books, можно открыть web-страницу, посвященную книгам по системам Maple, изданным во всем мире. На рис, 2,24 показана часть этой страницы со списком книг, изданных на русском языке. Названия книг представлены в виде гипертекстовых ссылок, щелчок на которых позволяет получить более подробную информацию о каждой книге.
Обратите внимание на выпадающие списки для выбора категории книги и языка (список по языкам на рис. 2.24 открыт). На момент подготовки данной книги среди отраженных на сайте публикаций русскоязычных книг по системе Maple 7 не было. Однако большинство книг по прежним версиям уже нашло отражение на сайте (рис. 2.25).
。淞碱 вое*$一 ■reeiured Title
.Maple Manuals
The Maple Reporter ЛМе Papets
Articles
Welcome to Waterloo MapleFs publications section?
AHAit N^V
A80IJ1 MS
PRODUCT INFdRMATCTt
SUPPORT "-FUCaTQNS
PRESS ROOM
CAREERS
CCNiACT US
What can Ma晔 D* for me?
MAPLE衿"承爸:举察
;APPUCATION семтй:
In th-s sectgc ycu r“l find iwtm,3s ot hundreds ot Msple r^iawa Looka:, pu械!tern “ne articles
Ch^ck O'.it
Muple Boaks
The Maple Reporter
Maple Artimes
IT yoi; a'e P'.ibli s'?ir:c: a paper or w「*r;0 ・з bQWk raiate” to M^ple. ^e ,;*, help you'
Pl«aSf BbriClYQUr corrm’EfititQ fip:?licatrX'S@mapl^^ofl mm
:;MAPU^WOENr(:EN^RY.- 耀吸世叩Qg(J《食薄
Рис. 2.23. Основная страница, посвященная публикациям по системам Maple
叵 Publicalioru - Maple Book# - Miaesoh Internet Enploref
里尊5 gem gm 坦"рапное 3»ис £ правка:
IM_得
■^н^ад *
"◎ 0 0 级%fcK (»1M^MhW 鋒*掷例' 112r馨"曙明,宕I
ARVANKU49 MATHKMATtC»-:
.庫上"""團0更孤)圆>lw> Pubiketftittt^ ?;工
_J^fj A^out tft {С<жШ* U«
右5原 匕n侬
:赫*够.曲立g一二- Teetured Tift
Maple Manuals
The Mapie Nepwbr iMvtfi Pape* s
Articles
Maple Books
j Books By Category
Books By Language绫
•AMATS new
ASOUT US
PRODUCT FORMATION
SALES
SIPPET PUBLICATIONS
PWiSS ROOM CAREERS CONTACT К
Hundreds of books have been written abo i
Lilies by subject area or m田aqe
New Maple boohs * 2OGG-2GO1
Links io Ог-Нгл Bookstores
Are You a Mepie author?
Vvliat can Maple Do for me?
MAPLE”’
APPLICATION QNTfR j:
Now Maple books in 2(W-20(H
Finnish;
German
Hungarian;
Japanese:
Norwegian
Polish::
Portuguese .:;
Spanish:
Swedish;
I* top of th© page you car, hi owse t»ese
;maple sruocrncE 输 、,聲 ^^, :近GlSTBftPflODUCl
Experimentai Hrtherftsitcs wih MAftE fey Franco Hv^fcii
Irtrjxiuaton to Perturbation Tfwory in Q.janliwi Mectisnics by FAi Fernandez
' Diffeiertlat equations: Theory and “鹤cations wlh Mspte by David Betoune*
Mefrie for Erwironmeriol Sciences by Bfl Scott
CompUer Assisted Catci*.i$ of FrobebMy vrth Maple by Jerzy Gmbech (n Polish)
'5 Publications - Languages - Russian - Miciosoft Internet Exploier
^^^^7^^^^. ^^ ^^^吋1^*^???^、.^^^^,;J;"、、、、、'*、、£?弋e£、?贤?^¥ ''U…*2"'、■^^.§七、4、0岑.工 4、^ч■济吋、 ,审84麻“尸… 琐 但 0 叁Миж ®Ьбрл& ^Жфн№ 出у顧,吾贋*田、弋、
И W2«»
j/ae Fsgs
yXHATS卜耿
4iX5 US
PRODUCT ■NFOPMATlOf'l
W.AIES
SUPPORT
PUiSLICA'fOF'iS
f^ets ROOM
"FEFA5
CONTRCT US
Russian
Mauoso* A MapteG-Task Solutioris tn Higtier Maihernatics and.fAechsnks, 20G1, ISDN 5-94i 57-C21 -X, 电jssran ZEW$
Fls^nfcv, A V , ZaMB'j V F , nisk,M"9:!yutx,"Vtfe,ntrt"dv Ne”iit“v;”,hfa o"*nnuennvkh differentsi«i!£>r|iTi.e.n$4<h_yr3vrieni|, 1991JSBN 5-201 -10181 -x,Russian
Kh羽 сап М«|?:е【о fct me》
GmYBru 由 с, V Jeybum ", lc"otJucHun ?t> M»t4e; M 曲 bem 扒 ica, Mcka叭"и еиеМн啲.1'397, ISSN 5 ОЗС:. 03255-^, Pussiar*
MAPLt
AP^LICAt ON d*W
A 场 djev V Z..Hunt з J .Shshakcv M , Introduction to Environment of the Mathemeticai P&cksqe Maple V 23% !S-?M 1-406-4256^-0 依这sen
MAPLL SIUllNICLN^
Мапхм, & M , Manle V Power Egon. 15*9?. ISSbl j-8s5-6897?-5h Riijyi.'<i
Piukhorov,О V ,Ledenev,M A .Rwibeev, v.'/., SynU>tJl<c ca,lcula(ipri wrth Mapje, 19S7JSBN 5-S66-33D05-9.
Russian
Atacflev, v 工,Hunt. U j .孙広卜秋w. & L , "aardtnnwtu tn PacKaoe MarHe V. 1999, ISBfl 4-H);-2tz9S-2 r心$洽"
Alsdj2 V Z .Oocirfevicius.M A .Htnt.UJ , Sp!^aP^i<;al.and JechnicaLProWsmswrth Mapje Vt W?9. !SDN ?-1.14-C«5Ci3-2,Fbss<an
Dyakocov, J P , MMhenwti.M system 炭*卩底 V R3jR4」R5.193?, ISBN , Russian
Маемое & M , Physits tn Modern.ln<erpretatioii, 1999, ISSIJ , Russian
3
Рис. 2.25, Web^CTpaHMiia, посвященная русскоязычным книгам по системе Maple
期毋 Epq联,妄 “a 旦збрвнн»е Qf®mb Ешзаека
^Hmt- *0 3^ @r醜咏 国隔6?Йнh啾 旨為Е気勢,傳轉* ®:
:禽)2恥]叁j httpV/www mdplesofl.com/publications/bQoks/ISBNaulhor/D.vakonovOI shlml
"3 Nb^m:
■W^le Bocks' ■ ■ ■ f-iMrtured та|е Maple m9〃1依18
The MaW Mrata FvMe Papers Adicles
Mathfimatrcel sysiem Мзр!е V R3/R4/FW
Uy+kunov.
ISBH:
Language: Russian
闻仏干$ NEW'
ABGUT PRODUCT II-JFORMATtON
SUPPORT
出XA2№S PRESS ROOM CAREERS 8NSC1 US
ghat can Maple Сю for tixs?
MAPLE ”
АРРМСАТЮЫС£КПК ; “Ш(г&5ПЛХЯГаЖ£Й «£G(ST£R PftOWy 円
Search for this book at №§ZSE&鑑 or 目艷階总州 Noblg hook stores.
Abstract
This teG jj^cribes a powerful mathematfcal computer algcixa system. MaiNe Y Power Edition, in the cliato^gue mode deaefing an enormous number or matheirat»cal problernE • f9m a“ calculations and timber modeiing before snsljrfcal transforniattons wih calc^^ions. Fw tf® 价sttme, a text desev曲es ihemosl upfo date systwn realization M4^eVR5. Considered surtabte system rterfsce, йз enonnws computing pussiW*ies have powerfu! gtapliic system facBtie*, programiwhg anti packages cf expansions. For the frst time de$crfced work with Maple V R5 in Internet network on joint prqects and Irternet psge of coffpwiy VWerlco M^ - a system deveioper. For btienWfc workmen, teachers or universities end institute% students and al usera viteresied ю the autometion of mrthematical cMcUations
В качестве примера информации о книгах на рис. 2.26 представлена информация об одно访 из книг автора, посвященная Maple V R3/R4/R5. Нетрудно заметить, что приведены только аннотационные данные.
Необходимо отметить, что русскоязычных книг по системам Maple (только предшествующих версий) представлено довольно много, что свидетельствует о высокой популярности данной программы у наших пользователей.
Центр применений системы Maple
Основная страница Центра применений Maple
Центр применений Maple — это большой интерактивный раздел сайта компании Waterloo Maple, содержащий массу примеров применения Maple во всех областях науки, техники и образования. На рис. 2.27 представлено начало страницы The Maple Application Center.
I Э Maple Applicdtion Center - Mictosoh Internet EKploter
;加腐 口сяака gw 牲傣gee 5мб 第xbks
:bHaea « s節^1Q" 0nйийк 由WWwwe ◎хягйм 启”卷▼国 БУ "• ®;
:;:ЙЛ₽«*^Й http://www.mapleapps.com/
ADV*4Ci*«l MATHbMATti.»ADV*4Ci*«l MATHbMATti.»Watedoo MapleWatedoo MapletptKatton CentertptKatton CenterMap;& Book» I Freo Trial V&rifonMap;& Book» I Freo Trial V&rifon■^ontriSutsenApgfcaition-- :MafrfeP6«¥9rtools: 〔网hat's New?мерю Links . M»EQ MelhML Vwwer Я1ЭГ5 bwery Ciintact Us■^ontriSutsenApgfcaition-- :MafrfeP6«¥9rtools: 〔网hat's New?мерю Links . M»EQ MelhML Vwwer Я1ЭГ5 bwery Ciintact UsI he Maple Application CenterI he Maple Application Centerjgik*抖<»»№*»8Mt4叫^^. hrttgg#8jgik*抖<»»№*»8Mt4叫^^. hrttgg#8К*с^Фп№Ьк»:К*с^Фп№Ьк»:Advanced SearchAdvanced Search^:SUtTE OF fRf.E AOQ-CN »8»C>UCE4 ;^:SUtTE OF fRf.E AOQ-CN »8»C>UCE4 ;WHAT •$ NE*A8,0Ut USPRCXXXT IWGRMATtONSALESSUPPORT PUBLICATIONSPW:SS ROOMCAREERSCONTACT USWHAT •$ NE*A8,0Ut USPRCXXXT IWGRMATtONSALESSUPPORT PUBLICATIONSPW:SS ROOMCAREERSCONTACT US;A№*!@N9n*£omr|MHby_MAELF&W 缈£$吋K">* tu vim ">»t“t«ute“ to th” WU;A№*!@N9n*£omr|MHby_MAELF&W 缈£$吋K">* tu vim ">»t“t«ute“ to th” WUM>at can М^зЗ Do for me?M>at can М^зЗ Do for me?MathematicsMathematicstduotKJntduotKJn
ADV*4Ci*«l MATHbMATti.»
ADV*4Ci*«l MATHbMATti.»
Watedoo Maple
Watedoo Maple
tptKatton Center
tptKatton Center
Map;& Book» I Freo Trial V&rifon
Map;& Book» I Freo Trial V&rifon
■^ontriSutsenApgfcaition-- :MafrfeP6«¥9rtools: 〔网hat's New?
мерю Links . M»EQ MelhML Vwwer Я1ЭГ5 bwery Ciintact Us
■^ontriSutsenApgfcaition-- :MafrfeP6«¥9rtools: 〔网hat's New?
мерю Links . M»EQ MelhML Vwwer Я1ЭГ5 bwery Ciintact Us
I he Maple Application Center
I he Maple Application Center
jgik*抖<»»№*»8Mt4叫^^. hrttgg#8
jgik*抖<»»№*»8Mt4叫^^. hrttgg#8
К*с^Фп№Ьк»:
К*с^Фп№Ьк»:
Advanced Search
Advanced Search
^:SUtTE OF fRf.E AOQ-CN »8»C>UCE4 ;
^:SUtTE OF fRf.E AOQ-CN »8»C>UCE4 ;
WHAT •$ NE*
A8,0Ut US
PRCXXXT IWGRMATtON
SALES
SUPPORT PUBLICATIONS
PW:SS ROOM
CAREERS
CONTACT US
WHAT •$ NE*
A8,0Ut US
PRCXXXT IWGRMATtON
SALES
SUPPORT PUBLICATIONS
PW:SS ROOM
CAREERS
CONTACT US
;A№*!@N9n*£omr|MHby_MAELF&W 缈£$吋K">* tu vim ">»t“t«ute“ to th” WU
;A№*!@N9n*£omr|MHby_MAELF&W 缈£$吋K">* tu vim ">»t“t«ute“ to th” WU
M>at can М^зЗ Do for me?
M>at can М^зЗ Do for me?
Mathematics
Mathematics
tduotKJn
tduotKJn
Рис. 2.27. Страница Центра применений Maple (начало)
Следует отметить, что большинство материалов этого раздела содержат примеры применения предшествующих версий системы Maple, но уже есть и много примеров для новейшей версии Maple 7, описанной в данной книге. На рис. 2.28 показано окончание страницы The Maple Application Center, где представлен обширный список тем, по которым имеются примеры р этом Центре.
|^£m№ ^омМ *ч» *ваб|мм* Ujftwrt &■h^ Нйз« ” О 门 G @Rm% 2j!|^£m№ ^омМ *ч» *ваб|мм* Ujftwrt &■h^ Нйз« ” О 门 G @Rm% 2j!自嶼cj朗 hH?〃ww■竺吧pfpps.com/1自嶼cj朗 hH?〃ww■竺吧pfpps.com/1□*»ни к▼虫▼四 Bт ▼m□*»ни к▼虫▼四 Bт ▼m3砂尸3砂尸‘秣荘隘济渝若"‘秣荘隘济渝若"№.浙篇i齧犷№.浙篇i齧犷MAINWtHSite * ,丄MAPI! bW^LNl CXNU 觥00iJU‘R8g 缰MAINWtHSite * ,丄MAPI! bW^LNl CXNU 觥00iJU‘R8g 缰Abstract 14MgebraCalcMu* of Vsriai»"sAbstract 14MgebraCalcMu* of Vsriai»"s<:CIT>b<r-8l!WtC5 Cr'iptccraphy DiffereMrai GecmejtY 加"吟 Ttisorv Gtaph Theory Knot TheoryNumencal AnalystsVechw CeicufiJS<:CIT>b<r-8l!WtC5 Cr'iptccraphy DiffereMrai GecmejtY 加"吟 Ttisorv Gtaph Theory Knot TheoryNumencal AnalystsVechw CeicufiJSCaicijiusChaw TheoryCcmpiex Anetysi?Otierential Equations Erigirwecing M-athrmatiCs GwmelryGroup “结зуL,near AlgebraNumbsr Theory Dper atirxis Rewem Real Anatysn Topctc-gyCaicijiusChaw TheoryCcmpiex Anetysi?Otierential Equations Erigirwecing M-athrmatiCs GwmelryGroup “结зуL,near AlgebraNumbsr Theory Dper atirxis Rewem Real Anatysn Topctc-gyAgebra Education NewCate Studies.£t GnomesAgebra Education NewCate Studies.£t Gnomes三侬inuring三侬inuringLinear Algebra EMationPhysics t:cii.K«ttcnQuantum Mee nanceLinear Algebra EMationPhysics t:cii.K«ttcnQuantum Mee nanceSlaii 池 ssSlaii 池 ssStfetiteStfetiteDE'单Ыетегйагу 3chco:DE'单Ыетегйагу 3chco:GecEHitry Eciucalior:GecEHitry Eciucalior:■^eryhcris ftesearct-■^eryhcris ftesearct-PrecscuiitsFaX ai•叫 s,$УесУ CalcBusPrecscuiitsFaX ai•叫 s,$УесУ CalcBus三闻市也扌杀济'三闻市也扌杀济'Cherrncfl:ConhBCherrncfl:ConhBCi^-aSthxiuisIE 沁 eh6lCi^-aSthxiuisIE 沁 eh6lAstrophysicsSQtcgvDyriamicsl 々ysttm 隼Quantum Mechar»;5AstrophysicsSQtcgvDyriamicsl 々ysttm 隼Quantum Mechar»;5biochemistrYCnewistrYPhYSH,$biochemistrYCnewistrYPhYSH,$Ecgineeir® Mathem殲沁s F;r,3e fclennirit MooeHrgEcgineeir® Mathem殲沁s F;r,3e fclennirit MooeHrgFluid Dyn«fHCt Wanuf'Fciunng Mcdelhg & Smui纪hn Signal PecesingFluid Dyn«fHCt Wanuf'Fciunng Mcdelhg & Smui纪hn Signal Pecesing^^eat TransferMechanicalNucififir^^eat TransferMechanicalNucififirС<м11р1ЛЙ 3d际厶>С<м11р1ЛЙ 3d际厶>C Oode GeneraticnErrnr Cvh ructionC Oode GeneraticnErrnr Cvh ructionCrvptograohyFORTRANCrvptograohyFORTRANGraph fheorvGraph fheorvinternet Ccnrect"ltY **^internet Ccnrect"ltY **^
|^£m№ ^омМ *ч» *ваб|мм* Ujftwrt &
■h^ Нйз« ” О 门 G @Rm% 2j!
|^£m№ ^омМ *ч» *ваб|мм* Ujftwrt &
■h^ Нйз« ” О 门 G @Rm% 2j!
自嶼cj朗 hH?〃ww■竺吧pfpps.com/1
自嶼cj朗 hH?〃ww■竺吧pfpps.com/1
□*»ни к▼虫▼四 Bт ▼m
□*»ни к▼虫▼四 Bт ▼m
3砂尸
3砂尸
‘秣荘隘济渝若"
‘秣荘隘济渝若"
№.浙篇i齧犷
№.浙篇i齧犷
MAINWtHSite * ,丄
MAPI! bW^LNl CXNU 觥00iJU‘R8g 缰
MAINWtHSite * ,丄
MAPI! bW^LNl CXNU 觥00iJU‘R8g 缰
Abstract 14Mgebra
CalcMu* of Vsriai»"s
Abstract 14Mgebra
CalcMu* of Vsriai»"s
<:CIT>b<r-8l!WtC5 Cr'iptccraphy DiffereMrai GecmejtY 加"吟 Ttisorv Gtaph Theory Knot Theory
Numencal Analysts
Vechw CeicufiJS
<:CIT>b<r-8l!WtC5 Cr'iptccraphy DiffereMrai GecmejtY 加"吟 Ttisorv Gtaph Theory Knot Theory
Numencal Analysts
Vechw CeicufiJS
Caicijius
Chaw Theory
Ccmpiex Anetysi?
Otierential Equations Erigirwecing M-athrmatiCs Gwmelry
Group “结зу
L,near Algebra
Numbsr Theory Dper atirxis Rewem Real Anatysn Topctc-gy
Caicijius
Chaw Theory
Ccmpiex Anetysi?
Otierential Equations Erigirwecing M-athrmatiCs Gwmelry
Group “结зу
L,near Algebra
Numbsr Theory Dper atirxis Rewem Real Anatysn Topctc-gy
Agebra Education New
Cate Studies.
£t Gnomes
Agebra Education New
Cate Studies.
£t Gnomes
三侬inuring
三侬inuring
Linear Algebra EMation
Physics t:cii.K«ttcn
Quantum Mee nance
Linear Algebra EMation
Physics t:cii.K«ttcn
Quantum Mee nance
Slaii 池 ss
Slaii 池 ss
Stfetite
Stfetite
DE'单
Ыетегйагу 3chco:
DE'单
Ыетегйагу 3chco:
GecEHitry Eciucalior:
GecEHitry Eciucalior:
■^eryhcris ftesearct-
■^eryhcris ftesearct-
Precscuiits
FaX ai•叫 s,$
УесУ CalcBus
Precscuiits
FaX ai•叫 s,$
УесУ CalcBus
三闻市也扌杀济'
三闻市也扌杀济'
Cherrncfl:
ConhB
Cherrncfl:
ConhB
Ci^-aSthxiuisI
E 沁 eh6l
Ci^-aSthxiuisI
E 沁 eh6l
Astrophysics
SQtcgv
Dyriamicsl 々ysttm 隼
Quantum Mechar»;5
Astrophysics
SQtcgv
Dyriamicsl 々ysttm 隼
Quantum Mechar»;5
biochemistrY
CnewistrY
PhYSH,$
biochemistrY
CnewistrY
PhYSH,$
Ecgineeir® Mathem殲沁s F;r,3e fclennirit MooeHrg
Ecgineeir® Mathem殲沁s F;r,3e fclennirit MooeHrg
Fluid Dyn«fHCt Wanuf'Fciunng Mcdelhg & Smui纪hn Signal Pecesing
Fluid Dyn«fHCt Wanuf'Fciunng Mcdelhg & Smui纪hn Signal Pecesing
^^eat Transfer
Mechanical
Nucififir
^^eat Transfer
Mechanical
Nucififir
С<м11р1ЛЙ 3d际厶>
С<м11р1ЛЙ 3d际厶>
C Oode Generaticn
Errnr Cvh ruction
C Oode Generaticn
Errnr Cvh ruction
Crvptograohy
FORTRAN
Crvptograohy
FORTRAN
Graph fheorv
Graph fheorv
internet Ccnrect"ltY **^
internet Ccnrect"ltY **^
MaNe P:oq伟nminq
Рис. 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.
В окне сообщаются данные об авторе примера, дате создания, аннотации, при-
&蹈
Э Maple Applicdttan Centet - Microtoft Inteinet Exp皿er
Watedoo Mai
AOVANCM МАГ^МА-ПС» 士
GHkK "NXS
:■Coritdibut 您》n Rf*;ik忌iksm 制承ё^аУе^оЕ* У'Л1вГ$ New?
Maple L:nk$
VYe*EQ M.^riML viewtr
戮倒匕!.«.■*»(■/
Contact Us
Advan^en Search
Л-HAr'SNEW
A?OU7 IJS
PRCDUCT MFURMATQN
SUPPORT
;U8U&XTi。^
PF£S5 RC0M
CAREERS
CONiACT US
』由《 L~an Ms^iie Do for rr応?
*3 ^Памдай
Finilt eteffent methods fm smog PDh *<^'
Lauiace's e出而:on ;n a MhJet
LongitiJdina: waves 犷 sn elastic 心:1
Plucked string
Bcundarv vaLiP 2rsMms rot 2-D elliptic sanations
Efoundary vaL* arobletns tor J-D eWntk equations
Cw.ichy prablerns tar he皱 mtuauans
Cylinder hea*d Ly ку»”;{汕;)
阪嶼& BroK* ] F g. T〃af Vw*ton
tpiitatfon CeW-
Cwxhy RM*4em\ "к v;a«§ e釈沧wr>$
Fedina genera: sokrt(on\ for paRai aHrerETitial equations
Con^ersicn gear pantai diitei ent间 operators vMtl: constarrf r.i't'ff:c:i;frt:' to cflsrwneai !orm
Cgnvei&cn linear pmr!:&: d'ttsrerrfial 咏例口内 with two уапз^ад?; tc car>onn.'8i tonn
Рис. 2.29. Перечень примеров на решение дифференциальных уравнений
^Kmt ,■-參(3图 姿П«*睽 住)甌ман睜 ⑶《瞬冰(2T礬“參胱* 0^
"3 "网3聆我
,讨 Article Infatmation - Mictosoft Internet Explotei
jj ГЬо*“кям» ~]
銀即贈ЦД鸣
黑風險
精却*8 8g*,I free Trial VooJen
Laplace's equation in a cylinder
8:23 4 13.23 PM
Robert Lopez
The obie^ive *f this sipphcalm is to tind the yeady” state, haunded temperratiwe* inside a $5id cyliri^i if the base 旧 fniuieted, and the curved lateial surtace and the top ere rnamwned at temperatui,s of zero and T respectively
M«ple6
49 irtne(s)
色
менении средств анимации и др. Кнопки View и Download позволяют начать просмотр или загрузку примера в среду Maple прямо из этого окна.
Просмотр примеров с помощью броузера
Просмотр примеров возможен прямо из Интернета с помощью браузера. Желательно подключить к нему plug-in (дополнительный модуль) языка Java и MathML. Рисунок 2.31 демонстрирует просмотр выбранного примера в том его месте, где имеются математические формулы. Нетрудно заметить, что прекрасно отображаются даже самые сложные формулы.
、莎 Section 29-02.Ып1 - Mtcrosoft Internet Explorer
Айл Правка £ид Кз6>аннм Оджис 工 граака
仁封йаай у;
^0№:|$]7it!pu7wwv7nTapleapp7com7poweFtoois/eri^rieeF7ign^^^0№:|$]7it!pu7wwv7nTapleapp7com7poweFtoois/eri^rieeF7ign^^m У(1врвзйm У(1врвзй
^0№:|$]7it!pu7wwv7nTapleapp7com7poweFtoois/eri^rieeF7ign^^
^0№:|$]7it!pu7wwv7nTapleapp7com7poweFtoois/eri^rieeF7ign^^
m У(1врвзй
m У(1врвзй
The solution is given by
co
11(%2)= 2 A^mm g$MM*
分=I
金分= -ash(方〃)г[%(方f)]2办金分= -ash(方〃)г[%(方f)]2办2 rf(r) /q(^^) dr/ssh("厶)[4(%◎)]22 rf(r) /q(^^) dr/ssh("厶)[4(%◎)]2
金分= -
ash(方〃)г[%(方f)]2办
金分= -
ash(方〃)г[%(方f)]2办
2 rf(r) /q(^^) dr
/ssh("厶)[4(%◎)]2
2 rf(r) /q(^^) dr
/ssh("厶)[4(%◎)]2
where Jq(x) is the Bessel function of order zero, and Л•疋 is the 疋 th zero of Jq(q x)
The functions 々(x) satisfy Bessel's equation
о22
n y"6) + Nya)+ a - v )y(#) = 0
Рис. 2.31. Просмотр примера прямо Интернета(часть примера с математическими формулами)
На другом рисунке (рис. 2.32) показан просмотр той части примера, в которой имеется графика. Нетрудно заметить, что как графика, так и строки ввода воспроизводятся достаточно хорошо. Однако надо помнить, что примеры в этом случае можно лишь просматривать, но их нельзя корректировать и исполнять. Таким образом, просмотр имеет чисто ознакомительное значение.
Рис. 2.32. Просмотр примера прямо в Интернете (часть примера с графикой)
Загрузка примеров на диск
Чтобы полноценно работать с примерами, нужно загрузить их в среду Maple, Это можно сделать двумя способами:
О скачать пример на жесткий диск и затем открыть его в Maple (с помощью команды Open);
О загрузить пример прямо из Интернета в среду Maple без предварительной записи на диск.
Подготовку к записи примера на диск иллюстрирует рис. 2.33. Окно загрузки файла, представленное на нем, появляется при щелчке на гиперссылке с именем примера.
О Переключатель в этом окне имеет два положения:
О Открыть этот файл из текущего места;
Сохранить этот файл на диске.
После установки его во второе положение и щелчка на кнопке ОК появится окно с запросом папки, в которой будет помещен файл выбранного примера. Это окно представлено на рис. 2.34. В данном случае файл будет записываться в папку с именем Maple, внутри крторой есть пацка с именем 1.
Рис. 2.33. Подготовка к загрузке примера на жесткий диск
После выбора папки достаточно нажать кнопку Сохранить и можно будет наблю<; дать процесс копирования файла в выбранную папку (рис. 2.35). На экран будет выведено окно загрузки с линейным индикатором хода процесса. В этом окне приводятся данные о скорости загрузки, имени файла и пути к папке, в которую загружается файл. Окно исчезает после завершения загрузки, если установлен флажок Закрыть диалоговое окно после загрузки.
:①热e融"冷+ 0日楊 @打6磔:隹沙&齿аннйй③&»w* 0*弊*昌窗"&.:①热e融"冷+ 0日楊 @打6磔:隹沙&齿аннйй③&»w* 0*弊*昌窗"&.::^^ 獨袒里f “www maple3pps.com/List.asp^Category!D=208<Category=PDEs::^^ 獨袒里f “www maple3pps.com/List.asp^Category!D=208<Category=PDEsVVaiciloo MaiVVaiciloo Mai抬忌>爆像1隣.:屐6Г匕盖处*^控段抬忌>爆像1隣.:屐6Г匕盖处*^控段麵:EK*吟勺麵:EK*吟勺выполнено: Z0% из Section29-02. mweвыполнено: Z0% из Section29-02. mwe■Coniri&iMe- Ac AppHcaifori'■Mapfs Po^ertcofe▼mats Me”y:Мзр>е Lin^s6/ebEQ b/i^hML Vie^'erShate LibraryContact Us■Coniri&iMe- Ac AppHcaifori'■Mapfs Po^ertcofe▼mats Me”y:Мзр>е Lin^s6/ebEQ b/i^hML Vie^'erShate LibraryContact Us>3агй®^ь 段.>3агй®^ь 段.A«vanceti StarchA«vanceti StarchС-корость передачк 骂 356aSff,cex卩 ^i 而 W^^^^?i^■券 ^Ь嗓 з^^и^^тл^*冃沁兄■С-корость передачк 骂 356aSff,cex卩 ^i 而 W^^^^?i^■券 ^Ь嗓 з^^и^^тл^*冃沁兄■^VHAT'S ZE*ABOUT USPRODUCT ^FORMATfOl'iMALE'SSUPPORT PLH.tCATtONSPRESS F20MCAFEEKSCONTACT US^VHAT'S ZE*ABOUT USPRODUCT ^FORMATfOl'iMALE'SSUPPORT PLH.tCATtONSPRESS F20MCAFEEKSCONTACT UStA械 can Maple Do 紀r me?tA械 can Maple Do 紀r me?Findiny general &оШ!;опа fo; pariiat drfierenW pquatiorcFindiny general &оШ!;опа fo; pariiat drfierenW pquatiorc□"財歴翩□"財歴翩U*BgKXMAPE$a 师話號 мU*BgKXMAPE$a 师話號 мCyHcder heated by inductionCyHcder heated by inductionMapte 8&okc : I Free TrUt VentonMapte 8&okc : I Free TrUt VentonConversiori linear partial difterefitiai operaro! s wlh constant coefficients ta сапопюа formConversiori linear partial difterefitiai operaro! s wlh constant coefficients ta сапопюа formCcnv^fsicn Spe«*r e5d?al dtf£r&r*al equations wHb t'AG varnbles to canor:icai mmCcnv^fsicn Spe«*r e5d?al dtf£r&r*al equations wHb t'AG varnbles to canor:icai mm劇{фйнаяие;:$ec(icjn2S<l2.flws: & www疝 a₽冷缺》м i劇{фйнаяие;:$ec(icjn2S<l2.flws: & www疝 a₽冷缺》м iОгликз jОгликз j
:①热e融"冷+ 0日楊 @打6磔:隹沙&齿аннйй③&»w* 0*弊*昌窗"&.
:①热e融"冷+ 0日楊 @打6磔:隹沙&齿аннйй③&»w* 0*弊*昌窗"&.
::^^ 獨袒里f “www maple3pps.com/List.asp^Category!D=208<Category=PDEs
::^^ 獨袒里f “www maple3pps.com/List.asp^Category!D=208<Category=PDEs
VVaiciloo Mai
VVaiciloo Mai
抬忌>爆像1隣.:屐6Г匕盖处*^控段
抬忌>爆像1隣.:屐6Г匕盖处*^控段
麵:EK*吟勺
麵:EK*吟勺
выполнено: Z0% из Section29-02. mwe
выполнено: Z0% из Section29-02. mwe
■Coniri&iMe- Ac AppHcaifori'
■Mapfs Po^ertcofe
▼mats Me”y:
Мзр>е Lin^s
6/ebEQ b/i^hML Vie^'er
Shate Library
Contact Us
■Coniri&iMe- Ac AppHcaifori'
■Mapfs Po^ertcofe
▼mats Me”y:
Мзр>е Lin^s
6/ebEQ b/i^hML Vie^'er
Shate Library
Contact Us
>3агй®^ь 段.
>3агй®^ь 段.
A«vanceti Starch
A«vanceti Starch
С-корость передачк 骂 356aSff,cex
卩 ^i 而 W^^^^?i^■券 ^Ь嗓 з^^и^^тл^*冃沁兄■
С-корость передачк 骂 356aSff,cex
卩 ^i 而 W^^^^?i^■券 ^Ь嗓 з^^и^^тл^*冃沁兄■
^VHAT'S ZE*
ABOUT US
PRODUCT ^FORMATfOl'i
MALE'S
SUPPORT PLH.tCATtONS
PRESS F20M
CAFEEKS
CONTACT US
^VHAT'S ZE*
ABOUT US
PRODUCT ^FORMATfOl'i
MALE'S
SUPPORT PLH.tCATtONS
PRESS F20M
CAFEEKS
CONTACT US
tA械 can Maple Do 紀r me?
tA械 can Maple Do 紀r me?
Findiny general &оШ!;опа fo; pariiat drfierenW pquatiorc
Findiny general &оШ!;опа fo; pariiat drfierenW pquatiorc
□"財歴翩
□"財歴翩
U*BgKXMAPE$a 师話號 м
U*BgKXMAPE$a 师話號 м
CyHcder heated by induction
CyHcder heated by induction
Mapte 8&okc : I Free TrUt Venton
Mapte 8&okc : I Free TrUt Venton
Conversiori linear partial difterefitiai operaro! s wlh constant coefficients ta сапопюа form
Conversiori linear partial difterefitiai operaro! s wlh constant coefficients ta сапопюа form
Ccnv^fsicn Spe«*r e5d?al dtf£r&r*al equations wHb t'AG varnbles to canor:icai mm
Ccnv^fsicn Spe«*r e5d?al dtf£r&r*al equations wHb t'AG varnbles to canor:icai mm
劇{фйнаяие;:
$ec(icjn2S<l2.flws: & www疝 a₽冷缺》м i
劇{фйнаяие;:
$ec(icjn2S<l2.flws: & www疝 a₽冷缺》м i
Огликз j
Огликз j
Рис. 2.35. Процесс загрузки примера из Интернета на жесткий диск
Просмотр примеров в среде Maple
После загрузки примера на диск его можно открыть в Maple и запустить на исполнение. При этом пример можно модифицировать, исследуя, как скажутся изменения на его работе. Для открытия файлов служит команда Open.
Однако в Maple 7 предусмотрена возможность и прямой загрузки примеров из Интернета, минуя промежуточную запись файла на диск. Для этого у выбранного примера надо щелкнуть на гиперссылке Download Worksheet По окончании загрузки примера появляется окно Maple 7 с открытым рабочим листом —рис. 2.36.
国 Maple 7 - [Section29-02{1].mws - [Serve* 1]]国 Maple 7 - [Section29-02{1].mws - [Serve* 1]]解国戏解国戏磯版 £d^喻₽w Insert 小睜 -一 Qptnsis直mefow辻I彩丁丿用務* —~m叵画^№й ем国垂f函 03图回迎 Si«磯版 £d^喻₽w Insert 小睜 -一 Qptnsis直mefow辻I彩丁丿用務* —~m叵画^№й ем国垂f函 03图回迎 Si«Unit 5 Boundary Val.ie Pr >blerns for Partial Differential EquationsUnit 5 Boundary Val.ie Pr >blerns for Partial Differential EquationsChapter 29: Separation of Variables in Non-Cartestan CoordinatesChapter 29: Separation of Variables in Non-Cartestan CoordinatesSection 29 2. Laplace's equation in a cylinderSection 29 2. Laplace's equation in a cylinder>;Copyright>;Copyright0 Initializations0 InitializationsS Problem Statement and FormulationS Problem Statement and FormulationS Statement and Analysis of the SolutionS Statement and Analysis of the SolutionS Example 29.2S Example 29.2Щ Solution by Separation of VariablesЩ Solution by Separation of Variables「M* ] Free 仆擋$ Version「M* ] Free 仆擋$ Versionfia^呷腕k離<fia^呷腕k離<CodeCode•餘•餘瞼瞼
国 Maple 7 - [Section29-02{1].mws - [Serve* 1]]
国 Maple 7 - [Section29-02{1].mws - [Serve* 1]]
解国戏
解国戏
磯版 £d^喻₽w Insert 小睜 -一 Qptnsis直mefow辻I彩丁丿用務* —~
m叵画^№й ем国垂f函 03图回迎 Si«
磯版 £d^喻₽w Insert 小睜 -一 Qptnsis直mefow辻I彩丁丿用務* —~
m叵画^№й ем国垂f函 03图回迎 Si«
Unit 5 Boundary Val.ie Pr >blerns for Partial Differential Equations
Unit 5 Boundary Val.ie Pr >blerns for Partial Differential Equations
Chapter 29: Separation of Variables in Non-Cartestan Coordinates
Chapter 29: Separation of Variables in Non-Cartestan Coordinates
Section 29 2. Laplace's equation in a cylinder
Section 29 2. Laplace's equation in a cylinder
>;Copyright
>;Copyright
0 Initializations
0 Initializations
S Problem Statement and Formulation
S Problem Statement and Formulation
S Statement and Analysis of the Solution
S Statement and Analysis of the Solution
S Example 29.2
S Example 29.2
Щ Solution by Separation of Variables
Щ Solution by Separation of Variables
「M* ] Free 仆擋$ Version
「M* ] Free 仆擋$ Version
fia^呷腕k離<
fia^呷腕k離<
Code
Code
•餘
•餘
瞼
瞼
•Miat can Maple I、。tci me"'•Miat can Maple I、。tci me"'finding general solutions to: partial difteientia; equations
•Miat can Maple I、。tci me"'
•Miat can Maple I、。tci me"'
Рис. 2.36. Просмотр примера, напрямую загруженного из Интернета
Новые инструменты Maple Powertools
В конце 2000 г. на сайте фирмы Waterloo Maple появился новый раздел, сразу привлекший внимание пользователей системы Maple, — инструментальный пакет Maple Powertools. Это бесплатно распространяемый пакет инструментальных средств, облегчающий использование Maple и дополняющий программу новыми возможностями. Страница сайта, посвященная этому пакету, представлена на рис. 2.37.
На рис. 2.38 показана часть средств пакета Maple Powertools. Здесь видны обучающие компоненты и примеры применений системы Maple. Здесь обращает на себя внимание мощный пакет вычислений Calculus, содержащий три части, и пакет операций с векторами Vector Calculus.
Нижняя часть страницы подставлена на рис. 2.39. Здесь помещены пакеты по инженерной математике и матричной алгебре, пакет-презентация по Maple, пакет для математического класса и для продолженного образования. Пакеты, представленные на этой web-странице (рис. 2.28 и 2.29), образуют большое хранилище интересных и поучительных примеров применения и ознакомительных курсов по Maple. Но, увы, написанных на английском языке.
'M^fite Rowzdools
i/'fliat's New7
Maple L;nh$
“<4£Q №侦i•帆 Vif >ver
$h<ve :.im ary
Contact !js
心MS NEW
ABOUT US
PfK-DUCf IMfCRMAIION
SALES
SUPPORT
P总心AHQNS
味ESS ROOM
CAREERS
CCI^ACT US
ПаП『€ SUITE о? FREE ADD-ON PRODUC7S
about powetools ^
Map価 PowerToof# nre free add-on packages for Maple software. Power Tools were developed by expert» in the" fields to help users configure Maple for their research and teaching.
^at can M&ple ::9 for me,
To vtftw menu* of tM Power Tools avwiable, click an',1 o: ihe three tab: above
励A坦W&&5啜落缪餐幾 參陋PLe豺 心讨4代乐TJ蹴 :蕪出3TEH『Rgu4董舞
Each Powet Tool embodies
• CompreDenstveness "they are bQn&fide application psckay^s. (ney nave a compile range st tunctiC'ns to tackfe c emprex problems m гее! domains
Рис. 2.37. Страница, посвященная инструментальному пакету Maple Powertools
否 Maple PoweHooh -Education - Microsoft Internet Expiset
£尋屮 Was*# gw 生加 внкав Qi»& ^правка
Ф Н4Ш *
“參由tj|般睇毋隹]执皿m^ D诲t2 НУ艦” §酬■"日
:Ccntr8:-ute sn Др₽«с«й1сп ■
:%袜He Pw/ertcxMs
^at's New^
Mapfc L:n心
WebEQ MathML fe'wer
Share Library
SMact Us
..启PLE'M SUU* Of FREt ADD.OH PRODUCTS
/^AT'S N®V
ASC-tJT 1坨
PRODUCT 闵 FORMATION
SUPPORf PIJSI.ICATIONS
PRESS ROOM
CAREERS
CGNTAC' US
焉、用db厄宜泳应又历及
? € s € a r c Mrapplicatiof?
唯號微 educatfori-u
Tms is a c-impwte set of Meule les$on$ »or 1st semester ceicuius. Tn#se worksheets w^re developed by tlie University of vMsconsrvMiiwaukee ЗраКШ of Mathematics and supplemented with some of the top cetcuius defforistrati-x.s from the Mftple АррИслюп Cerler.
Ihis is a ccmpWe set o: Maple lessors to 2ncl semester Ecmus These worksheets were developed by the U;*er抓¥ of vMsconsin-Mitwaukee Сера式mem cf Mathematics arrf suppleirented with some.3 Ihe top calcUus tiemonslralian? from the Maple Afjplieeition center
v*hat cnn Mepie Do fw me?
MAIN WEBSITE ^®йШ*^> 痴 tMAPLE$rUDbWCWI£ft 学 У W^M 'KEGISTtR WOOUCt 調
A cotection ot 25 dassroom demos developed and used at SI. lx»* Urtversly for their Calculus ■ coursct. The worksheets include e $igf*icart amount В expiorahxy text and exposes.
Ma* package for vector cfitferantial operatons, curve analysis, coordinate sysien conversions, mutiote Не#Ыз, and line and surface Hegrals. Includes 6 exwvte аройсМолз using Uw package
Intra tQ M,殳*。for.
PM¥Si
3 Maple PowerTools - Education ■ Micfftsofl Internet [xploiec
尊^ f ®才 g4)( 世妳立映口 电f1y ммй"
;GHZ- Q「<S ©、2 K*J@*z"卧承岳哀-ЕР—
M电hU?:〃 www.mpleapps com/poweriools/educai on shtml
弯加i疝市加加m
This мс\绵e of 273 Mapie cl«ssroom lectures by Prof. Robert Lopez of the Res* HiJman institute cover? ail the post-ctew*js msthemMics needed by^itferjradijaie egneering students.
一而ReF?
lathClass
The MathClass 咏kege introduces. Maple tools and technkiuet fcr constructing textbook-qusUity matlwtreticsl 3*§r*ms Four self-coritairwd Isssons aftmonstrstft the features end technictues of the package.
mQR唇 a
S^QS^-SKCO^DARY
;vi:":K:;*H:k:,口±:';*次;;;Iv?K
This Ткйопа! has been designed fey the Matnemaiics Dspartment at Seattie Untrai Community SRege to gve you а сслиркйе self-paced hands-on introduction to the basic coinmands t^t you wilt need to use Mapfe ”什 ectiveK
This package of 49 Maple classroom rr>odu>eb by Gregory A Moore of Cerritos C№ge Is dfiidgned to enliven the teac^ng of methemetlcs c>jrrlcula st the №中 school. CGiniTtunity college and university le^ils
小 ь I Matrix Algebra
衣 i-A{(: >>исл ? : О M 俨人「к
The package of 30 Maple clflisi'wm modules bv l>.V\4c»zis%w htsfecki covets n・〃S of iM topics taught st *w iK^ergraduate tevei that concern operetions on rr«t:'ices with symMc and
numericai 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.
Щелкнув на гиперссылке Enters правом нижнем углу страницы (рис. 2.40), можно получить доступ к следующей странице, изображенной на рис. 2.41 и содержащей ссылки на компоненты, находящиеся в Студенческом центре. Наряду с уже упомянутыми пакетами4 примеров тут можно найти и новые. Список обучающих пакетов в открытом виде представлен на странице рис. 2.41. Выбрав тот или иной пакет, его можно загрузить по описанным выше правилам.
В Студенческом центре представлено особенно много пакетов примеров работы с Maple. И это отражает Ъсобое внимание, уделяемое разработчиками этой системы развитию о€фазо^авд«я.
5 Welome to Watedoo Maple's Student Centef - Mtciosoft Inteinet Explorer
内鬱®Г "t淞嗖了廳4鲁弟NMf Ftf^t擊蹒戀*干心2 ^中沁0 2«暗、 :>f 3^車*厶3^^、宀"<^丁 &…^,1 不…二.◎⑥"倚©R0g…国械ip^*<4@*骅《Я堂>*..鎏,..国.發点.
Й«ф№^ hW^/www.maple4sludenU com/一 --―…期導欧抬epejMft:;
Рис. 2.40. Начальная страница Студенческого центра
史е»诉 *«©« gw 必збраниое Qpenc 工правка
^№№ ]胤 http //www.rriaple4students.corri/main.html
j Get Help With?
I^IWalerloo Maple Student Centei - Miciosoft Internet Exptorer
I N<*d H^if-l енгпшч Ma№‘
' ^ О В 0 ‘ @ВйЙЬК 南掛MftghMOg 0&OM* 込У 岳"多 й? •日
复me*店:
】ht$ M&nie tUorial has been designed Cv the Matt 论mat心
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 advances of gGy Maple as a mathematics: piogiwn to (to physics. Several fieHs at mathematics are covered in this labotatay hi areas such as Cfticij'US.Lreat Algewa, Сейтце〉: №imbers end many
w menu, and s:wt gvttiny t即.
This Mcnttf« 舞隅fr Bio
H*frtt Wrt*^
Ge**b麥6&罔瀬報 6** 結》勺 F6 £Ut*n ::协威砒*«phrtempe 由%»■/:
:期施⑥姨爲:噺嚥^;:^;;; :籲$:h磷筑娄絲瀛蹶玄磁竦:
Mr hwog *同 be ertterns №f soptwmore yea» in «те Uirversily of Wetertoo's Co-ciperative ■ Education Ccmouter Science proaram in the fait. He takes interest <n cryptoyfapny, physfc$ nppricabons, arwj recursive 因3thms. h his spare tone, Alexis enpys driewning, watching anwne, and olaymg voKeybM
WcW»nttaur Feedback!
You want to have your Вю Here?
CBck here to find out ho*
中找《зад "中找《зад "片・^A₽報扌對 http, //legistei. maplesoft. com/5’ ”'"…if 仝片・^A₽報扌對 http, //legistei. maplesoft. com/5’ ”'"…if 仝"3 Rn^ewA:"3 Rn^ewA:Waterloo MapleWaterloo Maple.УягкУ License!■Ciaim'L^ense Wcgle User.УягкУ License!■Ciaim'L^ense Wcgle UserPlease select one of the following options;Please select one of the following options;RtgititatlflinRtgititatlflinQUICK LiNKSQUICK LiNKS-:H«m» I About U* {ContactewH»>№<«s<y«owwwx<:x:3 к::;::::::;;:::::。:::-:H«m» I About U* {ContactewH»>№<«s<y«owwwx<:x:3 к::;::::::;;:::::。:::-/'/HAT'S МЕЛABOUT USPRODUCT !NFQ枚第厶 TQMSALESSUPPORTPtJ0LiCA7!O№PRESS ROOMCAREERSCONTACT US-/'/HAT'S МЕЛABOUT USPRODUCT !NFQ枚第厶 TQMSALESSUPPORTPtJ0LiCA7!O№PRESS ROOMCAREERSCONTACT USAhat can Mapte Do fa ine?Ahat can Mapte Do fa ine?MNW WEB琼於亨入Яg繳й滋注维城&_•*;.:屐應:.滋*.皆黑法MNW WEB琼於亨入Яg繳й滋注维城&_•*;.:屐應:.滋*.皆黑法銅陋百銅陋百APPUCATSONCENHR “APPUCATSONCENHR “MAPlf STUDENT CHMTEftMAPlf STUDENT CHMTEft'feu W凝用瞭队、;'feu W凝用瞭队、;MapleMapleMaple TrialMaple TrialMaple V Release&.1 or earlier ■ ■:Maple V Release&.1 or earlier ■ ■:'View vour licenses, rfjque^ a re or change'View vour licenses, rfjque^ a re or change■ C总ini a liitfiM fite for piuduW that vou order 6tl directly n om W^tef loo №@pk cr one of its pwlnsrs.■ C总ini a liitfiM fite for piuduW that vou order 6tl directly n om W^tef loo №@pk cr one of its pwlnsrs.«Register a sinyle-user Linux, 闻 ndows or MacEosh yersion.«Register a sinyle-user Linux, 闻 ndows or MacEosh yersion.Register for a 1-month license tor the Trial version tDiiwaie.Register for a 1-month license tor the Trial version tDiiwaie.Tell us abciX yourseffTell us abciX yourseff'■'our 12-ciigiti »сеск* nurber''■'our 12-ciigiti »сеск* nurber':-:ХШВ^2><1|.!;1';"?<:'工焕n殖礴nbeN::-:ХШВ^2><1|.!;1';"?<:'工焕n殖礴nbeN:YoU?.-.9-^igft:>:::;<Serial nuffiftsr*<YoU?.-.9-^igft:>:::;<Serial nuffiftsr*<* Your 9dgit Serial number can be found on your 8 jewel case or License ^gregmerX envefc^e,* Your 9dgit Serial number can be found on your 8 jewel case or License ^gregmerX envefc^e,
中找《зад "
中找《зад "
片・^A₽報扌對 http, //legistei. maplesoft. com/
5’ ”'"…if 仝
片・^A₽報扌對 http, //legistei. maplesoft. com/
5’ ”'"…if 仝
"3 Rn^ewA:
"3 Rn^ewA:
Waterloo Maple
Waterloo Maple
.УягкУ License!
■Ciaim'L^ense Wcgle User
.УягкУ License!
■Ciaim'L^ense Wcgle User
Please select one of the following options;
Please select one of the following options;
Rtgititatlflin
Rtgititatlflin
QUICK LiNKS
QUICK LiNKS
-:H«m» I About U* {Contact
ewH»>№<«s<y«owwwx<:x:3 к::;::::::;;:::::。:::
-:H«m» I About U* {Contact
ewH»>№<«s<y«owwwx<:x:3 к::;::::::;;:::::。:::
-/'/HAT'S МЕЛ
ABOUT US
PRODUCT !NFQ枚第厶 TQM
SALES
SUPPORT
PtJ0LiCA7!O№
PRESS ROOM
CAREERS
CONTACT US
-/'/HAT'S МЕЛ
ABOUT US
PRODUCT !NFQ枚第厶 TQM
SALES
SUPPORT
PtJ0LiCA7!O№
PRESS ROOM
CAREERS
CONTACT US
Ahat can Mapte Do fa ine?
Ahat can Mapte Do fa ine?
MNW WEB琼於亨入
Яg繳й滋注维城&_•*;.:屐應:.滋*.皆黑法
MNW WEB琼於亨入
Яg繳й滋注维城&_•*;.:屐應:.滋*.皆黑法
銅陋百
銅陋百
APPUCATSONCENHR “
APPUCATSONCENHR “
MAPlf STUDENT CHMTEft
MAPlf STUDENT CHMTEft
'feu W凝用瞭队、;
'feu W凝用瞭队、;
Maple
Maple
Maple Trial
Maple Trial
Maple V Release
&.1 or earlier ■ ■:
Maple V Release
&.1 or earlier ■ ■:
'View vour licenses, rfjque^ a re or change
'View vour licenses, rfjque^ a re or change
■ C总ini a liitfiM fite for piuduW that vou order 6tl directly n om W^tef loo №@pk cr one of its pwlnsrs.
■ C总ini a liitfiM fite for piuduW that vou order 6tl directly n om W^tef loo №@pk cr one of its pwlnsrs.
«Register a sinyle-user Linux, 闻 ndows or MacEosh yersion.
«Register a sinyle-user Linux, 闻 ndows or MacEosh yersion.
Register for a 1-month license tor the Trial version tDiiwaie.
Register for a 1-month license tor the Trial version tDiiwaie.
Tell us abciX yourseff
Tell us abciX yourseff
'■'our 12-ciigit
i »сеск* nurber'
'■'our 12-ciigit
i »сеск* nurber'
:-:ХШВ^2><1|.!;1';"?<:'工焕n殖礴nbeN:
:-:ХШВ^2><1|.!;1';"?<:'工焕n殖礴nbeN:
YoU?.-.9-^igft:>:::;<
Serial nuffiftsr*<
YoU?.-.9-^igft:>:::;<
Serial nuffiftsr*<
* Your 9dgit Serial number can be found on your 8 jewel case or License ^gregmerX envefc^e,
* Your 9dgit Serial number can be found on your 8 jewel case or License ^gregmerX envefc^e,
Дополнительные информационные ресурсы в Интернете
Регистрация Maple 7
Политика корпорации Waterloo ориентирована на предельно открытую информационную поддержку системы. Это видно из обзора информационных материалов по системе, представленного выше. Тем не менее для легальных пользователей системы предусмотрены многочисленные блага — рассылка новых материалов по Maple, обновление программы, приглашение на конференции, круглосуточные консультации по телефону и т. д. Но для этого надо зарегистрировать полученный программный продукт.
Регистрация системы Maple 7 выполняется либо по обычной почте, либо по Интернету. В последнем случае достаточно выйти на страницу регистрации, представленную на рис. 2.42.
I当 Waterkm Maple"* BegisHation Site - MicKMtoH Internet Exptore/
Рис. 2,42. Страница регистрации системы Maple 7
В ходе регистрации надо дать определенные данные о себе (имя, фамилия, обычный адрес^JтeлeфQны ц, ^ф.)> ^сообщить номе^ лицензии и серийный номер при-
обретенного пакета и указать другие принятые для такого рода операции данные. После регистрации пользователю будет послано по электронной почте подтверждение о ней, и пользователь будет занесен в базу данных корпорации Waterloo Maple.
Контактные адреса корпорации Waterloo Maple
Если возникает необходимость обратиться прямо в корпорацию Waterloo Maple (например, по почте обычной или электронной либо по телефону), то можно получить необходимые контактные данные, просмотрев страницу корпорации, представленную на рис. 2.43.
I^| About Waletlao Maple * Contact InFoimation - Miciosoft Internet ExpioierI^| About Waletlao Maple * Contact InFoimation - Miciosoft Internet Expioier"嗇簿+圆"嗇簿+圆累埶口《暇拖]http.//www fnaplesoft.corrr/cofpo[ate/contact_info/contacljnfo shtml累埶口《暇拖]http.//www fnaplesoft.corrr/cofpo[ate/contact_info/contacljnfo shtml三 # Переей三 # ПереейCorporate Hs^dquai-tsrsCorporate TimelineProduct Tim喻樓ExeciAive BiographiesCorporate Hs^dquai-tsrsCorporate TimelineProduct Tim喻樓ExeciAive BiographiesContact InformationContact InformationTHAT'S КЕ/ ABQU USP-VODUC1 INfORWATlON SALES SUPPORT W6LICAT10NS PRESS 代 OOM CAREERS CONTACT USTHAT'S КЕ/ ABQU USP-VODUC1 INfORWATlON SALES SUPPORT W6LICAT10NS PRESS 代 OOM CAREERS CONTACT USU#at can M&^e Do Jar me?U#at can M&^e Do Jar me?Sales InquiriesSales Inquiries♦ In North Arnerica♦ In North Arnerica♦ Inteinatic-nai Sales♦ Inteinatic-nai SalesT eclinical Support {Request Support) Our tnovviedgebase of FAQ's will answer most от your technical suppod questions. To find your answers click here.T eclinical Support {Request Support) Our tnovviedgebase of FAQ's will answer most от your technical suppod questions. To find your answers click here.
I^| About Waletlao Maple * Contact InFoimation - Miciosoft Internet Expioier
I^| About Waletlao Maple * Contact InFoimation - Miciosoft Internet Expioier
"嗇簿+圆
"嗇簿+圆
累埶口《暇拖]http.//www fnaplesoft.corrr/cofpo[ate/contact_info/contacljnfo shtml
累埶口《暇拖]http.//www fnaplesoft.corrr/cofpo[ate/contact_info/contacljnfo shtml
三 # Переей
三 # Переей
Corporate Hs^dquai-tsrs
Corporate Timeline
Product Tim喻樓
ExeciAive Biographies
Corporate Hs^dquai-tsrs
Corporate Timeline
Product Tim喻樓
ExeciAive Biographies
Contact Information
Contact Information
THAT'S КЕ/ ABQU US
P-VODUC1 INfORWATlON SALES SUPPORT W6LICAT10NS PRESS 代 OOM CAREERS CONTACT US
THAT'S КЕ/ ABQU US
P-VODUC1 INfORWATlON SALES SUPPORT W6LICAT10NS PRESS 代 OOM CAREERS CONTACT US
U#at can M&^e Do Jar me?
U#at can M&^e Do Jar me?
Sales Inquiries
Sales Inquiries
♦ In North Arnerica
♦ In North Arnerica
♦ Inteinatic-nai Sales
♦ Inteinatic-nai Sales
T eclinical Support {Request Support) Our tnovviedgebase of FAQ's will answer most от your technical suppod questions. To find your answers click here.
T eclinical Support {Request Support) Our tnovviedgebase of FAQ's will answer most от your technical suppod questions. To find your answers click here.
MAPLEAP^UCAIJONCt^IEfi ,MAPLEAP^UCAIJONCt^IEfi ,MAPLE S7ULO4I С£ЫТШMAPLE S7ULO4I С£ЫТШREGtSOPRODUa ГЭREGtSOPRODUa ГЭIt you have more questions use out online £umo<t fotmcr cixrtact suppGH@fT:npif:sof1 comIt you have more questions use out online £umo<t fotmcr cixrtact suppGH@fT:npif:sof1 comapplication Center(Comments and Subtniss:cinsjContact app|icat;onsi§m-=tpie soft cmfiapplication Center(Comments and Subtniss:cinsjContact app|icat;onsi§m-=tpie soft cmfifor General Inquiritf!:for General Inquiritf!:Human Resources(F'esurne £иЬт«$;сп$) Cc-rrtaci hr@rrap!esoti .cor?Human Resources(F'esurne £иЬт«$;сп$) Cc-rrtaci hr@rrap!esoti .cor?
MAPLE
AP^UCAIJONCt^IEfi ,
MAPLE
AP^UCAIJONCt^IEfi ,
MAPLE S7ULO4I С£ЫТШ
MAPLE S7ULO4I С£ЫТШ
REGtSOPRODUa ГЭ
REGtSOPRODUa ГЭ
It you have more questions use out online £umo<t fotm
cr cixrtact suppGH@fT:npif:sof1 com
It you have more questions use out online £umo<t fotm
cr cixrtact suppGH@fT:npif:sof1 com
application Center
(Comments and Subtniss:cinsj
Contact app|icat;onsi§m-=tpie soft cmfi
application Center
(Comments and Subtniss:cinsj
Contact app|icat;onsi§m-=tpie soft cmfi
for General Inquiritf!:
for General Inquiritf!:
Human Resources
(F'esurne £иЬт«$;сп$) Cc-rrtaci hr@rrap!esoti .cor?
Human Resources
(F'esurne £иЬт«$;сп$) Cc-rrtaci hr@rrap!esoti .cor?
WMeriou Maple Inc.57 &b Street West Waterloo, Crrtano Canada N21.6C2WMeriou Maple Inc.57 &b Street West Waterloo, Crrtano Canada N21.6C2PuEic Relations(Media and Reviewers)Contact pfes$@mzDle$uft comPuEic Relations(Media and Reviewers)Contact pfes$@mzDle$uft com
WMeriou Maple Inc.
57 &b Street West Waterloo, Crrtano Canada N21.6C2
WMeriou Maple Inc.
57 &b Street West Waterloo, Crrtano Canada N21.6C2
PuEic Relations
(Media and Reviewers)
Contact pfes$@mzDle$uft com
PuEic Relations
(Media and Reviewers)
Contact pfes$@mzDle$uft com
1-800-267.6563Phone: +1 (519j 747-23731-800-267.6563Phone: +1 (519j 747-2373Business Development
1-800-267.6563
Phone: +1 (519j 747-2373
1-800-267.6563
Phone: +1 (519j 747-2373
(Potential Partnership Opportunties)
Рис. 2.43. Web-страница корпорации Waterloo Maple с контактными данными
Обзор источников информационной поддержки
Наиболее полный обзор источников информационной поддержки Maple можно получить с web-страницы, представленной на рис. 2.44. Она загружается щелчком на гиперссылке Maple Links, присутствующей на многих web-страницах корпорации Waterloo Maple.
С этой страницы можно попасть на страницы с различными источниками информационных ресурсов для Maple и web-сайты, им посвященные. К примеру,
в сентябре 2001 г. на этой странице присутствовала ссылка на новый российский сайт Донецкого государственного университета, посвященный системе Maple (начало ссылки можно заметить внизу страницы на рис. 2.44, если перейти в ее конец с помощью полосы прокрутки). *
■注 Maple Application Center - Microstrft Internet Exploiei
,Фнaш * "0 口虫 他曲曲 由材辎Зинн0弟懒《" 启*睜*昌尊*昼,Фнaш * "0 口虫 他曲曲 由材辎Зинн0弟懒《" 启*睜*昌尊*昼厘:細髄注j胤 http.//www.rnapleapps.com/'maplelinks/'sh_resources.htm!厘:細髄注j胤 http.//www.rnapleapps.com/'maplelinks/'sh_resources.htm!(,К -.,・5・(,К -.,・5・'■Соп(:''|Ьй1ё йп ApnhcatioriMaple PowertoolsNhat's Me^Mspls LinhsЛ'еЬ?;Э ^sthML. YiewerStia'e Library .AppUpd^Ies Newsletter Can(ac.t S'■Соп(:''|Ьй1ё йп ApnhcatioriMaple PowertoolsNhat's Me^Mspls LinhsЛ'еЬ?;Э ^sthML. YiewerStia'e Library .AppUpd^Ies Newsletter Can(ac.t S6M&T S kPWAft<XJT USPRC'OUCT 1NFOF7<-!ATIC)NSALESSUPPORTPUEiLiCATIONSCAREERSPRESS ROOM八%;?t can M^pfe 方e for m??6M&T S kPWAft<XJT USPRC'OUCT 1NFOF7<-!ATIC)NSALESSUPPORTPUEiLiCATIONSCAREERSPRESS ROOM八%;?t can M^pfe 方e for m??MAI^ WLB SITE, < :MAI^ WLB SITE, < :Maple Resources and Web Sites
,Фнaш * "0 口虫 他曲曲 由材辎Зинн0弟懒《" 启*睜*昌尊*昼
,Фнaш * "0 口虫 他曲曲 由材辎Зинн0弟懒《" 启*睜*昌尊*昼
厘:細髄注j胤 http.//www.rnapleapps.com/'maplelinks/'sh_resources.htm!
厘:細髄注j胤 http.//www.rnapleapps.com/'maplelinks/'sh_resources.htm!
(,К -.,・5・
(,К -.,・5・
'■Соп(:''|Ьй1ё йп Apnhcatiori
Maple Powertools
Nhat's Me^
Mspls Linhs
Л'еЬ?;Э ^sthML. Yiewer
Stia'e Library .AppUpd^Ies Newsletter Can(ac.t S
'■Соп(:''|Ьй1ё йп Apnhcatiori
Maple Powertools
Nhat's Me^
Mspls Linhs
Л'еЬ?;Э ^sthML. Yiewer
Stia'e Library .AppUpd^Ies Newsletter Can(ac.t S
6M&T S kPW
Aft<XJT US
PRC'OUCT 1NFOF7<-!ATIC)N
SALES
SUPPORT
PUEiLiCATIONS
CAREERS
PRESS ROOM
八%;?t can M^pfe 方e for m??
6M&T S kPW
Aft<XJT US
PRC'OUCT 1NFOF7<-!ATIC)N
SALES
SUPPORT
PUEiLiCATIONS
CAREERS
PRESS ROOM
八%;?t can M^pfe 方e for m??
MAI^ WLB SITE, < :
MAI^ WLB SITE, < :
InterngtiGnal MfiOif; Webf.ites
Maple in MMh5mt#cs Education
* M^ple AoBlicstioni
,Newsgroups art」Oiscusiion Groiips
Mspl^ Publications
Moplf: IfiChniCii: Support
Mote №<sp伶 Links
C-raphics & G施к
,Reteai ch &зим S Project?
Maple Tijionate
Last update May 2001. Piesse !•闯口 us ke&pttiese up-to-date
Intefnaltottul Maple WebsUws
FUlssinn
Рис. 2.44. Страница с обзором источников информационной поддержки Maple
Модернизация системы
Хотя Maple 7 — тщательно проработанная система, у нее могут быть отдельные неточности в работе — как говорится, «и на Солнце есть пятна». Эти недоработки устраняются с помощью специальных patch-файлов, которые можно найти в разделе Support сайта фирмы (рис. 2.45). На этой странице необходимо заполнить небольшую анкету, в которой следует указать ваши контактные данные.
Загрузка patch-файлов осуществляется аналогично описанной выше загрузке пакетов-библиотек. Patch-файлы обычно помещают в основную директорию системы Maple и запускают — все необходимые для модернизации системы действия выполняются автоматически. Примерно так же можно загружать файлы библиотек Maple 7. Это позволяет в течение долгого времени поддерживать качество работы программы на самом высоком уровне, не покупая новых версий.
厘 Maple AppUpdates - Fiee Subscription Foim - Microsoft Intemet Exploief
j“$, http://www.mapleapps com/commi m«^ appupdate s shtmlj“$, http://www.mapleapps com/commi m«^ appupdate s shtml$ О&ВД ▼飞弋春□ G @氏4 儻冲畸吟摊0 Журная (2T卷"錚呼▼国$ О&ВД ▼飞弋春□ G @氏4 儻冲畸吟摊0 Журная (2T卷"錚呼▼国Contnfaufe ?tn AppiiostionMspls P0W6rt0Q!5 fAtarw Ne、“ >Maple Lir*3*№bEQ MsthML View电Shaie Library1 oriTact UsContnfaufe ?tn AppiiostionMspls P0W6rt0Q!5 fAtarw Ne、“ >Maple Lir*3*№bEQ MsthML View电Shaie Library1 oriTact UsMaple AppUpdates - Free Subscription FormThank you for your interest in the Maple Application Center.Subscribe to be added to "汜 u-rri»;l d^biMdgn hst that v“:|| inform Jiiemhers when reque'swd New Appiicsrtioni posledMaple AppUpdates - Free Subscription FormThank you for your interest in the Maple Application Center.Subscribe to be added to "汜 u-rri»;l d^biMdgn hst that v“:|| inform Jiiemhers when reque'swd New Appiicsrtioni posled•MEAT'S NE=WASOUT LISPRODUCT INFORMA TK>NSALESSUPPC-RTPLOJCATIONSPRESS ROOMCARERSCONTACT US•MEAT'S NE=WASOUT LISPRODUCT INFORMA TK>NSALESSUPPC-RTPLOJCATIONSPRESS ROOMCARERSCONTACT USE-M&MF irst Namehast HamaCompanyTitleE-M&MF irst Namehast HamaCompanyTitle6由卽 can Maple Do fci me?6由卽 can Maple Do fci me?MA!N WL8 Sir6 -.MAPU SHJOLNICtNtlRRLGISHftPROOUCfMA!N WL8 Sir6 -.MAPU SHJOLNICtNtlRRLGISHftPROOUCfPieese Select Vour Categories of Interest:歹 AllГ"Maple Tc-GlsI Comr'iuriicatior.s厂MathematicsC Dota Aral/sis.fSta:s厂ScienceГ~ EcanoiriicsjFin Eng厂Scrtworw DevelopmentPieese Select Vour Categories of Interest:歹 AllГ"Maple Tc-GlsI Comr'iuriicatior.s厂MathematicsC Dota Aral/sis.fSta:s厂ScienceГ~ EcanoiriicsjFin Eng厂Scrtworw DevelopmentРис. 2.45. Страница модернизации системы Maple 7Рис. 2.45. Страница модернизации системы Maple 7Галерея графикиДаже предшествующие версии системы Maple обладали обширными графическими возможностями. Новая версия Maple 7 имеет просто потрясающие воображение возможности по созданию графичсских изображений. Для доступа к галереям графики (а их множество как в фирме Waterloo Maple, так и в ряде университетов) надо щелкнуть на гиперссылке Graphics&Galleries па web-странице, изображенной на рис. 2.44. Появится страница со списком галерей графики, на которой можно выбрать подходящую.Ниже представлена страница галереи графики корпорации Waterloo Maple (рис. 2.46). Она содержит множество красочных картинок цветных графиков, полученных средствами Maple. На рис. 2.46 представлено лишь начало галереи, вам стоит просмотреть эту страницу и дальше.Важно отметить, что разработчики сайта приводят не только сами графики (их созерцание многим доставляет удовольствие), но и возможность загрузить коды (программы) на языке Maple 7, выполнение которых создает выбранный график. Изучение таких программ позволяет учащимся разобраться в ряде весьма тонких алгоритмов современной машинной графики, описание которых (из-за большого объема) трудно найти в учебниках.Галерея графикиДаже предшествующие версии системы Maple обладали обширными графическими возможностями. Новая версия Maple 7 имеет просто потрясающие воображение возможности по созданию графичсских изображений. Для доступа к галереям графики (а их множество как в фирме Waterloo Maple, так и в ряде университетов) надо щелкнуть на гиперссылке Graphics&Galleries па web-странице, изображенной на рис. 2.44. Появится страница со списком галерей графики, на которой можно выбрать подходящую.Ниже представлена страница галереи графики корпорации Waterloo Maple (рис. 2.46). Она содержит множество красочных картинок цветных графиков, полученных средствами Maple. На рис. 2.46 представлено лишь начало галереи, вам стоит просмотреть эту страницу и дальше.Важно отметить, что разработчики сайта приводят не только сами графики (их созерцание многим доставляет удовольствие), но и возможность загрузить коды (программы) на языке Maple 7, выполнение которых создает выбранный график. Изучение таких программ позволяет учащимся разобраться в ряде весьма тонких алгоритмов современной машинной графики, описание которых (из-за большого объема) трудно найти в учебниках.
j“$, http://www.mapleapps com/commi m«^ appupdate s shtml
j“$, http://www.mapleapps com/commi m«^ appupdate s shtml
$ О&ВД ▼飞弋春□ G @氏4 儻冲畸吟摊0 Журная (2T卷"錚呼▼国
$ О&ВД ▼飞弋春□ G @氏4 儻冲畸吟摊0 Журная (2T卷"錚呼▼国
Contnfaufe ?tn Appiiostion
Mspls P0W6rt0Q!5 fAtarw Ne、“ >
Maple Lir*3
*№bEQ MsthML View电
Shaie Library
1 oriTact Us
Contnfaufe ?tn Appiiostion
Mspls P0W6rt0Q!5 fAtarw Ne、“ >
Maple Lir*3
*№bEQ MsthML View电
Shaie Library
1 oriTact Us
Maple AppUpdates - Free Subscription Form
Thank you for your interest in the Maple Application Center.
Subscribe to be added to "汜 u-rri»;l d^biMdgn hst that v“:|| inform Jiiemhers when reque'swd New Appiicsrtioni posled
Maple AppUpdates - Free Subscription Form
Thank you for your interest in the Maple Application Center.
Subscribe to be added to "汜 u-rri»;l d^biMdgn hst that v“:|| inform Jiiemhers when reque'swd New Appiicsrtioni posled
•MEAT'S NE=W
ASOUT LIS
PRODUCT INFORMA TK>N
SALES
SUPPC-RT
PLOJCATIONS
PRESS ROOM
CARERS
CONTACT US
•MEAT'S NE=W
ASOUT LIS
PRODUCT INFORMA TK>N
SALES
SUPPC-RT
PLOJCATIONS
PRESS ROOM
CARERS
CONTACT US
E-M&M
F irst Name
hast Hama
Company
Title
E-M&M
F irst Name
hast Hama
Company
Title
6由卽 can Maple Do fci me?
6由卽 can Maple Do fci me?
MA!N WL8 Sir6 -.
MAPU SHJOLNICtNtlR
RLGISHftPROOUCf
MA!N WL8 Sir6 -.
MAPU SHJOLNICtNtlR
RLGISHftPROOUCf
Pieese Select Vour Categories of Interest:
歹 AllГ"Maple Tc-Gls
I Comr'iuriicatior.s厂Mathematics
C Dota Aral/sis.fSta:s厂Science
Г~ EcanoiriicsjFin Eng厂Scrtworw Development
Pieese Select Vour Categories of Interest:
歹 AllГ"Maple Tc-Gls
I Comr'iuriicatior.s厂Mathematics
C Dota Aral/sis.fSta:s厂Science
Г~ EcanoiriicsjFin Eng厂Scrtworw Development
Рис. 2.45. Страница модернизации системы Maple 7
Рис. 2.45. Страница модернизации системы Maple 7
Галерея графики
Даже предшествующие версии системы Maple обладали обширными графическими возможностями. Новая версия Maple 7 имеет просто потрясающие воображение возможности по созданию графичсских изображений. Для доступа к галереям графики (а их множество как в фирме Waterloo Maple, так и в ряде университетов) надо щелкнуть на гиперссылке Graphics&Galleries па web-странице, изображенной на рис. 2.44. Появится страница со списком галерей графики, на которой можно выбрать подходящую.
Ниже представлена страница галереи графики корпорации Waterloo Maple (рис. 2.46). Она содержит множество красочных картинок цветных графиков, полученных средствами Maple. На рис. 2.46 представлено лишь начало галереи, вам стоит просмотреть эту страницу и дальше.
Важно отметить, что разработчики сайта приводят не только сами графики (их созерцание многим доставляет удовольствие), но и возможность загрузить коды (программы) на языке Maple 7, выполнение которых создает выбранный график. Изучение таких программ позволяет учащимся разобраться в ряде весьма тонких алгоритмов современной машинной графики, описание которых (из-за большого объема) трудно найти в учебниках.
Галерея графики
Даже предшествующие версии системы Maple обладали обширными графическими возможностями. Новая версия Maple 7 имеет просто потрясающие воображение возможности по созданию графичсских изображений. Для доступа к галереям графики (а их множество как в фирме Waterloo Maple, так и в ряде университетов) надо щелкнуть на гиперссылке Graphics&Galleries па web-странице, изображенной на рис. 2.44. Появится страница со списком галерей графики, на которой можно выбрать подходящую.
Ниже представлена страница галереи графики корпорации Waterloo Maple (рис. 2.46). Она содержит множество красочных картинок цветных графиков, полученных средствами Maple. На рис. 2.46 представлено лишь начало галереи, вам стоит просмотреть эту страницу и дальше.
Важно отметить, что разработчики сайта приводят не только сами графики (их созерцание многим доставляет удовольствие), но и возможность загрузить коды (программы) на языке Maple 7, выполнение которых создает выбранный график. Изучение таких программ позволяет учащимся разобраться в ряде весьма тонких алгоритмов современной машинной графики, описание которых (из-за большого объема) трудно найти в учебниках.
Maple Graphics Gallety - Miciosoft Inteinel ExploieiMaple Graphics Gallety - Miciosoft Inteinel Exploiei£|ММС I司 http:/'/lwww.mapleapps.com/lcategoF>Bs/graphtc$/lgallefy/lacgfdphic$gallefy.$html£|ММС I司 http:/'/lwww.mapleapps.com/lcategoF>Bs/graphtc$/lgallefy/lacgfdphic$gallefy.$htmlIWaterloo MwpleIWaterloo Mwple■io Appticati»» Coftter■io Appticati»» CoftterЙлрЙ Soofcs J frest Tria* V&rsionЙлрЙ Soofcs J frest Tria* V&rsionPieese Скчле A CategoryPieese Скчле A Category•R£GI斗代我 PR6DUC&•R£GI斗代我 PR6DUC&OUSCK LNK5OUSCK LNK5i'Ve incite you to downlead the M^le code used tn generate th?$e araahics and eYpenmet#i'Ve incite you to downlead the M^le code used tn generate th?$e araahics and eYpenmet#<z*|eomE t。the Ma^le C-^aph-cs G&ll^tv, ac exhtlirtiop or Maple Waphics. ranging ifom tunota: piois Io m^tb^matical 3tt.<z*|eomE t。the Ma^le C-^aph-cs G&ll^tv, ac exhtlirtiop or Maple Waphics. ranging ifom tunota: piois Io m^tb^matical 3tt.AMAT'S ZFWA&QUT USPKODUCI iMFORMATiGNAMAT'S ZFWA&QUT USPKODUCI iMFORMATiGNSUPPORT ^USLlC<XT|ON3PP-^GS ROOMCAREERS•石NT&b и?SUPPORT ^USLlC<XT|ON3PP-^GS ROOMCAREERS•石NT&b и?Choose,:,gifaphics cuiegcry by clrcRin^ rr any 0f !he sampleChoose,:,gifaphics cuiegcry by clrcRin^ rr any 0f !he sample;4ca;土 ЬеЮ'л Afgtr'vtots ate hcMdid в the Acimmracs ia應;、,,:我JCAPHILSthe firstcafe^:>(v ksHd;G A I L L R Y;4ca;土 ЬеЮ'л Afgtr'vtots ate hcMdid в the Acimmracs ia應;、,,:我JCAPHILSthe firstcafe^:>(v ksHd;G A I L L R YThe C;r^pHG5 Calery r> aiv^sys k№k『心 for ne、* en;“ea Sftnil us ycur 卜丸jraphres at applrcahons@rri^plf-f oft corn.The C;r^pHG5 Calery r> aiv^sys k№k『心 for ne、* en;“ea Sftnil us ycur 卜丸jraphres at applrcahons@rri^plf-f oft corn.■ <.en5t.fcrj*e ян eppbeete": Maple F'3w₽ttei«f.■ <.en5t.fcrj*e ян eppbeete": Maple F'3w₽ttei«f.3PAz и3PAz и飆州S興缭*發犠懇鑫飆州S興缭*發犠懇鑫Рис. 2.46. Галерея графики корпорации Waterloo MapleРис. 2.46. Галерея графики корпорации Waterloo Maple
Maple Graphics Gallety - Miciosoft Inteinel Exploiei
Maple Graphics Gallety - Miciosoft Inteinel Exploiei
£|ММС I司 http:/'/lwww.mapleapps.com/lcategoF>Bs/graphtc$/lgallefy/lacgfdphic$gallefy.$html
£|ММС I司 http:/'/lwww.mapleapps.com/lcategoF>Bs/graphtc$/lgallefy/lacgfdphic$gallefy.$html
IWaterloo Mwple
IWaterloo Mwple
■io Appticati»» Coftter
■io Appticati»» Coftter
ЙлрЙ Soofcs J frest Tria* V&rsion
ЙлрЙ Soofcs J frest Tria* V&rsion
Pieese Скчле A Category
Pieese Скчле A Category
•R£GI斗代我 PR6DUC&
•R£GI斗代我 PR6DUC&
OUSCK LNK5
OUSCK LNK5
i'Ve incite you to downlead the M^le code used tn generate th?$e araahics and eYpenmet#
i'Ve incite you to downlead the M^le code used tn generate th?$e araahics and eYpenmet#
<z*|eomE t。the Ma^le C-^aph-cs G&ll^tv, ac exhtlirtiop or Maple Waphics. ranging ifom tunota: piois Io m^tb^matical 3tt.
<z*|eomE t。the Ma^le C-^aph-cs G&ll^tv, ac exhtlirtiop or Maple Waphics. ranging ifom tunota: piois Io m^tb^matical 3tt.
AMAT'S ZFW
A&QUT US
PKODUCI iMFORMATiGN
AMAT'S ZFW
A&QUT US
PKODUCI iMFORMATiGN
SUPPORT ^USLlC<XT|ON3
PP-^GS ROOM
CAREERS
•石NT&b и?
SUPPORT ^USLlC<XT|ON3
PP-^GS ROOM
CAREERS
•石NT&b и?
Choose,:,gifaphics cuiegcry by clrcRin^ rr any 0f !he sample
Choose,:,gifaphics cuiegcry by clrcRin^ rr any 0f !he sample
;4ca;土 ЬеЮ'л Afgtr'vtots ate hcMdid в the Acimmracs ia應;、,,
:我JCAPHILSthe firstcafe^:>(v ksHd
;G A I L L R Y
;4ca;土 ЬеЮ'л Afgtr'vtots ate hcMdid в the Acimmracs ia應;、,,
:我JCAPHILSthe firstcafe^:>(v ksHd
;G A I L L R Y
The C;r^pHG5 Calery r> aiv^sys k№k『心 for ne、* en;“ea Sftnil us ycur 卜丸jraphres at applrcahons@rri^plf-f oft corn.
The C;r^pHG5 Calery r> aiv^sys k№k『心 for ne、* en;“ea Sftnil us ycur 卜丸jraphres at applrcahons@rri^plf-f oft corn.
■ <.en5t.fcrj*e ян eppbeete": Maple F'3w₽ttei«f.
■ <.en5t.fcrj*e ян eppbeete": Maple F'3w₽ttei«f.
3PAz и
3PAz и
飆州S興缭*發犠懇鑫
飆州S興缭*發犠懇鑫
Рис. 2.46. Галерея графики корпорации Waterloo Maple
Рис. 2.46. Галерея графики корпорации Waterloo Maple
Библиотека Share Library
В развитии систем класса Maple принимают участие не только специалисты корпорации Waterloo Maple и ее партнеры, но и специалисты со всех стран мира. Это научные работки, преподаватели н студенты ^шиверситетов и вузов разного профиля и просто любители математики и различных сфер ее приложения. Их усилиями создана уникальная библиотека Share Library — подлинный кладезь интересных примеров применения систем класса Maple.
Доступ к библиотеке открывает гиперссылка Share Library, имеющаяся на многих web-страницах, приведенных выше, — например, на рис. 2.44. Начальная страница библиотеки представлена на рис. 2.47.
Предусмотрены две возможности использования библиотеки: установить ее целиком на жесткий диск или перейти в режим использования только некоторых примеров. Библиотека занимает сотни Мбайт памяти на диске и содержит множество примеров для уже устаревших версий систем Maple. Поэтому переписывать библиотеку целиком едва ли целесообразно. Страница с началом перечня разделов библиотеки (тематический каталог) представлена на рис. 2.48. Помимо показанных на странице рис. 2.48 разделов по применению Maple и по математическим расчетам имеются и другие разделы, в том числе по примерам в области образования.
M i l; Application Centei - Mictosofi Internet Exploiei
*3 QR«>«C6;
http://www.mapleapp$.comZpackage$/whathappenedto$hafe html
"證i)资灾匕噱f
::СбШйй!е:ап' AppOitih'
/Mi^iePijv/ertcois :;
-■•vbat's f<tew^
Maple Links
UJebEQ MathML Viewer
Share иЪгвгу
AppUpc4tfts Navv“eth?r
Contact Us
What Happened to tlie Maple Share Libraiy?
The Share tewa-y has always been an excefent resource of user-suomittec code that ha.; comp后merited Maple's basic fundionaiity g new and『ccvative wa/s h th? past, &s a измсе to our users, Waterloo Mapls № provided the Shaie library on CD 91the product box, with the csveM that d is nd pa>1 o“》e product and not supposed by 卄个 romginy
Download the complete Share iibrary.
WHAi'S f>£W
ABO.门 US
PRODUCT ZFCRJVUGGN
SALK
SUPPORT CWUCATIQNS
CAREERS
PRHS ROOM
Search lar ridivnAia^ Share “achsjsis by n^me.
Indtv:d-.r7il Snare packages are cow located icth"卜 corresponding catsgohes in the
Арр!©徴in Cenler (Fs example, the coxpoty "iare aackage on characteristic pogon&is of the ccxeter matrix of quMer ciassest* now in Hie Applicatii^i Centei irder the category M^themsrtics/Cotnbinfitorcs)
With №6加电 8, the comfiany (г^йе i!ie cf^cisior- io tracker the contents oHh-з 5%>兄纟 1:Мз* to the Maple ApMcatm Center for three reasons:
^'hat can M»ple ;9 fcr me ?
狱出MWEB*躅爵彖
Overth+last /ear,tkie Api?iicalienCentet has become th-з place io--ustrsto
*」bmit Map沁 wmksh9ftts and code 1 c*:en? logic国 Ihs! pas: submestor吟 ‘;hcz:" аз appear there
Tne Web has became th® de fact。deliverv mechanism ter :esaurc^ oi !his nature
RtG!SY£R PRODUCE;:證
|MAP^:'#UCLMtC-£mtR::
because it is so quick 匕 publish "風ei词 and и&г;р н таМапе"
, F*、can premme Марк? uaers' wo" much mon? t、ff*rt"吋y HirjU^h 卄由 Application СегЛэг, highlighting the benefits af the use af Shwe пЬгэгу tucctms 皿十加门 ptacuca cunteNs There 区伪 aiso rjtfiar sromohaiai vehicles Kiel 貿x:i c»Hhe Application Center, such 8± the AppUpdate-s cbfevvsieiter 0nd the M^r;k; Reporter
Рис. 2.47. Начальная страница библиотеки Share library
1^1 Maple Applicidion Center ~ Microsoft Internet Exploier
史鹹л ЙП^ечй gm Клбрйну ESP" Справа
;iS®&W:・j❾ htlp7/'www.ma[^eapps.cDm/'map!eHiS/'code_find_fexLhtm!
戸 OHfCKttNKS
■Cflfftrihtite4iiAr.ifj!tC'9twn 而大区 Powertools Vest's New?
Maple Unhs
代E0EG M,#hM1. V吟 ear
Share Librarv
AppUp«stes New,-slitter CeEact Us
The Maple Code Library - Finding Entries
Ri owst below or use the £M> у Index or Author Index
Application Areas
Mathematics
VVHATf NEW ASOUTUS
PRCCXT INFORMATION
SALES
SLPFORT PUBLICATIGNS CA«E-L«S
PRtSS ROOM
Mat can Mopte Do for me?
MAIN WEB
续階曲ERPR8U5
^MAPLESWDENT CENTER
諱 柒学吗""•■*
• Aitr-aiomy & Astrophysics
• Biology & MwJksne
• Chemislry & Chemical EngKieemig
Circu8 Design
Cornrrunicstion & Stgriai Processing
Computer Akied Design & Manufacturing
Computer Science -
Control Systems
« Econondcs & finance
Electrical & Hectronlc Engineering
Ete№omagr>elics
Gerwaf Erigkwering
Heat & Thermodynanics
• Algebra
• AnaiYsi*
• CatcukJS
• Combr,atofics & Graph Theory
• Different!»! EquatiOTis
• Geometry
• 5oi4)Theory
• Line» Algette & Matricee
♦ Number Thway
• Numerics
• Recrealionw Me№
♦ Statistics & F^obabiity
• Vector CafcUus
-• MsceBaneom М«№«пмйс«
談
Поддержка MathML 2.0
Выход на web-страницу поддержки MathML
MathML — это специальны!! язык представления математической информации. Основное достоинство данного языка — то, что он является мировым стандартом и поддерживается большинством разработчиков математических систем (Maple, Mathcad, Mathematica и др.) и браузеров. В результате появляется возможность записи сложных математических выражений и графиков в очень небольшом по объему текстовом формате. По сути, он похож на язык XML, адаптированный для представления математической информации.
Корпорац11я Waterloo Maple дает возможность подключить к браузерам л Maple 7 средства поддержки языка MatliML. Для этого достаточно щелкнуть на гиперссылке WebEQ MathML Viewer (см. рпс. 2.44, например). Откроется специальная страница с подробным описанием возможностей MathML (рис. 2.49).
I Untitled Document - Micro*ofl intern^ Емркнег
ВНазаа,:ВНазаа,:” О 口 位 険%^ 由Кайрзнноф О^данал (йт 卷”昌彎▼ &:” О 口 位 険%^ 由Кайрзнноф О^данал (йт 卷”昌彎▼ &:号侬fj&cJ^J liHp.Z/www.maplesoft.com/standards/MathMLZinfo.html号侬fj&cJ^J liHp.Z/www.maplesoft.com/standards/MathMLZinfo.html"3 Wm^Mwav"3 Wm^Mwav
ВНазаа,:
ВНазаа,:
” О 口 位 険%^ 由Кайрзнноф О^данал (йт 卷”昌彎▼ &:
” О 口 位 険%^ 由Кайрзнноф О^данал (йт 卷”昌彎▼ &:
号侬fj&cJ^J liHp.Z/www.maplesoft.com/standards/MathMLZinfo.html
号侬fj&cJ^J liHp.Z/www.maplesoft.com/standards/MathMLZinfo.html
"3 Wm^Mwav
"3 Wm^Mwav
•:嫁零<:Mm&:,Ai4M<4)№ 金•:嫁零<:Mm&:,Ai4M<4)№ 金
•:嫁零<:Mm&:,Ai4M<4)№ 金
•:嫁零<:Mm&:,Ai4M<4)№ 金
I Waterloo Maple
Welcome to Waterloo Maple's MathML Home Page
last updated June 1, 2001
风第一及总论.总金!;狂 1之7..,:辿?®一生:J屯住曲R
Download 也巳‘固T〉EQ !4aiKML.yiewEf £Кг.к!ар1е 7
◎曲生3£抬及工R且£3?p.Р更上梃f世电1工
What is MathML 2.0?
Maple 7 supports MathML 2 0, an emerging communications standard sponsored by the World ~Wi&e ¥『eb Ccnsophuin (W3C) for representing and interpreting mathematical expressions, including their display in Web pages. MathML is an extension of HTML '
Maple's MathML support will allow users to export Maple 7 output expressions and worksheets as MathML-enriched Web pages This provides more memory-efficient Web display than previous versions of Maple, which exported Maple output expressions as .gif images. As more companies adopt the MathML standard in the future, M冲le will eventually be able to translate documents and expressions produced by other mathematical software products.
Рис. 2.49. Страница поддержки языка MathML
MathML лишь начинает внедряться, поэтому мы ограничимся здесь лишь описанием средств поддержки этого языка. С помощью страницы, представленной на рис. 2.48, можно ознакомиться с MathML более подробно.
Загрузка средств поддержки MathML
Для загрузки средств поддержки MathML достаточно щелкнуть на гиперссылке Download WebEQ MathML Viewer for Maple 7, которая видна на рис. 2.49. Появится начальная страница Мастера установки WebEQ MathML Viewer, показанная па рис, 2,50,
Waterloo MapleWaterloo Maple負RYXMClMfi МАГХКМАГ1С*負RYXMClMfi МАГХКМАГ1С*
Waterloo Maple
Waterloo Maple
負RYXMClMfi МАГХКМАГ1С*
負RYXMClMfi МАГХКМАГ1С*
Install WebEQ for Maple
To avoid delays wdiile the Math Viewer applet downloads, install WebEQ for Maple. You will cache a copy of tlie MatliML Viewer Java class files in уош- 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
si史ed to ensure that you are caching authentic, sal.9把M$e率吵方雎个_嚕itin就疝ем急г yow rsi史ed to ensure that you are caching authentic, sal.9把M$e率吵方雎个_嚕itin就疝ем急г yow r|^| Imtall MaltML Viewei? - Micioscrft iMeinet Exploiet|^| Imtall MaltML Viewei? - Micioscrft iMeinet ExploietI Waterloo MapleI Waterloo MapleAOvANCWtl M4TZ*M*t,VaAOvANCWtl M4TZ*M*t,VaAlternatively, select one of the bnks below:-Internet Explorer 5 or liiglierWindows users click here to install the MathML ' you need to have both Java and JavaScript enableMacintosh users must install manually On hdfL JAR archive to your local disk. A good place to p Internet Explorer, select Edit, select Preferences classpathIn all cases, restart your browser;Alternatively, select one of the bnks below:-Internet Explorer 5 or liiglierWindows users click here to install the MathML ' you need to have both Java and JavaScript enableMacintosh users must install manually On hdfL JAR archive to your local disk. A good place to p Internet Explorer, select Edit, select Preferences classpathIn 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.觎郸 iniJ^ttaitqft觎郸 iniJ^ttaitqftMoTHnfesMoTHnfesThe MathML Viewer is digitally signed for your secuntyThe MathML Viewer is digitally signed for your secunty
si史ed to ensure that you are caching authentic, sal.
9把M$e率吵方雎个_嚕itin就疝ем急г yow r
si史ed to ensure that you are caching authentic, sal.
9把M$e率吵方雎个_嚕itin就疝ем急г yow r
|^| Imtall MaltML Viewei? - Micioscrft iMeinet Exploiet
|^| Imtall MaltML Viewei? - Micioscrft iMeinet Exploiet
I Waterloo Maple
I Waterloo Maple
AOvANCWtl M4TZ*M*t,Va
AOvANCWtl M4TZ*M*t,Va
Alternatively, select one of the bnks below:-
Internet Explorer 5 or liiglier
Windows users click here to install the MathML ' you need to have both Java and JavaScript enable
Macintosh users must install manually On hdfL JAR archive to your local disk. A good place to p Internet Explorer, select Edit, select Preferences classpath
In all cases, restart your browser;
Alternatively, select one of the bnks below:-
Internet Explorer 5 or liiglier
Windows users click here to install the MathML ' you need to have both Java and JavaScript enable
Macintosh users must install manually On hdfL 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.
觎郸 iniJ^ttaitqft
觎郸 iniJ^ttaitqft
MoTHnfes
MoTHnfes
The MathML Viewer is digitally signed for your secunty
The MathML Viewer is digitally signed for your secunty
Рис. 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),
~、黑1《衣泰八6、KJgw*舐咬》
嗓 侍 tfl 愈艮》«* ^Избранное 0*декм
iWatEoo Maple
3 3k*
3
AtW4**OX« MQZ*:“A*y»
:嘲:>ЫиЪКхЛ»»4Ъч
"洽 зй>«хГ
Now Installing WebEQ for Maple
As you read this page, WebEQ for Maple is being di will be prompted for permission to install it to your .
традупреждекие а безапасносгн
Я
Once the installation is finished, verify that WebEQ
v- \4x■"游*h:;
нэдвгейй прйвйЕйна с помощи Thmtfs i
& Giaspm-wMg. тяуйкнр»専 改
Хотите 共твнгеигь и сьвтсоднть '"W-aJbMLVift w« hsts#': подпнс-<*ь*4>й 24 05 Й1 ^ЗРираегчхктрэ^йемый::
£hum,sh№: %4蜘匕oMaateWU'flttpW蜀W $sto5fl?W^& седвЬМмЕвта ^пед№ 押•(Мфалир爾勺- ида яреюмз1т>нв^¥ cqfiepifBMoe “《^冷他。^^; /пи «ям дм 即 яете %'^»咖 挞 vpITg
~改《Г >&>§*& (侬-кеьш^1
:隱繳後遂綴&緣綴尊綴卷滋綫徽窯成綴修遂蕊黛繆
1]
Рис. 2.51. Предупреждение системы безопасности о начале установки MathML Viewer
Рис. 2.53. Завершение установки MathML Viewer
Тестирование MathML Viewer
После завершения установки рекомендуется завершить работу браузера и даже перезапустить компьютер (у автора без этого MathML Viewer не заработал). После этого надо вернуться на страницу поддержки средств MathML и провести тестирование, щелкнув на гиперссылке Test Page. Если все в порядке, то в конце этой короткой страницы появится математическая формула, представленная на рис. 2.54.
Рис. 2.54. Страница тестирована MathML Viewer
Если установка прошла неудачно, то вместо контрольной формулы будет виден серый прямоугольник. В этом случае надо проанализировать причины неудачи и попробовать повторить установку снова. Надо прямо сказать, что больти^®0
пользователей не слишком много потеряют, если откажутся от установки MathML Viewer или потерпят при ней неудачу.
Использование средств MathML
Детальное описание использования средств MathML выходит за рамки данной книги. Поэтому ограничимся ссылкой на страницу How to Export Maple 7 output to MathML (Как экспортировать документы Maple 7 в формате MathML), Начало этой страницы представлено на рис. 2.55,
| ^| http://www.inaplesQfl.com/standaids/MathMLZinfo.htinl - Microsoft Internet Exploier
^^ад npq#*-e ^^ ММр^мное t^etiS £hp<^a
Вн3緬I,◎ 口 0 ^Поиск ^Избранно6 ®*дам* 应* 孟”串婷"向
④.http:/兀w/v:m:3ple$Q“com/$tand3fd$/MathML/inl6htm|#nUo'击卜戸^^口色^*?^;::.
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 vzdl be asked to enter the name ot the HTML file and the location to save this hie After entering this information, you will have several options tor the version oEMathML 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 vour browser does not support MathML. vou will shll be able to view the mathematical expressions in the Web page because cfa technology embedded in Maple 7 called WebEQ. developed bv Design Science Inc WebEQ invokes a MathML viewer that displays each Maple output in the Web page as an applet If WebEQ is not currentlv installed on vour system the MathML viewer gets invoked over the Internet. This can cause some slight delays when opening tlie HTML file To avoid these delays, vou can mst風 the "wc?>EQ hfatfRE Viewer permanently on '/sir mactuiM
Individual Maple ex]>resssions
You can also export individual Maple expressions as MathML strings If the expression is named expr . then enter the tollowing command,
> MathhdL-Export^ expr ).<
This will produce a string containing the MathML representation ot the Maple expression. To list the string in nice, tabmdented 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),
♦ nporpseNb; А.&.Пзрхно♦ nporpseNb; А.&.ПзрхноЖК)«31МЗ»2“:м:те43::bblЖК)«31МЗ»2“:м:те43::bblСм, также:а期小zx:пр-где-п 0уж&х” ии"士口汕и:心 Ь4н”е:См, также:а期小zx:пр-где-п 0уж&х” ии"士口汕и:心 Ь4н”е:
♦ nporpseNb; А.&.Пзрхно
♦ nporpseNb; А.&.Пзрхно
ЖК)«31МЗ»2“
:м:те43::bbl
ЖК)«31МЗ»2“
:м:те43::bbl
См, также:
а期小zx:
пр-где-п 0уж&х” и
и"士口汕и:心 Ь4н”е:
См, также:
а期小zx:
пр-где-п 0уж&х” и
и"士口汕и:心 Ь4н”е:
Maple - одна из наиболее популярных систем символьных вычислений; обладающая:й
превосходной научной графикой. Символьный анализатор MAPLE V исполь?уется в сньемах Metlab, Mathced, MATH Office и других.::嘲
КР分工^向0630?:中&-3^е;1图;:;::::::闻
В данном разделе Вы найдете::注
• Maple 7 : новости от компании SoftLme;
♦ f^apie б I hgeC'^th ст t-омпзкии So'tLine;:Й
♦ (-.hhi'y Б.М.Манзона "Maple V Power Edition", являющуюся кратким руководством пользователя математического пакета Maple V Power Edition (версия 4). Книга будет полезна всем, кто изучает математику или нспспьзует ее б своей работе;:й|
♦ Zapte Essential". On-fme Tour;:阂
♦ программы А.А.Ларина. разложение функции в ряд Фурье, исследование функции с 寫 помощью производной, нахождение вь,четов функции^ приведение к каноническому внду уравнения кривой второго порядка и др.;承
появились 2 новые программы;
информацию о Центре применений ^apte;
?п!'сок рисскся5ычной п“тепзтурь:, посвященной работе в среде пакета Maple, с указаниями на сетевые магазины, в которых ее можно приобрести,
а также электронный вариант книги Г.Прохорова, В.Колбеева, К.Желноеа; М.Леаенева "Мате^йтгчесгий пакет Р:・зр1е V Release 4 Руководство посьзс-Бат-5пя".: ■
С<Н1утс1йуш(ц><1? рйэд(гльгх
♦ В разделе Методичесгке р$зраЬ,зткн размещены методические разработки: Cpeqer Функции. Непрерывность. Метппмиес:;:“е указанна к прагт^иескмЕ ?с1кя"иям по теме "МАРLE В КУР::Е МАТЕМАТИЧЕСКОГО АН&ПМЗа и Дчффер^наир^е^н.!^ функций Метоапте,:к>1е оказания к срзгтнческмк =анот”им по теме "MAPLE В КУРС9 МАТЕМАТИЧЕСКОГО АНАПИЗА/“ Курс Пекин口 "К&знтсБ5я механика с М〃口 1е",
В разделе Пoлeзнt^^e сазпг.н можно найти ссылки на ресурськ Internet (s основном,画
Рис* 2.56. Начальная страница сайта www.exponenta.ru
На этой странице, в частности, имеется подборка литературы по данным системам, включая учебные пособия и примеры применения (рис. 2.57). Нетрудно заметить, что список этой литературы достаточно велик, что свидетельствует об интересе читателей к этому программному продукту.
Среди упомянутой литературы можно найти и упоминание книги автора, посвященной предшествующей версии системы — Maple 6 (рис. 2.58). Эта книга издана издательством《Питер》в 2001 г.
Российский сайт Донецкого университета
Прекрасно оформленный сайт, посвященный Maple, создан Донецким университетом. Его начальная страница по стилю копирует начальную' страницу корпорации Waterloo Maple, но с русскоязычными гиперссылками (рис. 2.59).
Этот сайт дает достаточно полное представление об информационной поддержке Maple. Это вйдно уже из главной страницы, посвященной описанию Центра применений систем Maple (рис. 2.60). На ней имеются ссылки на десятки разделов, посвященных таким применениям.
htlu /Zwwt4 expifnent 1 iu/soft/M«ink /m iplf bm;k dip Miu“ olt IntMiiet [ xpl«xei
' W*J ^*1* 4,^sftMMtoB Сдрж $црмт‘
-"・у • Q " к ^ -- *s . -,«<^ Jr,” ■孰•“ г
Mp«f<Thtlp://www.exponenla.tu/sott/Maple/mdple_book asp
*^^ &4*&喊¥«**#>:»*m易(k* t Sto* i Й 4*S vx * t**w
8*・「МзНаЬ I M>s diced I MdjSe ] Mathematics I Statistrce ] Д rj у гм ft пакеты •:•:*:“
了…mt0m就-кпасе二FFrmiwcz E 网尹q*”tK $ Be-« 為й齡.
f^^^W塞^^廳修扌^^^^^^%絞I
♦ Мзрк V Р〃2ЕГ
Maple
W,M Мзхзо”
♦舛6pk &$f;f;tidlf On-
・ ^ipc?pa»Hbi
А А .Ларина
♦ uiet'Tp n口xxe“GK匕不
♦ СЛИСОК русскоязычной литературы
|См. также:
;• методически?'
1|л§тнып 5 * j ”
♦ **' В.Аладьев, М.Богдявичюс. Maple 6; Решение математических, стати этических и инженерно-физических задач. Лаборатория Базовых Знаний. 2001. Аммл^л^чя.
♦ *' В.Говорунин, В.Цибулин, Компьютер в матемагическом исследовании: Maple, MATLAB, LaTeX. Питер. 2001. 々ххитзиня www piter,cam
♦ "' В .Дьяконов. Maple 6. Учебный курс. Питер. 2001. Агхозина. www,books ги
♦ В .Дьяконов, Компьютерная математика, Теорий и практика. Нол ид ж, 2000. Аммс.тгция, wew.bocks.ru, ww吨,krrowMdqeju
♦ А.Матросов. Maple 6. Решение задач высшей математики и механики. БХВ-Петербург. 2001. www.hibiic-globiis.r(.i, w^yj.bocks.ru
♦ В.Ападьев, Шишаков. Автоматизированное рабочее место математика. Лаборатория базовых знаний. 2000, Gzxragz; www.biblic-gicbus.ru
♦ В .Дьяконов. Магематическая система Maple V. Солон. 1998. ww^.books.ru
・ Г.Прохоров, В,Коп6еев, К.*епнов, М.Леденев. Математический пакет Maple V Release 4: Руководство псльзоватепя. Калуга: Обпиздат. 1998. •?сектр&*",и”1 &амзЕ
♦ В.Говорухин, В.Цибулин. Введение в Maple. Математический пакет для всех. Мир.1997,
Рис. 2.57. Раздел сайта www.exponenta.ru, посвященный русскоязычной литературе по системам Maple
'里滋* ^реекв 要旭乳эбранкое Са^ис Справка;
、娛碌轴-、' 0 D (3 裂国恤 住)tMi滩餌1g酬*娜d* 0-礬"留胧"@
ESQ
х^ЙЙМ]司 http:〃www exponenta fu/educatZnews/dyai'oriov/'mapleE/'book^dyak asp
鑑纷@網總线姦緩鱒儼翟дй
?2Wg匕…L』g堂W'」]№&口沧]Mjthem%r.;c5 ; Statiitici
АннЬгаШ:й книги B;h^is«RdM0Bai"Mapie:5i'iW
:^,пЙ:;^^г1й^р<^^-вЙЖ:-К<ЙЙ^:<<и^
Вниманию преподавателей, научных работников, аспирантов, студентов!
Аннотация книги
Maple 6
f趣
Учебный курс по одной из самых мощных и популярных систем компьютерной математики Maple 6, Эта новейшая система в диалоговом режиме решает огромное число математических задач, от простых расчетов и чнслемного моделирования до сложнейших аналитических преобразованнн и вычисленнй. В книге подробно рассматриваются удобный интерфейс системы, ее огромные вычислительные возможностн, мощные графические средства, встроенный язык программирования. Впервые описана работа с Maple в сети Интернет. Особое внимание уделено внзуалнзаиии вычислений н полноте опнсання системы. Для научных работников, преподавателей университетов и вузов, сгулвнтов и всех пользователей, интересующихся автоиатизаиней иетеметических вычислений.
■I
рис. 2.5д« Книга на системе Мацй € ма сайте www毋冷onentaw
^w|^ http //www mapler dnu dn u«/
鹏跚嬲臨嘛戛耳&U nc” " mi
%3№£
Рис. 2.59. Начальная страница сайта Донецкого госуниверситета, посвященная системам Maple
Welcome tu Wateiloo Meple Inc - Microsoft Internet Exptorei
方话Q W确険@M6P扈
Waterk)o Ma
d ^VtMOX I
C^wwv % Абитуриевду
<^Цонтр:Лрй^йййййй-М^й1^|<й^^ ^:<';.;::-.»ерй1й.^^:&::;^р^л^1^-;'^^^
длястрвнСНГ.'
Шнтр ЗбСеммМьЙ ⑥ 6*erftv^ieiitti5компьютерной м»гемвтияи( хранмлии^:::жив1ях решений вкЛец^х задач;:::不
ИатематжескиЙ Практикум
рЛ ho<ne2 - Miciotofl Internet ExplMCf
空эйл iJw^w Е* 1Й?йр**й>в Сзр?«? Сл№г》
<5зН«ад. •»:
爹肉图 @睇邮⑨Mg»H^0極饰 0"參"曙額"团
:海tfM,豊]httpd/www.mag1 dnu dn.ua/home2 him
I 3" *« …WHh
*| ^Пйреки;
ПОДЛИСКА KA НОВО,您
MAPtF Т*» HF
ТУР НОВИЧКА
HCBhlf ПРХНЕНМ1
I АЬ ГОЗЛАВАТЬ РАННЫ ГТУПШЧГкЬИИ 1”НГР
КАК ПРИСН1ПАГЬ PAMMhl
MAPI F "САЙТЫ
吟X近我対
巒1*J必敌汕m 錚經後
ПРЮ(. КОМНАТА
HVbflMhAUMM
也《1必吧
■^hqvrorqityy “屍掇圈舉缀龈麼然缔^將身
Объективности ради надо ошетить, что ссылка на многие разделы попросту отправляет пользователя к просмотру соответствующих разделов сайта корпорации Waterloo Maple. Но есть немало разделов, содержащих интересную и важную информацию по системам Maple и их применению. Важно, что создатели этого сайта не ограничились описанием только работ Донецкого госуниверситета, но и дали объективную информацию по применению систем класса Maple как за рубежом, так и в России. В качестве примера можно привести отражение на этом сайте книг по системам Maple, опубликованным на русском языке (рис. 2.61).
Рис. 2.61. Страница сайта Донецкого госуниверситета, посвященная русскоязычным книгам по Maple
Maple в карманном компьютере
Maple — довольно громоздкие программы, хотя им далеко до MATLAB, уже занимающих на жестком диске компьютера объем около 1-1,5 Гбайт. Поэтому особый интерес вызвало сообщение о том, что несколько урезанная версия системы Maple размещена в ПЗУ карманного компьютера Cassiopeia А22Т известной своими миниатюрными изделиями фирмы Casio (рис. 2.62).
Этот помещающийся на ладони компьютер работает под управлением операционной системы Windows СЕ. Благодаря размещенной в ПЗУ программе Maple компьютер может выполнять сложные математические расчеты с удобствами, которым позавидует любой пользователь обычного компьютера. Ведь эту малышку можно^взять и на дачу и на пляж, не беспокоясь о сети Электропитания и даже о зарядке акку^ляторных батарей — питается компьютер от обычных миниатюр-
ных гальванических элементов, причем одной их зарядки хватает на многие десятки часов работы.
|^jA22T ♦ Ca*$iooeia Comtniter Extender ~ Micro^oftlntemet Е*о1зег 〔二 ; -- : ' 〔 「 趣牌碑
j 空确外 gp^a Вид 教odpaHHg Серено Справка
j ФНазад ▼ 6 ▼鑑目 Й1 ; @Пм& 由W$i陪Htse 0Журнад j 0-,卷干昌 ST ▼国
▼] ^Перехоа:▼] ^Перехоа:關攤^径j http:77www.casio.corn7personalpcs/product.cfm?section=20Srproduct=1739Ь(1|$р1ау=
▼] ^Перехоа:
▼] ^Перехоа:
餐^銀曝胃热в ^^^审the u^sxpgcud 汉篡书餐^銀曝胃热в ^^^审the u^sxpgcud 汉篡书PERSONALPERSONALBUSINESS T EDUCATION TmYACCOJNT^BUSINESS T EDUCATION TmYACCOJNT^㈠к衣它J二:\\[;#\「t兰)3 斗 A22T Cassiopeia Cumpirter ExtenderК^ 飞寧戸6 . ,, q *"UM""1131mli•“ ㈠к衣它J二:\\[;#\「t兰)3 斗 A22T Cassiopeia Cumpirter ExtenderК^ 飞寧戸6 . ,, q *"UM""1131mli•“ 强?賓無懒强?賓無懒F*0F*0A^SdbtllA^SdbtllPRODUCTS 卜PRODUCTS 卜麻:、二" иж^^ш麻:、二" иж^^шА22ТА22Т$446.95$446.95电收电收
餐^銀曝胃热в ^^^审
the u^sxpgcud 汉篡书
餐^銀曝胃热в ^^^审
the u^sxpgcud 汉篡书
PERSONAL
PERSONAL
BUSINESS T EDUCATION TmYACCOJNT^
BUSINESS T EDUCATION TmYACCOJNT^
㈠к衣它J二:\\[
;#\「t兰)3 斗 A22T Cassiopeia Cumpirter Extender
К^ 飞寧戸6 . ,, q *"UM""1131mli•“
㈠к衣它J二:\\[
;#\「t兰)3 斗 A22T Cassiopeia Cumpirter Extender
К^ 飞寧戸6 . ,, q *"UM""1131mli•“
强?賓無懒
强?賓無懒
F*0
F*0
A^Sdbtll
A^Sdbtll
PRODUCTS 卜
PRODUCTS 卜
麻:、二" иж^^ш
麻:、二" иж^^ш
А22Т
А22Т
$446.95
$446.95
电收
电收
л
© 机 нырнет
Рис. 2.62. Web-страница фирмы Casio с рекламой карманного компьютераCassiopeia А22Т со встроенной системой Maple
Вид экрана компьютера при работе с системой Maple представлен на рис. 2.63. Нетрудно заметить, что, как и в случае с «большими» «братьями» Maple, работа происходит с использованием традиционных для Windows окон и выпадающих меню. Естественно, что, учитывая малые размеры экрана у миниатюрного компьютера, полного совпадения в интерфейсе пользователя все же нет.
?而一面让 %c6on7hjt卜 a!够]酶j:/j殮.?而一面让 %c6on7hjt卜 a!够]酶j:/j殮.Copy to Entry LineCopy to Entry LineCtrl+ECtrl+E> (diff(f(> (diff(f(引山小m±1:Expression『市叫引山小m±1:Expression『市叫;jJV;jJVf(x)f(x)Solve Differentia! EquationsSolve Differentia! EquationsApproximate Simplify Evaluate SolveApproximate Simplify Evaluate Solve|「4^ r& x>| ?"日 1% I 厶i i z产Je.止茎7.望T t».? )1「. i蠶」X .理¥ .三J 3三d生」纟丄“点J|「4^ r& x>| ?"日 1% I 厶i i z产Je.止茎7.望T t».? )1「. i蠶」X .理¥ .三J 3三d生」纟丄“点J
?而一面让 %c6on7hjt卜 a!够]酶j:/j殮.
?而一面让 %c6on7hjt卜 a!够]酶j:/j殮.
Copy to Entry Line
Copy to Entry Line
Ctrl+E
Ctrl+E
> (diff(f(
> (diff(f(
引山小m±1:Expression『市叫
引山小m±1:Expression『市叫
;jJV
;jJV
f(x)
f(x)
Solve Differentia! Equations
Solve Differentia! Equations
Approximate Simplify Evaluate Solve
Approximate Simplify Evaluate Solve
|「4^ r& x>| ?"日 1% I 厶i i z产Je.止茎7.望T t».? )1「. i蠶」X .理¥ .三J 3三d生」纟丄“点J
|「4^ r& x>| ?"日 1% I 厶i i z产Je.止茎7.望T t».? )1「. i蠶」X .理¥ .三J 3三d生」纟丄“点J
^Й^Дм»* ¥ fif^agigpeiii」工 £1. 一:、^Й^Дм»* ¥ fif^agigpeiii」工 £1. 一:、”」4碌丄二..♦,,*:—.孑由宙g:53PM”」4碌丄二..♦,,*:—.孑由宙g:53PM
^Й^Дм»* ¥ fif^agigpeiii」工 £1. 一:、
^Й^Дм»* ¥ fif^agigpeiii」工 £1. 一:、
”」4碌丄二..♦,,*:—.孑由宙g:53PM
”」4碌丄二..♦,,*:—.孑由宙g:53PM
Рис. 2.63. Вид экрана компьютера Cassiopeia А22Т при работе с системой М@№
Рисунок 2.64 показывает, как этот компьютер лихо справляется с аналитическим решением дифференциального уравнения.施ы, его экран настолько мал, что на нем не помещается само уравнение — видно лишь его решение. Это служит, пожалуй, главным утешением пользователям обычных компьютеров — ыа больдшх экранах их мониторов при работе с Maple можно наблюдать куда больше информации и в цвете.
е"e "旅Action日。t卜:口|窟|騒|:、f" 同 Xl 用/] 巽
dXf(D = В> dsolve(Ansi,{f(X)})Ans2 := £(X)=exp(3 X) (3 exp(1) + 1)-3 exp(X) + exp⑶dXf(D = В> dsolve(Ansi,{f(X)})Ans2 := £(X)=exp(3 X) (3 exp(1) + 1)-3 exp(X) + exp⑶Expression [Plot j
dX
f(D = В
> dsolve(Ansi,{f(X)})
Ans2 := £(X)=
exp(3 X) (3 exp(1) + 1)
-3 exp(X) +
exp⑶
dX
f(D = В
> dsolve(Ansi,{f(X)})
Ans2 := £(X)=
exp(3 X) (3 exp(1) + 1)
-3 exp(X) +
exp⑶
罡8沁1 J隔謳"仰 Q齡減36協 i,产・皆9:54 而"包
Рис. 2.64. Пример работы с аналитическими вычислениями
Есть у этого компьютера и средства для работы с графикой — увы, тоже не цтзст- ной. Рисунок 2.65 показывает построение трехмерного графика функции двух переменных.
Рис. 2.65. Пример построения графика функции двух переменныхРис. 2.65. Пример построения графика функции двух переменных
Рис. 2.65. Пример построения графика функции двух переменных
Рис. 2.65. Пример построения графика функции двух переменных
Самым удивительным является стоимость такого компьютера. Она (правда, не для наших студентов и преподавателей вузов) сравнительно невелика и составляет около $450 (см. рис. 2.62). Несомненно, что такой компьютер — прекрасный помощник студенту, преподавателю и научному работнику, всерьез занимающемуся повседневными вычислениями. Полученные при этом результаты можно перенести на обычный компьютер, что снимает некоторые ограничения на объем и сложность решаемых задач, обусловленные меньшей памятью миниатюрного компьютера. Остается лишь отметить, что в какой-то степени альтернативой (увы,
заметно более дорогой) является установка вполне полноценной версии системы Maple на портативный компьютер класса notebook. Это может быть и новейшая версия Maple 7, описанная в данной книге.
Что нового мы узнали?
В этом уроке мы научились:
О Использовать контекстную справку.
О Работать со справочной системой.
О Входить в Интернет.
О Загружать из Интернета средства поддержки MathML.
А также познакомились с:
О Web-сайтом фирмы Waterloo Maple Software.
О Информационными ресурсами Интернета.
О Российскими сайтами, посвященными Maple.
Работа с файлами и документами
Операции с файлами
Печать документов
Редактирование документов
Операции вставки
Операции форматирования
Операция внедрения в секцию
Операция выведения из секции
Работа с объектами
Операции с файлами
Система Maple работает с документами в стиле notebooks («блокноты» пли «записные книжки»). Как было показано в уроке 1, документы содержат текстовые и формульные блоки, результаты вычислений, графики разного типа и другие компоненты. Документы могут готовиться с нуля или существовать в готовом виде — подготовленные кем-то ранее. Хранятся документы на внешних устройствах памяти в виде файлов. Файлом называют имеющую имя упорядоченную совокупность данных, размещенную па том или ином носителе — обычно на жестком, гибком или компакт-диске.
В Maple 7 используются файлы различных форматов, который указывается расширением файла (знак * означает произвольное имя файла):
О *.ms — 4)айлы документов для систем с графическим интерфейсом (Windows/ Macintosh);
О *.msw — файлы документов (Worksheets);
О *.txt — текстовые файлы (включая формат Maple-текст);
О *(tex — файлы и формате LaTeX;
О *jnd и *Jib — файлы библиотек;
О *.т — файлы внутреннего Maple-языка.
Файлы документов содержат все необходимые данные для правильного отображения содержимого документа в окне редактирования с указаниями координат расположения блоков, фактического содержания и характера выполняемых one- раций, форматов предоставления информации и т. д. Таким образом, файл со держит кроме текста, отображаемого на рабочем листе, специальные команды, адресованные Maple, аналогично файлам HTML, имеющим теги, предназначен- пые для интерпретации браузером.
Предусмотрена возможность записи документов и в особом формате LaTeX, предназначенном для создания книг и статей по математике. Текстовые файлы (с расширением .txt) можно просматривать, и редактировать текстовыми редакторами, работающими с ASCII-кодировкой.
Важно отметить, что даже при записи документов со сложными рисунками используется не прямая запись их растровой или векторной копии, а сохранение данных для построения графиков. Поэтому размеры файлов Maple 7 невелики и их легко передавать по современным средствам телекоммуникаций, например по сети Интернет. Они требуют небольшого свободного пространства на дисках для записи. Тем не менее, чем сложнее график, содержащийся в документе, тем больше объем памяти, необходимой для хранения файла. Помимо обычных операций
по работе с файлами (запись на диск и загрузка с диска) предусмотрены возможности распечатки документов принтерами различного типа.
Меню File
Меню File содержит основные операции для работы с файлами документов (рис. 3,1).
Рис. 3.1. Меню File и пустое окно нового документа
Меню содержит ряд операций, разбитых на группы. В первую группу входят следующие операции по работе с документами (в скобках приведены горячие клавиши):
О New (Ctrl+N) — создать новый документ;
О Open (Ctrl+O) — открыть существующий документ;
О Open URL — открыть tJRL-адрес;
О 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 дублируется кнопкой со значком в виде чистого листа, размещенной на панели инструментов. Разумеется, нажать ее вы сможете, только если панель инструментов выведена на экран.
Открытие документа
ХИЧ4Нй«Ш [l^apirwoTsheerХИЧ4Нй«Ш [l^apirwoTsheerКоманда Open служит для открытия созданного ранее документа. Вначале открывается диалоговое окно выбора файла (рис. 3.2). Для быстрого доступа к команде служит значок в виде открывающейся папки на панели инструментов.
ХИЧ4Нй«Ш [l^apirwoTsheer
ХИЧ4Нй«Ш [l^apirwoTsheer
Открытие Файла
□蜉㈠卜曰e
d ®j^] oJBral
;*| 3d3$tyle m$
3 Contbai.ms
M Esymbol m$
® Giaphics 族
卷 3d3style
习 D3solve ms
hid
同 Ge.ms
令4 Аза
㈣ Demol ms
Fsolve
回 Gtoftub.m;s
& Аааз
国 DemolOms
④ G3dpa(.m$
;叫 Hyplink m;|
阈 Atylot.ms
岡 Dilintrns
?蜀 G knot, ms
為IM о谒
④ Collect
3 D solve ms
匐 Gp(oc m$
磯IM3
闺 Conhoid-m$
卷Ef
1
蔺 Gpfod.ms
⑨ Intclos.ms 滚:
Отмена
Рис, 3,2. Окно открытия документа
В окне Открытие файла вам нужно найти нужный файл, а затем дважды щелкнуть на его имени или на кнопке ОК. Данное окно — пример единых диалоговых окон для всех приложений Windows,
Maple 7 — далеко не первая нз версий системы компьютерной алгебры. Каждая очередная версия может иметь модифицированные элементы Maple-языка. Поэтому иногда возникает проблема частичной несовместимости документов, подготовленных в разных версиях системы Maple, Разработчики системы по мере возможностей учли это и предусмотрели автоматическое определение версии Maple, в которой был создан документ. Если выбранный документ был сохранен в старой версии программы, то перед его загрузкой появляется окно, представленное на рис. 33
Рис. 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*旧де ' '/倒础闻面圃;
Matfix d3 Г'
Lj BooksCjOld@d4
;;3 CuePenkov@ dinf
g 启。口 Powtool
::iJ E"§ SyrupS
^超 Examples尊 d1
;2j Luth通 d2
0:,渺8m陈母0:,渺8m陈母旌мя Фай/»、|j
0:,渺8m陈母
0:,渺8m陈母
您 Wl#4rtffifc*:qMapieWorksheei
Рис. 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).
Maple?
a
The worksheet FemZW has been рюсШЗ
Ooyauwii^losflyeilb^ar^cfosirtig'?:
Рис. 3.5. Диалоговое окно, появляющеесяпри закрытии модифицированного документа
Следует помнить, что каждое окно, будучи сложным графическим объектом, занимает определенный и вовсе не мальп! объем памяти. Поэтому команда Close является эффективным средством освобождения оперативной памяти, особенно когда закрывается большой документ. Однако надо помпить, что бывшие в нем определения (например, значения переменных, введенные функции пользователя и т. д.) сохраняются в памяти, даже когда документ закрыт, естественно, пока вы не дадите команду restart.
Быстро закрыть документ можно, нажав клавиши Ctrl+F4.
Запись настроек программы
Для записи сделанных настроек Maple в меню File предусмотрены две команды: Save Settings и Auto Save Settings. Последняя команда — это флажок, при установке которого новая настройки Maple будут записгяваться автоматически при завершении работы.
Выход из системы
Команда Exit служит для выхода из Maple. Тогда при использовании операции Exit можно наблюдать последовательное исчезновение окон документов. Если
пользователь забыл записать какой-либо документ на диск, система сообщит об этом, выдав запрос. Нужно ответить Yes (Да), если документ нужно сохранить, и No (Нет), если сохранение не требуется. Однако стоит сохранить документы, подвергавшиеся редактированию и модификации, заранее — вдруг вы по ошибке нажмете не ту кнопку.
Не следует применять команду Exit, если вам необходимо временно переключиться в окно другой программы, так как повторная загрузка Maple занимает много времени.
Печать документов
Команда Print
Команда Print служит для печати документа. Она имеет кнопку с изображением принтера на напели инструментов для быстрого доступа.
После того как отдана команда Print, появляется диалоговое окно, показанное на рис. 3.6, — стандартное окно печати в Windows.
Печать
0w前半;
|НР LaserJet 5L?gT|НР LaserJet 5L?gT
|НР LaserJet 5L?gT
|НР LaserJet 5L?gT
■ Сос-пзчнме? Я1ыбрйнп&»)М13'Тча«ий,Г1?з'£да-氾:旣麻冷冷签W;:雖瞌籲尊:醛坛注:農^^这彥^М LPC:Заметка■ Сос-пзчнме? Я1ыбрйнп&»)М13'Тча«ий,Г1?з'£да-氾:旣麻冷冷签W;:雖瞌籲尊:醛坛注:農^^这彥^М LPC:Заметка:二:撿i筵金:簽療!:二:撿i筵金:簽療!
■ Сос-пзчнме? Я1ыбрйнп&»)М13'Тча«ий,Г1?з'£да-
氾:旣麻冷冷签W;:雖瞌籲尊:醛坛注:農^^这彥^
М LPC
:Заметка
■ Сос-пзчнме? Я1ыбрйнп&»)М13'Тча«ий,Г1?з'£да-
氾:旣麻冷冷签W;:雖瞌籲尊:醛坛注:農^^这彥^
М LPC
:Заметка
:二:撿i筵金:簽療!
:二:撿i筵金:簽療!
/ gwcrpaHtwF/ gwcrpaHtwF;缈;m тон*;缈;m тон*
/ gwcrpaHtwF
/ gwcrpaHtwF
;缈;m тон*
;缈;m тон*
OKOK0办彩hз:0办彩hз:「C^saweyta g fl' ' ' 発改]§§■哀
OK
OK
0办彩hз:
0办彩hз:
BiBiiiiBiiiBiiiiiiHii
Рис* 3.6. Окно печати
Нажатие кнопки Свойства в окне печати открывает окно свойств выбранного принтера. Вид окна зависит от типа принтера, функции его элементов достаточно очевидны, поэтому мы воздержимся от обсуждения работы с ним.
Таким образом, в списке вверху окна печати прежде всего следует установить принтер. Можно просто оставить установленный по умолчанию. В диалоговом окне также можно указать диапазон страниц для печати и число копий, а также установить флажок для разбора страниц по копиям. В целом диалог с компьютером при осуществлении операции печати прост и нагляден.
Предварительный просмотр страниц
Даже одна страница документа может не поместиться на экране монитора. Поэтому перед печатью полезно просмотреть расположение элементов документа на странице. Для этого служит команда Print Preview, которая выводит окно с изображением текущей страницы (рис. 3.7).
Рис. 3.7. Предварительный просмотр страницы, предназначенной для печати
У окна просмотра имеется ряд элементов управления. Прежде всего это полосы прокрутки для перемещения изображения документа в окне просмотра. Кроме того, имеется ряд кнопок, назначение которых указано ниже:
О Print — печать просматриваемого документа;
О Prev. Page — просмотр предыдущей страницы многостраничного документа;
О Next Page — просмотр следующей-етраницы многостраничного документа;
О Sngl. Page — просмотр одной полной страницы;
О Dbl. Page — просмотр двух полных страниц:
О 100% — установка масштаба в 100 %;
О Zoom In и Zoom Out — увеличений и уменьшение масштаба;
О Done — завершение работы с окном предварительного просмотра.
Использование команды Print Preview может сэкономить не один лист чистой бумаги и картридж краски.
Установка параметров принтера
ВВПечать документов — одна из основных функций любой среды подготовки документов. В общем случае она предполагает установку параметров принтера. Для этого служит команда Printer Setup, приводящая к открытию диалогового окна, показанного на рис. 3.8.
В
В
[Настройка принтера
iHP.LasefJet 5LPCLiHP.LasefJet 5LPCL
iHP.LasefJet 5LPCL
iHP.LasefJet 5LPCL
:Сеоалкив. ВЬ咖нпозмо2т:£ств
j1HE仲“》М啾馳也
Замвту*с-
:бумага :.f^we 两:бумага :.f^we 两Opwwrai^w 八Opwwrai^w 八Пададж:Пададж:?|аТ21о7297г»1?|аТ21о7297г»1;|Верхний поток;|Верхний потокЯЯГ 良льбсмнвя;Г 良льбсмнвя;
:бумага :
.f^we 两
:бумага :
.f^we 两
Opwwrai^w 八
Opwwrai^w 八
Пададж:
Пададж:
?|аТ21о7297г»1
?|аТ21о7297г»1
;|Верхний поток
;|Верхний поток
Я
Я
Г 良льбсмнвя;
Г 良льбсмнвя;
Рис. З.В. Диалоговое окно настройки параметров принтера
Следует отметить, что вид этого окна будет варьироваться в зависимости от принтера и может существенно отличаться от приведенного на рисунке. Однако большинство параметров, которые требуют пользовательского вмешательства, очевидны.
Редактирование документов
Меню 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 it Redo имеют кнопки (с изображением стрелок) на панели инструментов для быстрого доступа к себе.
Перенос объекта в буфер обмена
Команда Cut копирует выделенный объект в буфер обмена и удаляет его из документа. Выделить объект или группу объектов можно, обведя его мышью при нажатой левот! кнопке. Можно также использовать клавиши перемещения курсора при нажатой клавише Shift. Выделенный фрагмент отмечается черным фоном и инверсией цвета входящих в него символов (на рис. 3.9 выделена первая строка).
Графические объекты не инвертируют свои цвета при выделении, к тому же их можно вырезать и копировать, когда на них находится маркер ввода.
Вырезанный командой Cut объект поступает в буфер обмена, а его изображение в окне редактирования исчезает. Эта команда выполняется также комбинагщя- мп клавиш Shift+Del и Ctrl+X (в зависимости от пастроек операционной системы). На рпс. 3.10 показан результат выполнения команды Cut — видно исчезновение выделенного на предыдущем рисунке фрагмента в документе.
Рис. 3.10. Документ с рис. 3.9 после выполнения команды Cut
Щелчок левой кнопкой мыши за пределами выделенных объектов снимает все выделения.
Копирование объекта в буфер
Комнада Сору аналогична Cut, но с одним Существенным отличием — выделенный объект (или блок объектов) не удаляется в окне редактирования. Эта команда обычно используется в том случае, когда нужно перенести заданный объект в другое место, сохранив при этом оригинал, — продублировать объект.
Особенно полезна операция Сору при составлении документа из частей других документов, в том числе страниц справочной системы Maple (рис. 3.11). Пере-
ключаясь между окнами с помощью команд Сору и Paste, описанных ниже, можно с легкостью составить достаточно большой документ, не написав ни строки.
> diff(sin(x)12,箕};> diff(sin(x)12,箕};> Tnt(exp(i[> Демонстрация работы с системой Maple 7> Tnt(exp(i[> Демонстрация работы с системой Maple 7园 Maple 7园 Maple 7« Untitled [3} - [Senrei 1]« Untitled [3} - [Senrei 1]2 sm(x) cos(x)2 sm(x) cos(x)> iiit (l/s;q:rt (1- жЛ2) ;x-0. . I》-•> iiit (l/s;q:rt (1- жЛ2) ;x-0. . I》-•1 飭雙 a$s. Bjt-es; 3,(33M女vahbfet 】、隔J1 飭雙 a$s. Bjt-es; 3,(33M女vahbfet 】、隔J£te 酬企w |田1 Ffi^at、”,一、ййюп? VJitxfow 丛麻、''
> diff(sin(x)12,箕};
> diff(sin(x)12,箕};
> Tnt(exp(i[> Демонстрация работы с системой Maple 7
> Tnt(exp(i[> Демонстрация работы с системой Maple 7
园 Maple 7
园 Maple 7
« Untitled [3} - [Senrei 1]
« Untitled [3} - [Senrei 1]
2 sm(x) cos(x)
2 sm(x) cos(x)
> iiit (l/s;q:rt (1- жЛ2) ;x-0. . I》-•
> iiit (l/s;q:rt (1- жЛ2) ;x-0. . I》-•
1 飭雙 a$s. Bjt-es; 3,(33M女vahbfet 】、隔J
1 飭雙 a$s. Bjt-es; 3,(33M女vahbfet 】、隔J
山撞闯騒圈ЁМ S3 №Я М Ёh © F№1国囤回
国困依卄I射
Рис. 3.11. Пример переноса выделенной в одном документе строки в окно другого документаРис. 3.11. Пример переноса выделенной в одном документе строки в окно другого документаВ данном случае титульная надпись, удаленная командой Cut, перенесена в другой, пустой, документ.
Рис. 3.11. Пример переноса выделенной в одном документе строки в окно другого документа
Рис. 3.11. Пример переноса выделенной в одном документе строки в окно другого документа
Перенос и копирование объектов перетаскиванием
В Maple 7 имеется возможность переноса объектов из одного окна в другое методом перетаскивания (Drag and Drop). Для этого на группу выделенных объектов надо навести указатель мыши и при нажатой левой кнопке начать перенос объектов в новое место или новое окно. Отпустив левую кнопку мыши, можно наблюдать перенос объектов на новое место. Если все время держать нажатой клавишу Ctrl, то переносимый блок объектов будет сохранен и на старом месте.
Копирование в буфер обмена в формате Maple-текста
Команда Copy As Maple Tfext используется в тех случаях, когда необходимо, чтобы скопированная в буфер информация была представлена в текстовом формате. При этом в буфер копируются выражения как из строк ввода, так и строк выво-
да — все в текстовом формате. Используя в этом случае команду Paste можно вывести из буфера все выражения как из входных, так и из выходных строк в текстовом формате (рис. 3.12).
|[3 Maple 7
ЛКП"ЛКП"В Untitlrd |Б) - (Seivei 1}В Untitlrd |Б) - (Seivei 1}Дегюнстрация работы с сиспДегюнстрация работы с сисп11
ЛКП"
ЛКП"
В Untitlrd |Б) - (Seivei 1}
В Untitlrd |Б) - (Seivei 1}
Дегюнстрация работы с сисп
Дегюнстрация работы с сисп
1
1
£ siii(x)£ siii(x)
£ siii(x)
£ siii(x)
Рис. 3.12. Пример использования операций Copy as Maple Text и PasteРис. 3.12. Пример использования операций Copy as Maple Text и Paste> int {.!./sqrt fl -x‘ 2) , 5Г---0 - . i.):> int {.!./sqrt fl -x‘ 2) , 5Г---0 - . i.):;、liit (exp (-1) /t ^ ( 7 /3) z t -0 , . infiiiityj .;、liit (exp (-1) /t ^ ( 7 /3) z t -0 , . infiiiityj ..infinity.infinityexp《“t》exp《“t》> value(n):> value(n):00j tsw as*物沁"s磔断,a<n蝠健工踰;j tsw as*物沁"s磔断,a<n蝠健工踰;
Рис. 3.12. Пример использования операций Copy as Maple Text и Paste
Рис. 3.12. Пример использования операций Copy as Maple Text и Paste
> int {.!./sqrt fl -x‘ 2) , 5Г---0 - . i.):
> int {.!./sqrt fl -x‘ 2) , 5Г---0 - . i.):
;、liit (exp (-1) /t ^ ( 7 /3) z t -0 , . infiiiityj .
;、liit (exp (-1) /t ^ ( 7 /3) z t -0 , . infiiiityj .
.infinity
.infinity
exp《“t》
exp《“t》
> value(n):
> value(n):
0
0
j tsw as*物沁"s磔断,a<n蝠健工踰;
j tsw as*物沁"s磔断,a<n蝠健工踰;
Обратите внимание, что графическое представление интеграла в строке вывода превратилось в его отображение в текстовом формате. То же имеет место в отношении представления производных, сумм, произведений и т. д. Обратите также внимание на то, что текстовый комментарий в данном случае выводится стандартным шрифтом. Атрибзгты (признаки) стиля, цвета н размера символов теряются.
Вставка из буфера обмена в документ
Команда Paste копирует содержимое буфера обмена, помещенное туда командами Сору или Cut, в место, указанное маркером ввода. При этом сохраняются форматы всех объектов документа, если они были скопированы (рис. 3.13).
Как видно из рис. 3.13, возможно применение этой операции не только в пределах окна одного документа, но и при переносе данных из одного окна в другое. Надо отметить, что При копировании в буфер обмена математической формулы из ячейки вывода я вставке ее в строку ввода формат формулы меняется —она автоматически превращается в текстовое выражение. Это иллюстрирует рис. 3.14.
exHaw^iotf oioHtfo йгеййй мх&电卜修 си mMtil^ #йи#«о(!1га<п« dawndu *$*•■ *з.*
工¥ …0^3 ' (£/T) "4/《3-)d:KW»》:NXI
,У”6八工пс
<
<
<
:j < у * п”4з,тих (Y)Sg (Y)呼 乙
Z d|deiM нона丄знз э iqioged нипе(11энопэЦ
mw»^^w^^^»^^s3ss
~ .回画 回 回过豆囹回e е0 l<d工匕f 1[旧i匐就]1号回麻俄mi
3加加醐
3)sed и Adoj “Mhedsuo иинЕзоЕчиоиэи dswxdu •£[,£ -anj
gsst中*Y ‘ HQQ门脸 哪 窝*1扌
О
,' G.)◎П口А
<
? 0г
8,
У £/工)•/* S””*?》"I 工
⑴
<
(T '・0kX' U..x-у) ^Jbs/T)^UT
<
必共2K〃x「・OQ …〉/£> 以… И««) i'U <
<
1и
иомэ1эиэ э Rioted киПе(11эномаЦ
IM®*«S1 ts) радаип @|
,.'("尸»"Y u/> <
e|dr|Ai иоиахэиэ э moged иипедхэноняи |
回同n国王I匠石P*
仿fi? к附图*
е 邮 ек£
2^[ аохнэиЛяоУ эинеаос^иххеЪГэ^
Различные варианты преобразования форматов при использовании операций копирования и вставки надо учитывать при подготовке сложных документов.
Вставка из буфера обмена в формате Maple-текста
Операция Paste As Maple Text служит для вставки данных из буфера обмена с одновременным их преобразованием в текстовый формат.
El Maple 7El Maple 7gptton$ Wrdc<w Hdpgptton$ Wrdc<w HdpЕсли данные в буфер обмена поступили в результате выполнения операции Сору as Maple Text, то при операции Paste Maple Text в документ будут скопированы только данные из строк ввода в формате Maple-текста. Это показано на рис. 3.15.
El Maple 7
El Maple 7
gptton$ Wrdc<w Hdp
gptton$ Wrdc<w Hdp
[3 в咼隰画 口确 日7]司ПЯ忘I司 问刁©I2因可nЛ画同
Демонстрация работы с системой Maple 7> di ft Сsin' 2,x) ;мимДемонстрация работы с системой Maple 7> di ft Сsin' 2,x) ;мим«Untitled KJTSerYeil]«Untitled KJTSerYeil]2 $ID⑴ C C5(:f j2 $ID⑴ C C5(:f j>上n4:《工/獲〈注"2《工"大 '?) f x:-0 . , 1);>上n4:《工/獲〈注"2《工"大 '?) f x:-0 . , 1);> va.}.us:H-4);> va.}.us:H-4);> Jnt ^кх:р( -t) /Л y (1/';O , t'^0, . in f.l.xiit> Jnt ^кх:р( -t) /Л y (1/';O , t'^0, . in f.l.xiit>Демонстрация работы с системой Maple 7 > diff (s in (х)? зс);> int (1 /sqxt f 工…竟乙至} , x^O . . 1)'> Xnt (exp( - t) /t '1 (1/3), t^O,,infinity);Г> value(T');>Демонстрация работы с системой Maple 7 > diff (s in (х)? зс);> int (1 /sqxt f 工…竟乙至} , x^O . . 1)'> Xnt (exp( - t) /t '1 (1/3), t^O,,infinity);Г> value(T');f Tra₽ a 6s 8Ww$,3.Q0M Availabte. 1S6&f Tra₽ a 6s 8Ww$,3.Q0M Availabte. 1S6&Рис. 3.15. Пример использования операций Copy as Maple Text и Paste Maple TextРис. 3.15. Пример использования операций Copy as Maple Text и Paste Maple Text
Демонстрация работы с системой Maple 7
> di ft Сsin' 2,x) ;мим
Демонстрация работы с системой Maple 7
> di ft Сsin' 2,x) ;мим
«Untitled KJTSerYeil]
«Untitled KJTSerYeil]
2 $ID⑴ C C5(:f j
2 $ID⑴ C C5(:f j
>上n4:《工/獲〈注"2《工"大 '?) f x:-0 . , 1);
>上n4:《工/獲〈注"2《工"大 '?) f x:-0 . , 1);
> va.}.us:H-4);
> va.}.us:H-4);
> Jnt ^кх:р( -t) /Л y (1/';O , t'^0, . in f.l.xiit
> Jnt ^кх:р( -t) /Л y (1/';O , t'^0, . in f.l.xiit
>
Демонстрация работы с системой Maple 7 > diff (s in (х)? зс);
> int (1 /sqxt f 工…竟乙至} , x^O . . 1)
'> Xnt (exp( - t) /t '1 (1/3), t^O,,infinity);
Г> value(T');
>
Демонстрация работы с системой Maple 7 > diff (s in (х)? зс);
> int (1 /sqxt f 工…竟乙至} , x^O . . 1)
'> Xnt (exp( - t) /t '1 (1/3), t^O,,infinity);
Г> value(T');
f Tra₽ a 6s 8Ww$,3.Q0M Availabte. 1S6&
f Tra₽ a 6s 8Ww$,3.Q0M Availabte. 1S6&
Рис. 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 АП выделяет все объекты документа. Это полезно, например, для вставки всего документа в другой документ.1
Поиск подстроки и ее замена
Команда Find служит для поиска указанного фрагмента в тексте документа. Опа открывает окно Find, в котором можно указать искомую фрагмент-подстроку (рис. 346). При нажатии кнопки Next будет производиться поиск следующего вхождения (ниже по тексту), а при использовании Previous — предыдущего. Если искомое слово не найдется, выводится окно с сообщением (слева па рис. 3.17).
Рис. 3.16, Поиск заданного фрагмента текста
При обнаружении указанного фрагмента он выделяется, и маркер ввода устанавливается в начало найденной подстроки. После этого можно приступить к ее редактированию.
С помощью команды Find возможна также замена подстроки. Для этого надо указать текст замены в нижнем поле окна. Чтобы заменить найденную подстроку, надо нажать кнопку Change, чтобы заменить все подстроки, — Change All.
1^ /^'v ^ч7С%^1^ШжЖЖ^1ш^ни^3书/」№店囤、e阐「門厚171rl国再frm同即图闻1^ /^'v ^ч7С%^1^ШжЖЖ^1ш^ни^3书/」№店囤、e阐「門厚171rl国再frm同即图闻Демонстрация работы с> diff(si»<x)A2ry);Демонстрация работы с> diff(si»<x)A2ry);пакетомпакетомMaple 7Maple 7> iiit (1/sqrt C 1-x" 2 ) , x^O ..!) .■> iiit (1/sqrt C 1-x" 2 ) , x^O ..!) .■2 sin(x) cos(x)2 sin(x) cos(x)> 工nt《令 xp 仆•七)/t'、(1/3) , t-0 . , infinity) ■> 工nt《令 xp 仆•七)/t'、(1/3) , t-0 . , infinity) ■‘弋^ MGtKfiuhd 启悔 fisurW‘弋^ MGtKfiuhd 启悔 fisurW(T)(T)> valne(T'):> valne(T'):
1^ /^'v ^ч7С%^1^ШжЖЖ^1ш^ни^3书
/」№店囤、e阐「門厚171rl国再frm同即图闻
1^ /^'v ^ч7С%^1^ШжЖЖ^1ш^ни^3书
/」№店囤、e阐「門厚171rl国再frm同即图闻
Демонстрация работы с
> diff(si»<x)A2ry);
Демонстрация работы с
> diff(si»<x)A2ry);
пакетом
пакетом
Maple 7
Maple 7
> iiit (1/sqrt C 1-x" 2 ) , x^O ..!) .■
> iiit (1/sqrt C 1-x" 2 ) , x^O ..!) .■
2 sin(x) cos(x)
2 sin(x) cos(x)
> 工nt《令 xp 仆•七)/t'、(1/3) , t-0 . , infinity) ■
> 工nt《令 xp 仆•七)/t'、(1/3) , t-0 . , infinity) ■
‘弋^ MGtKfiuhd 启悔 fisurW
‘弋^ MGtKfiuhd 启悔 fisurW
(T)
(T)
> valne(T'):
> valne(T'):
向4*afebfa 1Й5&
Рис. 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 данная команда должна быть записана в виде value(^).
©Maple 7 - [DemoLiM - ISetve* tR
心 Ё^ 酬 J^w* Irwert Fernet ,2Pglw Й^»* 蜘 1P .…小彳就;斗
)Р Nomal………В忘%" …債[到理 SI
Демонстрация работы с системой Maple 74
> diff<sln(x) ?zx);扌
[> int (1/sqrt (l--x" 2) fx=0 , . 1)<
[> I.nt (exp(-t ) /f' (1/3 ) , t--fJ. . inCini t y) ;:';i
[> value ( ■') ;1
P*c・3・18・ Документ после удаления всех ячеек выводаP*c・3・18・ Документ после удаления всех ячеек вывода
P*c・3・18・ Документ после удаления всех ячеек вывода
P*c・3・18・ Документ после удаления всех ячеек вывода
Операции вставки
Меню Insert
Документ системы Maple 7 состоит из различных объектов — текстовых областей, областей ввода, ячеек, абзацев, секций, подсекций и т. д. Некоторые из них формируются автоматически по мере ввода и исполнения документа. Но, кроме того, в меню Insert (рис. 3.19) сосредоточены основные команды по обеспечению вставки различных объектов в редактируемый документ. Это позволяет быстро модифицировать документ и добиться его большей выразительности.
Рис. 3.19. Меню Insert
Следует отметить, что меню Insert является контекстно-зависимым. К примеру, оно исчезает, если выделен график.
Меню вставки разделено на две группы. В первой группе содержатся следующие команды:
О Text (Ctrl+T) — ввод текста;
О Standard Math (Ctrl+R) — ввод неисполняемых математических выражений;
О Maple Input (Ctrl+M) — ввод исполняемых выражений в Maple-формате;
О Standard Math Input (Ctrl+G) — ввод выражений в математической форме в строку ввода.
Во второй группе содержатся следующие команды:,
О Execution Group — вставка исполняемой ячейки до или после маркера ввода;
О Plot — вставка пустого шаблона двумерного или трехмерного rpa(f)iiKa;
О Spreadsheet — вставка электронной таблицы;
О Paragraph — вставка текстовой области (абзаца);
О Section — вставка кнопки секции;
О Subsection — вставка кнопки подсекции;
О HyperLink — вставка гиперссылки;
О Object — вставка связанного или внедренного объекта;
О Page Break — вставка разрыва страниц.
Перейдем к более подробному рассмотрению этих команд.
Ввод текста
Команда Text приводит к исчезновению знака приглашения >, после чего можно сразу же начинать ввод текста комментария. Данная команда позволяет формировать ячейку, содержащую текст комментария и исполняемые функции.
Ввод выражений в стандартной форме
Команда Standard Math выводит в строке ввода вопросительный знак. После этого в поле ввода строки форматирования можно начинать ввод неисполняемого математического выражения (рпс. 3.20).
[可用「7投4 [МШ司j^Fr
Рис. 3.20. Ввод математическоговыражения по команде Standard Math
По завершении ввода надо нажать клавишу Enter, и выражение появится в строке ввода (рис. 3.21). При этом выражение будет выделено.
[也&L"朗匕升刀刈'皀亘I
В + 3 sin( 1
Рис. 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 вставляется пустая электронная таблица, во всех ячейках которой нет никаких данных. Однако помимо заполнения таблицы с по-
С
D
Е
G
Н
lllligll
工
⑸
3
4
5
森
€
隼
id
|Й1
ВЦ
11
14
IS
蹄
Fw^bc 觎£ 300М~ 結匐妣」.瑜
fUMuple/ - (Untitled | Н)) - [Seivci 1 ]|fUMuple/ - (Untitled | Н)) - [Seivci 1 ]|画匐囱'^И >画匐囱'^И >窗窗察察Рис. 3.22. Вставка шаблона электронной таблицы
fUMuple/ - (Untitled | Н)) - [Seivci 1 ]|
fUMuple/ - (Untitled | Н)) - [Seivci 1 ]|
画匐囱'^И >
画匐囱'^И >
窗
窗
察
察
мощью соответствующих операций можно провести заполнение вручную. Для этого достаточно мышью выделить ячейку, щелкнув в ней левой кнопкой. Ячейка обводится черным контуром (ячейка А1 на рис. 3,22), и появляется контекстное меню с но刀ем для ввода выражения. Во время ввода выражения ячейка покрывается серой сеточкой. Если после набора выражения нажать клавишу Enter, то числовое значение выражения будет помещено в ячейку А1 таблицы, К примеру, на рис, 3,23 показано введенное выражение 2+3. Однако в поле редактирования сохраняется исходное выражение (рис. 3.23),
Если маркер ввода находится в одной из ячеек электронной таблицы, становится доступным меню Spreadsheet (рис, 3.23).
Меню Spreadsheet
Для работы с таблицами в Maple 7 появилось отдельное меню Spreadsheet (рис, 3.23), Оно содержит набор команд, обеспечивающих работу с табличными данными:
О Evaluate Selq^tion — вычисление выражения в выделенной ячейке;
О Evaluate Spreadsheet 亠 вычисление выражений по всем ячейкам таблицы;
Рис* 3.23. Шаблон электронной таблицы и меню 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. В этом окне можно задать направление заполнения (обычно по умолчанию задано уже направление заполнения при выделении ячеек) “ указать uiar изменения аргумента и значение, которого он нс должен превышать. Например, на рис. 3.24 заданы шаг 3 и конечное значение 21. Нажав кнопку ОК, можно увидеть автоматическое заполнение таблицы. При этом она принимает вид, показанный на рис. 3.25.
В ячейки таблиц можно вносить различные математические формулы в соответствии с синтаксисом языка Maple 7. При этом возможно сослаться па любую другую ячейку. Такая ссылка указывается значком тильда (~) перед адресом ячейки. Так, обозначение -А1 означает, что будут подставлены данные из ячейки А1.
В качестве примера составим таблицу значений п, интеграла 1nt(x*n,x) и производной diff (х 人 п,х) для n= 1. .9. В готовом виде эта таблица представлена на рис. 3.26. Подготовка такой таблицы проходит в три этапа. Вначале формируется первый столбец вводом в ячейку А1 имени переменной п, а в ячейку А2 — значения 1. После этого ввделяются ячейки от А2 до АЮ и с применением автоматического заполнения они заполняются числами от 1 др 9.
3"衿Z』>l^fc 犷&4»、%:*◎…、7, 一 金「^a^ |3面制国佈葡靛f糠説脑靠/л宓确矶亦п司^一 、一号 向阉(¥1^1厂二… …-「一…… 二 二 :…… 二….我
口*9^3йj““”',” ,,,IГ ,g3 ggi 価,1『【Up「:[6£…}, сас吋 J口*9^3йj““”',” ,,,IГ ,g3 ggi 価,1『【Up「:[6£…}, сас吋 J
口*9^3йj““”',” ,,,I
Г ,g3 ggi 価,1『
【Up
「:[6£…}, сас吋 J
口*9^3йj““”',” ,,,I
Г ,g3 ggi 価,1『
【Up
「:[6£…}, сас吋 J
,T限 q6, 觊学$ 3gHа*3蹄後> 1总庇,T限 q6, 觊学$ 3gHа*3蹄後> 1总庇Рис. 3.24. Подготовка к автоматическому заполнению ячеек под заданной ячейкойРис. 3.24. Подготовка к автоматическому заполнению ячеек под заданной ячейкой
,T限 q6, 觊学$ 3gHа*3蹄後> 1总庇
,T限 q6, 觊学$ 3gHа*3蹄後> 1总庇
Рис. 3.24. Подготовка к автоматическому заполнению ячеек под заданной ячейкой
Рис. 3.24. Подготовка к автоматическому заполнению ячеек под заданной ячейкой
Рис. 3.25. Электронная,таблица с рис. 3.24 после автоматического заполнения ячеек первого столбцаРис. 3.25. Электронная,таблица с рис. 3.24 после автоматического заполнения ячеек первого столбца
Рис. 3.25. Электронная,таблица с рис. 3.24 после автоматического заполнения ячеек первого столбца
Рис. 3.25. Электронная,таблица с рис. 3.24 после автоматического заполнения ячеек первого столбца
Рис. 3.26. Электронная таблица с символьными даннымиРис. 3.26. Электронная таблица с символьными данными
Рис. 3.26. Электронная таблица с символьными данными
Рис. 3.26. Электронная таблица с символьными данными
》)ПРММЕЧАНМЕ》)ПРММЕЧАНМЕЗатем во втором столбце в ячейку В1 вводится инертная формула Int(x*'Al,x), а в ячейку В2 — исполняемая формула int(x*'A2,x). После этого выделяются ячейки от В2 до ВЮ и исполняется команда Spreadsheet Fill Down. В результате формируется столбец с символьными значениями интегралов. Аналогично (третий этап) задается формирование столбца с символьными значениями производной от х*п (рекомендуем сделать это самостоятельно для закрепления навыков работы с электронными таблицами в среде Maple 7).
》)ПРММЕЧАНМЕ
》)ПРММЕЧАНМЕ
Выше описаны лишь основы работы с электронными таблицами в среде Maple 7. Для более полного знакомства стехникой применения электронных таблиц нужно обратиться к справочной системе Maple 7.
Вставка текстовой области
Для вставки строки текстовой области служит операция Paragraph. Oi^a создает строку без приглашения >, в которую можно вводить текст. Единствейпым отличием этой команды от команды 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.2^
曲彥曲彥
曲彥
曲彥
ЙЙМЕ» БЫ1ЁШЕ$"ЙзаЭ囹•应發 可囹回
I зто пример создания
扌 fa^fe^H.可通/口£"::::[[:[:飞
Г URL :Г URL :£Z=ZZ1£Z=ZZ1逊E逊Eganw j;*] 3d3$tyle ms& 3d3style& Aaa 卷 Aaaa i*] Atylot m$ ⑥ Coiled ::蜀 Conhokl msganw j;*] 3d3$tyle ms& 3d3style& Aaa 卷 Aaaa i*] Atylot m$ ⑥ Coiled ::蜀 Conhokl ms]Contbar ms ]D3solve,tns iQSSSQES]DemolO.ms ]Difinl ms]Contbar ms ]D3solve,tns iQSSSQES]DemolO.ms ]Difinl ms"3国2]包匠闫"3国2]包匠闫*] Е symbol m$ 图 li(d*] Е symbol m$ 图 li(d渺 G3dpai ms ;*1 Gknot m$ 蔔 Gptoc m$ @ Gpiocl ms渺 G3dpai ms ;*1 Gknot m$ 蔔 Gptoc m$ @ Gpiocl mssn吟11°01rt⑥esn吟11°01rt⑥e
Г URL :
Г URL :
£Z=ZZ1
£Z=ZZ1
逊E
逊E
ganw j
;*] 3d3$tyle ms
& 3d3style
& Aaa 卷 Aaaa i*] Atylot m$ ⑥ Coiled ::蜀 Conhokl ms
ganw j
;*] 3d3$tyle ms
& 3d3style
& Aaa 卷 Aaaa i*] Atylot m$ ⑥ Coiled ::蜀 Conhokl ms
]Contbar ms ]D3solve,tns iQSSSQES
]DemolO.ms ]Difinl ms
]Contbar ms ]D3solve,tns iQSSSQES
]DemolO.ms ]Difinl ms
"3国2]包匠闫
"3国2]包匠闫
*] Е symbol m$ 图 li(d
*] Е symbol m$ 图 li(d
渺 G3dpai ms ;*1 Gknot m$ 蔔 Gptoc m$ @ Gpiocl ms
渺 G3dpai ms ;*1 Gknot m$ 蔔 Gptoc m$ @ Gpiocl ms
sn吟
11°01rt
⑥e
sn吟
11°01rt
⑥e
呦м»Фейй窝:碗emo匚.:《Я№фабййК:::::.]髙 aple 应wisbie'e;呦м»Фейй窝:碗emo匚.:《Я№фабййК:::::.]髙 aple 应wisbie'e;;t«®7&以 ‘Sfas'SUJ口AUafrta 工侬;t«®7&以 ‘Sfas'SUJ口AUafrta 工侬Рис. 3.27. Пример создания гиперссылкиРис. 3.27. Пример создания гиперссылки
呦м»Фейй窝:碗emo匚.
:《Я№фабййК:::::.]髙 aple 应wisbie'e;
呦м»Фейй窝:碗emo匚.
:《Я№фабййК:::::.]髙 aple 应wisbie'e;
;t«®7&以 ‘Sfas'SUJ口AUafrta 工侬
;t«®7&以 ‘Sfas'SUJ口AUafrta 工侬
Рис. 3.27. Пример создания гиперссылки
Рис. 3.27. Пример создания гиперссылки
田网嗣 ПЭД 里ЩШЗ匚□ eЕ回ЕЕ回asa田网嗣 ПЭД 里ЩШЗ匚□ eЕ回ЕЕ回asa"依 L*;"依 L*;|c Hypefhnk|c Hypefhnkies New Romanies New Roman1 F^l WE 闫习习画1 F^l WE 闫习习画
田网嗣 ПЭД 里ЩШЗ匚□ eЕ回ЕЕ回asa
田网嗣 ПЭД 里ЩШЗ匚□ eЕ回ЕЕ回asa
"依 L*;
"依 L*;
|c Hypefhnk
|c Hypefhnk
ies New Roman
ies New Roman
1 F^l WE 闫习习画
1 F^l WE 闫习习画
Это пример создания и:г:-:рсг.н;
:Hyperlink
Tt#WoibhMtt'UrtitiMПV hasW1 wiftftt *W^№«$J^linkM ew* 浦 風旧* у be 6优 0onm 呻球 to saw the eakshT?象冲н* f 匕? Rew WiW,開wabl 2 Aep yo« «hanger but do nd *mh 8 ww« item
Рис^З^^ Окно с предупреждением а за1фытии документа при переходе по гиперссылкеи н^обходимбстй сохранения изменш«ий
ЕЗ Maple 7
陝 W戒 W* X F^ ^>^^Л ^Ш ^Mbt 峥
1 男忠
{c Hyperlink ^£|Time7New Roman
;& dg.mws - (Seivei 1]
О
con
Open the
document in a new window
£S规晶騒纖談疯£献- /・^鬣磁^攏£矗誤
32麻/皿阳叫踹学儼图2 a^血
1
2 sm(x) co$(x)
,骂qr七(^.-:х./ч2) ,- х^О. . 1);
демонстрация работы с системой 雷 diff(siu<х)Л2.x);
国囹回
Open link
'tic пример f отдания
О-pen 也 biked da unwnt п m гюк v^ndow ■
> Tnt g*pt 7:}/t「С/3〉,t^G. . infinity);
I)К
0 /
Рис. 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 (Ct「l+,) — выведение текущей строки из секции.
В последнюю группу попала еще одна команда, не имеющая непосредственного отношения к форматированию символов:
О Convert to — перевод из одной метрической системы в другую.
Рассмотрим применение команд форматирования,
Установка стилей
Команда Styles является основной, поскольку позволяет задать стиль текста — определенный набор значений доступных параметров: размещение на странице, выравнивание, шрифт, начертание, цвет, размер и т. д. Единство стилей документов важно при включении их в отчеты, курсовые и дипломные проекты, диссертации и иные документы» Придерживаться определенных стилей — это
правило хорошего тона при работе как с текстовыми процессорами, так п с математическими системами. Именно поэтому ориентация на определенный стиль подготовки документов стала неотъемлемой частью пользовательского интерфейса системы Maple 7.
Операция Styles выводит диалоговое окно Style Management, в котором можно как изменить уже существующий стиль, так и создать новый (рис. 3.30).
Style Management
•-收觎含磔^
‘叁拂
P. Aurhor
P Buliet ifem
P Dash Item
P Diagnostic
P Error
P Fixed Width
S^®^ рГS^®^ рГI 必0再网"!^;顕隔I 必0再网"!^;顕隔
S^®^ рГ
S^®^ рГ
I 必0再网"!^;顕隔
I 必0再网"!^;顕隔
- $w饱£秋:- $w饱£秋:Cf84tem哪$津(5 -
- $w饱£秋:
- $w饱£秋:
金陋卿砌:金陋卿砌:飢?用於七?林a*
金陋卿砌:
金陋卿砌:
£haraM 釈
触伊E粼®^
Рис. 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 Суг. Он содержит символы кириллицы, то есть буквы русского языка. После этого задание титульных надписей для графиков на русском языке перестает быть проблемой.
'* 统总電我4 ':'* 统总電我4 ':亩調論"^^T^T^^f論节亩調論"^^T^T^^f論节Eht”act<” StyleEht”act<” Style*^寺薄2好鼠.<^U^^UVs';^::*^寺薄2好鼠.<^U^^UVs';^::11[Это пример создания гиперссылки[Это пример создания гиперссылки三1二 三闯r三1二 三闯rЯмйргШ: font Name,ЯмйргШ: font Name,*却kibut 才-、*却kibut 才-、P TextP Wai&P TextP Wai&,Effing S^e*,Effing S^e*P Maple Output P Maple Plot P Noima!..P Maple Output P Maple Plot P Noima!..;Oewf^boft< ur,d8^wd ♦ termed * pratead byJ t2pU«posfteadbH2 隣 ' 1;Oewf^boft< ur,d8^wd ♦ termed * pratead byJ t2pU«posfteadbH2 隣 ' 1Courier NewCourier New СЕCourier NewCourier New СЕйстямой^й——^:Cytvetica-NaHowDfWDfW Largeйстямой^й——^:Cytvetica-NaHowDfWDfW Large::8费;;§ 3冬i io□ 2登:::8费;;§ 3冬i io□ 2登:搀扌滋遮咏司五值… ”[…] 卜搀扌滋遮咏司五值… ”[…] 卜2^2^P NormalP Normal封跑金貝m浙7:£封跑金貝m浙7:£AaBbYyZzAaBbYyZzSt^teW ■2我St^teW ■2我Pt&pertle*-SpawgPt&pertle*-Spawgb(d«n*a((0nb(d«n*a((0n强曲煦" ,2p「j 一用 婀忤「「"周强曲煦" ,2p「j 一用 婀忤「「"周蹴蹴圏圏;:в1^請¥*[С偉41日;:в1^請¥*[С偉41日JEJE111111
'* 统总電我4 ':
'* 统总電我4 ':
亩調論"^^T^T^^f論节
亩調論"^^T^T^^f論节
Eht”act<” Style
Eht”act<” Style
*^寺薄2好鼠.<^U^^UVs';^::
*^寺薄2好鼠.<^U^^UVs';^::
1
1
[Это пример создания гиперссылки
[Это пример создания гиперссылки
三1二 三闯r
三1二 三闯r
ЯмйргШ: font Name,
ЯмйргШ: font Name,
*却kibut 才-、
*却kibut 才-、
P Text
P Wai&
P Text
P Wai&
,Effing S^e*
,Effing S^e*
P Maple Output P Maple Plot P Noima!..
P Maple Output P Maple Plot P Noima!..
;Oewf^boft
< ur,d8^wd ♦ termed * pratead by
J t2pU«posfteadbH2 隣 ' 1
;Oewf^boft
< ur,d8^wd ♦ termed * pratead by
J t2pU«posfteadbH2 隣 ' 1
Courier New
Courier New СЕ
Courier New
Courier New СЕ
йстямой^й——^:
Cytvetica-NaHow
DfW
DfW Large
йстямой^й——^:
Cytvetica-NaHow
DfW
DfW Large
::8费;;
§ 3冬
i io
□ 2登:
::8费;;
§ 3冬
i io
□ 2登:
搀扌滋遮咏司五值… ”[…] 卜
搀扌滋遮咏司五值… ”[…] 卜
2^
2^
P Normal
P Normal
封跑金貝m
浙7:£
封跑金貝m
浙7:£
AaBbYyZz
AaBbYyZz
St^teW ■
2我
St^teW ■
2我
Pt&pertle*
-Spawg
Pt&pertle*
-Spawg
b(d«n*a((0n
b(d«n*a((0n
强曲煦" ,2p「j 一用 婀忤「「"周
强曲煦" ,2p「j 一用 婀忤「「"周
蹴
蹴
圏
圏
;:в1^請¥*[С偉41日
;:в1^請¥*[С偉41日
JE
JE
111
111
P $$觎貝Е纯^^.
OKOK,时續F.J,时續F.JТел© U徐.毋国$ 3U0M . МВаЫёИ 60S.Тел© U徐.毋国$ 3U0M . МВаЫёИ 60S.
OK
OK
,时續F.J
,时續F.J
Тел© U徐.毋国$ 3U0M . МВаЫёИ 60S.
Тел© U徐.毋国$ 3U0M . МВаЫёИ 60S.
Рис. 3.31. Окна установки параметров абзацного стиля для абзаца и для выбора шрифта
Разумеется, в понятие стиля входит не только шрифт, но и размер, начертание, цвет и т. д. Все это можно настраивать, используя описанные выше окна. При необходимости изменения стиля можно записать его в специальный файл, используя кнопку Save As Default. При этом измененный стиль становится принятым по умолчанию. Кнопка Revert As Default позволяет вернуться к типовым стилям, которые заданы разработчиками системы. Если стили подверглись неболь* шим изменениям, то можно сохранить их с помощью кнопки Merge Existing.
Форматирование абзацев
Для форматирования абзацев служит команда Paragraph. Она сразу выводит окно установки параметров абзаца. Это окно было показано на рис. 3.31, Правила работы с этим окном уже были описаны выше, так что нет смысла их повторять.1
Форматирование символов
Команда Character открывает окно задания стиля символов: шрифта, размера, начертания и цвета.
Операция внедрения ячеек в секцию
Ранее описывалась операция вставки кнопки секции. При выполнения вставки сама секция еще пуста и ее надо заполнять. Команда Indent (или комбинация клавиш Ctrl+.) позволяет оформить в виде секции уже введенные ячейки. На рис. 3.32 показано такое оформление для ячейки документа с вычислением интеграла. Кнопка при этом имеет знак «минус», что указывает на ее открытое состояние.
Рис. 3.32. Применение операции Irjdent для одной из ячеек документа
Если щелкнуть на кнопке со знаком «минус», то секция свернется и вместо нее останется только кнопка со знаком «плюс» (рис. 3.33).
Операция выведения ячеек из секции
Команда Outdent (или комбинация клавиш Ctrl+,) отменяет оформление ячейки в виде секции. Она действует в том случае, если маркер ввода стоит внутри секции.
Рис* 3.33. Пример документа с закрытой секцией
Работа с объектами
Хотя данная книга посвящена одной Maple 7, надо особо отметить, что эта программа способна взаимодействовать с рядом других программ, например с текстовым процессором Word, табличным процессорам Excel и даже с другими системами компьютерной математики, например, MATLAB. Это может быть копирование через буфер обмена или связь с применением механизма OLE.
В роли объектов, могут выступать ячейки из данного или других документов, текстовые фрагменты и файлы, рисунки в различных форматах и т. д. Работа с объектами существенно расширяет возможности пользователя по части создания полноценных и удобных в работе документов.
Вставка объектов
Для организации вставки объекта используется команда Insert ► Object. Она выводит окно со списком тех приложений, с которыми возможна связь с применением механика OLE. Это окно показано на рис. 3.34. Maple 7 использует стан-
дартиое окно вставки объектов из операционной системы Windows, поэтому если она русифицирована, то окно имеет русскоязычные надписи.
I вставка о(й>вктв
片 Cos«gt> новый广 Сстагъ^афз^а.片 Cos«gt> новый广 Сстагъ^афз^а.工мо峦t•gуа:工мо峦t•gуа:Йомнэтэ Microsoft Chat Лист Microsclt ExcelПрезентация Mrcrosolt PowerPointРисунок Microsoft\^ordCnai'ia Microsoft PowerPoint 7очечньК^ рисунок 8MpЙомнэтэ Microsoft Chat Лист Microsclt ExcelПрезентация Mrcrosolt PowerPointРисунок Microsoft\^ordCnai'ia Microsoft PowerPoint 7очечньК^ рисунок 8Mp::镰::镰Стмеиа;Стмеиа;越越Г* £ew значкаГ* £ew значка
片 Cos«gt> новый
广 Сстагъ^афз^а.
片 Cos«gt> новый
广 Сстагъ^афз^а.
工мо峦t•gуа:
工мо峦t•gуа:
Йомнэтэ Microsoft Chat Лист Microsclt Excel
Презентация Mrcrosolt PowerPoint
Рисунок Microsoft\^ord
Cnai'ia Microsoft PowerPoint 7очечньК^ рисунок 8Mp
Йомнэтэ Microsoft Chat Лист Microsclt Excel
Презентация Mrcrosolt PowerPoint
Рисунок Microsoft\^ord
Cnai'ia Microsoft PowerPoint 7очечньК^ рисунок 8Mp
::镰
::镰
Стмеиа;
Стмеиа;
越
越
Г* £ew значка
Г* £ew значка
Резут^гРезут^гРис. 3.35. Подготовка объекта в графическом редакторе PaintРис. 3.35. Подготовка объекта в графическом редакторе Paint
Резут^г
Резут^г
Рис. 3.35. Подготовка объекта в графическом редакторе Paint
Рис. 3.35. Подготовка объекта в графическом редакторе Paint
Добйьтемие в да» умез ж&ог(з сйъй^тй tw§ ■
1 Точечный рисунок Pafntbwah1',;
Рис. 3.34. Окно вставки объекта
Если оставить переключатель в первом положсепш, то сбхект может быть создан заново с помощью подходящего приложения, например редактора Paint. Этот процесс показан на рис. 3.35.
После того как объект готов, достаточно выйти из приложения, в котором он создавался, — в нашем случае из редактора Paint. Для этого в меню редактора имеется команда File ► Exit. Окно Paint исчезнет, а сам объект появится в той
ячейке Maple 7 (рис. 3.36), в которой был установлен маркер ввода в момент дачи команды вставки объекта.
Вместо рисунка (или другого объекта) можно поместить в документе Maple 7 значок — пшсрмедна-ссылку. Для этого в окне на рис. 3.34 надо установить флажок В виде значка. Щелчок на ветвленном в документ значке вызовет появ* ленке объекта. Этот способ удобен, когда объекты, например рисунки, имеют большой размер и их постоянное присутствие на зкранс нецелесообразно.
Необязательно каждый раз создавать объект с пуля — можно загрузить его из файла, в этом случае следует установить положение пе1)еключателя Создать из файла. Для поиска нужного файла пригодится кнопка Обзор. После выбора файла надо решить, какой вид будет иметь значок связи с файлом — вид стандартного значка или уменьшенной копии изображения.
Редактирование вставленного объекта
Если объект выделен (как обычно, щелчком мыши), то команда Edit ► Object становится активной и может даже модифицироваться в зависимости от вида объекта, с которьи^ установлена связь. Например, если объектом является .рсх-файл, то эта строка меню открывает подменю с тремя командами:
О Edit — редактировать объект;
О Open — открыть приложение, связанное с объектом;
О Print — распечатать объект.
Редактирование объекта производится в среде того приложения, с которым объект связан. Естественно, что изменение файла повлечет за собой отражение в документе его измененного варианта. Следует отметить, что в некоторых копиях программы Maple 7 операция Object не работает. Однако сохраняется возможность редактирования объекта в создавшей его программе после двойного щелчка на нем.
Что нового мы узнали?
В этом урокс мы научились:
О Создавать новый документ.
О Загружать ранее созданные документы.
О Работать с файлами документов.
О Редактировать документы.
О Печатать документы.
О Осуществлять операции вставки.
О Выполнять операции форматирования.
О Вставлять в Maple 7 объекты, созданные другими программами.
О Работать с объектами.
癌回亞癌回亞Управлениеинтерфейсомпользователя
癌回亞
癌回亞
Управление видом интерфейса и документа
Управление показом областей секций
Работа с параметрами Maple
Работа с окнами
Управление видом интерфейса и документа
Меню View
Для управления видом интерфейса и документа служит меню View. Оно содержит ряд флажков и несколько команд управления общим видом программы (рис. 4.1). Установленные флажки, управляющие показом элементов интерфейса, распространяют свое действие на все открытые документы. При выходе из системы (командой Exit) все установки сохраняются, так что при новом запуске системы внешний вид интерфейса будет определяться именно ими.
工脸做都 a^t Sat ; 亲0心脏;
良雌於
EgmFactor
^5(^:№3({(4
SW^jwsikteChaat^
J 5howSetlipn R*nge«SWfMFg'
В Show group RangesF9
Shd^ Gtqect 哥 pe
^xpw>dABS₽cl»ns
C 痂^鋼 £«<sto
Рис. 4.1. Меню View
Команды меню View разбиты на несколько групп, Первая группа содержит флажки, относящиеся к управлению показс^милавной и контекстной панелей инструментов, а также строки состоя ниясистемы:
О Toolbar — управление показом панели инструментов;
О Context Ваг — управление показом контекстной панели;
О Status Une — управление показом строки состояния.
Вторая группа задает показ палитр и представлена одной командой, открывающей подменю управления показом палитр Palettes, содержащей флажки:
О Symbol Palette — палитра символов;
О Expression Palette — палитра выражений;
О Matrix Palette — палитра шаблонов матриц;
Q Vector Palette — палитра шаблонов векторов.
И команды:
О Show All Palettes — показать все палитры;
О Hide All Palettes — скрыть все палитры.5
Третья группа в меню 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, на котором показан ввод с помощью палитры выражений шаблона определенного интеграла и его последовательное заполнение. Для наглядности заполнение каждого параметра дано в новой строке ввода.
Рис. 4.2. Пример ввода шаблона определенного интеграла из палитры выражений
Установка масштаба отображения документа
Команда Zoom Factor задает масштаб отображения текущего документа. Он задается в процентах относительно масштаба просмотра, заданного по умолчанию, 一 он принят за 100 %. Команда выводит подменю с перечнем возможных масштабов просмотра. На рис. 4.3 показано, как будет выглядеть документ при установке масштаба просмотра в 150 %. На этом рисунке показано подменю выбора масштаба в открытом виде.
Нетрудно заметить, что все символы документа увеличились при этом в размерах в полтора раза. Эта возможность, безусловно» полезна для пользователей с ослабленным зрением или для учителей, желающих показать примеры решения задач в среде Maple крупным планом для группы учащихся.
Рис. 4.3. Вид документа при масштабе просмотра в 150 %
Установка закладок
При работе с большими документами, как н при чтении книг, полезно устанавливать специальные маркеры — закладки. Для установки TaKoii закладки достаточно поместить в нужное место документа маркер ввода и выполнить команду View ► Bookmarks ► Edit Bookmarks. Она выводит окно добавления и модификации закладки (рис. 4.4), Кнопка ОК вводит новую закладку, а кнопка Cancel позволяет отказаться от выполнения данной операции.
Если теперь вновь посмотреть подменю Bookmarks, в нем появится строка с созданной закладкой (рис, 4.5). 厂
В нашем случае в списке представлены две ранее созданные закладки с именами «Это определенный интеграл» и «А это значение определенного интеграла». При переходе по закладке строка, в которой установлена закладка, размещается в верхней части окна редактирования и маркер ввода устанавливается в место, которое определено закладкой. Таким образом, закладки 一 эффективное средство для быстрого перехода в отмеченные места документа. Однако надо помнить, что в отличие от закладок в книгах закладки в документах Maple 7 не видны — они имеются лишь в списке закладок, открываемом командой Bookmarks (рис. 4.5). Удалить созданную закладку не так-то просто: вам нужно перейти по закладке, дать команду View > Bookmarks ► Edit Bookmarks и удалить текст в поле имени. Теперь нажатие кнопки ОК приведет к окну с предупреждением об удалении закладки. Нажмите OK r обрих окяах — л закладка исчезнет.
闿第浦嫌、呻貳肝畸佝 确中闕:斥同倚罔1st :
Примеры вычисления производной и интегралов
> diff(sin(х)Л2 zx);
>>2 sin(x) cos(x)
>
>
int(1/sqrt(1-хЛ2) ,x=0..工);
>>Int(exp(-t)/七人(1/3)Int(exp(-t)/七人(1/3)t=0..infinit=0..infiniопределенный интегралопределенный интегралvalue(%);value(%);(T) e dt (1/3)(T) e dt (1/3)京 ~~~1£a映 f京 ~~~1£a映 f00
>
>
Int(exp(-t)/七人(1/3)
Int(exp(-t)/七人(1/3)
t=0..infini
t=0..infini
определенный интеграл
определенный интеграл
value(%);
value(%);
(T) e dt (1/3)
(T) e dt (1/3)
京 ~~~1£a映 f
京 ~~~1£a映 f
0
0
~i~ni~ fain fx\ у = C . .Pi、~i~ni~ fain fx\ у = C . .Pi、
~i~ni~ fain fx\ у = C . .Pi、
~i~ni~ fain fx\ у = C . .Pi、
Рис. 4.4. Пример создания и редактирования закладкиРис. 4.4. Пример создания и редактирования закладкиРис 4・5* Просмотр закладокРис 4・5* Просмотр закладок
Рис. 4.4. Пример создания и редактирования закладки
Рис. 4.4. Пример создания и редактирования закладки
Рис 4・5* Просмотр закладок
Рис 4・5* Просмотр закладок
Управление показом компонентов документа
Документы Maple 7 состоят из ряда основных элементов. Это ячейки (строки) ввода и вывода, графики и электронные таблицы. При подготовке различных электронных книг, учебников и статей возникает необходимость скрыть тот или иной компонент документа. Например, педагог может захотеть скрыть от уча* щихся строки ввода, чтобы они могли мысленно представить функции, отображаемые показанными в документе графиками. Или, наоборот, скрыть графики, чтобы учащиеся назвали их особенности исходя из записи функций. Все эти возможности и обеспечивает команда View ► Hide Content,
Для примера на рис. 4.6 показан документ, у которого скрыты все строки ввода и оставлены только строки вывода.
Рис. 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), управляющей ее состоянием: открытым или закрытым.
Для создания секции или подсекции необходимо дать команду Insert ► Section (или Insert ► Subsection), что указано на рис. 4.8. Секция выделяется вертикальной одиночной линией, а подсекция — двойной линией.
Секции и подсекции выгодно отличаются от ячеек тем, что они могут быть при необходимости закрыты и представлены только кнопкой со знаком《плюс». Таким образом, в секции удобно помещать различные вспомогательные вычисления, которые не стоит обозревать постоянно. Хотите посмотреть на них — нажмите кнопку, и содержимое секции появится под ней с выделением вертикальной чертой (рис. 4.9).
Секции весьма удобно применять и для подготовки документов в форме электронных книг, В этом случае секции снабжаются текстовыми заголовками и, по существу, являются главами книги, а подсекции — параграфами. Этот способ представления документов нашел широкое применение в сети Интернет, где он (наряду с гипертекстовыми и гипермедиа-ссылками) используется при создании web-страниц. Версия Maple 7 позволяет готовить и сохранять на диске документы в формате HTML, что позволяет напрямую готовить web-страницы.
Рис. 4.9. Пример документа с рис. 4.8 с открытой подсекцией
Управление показом областей секций
Итак, обычно секции и подсекции выделяются вертикальными линиями, заканчивающимися короткими горизонтальными штрихами. Это позволяет судить о размерах области экрана, представляющей секцию, особенно если секция большая и целиком не помещается на экране.
Тем не менее в окончательно отлаженном документе необходимость в применении линии показа области секции или подсекции отпадает, С помощью флажка Show Section Ranges можно управлять показом линий выделения областей секций и подсекций. Есля этот флажок установлен, то линии показа областей секций и подсекций видны, как на рис. 4.9. Если erg снять, то эти линии исчезнут (рис. 4.10). Обратите внимание, что линии выделения групп (ячеек) остаются.
Рис. 4.10. Вид документа с рис. 4.9 при снятии показа областей секции и подсекции
Управление показом областей ячеек (Show Group Ranges)
Команда Show Group Ranges служит для управления показом областей ячеек (групп), то есть длинных квадратных скобок, обрамляющих ячейки слева. Если флажок установлен, то линии показа областей ячеек видны. Если его снять, то эти линии исчезают, как показано на ркиг^:11, где убраны линии выделения как секции и подсекции, так и ячеек.,
Убирать линии показа областей ячеек целесообразно, если документ уже отлажен. В таком документе необходимость показа областей выделения ячеек, секций и подсекций отсутствует, хотя иногда их разумно оставлять, так как они способствуют систематизации содержимого документов.
Закрытие всех секций
Все секции и подсекции документа можно закрыть командой Collapse All Sections. К примеру, если применить ее к документу, показанному на рис. 4.9, то документ примет вид, показанный на рис. 4.12.
.OK^Sffl ЗН финнозной И гипноз О! —опижоннз131з sole sdu чнззп OOHqlfENHHH(NodoIHHdu ^йй£колл sdu) ^кллм eh laENHHEm ^ss«sa^^o§K И) ss^sa^^o HNIqJJqdHEm 0 IH3AH0 口
^XJ^OO хоои хх^з^га^ s^c 6.7MdIHBWAXOU .zl.q JXL
^ Qnhxe。BnHeHeEndu §^^EOIOi^~
□заИН1—'回 口一
dga1-;自 ws1TZ青la1g一
x°°hK^obra^^o emex。匚 HMHMr 1fMHsreFA 050c 0'wJMd 0 IHSWAXOU .II.yJMd
丁翳一爰扌亲 нет毒忐,-*、
A
^H^M (-so°
л
QBSUI Qsv^ В UORQOSqns EKHBWOH) ИИЙ工3golIов ①
二毛 Я1^ &ш*^^ ^йч л^
(七OS-Qs§ 0 UOAQOS Еййвхон) I°mx3°ROB ①
Qnlwe。wweHgndu s^maEUXOS^
:® 囤g-p^^^pp^ gl^ _|д|;в|нl-^qашь1ш|я1ш宴PI
一-J3A-3S-"告色-。9-,^ u_a^x &
т8Е «х^^фи KBJJEUg。womEXOU BHHBUmEduA
Раскрытие всех секций
Для раскрытия всех секций служит команда Expand All Sections. Она открывает и все подсекции. К примеру, если применить эту операцию к документу, показанному на рис. 4.12, то он вернется к исходному виду (рис. 4.9).
Таким образом, Maple 7 имеет достаточно простые, но в то же время полные средства по управлению видом пользовательского пптерфе11са (окна) системы и видом имеющегося в нем документа. Это позволяет пользователю настраивать интерфейс и вид документа в соответствии со своими привычками, обеспечивая комфортную работу с программой.
Работа с параметрами 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 s проделаем все те же вычисления в новой строке ввода. Получим следующее:
> 4+5:
5
7
9
Здесь видны уже три ячейки вывода. Не следует следует устанавливать флажок Replace Output в том случае, когда желательно знать суть промежуточных преобразований и самих исходных выражений, поскольку они (а возможно, и предшествующие результаты преобразований) при ее использовании исчезают.
Установка режима вставки новой ячейки
Этот флажок, будучи установленным, обеспечивает при нажатии клавиши Enter ввод новой пустой ячейки. Если флажок снят, то такая вставка не осуществляется.
Если работа с системой происходит в форме простейшего диалога, по типу «задать вопрос 一 получить ответ», то рекомендуется установить режим вставки новой ячейки. При этом по окончании вычислений в последней ячейке тут же появляется новая пустая ячейка для последующих вычислений.
Задание браузера
Для открытия документов web-страниц (по URL-адресу) Maple 7 использует какой-либо из установленных на компьютере браузеров Интернета. Для этого необходимо указать путь к браузеру с помощью команды Browser. Она открывает окно, показанное на рис. 4.13.
Select Browser
Г" Ц;е System В«Еа^1Г" Ц;е System В«Еа^1~| «酶窗弓 義 I fancd I~| «酶窗弓 義 I fancd I
Г" Ц;е System В«Еа^1
Г" Ц;е System В«Еа^1
~| «酶窗弓 義 I fancd I
~| «酶窗弓 義 I fancd I
Рис. 4.13. Окно задания браузера Интернета
В этом окне можно установить флажок Use System Default (использовать браузер, заданный в операционной системе по умолчанию). В противном случае путь к браузеру надо указать явно, введя его в поле или отыскав его с помощью кнопки Browse.
Параметры экспорта документов
Команда Export открывает очень простое окно установки параметров экспорта, показанное на рис. 4.14.
Export Options
ок
Рис. 4.14. Окно команды Export
Установка параметров представления строк ввода
Команда Input Display выводит подменю, позволяющее выбрать режим представления выражений в строке ввода:
О Maple Notation 一 ввод выражений в Maple-нотации (в строку);
О Standard Math Notation 一 ввод выражений в обычном математическом виде (его признаком является появление вопросительного знака в строке ввода).
В качестве примера ниже даны две формы задания ввода двойного интеграла с помощью палитры выражений;
> int(int(t?, t?«t?. Д?),片?Т?./?):
Верхняя строка соответствует Maple-нотации, а нижняя — стандартной математической нотации.
Установка параметров вывода
Команда Output Display раскрывает подменю, имеющее четыре команды, влияющие на вид результатов вычислений — вывода:
О Maple Notation — вывод в одну строку (как в Maple-языке);
О Character Notation 一 вывод в виде формулы, набранной из знаков на разных строках;
Q Typeset Notation — вывод в печатной форме без возможности редактирования;
О Standard Math Notation — вывод и виде обычной математической формулы.
Рисунок 415 наглядно иллюстрирует эти формы вывода. Последняя форма наиболее наглядна и задается по умолчанию.
Рис. 4.15. Демонстрация вывода в различных формах
Первая форяга наиболее компактна, но менее всего наглядна. Вторая форма имитирует построение формул с помощью отдельных знаков, расположенных на разных уровнях (строках). Эта две формы позволяют использовать Maple
даже в том случае, когда имеются устройства вывода (дисплеи и принтеры), работающие только в текстовых режимах. Третья форма дает вывод в виде обычных математических формул, но без возможности их редактирования.
Четвертая форма позволяет представить результат вывода, там, где это возможно, в виде обычных математических формул с применением типовых математп- ческих знаков — интегралов, производных, сумм, произведений, квадратных корней и т. д. В большинстве случаев именно эта форма вывода является наиболее наглядной. Она подобна третьей форме, но допускает редактирование выражешпь Как отмечалось, нажатием кнопки с символом «х» в панели ппст- румеитов документа можно попытаться и вводимое выражение представить в виде обычной математической форму;1ы, Однако это не всегда удается, поскольку далеко не все однострочные функции системы 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 наглядно иллюстрирует применение этих параметров.
Благодаря применению предполагаемых переменных облегчается реализация ряда алгоритмов, критичных к выбору переменных. Например, если использовать вычисление квадратного корня без привлечения понятия о комплексных числах, то
на численные значения переменных надо наложить условие их положительности. Контроль за статусом таких переменных и дают описанные параметры.
Рис. 4.16. Применение параметров контроля предполагаемых переменных
Управление показом графиков
Графические результаты могут быть представлены прямо в документе в ячейках вывода или в отдельных окнах. Это обеспсчивгются двумя командами подменю Plot Display:
О Inline — вывод графиков в ячейках вывода;
О Window — вывод графиков в отдельных окнах.
На рис. 4.17 показан пример вывода двух графиков — один выводится с применением Inline в ячейку документа (сразу после ввода), а другой с применением Window в отдельное окно. Какой из этих двух вариантов предпочтительнее, зависит от привычек пользователя.
Следует отметить, что из всех окон (документов или графиков) в данный момент активам может быть только одно окно. Если это окно графическое, то для него выводится своя контекстная панель инструментов, позволяющая ме-
нять вид графика и некоторые параметры, используемые при его построении. Кстати говоря, запись заданного документа на диск возможна только при активном окне этого документа.
日 Мар№7'日 Мар№7'^Untitled(2) (Server 11^Untitled(2) (Server 11
日 Мар№7'
日 Мар№7'
^Untitled(2) (Server 11
^Untitled(2) (Server 11
Рис. 4.17. Пример построения двух графиков с выводом одного из них в отдельное окно
Следует отметить, что из всех окон (документов или графиков) в данный момент активным может быть только одно окно. Если это окно графическое, то для него выводится своя контекстная панель инструментов, позволяющая менять вид графика и некоторые параметр^^используемые при его построении. Кстати говоря, запись заданного документа на диск возможна только при активном окне этого документа.、
Управление построением двумерных графиков
Двумерные графики обычно строятся с применением функции pl ot. На рис. 4.18 (и на рис. 1.24 с графиком в документе) представлено назначение кнопок контекстной панели инструментов двумерной графики. Кнопки обозначены номерами под ними, а в окне документа дано их краткое назначение.
Панель инструментов графиков появляется только при активном окне графики или при выделении графика в ячейке документа.
IE]Maple 7IE]Maple 7嶼& 聯 渺琳于雌境 鄭d 领餐,納解* 都鈍 恥》^Л^^-^ЙЙ»彼期备' W 7 、72闻喻З®| |х|电画 n~П回t>1 [^] pf1叵]卜;艮网 国国匝]:嶼& 聯 渺琳于雌境 鄭d 领餐,納解* 都鈍 恥》^Л^^-^ЙЙ»彼期备' W 7 、72闻喻З®| |х|电画 n~П回t>1 [^] pf1叵]卜;艮网 国国匝]:-2 02. -0 70-2 02. -0 70112345 6789 102345 6789 101 - Координаты графического маркера 2 - Задание стиля графика line style1 - Координаты графического маркера 2 - Задание стиля графика line style3 -Задание стиля графика point style5 - Стиль графика polygon path style7 - Построение осей слева и снизу9 - Построение графика без осей3 -Задание стиля графика point style5 - Стиль графика polygon path style7 - Построение осей слева и снизу9 - Построение графика без осей4 - Задание стиля графика gridlines style6 - Построение осей в виде прямоугольника3 - Построение осей в виде креста10 - Установка масштаба графика4 - Задание стиля графика gridlines style6 - Построение осей в виде прямоугольника3 - Построение осей в виде креста10 - Установка масштаба графика> plot(sin(хЛ3)*cos(x),x=-Pi..Pi,color=blue);> plot(sin(хЛ3)*cos(x),x=-Pi..Pi,color=blue);56」56」■0 5-■0 5--1 --1 -.歯.歯^ Untitled |3j - [SeceF^ Untitled |3j - [SeceFЛ /1 JЛ /1 JНазначехше кнопок панелн ф орматир ов ания двумерных графиковНазначехше кнопок панелн ф орматир ов ания двумерных графиков‘怖包$力 职e£36似飢圖abb i?羔‘怖包$力 职e£36似飢圖abb i?羔Рис.4Л8. Окно двумерного графика и его панель инструментовРис.4Л8. Окно двумерного графика и его панель инструментов
IE]Maple 7
IE]Maple 7
嶼& 聯 渺琳于雌境 鄭d 领餐,納解* 都鈍 恥》^Л^^-^ЙЙ»彼期备' W 7 、7
2闻喻З®| |х|电画 n~П回t>1 [^] pf1叵]卜;艮网 国国匝]:
嶼& 聯 渺琳于雌境 鄭d 领餐,納解* 都鈍 恥》^Л^^-^ЙЙ»彼期备' W 7 、7
2闻喻З®| |х|电画 n~П回t>1 [^] pf1叵]卜;艮网 国国匝]:
-2 02. -0 70
-2 02. -0 70
1
1
2345 6789 10
2345 6789 10
1 - Координаты графического маркера 2 - Задание стиля графика line style
1 - Координаты графического маркера 2 - Задание стиля графика line style
3 -Задание стиля графика point style
5 - Стиль графика polygon path style
7 - Построение осей слева и снизу
9 - Построение графика без осей
3 -Задание стиля графика point style
5 - Стиль графика polygon path style
7 - Построение осей слева и снизу
9 - Построение графика без осей
4 - Задание стиля графика gridlines style
6 - Построение осей в виде прямоугольника
3 - Построение осей в виде креста
10 - Установка масштаба графика
4 - Задание стиля графика gridlines style
6 - Построение осей в виде прямоугольника
3 - Построение осей в виде креста
10 - Установка масштаба графика
> plot(sin(хЛ3)*cos(x),x=-Pi..Pi,color=blue);
> plot(sin(хЛ3)*cos(x),x=-Pi..Pi,color=blue);
56」
56」
■0 5-
■0 5-
-1 -
-1 -
.歯
.歯
^ Untitled |3j - [SeceF
^ Untitled |3j - [SeceF
Л /1 J
Л /1 J
Назначехше кнопок панелн ф орматир ов ания двумерных графиков
Назначехше кнопок панелн ф орматир ов ания двумерных графиков
‘怖包$力 职e£36似飢圖abb i?羔
‘怖包$力 职e£36似飢圖abb i?羔
Рис.4Л8. Окно двумерного графика и его панель инструментов
Рис.4Л8. Окно двумерного графика и его панель инструментов
Управление построением трехмерных графиков
Трехмерные графики имеют свою контекстную панель инструментов (рис. 4.19; см. также рис. 1.25 с графиком в документе), с кнопками задания наиболее распространенных параметров для построения трехмерных графиков.
Следует отметить, что панели инструментов графических окон дают доступ лишь к части параметров графиков. Более подробно состав и назначение параметров будут рассмотрены в дальнейшем при описании средств создания графиков. Читателю настоятельно рекомендуется опробовать действие кнопок управления различными форматами графиков, что позволит быстрее освоить огромные возможности Maple 7 в создании цветных и монохромных графиков.
Работа с окнами
Меню Window
При серьезной работе в среде Maple 7 пользователь нередко вынужден работать одновременно с несколькими документами. Удобства такой работы зависят от
叵Maple 7 辱底版叵Maple 7 辱底版того, как окна расположены в пределах экрана. Maple 7 дает возможность расположить их любым стандартным способом.
叵Maple 7 辱底版
叵Maple 7 辱底版
圆翻*證融厂Fcyn®Е隽网田居幅獄好母料 Roiecac骑;「f£диh Wwnfaw出叩
国酢風紹[Щ囤 еЕ!而 國爾中 圆日面向Пр囤回 台匹飞 平回"用I翩◎圖欣解 0堂H働機阿承I同
123 4 5 6 7 8 92 - углы обзора фигуры- заливка без линий- только видимые линии- все линии без заливки- вывод "ящика"- удаление осей123 4 5 6 7 8 92 - углы обзора фигуры- заливка без линий- только видимые линии- все линии без заливки- вывод "ящика"- удаление осей1011 1213 14- Видимые линии и заливка- линии уровня и заливка. линии уровня без заливки9 - построение фигуры точками11,12 - вывод осей в разных формах- масштаба графика1011 1213 14- Видимые линии и заливка- линии уровня и заливка. линии уровня без заливки9 - построение фигуры точками11,12 - вывод осей в разных формах- масштаба графикаНазначешсе кнопок панешс форматнровашшНазначешсе кнопок панешс форматнровашштрехмерных графиковтрехмерных графиков« Untitled (5) - ISetvei 1]« Untitled (5) - ISetvei 1]
123 4 5 6 7 8 9
2 - углы обзора фигуры
- заливка без линий
- только видимые линии
- все линии без заливки
- вывод "ящика"
- удаление осей
123 4 5 6 7 8 9
2 - углы обзора фигуры
- заливка без линий
- только видимые линии
- все линии без заливки
- вывод "ящика"
- удаление осей
1011 1213 14
- Видимые линии и заливка
- линии уровня и заливка
. линии уровня без заливки
9 - построение фигуры точками
11,12 - вывод осей в разных формах
- масштаба графика
1011 1213 14
- Видимые линии и заливка
- линии уровня и заливка
. линии уровня без заливки
9 - построение фигуры точками
11,12 - вывод осей в разных формах
- масштаба графика
Назначешсе кнопок панешс форматнровашш
Назначешсе кнопок панешс форматнровашш
трехмерных графиков
трехмерных графиков
« Untitled (5) - ISetvei 1]
« Untitled (5) - ISetvei 1]
Tene 6.7$ В*。221М Avaifatta T 65G
Рис. 4.19. Окно трехмерного графика и назначение кнопок панели инструментов
Основные команды по установке расположения окон сосредоточены в меню Window (рис. 4.20).
Рис. 4.20. Меню WindowРис. 4.20. Меню Window
Рис. 4.20. Меню Window
Рис. 4.20. Меню Window
Это меню содержит следующие команды:
О Cascade — каскадное расположение окон;
О Tile — расположение окон мозаикой;
Q Horizontal — расположение окон по горизонтали;
Q Vertical — расположение окон по вертикали;
О Arrange Icons — упорядочение расположения икон;
О Close АП — закрытие всех окон документов;
О Close All Help — закрытие всех окон справочной системы.
Каскадное расположение окон
Каскадное расположении окон напоминает колоду карт, сдвинутых так, чтобы были видны их титульные строки. Такое расположение окон показано на рис, 4.21.
Рис. 4.21. Каскадное расположение окон документов
Расположение окон мозаикой
При выполнении команды Tile устанавливается расположение окон мозаикой, показанное на рис. 4.22. При этом окна не перекрываются, имеют примерно одинаковый размер. К сожалению, при большом числе окон область просмотра оказывается настолько мала, что работать с документами при таком расположении окон становится неудобно.
Расположежйе окон мозаикой достаточно удобно при работе с двумя (или на большом экране тремя) окнами. Оно может быть полезно, например, при лере- носе содержимого отдельных ячеек с одного документа в другой путем перетас-
кивания. Можно также копировать объекты в одном окне, а затем, переключившись в другое окно, вставлять содержимое буфера обмена в нужную ячейку, используя команду Paste.
I日 Mapte 7一I日 Mapte 7一№ 电* 加* Fcfmat 倣&9 熟“ £ob(举ec £,c樹出弟“,酬呎幽dew長*向业恒闻гвшдадиш画не国国国画№ 电* 加* Fcfmat 倣&9 熟“ £ob(举ec £,c樹出弟“,酬呎幽dew長*向业恒闻гвшдадиш画не国国国画X:门C專:页工匸:匕X:门C專:页工匸:匕п;п;|6 G3dpajm$ - [Seeer 1]|6 G3dpajm$ - [Seeer 1]> plot3d([cos(t)*(l+.2*sin(u)J,sl)*(1+.2*sin(u)),.2*sln(t)*gos(u)I,:t=-.8..1.5*Pi,u=-Pi..0.7*Pi);」> plot3d([cos(t)*(l+.2*sin(u)J,sl)*(1+.2*sin(u)),.2*sln(t)*gos(u)I,:t=-.8..1.5*Pi,u=-Pi..0.7*Pi);」Пример решенияПример решениясистемы из пятисистемы из пяти
I日 Mapte 7一
I日 Mapte 7一
№ 电* 加* Fcfmat 倣&9 熟“ £ob(举ec £,c樹出弟“,酬呎幽dew長*
向业恒闻гвшдадиш画не国国国画
№ 电* 加* Fcfmat 倣&9 熟“ £ob(举ec £,c樹出弟“,酬呎幽dew長*
向业恒闻гвшдадиш画не国国国画
X:门C專:页工匸:匕
X:门C專:页工匸:匕
п;
п;
|6 G3dpajm$ - [Seeer 1]
|6 G3dpajm$ - [Seeer 1]
> plot3d([cos(t)*(l+.2*sin(u)J,sl
)*(1+.2*sin(u)),.2*sln(t)*gos(u)I,:
t=-.8..1.5*Pi,u=-Pi..0.7*Pi);」
> plot3d([cos(t)*(l+.2*sin(u)J,sl
)*(1+.2*sin(u)),.2*sln(t)*gos(u)I,:
t=-.8..1.5*Pi,u=-Pi..0.7*Pi);」
Пример решения
Пример решения
системы из пяти
системы из пяти
融а83陇.工63带融а83陇.工63带> eqsl := {x + 2*y + 3*z + 4*t + 5*u = 6,> eqsl := {x + 2*y + 3*z + 4*t + 5*u = 6,、R ★ v 丄二★,? 4. Л * г、R ★ v 丄二★,? 4. Л * гJ- ^ *4- J-圖 ^^B2J- ^ *4- J-圖 ^^B2
融а83陇.工63带
融а83陇.工63带
> eqsl := {x + 2*y + 3*z + 4*t + 5*u = 6,
> eqsl := {x + 2*y + 3*z + 4*t + 5*u = 6,
、R ★ v 丄二★,? 4. Л * г
、R ★ v 丄二★,? 4. Л * г
J- ^ *4- J-圖 ^^B2
J- ^ *4- J-圖 ^^B2
линейных уравнении
Демонстрация работы с системой Maple 7
代 i £ £《в工八 £:戈 $;
2 зт(л) соз(л)
i >'!'(■ ( j /s•寸:ri Г2 ■•*•' <J) ,x •:V . . 1 J ;
1
2
Рис. 4.22. Расположение окон мозаикой
Горизонтальное расположение окон
При использовании команды Horizontal окна оказываются расположеными на экране в виде горизонтальных полос (рис. 4.23). Этот вариант расположения окон, как и каскадное расположение, дает обзор заголовков документов, если область просмотра каждого документа расположена сверху окна. Последнее условие может нарушаться при перемещении окон документов.
Вертикальное расположение окон (Vertical)
Команда Vertical задает расположение окбнТйиде вертикальных полос (рис. 4.24). Такое расположение окон удобно, если содержимое ячеек документов представлено короткими выражениями.
Следует отметить, что описанным командам подчиняются только развернутые в данный момент окна — расположение вновь открытого или развернутого окна не зависит от данных до этого команд.
[О Maple 7
俄 е<й 加v 刑* 电阳》翻輪 3* 举e* £*tw 7…:“料隱I» 銀澈мц 0(診二、、、一、 _,_ 睫I钢agi^gr雪璇I.型I田面即вшг囹画^ - 8回福 中ЕT福[嗣①懒I蒯寥1翻阂瞳海|®f難 圓 , ^
3 G3dpai.m,- ISeiver 1]
鑛圆圈!鑛圆圈!圜圜Пример решения системы из пяти линейныхПример решения системы из пяти линейных> 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);> 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);Построение 3D графика для функции, заданной в параметрической форме
鑛圆圈!
鑛圆圈!
圜
圜
Пример решения системы из пяти линейных
Пример решения системы из пяти линейных
> 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);
> 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);
出11出11уравнении
出
11
出
11
Демонстрация работы с системой Maple 7
> ^-Li i《к 1.» < z) ' ? , x ;'
2 SG(X)CGF(X)
Рис. 4.23. Горизонтальное расположение окон
St gsft 抬《у insert 財用砒 「
QpkorB 必;*dew ВФ
m严®國司河谏]也因3 ГР同同
л п h' 1 ri Ик*т』ш・(■ ^1П1 :xil
Построение 3D 三 ■ графика для
Top С обмоткой g
Пример m
Демонстрация 三 работы с
:функции,
> pl:=spacecurv« ([cos(t)*(10+3
решения
системой Maple 7
заданной в
*sin(t*15)),si
системы из
параметрической
n(t)*(10+3*sin
:форме
(t*15)), 2*cos
пяти
2$ш⑺ со$(х)
(t*15),t=0..2*
> XX
;2/"年:?.■•《讎
.> plot3d( [cos(t)
Pi,numpoints=l
линейных
*(1+.2*sih(u))
000],color-bla
,sin(t)*(l+.2*
ck) :Ж
уравнений
sin(u)),.2*sin
> p2:-tubeplot([
f> В st
(t)*cos(u)],t-
10*cos(t),10*s
*/3》,緻
-.8..1.5*Pi,u-
in(t),0LU..
> eqsl :=
-Pi..0.7*Pi);
2*Pi,nu»points =100, radius-2
{х + 2*у
,,style-PATCHNO
+ 3*z +
GRID):
4*t + 5*u
(T)
> display((plrp2
},scaling-UNCO
=6,
NSTRA.INED);
> 5*х + 5*у
[3丿
+ 4*z +附
0
舞图駿I
3apte7
Рис. 4.24. Вертикальное расположение окон
Приведение в порядок значков свернутых окон
Свернутые окна представлены значками. Они могут перемещаться мышью по всему пространству экрана, поэтому иногда значки оказываются хаотично разбросанными (рис. 4.25).
Рис. 4.25. Хаотическое расположение значков свернутых окон
Для наведения порядка с расположением значков можно, разумеется, переместить каждый из них в удобное место. Но это довольно утомительное занятие. Лучше воспользоваться специальной командой Arrange Icons, которая автоматически наводит порядок в расположении значков свернутых окон, аккуратно располагая их снизу экрана. Действие этой команды показано на рис. 4.26.
Как и окно, каЖдьш значок имеет строку^аголовка с четырьмя маленькими кнопками. Первая из них открывает меню управления, а три другие используются соответственно для восстановления размера, развертывания на весь экран и закрытия окна.
Закрытие всех окон одновременно
Команда Close АП служит для закрытия всех окон одновременно. Эта команда будет выполнена сразу только в том случае, когда все документы не модифицировались или были записаны на диск после внесения исправлений. Если какой-либо
документ был изменен, но еще не сохранен, то в центре экрана появится предупреждающее сообщение об этом (рис. 4.27).
Mapte 7Mapte 7
Mapte 7
Mapte 7
a
The а出ksbe&"83$>3$"g m:" hs$ been якхйей :
日口明u 邮hto iave Otbetafeciosing7:
О-гменаО-гмена
О-гмена
О-гмена
Рис. 4.27. Окно, предупреждающие о том,что закрываемый документ был изменен
Разумеется, такое окно будет появляться столько раз, сколько имеется модифицированных документов.
Закрытие всех окон справочной системы
В Maple 7 использована многооконная справочная система с гипертекстовыми ссылками. Поэтому при работе с ней экран системы довольно быстро оказывается забитым окнами справочной системы. Разумеется, их можно последовательно закрывать одно за другим, но это очень неудобно и долго. Команда Close All Help
обеспечивает закрытие разом всех окон справочной системы, что позволяет продолжить работу с текущим документом. На окна загруженных документов операция Close All Help влияния не оказывает.
Список открытых документов
Заканчивая рассмотрение меню Window, надо отметить, что оно завершается списком всех открытых в Maple 7 документов и соответственно окон (рис. 4.26). Щелкнув на той или иной строке этого списка, можно открыть соответствующее окно и сделать его активным.<
Что нового мы узнали?
В этом уроке мы научились:
О о о о Q О О
Изменять вид интерфейса и документа.
Выводить и скрывать палитры математических знаков.
Управлять показом непечатаемых символов.
Изменять статус ячеек документа.
Устанавливать параметры Maple 7.
Работать с окнами документов.
Просматривать список открытых документов.
丈亚电 Типы даТ|Х1 .
системы Maple 7
Maple-язык и его синтаксис
Выражения и основы работы с ними
Простые типы данных
Данные множественного типа
Строки и комментарии
口 Переменные
Константы
Maple-язык и его синтаксис
Знаки алфавита
Язык Maple (или Maple-язык) является одновременно входным языком общения с Maple 7 и языком ее программирования. Входящие в пего средства (прежде всего операторы и функции) подобраны настолько полно и удачно, что при решении подавляющего большинства типовых математических задач от пользователя не требуется знаний даже основ программирования. Для решения нужной задачи обычно достаточно составить алгоритм и подобрать набор нужных для его реализации функций и иных средств Maplc-языка.
В то же время Maple-язык — один из самых мощных языков программирования математических задач, содержащий почти 3000 операторов, команд и функций, входящих в ядро, основную библиотеку и пакеты функций Maple 7. При этом относящаяся к традиционному программированию часть Maple-языка ре- алнз?вана с помощью довольно скромного набора специальных знаков и зарезервированных слов.
Большинство функций Maple 7 (в частности, все, входящие в пакеты) написаны па этом языке. Поэтому знание этого языка является определяющим в серьезном изучении Maple. Ниже Maple-язык описывается как типичный язык программирования.
Алфавит Maple-языка содержит 26 малых латинских букв (от а до z), 26 больших латинских букв (от А до Z), 10 арабских цифр (от 0 до 9) и 32 специальных символа (арифметические операторы +, -, *, /, знак возведения в степень 人 и др.). Все они будут рассмотрены в данной главе. Имеется пять пар альтернативных символов (означающих одно и тоже):
Л и **[ и(I] и I){ и (*} и *)
К специальным одиночным и составным знакам относятся элементы синтаксиса языка:
Q % — системная переменная, хранящая результат предшествующей операции;
О : — фиксатор выражения, предотвращающий вывод результата вычисления в ячейку вывода;
О ; — фиксатор выражения, дающий вывод результата вычисления в ячейку вывода;
О # — указатель программного комментария;
О ' — ограничитель Строки (например, 'string');
О := — оператор присваивания (например, х:=5);
О ; ; — пустой оператор;
О :: — указатель типа переменной (например, n: : integer или z: :complex);
Q \ — знак обратного деления, который имеет множественные значения в зависимости от контекста (см. справку по этому знаку - backslash).
Комментарии в программе, не выводимые в ячейки вывода, задаются после символа #. В них допустимо использовать все символы кодовых таблиц, что важно при вводе русскоязычных комментариев, пспольз^тощих символы кириллицы. Применение последних для идентификаторов (имен) объектов недопустимо.
Зарезервированные слова
которым записываются определения всех объектовкоторым записываются определения всех объектовЗарезервированные слова используются для создания условных выражений, циклов, процедур и управляющих команд. Список 42 зарезервированных слов Maple 7 дан ниже.
которым записываются определения всех объектов
которым записываются определения всех объектов
and
break
by
catch
description
do
done
elif
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*10*100 или 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)*2+cos(x)*2);
1
simplify((x人2-2*х*а+а人2)/(х・а));
х- а
Символьные преобразования и вычисления математических выражений более подробно будут рассмотрены в. следующем уроке.
Для выполнения любых математических операций необходимо обеспечить ввод в систему исходных данных — в общем случае математических выражений. »Для ввода их и текстовых комментариев служат два соответствующих типа строк ввода. Переключение типа тскуи!ей строки ввода осуществляется клавишей F5. Строка ввода математических выражений имеет отличительный символ >, а строка ввода текстов такого признака не имеет.
В строке ввода может располагаться несколько выражений. Фиксаторами (указанием, что выражение окончено) их могут быть символы ; (точка с запятой) и : (двоеточие). Символ «;» фиксирует выражение и задает вывод результатов его вычисления. А символ «:» фиксирует выражение и блокирует вывод результатов его вычисления. Фиксаторы выполняют также функцию разделителей выражений, если в одной строке их несколько.'
Ввод выражения оканчивается нажатием клавиши Enter. При этом маркер ввода (жирная мигающая вертикальная черта) может быть в любой позиции строки. Если надо перенести ввод на новую строку, следует нажимать клавиши Shift и Enter совместно. С помощью одного, двух или трех знаков % (в реализациях до Maple V R5 это был знак прямых кавычек ") можно вызывать первое, второе или третье выражение с конца сессии:
> arb:c:
С
> а:Ь:с:
> И: b
> а:Ь:с:
>
а
> 2+3:
5
> П+5:
10
Особая роль при вводе выражений принадлежит знакам прямого апострофа (одиночного 1 или двойного 1'). Заключенное в такие знаки выражение освобождается от одной пары (закрывающего и открывающего знаков '):
> "factor(a*2+2*a*b*2+b*2)'';
factor (а2 + 2а b2 + 62y
>
facto г (a2 + 2 a 62 + b2y
> factor(a*24-2*a*t^bx2);
(a + b)2
Некоторые другие возможности обрамления выражении апострофами мы рассмотрим позже. Наиболее важная из них — временная отмена выполненного ранее присваивания переменным конкретных значений.
Для завершения работы с текущим документом достаточно исполнить команду quit, done или stop, набранную в строке ввода (со знаком ; в конце).
Оценивание выражений
Встречая выражение, Maple 7 оценивает его, то есть устанавливает возможность его вычисления. Если выражение — скалярная переменная, то ее значение будет выведено в ячейке вывода. Для переменных более сложных типов выводится не их значение, а просто повторяется имя переменно!!. Просто повторяются также имена неопределенных переменных.
Для оценивания выражении различного типа существует группа функций, основные из которых перечислены ниже:
О eval (array) — возвращает вычисленное содержимое массива array:
О evalf(expr, n) — вычисляет ехрг п возвращает вычисленное значение в(]х)р- ме числа с плавающей точкой, имеющего п цп(])р после десятичной точки;
О evalhf(ехрг) — вычисляет ехрг п возвращает вычисленное значение с точностью, присущей оборудованию данного компьютера;
О evalf(1nt(f, х=а. .b)) — оценивает п возвращает значение определенного интеграла int(f ,х=а. .Ь);
О evalf(Int(f, х=а..Ь)) — оценивает и возвращает зпачсние определенного интеграла, заданного инертной функцией Int(f,х=а, .Ь);
О evalf(Int(f, x=a..b, digits, flag)) — аналогично предыдущему, по возвращает значение интеграла с заданным параметром digits числом ци(])р после десятичной точки п со спецнфпкацис!! метода вычислений flag;
О evalm(mexpr) — вычисляет значение матричного выражения mexpr и возвращает его;
О evalb(bexpr) — вычисляет и возвращает значения логических условий;
О evalc(cexpr) — вычисляет значение комплексного выражения;
О eval r(expr, ampl) — оценивает и возвращает значения интервальных выражений (функция должна вызываться из библиотеки);
О shake(expr, ampl) — вычисляет интервальное выражение.
Для функции eval f парамер п является необязательным, при его отсутствии полагается п=10, то есть ве[цёственные числа выводятся с мантиссой, имеющей десять цифр после десятичной запятой.
В выражении ехрг могут использоваться константы, например PI, ехр(1), и функции, такие как exp, In, arctan, cosh, GAMMA и erf. В матричном*выражении mexpr для функции eval m могут использоваться операнды в виде матриц и матричные операторы &*, +, - и Л. В комплексных выражениях сехрг наряду с комплексными операндами вада (а + 1*Ь) могут использоваться многие обычные математические функции:
sin
cos
tan
CSC
sec
cot
sinh
cosh
tanh
csch
sech
coth
arcsln
arccos
arctan
arccsc
arcsec
arccot
arcsinh
arccosh
arctanh
arccsch
arcsech
arccoth
exp
In
sqrt
abs
conjugate
polar
argument
signum
csgn
Re
Im
Ei
LambertW
dilog
surd
Примеры
применения
функций
оценивания
даны ниже:
А:=[[1.2].[3.4]]: Л-[[1,2]ДЗ,4]]
eval(А):
[[1,2],[3,4]]
evalf(sin(D): .8414709848
> evalf(sin(2)*2+cos(2)*2,20): LOOOOOOOOOOOOOOOOOOO
evalhf(sind)):
.841470984807896505
evalm(20*A+l);
21 40一
60 81
кЗ:
1 <3
evalb(l<3): true
readlib(shake):
evalr(min(2.sqrt(3))):
evalr(absfx)):
INTERVAL(INTERVAL , 0 g), -INTERVAI/ , -8 ・・ 0))
shakefPi,3):
INTERVAL^」102 .. 3.1730)
В дальнейшем мы многократно будем применять функции рцецивания для демонстрации тех или иных вычислений.
Последовательности выражений
Maple 7 может работать не только с одиночными выражениями, но и с последовательностями выражений. Последовательность выражений — это ряд выражений, разделенных запятыми и завершенных фиксатором:
> a.y<-z.l2,3#cos(1.0):
a.y + z, 12.3, .5403023059
Для автоматического формирования последовательности выражений применим специальный оператор $, после которого можно указать число выражений или задать диапазон формирования выражений:
> f$5:
> $L・5:
1,2, 3,4, 5
> (從)$5;
R М
> (пЛ2)$п=0..5:
0, 1,4, 9,16, 25
> Vl[i]$i=L・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=[sin.cos,tan]):
.8414709848 . .5403023059, 1.557407725
> sin(l.O).cos(l.O).tan(l.O):
.84i4709848, .5403023059, 1.557407725
Вывод выражений
При выполнении порой даже простых операций результаты получаются чрезвычайно громоздкими. Для повышения наглядности выражений Maple 7 выводит их с выделением общих частей выражений и с присваиванием им соответствующих меток. Метки представлены символами ZN, где N — номер метки.
Помимо меток при выводе результатов вычислсни!! могут появляться и другие специальные объекты вывода, например корни RootOf, члены вида。(联),учитывающие погрешность при разложении функций в ряд, и обозначения различных специальных функций, таких как интегральный синус, гамма-функция и др. Примеры такого вывода приведены ниже:
> solve(x*7-x*2-l.x);
;+ ;/户,;-;/户,RootOf(_z5 + _Z4-_Z2-JZ-l,index = 1),
RootOf(_Z5 + —Z4 — _Z2 — _Z — 3 index = 2),
RootOf(_Z5 + —Z4 — _Z? — _Z — 1,加dex = 3),
RootOf(_Z5 + _/ - _Z2 - _Z - 1, index = 4),
RootOf(_Z5 + / - —Z? -- 1,历dex 工 5)
> taylor(sin(x).x,5):
х-7Х3 + О(л5)
> int(sin(x)/x,x): simplify(N!):,
Si(x)
F(N+ 1)
Часто встречаются также знаки ~ для отметки предполагаемых переменных, постоянные интегрирования н другие специальные обозначения. По мере упоминания в тексте таких объектов вывода они будут описаны.
Простые типы данных
Числа и числовые константы
Maple 7 работает с числами следующего типа: целыми (0. 1, 123. -456 и т, д,), рациональными в виде отношения целых чисел (7/9, -123/127 и т, д,), вещественными с мантиссой и порядком (L23E5, 123,4567Е-10), Признаком вещественного числа является десятичная точка (запятая). Примеры простых операций с числами приведены ниже:
> 12+34/47;m 598
> -12+34*47:
1586
> 1/3;
1
3
> 1./3: .3333333333
> 12*10Л(-15)*3;
9йббоооообооооо
> 12,*10Л(-15)*3: .3600000000 10“з
Как видно из этих примеров, ввод и вывод чисел имеет следующие особенности:
О для отделения целой части мантиссы от дробной используется разделительная точка;
О нулевая мантисса не отображается (число начинается с разделительной точки);
О мантисса отделятся от порядка пробелом, который рассматривается как знак умножения;
О мнимая часть комплексных чисел задается умножением ее на символ мнимой единицы I (квадратный корень из -1).
Десятичная точка в числах имеет особый статус — указание ее в любом месте числа, даже в конце, делает число вещественным и ведет к переводу вычислений в режим работы с вещественными числами. При этом количеством выводимых после десятичной точки цифр можно управлять, задавая значение системной переменной окружения Digits:
Digits:=3:l./3;
.333
Digits:=10:exp(l.):
Digits 尸 10
2.718281828
D1gits:=40:evalf(P1):
3.141592653589793238462643383279502884197
I^Mapte 7 {gdc.ntvs [Server 1]|I^Mapte 7 {gdc.ntvs [Server 1]|Для работы с числами Maple 7 имеет множество функций. Опи будут рассмотрены в дальнейшем. На комплексной плоскости числа задаются координатами точек (л; у) (рис. 5.1).
I^Mapte 7 {gdc.ntvs [Server 1]|
I^Mapte 7 {gdc.ntvs [Server 1]|
<證fii& £sft 娴⑶护駅F做* . . 1 - Options 蜘由w mфГ/需卜為
Геометрическое представление действительных и комплексных чисел:雪
(3,3), (-3,2), z=44-3tI, -z, conjugent(z) и abs⑵ >*restart:with(plots): U&rning, the name changecoord;? has ha&n redefined
f> z:=4+3*1;
z := 4 + 3『
> display (pointplot ({ [3,3] , [-3,2] }),
complexplot([0,z],x=-6..6,color=black),
complexplot([0,-z],xa-6..6,color=blue),
complexplot({0 fconjugate(z) }f x=-6..6,uolor=red), polarplot(abs (z) , scaling=constrained<color=gold));
Рис. 5.1. Представление обычных и комплексных чисел на плоскости
Для представления чисел на рис. 5.1 используется функция pointplotdist), где list — список координат точек. Эта функция становится доступной при подключении пакета plots командой with(plots). Кроме того, использована функция вывода ряда графических объектов на один график — display (см. д^лее описание представления комплексных чисел).
С помощью функции convert Maple 7 может преобразовывать числа с различным основанием (от 2 до 36, в том числе бинарные н шестнадцатеричные) в десятичные числа:
> convertC'HOOllll". decimal. binary):
207
〉convert(”lAF.C". decimal. hex);
431.7500000
> convert("Maple", 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.254^1*1 :
1.25+/л
> Re(L25卄MI);
1.25
> Im(1.25445i*I):
Комплексные числа обычно представляют на так называемой комплексной плоскости, у точек которой координата х задает действительную часть комплексного числа, а у (мнимая ось) показывает мнимую часть такого числа. На рис. 5.1 показано задание в виде радиус-векторов комплексного числа z = 4+3I, -z и комплексно-сопряженного числа 4-31.
Окружность радиуса abs(z) = Ja? + b? представляет абсолютное значение комплексного числа z=a+-b*I. Она является геометрическим множеством комплексных чисел, образованных концом вращающегося радиус-вектора числа z вокруг его начала в точке (0, 0) комплексно!! плоскости. Позже мы рассмотрим ряд (функций для работы с комплексными числам п.
Контроль за числами
Числа могут служить объектами ввода, вывода н константами, входящими в математпческие выражения. Функция type(х, numeric) позволяет выяснить, является ли х числом. Если является, то она возвращает логическое значение true (истина), а если нет, то false (ложь). Например:
> type(2,numeric): true
> type(2.6,numeric); true
> typeCPi.numeric):
> type(I,numeric):
false
> type(3/7,numeric); true
> type(3^7,numeric): true
> type(x^2,numeric);
false
Функции type(x. integer), type(x. rational) и type(x, fraction) можно использовать для проверки того, имеет ли х значение соответственно целого числа, рационального числа или простой дроби:
> type(123,integer):
true
> type(123:,integer):
false
> type(123/456,rational):
true
> type(l./3,rational);
false
> type(l/2,fraction);
true
type(0.5,fraction): false
Преобразования чисел с разным основанием
В Maple возможна работа с числами, имеющими различное основание (base), в частности с двоичными числами (основание 2 — binary), восьмеричными (основание 8 — octal) и шестнадцатеричными (основание 16 — hex). Функция convert позволяет легко преобразовывать форматы чисел:
> convert(12345,binary);
11000000111001
converter,decimal.binary); 12345
convert(12345,octal):
30071
convert(123456,hex):
1E240
converter,decimal.hex): 123456
Помимо приведенных вариантов функция convert имеет еще ряд других форм. С ними можно познакомиться с помощью справки по этой мощной функции. В дальнейшем будет приведен ряд других применений этой функции.
Данные множественного типа
Наборы (множества)
Любые выражения могут включаться также в наборы. Такие наборы в виде множеств создаются с помощью фигурных скобок { }:
{a,b,a,a,b,d,e,c,d};”
{а, b, с, e,d}
> {10,24-3,4+4,8,5,1};
{1,5, 8,10}
{'Hello','my','friend'};
{friend. Hello, my}
Отличительная черта множеств — автоматическое устранение из них повторяющихся по значению элементов. Кроме того, Maple 7 расставляет элементы множеств в опцрделенном порядке — числа в порядке увеличения значения, а символы и строки в алфавитном порядке. Для множеств нет строгого математического определения, и мы будем считать их наборами, удовлетворяющими перечисленным Bbfine признакам. ,
Списки выражений
Для создания упорядоченных наборов — списков — служат квадратные скобки []:
[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 даны ниже:
X:=[1,2,3,4.5]:Y:=[3.2.1,1.5,2.5]:
pare:-(X,Y)->[X.Y]:
pare := (X У)—> [尤 У]
CoordXY:=zip(pare.X.Y.2):
[[1,3], [2, 2], [3, 1], [4, 1.5], [5, 2.5]]
zip((X.Y)->X+Y,X.Y):
[4,4, 4,55 7.5]
Рисунок 5.2 показывает применение этих средств для построения точек, представляющих множество действительных чисел на плоскости. Для этого использована функция pointplot из пакета plots.
МассивыЛ векторы и матрицы
Как отмечалось, важным типом данных являются списки (lists). Они создаются с помощью квадратных скобок, например:
О [1,2,3,4] — список из четырех целых чисел;
О [1. ,2.34,5] — список из двух вещественных и одного целого числа;
О [а,Ь, 'Привет'] — список из двух символов (переменных) и строковой константы;
О [sin(x), 2*cos(x) .аЛ2~Ь] — список из трех математических выражений.
Для создания векторов (одномерных массивов) и матриц (двумерных массивов) служит функция array. Обычно она используется в следующих формах:
О array[a. .b.sl] — возвращает вектор с индексами от а до b и значениями в одномерном списке si;
О array[a. .b.c. .d.s2] — возвращает матрицу с номерами строк от а до Ь, номерами столбцов от с до d и значениями в двумерном списке s2.
Рис. 5・2・ Представление множества чисел на плоскости
Примеры задания вектора и матрицы представлены ниже:
О аггау(1. .3, [х.у.х-^у]) — создает вектор с элементами х, у п х + у;
О аггау(1. .2,1. .2,[[а,Ь].[с,d]]) — квадратная матрица с d
Двумерные списки часто путают с матрицами. Следует помнить, что векторы и матрицы создаются с помощью функции array и являются отдельным типом данных. Элементами векторов и массивов могут быть константы, переменные, выражения, списки и иные объекты. Эти элементы являются индексированными переменными и их положение указывается индексами.
Имеется множество функций для работы со списками, массивами и матрицами. Они будут рассмотрены в дальнейшем. В принципе, размерность массивов, создаваемых списками, не ограничена и массивы могут быть многомерными.
Таблицы
Еще одним Лажным типом множественных данных являются таблицы. Они задают данные с произвольной индексацией. Для создания Таблиц служит функция table, которая при вызове в простейшем виде table[] создает шаблон пустой таблицы:
tablet]:
table^ ]
Пустая таблица резервирует память под данные. Когда параметром функции table является список выражений, он выводится в естественном порядке расположения элементов таблицы, но с произвольным порядком индексации:
table[];
tnbl
T:=table({1.2,Pi t'string'});
T tablc([l = 1,2 = 2, 3=兀,4 = string])
T[3];
S:=table([(one)=l,(two)=2,(three)=3]);
S := table([o〃e 二 1, three = 3, two 二 2])
S[l];
S[two]:
2
S[three];
3
entries(S);
[1]J3],[2]
indices(S):
[one], [three], [two]
В конце приведенных примеров показано, как можно выделить отдельные компоненты таблицы и вывести значения к индексы таблицы с помощью функций entries и indices. Следующие примеры показывают, что таблицу можно использовать для выполнения математических преобразований:
F 产 tabiе([sin«cos,cos=-sin]):
op(op(F)):
[cos 二-sin, sin 二 cos ]
F[cos](P1/2);
-1
F[sin](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 — логическое значение «истинно»;
О Cetalan — константа Каталана, равная 0.915965594...;
О FAIL — специальная константа (см. справку, выдаваемую по команде 7FAIL);
О I — мнимая единица (квадратный корень из -1);
О Pi — представляет константу л = 3.141...
Любопытно, что в этот список не входит основание натурального логарифма — число е. В качестве этой константы рекомендуется использовать ехр(1). Она отображается как жирная прямая буква Е. А ехр(1.0) выводит 2.71828... (что и следовало ожидать).
Идентификация констант
Функции type(x, constant) и type(x, real cons) возвращают логическое значение true, если х представляет целочисленную или вещественную константу, и false, если х не является константой. Таким образом, эти функции можно использовать для идентификации констант, например:
typefPi.constant); true
type(2.constant): true
type(172.constant);
true
type(.5,constant);
true
type(x/y.constant):
false1
typedn(- Pi) .constant):
true
type(infinity,constant): true
typed.234,realcons);
true
type(x*y.realcons);
false
type(2+3*I,real cons):
false
Защита идентификаторов констант
Имена встроенных констант (как и имена функций) защищены спсциальньЛ1 атрибутом protected. Поэтому (без его снятия) константам нельзя присваивать какие-либо значения:
Р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.
Переменные
Типы переменных
Как следует из самого названия, переменные — это объекты, значения которых могут меняться по ходу выполнения1 документа. Пока мы рассматриваем лишь
глобальные переменные, доступные для модификации значений в любом месте документа. Тип переменной в системе Maple 7 определяется присвоенным ей значением — это могут быть целочисленные (integer), рациональные (rational), вещественные (real), комплексные (comp!ex) или строчные (string) переменные и т. д. Переменные могут также быть символьного типа (их значением является математическое выражение) или типа списка (см. далее). Для явного указания типа переменных используется конструкция:
name::type,
где пате — имя (идентификатор) переменной, type — тип переменной, например целочисленный (integer), вещественный с плавающей точкой (float), с неотрицательным значением (nonneg), комплексный (complex) и т. д.
Идентификаторы (имена) переменных
Переменные задаются своим именем — идентификатором, который должен начинаться с буквы и быть уникальным. Это значит, что ключевые слова языка Maple нельзя использовать в качестве имен переменных. Хотя имена ряда команд и функций можно использовать в качестве идентификаторов переменных, делать это крайне нежелательно. Ограничений на длину идентификатора практически нет — точнее, она не должна превышать 524 275 символов! Так что сложностей с подбором идентификаторов для переменных у вас не будет.
Имена переменных могут содержать одну букву (например, х, Y или Z) либо ряд букв*(Хттп или Хтах). В любом случае имя переменной надо начинать с буквы. Некоторые символы, например знак _, могут использоваться в именах (например, Var_l, Var_2). Нельзя, однако, вводить в имена переменных знаки, обозначающие операторы, — например, а/b или а-b будет истолковано как деление а на b или вычитание из переменной а переменной Ь.
Имена могут задаваться в обратных апострофах. При этом они просто тождественны именам без апострофов:
> varl:=123;var2:e'Hello';
varl :== 123
var2 := Hello
> 'varl';'var2';
123
Hello
Строчные и прописные буквы в идентификаторах различаются, так что Vari и varl — это разные переменные.
Для проверки предполагаемого имени на уникальность достаточно выполнить команду ?name, где name — выбранное имя. Если при этом откроется окно справки с этим именем, значит, оно уже использовано в Maple. Лучше воздержаться от его применения, так как связанная с этим именем команда или функция перестает работать, как только это имя закрепляется за какой-либо переменной.
Присваивание переменным значений
Поскольку Maple 7 прежде всего система символьной математики, то по умолчанию любые переменные рассматриваются как объекты символьного типа. Благодаря этому такие переменные могут фигурировать в математических выражениях (таких, как sin(x)/x) без их предварительного объявления. В отличие от обычных языков программирования такое использование переменных не влечет за собой появления сообщений об ошибках и является более естественным.
Для присваивания переменным конкретных значений используется комбинированный символ присваивания «:==», например:
О п:=1 — переменной п присваивается целочисленное значение 1;
О х: =123.456 — переменной х присваивается вещественное значение 123.4 56;
О у:=17/19 — переменной у присваивается рациональное значение 17/18;
О name: = 'Piter' — переменной name присваивается строковое значение 'Piter';
О expr:=2*Pi/3 — переменной ехрг присваивается значение выражения 2兀/3;
О V: =[1,2,3] — переменной V прпсваггвается значение списка чисел [1,2,3]>
О М:=[[1,2,3], [4,5,6]] — переменной М присваивается значение двумерного массива;
О f :=х->хЛ2 — переменной f присваивается значение функции пользователя Г(х)=хЛ2.'
Правая часть выражения присваивания определяет тип переменной. Например, она может быть целочисленной, действительной, строковой, индексированной (элемент массива) и т. д.
Отмена операции присваивания и команда restart
Переменная, имеющая какое-либо значение, занимает в памяти намного больше места, чем неопределенная переменная. У последней место в памяти занимают только символы идентификатора. Поэтому нередко целесообразно отменить присваивание у тех переменных, которые в дальнейшем можно не использовать. Это может понадобиться и в том случае, когда какую-либо переменную с численным или иным значением нужно использовать просто как неопределенную переменную.
Рассмотрим следующий пример:
10
х;
10
1nt(x*2,x):
Error, (in int)Avrong number (or type) of arguments
Здесь не удалось вычислить интеграл с подынтегральной функцией хЛ2 из-за того, что переминая ^уже ойределена ранее как целочисленная переменная со значе-
нием 10, тогда как для вычисления интеграла она должна быть необъявленной или строковой (убедитесь в этом сами).
Для отмены присваивания надо использовать следующее выражение:
Х:='Х':
Итак, заключение имени переменной в прямые апострофы ликвидирует присваивание. Так что запись х: = 'х' означает, что переменной х возвращается статус неопределенной переменной. Теперь можно вычислить интеграл:
int(xA2,x);
Можно сделать переменную х неопределенной и с помощью выражения вида x;=evaln(x). Это поясняет следующий пример:
х:=123; х := 123 > x:=eva〕n(x);
工:=х
int(xAn,x);
(〃 + i)
n + 1
Для отмены присваивания значений разом всем переменным (п введенным функциям пользователя) можно использовать команду restart. Следующий пример поясняет ее применение:
х:=5;
х := 5
х人 2;
25
restart:
х;
хА2;
X2
Следует отметить, что команда restart отменяет все предшествующие определения, что иногда чревато осложнениями. Применяйте ее только тогда, когда вы уверены, что предшествующая заданной часть документа (или даже ряда документов) действительно не важна.
Важно отметить, что Maple сохраняет в памяти все определения и присваивания, которые были сделаны во всех загруженных в систему документах. Поэтому результаты вычислений в текущем документе могут зависеть от определений в других документах. Команда restart позволяет исклютат^ эту зависимость.
Придание переменным статуса предполагаемых
В большинстве расчетов пользователей Maple вполне удовлетворяет статус переменных, соответствующий присвоенным им значениям. Однако серьезные расчеты предполагают, что переменные могут иметь определенные ограничения — например, они не должны принимать отрицательных значений при обычном вычислении квадратного корня или логарифма числа.
Для придания переменным статуса предполагаемых используется функция assume: assume(x.prop);
где х — переменная, имя или выражение, prop — свойство.
Следующие примеры показывают применение функции assume:
restart;
assume(xrpositive):
x;
s:=x~>sqrt(x);
s := sqrt
s(2);
s(2・):
1.414213562
s(⑵;
1s(x,positive); true
is(x,negative); false
about(x);
Originally x, renamed x~:
is assumed to be: RealRange(Open(0),infinity)
Обратите внимание, что в этом примере переменная х помечена как положительная и при выводе сопровождается знаком тильды ~, как бы предупреждающим пас о ее особом статусе. Это не означает, что она не может принять отрицательное значение. Однако с помощью функции i s можно убедиться в ее особом статусе и при необходимости программным путем исключить вычисления для 久 <0. Кроме того, о свойствах переменной можно узнать с помощью функции about(name).
Иногда к уже имеющимся признакам надо добавить новые. Для этого используется функция additionally:
assume(arnonnegative):
additional1у(а<=0):
about(a):
Originally a, renamed a〜:
Is assumed to be: 0
В этом примере переменной а вначале задан признак положительности, а затем а<«0. Оба признака удовлетворяются только при в = 0, что и подтверждает вывод информации о статусе этой переменной функцией about(a).
Предполагаемую переменную можно также изменить путем присваивания ей нового значения, противоречащего ее статусу:
а:<23;
а 尸 123
about(а);
123:
All numeric values are properties as well as objects.
Their location in the property lattice is obvious, in this case integer.
Для отмены переменным статуса предполагаемых используются те же приемы, что и при отмене присвоенного значения. Например, запись х: = 'х' отменяет статус предполагаемой для переменной х.
Что нового мы узнали?
В этом уроке мы научились:
О Использовать Maple-язык и его синтаксис.
О Работать с выражениями.
О Задавать простые типы данных.
О Задавать данные множественного типа.
О Задавать данные строкового типа.
О Писать программные комментарии.
О Задавать переменные и определять их тип.
О Использовать константы различного типа.
УРОК встроенные операторы и функции
Операторы и операнды
Математические функции
口 Операторы и функции для работы
с векторами и матрицами
Функции для работы со строковыми данными
Операторы и операнды
Виды операторов
Операторы во входном языке и языке программпровгшия Maple служат для конструирования выражении. Формально операторы представлены своими идентификаторами в виде специальных математических знаков, слов и иных имен. Операторы, как это вытекает из i-ix названия, обеспечивают определенные операции над данными, представленными операндами.
Имеется пять основных типов операторов:
О 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
[302.3002]:
[3,3⑵]
[Х0Х,Х0@Х];
г (2) (х)
[х$3.х$4];
[х, X, X, X, X, X, х]
int(x*2,x<. .4);
21
S-'Hello'| I' my '| |'friend!';
S := Hello my friend!
Оператор композиции 颱 может использоваться для создания сложных функций, содержащих цепные дроби:
> f:»a->l/(l+a);(f©a3)(a);
/;=а^—Ц-
а+ 1
1
> f(5);
1
6
> g-a->l/(l+aA2):(g^3)(a);
1
1Г~1Г~1
1
Г~
1
Г~
<1
1(公+1)
> g(2):
1
5
А вот еще один пример применения этого оператора для составления цепного радикала и вычисления ряда таких цепочек в цикле:
> f :套 х •> sqrt( 1 + х): /:=x —> /1+х
>f(f(0)):
>f(f(f(0)));
J ] + д^Т"
>(W10)(x);
1 +1 +1 +1 +>for k from 1 to 10 do (Wk)(0) = eva1f((f颱k)(0)): od: 1 = 1.>for k from 1 to 10 do (Wk)(0) = eva1f((f颱k)(0)): od: 1 = 1.
1 +
1 +
1 +
1 +
>for k from 1 to 10 do (Wk)(0) = eva1f((f颱k)(0)): od: 1 = 1.
>for k from 1 to 10 do (Wk)(0) = eva1f((f颱k)(0)): od: 1 = 1.
/2 - 1.414213562
71 +/2 = 1.553773974
1 +J1 +叵 二 1.598053182
1 + Jl + Jl +Q = 1.611847754
=1.616121206=1.616121206
=1.616121206
=1.616121206
1.6180165421.618016542
1.618016542
1.618016542
Операторы объединения, пересечения и исключения для множеств
Для данных типа «множество» определены следующие бинарные операторы:
О union — включает первый операнд (множество) во второй;
О Intersect — создает множество, содержащее общие для операндов элементы;
О minus — исключает из первого операнда элементы второго операнда.
В любом случае, в результирующем множестве устраняются повторяющиеся элементы. Действие этих операторов поясняют следующие примеры:
{a.a.b.c.c.d} union {е.е.f.g};
{/ g,。,仇 ^c.d}
{a.a.b.c.c.d} intersect {a.c.e.e.f.g}:
{a,c}
{a.a.b.c.c.d} minus {a.d}:
{伉c}
Напоминаем, что эти операторы заданы ключевыми словами. Обратите внимание на то, что в Maple 7 результат применения оператора union представлен членами, расположенными в довольно произвольном порядке.
Унарные арифметические операторы
Унарные операторы используются с одним операндом. Они могут быть префиксными, если оператор стоит перед операндом, и постфиксными, если он стоит после операнда. К унарным относятся семь операторов, приведенных в табл. 6.2.
Таблица 6.2. Унарные операторы
Обозначение
Оператор
+
1
Унарный плюс (префикс)
Унарный минус (префикс) Факториал (постфикс)
$
Десятичная точка (префикс или постфикс) Поел ед о вате л ьн ость (префикс)
продолжение 少
Таблица 6.2. (продолжение)
ОбозначениеОператор
notЛогическое отрицание (префикс)
&strfngМетка (префикс)
Примеры применения унарных операторов:
> [-x.x+C-xJ.x+C+x)]:
[-Х, 0, 2х]
> 100!;
> .234:
933262154439441526816992388562667004907159682643816214685929638952175\ 999932299156089414639761565182862536979208272237582511852109168640\ 00000000000000000000000
.234
> 2.34:
2.34
> 2*Х:
4.68
> а$3;
а, а, а
Оператор % и команда history
Мы уже неоднократно отмечали, что оператор М обеспечивает подстановку в строку ввода (или в выражение) последнего результата операции, И — предпоследнего и Ш — третьего с конца. Есть еще одна иногда полезная возможность проследить за ходом частных вычислений внутри документа — применение команды- функции hi story. В Maple V R5 это была библиотечная функция, которая требовала вызова из библиотеки. В Maple 7 такого вызова уже не требуется.
Функция history(expr) или hlstoryO создает список переменных вида 01, где индекс,= f, 2, 3….Этим переменным можно присваивать значения в диалоговом режиме и отслеживать результаты вычислений. Команда off:, вводимая после использования данной функции, завершает работу с ней. Ниже представлен диалог с применением функции hi story:
> historyO:
01 尸 2:
2
02 :« sin(l.); .8414709848
03 尸 01*02;
1.682941970
04 ■ Off:
history
К сожалению, полученный результат и значения глобальных переменных 01 'После завершения работы с данной функцией становятся недоступными, так что практической пользы от ее применения не так уж много. Разумеется, внутри блока history вы можете присвоить результат другой переменной и он сохранится (попробуйте это сделать сами). При каждом очередном применении функции history нумерация переменных 01 начинается с начала, так что какой-либо преемственности при использовании этой функции нет.
Функция history может применяться в качестве средства начальной отладки вычислений. Внутри фрагмента программы, заданного функцией history, можно задавать построения графиков. Например, при исполнении фрагмента программы:
> hi storyO;
01 尸 sin(x);
sin(x)
02 plot(01,xsO..20):
03 尸 off;
будет построен график синусоиды. В целом работа с функцией hi story отличается не слишком высокой стабильностью, так что возможности этой функции пока остаются не слишком востребованными.
Логические операторы
Логические (или булевы) операторы указывают на логическую связь величин (или выражений). Прежде всего они представлены рядом бинарных операторов, приведенных в табл. 6.3.
Таблица 6.3. Бинарные логические операторы
Обозначение Оператор
<
Меньше
<=
Меньше или равно
>
Больше
=
Большее или равно Равно
and or
Не равно
Логическое «и»
Логическое «или»
Конструкции с этими операторами, такие как х=у, возвращают логическое значение —константу true, если условие выполняется, и false, если оно не выполняется. Кроме того, к логическим операторам относится унарный оператор :not — он представляет логическое «нет». Для возврата логических значений выражений с этими операторами используется функция еуа!Ь(условие), напоимео:
> 5<2:
5<2
evalb(Jt):
false
evalb(4=2+2);
true
evalb(3<>3);•
false
evalb(not(%));
true
evalb(3=3 and 4>2):
true
evalb(3=3 or 2<0):
true
> evalb(x*ys=y*x):
true
Логические операторы часто используются в управляющих структурах программ, составленных на языке программирования Maple. Такое их применение мы рассмотрим позже.
Специальные типы операторов
Операторы в Maple описывают операции по преобразованию данных, в частности выражений. Последние, в свою очередь, можно отнести к данным абстрактного типа. Могут быть описаны следующие типы операторов:
О неопределенные (f);
О нейтральные (&);
О процедурные;
О функциональные;
О композиционные (@).
Оператор относится к неопределенным, если он не был заранее определен. Такой оператор не выполняет никаких действий и просто повторяется в строке вывода:
restart:f(1.2,a);.
f(l,2,a)
Композиционные операторы (на базе знака @) мы уже применяли. Другие типы операторов рассмотрены ниже.
Функциональные операторы
Функциональные операторы Maple-языка являются альтернативами функций и записываются в двух формах.
Нотация
Запись оператора
«arrow» (стрелочная)
«angle bracket» (в угловых скобках)
vars -> result
<result 1 vars>
Данные операторы могут использоваться для реализации подстановок. Например, запись х -> х*2 означает подстановку х*2 на место переменной х. Возможны и такие подстановки в множественной форме:
(х.у) -> х人2 + у*2 х -> (2*х, 3*хМ) (x,y,z) -> (х*у, y*z)
Функциональный оператор в Maple 7 часто используется для задания функций пользователя, которое будет рассмотрено несколько позднее.
Нейтральные операторы/ определяемые пользователем
Для создания нейтральных (задаваемых пользователем и в момент задания неисполняемых) операторов, определяемых пользователем, служит знак амперсанда —&. Синтаксис нейтрального оператора следующий:
&name
Имя оператора строится по правилам задания допустимых идентификаторов. Также в качестве имени может быть использована последовательность (один и более) специальных символов. В последовательности специальных символов не должно быть букв, цифр, подчеркивания, а также следующих символов:
&!(){}[]::''# <перевод строки> <пробел>
Максимальная длина имени — 495 символов. Нейтральные операторы могут быть унарными и бинарными. Примеры задания бинарного нейтрального оператора приведены ниже:
х&/у:
X &/у
z+x&/y:
z + (x&/y)■
&/(х,у);
х&/ у
х&/у-&/(х,у):
о
Определение операторов с помощью оператора define
Большие возможности для создания операторов с заданными свойствами предоставляет специальный оператор define. Он записывается в следующей форме: deflneCoper, propertyl, prc^erty2, _)
Здесь орег — имя определяемого оператора, propertyl, property2 и т. д. — наименования свойств. В принципе, оператор define позволяет создавать операторы с новыми свойствами, которые отсутствуют у операторов и функций, встроенных в систему.
Могут быть указаны следующие свойства операторов:
О unary — унарный оператор;
О binary — бинарный оператор;
О diff — дифференциальный оператор;
О linear — линейный оператор;
О multilinear — множественный линейный оператор;
О flat — ассоциативный оператор, для которого/CxJ(%z)) = /(/(*,У)2)= /(МУ2); О orderl ess — коммутативный симметричный оператор, такой что f(x,y) =/(у“); О antisymmetric — асимметричный оператор, такой что f(x,y) = 一/("江);
О zero — нулевой оператор (например, V:=Vector(5,shape=zero) задает вектор с 5 нулевыми элементами);
О identity — единичный оператор (например, М: =Matriх(3,3,shape=identity) задает единичную матрицу).
Следующий пример задает линейный оператор L:
defined,!inear);
L(*x+b*x2+c*xY);
L(a x) + L(力 л:?) + L( c x3)
Для задания некоторых свойств операторов можно использовать уравнения и соотношения вида f(x)=value. Чтобы свойство выполнялось для всех аргументов (или некоторого класса аргументов), используется описание forall. Так, приведенный ниже пример задает оператор F, который вычисляет п-е число Фибоначчи (м > 2):
restart;
define(fib,fib(O)=l,fib(l)s:l,fib(n: :posi'nt)=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). Он может быть целым, рациональным, дробно-рациональным, вещественным или комплексным числом. В ответ на обращение к ним элементарные функции возвращают соответствующее значение. Поэтому они могут быть включены в математические выражения. Все описанные здесь функции называются встроенными, поскольку они реализованы в ядре системы.
Как правило, если аргументом функции является фундаментальная константа, целое или рациональное число, то функция выводится с таким аргументом без получения результата в форме действительного числа с плавающей точкой. Например: > sin(Pi5;
О
sin(l);
sin( 1)
exp(l);
е
ln(2);
ln(2)
ln(Pi):
ln(7t)
arcsin(l/2):
1
6 я
> arcsin(l/3);
arcsin (g)
Нетрудно заметить, что есть и исключения из этого правила — например, на экране монитора ехр(1) будет выведено как константа е, а значение функции arcslnd/ 2) все же вычислено и результат получен как 1/6 от константы Pi. Вообще говоря, если результат выражается через фундаментальную математическую константу, то он будет вычислен и представлен ею. В противном случае функция с целочисленным и рациональным аргументом или с константой просто повторяется в строке вывода в установленном длй этой стрсжи формате.
Для получения подробной информации о некоторой произвольной функции <f> достаточно задать команду:
?<f>
Ввиду общеизвестности элементарных функций мы не будем обсуждать ни их свойства, ни допустимые для них пределы изменения аргумента.
Некоторые целочисленные функции и факториал
Ниже представлены наиболее распространенные целочисленные функции Maple 7, используемые в теории чисел:
О factorial (п) — функция вычисления факториала (альтернатива — оператор 1);
О iquo(a,b) — целочисленное деление а на Ь;
О irem(a,b) — остаток от деления а на Ь;
О igcd(a b) — наибольший общий делитель;
О lcm(a.b) — наименьшее общее кратное.
Примеры применения:
> [factorial(10),10!]:
[3628800,3628800]
> iquo(234,5);
46
> irem(234,5);
> lcm(124,3):
372
> [3!!,(3!)l]:
[720, 720]
В последних двух примерах применения оператора факториала полезно обратить внимание, что запись п!! означает лишь (п!)!, а не 几!! = 2*4*6*..., то есть произведение четных целых чисел. Действие других функций очевидно.
Тригонометрические функции
В ядре Maple определены следующие тригонометрические функции:
О sin — синус;
О cos — косинус;
О tan — тангенс;
О sec — секанс;
О esc — косеканс;
О cot — котангенс.
Все эти функции являются периодическими (с периодом 2л, кроме тангенса и котангенса, у которых период равен 冗)и определены для действительного и комплексного аргументов. Примеры; вы耳нсд^ш/
[sin(l),sin(l.)];
[sin(l), .8414709848]
sin(x)人2+cos(x)人2;
sin(x)2 + cos(x)2"
simplify(^):
1
simpl1fy(tan(x)*cos(x)):
sin(x)
sec(2+3*I);
sec(2 + 3 /)
sec(2.+3*I);
-.04167496441 + .09061113 720 /
cot(I):
/ coth( 1)
> csc(I);
-/csch(1)
Многие свойства тригонометрических функций можно оценить, рассматривая их графики. Для построения таких графиков можно использовать функцию plot. На рис. 6.1 сверху показаны графики ряда тригонометрических функций.
Рис. 6.1. Графики ряда тригонометрических и обратных тригонометрических функций
Из графиков тригонометрических функций (рис. 6.1, сверху) хорошо видна их периодичность. Функция тангенса имеет разрывы, и ее значение в этих точках в пределе равно бесконечности. Поэтому для наглядного ее представления вместе с функциями синуса и косинуса (их экстремальные значения по модулю равны 1) приходится вводить ограничения на масштаб графика по оси у.
ПРИМЕЧАНИЕ Обратите внимание на параметр color=black в функции построения графиков plot. Он _задает построение всех графиков черным цветом, что сделано для более четкой печа
ти их в книге. Если убрать этот параметр, то графики разных функций будут строиться с использованием разных цветов, что облегчит их различение. Другие способы выделения отдельных кривых будут описаны в дальнейшем при описании графических возможностей системы Maple 7.
Обратные тригонометрические функции
К обратным тригонометрическим относятся следующие функции:
О arcsln — арксинус;
О arccos — арккосинус;
О arctan — арктангенс;
Q arcsec — арксеканс;
О arccsc — арккосеканс;
О arccot — арккотангенс.
Примеры вычислений:
arcsin(.2);
.2013579208
arcsin(2.);
1.570796327- 1.316957897/
evalc(arcsin(5));
л — / ln( 5. + 2)
arccos(l/2):
1
arctan(l):
1
彳冗
arccot(O):
1
2 Л
К этому классу функций принадлежит еще одна полезная функция:
arctan(y,x) ~ argument(х+1*у)
Ока возвращает угол радиус-вектора в интервале от -Р1 до Р1 цри координатах конид р冲呼注册е冀翼唆 х и у 3rf.喫踰幾殲血歴注
> 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,)];
[.6480542737, .8509181282, 1.313035286]
На рис. 6.2 сверху представлены графики гиперболического синуса, косинуса и тангенса. По ним можно судить о поведении этих функций.
⑨)ПРИМЕЧАНИЕ⑨)ПРИМЕЧАНИЕВ отличие от тригонометрических гиперболические функции не являются периодическими. Функция гиперболического тангенса имеет симметричную кривую с характерными ограничениями. Поэтому она широко используется для моделирования передаточных характеристик нелинейных систем с ограничением выходного параметра при больших значениях входного параметра.
⑨)ПРИМЕЧАНИЕ
⑨)ПРИМЕЧАНИЕ
Обратные гиперболические функции
Как и тригонометрические функции, гиперболические имеют свои обратные функции:
О arcsinh О arccosh О arctanh О arcsech О arccsch О arccothО arcsinh О arccosh О arctanh О arcsech О arccsch О arccothгиперболический арксинус;
О arcsinh О arccosh О arctanh О arcsech О arccsch О arccoth
О arcsinh О arccosh О arctanh О arcsech О arccsch О arccoth
гиперболический арккосинус;
гиперболический арктангенс;
гиперболический арксеканс: гиперболический арккосеканс: гиперболический арккотангенс.
Примеры применения:
> [arcsinhd.).arccoshd.),arctanh(l.)];
[.8813735870, 0., Float(oo) + Float(undefined)/]
Графики обратных гиперболических синуса, косинуса и тангенса представлены на рис. 6.2 снизу.
Степенные и логарифмические функции
К степенным и логарифмическим относятся следующие функции системы Maple 7:
О ехр — экспоненциальная функция;
О iloglO — целочисленный логарифм по основанию 10 (возвращает целую часть от логарифма по основанию 10);
О Ilog — целочисленный логарифм (библиотечная функция, возвращающая целую часть от натурального логарифма);
Qin — натуральный логарифм;
О log — логарифм по заданному основанию (библиотечная функция);
О loglO — логарифм по основанию 10;
О sqrt — квадратный корень.
Примеры применения:
х尸2:
х := 2
> [exp(x),ln(x),log(x),loglO(x)]; e2,ln(2), ln(2), ]n(\o;]
х:=2.0:
х := 2.0
[ехр(х),ln(x),log(x),1од10(х)];
[7.389056099, .6931471806, .6931471806, .3010299957]
ilog[2](100):
6
readlib(loglO): proc (x) ... end proc > loglOClOOOO.): 4.000000000
evalc(sqrt(2+3*D):
~ J4 + 2 J15~4 + 2 J13
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(%)) + I*trunc(Im(%));
О round (%) = round(Re(%)) + I*round(Im(%));
О frac (%) = frac(Re(%)) + I*frac(Im(%)).
Для введения определения значения flоог(х) от комплексного аргумента прежде всего запишем 仪= Re(x) - floor(Re(x)) и b = Im(x) - floor(Im(%)). Тогда floor(x) = floor(Re(%)) + 7*floor(Im(%))十 X, где
0, a + b < 1,
X = *L a + b>lna>by /, a + b>lna < b.
Наконец, функция cei 1 для комплексного аргумента определяется следующим образом:
ceil(x) = -floor(-x)
Примеры применения:
[ceil(Pi),trunc(Pi),floor(Pi),frac(Pi),round(Pi)];
[4,3,3,n-3,3]
frac(evalf(Pi)):
.141592654
[ceil(-Pi).trunc(-Pi),floor(-Pi),round(-Pi)]:
[-3,-3, Л-3]..
trunc(2.6+3.4*I):
2+3/
> [signum(-Pi),signum(O),signum(Pi)];
[-1,0,1]
Функции комплексного аргумента
Для комплексных чисел и данных, помимо упомянутых в предшествующем разделе, определен следующий ряд базовых функций:
О argument — аргумент комплексного числа;
О conjugate — комплексно-сопряженное число;
О Im — мнимая часть комплексного числа;
О Re — действительная часть комплексного числа;
О polar — полярное представление комплексного числа (библиотечная функция).
Примеры применения:
> z:=2+3*1;
z := 2 + 3 /
> [Re(z),Im(z),abs(z)J;
[2,3,伍]
> [argument(z),conjugate(z)]:
> readlib(polar);
proc (r:'.algebraic, thwalgebraic} ... end proc
> polar(z):
> polar(-3.,Pi/2):
polar _3-»~л
Специальные математические функции
Специальные математические функции обычно являются решениями линейных дифференциальных уравнений различного типа и выражаются в виде интегралов, не представимых через элементарные функции. Maple 7 имеет практически полный набор таких функций. Их представления можно найти в справочной литературе, а также в справочной базе данных Maple. В связи с этим ограничимся приведением названий наиболее важных специальных функций:
О AiryAi (Bi) — функции Эйри;
Q AngerJ — функция Ангера;
О bernoulli — числа и полиномы Бернулли;
О Bessel I (J, « Y) — функции Бесселя разногофода;
о Beta г 6ет^4®ШШ1Йя;
О binomial — биноминальные коэффициенты;
О Chi — интегральный гиперболический косинус;
Q Ci — интегральный косинус;
О csgn — комплексная сигнум-функция;
О dilog ~ дилогарифм;
О Dirac — дельта-функция Дирака;
Q Ei — экспоненциальный интеграл;
О EllipticCE (СК, CPI, Е, F, К, Modulus, Nome, Pi) — эллиптические интегралы;
О erf — функция ошибок;
О erf с — дополнительная функция ошибок;
О euler — числа и полиномы Эйлера;
О Fresnel С (f, g, S) — интегралы Френеля;
О GAMMA — гамма-функция;
О GaussAGM — арифметико-геометрическое среднее Гаусса;
О HankelHl (Н2) — функции Танкеля;
О harmonic — частичная сумма серии гармоник;
О Heaviside — функция Хевисайда;
О JacobiAM (CN, CD, CS, DN, DC, DS, NC, ND, NS, SC, SD, SN) — эллиптические функции Якоби;
О JacobiThetal (2, 3, 4) — дзета-функции Якоби;
О JacobIZeta — зет-функция Якоби;
О KelvinBer (Bel, Her, Hei, Ker, Kei) — функции Кельвина;
О Li — логарифмический интеграл;
О 1 nGAMMA — логарифмическая гамма-функция;
О Mel jerG — G-функция Мейджера;
О pochhanwner — символ Похгамера;
О ро! у! од — полилогарифмическая функция;
О Psi — дигамма-функция;
О Shi — интегральный гиперболический синус;
Q Si — интегральный синус;
О Ssi — синусный интеграл смещения;
О StruveH (L) — функции Струве;
О surd — неглавная корневая функция;
О LambertW — W-функция Ламберта;
О WeberE — Е-функция Вебера;
О WeierstrassP — P-функция Вейерштрасса;
О WeierstrassPPrime — производная P-функции Вейерштрасса;■
О WeierstrassZeta — зета-функция Вейерштрасса;
О WelerstrassSigma — сигма-функция Вейерштрасса;
О Zeta — зета-функция Римана и Гурвица.
Ввиду большого числа специальных функций и наличия множества примеров их вычисления в справочной системе Maple 7 ограничимся несколькими примерами вычисления наиболее распространенных специальных функций. По их подобию читатель может опробовать в работе и другие специальные функции. На рис. 6.4 даны примеры применения ряда специальных функций. Обратите особое внимание на первый пример. Он показывает, как средствами системы Maple 7 задается определение функций Бесселя. Показано, что функции Бесселя являются решениями заданного на рис. 6.4 дифференциального уравнения второго порядка. Maple 7 способна вычислять производные и интегралы от специальных функций.
Рис. 6.4. Примеры применения специальных функций
Еще несколько примеров работы со специальными функциями представлены на рис.6.5. Как видно из приведенных примеров, на экране монитора можно получить математически ориентированное представление специальных функций, обычно более предпочтительное, чем представление на Maple-языке или в текстовом формате. Записи функций при этом выглядят как в обычной математической литературе.
Рис. 6.5. Примеры работы со специальными математическими функциями
На рис. 6.5 показаны примеры разложения специальных функций в ряды и применения функции convert для их преобразования.
Много информации о поведении специальных функций дает построение их графиков. На рис. 6.6 показано построение семейства графиков функций Бесселя Bessel J разного порядка и гамма-функции. Эти функции относятся к числу наиболее известных. Если читателя интересуют те или иные специальные функции, следует прежде всего построить и изучить их графики.
Подробное описание специальных функций можно найти в справочниках [43-45] и в справочной базе данных Maple 7.
Рис. 6.6.「рафики функций Бесселя и гамма-функции
Функции для работы с векторами и матрицами
Элементы векторов и матриц
Элементы векторов и матриц являются индексированными переменными, то есть место каждого элемента вектора определяется его индексом, а у матрицы — двумя индексами. Обычно их обобщенно обозначают как г (номер строки матрицы или порядковый номер элемента вектора) и/ (номер столбца матрицы). Допустимы операции вызова нужного элемента и присваивания ему нового значения:
О V[i] — вызов г-го элемента вектора V;
О M[i, j] — вызов элемента матрицы М, расположенного на г-й строке в/・м столбце;
О V[i]:=x — присваивание нового значения х г-му элементу вектора V;
О М[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:=[[1.2].[3.4]]:
M2:=[[l,2],[3,4]]
type(M2,matrix);
false
M:«convert(M2,matrix);
「1 2]
-3 4一
> type(M,matrix):
truef
Однако, используя функцию преобразования данных convert, можно преобразовывать одномерные списки в векторы, а двумерные — в матрицы. Функция type используется в следующих формах:
О type(V,vector) — тестирует аргумент V и возвращает true, если V — вектор, и false в ином случае;
О type(M,matrix) — тестирует аргумент М и возвращает true, если М — матрица, и fal se в ином случае.
》)ПРИМЕЧАЙЙЁ》)ПРИМЕЧАЙЙЁЗдесь.параметры vector и matrix используются для указания того, какой тип объекта проверяется.
》)ПРИМЕЧАЙЙЁ
》)ПРИМЕЧАЙЙЁ
Обратите внимание на то, что матрицы отображаются иначе, чем двумерные списки,— без двойных квадратных скобок. Отображение вектора подобно отображению одномерного списка, поэтому здесь особенно важен контроль типов данных.
Операции с векторами
Важное достоинство систем компьютерной алгебры, к которым относится и Maple 7, заключается в возможности выполнения аналитических (символьных) операций над векторами и матрицами.
Приведем примеры операций над векторами:
> V:=array(1..4,[l,2,3.4]); p:=[1,2,3,4]
> [V[1],V[2].V[4]]:1
[1,2,4]
V[l]:=a:V[3]:=b:
evalm(V);
[а, 2,仇 4]
evalm(V+2): [а + 2, 4,力 + 2, 6]
evalm(2*V);
[2 а, 4, 2 仇 8]
evalm(V**V):
[a, 2,仇4广
evalm(a*V); [а2, 2 а, а 仇 4 а]
ПРИМЕЧАНИЕПРИМЕЧАНИЕВ этих примерах используется функция evalm(M), осуществляющая вычисление матрицы или вектора М.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Рекомендуется перед проведением символьных операций с векторами и матрицами очистить память от предшествующих определений с помощью команды restart. Если какие- то элементы векторов или матриц были ранее определены, это может привести к очень сильным искажениям вида конечных результатов. Очистка памяти устраняет возможность ошибок такого рода.
Операции над матрицами с численными элементами
Над матрицами с численными элементами можно выполнять разнообразные операции. Ниже приведены основные из них:
> М-аггау(1..2.1..2.[[1,2].[3,4]]);
「1 2]
М:=1_3 4_
evalm(2*M);
'2 4-
№ 8_
evalm(2+M):
3 2一
3 6_
evalm(MA2):
” 7 IO-
J5 22
evalmCM*^)) ;■
'-21 ■
-1
1
> evalm(M-M): О
> evalm(M+M); 一2 4
6 8
> evalm(M*M):
' 7 IO-
15 22
> evalm(M/M); 1
> evalm(MA0): 1
ВНИМАНИЕ Рекомендуется внимательно изучить эти примеры и попробовать свои силы в реализации простых матричных операций. Мы вернемся к гораздо более серьезному описанию матричных операций и функций в дальнейшем.
Символьные операции с матрицами
Ниже представлены примеры символьных операций, осуществляемых над квадратными матрицами одного размера:
Ml-array(1..2,1..2.[[al.bl].[cl.dl]]):
л,7 Ла1 ЬП cl dl
M2:=array(l..2,1..2,[[а2.Ь2].[c2,d2]]):
c 「a2 方2[ c2 d2
evalm(Ml+M2);
~а/ + a2 bl + Ъ2~
cl + c2 dl + d2
evalm(Ml-M2):
~al - a2 bl - b2~
cl - c2 dl - d2
> evalm(Ml&*M2): %/ a2 + blc2 cl a2 + dl c2
> evalm(Ml/M2):
Г al d2
al b2 + bl d2- cl b2 + dl d2
bl c2
al b2
bl a2 ]
a2 d2 - b2 c2
a2 d2 - b2 c2
a2 d2 - b2 c2
1 a2 d2 - b2 c2
cl d2
dl c2
cl b2
dl a2
a2 d2 - b2 c2
a2 d2 - b2 c2
a2 d2 - b2 c2
1 a2 d2 - b2 c2
> evalm(Ml&/M2);
al &/
~a2
bZ
bl &J
Z2
62~
c2
d2_
c2
d2
~a2
bZ
~a2
方2二
cl &/
c2
d2
dl &/
c2
d2
Приведем еще ряд примеров выполнения символьных операций с одной матрицей:
evalm(MlA2):
"а» + bl cl al bl + bldf
cl al + dl cl bl cl + dl2
evalm(sin(Ml)):
-sin(a7) sm(bl\ sin(c/) sin(dJ)
evalm(Ml*z):
Nai zbl~
z cl z dl
evalm(Ml/z):
cl dl
evalm(Ml+z):
~al+z bl _
cl dl +z
evalm(Ml-z):
~al - zbl "
cl dl -z
Среди других функций для работы с матрицами полезно обратить внимание на функцию тар, которая применяет заданную операцию (например, функции дифференцирования diff и интегрирования int) к каждому элементу матрицы. Примеры такого рода даны ниже:
М:=аггау(1..2.1..2.[[х,хА2].[хА3,хА4]]);
map(diff,М,х):
'12£
3 х2 4х3
map(int,X,x):
> map(sin,M);
sin(x) sin,)
sin,)sin,)
В результате возвращаются матрицы, каждый элемент которых представлен производной или интегралом, Аналогично можно выполнять над матрицами и другие достаточно сложные преобразования.
В дальнейшем мы продолжим изучение матричных функций и операций, включенных в пакеты Maple 7,
Функции для работы
со строковыми данными
Контроль типа строковых данных
Напоминаем, что строковые данные представляются совокупностью любых символов в обратных апострофах, например 'Привет' или '2+2'. Для контроля объектов на принадлежность к строковым данным служит функция type с параметром string:
str:='Hello!、:
str := Hello!
typeCHello.string);
false
type(str.string):
false
type(2+3,string);
false
type(42+3\string):
false
char:=a;
chara
char:w'a':,
char := a
Из приведенных примеров видно, что контроль строкового типа осуществляется не очень строго, — в частности, единичные символы рассматриваются как строковые и без заключения их в апострофы. В строках могут быть символы кириллицы, но гарантии в правильности обработки таких символов нет — надо мириться с тем, что Maple — англоязычная программа и ее возможности в поддержке других языков ограниченны.
Интерактивный ввод строк
Для интерактивного ввода строк можно использовать функцию read! ine(filename), задав в качестве имени файла terminal или опустив имя файла. В этом слумае ввод строки осуществляется с клавиатуры компьютера: > s:sreadline(): > Привет мой друг!
ПРИМЕЧАНИЕПРИМЕЧАНИЕ5:="Привет мой друг!"
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Полезно обратить внимание на то, что запрос в ходе интерактивного ввода может быть сделан на русском языке (если установленный для запросов шрифт имеет символы кириллицы). Нужно также, чтобы и шрифт строки вывода содержал кириллицу, иначе в строке вывода будет типичная «абракадабра» — смесь непонятных символов.
Обработка строк
Имеется ряд функций дая работы со строками. Из них наиболее важны следующие:
О lenght(str) — возвращает число символов, содержащихся в строке str;
О substring(str,а. .b) — возвращает подстроку строки str от а-го символа до Ь-го;
О cat(strl,str2,...) — возвращает строку, полученную объединением строк strl, str2,... (альтернатива — оператор конкатенации в виде точки .);
О SearchText(s, str) — производит поиск подстроки s в строке str и при его успехе возвращает номер позиции s в строке str (при отсутствии s в str функция возвращает 0).
Примеры применения этих функций (в виде продолжения ранее приведенных примеров) представлены ниже:
length(str):
6
substring(str,1..3):
Hei
substring(str,4..6);-
/о/
> s:=cat('Hello',、 my、,' friend!、);
s := Hello my friend!
SearchText(my,s);
7
ss:='Hello TI、my friend!4;
ss := Hello my friend!
seq(Name||i,i«1..4):
Namel, Name2, Name3, Name4
Эти функции дают достаточно средств для обработки данных строкового типа, которые можно применять не только для создания текстовых комментариев, но и для управления вычислительным процессом в программах.
Преобразование строки
в математическое выражение
Часто возникает необходимость в интерактивном вводе математических выражений. Для ввода с запросом выражения используется функция readstat(promt), где promt — строка с текстовым комментарием. Пример ее применения дан ниже:
y:=readstat('BBeflHTe выражение ');
Введите выражение а*хА2+Ь;
у \~ ах1 + Ь
Альтернативой может стать ввод строкового выражения с последующим преобразованием его в математическое выражение с помощью функции parse:
s:='2+3*5';
s :=2+3*5
evaln(s);
parse(^);
17
Обратите внимание на то, что функция evaln не смогла вычислить строковое выражение、2+3、,поскольку оно не является числовым типом данных. Однако функция parse преобразовала это выражение в числовое, что и привело к его вычислению.
Что нового мы узнали?
В этом уроке мы научились:
О Использовать операторы п операнды,
О Применять различные математические функции.
О Использовать операторы и функции для работы с векторами и матрицами, О Использовать функции для работы со строковыми данными.
ГУШокГУШокТиповые средствапрограммирования
ГУШок
ГУШок
口 Функции пользователя
口 Условные операторы
口 Циклы for, while и do
口 Операторы пропуска и прерывания
口 Процедуры и процедуры-функции
口 Средства контроля и отладки процедур
口 Работа с отладчиком программ
口 Операции ввода-вывода
口 Вывод в специальных форматах
口 Дополнительные возможности
Maple-языка
Функции пользователя
Упрощенные функции пользователя
Хотя ядро Maple 7, библиотека и пакеты содержат свыше 3000 функций, всегда может оказаться, что именно нужной пользователю (и порою довольно простой) функции все же нет. Тогда возникает необходимость в создании собственной функции, именуемой функцией пользователя. Начнем описание с обычных функций пользователя, задающих некоторую зависимость от одной или ряда переменных в явном виде.
Основным средством расширения Maple-языка являются модули — процедуры. Однако на первый взгляд они довольно сложны. Есть и более простые способы задания функций пользователя. Один из таких способов заключается просто в присваивании введенной функции (в виде выражения) некоторой переменной:
Мате:-Выражение
Этот прием фактически означает просто операцию присваивания. Следующие примеры иллюстрируют технику работы с такими функциями:
m:=sqrt(x人2+у*2);
х:=3:у:=4:т;
evalf(m):
5.000000000
Заданный таким образом объект все же не является полноценной функцией пользователя, и прежде всего потому, что в нем используются только глобальные переменные (х и у) и нет объявленного списка параметров, от которых зависит значение функции, При этом значения переменных функции приходится заведомо задавать отдельно, используя операции присваивания. Подобные конструкции нельзя ввести в библиотеки Maple 7.
Основной способ задания функции пользователя
Более гибкий способ задания полноценных функций пользователя базируется на применении функционального оператора. При этом используется следующая конструкция:
name:=(x.y....)->expr
После этого вызов функции осуществляется в виде пате(х,у,...), где (х,у,,“)一 список формальных параметров функции пользователя с именем name. Переменные, указанные в списке формальных параметров, являются локальными. При подстановке на их место фактический параметров они сохраняют их значения только в теле функции (ехрг). За пределами этой функции переменные с этими именами оказываются либо неопределенными, либо сохраняют ранее присвоенные им значения.
Следующие примеры иллюстрируют сказанное:
> restart;
> х:=0;у:=0: х:=0
у := О
> m:«(x,y)->sqrtQ^22±Z2);
т := (х,у) т 4х2 + у2
> т(3,4);
5
т(3.,4):
5.000000000
〉[х,у]: [0,0]
Нетрудно заметить, что при вычислении функции т(х,у) переменные х и у имели значения 3 п 4, однако за пределами функции они сохраняют нулевые значения, заданные им перед введением определения функции пользователя.
Еще один способ задания функции пользователя базируется на применении функции unapply:
name:=unapply(expr.varl.var2....)
Ниже даны примеры такого задания функции пользователя:、
restart:
fm:=unappl у(sqrt£x22±yA2),х,у);
fin :=(Х,у) —> л/%2 +у2
fm(4.,3.); 5.000000000
fe:=un叩ply(x人2+Е2,х,у):
先:=(%/) ->f+y2
fe(sin(x),cos(x));
sin(x)2 +COS(X)2
s1mp'Hfy(fe(s'in(x),8s(x)));
1
Последний пример показывает возможность проведения символьных операций с функцией пользователя.
Графическая визуализация результатов выполнения функций пользователя
В ряде случаев весьма желательна визуализация результатов выполнения функций пользователя, Порой она может давать неожиданный результат, На рис. 7,1 представлены примеры задания двух функций пользователя от двух переменных и построение их графиков с помощью функции plot3d.
Рис. 7.1. Примеры задания функций пользователя двух переменных с построением их графиковРис. 7.1. Примеры задания функций пользователя двух переменных с построением их графиков
Рис. 7.1. Примеры задания функций пользователя двух переменных с построением их графиков
Рис. 7.1. Примеры задания функций пользователя двух переменных с построением их графиков
ВНИМАНИЕВНИМАНИЕ
ВНИМАНИЕ
ВНИМАНИЕ
При задании функций пользователя рекомендуется просмотреть их графики в нужном диапазоне изменения аргументов. К сожалению, наглядными являются только графики функций одной и двух переменных.
Импликативные функции
Другой важный класс функций, которые нередко приходится задавать, — импликативные функции, в которых связь между переменными задана неявно, в виде какого-либо выражения. Самый характерный пример такой функции — это выражение для задания окружности радиуса у :炉 + “2 =产. -
Итак, импликативные функции записываются как уравнения. Соответственно их можно решать с помощью функции sol ve. Следующие примеры иллюстрируют задание уравнения окружности в общем и в частном (численном) виде:
impf:«xA2+yA2Mr*2:
itnpf := х2 +^2 = г2
subs(x«a,impf):
a2+y2 = r2
solved):
{a=/-y2 + r2,y=y,r = r}, {y=y, r = r,a = -J-/ + r2}
irripfl:»xA2+yA2»25:
impfl :=x2 +y2 二 25
subs(x«4,impfl);
16+/ = 25
solved):
3,-3
Для графической визуализации импликат ивных функций служит функция Impllcltplot пакета plots. На рис. 7.2 представлено задание двух импликатив- ных функций и построение их графиков.
Рис. 7.2. Задание двух импликативных функций и построенйе их графиков
В данном случае задано построение двух эллипсов. Верхний — это окружность, сплюснутая по вертикали, а второй — наклонный эллипс.
Условные выражения
Для подготовки разветвляющихся программ в Maple-язык программирования включен оператор if, позволяющий создавать следующую конструкцию:
if <Условие сравнения> then <Элементы>
|e1if <Условие сравнения> then <Элементы>|
|e1se <Элементы>|
В вертикальных чертах | | указаны необязательные элементы данной конструкции. Следующих два вида условных выражений чаще всего используются на практике:
О if <Условие> then <Элементы 1> fi — если Условие выполняется, то исполняются Элементы 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 print('Positive4) fi;
Negative
>
if x<0 then print('Negative') else print('Positive') fi:
Positive
Приведем еще один пример, показывающий особую форму задания конструкции if-then-el se-fi:
х:н・5:
、if、 (х<0, print('Negative4),print('Positive4)):
Negative
ХЕ:
> 'if' (х<0, print('Negative'),print('Positive')).;
Positive-
В этой конструкции вида
'if '(Условие. Выражение!. Выражение?)
если Условие выполнятся, то будет исполнено Выражение!, в противном случае будет исполнено Выражение2. Ввиду компактности записи、такая форма условного выражения нередко бывает предпочтительна, хотя она и менее наглядна. На рис. 7.3 представлено применение данной конструкции для моделирования трех типов сигналов.
Рис. 7.3. Применение конструкции с функцией if для моделирования сигналов
К сожалению, функции на базе конструкции if не всегда корректно обрабатываются функциями символьной математики. Поэтому надо тщательно контролировать полученные в этом случае результаты.
Циклы for и while
Зачастую необходимо циклическое повторение выполнения выражения заданное число раз или до тех пор, пока выполняется определенное условие. Maple 7 имеет обобщенную конструкцию цикла, которая〈задается следующим образом:
|for <name>| |from <exprl>| |to <expr3>| |by <expr2>| |while <expr4>| do 〈statement sequence> od:
Здесь name — имя управляющей переменной цикла, exprl, ехрг2 и ехргЗ — выражения, задающие начальное значение, конечное значение и шаг изменения переменной name, ехрг4 — выражение, задающее условие, пока цикл (набор объектов между словами do и od) будет выполняться.
В ходе выполнения цикла управляющая переменная меняется от значения exprl до значения ехрг2 с шагом, заданным ехргЗ. Если блок by <ехрг2> отсутствует, то управляющая переменная будет меняться с шагом +1 при ехрг1<ехрг2. Это наглядно поясняет следующий пример:
for i from 1 to 5 do print(i) od:
1
2
3
4
5'
В нем выводятся значения переменной i в ходе выполнения цикла. Нетрудно заметить, что она и впрямь меняется от значения 1 до значения 5 с шагом +1. Следующий пример показывает, что границы изменения управляющей переменной можно задать арифметическими выражениями:
for i from 7/(2+5) to 2+3 do print(i) od;
1
2<
3
4
5
А еще один пример показывает задание цикла, у которого переменная цикла меняется от значения 1 до 10 с шагом 2:
for i from 1 to 10 by 2 do print(i) od:
1
3
5
7
9
В этом случае выводятся нечетные числа от 1 до 9. Шаг может быть и отрицательным:
for i from 9 to 1 by -2 do print(i) od;
9
7
5
3
1
Следует отметить, что если exprl>expr2 задать заведомо невыполнимое условие, например, exprl>expr2 и положительное значение шага, то цикл выполняться не будет. Цикл можно прервать с помощью дополнительного блока while <ехрг4>. Цикл с таким блоком выполняется до конца или до тех пор, пока условие ехрг4 истинно.
for i 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 I 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]:=0;if i=j then M[i,j]:=1 fi; od od;
evalm(M):
-10 0'
0 10
0 0 1
Этот пример имеет не более чем познавательное значение, поскольку для создания такой матрицы Maple 7 имеет функцию identity, с помощью которой функция array позволяет сразу создать единичную матрицу: > аггау(1..3,1..3,identity):
ЧОО"
0 1 о
О 0 1
В заключение отметим, что возможна упрощенная частная конструкция цикла типа while:
while expг do statseq od:
Здесь выражения statseq выполняются, пока выполняется логическое условие ехрг. Пример такого цикла:
п:=1:
п := 1
while n<16 do n:=2*n od;
九:=2
九:=4
九:二8
n:= 16
В этом примере идет удвоение числа п с начальным значением 几=1 до тех пор, пока значение п меньше 16.
Операторы пропуска и прерывания
Иногда бывает нужным пропустить определенное значение переменной цикла. Для этого используется оператор next (следующий). Приведенный ниже пример иллюстрирует применение оператора next в составе выражения if-fi для исключения вывода значения z = -2:
for i 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 переменной г присвоено не было и это значение на печать не попало.
Любой из операторов quit, done или stop обеспечивает также прерывание выполнения текущей программы (в частности, цикла), но при этом окно текущего документа закрывается.
Процедуры и процедуры-функции
Простейшие процедуры
Процедурой называют модуль программы, имеющий самостоятельное значение и выполняющий одну или несколько операций, обычно достаточно сложных и отличных от операций, выполняемых встроенными операторами и функциями.
Процедуры являются важнейшим элементом структурного программирования и служат средством расширения возможностей системы Maple 7 пользователем. Каждая процедура имеет свое уникальное имя и список параметров (он может быть пустнм). Процедуры вызываются так же, как встроенные функции, — указанием их имени со списком фактических параметров. При этом просто процедуры обычно не возвращают каких-либо значений после своего исполнения, хотя могут присваивать значения входящим в них переменным. Процедуры -функции в ответ на обращение к ним возвращают некоторое значение. Онп как бы являются новыми функциями, задаваемыми пользователем. Описанные ранее функции пользователя фактически являются процедурами-функциями с несколько упрощенной структурой.
Простейшая форма задания процедуры следующая:
name := ргос(П8раметры)
Тело процедуры end;
Параметры процедуры задаются перечислением имен переменных, например ргос(х) или proc(x,y,z). С помощью знака :: после имени переменной можно определить ее тип, например в объявлении prog(n: :integer) объявляется, что переменная п является целочисленной.
При вызове процедуры выражением вида:
п8те(Фактические_параметры)
фактические параметры подставляются на место формальных. Несоответствие фактических параметров типу заданных переменных ведет к сообщению об ошибке й к отказу от выполнения процедуры.
В качестве примера ниже приведена процедура вычисления модуля комплексного числа z — в данном случае это единственный параметр процедуры:
> modc:Mproc(z)
? evalf(sqrt(Re(z)*2+Im(z)*2))
> end:
mode ;= proc (z) eval^ sqrt( ^(z/4! + S(^)A2)) end proc
ПРИМЕЧАНИЕ После ввода заголовка процедуры под строкой ввода появляется сообщение: «Warning, premature end of input». Оно указывает на то, что ввод листинга процедуры не закончен и должен быть продолжен до тех пор, пока не будет введено завершающее слово end листинга процедуры. Если после этого слова поставить символ точки с запятой, то листинг процедуры будет выведен на экран дисплея.
Теперь для вычисления модуля достаточно задать обращение к процедуре modc(z), указав вместо z конкретное комплексное число:
modc(3.+I*4.);
5.000000000
Нетрудно заметить, что при знаке ; после завершающего слова end текст процедуры повторяется в строке вывода (в общем случае в несколько ином виде). Если это повторение не нужно, после слова end надо поставить знак двоеточия. Обратите также внимание на то, что для обозначения действительной и мнимой частей процедуры в ее тексте появились готические буквы.
Оператор возврата значения RETURN
Как отмечалось, процедуры, которые возвращают значение результата в ответ на обращение к ним, во многом тождественны функциям. Будем называть их процеду- рами-функциями. Обычно процедура возвращает значение последнего выражения в ее теле или выражения, намеченного к возврату специальным оператором RETURN:
mode :^proc(z)
evalf(sqrt(Re(z)*2+Im(z)*2)):
RETURN⑶
>end;
mode := proc (z) evalf( sqrt(91(z )A2 + 3(z)A2)); RETURN(%) end proc
modc(3.+I*4.);
5.000000000
Параметром оператора RETURN может быть любое выражение. В Maple не принято выделять процедурььфункции в какой-то отдельный класс. Действует правило —если не использован оператор RETURN, процедура возвращает значение последнего выражения в ее теле. Для устранения выдачи значений выражений внутри процедурььфункции после них просто надо установить знак двоеточия.
Статус переменных в процедурах и циклах
Переменные, которые указываются в списке параметров (например, z, в нашем случае), внутри процедуры являются локальными. Это означает, что изменение их значений происходит лишь в теле процедуры, то есть локально. За пределами тела процедуры эти переменные имеют то значение, которое у них было до использования процедуры. Это хорошо поясняет следующий пример:
restart:г:к1:
modc:=proc(z)
evalf(sqrt(Re(z)*2+Im(z)*2)):
end;
mode := proc (z) eval<sqrt(9l(z)A2 + 3(z)A2)) end proc
modc(3.+I*4.):'
5.000000000
z;
•
Нетрудно заметить, что внутри процедуры z = 3 + /*4, тогда как вне ее значение 2=1. Таким образом, имена переменных в списке параметров процедуры могут совпадать с именами глобальных переменных, используемых за пределами процедуры.
Переменные, которым впервые присваивается значение в процедуре, также относятся к локальным. Кроме того, переменные, применяемые для организации циклов, являются локальными. Все остальные переменные — глобальные.
Объявления переменных локальными с помощью оператора local
Если в теле процедуры имеются операции присваивания для ранее определенных (глобальных) переменных, то изменение их значений в ходе выполнения процедуры создает так называемый побочный эффект. Он способен существенно изменить алгоритм решения сложных задач и, как правило, недопустим.
Поэтому Maple-язык программирования имеет встроенные средства для исключения побочных эффектов. Встречая такие операции присваивания, Maple-язык корректирует текст процедуры и вставляет в нее объявление переменных локальными с помощью ключевого слова local и выдает предупреждающую надпись о подобном применении:
restart:т:=0:
w := 0
modc:=proc(z)
m:=evalf(sqrt(Re(z)*2+Im(z)*2)):RETURN(m) > end;
Warning, 'm' is implicitly declared local to procedure 'mode'
mode := proc (z) local m; m := evalf(sqrt(9l(z)A2 + S(z)A2)); RETURN(m) end proc
modc(3.+I*4.):
5.000000000
m:
Обратите внимание на то, что в тело процедуры было автоматически вставлено определение local m, задающее локальный статус переменной т. Оператором print можно вывести текст процедуры:
prlnt(modc);
proc⑵ local m; m 尸 eyaHsqrt(9l(z)^2 +3(z)A2)); RETURN(m) end proc
Объявления переменных глобальными с помощью слова global
Гэворят, что запретный плод сладок! Что бы ни говорили о нежелательности работы с глобальными переменными, бывает, что их применение желательно или даже необходимо. Чтобы сделать переменные внутри процедуры глобальными, достаточно объявить их с помощью ключевого слова global, после которого перечисляются идентификаторы переменных.
Следующий пример поясняет применение оператора global в процедуре:
а:п1:Ь:=1;
b:= 1
fg:«proc(x,y)
global a,b;
a:«x*2:b:«y*2:
RETURN(sqrt(a+b));
end;
fg := proc (x5 y) global a, 6; a :=小2; b :=片2; RETURN( sqrt(a + 6)) end proc
fg(3,4);
5
[afb]:
[9, 16]
В призере переменным а и b вначале присвоены значения 1. Поскольку они в процедуре объявлены глобальными, то внутри процедуры они принимают новые значения 炉 и “2. В результате при выходе из процедуры они имеют уже новые значения. Это и есть побочный эффект при исполнении данной процедуры. Если пользователь не знает (или не помнит), что та или иная процедура имеет побочный эффект, то он рискует получить самые неожиданные (и неверные) результаты своих вычислений.
》^ПРИМЕЧАНИЕ Следует отметить, что нельзя делать глобальными переменные, указанные в списке 4^/параметров процедуры, поскольку они уже фактически объявлены локальными. Такая
попытка приведет к появлению сообщения об ошибке следующего вида «Error, argument and global 'x' have the same пате». При этом соответствующие переменные останутся локальными.
Функция вывода сообщений об ошибках ERROR
При профессиональной подготовке процедур пользователь должен предусмотреть их поведение при возможных ошибках. Например, если он готовит процедуру или функцию, вычисляющую квадратный корень из действительных чисел, то надо учесть, что такой корень нельзя извлекать из отрицательных чисел (будем, исключительно в учебных целях, считать, что комплексные числа в данном примере недопустимы).
Для контроля за типом данных обычно используются различные функции оценки и тестирования. При выявлении ими ошибки, как правило, предусматривается вывод соответствующего сообщения. Для этого используется функция ERROR: ERROR(expjL expr_2.■
где expr_l, ... — ряд выражений (возможно, пустой). Наиболее часто ERROR выводит просто строковое сообщение об ошибке, например ERROR('strings4). Полное сообщение об ошибке имеет вид:
Error, (in name) string.
Приведем пример процедуры, в которой предусмотрен вывод сообщения об ошибке при задании переменной % < 0:
f proc (х) if х<0 then error "invalid variable x: %1", x else x*(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: %Г; -3.
> lastexception;
工"invalid variable x: %1 二 3
Эта процедура вычисляет квадратный корень из числа х При х < 0 выводится заданное сообщение об ошибке. Еще раз обращаем внимание читателя на учебный характер данного примера, поскольку вычисление квадратного корня (в том числе из комплексных и отрицательных действительных чисел) реализовано встроенной функцией sqrt.
Ключи в процедурах
В объявление процедуры можно включить ключевые слова, вводимые словом options opseq
Иногда их называют расширяющими ключами. Предусмотрены следующие ключи:
О arrow — определят процедуру-оператор в нотации ->;
О builtln — определяет функцию как встроенную;
О call_external — задает обращение к внешним программным модулям;
О copyright — защищает процедуру от копирования;
О 1п11пе — определяет процедуру как подчиненную (возможно, не для всех процедур - см. справку);
О load=memberName — загружает нужный для определений процедуры модуль (см. также опцию unload и детали в справке);
- О operator — объявляет процедуру — функциональный оператора
Q system — определяет процедуру как системную,
О remember — определяет таблицу памяти для процедуры;
О trace — задает трассировку процедуры;
Q uni oad^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) fl end;
/:= pftoc (n) if n < 2 then n else f(n- 1) + f(« - 2) end if end proc
> t1me(f(30)); 27.400
> f(30):.
832040
Вычисление f(30) по этой процедуре на ПК с процессором Pentium II 350 МГц занимает около 30 с — см. контроль этого времени с помощью функции time (результат в секундах).
Стоит добавить в процедуру ключ remember, и время вычислений резко уменьшится:
> restart;'
> fe:Hproc(n) options remember: 1f n<2 then n else fe(n-l)+fe(n-2) f1 end:
> fe(30); 832040
> t1me(fe(30)); 0.
При этом вычисление fe(30) происходит практически мгновенно, так как все промежуточные результаты в первом случае вычисляются заново, а во втором они берутся из таблицы. Однако это справедливо лишь тогда, когда к процедуре было хотя бы однократное обращение. Обратите внима^це на то, что данные процедуры являются рекурсивными 亠 в их теле 礴将罢艇 об^|цение кет^м себе.
Ключ builtin
Ключ builtin придает процедуре статус встроенной. Он должен использоваться всегда первым. С помощью функции eval (name) можно проверить, являетсд ли функция с именем name встроенной:
eval(type);
ргос() 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 — Q
0(4,2):
0(4,2.):
2.585786438
Ключ trace
Ключ trace задает вывод отладочной информации:
o:«proc(x.y) option trace, arrow; x-sqrt(y) end:
о := proc (x, у] option trace, arrow; x 一 sqrt(^) end proc
>0(42);
{--> 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:
О н М(X* 期*- sqrt(y) aid proc
oo:«proc(x,y) option Copyright: x-sqrt(y) end:
oo := proc (x, у) ... end proc,
oo(4,2.);
2.585786438
Нетрудно заметить, что во втором примере тело процедуры уже не просматривается. Для отмены защиты от просмотра можно использовать оператор i nterface(verboseproc=2).
Общая форма задания процедуры
Выше мы рассмотрели основные частные формы задания процедур. Все они могут быть объединены в общую форму задания процедуры:
name:=proc(<drgseq>)#local<nseq>: global<nseq>: opt1ons<nseq>; description<strlngseq>;<stateq>end; (или end:)#name:=proc(<drgseq>)#local<nseq>: global<nseq>: opt1ons<nseq>; description<strlngseq>;<stateq>end; (или end:)#объявление процедуры
name:=proc(<drgseq>)#
local<nseq>: global<nseq>: opt1ons<nseq>; description<strlngseq>;
<stateq>
end; (или end:)#
name:=proc(<drgseq>)#
local<nseq>: global<nseq>: opt1ons<nseq>; description<strlngseq>;
<stateq>
end; (или end:)#
объявление локальных переменных
объявление глобальных переменных
объявление расширяющих ключей
объявление комментарий
выражения - тело процедуры объявление конца процедуры
Эта форма охватывает все описанные выше частные формы и позволяет готовить самые сложные и надежно работающие процедуры.
Средства контроля и отладки процедур
Большая часть функций и операторов системы Maple 7 реализована в виде процедур, написанных на Maple-языке программирования. Благодаря возможности их просмотра пользователь получает неисчерпаемый источник примеров программирования на этом языке. Кроме того, пользователь может создавать свои собственные процедуры.
Для контроля и отладки процедур прежде всего надо уметь вывести их текст. Для этого служит функция: print(name);'
где name — имя процедуры..
Однако перед тем, как использовать эту функцию, надо исполнить команду:
1 nterf асе( verbosepro^2, prettyprl nt=l, version);
Maple Worksheet Interface, Maple 7, IBM INTEL NT; May 28 2001 Build ID 96223
Ее смысл будет пояснен ниже. Пока же отметим, что эта команда обеспечивает полный вывод текста процедур библиотеки. Встроенные в ядро процедуры, написанные не на Maple-языке, в полном тексте не представляются. Поясним это следующими примерами:
prlnt(evalf);
prpc() option builtin, remember; 167 end proc'
prlnt(erf):
proc(x::algebraic)
local Re_x, Im_x, sq si, xry 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\ 斤nfini,) 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)')
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. Эта функция служит для управления выводом и задается в виде:
1nterface( argl, arg2. ...)
где аргументы задаются в виде равенств вида name=value и слов-указателей:
ansi
autoassign
echo
errorbreak
errorcursor
imaginaryunit
indentamount
labelling
labelwidth
latexwidth
longdelim
patchlevel
plotdevice
plotoptions
plotoutput
postplot
preplot
prettyprint
prompt
quiet
rtablesize
screenheight
screenwidth
showassumed
verboseproc
version
warnlevel
К сожалению, объем и характер данной книги не позволяют остановиться на всех вариантах использования этой очень мощной функции, тем более что в ней может использоваться множество аргументов. Мы рассмотрим только некоторые, наиболее важные возможности.
Указание verboseproc=n задает степень детальности вывода листинга процедур. При п=0 текст не выводится, при п=1 выводится текст только заданных пользователем процедур, а при п=2 — всех процедур на Maple-языке. Пример этого был дан выше. Указание prettypr1nt=0 или 1 управляет выводом стандартных сообщений. Указание plotdevic^strlng управляет выводом графики, например 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 = x*n, x
answer n + 1
n + 1
--exit int (now at top level) = x*(n+l)/(n+l)}
Действие функции трассировки отменяется командой 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+D)
n + 1
printlevel:=1;
printlevel :二 1
int(xAn,x);
S + I)
n + 1
При отладке алгоритмов выполнения вычислений надо тщательно следить за сообщениями об ошибках. Для этого в Maple предусмотрены функция tracefirr
и системная переменная 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:
у:н。:
for i to п do y+戸「2 od
end:
demo := proc{n^integer) local y, i\y := 0; for i to и do у :=y + iA2 end do end proc
demo(3):
Чтобы включить отладчик в работу, надо исполнить команду stopat:
stopat(demo):
[demo ]
demo(3);
demo:
* у := 0;
DBG>
Признаком, указывающим на работу отладчика, является изменение приглашения к вводу со знака > на DBG> (как нетрудно догадаться, DBG означает debugger). Теперь, подавая команды next (следующий), step (шаг) и stop (остановка), можно проследить выполнение процедуры:
DBG> next
0
demo:
for i to n do
end do
DBG> step
0
demo:
y:=y+iA2
DBG> step
京
demo:
у := y+i人2
DBG> step
demo:
y:=y+iA2
DBG> step
14
В последнем случае процедура по шагам дошла до конца вычислений; на этом работа отладчика завершается сама собой.
Можно также вывести листинг процедуры с помощью команды showstat:
> showstat(demo);
demo := proc(n::integer) local у, i;
1*у := 0;
for i to n do
у := y+i八2
end do
end proc
Обратите внимание, что в этом листинге строки вычисляемых элементов пронумерованы. Это сделано для облегчения разбора работы процедуры.
В общем случае отладчик выключается при выполнении команд stopat, stopwhen или stoperr. Если используется команда stopat, то вывод на экран соответствует исполнению последней выполненной команды. Для отмены этой команды используется команда unstopat.
Команда stopwhen позволяет установить точку наблюдения за указанной в команде переменной. Отменить ее можно командой unstopwhen. Команда stoperror позволяет задать остановку при появлении определенной ошибки. Для отмены этой команды используется команда unstoperror.
Команда cont используется для продолжения работы до следующей точки прерывания, установленной указанными выше командами, или до конца процедуры. Для прерывания отладки можно использовать команду quit. После команды stop можно вычислить любое Марк-выражение.
В действительности команд отладчика намного больше и их функции более развиты, чем это описано выше. Пользователи, заинтересованные в серьезной работе с отладчиком (скорее всего, их немного), могут просмотреть его подробное описание. Для этого в разделе справочной системы Context найдите раздел Programming, а в нем — раздел Debugging.
Операции ввода и вывода
Считывание и запись программных модулей
В уроке 2 рассматривалась работа с файлами документов. Вводимые в текущий документ программные модули хранятся вместе с ним, так что при отказе от загрузки какого-либо документа все его программные блоки не могут использоваться в других документах. Кроме того, порой неудобно загружать объемный документ ради использования одного или нескольких модулей, например процедур. Поэтому в Maple 7 введены средства, позволяющие записывать нужные модули (в том числе результаты вычислений) на диск и считывать их в случае необходимости.
Для записи на диск используется оператор save:
О save filename — запись всех определений текущего файла под именем filename;
О save name_l, name_2name_k, filename — запись избранных модулей с именами name_l, name_2, ..., name_k под именем filename.
Считывание имеющегося на диске файла filename осуществляется оператором read: read 《filename〉
При считывании все имеющиеся в файле определения становятся доступными для рабочих документов Maple. При записи файлов отдельных определений используется специальный внутренний Maple-формат файлов. Для загрузки файлов типа *.т из стандартной библиотеки используется функция readl ib. А для записи файлрв в качестве библиотечных достаточно в имени filenaroe оператора
save указать расширение .т. Разумеется, можно считывать такие файлы и оператором read, указав в имени файла расширение .т:
save ту_ргос,чту_11Ь.т': # запись файла ту_ргос и
# библиотечного файла my_lib.ni:
load 'my_lib.ni' : # считывание библиотечного файла
# my_lib.ni.
Создание своей библиотеки процедур
Если приведенные выше примеры составления процедур кажутся вам простыми, значит, вы неплохо знаете программирование и, скорее всего, уже имеете несколько полезных процедур, которые вы хотели бы сохранить — если не для потомков, то хотя бы для своей повседневной работы. Сделать это в Maple 7 довольно просто.
Прежде всего надо определить имя своей библиотеки, например mylib, и создать для нее на диске каталог (папку) с заданным именем. Процедуры в Maple 7 ассоциируются с таблицами. Поэтому вначале надо задать таблицу-пустышку под будущие процедуры:
restart;
mylib:=table(); mylib :~ table([]) Теперь надо ввести свои библиотечные процедуры. Они задаются с двойным именем ;вначале указывается имя библиотеки, а затем в квадратных скобках имя процедуры. Для примера зададим три простые процедуры с именами fl, f2 и f3:
mylib[fl]:=proc(x:anything) sin(x)+cos(x) end:
mylib[f2]:=proc(x::anything) sin(x)A2+cos(x)A2 end:
myl1b[f3]:=proc(x::anything) if x=0 then 1 else sin(x)/x fi end:
Рекомендуется тщательно проверить работу процедур, прежде чем записывать их на диск. Ограничимся, скажем, такими контрольными примерами:
mylib[fl](x); sin(x) + cos(x)
mylib[fl](l.);
1.3817.73291
mylib[f2](x);
sin(x)2 + cos(x)2
simplify(niylib[f2](x));
1
evalf(mylib[f3](x)); sin(x)
sin(0)/0:
Error; division by zero
> myVb[f3](0);
1
evalf(mylib[f3](.5));
.9588510772
Можно построить графики введенных процедур-функций. Они представлены
на рис. 7.4.,
Рис. 74 Построение графиков процедур-функций fl, f2 и f3
С помощью функции with можно убедиться, что библиотека mylib действительно содержит только что введенные в нее процедуры. Их список должен появиться при обращении with(mylib):-
with(mylib);
[/Л/,川
Теперь надо записать эту библиотеку под своим именем на диск с помощью команды save:
save(myl1b,'c:/myl1b.m');
Обратите особое внимание на правильное задание полного имени файла. Обычно применяемый для указания пути знак ~\ в строках Maple-языка используется как знак продолжения строки. Поэтому надо использовать либо двойной знак \\, либо знак /, В нашем примере файл записан в корень диска С. Лучше поместить библиотечный файл в другую папку (например, в библиотеку, уже имеющуюся в составе системы), указав полный путь до нее.
После всего этого надо убедиться в том, что библиотечный файл записан. После этого можно сразу и считать его. Для этого вначале следует командой restart устранить ранее введенные определения процедур:
restart;
С помощью команды with можно убедиться в том, что этих определений уже нет:
withCmylib);
Error; (in pacman:-pexports) mylib is not a package
После этого командой read надо загрузить библиотечный файл:
re8d('c:/mylib.ni');
Имя файла надо указывать по правилам, указанным для команды save. Если все выполнено пунктуально, то команда with должна показать наличие в вашей библиотеке списка процедур fl, f2 и f3:
withCmylib); [fl. f2. f3]
И наконец, можно вновь опробовать работу процедур, которые теперь введены из загруженной библиотеки:
fl(x);
sin(x) + cos(x)
simplify(f2(y));
1
> f3(0);
.8414709848/
Описанный выше способ создания своей библиотеки впол^ге устроит большинство пользователей. Однако есть более сложный и более «продвинутый» способ ввода своей библиотеки в состав уже имеющейся. Для реализации этого Maple 7 имеет следующие операции записи в библиотеку процедур si, s2, ... и считывания их из файлов filel, file2,
S8velib(sl. s2 sn. filename)
readl-ib(f. fileL Ше2. ...)
С помощью специального оператора makehelp можно задать стандартное справочное описание новых процедур;
makehelp(n,f,Ь).
где п — название темы, f — имя текстового файла, содержащего текст справки (файл готовится как документ Maple) и b — имя библиотеки. Системная переменная libname хранит имя директории библиотечных файлов. Для регистрации созданной справки надо исполнить команду вида:
libname:=libnanie, '/mylib';
С деталями применения этих операторов можно ознакомиться в справочной системе.
К созданию своих библиотечных процедур надо относиться достаточно осторожно. Их применение лишает ваши Maple-программы совместимости со стандартной версией Maple 7. Если вы используете одну-две процедуры, проще поместить их в те документы, в которых они действительно нужны. Иначе вы будете •вынуждены к каждой своей программе прикладывать еще и библиотеку процедур. Она нередко оказывается большей по размеру, чем файл самого документа. Не всегда практично прицеплять маленький файл документа к большой библиотеке, большинство процедур которой, скорее всего, для данного документа попросту не нужны. Особенно рискованно изменять стандартную библиотеку Maple 7.
Впрочем, идти на это или нет — дело каждого пользователя. Разумеется, если вы готовы создать серьезную библиотеку своих процедур, то ее надо записать и тщательно хранить. С Maple 7 поставляется множество библиотек полезных процедур, составленных пользователями со всего мира, так что и вы можете пополнить ее своими творениями (см. урок 14).
Запись и считывание данных
Обширные возможности Maple 7 делают привлекательным применение этой программы для автоматической обработки данных, поступающих от каких-либо экспериментальных установок. Для этого установки снабжаются интерфейсными платами (например, аналого-цифровыми преобразователями) и необходимым программным обеспечением. Возможна и передача данных, полученных с помощью Maple 7, в экспериментальные установки.
Обмен информацией между Maple 7 и внешней средой (к ней, кстати, относятся и другие программы) чаще всего осуществляется через файлы текстового формата, поскольку именно с такими файлами могут работать практически все программы. Для записи данных в файл служит оператор writedata:
wr1ted8t8[APPEND](fileID. data)
wr1ted8t8[APPEND](fileID. data, format)
writedata[APPEND](fileID, data, format, default)
Здесь filelD — имя или дескриптор файла данных, data — список, вектор или матрица данных, format — спецификация формата данных (integer, fl oat или string), default — процедура, задающая запись нечисловых данных, например:
writedata(F.A.float.proc(f.х) fprintf(f.'CMPLX(^gДд)'.Re(x).Im(x)) end);
Необязательный указатель APPEND используется, если данные должны дописываться в уже созданный файл.
Считывание из файла filename обеспечивает функция readdata:
readdata(fileID. n)
readdata(fileID, format, n)
readdata(fileID. format)
Здесь n — целое положительное число, задающее число считываемых столбцов. Ниже представлены примеры этих операций:
> da切:*array([:[:L2,3L£4,5,6,Е7,8,9Н);
12 3-
data := 4 5 6
7 8 9
writedat8('C:\\mydat8.txt'.data):
restart:
data;
data
> d8ta:=re8ddata('CA\myd8t8.txt' ,3);
data := [[ 1., 2” 3.], [4., 5., 6.], [7., 8., 9.]]
Maple 7 имеет также типичные файловые операции:
О writeto — запись в файл;
О appendto — добавление к файлу;
О open — открытие файла;
О close — закрытие файла;
О write — запись в открытый файл;
О save — запись выражений в файл;
О read — считывание из файла.
Их реализация, однако, зависит от платформы, на которой установлена система, и от ее настройки.
Вывод в специальных форматах
Вывод в формате LaTeX
Maple 7 имеет ряд средств для общения с другими программами. Часть из них, в основном относящаяся к обмену через файлы, уже была описана. Однако Maple 7 способна генерировать коды для прямого их включения в такие программы, причем не только математические.
Для подготовки математических статей и книг широкое распространение получили редакторы ТеХ и LaTeX. Для подготовки выражений или файлов в их формате служит функция:
18tex(expr.filename)
Параметр filename не обязателен, если достаточно получить нужное выражение в ячейке вывода Maple 7:
> 18tex(a*x*2+b*x+c);
а{х}Л{2}+Ьх+с
> latex(d1ff(x*n,x$2)):
{\frac {{х}л{п}{п}л{2}}{{х}л{2}}}-{\^ас {{х}л{п}п}{{х}^{2}}}
Генерация кодов на языке Фортран
Язык Фортран вот уже многие десятилетия используется для программирования вычислительных задач. Накоплены обширные библиотеки решения таких задач на Фортране. Почитателей этого языка Maple 7 порадует тем, что она позволяет готовить коды для программ на Фортране. Для этого вначале надо загрузить библиотечную функцию:
with(codegen,fortran);
[fortran ]
После этого может использоваться функция fortran:
fortranfexpr.filename=str.optimized)
Два последних параметра не обязательны при выводе выражения ехрг в форме, присущей языку Фортран:
fortran(8*x*2+b*x+c):
tO 二 a*x**2+b*x+c
fortr8n(diff(xxn,x$2));
tO 二 x**n*n**2/x**2-x**n*n/x**2
Параметр optimize позволяет генерировать оптимизированные коды:
fortr8n(a*xx2+b*x+c,optimized);
tl = x**2
t4 二 a*tl+b*x+c
При этом вычнслительный процесс строится так, чггобы минимизировать число арифметических операций.
Генерация кодов на языке С
Язык С (Си) также широко используется для решения вычислительных задач. Достаточно отметить, что сама система Maple 7 создана на языке С.
Для генерации кодов на языке С вначале надо подключить соответствующую функцию:
with(codegen.C):
[С]
Затем можно использовать функцию С:
C(expr.folename=str.opti mi zed)
Эта функция используется по аналогии с функцией fortran, что и показывают приведенные ниже примеры:
C(diff(x*b,x$2)):
tO = pow(x,l.O*b)*b*b/(x*x)-pow(x,l.O*b)*b/(x*x);
> C(diff(x*b.x$2).optimized);
tl = pow(x,l.O*b);
t2 = b*b;
t4 = х*х;
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):一 一 _
В J, Fx
[BJ(0.1.),BesselJ(0,l.)J:
[.7651976866, .7651976866]
Можно также переназначить функцию пользователя:
alias(Fx=F(x)):
BJ, Fx
diff(F(x),x):
гХ
дх
int(F(x),x=a..b);
Fxax
а
Для отмены переназначения, например BJ, используется та же функция alias с повтором переназначения:
alias(BFBJ);
Fx
> BJ(0,L):
BJ(0, 1.)
Обратите внимание на то, что BJ исчезло из списка переназначений и функция ВJ(0,1.) уже не вычисляется, поскольку ее больше нет.
Модули
Модули придают языку программирования Maple 7 некоторые свойства языков объектно-ориентированного программирования. Они служат для реализации абстрактного типа данных на основе инкапсуляции — объединения данных и процедур их обработки. Модули задаются ключевым словом module с пустыми скобками () и завершаются словами end module или просто end:
name 产 module()
export eseq: local Iseq; global gseq; option optseq; description desc; Тело модуля
end module (или просто end)
Хотя структура модуля во многом напоминает структуру процедуры, включая объявление локальных и глобальных переменных, параметров и описаний, между ними есть существенная разница:
О модуль не имеет списка входных параметров;
О в модуле могут размещаться данные:
О модули могут использоваться для создания пакетов процедур, доступ к которым обеспечивается командой with;
О модули имеют свойства в виде локальных переменных и методы в виде процедур интерфейса модулей;
О реализация абстактных типов данных с помощью модулей скрыта от пользователя;
О модули могут содержать оператор export eseq, объявляющий экспортируемые переменные модуля;
О для доступа к экспортируемым переменным модуля может использоваться специальный оператор «:-» (двоеточие и минус);
О модули и процедуры могут вкладываться друг в друга без ограничения уровня вложенности;
О модули могут иметь специальные конструкторы объектов.
Следующий пример демонстрирует создание модуля pt, в котором заданы две операции (сложения plus и умножения times) и показан доступ к ним;
pt尸 moduleO
end module;end module;export plus., times; plus 尸(a,b) -> a + b: times 尸(a,b) -> a * b;
end module;
end module;
р/ := module () export plus, times; end module
pt:-plus(3,5):
8
pt:-times(3,7):
21
Детальную информацию о модулях и о конструкторах объектов можно найти в справках ио ним. Некоторые пакеты Maple 7 (в основном сравнительно новые) реализованы уже не в виде процедур, а в виде модулей (например, в виде модуля сделан пакет LinearAlgebra). В простейшем виде модули могут использоваться всеми пользователями системы Maple 7, но их серьезное применение (например, с целью создания полно]_1енных пакетов Maple 7) требует серьезного знакомства с техникой объектно-ориептированного программирования. 1акое зпа- ,комство выходит за рамки данной книги.
Макросы
Макрос — это макрокоманда, короткая запись длинных определений. По сравнению с переназначениями макросы более гибки и могут использоваться для сокращения операции загрузки новых определений из библиотеки и пакетов. Макросы создаются с помощью (функции macro:
macrofel. е2 еп)
где el, е2 еп — ноль или более равенств.
В следующем примере функция numbperm с помощью макроса заменена иа пр:
numbperm([l,2,3,4]);
24;
macro(np=numbperm(V)):
V:=[l,2,3,4];
『□,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, более подробное рассмотрение операций внешних вызовов не имеет особого смысла.
馥縦翁綫缴緻幾或綜綴齡後貿卷繳終魏唆繳黎馥縦翁綫缴緻幾或綜綴齡後貿卷繳終魏唆繳黎[> system('format а:)[> system('format а:)
馥縦翁綫缴緻幾或綜綴齡後貿卷繳終魏唆繳黎
馥縦翁綫缴緻幾或綜綴齡後貿卷繳終魏唆繳黎
[> system('format а:)
[> system('format а:)
Рис. 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, то есть выражения:
£/W = /(",) + /(m +1) + ... + /("Т) + /(〃).
k~m
является достаточно распространенной операцией математического анализа. Для вычисляемой н инертной форм сумм последовательностей служат следующие функции:
sum(f,k);sum(f,k=ni..n);sum(f ,ksalpha):
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»1..4);
4.
24
2=1
sum(k*2,ksl..4);
Error; (in sum) summation variable previously assigned, second argument evaluates to 2 = 14
sum(k2','kT.4);
30
sum(l/i,1=1..100);
14466636279520351160221518043104131447711 2788815009188499086581352357412492172272
Обратите внимание, что во втором примере система отказалась от вычисления, а в третьем даже выдала сообщение об ошибке, связанной с тем, что переменной к перед вычислением сумм было присвоено численное значение 2. После заключения выражения и переменной индекса к в прямые кавычки ошибка исчезла, поскольку такая операция означает, что переменной придается неопределенное значение.
Суммы с заданным пределом
Особый класс образуют последовательности, у которых предел задается в общем виде значением переменной. Ниже представлен ряд последовательностей, у которых предел задается как 0. .п или 1. .п:
restart;
sum(k,k=l..п);
1 z 1 1 ‘22
sum(i/(i+l),1=0..п);
п + \ - ^(п +2) - у
sum(k*binoniial (n,k) ,ks0. .п);
Такого рода последовательности, как видно из приведенных примеров, нередко имеют аналитические выражения для своего значения. Его вычисление намного проще, чем формирование заданной последовательности с прямым суммированием ее членов. Некоторые из таких сумм выражаются через специальные математические функции.
Суммы бесконечных последовательностей
Многие суммы бесконечных последовательностей сходятся к определенным численным или символьным значениям, и система Maple 7 способна их вычислять. Это поясняют следующие примеры:
> restart;
> sum(-exp(-k).k); е
(-1 +е)е*
> sum(k*a*k,k);
ак (ka -к-а)
-("1)2-
a sum(l/k!,ks0..infinity); е
> 5ил1(1/1Л2,1=1. ,infinity)=suni(l/i*2,i=l. .infinity);
> Sum(l/n!,n=l..infinity)ssum(l/n!,n«l,.infiiTity);
2 K(Y)
" I
> evalf(X);
1.718281828= 1.718281828
> Sum(l/r2li)=suni(l/i*2,i);
> Sum( 1/1*2,1=1. .infinity)=suni( 1/1*2,1=1. .infinity);
у f 1 2
> Sum(l/n! ,n=l. .1nfin1ty)=suni(l/n! ,n=l..infinity);—
> evalf(^);
1.718281828 = 1.718281828
> Sum(l/i"2,1>suni(l/i"2,1);
2戶一¥(1")
Сумма от перемены мест слагаемых меняется!
Даже школьники xopoHio знают, что от перестановки слагаемых сумма не изменяется. Однако Maple 7 (кстати, как и большинство других систем компьютерной математики) при вычислении сумм, увы, этому правилу не следует. Приведенные ниже примеры наглядно показывают этот просчет системы:
> restart:
> Sum(k, k«l..5)«sum(k, k«l.. 5);
5
£ 4= 15
SumCk.k^.. l)Ksum(k,k=5.. 1);
У 左=-9
Jt=5
5+4+3+2+1:
15
ВНИМАНИЕ При вычислении сумм последовательностей надо строго соблюдать прямой (нарастающий) порядок задания значений индексной переменной суммы. Нарушение этого порядка чревато грубыми ошибками.
Двойные суммы
Могут встречаться множественные суммы по типу «сумма в сумме». Ограничимся приведением примера двойной суммы, имеющей аналитическое значение: > Sum( Sum(k*2, k = 1.,m), m = 1..N); factorC simpl1fy( value(^)));
±N(N+2)(N+ 1)2,
При конкретном значении N такую сумму нетрудно вычислить подстановкой: > subs( N = 100, X);
8670850
Как видно из приведенных примеров, средства вычисления сумм последовательностей Maple 7 позволяют получать как численные, так и аналитические значения сумм, в том числе представляемые специальными математическими функциями.
Вычисление произведений членов последовательностей
Основные формулы для произведения членов последовательностей
Аналогичным образом для произведений членов /(/) некоторой последовательности, например вида:
口/С) = /(")/(" + !)•••/(«-])/(«)
i-m
используются следующие функции;
product(f.k);product(f.k=ni. .n);producKf .k=alpha):
Product(f.k);ProducKf.k=ni. .n);Productff.k=alpha).
Обозначения параметров этих функций и их назначение соответствуют приведенным для функций вычисления сумм. Это относится, в частности, и к применению одиночных кавычек для f и к.
Примеры вычисления произведений членов последовательностей
Примеры применения функций вычисления произведений даны ниже:
restart;
Product(k*2,ksl*.5)=product(k*2lksl.*5);
[[产=14400
Product(k*2,k)«product(k*2,k);
Ц 产=rw к
product(a[k],k=l..5);
%%%%%
f:=[l,2,3,4,5];
广=[1,2,3,4,5]
prodUct(f[k],k=1..4);
24
product(n+k.k^l*-4);
(n + 1)(孔+ 2)(〃+ 3)(〃 + 4)
Product(n+k, k=l..m)«product(n+k,k=l..m);
U(" + ")= FTTTT-
product (k, k=RootOf (x*3 - 9)) :
9Z
Как и в случае вычисления сумм, вычисление произведений возможно как в численной, так и в аналитической форме — разумеется, если таковая существует. Это показывает следующий пример:
Product(2/i ,5=1. .1nfimty)^product(2/i ,i=l..infinity);
Нетрудно понять, что при i, стремящемся к бесконечности, перемножаемые члены последовательности стремятся к нулю, а потому к нулю стремится и их произведение. Вопросы доказательства подобных утверждений находятся за рамками данного учебного курса, ибо он посвящен не математике как таковой, а конкретной программе для математики — Maple 7.
От перемены места сомножителей произведение меняется!
Хотя произведение не зависит от порядка расположения сомножителей, их перестановка в Maple 7 недопустима. Это иллюстрируют следующие примеры:
Product(k*2,k=l.>4)s=product(k*2.k=l..4);
4
口 М = 576
Product(к^г.кМ.. l)=product(k*2,k:=4.. 1):
口尸$
> 4人2*3人2*2人2*1人2;
576
ВНИМАНИЕ При вычислении произведений надо строго соблюдать прямой (нарастающий) порядок задания значений индексной переменной произведения. Нарушение этого порядка чревато грубыми ошибками.
Вычисление производных
Функции дифференцирования выражений diff и Diff
Вычисление производных функций /"(久)=切'(翼)/改 п-го порядка — одна из самых распространенных задач математического анализа. Для ее реализации Maple 7 имеет следующие основные функции:
diff(a. xl, х2 хп)diff(a. [xl, х2 хп])
Diff(d, xl. х2хп)Diff(a. [xl. х2хп])
Здесь а — дифференцируемое алгебраическое выражение, в частности функция f(xl, х2, хп) ряда переменных, по которым производится дифференцирование. Функция Diff является инертной формой вычисляемой функции diff и может использоваться для естественного воспроизведения производных в документах. Первая из этих функций (в вычисляемой и в инертной форме) вычисляет частные производные для выражения а по переменным xl, х2, ..., хп. В простейшем случае diff(f(x) ,х) вычисляет первую производную функции /(%) по переменной %. При 几,большем 1, вычисления производных выполняются рекурсивно, например d1ff(f(x), х, у) эквивалентно diffCdiff (f(x), х), у). Оператор $ можно использовать для вычисления производных высокого порядка. Для этого после имени соответствующей переменной ставится этот оператор и указывается порядок производной, Например, выражецие d1ff(f(x) ,х$4) вычисляет производную 4-го порядка и эквивалентно записи diff(f(x) ,х,х,х*х). A diff(g(x,y) ,х$2,у$3) эквиралрнтцо diff(g(x,y).xfx.y,y,y)t
Примеры вычисления производных:
restart;
D1ff(a*x*n,x)=diff(a*x*n,x);
Diff(a*sin(b*x),x)=diff(a*sin(b*x),x);
温 a sin(/)x)二 a cos(/)x) b
Diff([sin(x),x*n,exp(a*x)],x)=diff([sin(x),x*n,exp(a*x)],x);
8「,/ 、 〃 (ax)l С / 、/孔 Sx)
^ [ sin(x), x , e J = cos(x), №,a e
D1ff(a*x*n,x$3)=diff(a*x*n,x$3);
Э3Э3ax11 n3 3 a xn n2 2 axn n
Э3
Э3
Diff([x〃2,x〃3,xF],x) =diff([x〃2,x〃3,xF],x);
[x, x3, x ] = 2 x, 3 x2,
simplify(X);
[x2, x3, хл] = [2 x, 3 x2, хП ”孔]
Как видно из приведенных примеров, функции вычисления производных могут использоваться с параметрами, заданными списками. Приведенные ниже примеры показывают эти возможности и иллюстрируют дифференцирование функции пользователя для двух переменных:
restart;
> f(x,y):=cos(x)*E3:
出工,y)'=COS(X)y3
> Diff(f(x,y),x)=diff(f(x,y),x):
^cos(x)/= -sin(x)/
D1ff(f(x,y),y)=diff(f(x,y),y);
a *2
斤 cos(x) у = 3 cos(x) у
Dlff(f(x,y),x,y)«dlff(f(x,y),x,y);
一丁 cos(x) у3 =一3 sin")* дудх
Dlff(f(x,y),x$4)«diff(f(x,y),x$4): 己4
—cos(x)/ = cos(x)/
Diff(f(x,y),y$2)-dlff(f(x,y),y$2):
、3 二 \
—;cos(x)y = 6 cos(x)y
Diff(f(x,y),x$4.y$4)Yiff(f(x.y) ,х$3,у$2);
豆哀 cos(x) уЗ = 6 sin(x) у
Получаемые в результате дифференцирования выражения могут входить в другие выражения. Можно задавать их как функции пользователя и строить графики производных.
Дифференциальный оператор D
Для создания функций с производными может также использоваться дифференциальный оператор D. Порою он позволяет создавать более компактные выражения, чем функции diff и Diff. Дифференциальный оператор можно записывать в следующих формах: D(f) или D[1](f), где параметр f — выражение или имя функции, i — положительное целое число, выражение или последовательность. Оператор D(f) просто вычисляет имя производной от f, поскольку в этой форме он эквивалентен unnaply(diff(f(x) ,х) ,х). В форме D(f)(x) этот оператор подобен diff(f(x) ,х). Приведем примеры дифференцирования функций, заданных только именами, и функций с одним параметром:
restart;
D(cos⑵:
2 sin cos
D(exp*2+cos*2+tan+GAMMA):
2 exp2 — 2 sin cos + 1 + tan2 + T Г
D(ln);
1
D(sin)(x)=diff(sin(x),x);
cos(x) = cos(x)
Следующий пример показывает дифференцирование функции пользователя fun с применением дифференциального оператора D и функции diff:
fun:«(x)->s1n(x*2):
fun :=х—> sin(x2)
D(fun)=diff(fun(x),х):
(х—> 2 cos(x2) х) = 2 cos(x2) x
Дифференциальный оператор можно применять и для дифференцирования функций нескольких переменных по заданной переменной:
f:«(x,y,z)->х*ехр(у)+1n(z):
/:= (х,у, z) —е'+ E(z)
D[l](f);
(x,y,z)^ey
D[2](f):
(x,y,z)Txe,
D[3](f);
Пример применения дифференциального оператора для функции f, заданной программным объектом-процедурой, представлен ниже:
restart:
f:=proc(x,b,n) local i,d,s:
s:=0:
for i from n by -1 to 0 do s:=s*x+b[1] od:
s
end:
D[l](f):
proc (x, b, n)
local sx;
sx := 0;
s := 0;
for i from n by -1 to 0 do 5X := sxXx + s; s := sXx + b[i] end do ;
sx
end proc
D[l](sin*cos):
2• 2
cos - sin
Этот пример показывает реализацию схемы Горнера для полинома b степени п от Ттеременной х. При этом применение оператора дифференцирования возвращает процедуру. Ряд интересных возможностей по вычислению производных предоставляет пакет расширения student.
Вычисление интегралов
Вычисление неопределенных интегралов
Вычисление неопределенного интеграла обычно заключается в нахождении первообразной функции. Это одна из широко распространенных операций математического анализа.
Для вычисления неопределенных и определенных интегралов Maple V предоставляет следующие функции:
int(f,х);int(f.x=a..b);int(f.x=a..b,continuous);
Int(f.x);Int(f,x=a..b);Int(f,x=a..b.conti nuous):
Здесь f — подынтегральная функция, х — переменная, по которой выполняются вычисления, а и b — нижний и верхний пределы интегрирования, continuous — необязательное дополнительное условие.
Maple 7 старается найтц аналитическое значецце интеграла с заданной подынтегральной функцией,Если это не удается («Пример» для «не берущихся» ин-
тегралов), то возвращается исходная запись интеграла. Для вычисления определенного интеграла надо использовать функцию evalf(int(f,х=а. ,Ь)). Ниже приведены примеры вычисления интегралов:
Int(a*x*n,x)int(a*x*n,x):.
("+
(axndx = ^~—
Int(sin(x)/x.x)=int(sin(x)/x.x);
厘 f (x)
Int(ln(x)人3.x);
ln(x)3 dx
valued):
1п(л)3 X-3 X ln(x)2 + 6 x ln(x) - 6 X
Int(x*5*exp(-x).x):
「5( г)〃
x e dx
valued);
-x5 e‘ " - 5 x4 e( - 20 d ©' x) - 60 x2 e( "' - 120% e‘ - 120 e‘ "
St(l/x,x)=jnt(l/x.x):
丄厶=ln(x)
Обратите внимание, что в аналитическом представлении неопределенных интегралов отсутствует произвольная постоянная С. Не следует забывать о ее существовании. Для вычисления кратных интегралов (двойных, тройных и т. д.) следует применять функцию int (или Int) внутри такой же функции, делая это столько раз, сколько нужно. В отличие от функции дифференцирования для функции интегрирования нельзя задавать подынтегральные функции в виде списка или множества.
Возможно вычисление сумм интегралов и интегралов сумм, а также интегралов от полиномов:
Sum(Int(x*i ,х) ,К. .5);
Г
卜,dx
> value(^):
三Х + -X +7x X + - X
23436
> value(Jt);
2 1 31 4 1 5 1 6
~ X + ~ X+ ~ X + ~ X
3456
Р(х):=a*x*3+b*x*2+c*x+d;
Р(х) := ах3 + bx2 + сх + d
int(P(x).x):
4 1 , з 12 〃
-ax+-bx+-cx+ax
ПРИМЕЧАНИЕПРИМЕЧАНИЕ32
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Maple 7 успешно беретбольшинство справочных интегралов. Но не всегда форма представления интеграла совпадаете приведенной в справочнике. Иногда требуется доводка ее до нужной формы, а иногда Maple 7 упорно дает иное выражение (в большинстве случаев правильное). Тем не менее следует помнить, что всегда может найтись интеграл, который окажется «не по зубам» и Maple 7.
Конвертирование и преобразование интегралов
В некоторых случаях Maple 7 не может вычислить интеграл. Тогда она просто повторяет его. С помощью функций tayl or и convert можно попытаться получить аналитическое решение в виде полинома умеренной степени, что демонстрирует следующий характерный пример:
a int(exp(sin(x)).x):
a convert(taylor(I,х=0.8),polynom);
x +疗+级一亲5-犷一表『+电炉
Естественно, что в этом случае решение является приближенным, но оно все же есть и с ним можно работать, например построить график функции, представляющей данный интеграл.
Система Maple непрерывно совершенствуется. Например, в Maple V R4 интеграл с подынтегральной функцией exp(Q4) не брался, а система Maple 7 с легкостью берет его:
Int(exp(x*4),x)=1nt(exp(x*4),х):
Хотя полученный результат, выраженный через гамма-функцию, нельзя назвать очень простым, но он существует и с ним также можно работать. Например, можно попытаться несколько упростить его, используя функцию simplify:
Разумеется, существует также множество иных возможностей и приемов для выполнения операции интегрирования. В дальнейшем мы неоднократно будем рассматривать и другие, более специфические функции для осуществления интегрирования и вычисления интегральных преобразований. В частности, ряд средств вычисления интегралов реализован в пакете student.
1ь1числение определенных интегралов
Другой важной операцией является нахождение в аналитической или численной х|)орме определенного интеграла:
b
J/(x)dx .
Определенный интеграл удобно трактовать как площадь, ограниченную кривой /(%), осью абсцисс и вертикалями с координатами, равными 仪 и Ь. При этом площадь ниже оси абсцисс считается отрицательной. Таким образом, значение определенного интеграла — это число или вычисляемое выражение.
Для вычисления определенных интегралов используются те же функции int и Int, в которых надо указать пределы интегрирования, например х=а..Ь, если интегрируется функция переменной х Это поясняется приведенными ниже примерами:
Int(sin(x)/x,xsa. .b)«int(sin(x)/x,x=a. .b);
■^^•dx=Si(6)-Si(a)
Int(sin(x)/x,x=O. .l.)=int(sin(x)/x,x=O. .1.):
厶=.9460830704
Jo
Int(x*ln(x),xK0..l)=int(x*ln(x),xm0..1);
-1
I xln(x)厶=不
Int(x*exp(-x) ,x«0..1nfinity)K1nt(x*exp(-x),xM0. .Infinity);
> Int(l/(x*2+6*x+12) ,x=-infinity. .infinity);
—;dx
x + 6 x + 12
valued);
Как видно из этих примеров, среди значений пределов может быть бесконечность, обозначаемая как infinity.
Каверзные интегралы и визуализация результатов интегрирования
Выше мы уже сталкивались с примерами вычисления «каверзных» интегралов. Немного продолжим эту важную тему и заодно рассмотрим приемы визуализации вычислений, облегчающие понимание их сущности.
В Соросовском образовательном журнале (№ 6, 2000, с. 110) приводятся не совсем удачные примеры вычислений определенного интеграла с применением системы Mathematica, при которых якобы встречаются настолько большие трудности, что они не под силу любому калькулятору или компьютеру. При некоторых попытках вычисления этого интеграла он давал нулевое значение.
Но Maple 7 (кстати, как и Mathematica 4) с легкостью берет этот интеграл и позволяет сразу и без какой-либо настройки вычислить для него как точное, так и приближенное значение:
Int(x*20*exp(-x),х=0..l)sint(x*20*exp(-x),х=0..1);
1
I х20е('г)^х = -6613313319248080001 е(")+ 2432902008176640000
evalf(l,30);
.0183504676972562063261447542317 = .01835046770
Хотя первое из решений является самым кратким и, скорее всего, единственным точным решением, оно может и должно насторожить опытного пользователя. Дело в том, что в полученном выражении фигурируют большие числа, и потому для правильного приближенного решения (в виде вещественного числа в научной нотации) нужно заведомо использовать аппарат точной арифметики и ни в коем случае не полагаться на погрешность, заданную по умолчанию, — вот в чем основная ошибка в упомянутой статье.
Именно поэтому левая и правая части приближенного решения (выполненного с точностью до 30 цифр) заметно различаются. Знак равенства между ними вызывает чувство протеста у истинных математиков. На самом деле, не надо забывать, что знак равенства здесь был введен просто как текстовый комментарий, —вы можете попробовать сами заменить его на более приемлещл$; здесь
знак приближенного равенства. Любопытно, что предшествующая версия Maple 6 при задании погрешности по умолчанию вычисляла значение этого интеграла также как 0, тогда как Maple 7 «поумнела» уже настолько, что дает значение 0.0183504 6770 даже в этом случае.1
При таких условиях многие читатели могут сомневаться в корректности конечного результата. Между тем Maple 7 позволяет наглядно проиллюстрировать характер промежуточных вычислений подобных интегралов. Например, для этого можно вычислить неопределенный интеграл подобного вида: > int(x*20*exp(-x),x);
20 С)19 (г)18 (-г)17 (г) юос 16 (一幻
—х е — 20 х е— 3 80 х е ~ 6840 х е — 116280 х е
-1860480 .J 产)-27907200 х14 е"" - 390700800 л13 е""
-5079110400 х12 е('х)- 60949324800- 670442572800
1 6704425728000 х9 е('Х)- 60339831552000 •? е"" - 482718652416000 / е""
-3379030566912000 хб е('Л)-20274183401472000 х5 е"”
-101370917007360000 х4 е"" - 405483668029440000 х3 е"”
-1216451004088320000 •? е"" - 2432902008176640000 х 4"
-2432902008176640000 е('П
Нетрудно заметить, что решение распадается на множество слагаемых, соответствующих общеизвестному интегрированию по частям. В каждом слагаемом имеются большие числа, и потому принципиально необходимо применение арифметики высокой точности (или разрядности). Maple 7 такими средствами, причем превосходными, обладает.
Продолжим изучение данного «каверзного» интеграла. Опробуем силы Maple 7 на интеграле более общего вида, где конкретный показатель степени заменен на обобщенный —几 Здесь нас ожидает приятный сюрприз — Maple 7 с легкостью выдает аналитическое решение для данного определенного интеграла:
y:=(n)->int(x*n*exp(-x),х=0..1);
у := п —>е‘ * dx
у(п);
(-V2). 、/111 С
е WhittakerM区九,爰九+亍1
九+ 1
У(20);
-6613313319248080001 e + 2432902008176640000
evalf(*,30);
.01835046770
у(20.);
0.
Однако радоваться несколько преждевременно. Многие ли математики знают, что это за специальная функция — WhittakerM? Студенты, любящие подшучивать над своим профессором, могут попробовать спросить у него об этом. Скорее всего, профессор стушуется, а потом будет долго копаться в литературе, прежде чем найдет ее определение и сможет разъяснить, что это такое.
Но хуже другое — Maple 7 при конкретном 几=20 дает грубо неверное решение —0 (почему — уже объяснялось). Забавно, что при этом сама по себе функция WhittakerM вычисляется для 几=20 без проблем:
> WhittakerM(10,10.5,l);
.6353509348
А теперь присмотритесь к новому результату вычисления злополучного интеграла. Оказывается, он уже не содержит больших чисел, свойственных прямому решению! Зная значение WhittakerM с погрешностью по умолчанию, можно уверенно вычислить приближенное численное значение интеграла с той же погрешностью, уже не прибегая к арифметике высокой точности:
> (exp(*.5)*WhittakerM(10,10,5,l))/21;
,01835046770
Итак, мы вычислили нужный интеграл несколькими разными способами, В этом и проявляется могущество современной математики, достойно представленной такими системами, как Maple 7. Заинтересованный читатель может попытаться найти еще ряд методов решения данного интеграла и преуспеть в этом! Мы же как торжество Maple 7 приведем график зависимости значений данного интеграла от показателя степени п при его изменении от 0 до 50 (рис. 8.1). Надо ли говорить о том, что полученный результат имеет куда более важное значение, чем вычисление нашего злополучного интеграла при конкретном п = 20? А плавный ход графика показывает, что в вычислении данного интеграла пет никаких признаков неустойчивости решения при изменении п, если соблюдать правило выбора погрешности вычислений.
Наличие у функции особых (сингулярных) точек нередко затрудняет выполнение с ней ряда операций, таких как численное интегрирование. В этом случае могут помочь соответствующие параметры. Например, вычисление следующего интеграла дает явно неудобное выражение в виде набора значений, разных для разных интервалов изменения 〃:
> int(l/(x+a)A2,xK0,.2);
2 + 2
0
ОО
'0
ОО
а "2、
а V 0
а V 0
а +
0
0<а丿
0
0<а丿
—+ а) а
Рис. 8.1. Значение интеграла от хЛп*ехр(-х) как функция л
Увы, попытка вычислить по этому выражению значение интеграла не всегда дает корректный результат. Например, при х от -2 до 0 получаются бесконечные значения. Да и график зависимости значения интеграла от параметра 仪 имеет подозрительный вид (рис. 8.2). Это как раз тот случай, когда с ходу доверяться результатам Maple 7 рискованно.
В данном случае приходится констатировать давно известный факт — системы компьютерной математики (и Maple 7 в их числе) не всесильны и всегда можно найти интегралы даже с обманчиво простым внешним видом, которые поставят систему в тупик или дадут неверные результаты в той или иной области изменения аргументов. Особенно опасны интегралы от кусочных функций с разрывами и интегралы, представляемые такими функциями. Именно к ним и относится обсуждаемый сейчас интеграл. Не меньше проблем вызывают интегралы от функций, области определения которых заданы некорректно или просто не изучены. Между тем ситуация вовсе не является безнадежной. Надо просто знать, что предпринять, чтобы подсказать системе правильный путь решения. Например, в нашем случае, применив параметр continuous (в апострофах), можно получить куда более простое выражение:
1nt(l/(x+a)*2,x-0..2,'contlnuous'):
(2 + e)«
Рис. 8.2. Построение графика зависимости значений интеграла с подынтегральной функцией 1/(х+а)Л2 от параметра а
Рисунок 8.3 показывает это решение с двумя важными дополнениями — оно представляется функцией пользователя, а ее график строится при изменении 〃 от - 10 до 10.
Приведем еще один пример «каверзного» интеграла довольно простого вида:
> int(l/xA3,x=-1..2);.
undefined
Этот интеграл вообще не берется функцией Int без указания параметров (в строке вывода сообщается об этом). Но введение параметра CauchyPrincIpa!Value позволяет получить значение интеграла:
> int(l/xA3,x^■l..2,'CauchyPrincipalValue');
3
8
Возьмем еще один наглядный пример — вычисление интеграла от синусоидальной функции при произвольно больших пределах, но кратных 2л! Очевидно, что при этом (учитывая равность площадей положительной и отрицательной полуволн синусоиды) значение интеграла будет равно 0. Например:
> tnt(sin(x),хк-1000*р1 ..ДО0О*р1):
0
Q] Maple 7 - [mt m*$ • [Se,ves IDQ] Maple 7 - [mt m*$ • [Se,ves ID> Fl(a);> Fl(a);0 2, uazc丘gaJV$)0 2, uazc丘gaJV$)
Q] Maple 7 - [mt m*$ • [Se,ves ID
Q] Maple 7 - [mt m*$ • [Se,ves ID
> Fl(a);
> Fl(a);
0 2, uazc丘gaJV$)
0 2, uazc丘gaJV$)
> value((Fl(-3),F1(-1),F1(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
Во многих областях техники часто употребляются выражения «затухающая синусоида» или «нарастающая синусоида». Иногда говорят и о «синусоиде с уменьшающейся или возрастающей амплитудой». Бесполезно утверждать, что эти названия принципиально ошибочны — в рамках допущений, принятых в технических расчетах, такие утверждения весьма наглядны и эта, в частных случаях вполне оправданная, наглядность с позиций математики идет в ущерб точности фундаментальных определений.
Возьмем, к примеру, широко распространенную функцию: у© = exp(—£)sin(2欣). Построим ее график и вычислим определенный интеграл от этой функции с пределами от 0 до 8 (рис. 8.4).
С первого взгляда на график видно, что каждая положительная полуволна функции (затухающей «синусоиды») явно больше последующей отрицательной полуволны. К тому же осцилляции функции быстро затухают и через десяток- другой периодов значение функции становится исчезающе мсцхым. Вот почему Maple 7 уверенно вычисляет интеграл с такой подынтегральной функцией. Ее свойство — неопределенность при tf» исчезает.
Рис. 8.4. График «затухающей синусоиды» и интеграл от нее с пределами от 0 до 8
Однако называть такую функцию «затухающей синусоидой», безусловно, неточно. Умножение sin(2p0 на множитель, зависящий от времени 北 лишает функцию главного свойства синусоиды — ее строгой симметрии. Так что cxp(-£)sin(2p£)— это совсем новая функция со своими отличительными свойствами. Главные из них — несимметрия при малых t и исчезающе малые значения при больших Л Ни тем, ни другим свойством обычная синусоида не обладает.
А теперь возьмем антипод этой функции — «синусоиду с экспоненциально нарастающей до стационарного значения 1 амплитудой». Такая функция записывается следующим образом:
Y(t) = (1 - exp(-t)) s1n(2nt).
Ее график и попытки вычисления интеграла с такой подынтегральной функцией приведены на рис. 8.5.
Обратите внимание на то, что здесь прямое вычисление интеграла к успеху не привело, хотя из графика функции видно, что каждая положительная полуволна в близкой к £ Q 0 области явно больше по амплитуде, чем последующая отрицательная полуволна. Однако в отличие от предыдущей функции при больших значениях аргумента данная функция вырождается в обычную синусоиду с неизменной (и равной 1) амплитудой. Вот почему трудяга Maple 7 честно отказывается вычислять интеграл от такой коварной функции.
Рис. 8.5. График «экспоненциально нарастающей синусоиды» и интеграл от нее с пределами от 0 до 8
На этом примере очень четко отслеживается разница в мышлении инженера и математика. Инженер скажет, что интеграл с такой функций должен быть, поскольку вначале положительные площади явно меньше отрицательных, а в дальней области они выравниваются, и потому площадь каждого «периода» функции становится примерно нулевой. По-своему инженер прав — если его не интересует точное определение подынтегральной области в заоблачных высотах бесконечности, то мы должны получить то же значение интеграла, что в предшествующем примере, но со знаком «минус». И в самом деле (см. рис. 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):
2.6 4.4
‘2,0‘4,0\、
value(l):
.02500598527
> valued):> valued):Int(Int(Int((хА2+yA2)*z. х=0..а). у=0..a), z=0..a):
> valued):
> valued):
,48<1 >8,48<1 >8
,4
8<1 >8
,4
8<1 >8
> Int(Int(2-x-y. x=sqrt(y)..yA2), y=0..1):
- x - у dx dy
> valued):
-11
30
Il ~ - cos — л л + — Л
丿 3
> evalf(II):
-2.666666667 cos( .2500000000 л)4л + 2.666666667 л
Обратите внимание на нечеткую работу функции evalf в последнем примере. Эта функция уверенно выдает значение evalf(Pi) в форме вещественного числа с плавающей точкой, но отказывается вычислить значение интеграла, в которое входит число Pi. Этот пример говорит о том, что отдельные недостатки у Maple 7 все же есть, как и поводы для ее дальнейшего совершенствования.
Описанная возможность вычисления кратных интегралов функциями Int и int не является вполне законной. В пакете расширения student имеются дополнительные функции интегрирования, которые дополняют уже описанные возможности. В частности, в этом пакете есть функции для вычисления двойных п тройных интегралов.
Вычисление пределов функций
Для вычисления пределов функции / в точке х = а используются следующие функции:
1imit(f,х=а):limit(f.x=a.d1r):
Limit(f .х=а);Lwit(f .x=a.d1r);
Здесь f — алгебраическое выражение, х — имя переменной, dir — параметр, указывающий на направление поиска предела (left — слева, right — справа, real — в области вещественных значений, complex — в области комплексных значении). Значением а может быть бесконечность (как положительная, так и отрицательная). Примеры применения этих функций для вычисления пределов в точке приведены ниже:
> Limit(f(x),х=а):
lim fijx)
Lim-it(s1n(x)/x,x=0)=limit(sin(x)/x,x=O):
lim,
L1m1t(l-exp(-x),x=1nf1nity)=l 1m1t(l-exp(-x),x=1nfinity):
lim 1 - e = 1
Limit(exp(x),x=1nfinity)=limit(exp(x),x=1nf1nity):
lim еЛ = 8
L1m1t(exp(-x) ,x=-inf-in-ity)=limit(exp(-x) ,x=inf-iiTity);
lim e = 0
> Limit((x-s1n(x))/xA3,x=0)=l imit((x-sin(x))/xA3,x=0);
x-sin(x) 1
hm j— = 7
X т 0 XО
> Limit((P1-2*x)*tan(x),х=Р1/2)=11т11(1ап(х)*(Р1-2*х),x=P1/2);
lim (n - 2 x) tan(x) = 2
XT (1/2 兀)
Обратите внимание на то, что в первом примере фактически дано обозначение предела в самом общем виде. Рисунок 8.7 показывает вычисление пределов функции tan(x) в точке х=л/2, а также слева и справа от нее. Для указания направления используются опции right (справа) и left (слева). Видно, что в самой точке предел не определен (значение undefi ned), а пределы справа и слева уходят в бесконечность.
Рис. 8.7. Пример вычисления пределов функции tan(x) и построение ее графика
Показанный на рис. 8.7 график функции tan(x) наглядно подтверждает существование пределов справа и слева от точки х = п/2 и отсутствие их в самой этой точке, где функция испытывает разрыв от значения +8 до -8.
Разложение функций в ряды
Разложение в степенной ряд
Огромное разнообразие функций давно заставляло математиков задумываться над возможностями их приближенного, но единообразного представления, К таким представлениям относятся различные ряды, сходящиеся к значениям функций в окрестности заданной точки. Для разложения функции или выражения ехрг в обычный степенной ряд служат функции series(expr. eqn) и series(expr, eqn, n). Здесь expr — разлагаемое выражение, eqn — условие (например, в виде х=а) или имя переменной (например, х) и п — необязательное и неотрицательное целое число, задающее число членов ряда (при его отсутствии оно по умолчанию берется равным 6, но может переустанавливаться системной переменной Order), Если в качестве eqn задано имя переменной, то это соответствует разложению по этой
переменной в области точки с ее нулевым значением. Задав eqn в виде х=хО, можно получить разложение по переменной х в окрестности точки х = х0.
Разложение получается в форме степенного многочлена, коэффициенты которого задаются рациональными числами. Остаточная погрешность задается членом вида 0(х)*п. При точном разложении этот член отсутствует. В общем случае для его удаления можно использовать функцию convert. Ниже представлены примеры разложения различных выражений в ряд:
> series(sinh(x).х=0):
х + 1? + По? + 0(х6)
> series(sinh(x),x^l^3):
/1 А
> series(sinh(x)^=1.0,3):
1.175201193+ 1.543080635 (х- 1.0) + .5876005967 (х - 1.0)2 + О((х- 1.0)3)
> series(2*xA2-x+l,x=l,10);
2 + 3(х- l) + 2(x- I)2
> f(x):=sin(x)/x;
#_ sin(x)
f(x). 丁
> series(f(x),x=0,10);
1 一工 f 丄 46 _!_ 旺 0( 9)
61205040362880 (丿
> convert(l.polynom):
61205040362880
> s:=series(ln(x),x=2,4):
s:= ln(2) + ;(x-2)T(x-2)2+/(x-2)3 + O((x-2)4)
> evalf(convert(s,pol ynom));■
-3068528194 + .5000000000 x - . 1250000000 (x -2.)4 .04166666667 (x - 2.)3
Здесь видно, что член, обозначающий погрешность, отсутствует в тех разложениях, которые точны, например, в разложениях степенных многочленов. Для визуализации приближения рядами заданных аналитических зависимостей очень полезно построить на одном графике кривые аналитической зависимости и разложения в ряд. Мы это покажем чуть позже на примере ряда Тейлора.
Разложение в ряды Тейлора и Маклорена
Для разложения в ряд Тейлора используется функция taylor(ехрг, eq/nm, п). Здесь ехрг — разлагаемое в ряд выражение, eq/пт — равенство (в виде х=а) или имя переменной '(например^ х), п — необязательный параметр, указывающий на по-
рядок разложения и представленный целым положительным Числом (при отсутствии указания порядка он по ушхлчанию принимается равным 6). При задании eq/пт в виде х=а разложение производится относительно точки х^ а. При указании eq/пт в виде просто имени переменной разложение ищется в окрестности нулевой точки, то есть фактически вычисляется ряд Маклорена.
Ниже представлены примеры применения функции taylor:
taylord-exp(x),х=1,4):
(1 — е) — е (х — 1) — — е (х — 1 )2 — — е (х — 1р + 0((х — 1 )4) 2о
convert(l.polynom):
…2 i
taylor(sinh(x),x,10):
x + 4 x3 + 而 x5 + ^^ x7 + 362880 x9 + O&i。)
taylor(int(sin(x)/x,x),x):^
X++赤+。(1)
taylor(erf(x),x);
2 斤=x ~— /——x3 + — /——x$ + 0( x6)
ул 3 5冗 3 7я
Не все выражения (функции) имеют разложение в ряд Тейлора. Ниже дан пример такого рода:
taylor(l/x+xA2,x,5):
Error; does not have a taylor expansion, try series()
series(l/x+xA2,x,10):
+x2
taylor(l/x+xA2,x=l,5):'
2+x- 1 + 2(x- l)2-(x- l)、(x- 1)4 + O((x「1)5)
Здесь Maple 7 отказалась от вычисления ряда Тейлора в окрестности точки % = О (по умолчанию) и предложил воспользоваться функцией series. Однако эта функция просто повторяет исходное разложение. В то же время в окрестности точки % = 1 ряд Тейлора вычисляется.
Для разложения в ряд Тейлора функций нескольких переменных используется библиотечная функция mtaylor:
mtaylor(f. v)
mtaylor(f. v. n)
mtaylor(f, v, n, w)
Здесь f — алгебраическое выражение, v — список имен или равенств, п — необязательное число, задающее порядок разложения, w — необязательный список целых чисел, задающих «вес» ка^дрй из переменных списка v. Эта фуцкцця должна ©мзаддться из библиотеки, эдр1е 7 с помощью команды readlib:
readllb(mtaylor):
mtaylor(s1n(x*y),[x,y].l0,[2,l]);
proc () end proc
1 3 3
У
mtaylor(exp(-x)*s1n(y),[x.y],5):
13121313
y-xy-~y +-X y + -xy у
Для получения только коэффициента при А-м члене ряда Тейлора можно использовать функцию coeftayl (expr, var, k). Если expr — функция нескольких переменных, то к должен задаваться списком порядков коэффициентов.
Пример документа — разложение синуса в ряд
Полезно сочетать разложение выражений (функций) в ряд Тейлора с графической визуализацией такого разложения. Рассмотрим документ, в котором наглядно показаны возможности представления функции рядами Тейлора и Маклорена.
На рис. 8.8 показана первая часть документа. Она дает пример разложения в ряд Тейлора функции sin(x) с построением ее графика и графика по разложению в ряд. Поскольку выбрано разложение относительно точки х = 0, то полученный ряд является рядом Маклорена. Это хороший пример визуализации результатов математических вычислений — здесь наглядно видно, что при малых значениях х график ряда практически повторяет разлагаемую функцию, но затем начинает сильно от нее отходить.
Обратите внимание, несмотря на то что мы задали шестой порядок ряда, последний член имеет только пятый порядок. Это связано со спецификой данного разложения —в нем просто отсутствуют члены четного порядка.
Можно буквально в считанные секунды попробовать изменить число членов ряда или диапазон изменения переменной х, что и показано на рис. 8.9 (вторая часть документа). При этом легко убедиться в том, что при больших х поведение ряда не имеет ничего общего с поведением разлагаемой в ряд функции, в частности нет и намека на периодичность разложения, которая присуща тригонометрической функции sin(x).
В заключительной (третьей) части этого документа (рис. 8.10) представлено уже истинное разложение синуса в ряд Тейлора в окрестности смещенной от нуля точки х = 1. При смещении точки, относительно которой ведется разложение, выражение для ряда Тейлора существенно изменяется. В нем, во-первых, появляются члены четных степеней, а во-вторых, фигурирует аргумент вида (х - 1)". Нетрудно заметить, что даже при представлении такой «простой» функции, как sin(x), приемлемая погрешность представления одного периода достигается при числе членов ряда Тейлора порядка 10 и более. Однако существенное повышение порядка ряда не целе сообразно из-за резкого возрастания вычислительных погрешностей. Кроме того, серьезным недостатком аппроксимации рядбм Тейлора является непредсказуемое поведение полинома вдали от точки, относительно которой задается представление. Это хорошо видно на всех трех приведенных примерах.
旧 Maple 7 - (atayloi.mws - [Seivei 1旧 Maple 7 - (atayloi.mws - [Seivei 1> approx := taylor( sin(x), х=0, 6> approx := taylor( sin(x), х=0, 6Вычислим представление функции sln(x) [форме ряда Тейлора (при х=0 - Маклорена):
旧 Maple 7 - (atayloi.mws - [Seivei 1
旧 Maple 7 - (atayloi.mws - [Seivei 1
> approx := taylor( sin(x), х=0, 6
> approx := taylor( sin(x), х=0, 6
1 56
approx := x - -x + ^^x + O(x )
Преобразуем это выражение в степенной многочлен - полином:
poly :х convert < approx, polynom ):
А теперь построим графики исходной функции и ее разложения в ряд:
Sin(x) and Taylor (Macloren) Series Approximation (order 6)Sin(x) and Taylor (Macloren) Series Approximation (order 6)Рис. 8.8. Разложение функции sin(x) в ряд Маклорена 6-го порядка и построение ее графикаРис. 8.8. Разложение функции sin(x) в ряд Маклорена 6-го порядка и построение ее графикаРис. 8.9* Разложение функции sin(x) в ряд Маклорена 12-го порядка и построение ее графикаРис. 8.9* Разложение функции sin(x) в ряд Маклорена 12-го порядка и построение ее графикаplot ( { s in (х) , poly }, Х—4..4, title-' Sin(x) and Taylor (Mac loren) Serles Approximation (order 6)、zcolor=black);
Sin(x) and Taylor (Macloren) Series Approximation (order 6)
Sin(x) and Taylor (Macloren) Series Approximation (order 6)
Рис. 8.8. Разложение функции sin(x) в ряд Маклорена 6-го порядка и построение ее графика
Рис. 8.8. Разложение функции sin(x) в ряд Маклорена 6-го порядка и построение ее графика
Рис. 8.9* Разложение функции sin(x) в ряд Маклорена 12-го порядка и построение ее графика
Рис. 8.9* Разложение функции sin(x) в ряд Маклорена 12-го порядка и построение ее графика
|口 Maple 7 ' [alayloi.mws • (Servei 1]]繚皿聯;
卷 且*、要事、導瓶1 *^йй ::、饱网总、*文式齡堂2第依程:概к0x2«1妙6产?&*鑫滋崎舱岭懒*忘^- ]*. :、、Г<ЦК、、,$г&*-沁〈Xig 心у^•宀1承 W
Г А теперь покажем разложение в истинный ряд Тейлора относительно точки х=1 с учетом 12 图 Членов ряд:
Г > у (х) : -convert (taylor (sin (х) ,1-1,12) ,polyiiom);
121314
y(x) := sin(l) + cos(l) (x - 1) - ~sin(l) (x - 1) - ~cos(l) (x - 1) + ~ siti( 1) (x - 1)
151б 171g
* 而°°式1)(x ~ 1)- —sin(l) (x - 1) - ^^cos(l) (x - 1) + ^^血(1)(工-1)
1о 1in 111+石蓝。"⑴(…)一芯爾m⑴(…)一荻脸 3⑴(一)> plot ({у(X), sin (x) }, x=~6 . . 6 , y=-2 . . 2, color=black.);1о 1in 111+石蓝。"⑴(…)一芯爾m⑴(…)一荻脸 3⑴(一)> plot ({у(X), sin (x) }, x=~6 . . 6 , y=-2 . . 2, color=black.);
1о 1in 111
+石蓝。"⑴(…)一芯爾m⑴(…)一荻脸 3⑴(一)
> plot ({у(X), sin (x) }, x=~6 . . 6 , y=-2 . . 2, color=black.);
1о 1in 111
+石蓝。"⑴(…)一芯爾m⑴(…)一荻脸 3⑴(一)
> plot ({у(X), sin (x) }, x=~6 . . 6 , y=-2 . . 2, color=black.);
Рис. 8.10. Разложение функции sin(x) в ряд Тейлора 12-го порядкаотносительно точки х = 1 и построение ее графика
Помимо указанных выше разложений в ряд Maple 7 имеет множество функций для иных разложений. Например, в пакете numapprox имеется функция 1 aurent(ехрг, var, п), позволяющая получить разложение в ряд Лорана, функция Chebyshev(expr, eq/nm, eps) дает разложение в форме полиномов Чебышева и т. д.
Решение уравнений и неравенств
Основная функция solve
Решение линейных и нелинейных уравнений и неравенств — еще одна важная область математического анализа. Maple 7 имеет мощные средства для такого решения. Так, для решения линейных и нелинейных уравнений в аналитическом виде используется достаточно универсальная и гибкая функция solve(eqn, var) или solve({eqnl,eqn2,.. .}t{varl,var2,...}), где eqn — уравнение, содержащее функцию ряда переменных, var — переменная, по которой ищется решение. Если при записи eqn не используются знак равенства или знаки отношения, считается, что solve ищет корни уравнения eqrrO.
Характер решений можно изменить с помощью глобальных переменных:
О _Sol utl onsMayBeLost — при значении true дает решение, которое при обычном применении функции sol ve возвращает значения NULL;
О _MaxSol s — задает максимальное число решений;'
О _EnvAllSolutions — при значении true задает выдачу всех решений.
В решениях могут встречаться следующие обозначения:
О _NN — указывает на неотрицательные решения;
Q В — указывает на решения в бинарной форме;
О _Z — указывает на то, что решение содержит целые числа;
Q ZN — при текстовом формате вывода задает общие члены решения и обеспечивает более компактную форму его представления.
В форме solve[subtopic] возможны параметры subtopic функции solve следующих типов:
floatsfunctionsIdentityineqlinear
radicalscalarseriessystem
При решении систем уравнений они и список переменных задаются как множества, то есть в фигурных скобках. При этом и результат решения получается в виде множества. Чтобы преобразовать его к обычному решению, нужно использовать функцию assign, которая обеспечивает присваивание переменным значений, взятых из множества.
Функция solve старается дать решение в аналитическом виде. Это не означает, что ее нельзя использовать для получения корней уравнений в численном виде. Просто для этого придется использовать функции evalf или convert. Если результат решения представлен через функцию RootOf, то зачастую можно получить все корни с помощью функции all values.
Решение одиночных нелинейных уравнений
Решение одиночных нелинейных уравнений вида /(х) = 0 легко обеспечивается функций solve(f(x) ,х). Это демонстрируют следующие примеры:
solve(x*3-2*x+l,x);
1,一打;低一济石
solve(x^(3/2)=3,x);
3(2/з)
evalf(Jt);
2.080083 823
solve(sqrt(ln(x))=2,x);
e4
evalfW:
54.59815003
Часто бывает удобно представлять уравнение и его решение в виде отдельных объектов, отождествленных с определенной переменной:
eq:«(2*x*2+x+3»0):
eq 尸 2 л:? + х + 3 = О
s:K[solve(eq,x)];
s:= < +,恒恒]
В частности, это позволяет легко проверить решение (даже если оно не одно, как в приведенном примере) подстановкой (subs):
subs(x=s[l],eq):
2
2卜卜,恒)
subs(x=s[2],eq):
2
2卜:一:/回)+}?户=0
evalf(Jt):
0. + 0. /= 0.
Сводящиеся к одному уравнению равенства вида /1 (х) =/2(囂)также решаются функцией solve(fl(x)=f2(x) ,х):
> solve(x*4=-x-l,x);
RootOf(_Z4 +_Z+ 1, index = 1), RootOflJ _Z4 +_Z + 1, index = 2),
RootOf(_Z4 +_Z+ 1, index = 3), RootOf(_Z4 +_Z+ 1, index = 4)
> evalf(^);.
.7271360845 + .9340992895 /, -.7271360845 + .4300142883 /, -.7271360845 -.4300142883 /, .7271360845 - .9340992895 /
> solve({exp(x)=s1n(x)},x);
{x= RootOf(_Z- ln(sin(_Z)))}
>evalf(Jt):.
{x=.3627020561 - 1.133745919/}
> solve(x*4=2*x,x);
0, 2。? T(%T后产)
> evalf(^):
0„ 1.259921050, -.6299605250 + 1.091123636/,-.6299605250 - 1.091123636 /
Обратите внимание в этих примерах на эффективность применения функции evalf, позволяющей получить решения, выраженные через функцию RootOf, в явном виде.
Решение тригонометрических уравнений
Функция solve может использоваться для решения тригонометрических уравнений:
solve(sin(x)H.2,x);.
.2013579208
solve(sin(x)-l/2,x);
1
solve(cos(x)=.5,x);
1.047197 5 51
Однако из приведенных примеров видно, что при этом найдено только одно (главное) решение. Периодичность тригонометрических функций и связанная с этим множественность решений оказались проигнорированы. Однако можно попытаться найти все периодические решения, выполнив следующую команду: > _EnvAl1 Sol uti ons:^true: _EnvAUSolutions := true
Указанная в ней системная переменная отвечает за поиск всех периодических решений, когда ее значение равно true, и дает поиск только главных решений при значении false, принятом по умолчанию. Так что теперь можно получить следующее:
solve(sin(x)=l/2.x):
2
+ 2 л 〜
63 --
На рис. 8.11 показан более сложный случай решения нелинейного уравнения вида / (х) = / (х), где / (х) = sin(x) и / (х) = cos(x) - 1.
212
Решение дано в графическом виде и в аналитическом для двух случаев — нахождения главных значений корней и нахождения всех корней.
В решениях встречаются переменные _В1~ и _Z1~, означающие ряд натуральных чисел. Благодаря этому через них можно представить периодически повторяющиеся решения.
Примеры решения уравнений с обратными тригонометрическими функциями показаны ниже:
eqns := 2*arcsin(x) - arccos(5*x); eqns := 2 arcsin(x) - arccos( 5 x)
丄-5 +疼丄-5 +疼> eqns :н arccos(x) - arctan(x/2); eqns := arccos(x)-> eqns :н arccos(x) - arctan(x/2); eqns := arccos(x)-solve( eqns. {x});
丄-5 +疼
丄-5 +疼
> eqns :н arccos(x) - arctan(x/2); eqns := arccos(x)-
> eqns :н arccos(x) - arctan(x/2); eqns := arccos(x)-
Рис. 8.11. Пример решения уравнения, имеющего периодические решения
> solve( eqns. {х}):
7-2+ 2/2
7(# - 1)2-2 + 272
Решение систем линейных уравнений
Для решения систем линейных уравнений созданы мощные матричные методы, которые будут описаны отдельно. Однако функция sol ve также может с успехом решать системы линейных уравнений. Такое решение в силу простоты записи функции может быть предпочтительным. Для решения система уравнений и перечень неизвестных задаются в виде множеств (см. приведенные ниже примеры).
Рисунок 8.12 дает два примера решения систем из двух линейных уравнений. В первом примере функция solve возвращает решение в виде значений неизвестных х и г/, а во втором отказывается это делать.
В чем дело? Оказывается, в том, что во втором случае система просто не имеет решения. Импликативная графика пакета расширения plots дает прекрасную возможность проиллюстрировать решение. Так, нетрудно заметить, что в первом случае геометрическая трактовка решения сводится к нахождению точки
пересечения двух прямых, отображающих дваГуравнения. При этом имеется единственное решение, дающее значения хи у.
Рис. 8.12. Примеры решения системы из двух линейных уравнений с графической иллюстрацией
Во втором случае решения и впрямь нет, ибо уравнения задают параллельно расположенные прямые, которые никогда не пересекаются. Рекомендуем читателю самостоятельно проверить и третий случай — бесконечного множества решений. Он имеет место, если оба уравнения описывают одну и ту же зависимость и их графики сливаются в одну прямую.
Решение систем из трех линейных уравнений также имеет наглядную геометрическую интерпретацию — в виде точки, в которой пересекаются три плоскости, каждая из которых описывается функцией двух переменных. Для наглядности желательно представить и линии пересечения плоскостей. Это позволяет сделать функция импликативной трехмерной графики ImplicitplotSd, что и показано на рис. 8.13. Для объединения графиков площадей использована функция display.
Некоторые проблемы с решением систем из трех линейных уравнений иллюстрируют примеры, приведенные на рис. 8.14. В первом примере решения вообще нет. График показывает, в чем дело, — -линии пересечения плоскостей- идут параллельно и нигде не пересекаются. Во втором примере все три плоскости пересекаются по одной линии.
Q Maple 7 - |sy$3 m*$ - (Server 1Ц
媒鼻^膜取、嘱^§W娥喲总g侬M%瞬父个个艾冬
> restart; with(plots):|
Warning, the name changecoords has been redefined
[> sys :-( z - 4, х+у» 10, х-у - 5):
> solve( sys, {x,y,N));
515
{z - 4,^ - ~,x - y)
> display(implicitplot3d(sys , x ■ -10..10, у ■ -10. .10, z--10..10 xyz,style=patchnogrid, orientation ■ [15B,70]), spacecurve(((t [t ,t-5,4] , [15/2,5/2,t] ) ,t— -10. . 10 , color = black., thickness ■
R^BR^B,shading = ,10-t,4],2));,shading = ,10-t,4],2));Рис. 8.14. Графическая иллюстрация особнх случаев^решения системы из трех линейных уравненийРис. 8.14. Графическая иллюстрация особнх случаев^решения системы из трех линейных уравненийРис. 8.13. Пример решения системы из трех линейных уравнений с графическом иллюстрацией решения
R^B
R^B
,shading = ,10-t,4],
2));
,shading = ,10-t,4],
2));
Рис. 8.14. Графическая иллюстрация особнх случаев^решения системы из трех линейных уравнений
Рис. 8.14. Графическая иллюстрация особнх случаев^решения системы из трех линейных уравнений
Следующий пример показывает решение системы из четырех линейных уравнений: >sys :н { 4*х1 + 7*х2 - хЗ + 3*х4 ■ 11,
> solve( sys, {xl, x2, хЗ, x4 }):> solve( sys, {xl, x2, хЗ, x4 }):-2*х1 丸 2*х2 - 6*хЗ + х4 ■ 4, х1 - 3*х2 + 4*хЗ - х4 н -3, 3*х1 - 5*х2 ~ 7*хЗ + 5*х4 工 8 }:
> solve( sys, {xl, x2, хЗ, x4 }):
> solve( sys, {xl, x2, хЗ, x4 }):
Эта система имеет решение, но его простая графическая иллюстрация уже невозможна.
Случай решения неполной системы уравнений (уравнений — 3, а неизвестных —
4) иллюстрирует следующий пример:
sys := { xl + 2*х2 + 3*х3 + 4*х4 = 51,
х1 - 3*х2 + 4*хЗ + х4 匸 32, xl + 2*х2 - 6*хЗ + х4 н -23}:
solve( sys, {xl, х2, хЗ, х4 }):
{x2 = ^xl -~, х4 = --х1 + —, хЗ = -х] +百"二
Как видно из приведенных примеров, функция solve неплохо справляется с решением систем линейных уравнений.
Решение систем нелинейных
и трансцендентных уравнении
Функция solve может использоваться для решения систем нелинейных и трансцендентных уравнений. Для этого система уравнений и перечень неизвестных задаются в виде множеств. Ниже приведены примеры решения уравнений:
restart;
solve({х*у=а,x+y=b},{х,у}):
{у = RootOf(_Z2 ~ _Z b + а), х = -RootOf(_Z2 -_Z b + а) + b}
allvalues(l):
{歹=В 6 — g丿廿-4 а, % = £ 6 + ;步-4 а }
s:=solve({x*y=2,x+y=3},{x,y});'
5 := {у= 1,х = 2}, {у = 2, х = 1}
assign(s);x:y;
-
unassign('x*);y:iy‘;
У'^У
[х.уЪ
В этих примерах хорошо видна техника работы с функциями solve и assign. В конце примеров показано восстановление неопределенного статуса переменных х и у с помощью функции unassign и снятие определения переменных с помощью заключения их в прямые апострофы.
Функция RootOf
В решениях уравнений нередко появляется функция RootOf, означающая, что корни нельзя выразить в радикалах. Эта функция применяется и самостоятельно в виде RootOf(ехрг) или RootOf(ехрг, х), где ехрг — алгебраическое выражение или равенство, х — имя переменной, относительно которой ищется решение. Если х не указана, ищется универсальное решение по переменной Z. Когда ехрг задано не в виде равенства, решается уравнение ехрг=0. Для получения решений вида RootOf в явном виде может использоваться функция al lvalues.
Примеры применения функции RootOf:
> RootOf(х*2+М,х);
RootOf(_Z2 + 1)
allvalues(l);
RootOf(a*b*2+a/b.b);
RootOf(_Z3+ 1)
allvalues(l);.
RootOf(x*3-l,x)mod 7;
RootOf(_Z3 + 6)
allvalues(l);
(1/3)1 (1/3)1 ГТ- ,(1/3)1 (1/3)1
-6 ,-6--/уз 6 ,-6+^/73 6
> evalf(l);
-1.817120593, .9085602965 - 1.573672596/, .9085602965 + 1.573672596/
> RootOf(xA2-2*x+1,x)mod 5;
1
Итак, функция RootOf является эффективным способом представления решения в компактном виде. Как уже отмечалось, наряду с самостоятельным применением она часто встречается в составе результатов решения нелинейных уравнений.
Решение уравнений со специальными функциями
К важным достоинствам Maple 7 относится возможность решения уравнений, содержащих специальные функции ^как в записи исходных выражений, так и в результатах решения. Приведем несколько примеров такого рода:
> eqns :н Psi(3*x-99) - Psi(3*x-100) + 3/х*2:
3 eqns 尸 %(399) - %(3 x 一 100)+ —
> solve( eqns, {x}):
о [ о [
{x = ~- + - J1281 }, {x = --~~ J1281 }
> eqns := max(x.3*x-12)=m1n(10*x+8,22-x):
eqns := max(-12 + 3 x, x) = min( Юх + 8, 22 ~x)
> solve( eqns, {x});
> eqns 产 LambertW(3*x)«ln(x): eqns := LambertW( 3 x)二 ln(x)
> solve( eqns, {x}):
Решение неравенств
Неравенства в математике встречаются почти столь же часто, как и равенства. Они вводятся знаками отношений, например: > (больше), < (меньше) и т. д. Решение неравенств существенно расширяет возможности функции 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).<-^=W}
eqns :н abs(z)A2/(z+l) < exp(2)/(exp(l)-l);
Рис. 8.15. Примеры, иллюстрирующие решение неравенствРис. 8.15. Примеры, иллюстрирующие решение неравенств
Рис. 8.15. Примеры, иллюстрирующие решение неравенств
Рис. 8.15. Примеры, иллюстрирующие решение неравенств
> solve( eqns, {z}):
1 e2 + z</ ——1 e2 + z</ ——(e2) + 4 e2 e - 4 e2(e2) + 4 e2 e - 4 e21 e21 e2(e2) + 4 e2 e - 4 e(e2) + 4 e2 e - 4 ee - 1e - 1e — 1e — 12~<Z2~<Z,{z<-l},{z<-l}
1 e2 + z</ ——
1 e2 + z</ ——
(e2) + 4 e2 e - 4 e2
(e2) + 4 e2 e - 4 e2
1 e2
1 e2
(e2) + 4 e2 e - 4 e
(e2) + 4 e2 e - 4 e
e - 1
e - 1
e — 1
e — 1
2
~<Z
2
~<Z
,{z<-l}
,{z<-l}
eqns :н exp(x)*x^2 >= 1/2:
1 x 2 eqns :=-<e x
solve( eqns, {x}):
{2 Lambert W(・l,・; V5]«x,x < 2 Lambert W (・;®]},{2 Lambert W(・l广;V^]& %}
eqns :н abs( (z+abs(z+2))A2-l 『2 = 9:
2
eqns :=|(z + |z + 2|) - 11 = 9
solve( eqns, {z}):
{z-0},{z<-2}
evalf(^):
{-2.617866616 <x,x<-1.487962064}, {.5398352768 <x}
eqns 尸{ x空<1, у*2<"1. х+у<1/2 }:
eqns :二{х2 < 1,у2 < 1,х + у<-}
solve( eqns, { х, у });
{у4 1,-1 <у,х+у<-, -1 <х,х< 1}
solve({x*y*z>0,x>-l,y+z>10},{x,y,z}): {z = 0, -1 <л, 10 <у}, {у = 0, -1 <х, 10 <z}
В последних примерах показано решение систем неравенств. При этом выдаются области определения нескольких переменных.
Решение функциональных уравнений
Решение функционального уравнения, содержащего в составе равенства некоторую функцию 人先),заключается в нахождении этой функции. Для этого можно использовать функцию solve, что демонстрируют приведенные ниже примеры:
A:=solve(f(x)A2-x+l,f):
А := proc (х) RootOf(_ZA2 - x+ 1, label = _L1) end proc
convert(A(x),radical):
1
allvalues(l):
1
B:«solve(f(x)*x=ln(x*2),f):
В :н proc (x) ln( хЛ2 )/x end proc
convert(BCx),radical):
ln(x2)
Cresolve(f(x)*xA2=a*xA2+b*x+c,f):
C := proc (i) (〃>ал2 + Ьух + c )/工人2 end proc
convert(C(x),radical):
ax2 + bx + c
Решение уравнений с линейными операторами
Maple 7 позволяет решать уравнения с линейными операторами, например с операторами суммирования рядов и дифференцирования. Ограничимся одним примером такого рода:
> S :н sum( (a+b*exp(x[i])-y[i])*2, iM0..n ):
S := (к + 1) / +S := (к + 1) / +2 х.2 х.£ 2 力 е ' а - 2 а у. + Ь2 (е ') 一 2 力 е ‘% +%"£ 2 力 е ' а - 2 а у. + Ь2 (е ') 一 2 力 е ‘% +%"> eqns := { diff(S, a), diff(S,b)}:
S := (к + 1) / +
S := (к + 1) / +
2 х.
2 х.
£ 2 力 е ' а - 2 а у. + Ь2 (е ') 一 2 力 е ‘% +%"
£ 2 力 е ' а - 2 а у. + Ь2 (е ') 一 2 力 е ‘% +%"
eqns :=eqns :=£2е'а + 2 6(е‘)一2e'yj2(〃+l)a+ ^ 2 bq ! -2у{
eqns :=
eqns :=
о
/ = о '> solve( eqns. {a, b});/ = о '> solve( eqns. {a, b});Решение в численном виде — функция fso Ive
/ = о '
> solve( eqns. {a, b});
/ = о '
> solve( eqns. {a, b});
Для получения численного решения нелинейного уравнения или системы нелинейных уравнений в форме вещественных чисел удобно использовать функцию: fsolve( eqns. vans. options )
Эта функция может быть использована со следующими параметрами:
Q compl ex — находит один или все корпи полинома в комплексной форме;
Q fulldigits — задает вычисления для полного числа цифр, заданного функцией Digits;
Q maxsol s=n — задает нахождение только п корней;
Q Interval — задается в виде а.. b или х=а.. Ь, или {х=а.. b, y=c..d, ...} и обеспечивает поиск корней в указанном интервале.
Функция fsolve дает решения сразу в форме вещественных или комплексных чисел, что и показывают следующие примеры:
> fsolve(sin(x)=Pi/4,x); .9033391108
fsolve(sin(x)=l/2,x=4..8):
6.806784083
fsolve(2*x*2+x-1=10.х);
-2.608495283,2.108495283
fsolve(x*5-x,x):
-l.,0., 1.000000000
fsolve(xA5・x,x,complex);
1.000000000, -1.000000000 7. 0„ 1.000000000 7, 1.000000000
eqns 产 abs(x)*x+exp(x) > 0; eqns 0 <|л|х+ ел
solve( eqns, {x});
{~2 Lambert“ 力 v x}
f := sin(x+y) - exp(x)*y = 0:
g : == x*2 - у = 2:
fsolve({f,g},{x,y},{x=-l..l,y=-2..0}):
{x=-.6687012050, у--1.552838698}
Заметим, что локализация поиска корней в заданном интервале позволяет отыскивать такие решения, которые не удается получить с помощью функций solve и fsol ve в обычном применении. В последнем из приведенных примеров дается решение системы нелинейных уравнений, представленных уравнениями f и д. Чтобы еще раз показать различие меж^у (функциями solve и fsolve, рассмотрим пример решения с их помощью одного и того же уравнения erf (а) = 1/2:
solve(erf(x)=l/2,x):
RootOf(2 crf{__Z)- 1)
fsolve(erf(x)=l/2):'
.4769362762
Функция solve в этом случае находит нетривиальное решение в комплексной форме через функцию RootOf, тогда как функция fsol ve находит обычное приближенное решение.
Решение рекуррентных уравнений — rsotve
Функция solve имеет ряд родственных функций. Одну из таких функций — fsolve — мы рассмотрели выше. В справочной системе Maple 7 можно найти ряд и других функций, например г solve для решения рекуррентных уравнений, 1 solve для решения целочисленных уравнений, msolve для решения по модулю /и и т. д. Здесь мы рассмотрим решение уравнений важного класса — рекуррентных. Напомним, что это такие уравнения, у которых заданный шаг решения находится по одному или нескольким предшествующим шагам.
Для решения рекуррентных уравнений используется функция rsolve:
rsolve(eqns, fens)
rsolve(eqns. fens, 'genfunc'(z))
rsolve(eqns, fens, 'makeproc')
Здесь eqns — одиночное уравнение или система уравнений, fens — функция, имя функции или множество имен функций, z — имя, генерирующее функциональную переменную.
Ниже представлены примеры применения функции rsol ve:
restart:
rsolve(f(n)=-2*f(n-l)-f(n-2),f(k)):
(-f(0)-f(l))(^+l)(-l/' + (f(l) + 2f(0))(-l/
rsolve({f(n)=-3*f(n-l)-2*f(n-2),f(1..2>l},{f}):
{出孔户-3(-l)“ + (-2)"}
rsolve({y(n)=n*y(n-l),y(0)=l},y):
Г(п + 1)
rsolve({y(n)*y(n-l)+y(n)-y(n-l)=0,y(0)=a}.y);
a
+孔a
rsolve({F(n)=F(n-l)+F(n-2),F(1..2)=1},F,'genfunc' (x)):
rsolve({y(n+l)+f(n)=2*2*n+n,f(n+l)-y(n)=n-2*n+3,y(k=1..5)=2*k-l,f(5)=6},{y,f}): {f(n\=n + l,y⑺二 2“ 一 1}
А теперь приведем результат вычисления функцией rsol ve п-го числа Фибоначчи. Оно задается следующим выражением:
eql := {f(n+2) = f(n+l) + f(n) . f(0) = 1 , f(l) = 1}: eql := {出也+2)=出也 + 1) + 出也),出0) = 1,f(1) = 1}
В нем задана рекуррентная формула для числа Фибоначчи — каждое новое число равно сумме двух предыдущих чисел, причем нулевое и первое числа равны 1, С помощью функции rsolve можно получить поистине ошеломляющий результат:
al:=rsolve(eql,f):
Числа Фибоначчи — целые числа. Поэтому представленный результат выглядит как весьма сомнительный. Но на самом деле он точный и с его помощью можно получить числа Фибоначчи. Ниже показан процесс получения чисел Фибоначчи для п = 5, 7, 10 и 20:
> £normal(subs(п=5,al),expanded),normal(subs(n*7,al).expanded), normal (suUs(n-10,al).expanded),normal (subs(n-20,al),expanded)]:
[8,21,89,10946]
Решение уравнений в целочисленном виде — iso Ive
Иногда бывает нужен результат в форме только целых чисел. Для этого используется функция isolve(eqns. vars), дающая решение в виде целых чисел. Приведем примеры ее применения:
> isolve({2*x-5=3*y}):
“ = 4 + 3 一Z/,尸 1 + 2 _Z7 }
> isolve(r4-z*2*r2-3*x*z*r2-x*3*z):
Во втором из приведенных примеров в выводе появилась вспомогательная переменная ^1, которая упрощает запись результата при текстовом формате его вывода (Character Notation). Напоминаем, что в стандартной математической нотации вспомогательная переменная вида ZN не формируется. В этом случае упомянутый пример будет выглядеть следующим образом:
> isolve(yA4~zA2*E2~3*x*z*E2-xA3*z);
,Z3 Z24
/ z ==—=
igcd(-_Z/2(_Z22-_Z/2), -_Z/3 _Z2, _Z24)
Z3 Z/2( Z2? - Z/2)
x-—===
igcd(-_Z/2 (_Z2? - _Z/2), -_Z/3 _Z2, _Z2‘)
Z3 Zl2 Z2、
V-= ==}
igcd(-_Z/2(_Z22-_Z/2),-_z/3_Z2,_Z24) J
Результат вычислений одинаков при любом формате вывода, но иногда вывод в текстовом формате с выделением вспомогательных переменных имеет преимущество, поскольку выглядит более компактным.
Функция msolve
Функция msol ve(eqns, vars,m) или msol ve(eqns.m) обеспечивает решение вида Z mod m (то есть при подстановке решения левая часть при делении на т дает остаток, равный правой части уравнения). При отсутствии решения возвращается объект NULL (пустой список).
Ниже даны примеры использования функции msol ve:
> msolve({3*x-4*y=l,7*x+y=2},12);
{片 5,х=3}
> msolve(2*i«3,19):
{t=13 十 18_Z/〜}
> msolve(8*jM2,x,17):
{/=3 + 8%}
На этом мы завершаем рассмотрение функций для решения уравнений, неравенств и систем с ними.
Что нового мы узнали?
В этом уроке мы научились:
Q Вычислять суммы членов последовательностей.
Q Вычислять произведения членов последовательностей.
Q Вычислять производные.
Q Вычислять интегралы.
Q Разлагать функции в ряды.
Q Решать уравнения и неравенства.
Анализ функций и полиномов
Анализ функций
Поиск минимумов и максимумов аналитических функций
Анализ функций на непрерывность
Нахождение сингулярных точек функций
Вычисление асимптотических
и иных разложений
Пример анализа сложной функции
Операции с полиномами
Интерполяция и аппроксимацияфункциональных зависимостей
Прямое и обратное Z-преобразования
Анализ функций
Поиск экстремумов функций
Важным разделом математики является исследование аналитических функций. Оно обычно заключается в определении координат особых точек функции и ее значений в этих точках, а также в выяснении особенностей функции, таких как наличие точек разрыва, асимптот, точек перегибов, разрывов и т. д. К сожалению, пока нет средств, сразу выявляющих все особенности функций, поскольку даже средства, решающие частные задачи анализа функций, довольно сложны и специфичны. Достаточно отметить проблему поиска экстремумов функций (особенно функций нескольких переменных). Поэтому функции приходится анализировать индивидуально.
С помощью функции fsol ve легко находятся значения независимой переменной х функций вида /(%), при которых /(х) = 0 (корни этого уравнения). При этом данная функция позволяет (в отличие от функции solve) изолировать корни функции /(X)указанием примерного интервала их существования. Ряд функций служит для вычисления экстремумов, максимумов и минимумов функций, а также для определения их непрерывности. Одна из таких функций, extrema, позволяет найти экстремумы выражения ехрг (как максимумы, так и минимумы) при ограничениях constrs и переменных vars, по которым ищется экстремум: extrema(expr, constrs) extrema(ехрг, constrs, vans) extrema(expr, constrs, vars, 's')
Ограничения contrs и переменные vars могут задаваться одиночными объектами или списками ряда ограничений и переменных. Найденные координаты точки экстремума присваиваются переменной 's'. При отсутствии ограничений в виде равенств или неравенств вместо них записывается пустой список {}.
Эта функция в предшествующих версиях Maple находилась в стандартной библиотеке и вызывалась командой readlib(extrema). Но в Maple 7 ее можно использовать без предварительного объявления. В этом убеждают приведенные ниже примеры:
> extrema(a*x*2+b*x+c,{},х,'s');s;
b2 -4са . }
{{x = _^g}}
> extrema(x*exp(-x),{},x,'s'):s;
{e }
{{Al}}
> extrema(sin(x)*2,{},x,'s');s;
{0,1}
{{xП0}, {% = ^Л}}
> extrema (x+y/z, x*2+y*2+z*2=l, {x, у, z}, ' s'); s ;
,2.2
{max(l - RootOf(_Z4 +1),-1+ RootOf(_Z4 + 1)), min(l 一 RootOf(_Z4 + 1 ): T + RootOf(_Z4 + 1/)}
{{z二RootOf(__Z4 + l),x = -l,y = RootOf(_Z4 + 1/},
{x= l,z = RootOfJZ4 + l),y = -RootOf(_Z4 + 1」}}
Как видно из приведенных примеров, функция extrema возвращает как значения экстремумов, так и значения аргументов, при которых экстремумы наблюдаются. Для проверки оптимизационных алгоритмов существует ряд тестовых функций. Одна из таких функций — функция двух переменных Розенброка. В представленном ниже примере она задана как rf(x.y):
rf:=(x,y)->100*(y-xA2)A2+(l-x)A2;
rf- (х,у)^ 100 (у-х2) +(1 -X)2
extrema(rf(x,y),{х,у},'s');s; s
ПРИМЕЧАНИЕПРИМЕЧАНИЕКак нетрудно заметить, минимум этой функции при значениях % = g = 1, равный 0, функцией extrema не обнаружен. Однако это не недостаток данной функции, а просто неудачное ее применение. Функция Розенброка имеет минимум значения, и для его обнаружения надо использовать функцию minimize, описанную ниже.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Функция extrema дает неплохие результаты при поиске экстремумов простых аналитических функций, не имеющих особенностей. Однако при анализе сложных функций, содержащих функции со сравнением аргумента (например, abs(x), signum(x) и др.), функция extrema часто отказывается работать и просто повторяет запись обращения к ней.
Поиск минимумов и максимумов аналитических функций
4atTO нужно найти минимум или максимум заданной функции. Для поиска минимумов и максимумов выражений (функций) ехрг служат функции стандартной библиотеки; -
minlmizeCexpr, optl, opt2optn)
maximize(expr^ optl. opt2optn)
Эти функции могут разыскивать максимумы и минимумы для функций как одной, так и нескольких переменных, С помощью опций optl, opt2, ,.„ optn можно указывать
дополнительные данные для поиска. Например, параметр 'infinity' означает, что поиск минимума или максимума выполняется по всей числовой оси, а параметр location (или locatiorrtrue) дает расширенный вывод результатов поиска — выдается не только значение минимума (или максимума), но и значения переменных в этой точке.
Примеры применения функции minimize приведены ниже:
> minimize(x*2-3*x+y*2+3*y+3);
-3
> minimize(x*2-3*x+y*2+3*y+3, location);
> minimize(x*2-3*x+y*2+3*y+3, x=2..4,卢-4..-2, location);
-1, {[{x = 2,y=-2},-l]}
minim-ize(x*2+y*2,x=-10. .10(^-10. .10);
0
тпптттгеСх^г+у^г.х^-Ю. .Ю.у^-Ю. .10,location);
0, {[{尸0,X=0},0]}
min-im-ize(abs(x*exp(-x*2) -1/2), x^-4. .4);
11 “(山 2)
minimize(abs(x*exp('-x*2)-1 /2), x=-4. .4,locatioir=true):
Приведем подобные примеры и для функции поиска максимума — maximize:
maximize(x*exp(-x));
е
maximize(x*exp(-х).location);
e ,{[{x=l},e]}
> maximize(sin(x)/x,x=-2..2.location);
8, {[{X = 0},8]}
> maximize(exp(-x)*sin(x).x=-10..10,y=-10..10,location);
г 31 г5■
e10, { {y = -~n,x = -10}.eiQ , {х = -1О,у = -л},е10 ,
{y = ~n,x = ~10}. e10 }
Обратите внимание на то, что в предпоследнем примере Maple 7 явно «оскандалилась» и вместо максимума функции sin(x)/x, равного 1 при х=0, выдал результат в виде бесконечности. Другими словами, система обнаружила, что в данном случае ей незнакомо понятие предела sin(x)/x при %т0. Эта ситуация кажется более чем странной, если учесть,'что в этом примере Maple 6 давал правильный результат.
Применим функцию minimize для поиска минимума функции Розенброка, Рисунок 9.1 показывает, что minimize прекрасно справляется с данной задачей. На рис. 9.1 представлено также построение функции Розенброка, хорошо иллюстрирующее ее особенности. '
Рис. 9.1. Поиск минимума функции Розенброка и построение ее графика
Трудность поиска минимума функции Розенброка связана с ее характерными особенностями. Из рис. 9.1 видно, что эта функция представляет собой поверхность типа «глубокого оврага с почти плоским дном», в котором и расположена точка минимума. Такая особенность этой функции существенно затрудняет поиск минимума. То, что система Maple 7 справляется с данной тестовой функцией, вовсе не означает, что трудности в поиске минимума или максимума других функций остаются позади.
Анализ функций на непрерывность
Для исследования функций на непрерывность Maple 7 имеет функцию iscont,. записываемую в ряде форм:
Isconttexpr. х = а .. b)
isconttexpr. х = а .. b, 'closed')
iscont(expr. х = а .. b. 'open')
Она позволяет исследовать выражение ехрг, заданное в виде зависимости от переменной х, на непрерывность. Если выражение непрерывно, возвращается логическое значение true, иначе — false. Возможен также результат типа FAIL. Параметр 'closed' показывает, что конечные точки должны также проверяться, а указанный по умолчанию параметр ' open1 — что они не должны проверяться. Работу функции iscont иллюстрируют следующие примеры:
iscont(l/x*2,x=-l..l):
false
'> iscont(1/х*2,х=-1..1,'closed');
false
isccnt(l/x,x=O,.l);
true
> 1scont(l/x,x=0..1,'closed'):
false
> isccnt(l/(x+a),XH-L.l):
FAIL
Рекомендуется внимательно присмотреться к результатам этих примеров и опробовать свои собственные примеры.
Определение точек нарушения непрерывности
Функции, не имеющие непрерывности, доставляют много хлопот. Поэтому важным представляется анализ функций на непрерывность. В Maple 7 функция discont(f,х) позволяет определить точки, в которых нарушается непрерывность функции /(%). Она вычисляет все точки в пределах изменения % от -? до +?, Результаты вычислений могут содержать особые экстрапеременные с именами вида _Zn~ и _NNn~. В частности, они позволяют оценить периодические нарушения непрерывности функций.
Примеры применения функции discont приведены ниже:
> discont(l/(x-2),x):
{2}
> discont(l/((x-l)*(x-2)*(x-3)),х):
{1,2,3}
> discont(GAMMA(x/2),х):
{-2 JW 〜}
^ПРИМЕЧАНИЕ^ПРИМЕЧАНИЕВесьма рекомендуется наряду с применением данной функции просмотреть график анализируемой функции.
^ПРИМЕЧАНИЕ
^ПРИМЕЧАНИЕ
В ряде примеров в выводе используются специальные переменные вида __NameN^t где Name — имя переменной и “ 一 ее текущий номер. После выполнения,команды restart отсчет N начинается с 1. Если вывод с такими переменными уже применялся, то их текущие номера могут казаться произвольными. Специальные переменные часто используются для упрощения выводимых выражений.
Нахождение сингулярных точек функции
Многие операции, такие как интегрирование и дифференцирование, чувствительны к особенностям функций, в частности к их разрывам и особым точкам. Функция singular(expr, vars) позволяет найти особые (сингулярные) точки выражения ехрг, в которых она испытывает разрывы. Дополнительно в числе параметров может указываться необязательный список переменных.
Примеры применения этой функции приведены ниже:
> singular(ln(x)/(x*2-a));
{〃 = 〃,х = 0}, {〃=f,х=х}
singular(tan(x));
{х= Z22- л + л}
singular(l/sin(x)):
{x = 7i_Z23 〜}
singular(Psi(x*y),{x,y});
N1 ~ — 1
{y = y,x = -^—}
singular(x+y+l/x,{x,y}):
{歹二乂工二0}, {y二乂x = _°°}, {y = 8,x=x}, {y^-^x^x}, {x^^y^y}
Вычисление асимптотических и иных разложений
Важным достоинством системы Maple является наличие в ней ряда функций, позволяющих выполнять детальный анализ функций. К такому анализу относится вычисление асимптотических разложений функций, которые представляются в виде рядов (не обязательно с целыми показателями степени). Для этого используется следующая функция: asympt(f.x) dsympt(f.x,n).
Здесь f — функция переменной х или алгебраическое выражение; х — имя переменной, по которой производится разложение; п — положительное целое число (порядок разложения, по умолчанию равный 6). Ниже представлены примеры применения этой функции:
asympt(x/(l-x*2).x):
X х3 х5 > asympt(n!,n,3):
> asympt(exp(x*2)*(l-exp(x)),х):
V U2)
-е е +е
> asympt(sqrt(P1/2)*BesselJ(0.x),х,3):
Пример анализа сложной функции
Ниже мы рассмотрим типичный анализ достаточно «сложной» функции, имеющей в интересующем нас интервале изменения аргумента х от -4 до 4, нули, максимумы и минимумы. Определение функции /(х), ее графики и график производной dF(x)/dx даны на рис. 9.2. Этот рисунок является началом полного документа, описываемого далее.
Функция Дх) на первый взгляд имеет не совсем обычное поведение вблизи начала координат (точки с х = г/ = 0). Для выяснения такого поведения разумно построить график функции при малых к и “. Он также представлен на рис. 9.2 (нижний график) и наглядно показывает, что экстремум вблизи точки (0, 0) является обычным минимумом, немного смещенным вниз и влево от начала координат.
Теперь перейдем к анализу функции F(x). Для поиска пулей функции (точек пересечения оси х) удобно использовать функцию fsolve, поскольку она позволяет задавать область изменения х, внутри которой находится корень. Как видно из приведенных ниже примеров, анализ корней F(x) не вызвал никаких трудностей, и все корни были уточнены сразу:
Поиск нулей функции
a fsolve(F(x),x,-2...-1):
-1.462069476
a fsolve(F(x),x,-.01..0.01): 0.
a fsolve(F(x),х,-.05..0);
-.02566109292
a fsolve(F(x),x.l..2):
1.710986355
a fsolve(F(x),x,2.5..3);
2.714104921
Нетрудно заметить, что функция имеет два очень близких (но различных) корня при %, близких к нулю.
Анализ функции на непрерывность, наличие ее нарушений и сингулярных точек реализуется следующим образом:
Анализ функции на непрерывность, наличие ее нарушений и наличие сингулярных точек
a iscciTt(F(x),XH-4・.4);
true
discont(F(x),х);
{ }
a singular(F(x));
{х = °°}, {х = -о®}
Этот анализ не выявляет у заданной функции каких-либо особенностей. Однако это не является поводом для благодушия — попытка найти экстремумы F(x) с помощью функции extrema и минимумы с помощью функции minimize завершаются полным крахом:
Неудачный поиск экстремумов и минимумов функции
a extrema(F(х),{},х J s');s;
a minimize(F(x),x=-.1...1):
minimize (.05x+xe«x" sin(2x),x = -.l 1)
a minimize(F(x),x=-2.5..-2);S
minimize (.05 x +x e('"‘ sin(2x), x = -2.5 -2)
Приходится признать, что в данном случае система Maple 7 ведет себя далеко не самым лучшим образом. Чтобы довести анализ F(x) до конца, придется вспомнить, что у функции без особенностей максимумы и минимумы наблюдаются в точках, где производная меняет знак и проходит через нулевое значение. Таким образом, мы можем найти минимумы и максимумы по критерию равенства производной нулю. В данном случае это приводит к успеху:
Поиск минимумов по критерию равенства нулю производной
a fsolve(diff(F(x),х)=0,х,-.5...5):
-.01274428224
>xm:=t;
хт :=-.0003165288799
a [F(xm) ,F(xnH-.001),F(xm- .001)]:
[-.00001562612637, .00003510718293, -.00006236451216]
a fsolve(diff(F(x).x)=0,x,-2.5..-2):
2271212360
>fsolve(diff(F(x).x)=0,x,2. .2.5):
2.175344371
Неудачный поиск максимума
>maximize(F(x) ,х=-1.. - .5):
maximiz《.O5 х+х е('“ sin(2х), х = -1 -.5)
Поиск максимумов по критерию равенства нулю производной
a fsolve(diff(F(x),х),х.-1..-.5):
-.8094838517
a fsolve(diff(F(x),х),х,.5..2);
.8602002115
>fsolve(diff(F(x),x).x.-4. .-3);
3629879137
a fsolve(diff(F(x),х),х,3..4);
3.899664536
Итак, все основные особые точки данной функции (нули, минимумы и максимумы) найдены, хотя и не без трудностей и не всегда с применением специально предназначенных для такого поиска функций. В уроке 12 будет описана процедура, которая автоматизирует процесс анализа не очень сложных функций и обеспечивает его наглядную визуализацию.
Функции из отдельных кусков
Создание функций из отдельных кусков
Для создания функций, составленных из отдельных кусков, Maple 7 располагает интересной функцией:
p1ecewise(cond_l,f_l, ccnd_2.f_2. .... cond_n,f_n, f_otherw1se)
где f_i — выражение, cond_i — логическое выражение, f_otherwi se — необязательное дополнительное выражение. В зависимости от того или иного условия эта функция позволяет формировать соответствующую аналитическую зависимость. К кусочным функциям (подчас в скрытой форме) приводят функции с элементами сравнения аргумента, например abs, signum, шах и др. Поэтому в Maple 7 введен достаточно мощный аппарат обработки и прео^)азований таких функций по частям.
Простые примеры применения функции piecewise
Рисунок 9.3 показывает задание функции /(%), содержащей три характерных участка. По определенной через функцию пользователя зависимости /(х) можно, как обычно, построить ее график.
Рис. 9.3. Пример задания и применения функции, составленной из отдельных кусков
Важно отметить, что созданная с помощью функции piecewise зависимость может участвовать в различных преобразованиях. Например, на рис. 9.3 показано, что она легко дифференцируется и можно построить график производной этой функции. При этом каждая часть функции обрабатывается отдельно.
Работа с функциями piecewise
С функциями типа piecewise можно работать, как с обычными функциями. При этом необходимые операции и преобразования осуществляются для каждой из частей функции и возвращаются в наглядной форме.
Ниже приведен пример задания функции f в аналитической форме:
a restart:
a f 尸 тах(х*2 - 2, х-1):
/ := тах(х2 - 2, х - 1)
fprime :=fprime :=undefined1imdefined2 xundefined1imdefined2 x
fprime :=
fprime :=
undefined
1
imdefined
2 x
undefined
1
imdefined
2 x
Для выявления характера функции воспользуемся функцией convert и создадим объект g в виде кусочной функции:
>g := convert(f, piecewise):
f-2
1
2
1
1 r-
X - 1
x<
2 +
f-2
1
—+
5 <x
2
2 T
интегрирование функции:интегрирование функции:Выполним дифференцирование и
интегрирование функции:
интегрирование функции:
a fprlme :н diff(f, х):
2 х
a Int(g.x)=int(g,x);
X21 - 3X21 - 31 -2 +1 - СЧVX1 -2 +1 - СЧVX
X
2
1 - 3
X
2
1 - 3
1 -2 +
1 - СЧ
VX
1 -2 +
1 - СЧ
VX
Как нетрудно заметить, результаты получены также в ваде кусочных функций. Можно продолжить работу с функцией f и выполнить ее разложение в степенной ряд:
> series(f, х):
—1 + х + 0( х‘)
Чтобы убрать член с остаточной погрешностью, можно выполнить эту операцию следующим образом:
> series(g, х);
一 1 +х
Обратите внимание на то, что поскольку разложение в ряд ищется (по умолчанию) в окрестности точки хж0, то при этом используется тот кусок функции,
в котором расположена эта точка. Читатель может продолжить работу с кусочными функциями и далее.
Операции с полиномами
Определение полиномов
К числу наиболее известных п изученных аналитических функций относятся степенные многочлены — полппомы. Графики полиномов описывают огромное разнообразие кривых на плоскости. Кроме того, возможны рациональные полиномиальные выражения в виде отношения полиномов. Таким образом, круг объектов, которые могут быть представлены полиномами, достаточно обширен, и полино mi шл ьные преобразования широко используются на практике, в частности, для приближенного представления других функций.
Под полиномом в системе Maple 7 понимается сумма выражений с целыми степенями. Многочлен для ряда переменных — многомерный полином. К одномерным полиномам относятся степенной многочлен:
P ") = 4炉+41 х”7+…% х十旬,
а также отдельная переменная х и констапта. Большое достоинство полиномов состоит в том, что они дают единообразное представление многих зависимостей и для своего вычисления требуют только арифметических операций (их число значительно сокращается при использовании хорошо известной схемы Горнера). Производные от полиномов п интегралы с подынтегральными функциями- полиномами легко вычисляются м имеют простой вид. Есть м достаточно простые алгоритмы для вычисления всех (в том числе комплексных) корней полиномов на заданном промежутке.
Выделение коэффициентов полиномов
Для выделения коэффициентов полиномов в Maple 7 служат следующие функции:
О coeff(р, х) — возвращает коэффициент при х полинома р;
О coeff(p.x.n) — возвращает коэффициент для члена со степенью п полинома р;
О coeffCp.x^n) — возвращает коэффициенты при х^п полинома р;
О coeffs(p, х, 'f) — возвращает коэффициенты полинома нескольких переменных, относящиеся к переменной х (или списку переменных) с опцией 't1, задающей имя переменной;
О collect(p,x) — возвращает полином, объединяя коэффициенты при степенях переменной х.
Ниже даны примеры применения этих функций:
> р;=а4*х*4+аЗ*х*3+а2*х*2+а1*х+а0;
р 尸 а4 х4 + аЗ х3 ± а2 х2 + al х + аО
coeff(p.x);
coeff(p,x*3); аЗ
coeff(p,x,4);
а4
coeffs(p.x);
аО, 〃4, 〃/, аЗ, а2
q:=x*2+2*y*2+3*x+4*y+5;
^:=x2 + 2y2 + 3x + 4y + 5
coeffs(q);
2, 3,4,1
cceffs(q,y):
f + 3 х + 5, 2, 4
coeffs(q,x,y);
5 +2/ + 4у,3, 1
collect(q.x);
2
х2 + 2 (1, х , х) + 3 х + (4, 4 f, 4 х) + 5
coHect(q.x.y);
у(1)х2 + у(3)х + у(5 + 2у2 + 4у)
ПРИМЕЧАНИЕ Следует обратить внимание на то, что при выполнении операции collect в прежних версиях Maple довольно часто возникала фатальная ошибка. Как видно из приведенных примеров, в Maple 7 такой ошибки уже не возникает.
Оценка коэффициентов полинома по степеням
Полином может быть неполным, то есть не содержать членов со степенями ниже некоторой. Функция Icoeff возвращает старший, а функция tcoeff — младший коэффициент полинома нескольких переменных. Эти функции задаются в виде:
lcoeff(p) lcoeff(p, х)1cceff(p. х. 't')lcoeff(p) lcoeff(p, х)1cceff(p. х. 't')tcoeff(p) tcoeff(p. x) tcoeff(p. x. 't')tcoeff(p) tcoeff(p. x) tcoeff(p. x. 't')
lcoeff(p) lcoeff(p, х)
1cceff(p. х. 't')
lcoeff(p) lcoeff(p, х)
1cceff(p. х. 't')
tcoeff(p) tcoeff(p. x) tcoeff(p. x. 't')
tcoeff(p) tcoeff(p. x) tcoeff(p. x. 't')
Функции Icoeff и tcoeff возвращают старший (младший) коэффициент полинома р относительно переменной х или ряда переменных при многомерном полиноме. Если х не определено, Icoeff (tcoeff) вычисляет старший (младший) коэффициент относительно всех переменных полинома р. Если третий аргумент t определен, то это имя назначено старшему (младшему) члену р. Если х — единственное неизвестное nd— степень р по х, то lcoeff(p, х) эквивалентно coeff(p. X. d). Если х — список или множество неизвестных, Icoeff (tcoeff) вычисляет старший (младший) коэффициент р, причем р рассматривается как полином многих переменных. Имейте в виду, что р должен быть разложен по степеням неизвестного х до вызова функций Icoeff или tcoeff. 1 ■
Приведем примеры применения функций Iqoeff, tcoeff и coeffs:
q:«1/х*2+2/х+3+4*х+5*х*2;
2—* 尸 2
g:=一7 + — + 3+ 4% + 5х
1cceff(q,x);
5
lcoeff(q.x. 'f);
5
t:
coeffs(q.x.'f);
3,1,4, 2,5
t:
Оценка степеней полинома
Функция degree возвращает высшую степень полинома, а 1degree — низшую степень. Эти функции задаются следующим образом: -
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,x2,...]) =degree (p.xl) deg гее (1 coeff(p. xl) ,[х2,...])
Полная степень тогда определяется следующим образом:
degree(p.{xl,...,xn}) = maximum degree(p,{xl....xn})
или
degree(p.{xl,...,xn}) = degree(p, [xl,...,xn])
Обращаем внимание на то, что векторная степень зависит от порядка перечисления неиавесхйык, а полная степень не зависит.
Примеры применения функций degree и 1 deg гее:
restart;
р:=а4*х*4+а3*х*3+а2*х*2;
р := а4 х4 + аЗ х3 + а2 л2
degree(pfx);
4
Idegree(p.x);
2
q:=l/xA2+2/x+3+4*x+5*xx2;
12?
?:=、+ — + 3+ 4х + 5х
degree(q.x):
2
Idegree(q.x);
-2
degree(x*sin(x),x);
FAIL
> zero := y*(x/(x+l)+l/(x+l)-1):
zero := у + - 1
[1 x+ 1 丿
> degree(zero.x):degree(zero,у):
FAIL
1
degree( col lecttzero.x. normal) ,x) ; degree (coll ect (zero, у, normal),у);
Разложение полинома на множители
Для контроля того, имеет ли полином несокращаемые множители, может использоваться функция Irreduc(p) и ее вариант в инертной форме Ireduc(p.K), где К — RootOf- выражение. Ниже приведены примеры применения этих тестовых функций:
>irreduc(xA2-l);
false
>irreduc(xA2-2);
true
>1rreduc(2*xA2+6*x+6) mod 7:
fills Q
>Irreduc(xA4+x+l) mod 2;
true
>alias(alphasRoot0f(xA4+x+l)):
>Irreduc(xA4+x+l.alpha) mod 2:
%左6
Разложение полинома по степеням
Для разложения полинома р по степеням служат инертные функции AFactor(p) и AFactors(p). Полином может быть представлен в виде зависимости от одной или нескольких переменных.
Функция Afactor(p) выполняет полную факторизацию (разложение) полинома р от нескольких переменных с коэффициентами в виде алгебраических чисел над полем комплексных чисел. При этом справедливо отношение evala(AFactor(p))=factor(p, complex). Таким образом, эта функция является, по существу, избыточной.
В случае одномерного полинома полное разложение на множители является разложением на линейные множители. Функция AFactors аналогична функции Afactor, но создает структуру данных формы [u, [[f[l] ,е[1]]…,[f[n] (е[п]]]] так, что p=u*f[l]*e[l]<*f[n]Ae[n], где каждый f[1] — неприводимый полином.
Ниже даны примеры применения функции Afactor:
> evala(AFactor(2*xA2+4*x-6)); 20 + 3)0-1)
> eva1a(AFactor(xA2+2*yA2));
(х - RootOR—Z? + 2) у) (x + RootOfJZ? + 2) у)
> expand((x-l)*(x-2)*(x-3)*(x-4)):
X4- 10л-3 + 35х2-50х + 24
> AFactor(t);
AFactoRx'- 10 x3 + 35 x2 - 50 x + 24)
> evala(^);
(x- l)(x-2)(x-3)(x-4)
> expand((x-l+I*2)*(x+l-I*2)*(x-3)): x3-3x2+3x-9 + 4/x- 12/
> evala(AFactor(^)); (x-3)(x2 + 3 +4/)
> eval a(AFactors(xA2-2*yA2)):
[1, [[x-RootOf(_z2-2)y, 1], [x + RootOf(_Z2-2)j, 1]]]
Нетрудно заметить, что разложение полинома на множители позволяет оценить наличие у него корней. Однако для этого удобнее воспользоваться специальными функциями, рассмотренными ниже.
Вычисление корней полинома
Для вычисления действительных и комплексных корней полиномов служит уже известная нам функция solve(p,x), возвращающая список корней полинома р одной переменной. Кроме того, имеются следующие функции для вычисления корней полиномов: roots(p)roots(p. К)
rootstp, х)roots(p, X. К)
Эти функции вычисляют точные корни в рациональной или алгебраической области чисел. Корни возвращаются в виде [ [rl.ml], „., [гп.тп] ], где ri — это
корень полинома, a mi — порядковый номер полинома. С действиями этих функций можно разобраться с помощью приведенных ниже примеров:
> р:=хА4+9*хАЗ+31*хА2+59*х+60;
/? := х4 + 9 х3 + 31 х2 + 59 х + 60
solve(p.x);
-3,-4,-1+2/,-1-2/
roots(p,x):
[[АП, [-3,1]]
roots(x*2-4,x):
[[2,1], [-2,1]]
expand((x-l)*(x-2)*(x-3)*(x-4)):
xJ 10хЗ + 35х2-50х + 24
roots(t,x);
[[1,1],[2,1],[3,1],[4,1]]
Основные операции с полиномами
С полиномами могут выполняться различные операции. Прежде всего отметим некоторые функции, которые относятся к одному полиному:
О psqrt(p) — возвращает квадрат полинома;
О proot(p.n) — возвращает п-ю степень полинома;
О realroot(p) — возвращает интервал, в котором находятся действительные корни полинома;
О randpoly(vars, eqns) — возвращает случайный полином по переменным vars (список) с максимальной степенью eqns;
О discrim(p,var) — вычисление дискриминанта полинома по переменной var;
О Primitive(a) mod р — проверка полинома на примитивность (возвращает true, если полином примитивен).
Действие этих функций достаточно очевидно, поэтому ограничимся приведением примеров их использования:
readlib(psqrt):
readlib(proot);
psqrt(xA2+2*x*y+y*2);
у + х
proot(хА3+3*хА2+3*х+1. 3);
х+1
psqrt(x+y);
_NOSQRT
proot(х+у, 2):
_NOROOT
р:-хА3-3*хА2+5*х-10:
р:=х3-Зх2 + 5л- 10
> discrim(p,x):
-1355.
> readlib(real root):丿
> real root(p);
[[0,4]]5
> randpoly([x],degree=10);
63x'° + 57x- 59x5 + 45x4- 8x3-93
> randpol y([x],degree=10);
-5 X + 99x8 - 61 x6_50x5_ 12 x3 - 18 X
> randpoly([x],degree=10);
41 x9-58x8-90x + 53 x6-x4 + 94x
> PrimitiveC x*4+x+l ) mod 2;
true
Обратите внимание на то, что для использования некоторых из приведенных функций необходим вызов их из стандартной библиотеки. Для функции randpol у приведенные результаты случайны, так что, скорее всего, их повторение невозможно.
С полиномами можно выполнять обычные операции, используя для этого соответствующие операторы:
> readlib(psqrt):
> readlib(proot):
> Primitive( х*4+х+1 ) mod 2;
true
> pl:eal*x*3+bl*x*2+cl*x+dl: p2:=a2*xA2+b2*x+c2:
> pl+p2;
al x3 + bl x2 + cl x + dl +〃2 f + b2 x + c2
> pl*p2;
(〃/ x3 -^- bl x2 + cl x + dl) (〃2 x2 + b2x + c2)
> collect(t.x);
al a2 x5 + (W a2 + al Ь2) x‘ + (с/ a2 + blb2 + al с2)^ + (d/ a2 + с/ Ь2 + Ы c2)x2
+ (d? b2 + cl c2) x + dl c2
> pl/p2;
al x3 + b? f + c? x + d?
a2 x1 + b2 x + c2.
> expand(t.x):
al x3bl x2cl xdl
6 al x + 2 bl
> Int(pl,x)Hnt(pl,x);
「111
\al х^ Л-Ы х1 + cl х + dl dx — -al х4 -^-Ы х^ + -^ cl x1 -^dl x
> Int(pl,x=0..l)=int(pl,x=0..1):
「1111
J al x3 + blx2 + clx + dldx = -al+-bl+-cl-^dl о
Операции над степенными многочленами с отрицательными степенями
Хотя в подавляющем большинстве случаев используются степенные многочлены (полиномы) с положительными степенями, Maple 7 не накладывает особых ограничений и на многочлены с отрицательными степенями. Например, можно задать такой степенной многочлен:
рр:=а*х*(-2)+Ь*хЛ(-1)+c*x+d+e*x*2+f*хЛ3;
pp := — + — + cx + a+ ex +/x
Нетрудно показать, что с ним можно выполнять различные операции:
рр+рр;
2 —|-2сх + 2б74-2^х^ + 2/'х^
рр-рр:
О
рр2
(a b2
~нhcx + d + ex H X
simplify(力);
{a -^ bx + c x^ + d x1 + e x^ + f x5)
х4
Diff(pp,x)*=diff(pp,x);
=—2 + c + 2ex + 3=—2 + c + 2ex + 3Ъ ( а b2
=—2 + c + 2ex + 3
=—2 + c + 2ex + 3
丁 ~Vhcx + d + 8x(x2 X
Int(pp.x);
—~hex + d +dx
X? X丿
Int(pp.x):
Ь Ш(Х)+ 2 ^ ^ + а X + ^
金)ПРИМЕЧАНИЕ金)ПРИМЕЧАНИЕMaple 7 не накладывает ограничений на применение степенных многочленов (полиномов) с отрицательными степенями. Однако свойства таких полиномов заметно отличаются от свойств полиномов с положительными степенями, поэтому при применении первых надо проявлять известную осторожность. ,
金)ПРИМЕЧАНИЕ
金)ПРИМЕЧАНИЕ
Интерполяция и аппроксимация функциональных зависимостей
Интерполяция, экстраполяция и аппроксимация
Вычисление многих функций, особенно специальных, требует больших затрат времени. Поэтому до сих пор широко применяются таблицы таких функций. Достаточно отметить знаменитые на весь мир таблицы в книге «Справочник по специальным функциям с формулами, графиками и таблицами» под редакцией М, Абрамовица и И, Стиган [59],
Если некоторая зависимость у(к) представлена рядом табличных отсчетов %"), то интерполяцией принято называть вычисление значений “(%) при заданном х, расположенном в интервале между отсчетами. За пределами общего интервала определения функции [а, Ь], то есть при х < а и х > Ь, вычисление у(%) называют экстраполяцией (или иногда предсказанием значений функции). В данном случае речь идет об одномерной интерполяции, но возможны двумерная интерполяция функций двух переменных z(%, г/) и даже многомерная интерполяция для функций многих переменных.
Интерполяция и экстраполяция часто выполняются по некоторой скрытой, но подразумеваемой зависимости. Например, если узловые точки функции соединить отрезками прямых, то будем иметь многоинтервальную линейную интерполяцию данных. Если использовать отрезки параболы, то интерполяция будет параболической. Особое значение имеет многоинтервальная сплайн-интерполяция, области применения которой уже сейчас весьма обширны и непрерывно расширяются. Интерполяция рядом Фурье (набором синусоидальных функций) также достаточно хорошо известна; она эффективна при интерполяции периодических функций. Аппроксимацией в системах компьютерной математики обычно называют получение приближенных значений какого-либо выражения. Однако под аппроксимацией функций подразумевается получение некоторой конкретной функции, вычисленные значения которой с некоторой точностью аналогичны аппроксимируемой зависимости. Обычно предпочитают найти одну зависимость, приближающую заданный ряд узловых точек. Часто для этого используют степенные многочлены — полиномы.
Здесь мы будем рассматривать такие виды аппроксимации, которые дают точные значения функции у{х) в узловых точках в пределах погрешности вычислений по умолчанию. Если аппроксимирующая зависимость выбирается из условия наименьшей среднеквадратической погрешности в узловых точках (метод наименьших квадратов), то мы имеем регрессию или приближение функций по метода I наименьших квадратов.'
Аппроксимация аналитически заданных функций
Если функция задана аналитически, то наиболее простым способом нахождения ее аппроксимирующей зависимости является применение функции convert. Это поясняют следующие примеры:
convert(taylor(exp(x),х,5).polynom);
> f:=x->(x*3+x)/(xx2-l):
> convert(f(x).parfrac,х):
На рис. 9.4 представлен пример полиномиальной аппроксимации хорошо известной статистической функции erfc(x). Для полинома задана максимальная степень 12, но ввиду отсутствия в разложении четных степеней максимальная степень результата оказывается равна 11.
Рис. 9.4. Пример полиномиальной аппроксимации функции erfc(x)
Как видно из приведенного рисунка, в интервале изменения % от -1,5 до 1,5 аппроксимирующее выражение почти повторяет исходную зависимость. Однако затем график аппроксимирующей функции быстро отходит от графика исходной зависимости. При этом он ведет себя иначе даже качественно, никоим образом не показывая асимптотическое поведение, характерное для исходной зависимости.
Полиномиальная интерполяция табличных данных
Если данные некоторой зависимости у{х) заданы векторами X и Y ее дискретных значений, то для получения интерполяционного степенного многочлена достаточно записать многочлен для всех N пар значений %(%) при г = 1 …N (или г = 0…N— 1, если индексы отсчетов начинаются с нуля). Полученная при этом система линейных (относительно коэффициентов полинома) уравнений после решения дает коэффициенты аппроксимирующего полинома. Степень полинома на 1 меньше N, а вычисляемые при % значения “(%) совпадают с табличными (узловыми) в пределах вычислительной погрешноёти.
На самом деле все это делать не нужно, поскольку Maple 7 имеет реализующую данный алгоритм встроенную функцию interp(X,Y,v) или в инертной форме Interp(X,Y.V).
Переменная v указывает имя переменной интерполяционного полинома. Векторы X и Y должны содержать и + 1 = ^ координат точек исходной зависимости, где п — степень интерполирующего полинома.
Рисунок 9.5 показывает технику применения полиномиальной аппроксимации на основе функции interp с построением графика исходных точек и аппроксимирующего полинома. Нетрудно заметить, что график полинома проходит точно через исходные точки — они показаны квадратиками.
В этом примере полезно присмотреться к визуализации результатов вычислений и совместному построению графика интерполирующего полинома и исходных точек. В частности, для построения последних использована обычная функция plot, позволяющая выводить на график точки с заданными координатами, причем не только в виде окружностей, но и в виде точек, маленьких крестиков, кружков, квадратов и других фигур. Для выбора типа точек и других параметров графика его надо выделить (установив указатель мыши в поле графика н щелкнув левой кнопкой) и нажать правую кнопку мыши — появится контекстно-зависимое меню с операциями форматирования графика. Это меню показано на рис. 9.5.
Приведем еще несколько примеров использования функции Interp:
Interp([2.5,6], [9,8,3], х) mod 11;
8 х2 + 6 х + 9
а1i a s(а1phaeRootOf(х*4+х+1)):
аInterp([0,1»a1pha],[a1pha,alpha*2,a1phaA3], x) mod 2;
a T + d + a* l)x + a
Рис. 9.5. Пример осуществления полиномиальной аппроксимации
Сплайн-интерполяция и аппроксимация
Точность полиномиальной аппроксимации катастрофически падает при увеличении степени аппроксимирующих полиномов. От этого недостатка можно избавиться, используя для аппроксимации отрезки полиномов невысокой степени, применяемые для представления части узловых точек. Самым известным методом такой аппроксимации является сплайн-аппроксимация на основе применения отрезков кубических полиномов. При этом аппарат сплайн-аппрокси- мации позволяет получить полиномы, которые дают в узловых точках непрерывность не только представляемой ими функции, но и ее первых и даже вторых производных.
Наглядно сплайн-функцию можно представить в виде гибкой стальной линейки, закрепленной в узловых точках и плавно изгибающейся. Благодаря указанным свойствам сплайнов они неплохо описывают функции, представленные как небольшим числом узловых точек (благодаря плавности сплайн-кривых), так и функции, представляемые очень большим числом узловых точек (поскольку порядок полиномов от этого числа уже не зависит). Недостатком сплайн-ап- проксимации является отсутствие общего выражения для всей кривой. Фактически приходится использовать набор сплайн-функций для различных интервалов между узловыми точками.
Для получения сплайн-интерполяции используется Maple-функция spline(X,Y,var,d). Здесь X и Y — одномерные векторы одинакового размера, несущие значения координат узловых точек исходной функции (причем в произвольном порядке), var — имя переменной, относительно которой вычисляется сплайн-функция, наконец, необязательный параметр d задает вид сплайна. Он может иметь следующие значения: 11 near — линейная функция, или полином первого порядка, quadratic — квадратичная функция, или полином второго порядка, cubic — полином третьего порядка, quartic — полином четвертого порядка. Если параметр d опущен, то сплайн-функция будет строиться на основе полиномов третьего порядка (кубические сплайны).
Технику сплайновой аппроксимации наглядно поясняет рис. 9.6. На нем представлено задание векторов узловых точек X и Y п четырех сплайновых функций, по которым построены их графики. Для одной из функций (с линейной интерполяцией между узлами) показан вид сплайновой функции.
0Mapg T」|Spfa4_mw$ - fSe^ilD0Mapg T」|Spfa4_mw$ - fSe^ilD@段 £曲熬ew 抑绮rt F雜ffi*@段 £曲熬ew 抑绮rt F雜ffi*□日1K後哥希£袞□日1K後哥希£袞Пример применения сплайн-аппроксимацииПример применения сплайн-аппроксимации>>readlib(spline) : X: » rX * : Y: « TYr :: Y:=[0,1,4,3,2,11:fl:=spline(X,Y,x, linear) ;fc: =spline(X,. Y,x,cubic):fq: espline (X, Y, x, quadratic) : fql: =spline (X, Y, x, quartic):readlib(spline) : X: » rX * : Y: « TYr :: Y:=[0,1,4,3,2,11:fl:=spline(X,Y,x, linear) ;fc: =spline(X,. Y,x,cubic):fq: espline (X, Y, x, quadratic) : fql: =spline (X, Y, x, quartic):
0Mapg T」|Spfa4_mw$ - fSe^ilD
0Mapg T」|Spfa4_mw$ - fSe^ilD
@段 £曲熬ew 抑绮rt F雜ffi*
@段 £曲熬ew 抑绮rt F雜ffi*
□日1K
後哥希£袞
□日1K
後哥希£袞
Пример применения сплайн-аппроксимации
Пример применения сплайн-аппроксимации
>
>
readlib(spline) : X: » rX * : Y: « TYr :
: Y:=[0,1,4,3,2,11:
fl:=spline(X,Y,x, linear) ;fc: =spline(X,. Y,x,cubic):
fq: espline (X, Y, x, quadratic) : fql: =spline (X, Y, x, quartic):
readlib(spline) : X: » rX * : Y: « TYr :
: Y:=[0,1,4,3,2,11:
fl:=spline(X,Y,x, linear) ;fc: =spline(X,. Y,x,cubic):
fq: espline (X, Y, x, quadratic) : fql: =spline (X, Y, x, quartic):
х < 1
-2 + Зх
斤斤х < 3х < 3
斤
斤
х < 3
х < 3
>>х < 4х < 4otherwiseotherwiseplot([fl,fc,fq, fql], x=-l. .5.2,coloreblack);plot([fl,fc,fq, fql], x=-l. .5.2,coloreblack);
>
>
х < 4
х < 4
otherwise
otherwise
plot([fl,fc,fq, fql], x=-l. .5.2,coloreblack);
plot([fl,fc,fq, fql], x=-l. .5.2,coloreblack);
Рис, 9.6. Задание сплайновой аппроксимации и построение графиков полученных функций
Как видно из рис. 9.6, сплайновая функция представляет собой кусочную функцию, определяемую на каждом отдельном интервале. При этом на каждом участке такая функция описывается отдельным полиномом соответствующей степени. Функция plot «понимает» такие функции и позволяет без преобразования типов данных строить их графики. Для работы с кусочными функциями можно использовать функции convert и piecewise.
Прямое и обратное Z-преобразования
Прямое и обратное Z-преобразования функций широко используются при решении задач автоматического управления. Эти преобразования задаются следующими функциями:
О ztrans(f, n, z) — прямое преобразование функции /(и) в /(z);
О invztrans(f, z, п) — обратное преобразование /(z) в /(и).
Заметим, что прямое Z-преобразование базируется на соотношении ztrans(f(n),n,z)= 二 sum(f(n)/z*'n,n=O. .infinity), записанном на Maple-языке. В первых версиях системы Maple /-преобразования выполнялись средствами библиотеки и требовали вызова командой readlib(ztrans). Но в Maple 7 они включены в ядро системы и предвари тел ьного вызова уже не требуют. В этом убеждают следующие примеры:
a:=ztrans(n*2,n,z);
z (z + 1 ) ("1)3
invztrans(a,z,n);
Родственные /-преобразованиям интегральные преобразования Лапласа и Фурье реализуются с помощью пакета inttrans (интегральные преобразования).
Что нового мы узнали?
В этом уроке мы научились:
О Выполнять поиск экстремумов функций.
О Осуществлять поиск минимумов и максимумов аналитических функций.
О Анализировать функции на непрерывность.
Q Находить сингулярные точки функций.
О Вычислять асимптотические и иные разложения.
О Анализировать сложные функции.
О Работать с кусочными функциями.
О Выполнять операции с полиномами.
О Интерполировать и аппроксимировать функциональные зависимости.
О Вычислять прямые и обратные Z-преобразования.
^SE5K^SE5KСимвольные(аналитические)
^SE5K
^SE5K
операции
Основные операции с выражениями
口 Подстановки
Упрощение выражений
Расширение выражений
口 Факторизация выражений
口 Комплектование по степеням
Программирование символьныхопераций
Основные операции с выражениями
Работа с частями выражений
Выражения (ехрг) или уравнения (eqn) обычно используются как сами по себе, так и в виде равенств или неравенств. В последнем случае объекты с выражениями имеют левую и правую части. Для простейших манипуляций с выражениями полезны следующие функции:
О cost(a) — возвращает число сложений и умножений в выражении а (функция пакета 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)*2+cos(x)A2=l);
sin(x)2 + cos(x)2
rhs(sin(x)A2+cos(x)A2=l);
1「
normal(2/4+3/6+6/12);
3
2
> f:=5*(a・b「2/(T2・2*a*b・b人2);
numer(f):
5 (a-b)2
denom(f):
42 f 2 a “ 6?
②)ПРИМЕЧАНИЕ②)ПРИМЕЧАНИЕОбратите внимание на то, что 8 предшествующих версиях Maple загрузка библиотечной функции cost выполнялась иначе — командой readlib(cost). Это обстоятельство может служить причиной неверной работы документов, созданных в старых версиях Maple, в среде описываемой версии Maple 7.
②)ПРИМЕЧАНИЕ
②)ПРИМЕЧАНИЕ
Работа с уровнями вложенности выражений
В общем случае выражения могут быть многоуровневыми н содержать объекты, расположенные на разных уровнях вложенности. Приведем две функции для оценки уровней выражений и списков;
О nops(expr) — возвращает число объектов первого уровня (операндов) в выражении ехрг;
О ор(ехрг) — возвращает список объектов первого уровня в выражении ехрг;
О ор(п.ехрг) — возвращает п-й объект первого уровня в выражении ехрг.
Ниже представлены примеры применения этих функций:
nops(a+b/c):
2
op(a+b/c);
b
ор(1,а+Ь/с);
ор(2,а+Ь/с);
b
с
Рекомендуется просмотреть и более сложные примеры на применение этих функций в справке.
Преобразование выражений в тождественные формы
Многие математические выражения имеют различные тождественные формы. Порою преобразование выражения из одной формы в другую позволяет получить результат, более удобный для последующих вычислений. Кроме того, различные функции Maple 7 работают с разными формами выражений и разными типами данных. Поэтому большое значение имеет целенаправленное преобразование выражений и данных.
Основной функцией для такого преобразования является функция convert:
convert(ехрг, form, arg3, ...)
Здесь ехрг — любое выражение, form — наименование формы, агдЗ, ... — необязательные дополнительные аргументы.
convert — простая и вместе с тем очень мощная функция. Ее мощь заключается в возможности задания множества параметров. Их полный перечень (76 штук!) можно найти в справке по функции convert. Многие из этих параметров очевидны с первого взгляда, поскольку повторяют наименования типов чисел, данных или функций. Например, опции binary, decimal, hex и octal преобразуют заданные числа в их двоичное, десятичное, шестнадцатеричное и восьмеричное представление. Параметр vector задает преобразование списка в вектор (напоминаем, что список и вектор — разные типы данных), а параметр matrix — в матрицу. Приведем примеры применения функции convert:
> convert(123,binary);
1111011
> convert([a,b.c,d],'+');
a + b + с + d
> f:=seq(x[i]An,i=l..4);
f-=x",x^,x".x^
>x:h'x': convert(sinh(x),exp);
X := X
2е "27
> convert(1.234567,fract1on);
50737
41097
> convert(l/7,float);
.1428571429
> convert(sin(I*x),exp);
> convert(sinh(x),exp);
2е "27
> convert(arcslnh(x),In);
ln(x + Jf + 1 )
> convert(12345,list);
[12345]
> convert(binomial(m.n).factorial):
川(m - zz)!
> convert([[1,2],[3,4],[5,6J],tabie);
table([(l,l)=l,(2, 1) = 3, (2, 2) = 4, (3,1) = 5, (3,2) = 6, (1,2) = 2])
> convert(-Pi.signum); -л
> s:=taylor(s1n(x),x,8):
> р:«convert(s.polynom);
convert(p,float);
x -.1666666667 x3 + .008333333333/- .0001984126984 x7
f;-(xA4+x)/(xA2-l);
> convert(f.parfrac,x);
s:=series(f,x.5);
s := — x — x^ —工4 + O(x^)
convert(s.polynom);# Удаление члена ряда, описывающего погрешность
Из этих примеров (их список читатель может пополнить самостоятельно) следует. что функция преобразования convert является одно11 из самых мощных функций Maple. С ее помощью можно получить множество различных форм одного и того же выражения.
Преобразование выражений
Еще одним мощным средством преобразования выражений является функция combine. Она обеспечивает объединение показателей степенных функций и преобразование тригонометрических и некоторых иных функций. Эта функция может записываться в трех формах:
comblne(f) combine(f. n)
combine(f. n, optl. opt2, ...)
Здесь f — любое выражение, множество или список выражений; п — имя, список или множество имен; optl, opt2, ... — имена параметров. Во втором аргументе можно использовать следующие функции:
@@absarctanconjugateexp
Inpiecewisepolylogpowerproduct
Psradicalrangesignumtrig
Примеры применения функции combine представлены ниже:
combi ne(exp(2*х)А2,exp);
е
combine(2*sin(x)A2+2*cos(x)A2);
2
combine(sin(x)*cos(x));
1
/ sm(2x)
combine(Int(х,х=а..b)-Int(xA2,x«a.,b));
+ x ах
Эти примеры далеко не исчерпывают возможностей функции 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);
whattypeta^b);
whattype( 1+2+3M);
С помощью функции type(object.t) можно выяснить, относится ли указанный объект к соответствующему типу t, например:
type(2+3,integer):
true
type(sin(x),function);
true
type(hello,string);
false
type("hello",string):
true
type(1/3,fraction);
true
При успешном соответствии типа объекта указанному (второй параметр) функция type возвращает логическое значение true, в противном случае — false.
Для более детального анализа объектов может использоваться функция hastype(expr, t), где ехрг — любое выражение nt— наименование типа подобъекта. Эта функция возвращает лошческое значение 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,х) — возвращает логическое значение 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(%) не содержится, но Maple-язык учитывает соответствие 3 - 1 = 2, и потому функция has в последнем примере возвращает true.
Подстановки
Функциональные преобразования подвыражений
Нередко бывает необходимо заменить некоторое подвыражение в заданном выражении на функцию от этого подвыражения. Для этого можно воспользоваться функцией applyop:
О applyop(f, i, е) — применяет функцию f к %му подвыражению выражения е;
О applyop(f, 1, е, „., хк,…)一применяет функцию f к z-му подвыражению выражения е с передачей необязательных дополнительных аргументов хк.
Ниже даны примеры применения этой функции:
restart;applуор(sin,2,а+х); а + sin(x)
applyop(f,l(g,2(a+b);
f(g, 2, 〃 + b)
叩p1ycp(f,{2,3},a+x+b);
a + Rx) + f(b)
叩p1ycp(f,{l,2},x/y+z);
р:«Г2-2*у-3;
P :=y2-2y-3
applyop(f,2.p); y2 + f(-2y)-3 > applyop(f.{2.3}.p); y2 + f(-2y) + f(-3) > 叩p1ycp(f,{[2JL3},p); y2 + f(-2)y+f(-3) > 叩p1ycp(abs,{[2,l],3},p); f+2y+3
Функциональные преобразования элементов списков
Еще две функции, реализующие операции подстановки, указаны ниже: map(fen, expr, arg2 argn) map2(fcn, argl, expr, arg3 argn)
Здесь fen — процедура или имя, ехрг — любое выражение, argl — необязательные дополнительные аргументы для fen. Первая из этих функций позволяет приложить fen к операндам выражения ехрг. Приведенные далее примеры иллюстрируют использование функции тар.
f:«х->х*2;
/:= X Т f
m叩(f,[L2,3]);
[1,4,9]
m叩(f,[x,y,z]): z2]
map(x->x*n([lt2(3]);
L:<1(2(3(4];
£:=[L2.3,4]
m叩(proc(x,y) x*y+l end,[1,2,3,4].2);
[3,5, 7, 9]
map(int,L,x); [x, 2x, 3 4
m叩(F」L2,3],x,y,z);
[F(l,x,y,z), F(2,几乂 z), F(3,x,y,z)]
Из этих примеров нетрудно заметить, что если второй параметр функции шар — список, то функция (первый параметр) прикладывается к каждому элементу списка, так что возвращается также список. Из последнего примера видно, что если за вторым параметром идет перечисление аргументов, то они включаются в список параметров функции.
Функция шар2 отличается иным расположением параметров. Ее действие наглядно поясняют следующие примеры;
m叩2(w,g,{a,b,c});
{w(g,〃), w(g, b), w(g, c)}
m叩2(op,L[a+b+i ,c+d+he+f+j]);
[〃,c,
m叩2(op,3, [a+b+i, c+d+k.e+f+j]):
n^p2(diff,[sin(x),cos(x),xAn],x):
cos(x), -sin(x), —
Подстановки с помощью функций add, mul и seq
Заметим, что операции, подобные описанным выше, Maple 7 реализует и с рядом других функций. Ограничимся примерами на подстановки с помощью функций сложения add, умножения mul и создания последовательностей seq:
add(ifi«[a,bfc]);
a + b + c
add(i^2,>[a,b.c]);
〃2 + "十 М
add(i*2.i«[l,2.3]);
14
mul (x-i, 20. ,4):
х(х-1)(х-2)(х-3)(х-4)
mul(x*i,is0..4):
х10
seq(w(i),k{a,b,c}):
w(〃), w(b), w(c)
> seq(w(x,y(z)J«{l(2(3}):
w(x, M z), w(x, y, z), w(x, 乂 z)
> seq(int(xAi(x).iK{1.2(3,4});
Подстановки с помощью функций subs и subsop
Подстановки в общем случае служат для замены одной части выражения на другую. Частными видами подстановок являются такие виды операции, как замена одной переменной на другую или замена символьного значения переменной ее численным значением. Основные операции подстановки выполняют следующие функции:
О subs(x=a,e) — в выражении е заменяет подвыражение х на подвыражение а;
О subs(sl,…,sn,e) — в выражении е заменяет одни подвыражения на другие, выбирая их из списков si, sn вида х=а;
О subsop(eql, eq2 eqi, ...feqn, e) — в выражении e заменяет указанные в eqi операнды другими, указанными в правой части равенств eqi вида ni=ei, где ni — номер операнда, ei — выражение для замены.
Все эти функции возвращают измененное после подстановки выражение. Ниже показаны примеры применения функций подстановок:
subs(a=b,b入2-2*a*b-b入2);
-2
subs(a=2,Ь=1,ЬЛ2-2*a*b-b〃2);'
-4
subs(c=a-b,(aA2•2*a*tH-b"2)/c);
a2 -lab + b2 a — b
> normal(%); a — b
subs(a=x,b!!By,c=z,[a,b.c]);
subs({x=y,尸x},[x,y]);
subs(a=sin(x),b!a=cos(x),a*2+b*b);
sin(x)2 + cos(x)2
simplify(为"
1:
subsop(l=x,a+tH-c);
x + b + c
subscp(2=x,a+gc);
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)
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 -1 f z - x=2};
eqs := {x+y + z = 6,z~x = 2, ^ = z- 1 }
res:=solve(eqs,{x,yfz});
res := {z = -2,у = 12,x = ~4}, {y = 2,z = 3,x= 1}
> subs(res,eqs);
{2 = 2, 6 = 6, -3 = -3 }
Здесь задана система из трех нелинейных уравнений, которая затем решена функцией solve. В конце примера с помощью функции подстановки выполнена проверка правильности решения. Оно верно, поскольку у всех уравнений значение левой части совпадает со значением правой части.
Функции сортировки и селекции
Сортировка и селекция выражений широко используются в практике символьных преобразований. Для выполнения сортировки служит функция sort, применяемая в одной из следующих форм:
sort(L)sort(L)sort(L, F)sort(L, F)sort(А)sort(А)sort(A. V)sort(A. V)
sort(L)
sort(L)
sort(L, F)
sort(L, F)
sort(А)
sort(А)
sort(A. V)
sort(A. V)
Здесь L — список сортируемых значений, F — необязательная булева процедура с двумя аргументами, А — алгебраическое выражение, V — необязательные дополнительные переменные.
> restart;
> sort([y,s,f,a,c,i]);t([2,5-1.7,3,8]);
[〃,С,/£, 5,у]
t([2, 5, 1,7, 3,8])
> sort([y,s,ffa,c.i]);
[〃,с/ i,s,y]
> sort([у,s,f.а,с.i]J exorder);
[〃,с/ z; s,y]
> sort(l+x*4-x*2+x);
Y - X? + X + 1
> sort(y*x"2+x*y<-y-x"2+x"4*y"5);
Y y5 + #2 у _ 工2 + x у + у
> sort((y<-z+x)/(y'X-z),{x,y});
x+y + z
т + у _ z
> names:=["Peter","Anna","Vladimir","Ivan"];
names := ['Teter; "Anna", nVladimir,; ''Ivan'!
> sort(names);
[nAnnan, nIvan'; "Peter1; nVladimirn]
> 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, е, bl bn)
Как бы обратной ей по действию служит функция remove, устраняющая заданные выражения: remove(f, е) remove(f, е, blbn)
В этих функциях f — процедура, возвращающая логическое значение, е — список, множество, сумма, произведение или функция, bl, ...» bn — необязательные дополнительные аргументы.
Далее даны примеры применения этих фунедий.
integers 尸[$10..30]:
seiectdsprime,integers);
[11, 13, 17, 19, 23,29]
remove(1sprime f1ntegers);1
[10, 12, 14, 15, 16, 18,20,21,22, 24, 25,26, 27,28,3 0]
f:=2*ln(a*x)*exp(x)*ln(y):
/;= 2 ln(6tx) ex ln(y)
se1ect(has,f,x);
ln(6tx)eA
remove(has,f,x);
2 ln(y)
f;=1ndets(f):
/:= {a,x,y, e\ ln(y), ln(ax)}
select(type.f-name);
{〃,xj}
remove(type,f-name);
{e, ln(y), ln(6tx)}
f;=2*ln(x)*(y+l);
/:-21n(x)(y+ 1)
c:=remcve(has,f,x);
c;=2y + 2
f/c;
ln(x)(y + 1)
~2y+ 2~
se1ect(has,f,x);
ln(x)
Maple имеет также оператор селекции А[ехрг]. Его действие поясняют следующие примеры:
restart;
S:=[a+b*c,x"2,c.l.2f3];
S := [а + b с, х2, с, 1, 2, 3]
S[l];
a + bc
SE1..2];
[а + b с, х2]
SE-2..-1];
[2,3]
S[3・.3];
S[3..2];
[]
S[4..6]:
[1,2,3]
X尸s□:
X'-a + bc, х2, с, 1, 2, 3
X[l];
а + be
Х[1,,2];
а + b с, х2
ХЕ-2.,-1];
2,3
S:={a,b.c};
S := {〃,仇 с}
S[l];
а
S[3];
S口-2];
{〃,b}
SE-2,,-1]; {аe}
Упрощение выражений
Функция simplify — одна из самых мощных в системах символьной математики. Она предназначена для упрощения математических выражений, «Все гениальное просто», — любим мы повторять, хотя это далеко не всегда так. Тем не менее стремление представить многие математические выражения в наиболее простом виде поощряется в большинстве вычислений и нередко составляет их цель.
В системе Maple 7 функция упрощения используется в следующем виде:
О simplify(expr) — возвращает упрощенное выражение ехрг или повторяет его, если упрощение в рамках правил Maple 7 невозможно;
О simplify(expr, nl, п2, ...) — возвращает упрощенное выражение ехрг с учетом параметров с именами nl, п2,…(в том числе заданных списком или множеством);
О simpl i fy(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, BesselJ, BesselK, BesselY, Ei, GAMMA, RootOf, LambertW, di log, exp, In, sqrt, polylog, pg, pochhammer, trig (для всех тригонометрических функций), hypergeom, radical, power и atsign (для операторов). Полезен также параметр symbolic, явно указывающий на проведение символьных преобразований.
Возможно также применение функции simplify в форме simplify[<name>], где <паше> — одно из следующих указаний: atsign, GAMMA, hypergeom, power, radical, RootOf, sqrt, trig.
Ниже даны примеры применения функции simplify:
simplify(4*(l/2)+3);
5
5:叩1讦у(口人y)人2+3人(3)户*2г);
(p)‘+27
simplify(sin(x)'2+cos(x)'2,trig):
1
e:=cos(x)*5+sin(x)*4+2*cos(x)*2-2*sin(x)*2-cos(2*x);;
e := cos(x)' + sin(x)4 + 2 cos(x)2 一 2 sin(x)2 - cos(2x)
simplify(e);
COS(X)5 + COS(X)4
simplify(GAMMA(n+4)/GAMMA(n).GAMMA): n (n + 1) (n + 2) (n + 3)
r:=RootOf(хЛ 2 -2=0 f x):
simplify(r*2.RootOf); 2
simplifyU/LRootOf);
^RootOf(_Z2-2)
simpl'ify(ln(x*y)f power symbolic); in(x)+ m(y)
e尸(:5*M2*a『(l/2);
e := J-5 廿 a
> simplify(e,radical):
simplify(e,radical.symbolic);
ь
simplify(GAMMA(n+l)/n!)[GAMMA]:
Действие функции simplify существенно зависит от областей определения переменных, В следующем примере упрощение выражения не произошло, поскольку результат этой операции неоднозначен:
restart:
simplify(sqrt(x*4*y*2)):
Однако, определив переменные как реальные или положительные, можно легко добиться желаемого упрощения:
simplify(sqrt(x*4*y*2),assume=pcsitive):
simplify(sqrt(хЛ4*уЛ2),assume=real);
Читателю настоятельно рекомендуется просмотреть вес разделы справочной системы, относящиеся к примерам применения функции simplify (в том числе с другими функциями символьных преобразований), поскольку их число очень велико и эти примеры наглядно демонстрируют необходимость правильного применения разнообразных параметров для придания упрощениям нужного характера. Если функция simplify не способна выполнить упрощение выражения ехрг, то она просто его повторяет. Это сигнал к применению опций.
Расширение выражений
Даже в жизни мы говорим: «не все так просто》. Порою упрощенное выражение скрывает его особенности, знание которых является желательным. Функция expand «расширяет» выражение ехрг и записывается в виде:
expand(expr. exprl, ехрг2 ехргп)
где ехрг — расширяемое выражение, exprl, ехрг2, ..., ехргп — необязательные подвыражения —опции. Имеется также инертная форма данной функции — Expand(ехрг). Кроме того, возможно применение операторной конструкции frontend(expans,[ехрг]). Функция 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, BesselJ, BesselY, Bessel I, BesselK, AngerJ, Beta, Hankel, Kelvin,
Struve, WeberE и функция piecewise. С помощью дополнительных аргументов exprl, ехрг2, „., ехргп можно задать расширение отдельных фрагментов в ехрг. Примеры применения функции expand приведены ниже:
> expand((x+2)*(x+3)*(x+4)); ? + 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)]);
丁2一昧2…tan(x) .
1 - tan(x)2
> expand((a+d)*(tH-d)*(c+d));
abc + abd + adc + ad' + dbc + d'b + d'c + d^
> expand((x+l)*(y+l));
xy+Х+У+1
> expand((y+l),(x+l));
У 1
> expand((x+l)*(yi-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 + b3
Факторизация выражений
Разложение целых и рациональных чисел
Для разложения целых или рациональных чисел на множители в виде простых чисел служит функция:
ifactor(n) или ifactor(n,method)
где п — число, method — параметр, задающий метод разложения. Другая библиотечная функция, ifactorsCn), возвращает результат разложения в форме вложенных списков:
ifactor(123456789);
(ЗУ (3803) (3607)
ifactor(30!);
.(2产(3)14(5)7(7)4(11)2(13)2(17)(19)(23) (29)
> ifactor(12l/201);
(2)8 (3)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,К)Factors,К)
Здесь а — полином с несколькими переменными, К — необязательное алгебраическое расширение. Для получения результата от инертной формы функции факторизации надо использовать функции вычисления evala или evalgf. Главная цель факторизации — это нахождение максимального числа независимых сомножителей выражения, линейных по заданным переменным с коэффициентами наиболее простой формы. Ниже представлены примеры применения функции factor:
> factor(aA2+2*a*b+bA2);
(4+ 6)2
> factor(aA2~2*a*b-bA2); а? - 2 a b -总
> p:=expand((x~l)*(x~2)*(x-3)*(x~4)); p;=j?一 Юх3 + 35х2-50х + 24
> factor(p);
(x-l)(x-2)(x-3)(x-4)
> factor(xA5-2.2A(l/5));
(x-2(%(x4+x32")+f 产)+ x 产)+ 2 ⑷ 5))
alias(al pha^ootOfCx^-S)); а
factor(xA2~2,alpha);
(х + а)(х-а)
factor(xA3-y*3);
(x-y),+耳y+y2)
>з3"口人3-h3,(♦2)人(1/2));
(x-^) (х2 + х^+У)
factor(xA3.r3,(-3)A(l/2));
;(2X+y-y值)(2x+y+У产)8-y)
factcNx入3-3,complex);
(x + .7211247852 + 1,249024766 /) (x + ,7211247852 - 1,249024766 I)
(% - 1.442249570)
Комплектование по степеням
Еще одна функция общего назначения — collect — служит для комплектования выражения ехрг по степеням указанного фрагмента х (в том числе множества либо списка). Она задается в одной из следующих форм: collected, х) collected, X, form, func)
Во второй форме этой функции дополнительно задаются параметры form (форма) и func (функция или процедура). Параметр form может иметь два значения: recursive (рекурсивная форма) и distributed (дистрибутивная форма). Параметр func позволяет задать имя функции, по которой будет идти комплектование ехрг. Примеры применения функции collect представлены ниже:
col 1ect(х+хА3-2*х,х);
+х3
col 1ect(x+2*yA3+x+3+xA3*y, recursive,х):
X(2 工 + 2Уз + з + х3y)
col 1ect(х+2*у*3+х+3+хА3*у,distributive.y);
y(2x + 2貝 + 3 +x3y)
f:=a*exp(x)~exp(x)*x~x;
a qx -qxx-x
collect(f,exp(x)); (6t-x)ex-x
> g:=int(x*(exp(x)+exp(~x)),x);
g :=е х —
> collect(g,exp(x));
(x-l)e^ + ——
p: =x*y<-a*x*y<-y*x*'2 - a*y*x*'2+x+a*x;
p:=xy + axy-^yx2 —ayx2 + x + ax
> col 1 ect (p, [x, y], recurs Ive);
(1 - 0)У%2 + ((1 +〃)y + 1 +〃)%
> col 1ect(р,[х,у],distri buted):
(1 +〃)х + (1 +〃)ху + (1 - 〃)yf
> f:ea*'3*x*'2?x+a*'3+a;
广=病工2 一工+ "3 +"
collect(f.x);
a3 x2 ~x + a3 + a
collect(f,x,factor);
a3 x2 - x + a (a2 + 1)
p:«y/x+2*z/x+xA(1/3)-y*xA(1/3);
у 2z (1/3)(1/3)
p尸^■ ++ x ~yx
collect(p.x);
(1/3) y + 2z
(i)x+-^-
Программирование символьных операций
Реализация итераций Ньютона в символьном виде
Найти достаточно простую и наглядную задачу, решение которой отсутствует в системе Maple 7, не очень просто. Поэтому для демонстрации решения задачи с применением аналитических методов воспользуемся примером, ставшим классическим, — реализуем итерационный метод Ньютона при решении нелинейного уравнения вида /(х) = 0.
Как известно, метод Ньютона сводится к итерационным вычислениям по следующей формуле:
х,+1 = х, + f(xj/f'(x).
Реализующая его процедура выглядит довольно просто:
restart:
NI:=proc(exprfx)
local iter;
iter严x-ехрг/di ff(expr,x);
un叩p1y(iter,x)
end;
NI := proc (expr, x) local iter; iter := x - expr/diff(expr, x); unapply( iter, x) end proc
Для получения итерационной формулы в аналитическом виде здесь используется функция unapply. Теперь, если задать решаемое уравнение, то можно получить искомое аналитическое выражение:
exprxsiMx)人2-0,5;
ехрг := sin(x)2- .5
F:-NI(expr,x):
「1 sin(x)2- ,5
‘2 sin(x)cos(x)
Далее, задав начальное приближение для % в виде % = х0, можно получить результаты вычислений для ряда итераций:
> х0:=0.2:
х0:=.2
to 8 do xO:=F(xO):od:
хО := 1.38261 1210
xf?:= .117460944
хО := 2.206529505
хО := 2.360830634
хО := 2.35619435 7
хО := 2.356194490
хО := 2.356194490
хО := 2.3 56194490
Нетрудно заметить, что, испытав скачок в начале решения, значения х довольно быстро сходятся к конечному результату, дающему корень заданной функции. Последние три итерации дают одно и то же значение х Заметим, что этот метод дает только одно решение, даже если корней несколько. Вычислить другие корни в таком случае можно, изменив начальное условие.
Можно попробовать с помощью полученной процедуры получить решение и для другой функции:
ехрг:=1п(хА2)-0.5:
ехрг := kiQj) - .5
F:=NI(expr,x):
F:=x—>х-^(ln(x2) - .5)х
х0:=0.2: хО := .2
to 8 do xO:=F(xO):od:
工0:= .5718875825
xO 尸 1.034437603
xO ;= 1.258023119
xO := 1.283760340
xO := 1.284025389
xO 尸 1284025417
xO 尸 1,284025416
xO 尸 1,284025417
Здесь итерационная формула имеет (и вполне естественно) уже другой вид, но сходимость к корню также обеспечивается за несколько итераций.
Возможна и иная форма задания итерационной процедуры с применением оператора дифференцирования D и заданием исходной функции также в виде процедуры:
MI:=proc(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);
c /- cos(x)
SI := (x^x);一7~-
X —> 1 + sin(x)
х0:=0.1:
хО := .1
to 6 do xO:=SI(xO) od: хО := .9137633858
хО :=.7446642419
хО :=.7390919660
хО :=.7390851333
хО := .73908513 32
xO := .7390851332
Вообще говоря, в программных процедурах можно использовать любые операторы и функции, присущие Maple-языку, в том числе и те, которые реализуют символьные вычисления. Это открывает широкий простор для разработки новых процедур и функций, обеспечивающих выполнение символьных операций.
Вычисление интеграла по известной формуле
Рассмотрим следующий пример:
Int(eAx*xAn,x)=int(eAx*xAn,x);
xn dx = -{- \ )С я) 1п(е)С 1 я)(хя (-1 )я 1п(е)я п Г(л) (-х 1п(е))С "'
-Xя (-1)" 1п(е)” е"侬吵-X” (-1)" 1п(е)” п (г 1п(е))"")Г(л, -х 1п(е)))
Прежние версии системы Maple не брали этот интеграл, поскольку он не имеет аналитического представления через обычные функции. Maple 7 блестяще вычисляет этот «крепкий орешек», но полученное выражение довольно сложно.
Из математики известно, что такой интеграл может быть представлен в следующем виде:
Используя эту формулу, мы можем создать простую процедуру для численного и аналитического вычисления данного интеграла:
IntExpMonomial :=ргос(п::anything,x::паше)
local 1:
n!*exp(x)*sum(((-l)*(n-i)*xAi)/i!,i«0..n):
end:
IntExpMonomial := proc (n'.'.anything^ x^name) local i;
7Hxexp(x)xsum((-l )Л(л - z)xrAz/z!, / = 0 .. /;) end proc
Проверим ее в работе:
IntExpMonomial (З.х):
6 ех^-1 + х-^х2 + ^х3^
IntExpMonomial (5tx);
120 е[т+х-М + "з_排4+ 击炉 > IntExpMonomial(n,x):
疝 e((-l)"eE
J" "((%)㈠ F е(т‘ Г(2 +k) - (к + 1) (-x)( 1 п)e( x)Г(л + 1,-x))]
Результат в аналитическом виде довольно прост для данного интеграла с конкретным значением п. Более того, мы получили несколько иной результат и для п в общем случае. Но точен ли он? Для ответа на этот вопрос продифференцируем полученное выражение:
diff(%,x);
м e((-1)"产
5+1)//(Т-“)(-Х)1、/1 1、/、(Ti) (-Х)、
,X ((-х) е . Г(2+〃)-5 + 1)(-х) е 「5+1,-х)) х
5+1)!+ 力• е
|^-(-е(*
J"*" 5 + 1) ((-х)(-1-п)е(*Г(2 + 孔)-(孔 + 1) (r)( D е( п Г(7? + 1, -х))
+x5+1)!
(/»+i) (-Х)(-1 — л)е Г(2+〃)、㈠(г)、
+ х(-%) е 1(2+//)
(孔 + 1) (r)( ' "' (-1 一 孔)е( *' F(孔 + 1, -X)
+ (я + 1) (-х)( '+ 1, г) 一 (胃 + 1) (-%)( 1 “” (-%)" е'}(胃 + 1)!
Результат дифференцирования выглядит куда сложнее, чем вычисленный интеграл. Однако с помощью функции simplify он упрощается к подынтегральной функции:
simplify(^);
Это говорит о том, что задача вычисления заданного интеграла в аналитической форме действительно решена. А что касается громоздкости результатов, так ведь системы, подобные Maple 7, для того и созданы, чтобы облегчить нам работу с громоздкими вычислениями — в том числе аналитическими.
Вложенные процедуры и интегрирование по частям
Теперь мы подошли к важному моменту, о котором читатель наверняка уже давно догадался — в составляемых пользователем процедурах можно использовать ранее составленные им (или кем-то еще) другие процедуры! Таким образом, Maple-язык позволяет реализовать процедуры, вложенные друг в друга.
Для иллюстрации применения вложенных процедур рассмот^м операцию интегрирования по частям. Пусть нам надо вычислить интеграл:
J p(x)exdx.
где р(х) — выражение, представляющее полином.
Приведенный ниже пример подготовлен в реализации Maple 7 [38]. Вначале подготовим процедуру IntExpMonomialR, реализующую вычисление уже рассмотренного ранее интеграла, но рекурсивным способом:
IntExpMonomialR:вргос(n::nonnegint,x::name)
local 1 :if『0 then RETURN(exp(x)) fi;
x*n*exp(x) -n*IntExpMonom1 alR(n-l.x);
end;
IntExpMonomialR := proc (n::nonnegint, х::пате) local i;
if л = 0 then RETURN( exp(x)) end if;
хЛяхехр(х) - nxIntExpMonomialR( л 一 1, л*)
end proc
Проверим ее в работе:
IntExpMonomi al R(4,х);
X4 er - 4 .de" + 12 X2 ev-24x e* + 24 e"
collected.exp(x)):
(x4-4x3 + 12x2 - 24x + 24)e*
Теперь составим процедуру для вычисления по частям нашего интеграла:
IntExpPolynomial i^procCp: :polynom,x::name) local 1.result;
# WARNING: degree(O.x) now returns -infinity
resul t: =add (coeff (p, x, 1 )*1 ntExpMonomi al R( 1 ,x) .1=0. .degree(p.x)):
collect(result.exp(x)):
end;
IntExpPolynomial := proc (pv.polynom, xwname)
local i, result^
result := add(coeff(p, x, z)xIntExpMonomialR(z, x), i = 0 .. degree(p, x)); collect( result, exp(x))
end proc
В этой процедуре имеется обращение к ранее составленной процедуре IntExpMonomialR. Обратите внимание на то, что в процедуре введено предупреждение об определенных проблемах, связанных с использованием функции degree (сообщение начинается с символов ##). Тем не менее процедура работает, в чем убеждают по крайней мере следующие примеры:
р-(хА2+1)*(1-3*х):
р :=(х2+ 1)(1 - Зх)
expand(p);
x2*-3x3 + 1 - 3 X
int(p*exp(x),x);
Юх2 ex-23xex + 24 ex - 3x3 ex
IntExpPolynomial (p,x);
(10x2 -23 x + 24-3x3)ex
В заключение остается отметить, что данный пример в Maple V R4 дает неточный результат, хотя никаких сообщений об ошибках не выводится.
Что нового мы узнали?
В этом уроке мы научились:
О Осуществлять основные операции с выражениями.
О Выполнять приложения и подстановки.
О Упрощать п расширять выражения.
О Осуществлять факторизацию выражений.
О Выполнять комплектование выражений по степеням.
О Программировать некоторые символьные операции.
ЯГурокЯГурокТиповые средствапостроения графиков
ЯГурок
ЯГурок
Основные возможности построения двумерных графиков
Основная функция построениядвумерных графиков — plot
Задание координатных системдвумерных графиков
Управление цветом и стилемдвумерных графиков
Основные типы двумерных графиков
Трехмерные графики
Построение поверхностей
Быстрое построение графиков
Специальные приемы построения трехмерных графиков
Структуры двумерной и трехмерной графики
Введение в построение двумерных графиков
Основные возможности двумерной графики
Maple 7 реализует все мыслимые (и даже «немыслимые») варианты математических графиков. Строятся как графики простых функций в декартовой и полярной системах координат, так и графики, показывающие реалистические образы сложных, пересекающихся в пространстве фигур с их функциональной окраской. Возможны наглядные графические иллюстрации решений самых разнообразных уравнений, включая системы дифференцнальных уравнений.
В само ядро Maple 7 встроено ограниченное число функций построения графиков. Это прежде всего функция для построения двумерных графиков plot и функция для построения трехмерных графиков plot3d. Они позволяют строить графики наиболее распространенных типов. Для построения специальных графиков (например, векторных полей градиентов, решения дифференциальных уравнений, построения фазовых портретов и т. д.) в пакеты системы Maple 7 включено большое число различных графических функций. Для их вызова необходимы соответствующие указания.
Вообще говоря, средства для построения графиков в большинстве языков программирования принято считать графическими процедурами, или операторами. Однако мы сохраним за ними наименование функций, в силу двух принципиально важных свойств:
О графические средства Maple V возвращают некоторые графические объекты, которые размещаются в окне документа — в строке вывода или в отдельном графическом объекте;
О эти объекты можно использовать в качестве значений переменных, то есть переменным можно присваивать значения графических объектов и выполнять над ними соответствующие операции (например, с помощью функции show выводить на экран несколько графиков).
Графические функции заданы таким образом, что обеспечивают построение типовых графиков без какой-либо особой подготовки. Для этого нужно лишь указать функцию, график которой строится, и пределы изменения независимых переменных. Однако с помощью дополнительных необязательных параметров можно существенно изменить вид графиков — например, настроить стиль и цвет линий, вывести титульную надпись, изменить вид координатных осей и т. д.
Основная функция построения двумерных графиков plot
В математике широко используются зависимости вида /(х) или г/(х). Их графики строятся на плоскости в виде ряда точек 弘(м), обычно соединяемых отрезками прямых. Таким образом, используется кусочно-линейная интерполяция двумерных графиков. Если число точек графика достаточно велико (десятки пли сотни), то приближенность построения не очень заметна.
Для построения двумерных графиков служит функция plot. Она задается в виде: plot(f. h. v) , о)
где f — визуализируемая функция (или функции), h — переменная с указанием области ее изменения, v — необязательная переменная с указанием области изменения, о — параметр или набор параметров, задающих стиль построения графика (толщину и цвет кривых, тип кривых, метки на них и т. д.).
Самыми простыми формами задания этой функции являются следующие:
О plot(f ,xmin. .хшах) — построение графика функции /, заданной только своим именем;
О plot(f(x) ,x=xmin. .хшах) — построение графика фулкцип /(х).
Диапазон йзмснения независимой переменной х задается как xmin. .хшах, где xmin и хшах — минимальное п максимальное значение х, .. (две точки) — составной символ, указывающий на изменение независимой неремсшюй. Разумеется, имя х здесь дано условно — независимая переменная может иметь любое допустимое имя.
Помимо построения самой кривой у(х) или /(х) необходимо задать ряд других свойств графиков, например вывод координатных осей, тип и цвет линий графика и др. Это достигается применением параметров графика — специальных указаний для Maple. Графики обычно (хотя и не всегда) строятся сразу и достаточно приемлемом виде. Это достигается тем, что многие параметры задаются по умолчанию н пользователь, по крайней мере начинающий, может о них ничего не знать. Однако язык общения и программирования Maple 7 позволяет задавать управляющие параметры и в явном виде.
Для двумерного графика возможны следующие параметры:
О adaptive — включение адаптивного алгоритма построения графиков (детали см. ниже);
О axes — вывод различных типов координат (axes==NORMAL — обычные оси, выводятся по умолчанию, axes=BOXES — график заключается в рамку с осями- шкалами, axes=FRAME — оси в виде перекрещенных линий, axes=NONE — оси не выводятся);
О .axesfont — задание шрифтов для подписи делений на координатных осях (см. также параметр font);
О color — задает цвет кривых (см. далее);
О coords — задание типа координатной системы (см. далее);
О discont — задает построение непрерывного графика (значения true пли false);
О filled — при filled=true задает окраску цветом, заданным параметром color, для области, ограниченной построенной линией н горнзоитальной координатной ОСЬЮ X;
О font — задание шрифта в виде [семейство, стиль, размер];
О labels 一 задание надписей по координатным осям в виде [X, Y], где X н Y — надписи по осям х и у графика;
О label directions — задает направление надписей но осям [X, Y], где X и Y может иметь строковые значения HORISONTAL (горизонтально) и VERTICAL (вертикально);
О label font — задает тип шрифта подписей (см. font);
О legend — задает вывод легенды (обозначения кривых);
О linestyle — задание стиля лшшН (1 — сплошная, 2 — точками, 3 — пунктиром и 4 — штрихпунктцром);
О numpoints — задает минимальное количество точек па графике (по умолчанию numpoints=49);
Q resolutions — задает горизонтальное разрешение устройства вывода (по умол* чапмю resolutions=200, параметр используется при отключенном адаптивном методе построения графиков);
О sample — задает список параметров для предварительного представления кривых;
О scaling — задает масштаб графика: CONSTRAINED (сжатмй) или UNCONSTRAINED (несжатый — по умолчанию);
О size — задает размер шрифта в пунктах;
О style 一 задает стиль построения графика (POINT 一 точечный, LINE — линиями);
О symbol — задает вид символа для точек графика (возможны значения BOX — прямоугольник, CROSS — крест, CIRCLE — окружность, POINT — точка, DIAMOND — ромб);
О symbolsize — установка размеров символов для точек графика (в пунктах, по умолчанию 10);
О title — задает построение заголовка графика (title="string", где string — строка);
О titlefont — определяет шрифт для заголовка (см. font);
О thickness — определяет толщину линий графиков (0, 1, 2, 3, значение по умолчанию —0);
О view=[A, В] — определяет максимальные и минимальные координаты, в пределах которых график будет отображаться на экране, А = [xmin. .xmax], B=[ymin. .ymax] (по умолчанию отображается вся кривая);
О xtickmarks — задает минимальное число отметок по оси х;
О ytlckmarks — задает минимальное число отметок по оси у.
В основном задание параметров особых трудностей не вызывает, за исключением задания титульной надписи с выбором шрифтов по умолчанию 一 в этом случае не всегда поддерживается вывод символов кириллицы (русского языка). Подбором подходящего шрифта эту проблему удается решить. Модификация графиков с помощью управляющих параметров подробно рассматривается ниже. Специальный параметр adaptive задает работу специального адаптивного алгоритма для построения графиков иаилучшего вида. При этом Maple автоматически учитывает кривизну изменения графика и увеличивает число отрезков прямых в тех частях графиков, где их ход заметно отличается от интерполиру- юи^ей прямой. При задании adaptive=false адаптивный алгоритм построения графиков отключается, а при adaptive-true включается (значение по умолчанию).
Задание координатных систем двумерных графиков
В версии Maple 7 параметр coords задает 15 типов координатных систем для двумерных графиков. По умолчанию используется прямоугольная (декартова) система координат (coords-cartesian). При использовашш других координатных систем координаты точек для них (〃,и) преобразуются в координаты (л; у) как (w, и) --> (х, г/). Ниже приведены наименования систем координат (значений параметра coords) и соответствующие формулы преобразования,
bipolar:
х = s-inr)(v)/(cosh(v)-cosfu)) у = sw(u)/(cosh(v)-cos(u)) cardioid;
х = l/2*(「2-v 人 2)/(/2+v 人 2)人 2
у = u*v/(iT2+L2)人 2 cartesian:
X = u
У = V cassinian:
x = a*2A(1/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)A(l/2)宀
exp(u)*cos(v)+l)A(l/2)
у = a*2A( 1/2)/2*((exp(2*u)+2*exp(u)*cos1/2) -
exp(u)*cos(v)-l)A(l/2)] elliptic:'
x = cosh(u)*cos(v) у = sinh(u)*sin(v) hyperbolic:
x =((/2+L2)人(l/2)+u广(l/2)
у = ((「2+v 人 2)人 Q/2)-u『(l/2) 1nvcassin1an:
x = d*2人(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)人(1/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) invelHptlc:'
x н a*cosh(u)*cos(v)/(cosh(u)*2-sin(v)*2)
у = a*sinh(u)*sln(v)/(cosh(u)'2-sin(v)A2) logarithmic:
x = d/P/1n(「2+「2)
у = 2*a/Pi*arctan(v/u)
logcosh:
x = d/Pi*1n(cosh(u)人2-sin(v)入2)
у = 2*a/Pi*arctdn(tanh(u)*taMY))
maxwell:
x = d/Pi*(u+l+exp(u)*cos(v)) у = a/P1*(v+exp(u)*sin(v))
parabolic:
x = (u人2-v人2)/2
polar:
X = u*cos(v) у = u*s】n(v)
rose:
x =((广 2+v 人 2)人(l/2Hu『(l/2)/(u 人 2+v 人 2)人&/2) у = ((G2+v 人 2)人(1/2AU 广(1/2У(и 人 2+v 人 2)气1/2)
tangent:
x = u/(lT2+v人2)
у = V/(广 2+v 人2)
Управление стилем и цветом линий двумерных графиков
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
yellow
Различные цветовые оттенки получаются благодаря использованию RGB-комбинаций базовых цветов: red — красный, gray — зеленый, blue — синий. Приведем перевод ряда других составных цветов: black — черный, white — белый, khaki — цвет «хаки», gold — золотистый, orange — оранжевый, violet — фиолетовый, yellow — желтый и т. д. Перевод цветов некоторых оттенков на русский
язык не всегда однозначен и потому не приводится. Средства управления стилем графиков дают возможность легко выделять различные кривые на одном рисунке, даже если для выделения не используются цвета.
Основные типы двумерных графиков
Графики одной функции
При построении графика одной функции она записывается в явном виде на месте шаблона f. Примеры построения графика одной функции представлены на рис. 11.1. Обратите внимание на то, что график функции sin(x)/x строится без характерного провала в точке х = 0, который наблюдается при построении графиков этой функции многими программами. Он связан с используемым в них правилом — функция задается равной нулю, если ее числитель равен нулю. Данная функция в этой точке дает устранимую неопределенность 0/0->1, что и учитывает графический процессор системы Maple 7.
При построении графиков одной функции могут быть введены описание диапазонов и различные параметры, например: для задания цвета кривой, толщины линии, которой строится график функции, и др. К примеру, запись в списке
параметров col ог=Ыаск задает вывод кривых черным цветом, а запись th1kness=2 задает во втором примере рис. 11.1 построение графика линией, удвоенной по сравнению с обычной толщиной. Кстати говоря, запись col or=red дает красный цвет, col ог=дгееп — зеленый цвет, col ог==Ыие — синий цвет и т. д. При чернобелой печати цвета представляются оттенками серого цвета.
Управление диапазоном изменения переменной и значения функции
Для управления отображаемой на графике области служит задание диапазонов принимаемых значений для переменной и функции. В ряде случаев их можно не применять, тогда Maple автоматически задает приемлемые диапазоны. Однако их явное указание позволяет управлять областью графика вручную. Иногда соответствующее задание диапазонов случайно или целенаправленно ведет к отсечению части графика — например, на рис. 11.2 в первом примере отсечена верхняя часть графика.
Рис. 11.2. Построение графиков функции с явным указанием масштаба
Правильный выбор диапазонов повышает представительность графиков функций. Рёкомевдуется вначале пробовать строить графики с автоматическим выбором диапазонов, а уже зате^ ука^?двать их вручную.
Графики функций в неограниченном диапазоне
Изредка встречаются графики функций /(х), которые надо построить при изменении значения х от нуля до бесконечности или даже от минус бесконечности до плюс бесконечности. Бесконечность в таких случаях задается как особая константа infinity. В этом случае переменной х, устремляющейся в бесконечность, откладывается значение arctan(x). Рисунок 11.2 (второй пример) иллюстрирует сказанное.
Графики функций с разрывами
Некоторые функции, например tan(x), имеют при определенных значениях х разрывы, причем случается, что значения функции в этом месте устремляются в бесконечность. Функция tan(a), к примеру, в точках разрывов устремляется к +? “ -?. Построение графиков таких функтш访 нередко дает плохо предсказуемые результаты. Графический процессор Maple 7 не всегда в состоянии определить оптимальный диапазон по оси ордннат, а график функции выглядит весьма непредставительно, если не сказать безобразно (рис. 11.3, первый пример).
Рис. 11.3. Построение графи ков функций с разрывами
Среди аргументов функции plot есть специальный параметр discont. Если задать его значение' равным 1;rue, то качество графиков существенно улучшается,
ПРИМЕЧАНИЕПРИМЕЧАНИЕсм. второй пример на рис. 11.3. Улучшение достигается разбиением графика на несколько участков, на которых функция непрерывна, и более тщательным контролем за отображаемым диапазоном. При discont^false данный параметр отключен и строятся обычные графики.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Следует отметить, что вид графика можно улучшить, просто задав диапазон по оси у (например, введя в параметры функции записьу=-1О..1О). При этом в точках разрыва могут появиться вертикальные линии. Иногда это бывает полезно.
Графики нескольких функций на одном рисунке
Важное значение имеет возможность построения на одном рисунке графиков нескольких функций. В простейшем случае (рис. 11.4, первый пример) для построения таких графиков достаточно перечислить нужные функции и установить для них общие интервалы изменения.
Рис. 11.4. Графики трех функций на одном рисункеРис. 11.4. Графики трех функций на одном рисунке
Рис. 11.4. Графики трех функций на одном рисунке
Рис. 11.4. Графики трех функций на одном рисунке
Обычно графики разных функций автоматически строятся разными цветами. Но это не всегда удовлетворяет пользователя 丁 например, при распечатке графиков монохромным принтером некоторые кривые могут выглядеть слишком
блеклыми или даже не пропечататься вообще. Используя списки параметров color (цвет линий) и style (стиль линий), можно добиться выразительного выделения кривых — это показывает второй пример на рис. 11.4 для случая, когда линии графиков выделяются стилем. Однако если кривые задаются разным цветом, то при черно-белой печати они могут перестать различаться. *
На рис. 11.5 показан еще один пример такого рода. Здесь построен график функции sin(x)/x и график ее полиномиальной аппроксимации. Она выполняется настолько просто, что соответствующие функции записаны прямо в списке параметров функции plot.
图 Maple 7 - (PJot5.n»v> - JSeiver 1J]
Построение графика функции f(x) (сплошная черная линия) и ее полиномиальной事
аппроксимации (синие ромбики)宀
> f(х):=sin(x)/х; > plot ( [f(x) , convert (series (f (x) , x, 15) , polynom) ] , x=-10 . . 10 , y=-0.3 . . 1,colors [b lack,blue],style=[line,point]);
Рис. 11.5. График функции зтп(х)Д и ее полиномиальной аппроксимации
В данном случае сама функция построена сплошной линией, а график полинома точками — ромбами. Хорошо видно, что при малых % аппроксимация дает высокую точность, но затем с ростом х ее погрешность резко возрастает.
Рисунок 11.6 показывает построение нескольких любопытных функций, полученных с помощью комбинаций элементарных функций. Такие комбинации позволяют получать периодические функции, моделирующие сигналы стандартного вида: в виде напряжения на выходе двухполупериодного выпрямителя, симметричных прямоугольных колебаний (меандр), пилообразных и треугольных импудШсов, треугольных импул|>сов со скругленной вершиной.
Рис. 11.6. Построение графиков нескольких любопытных функций
В этом рисунке запись axes=N0NE убирает координатные оси. Обратите внимание, что смещение графиков отдельных функций вниз с целью устранения их наложения достигнуто просто прибавлением к значению каждой функции некоторой константы.
Графики функций, построенные точками
Показанный на рис. 11.5 график полинома, построенный ромбиками, не означает, что полином представлен отдельными точками. В данном случае просто выбран стиль линии в виде точек. Однако часто возникает необходимость построения графиков функций, которые представлены просто совокупностями точек. Такая совокупность может быть создана искусственно, как на рис. 11.7, либо просто задаваться списком координат % и значений функции.
В данном случае переменная Р имеет вид списка, в котором попарно перечислены координаты точек функции sin(%). В этом нетрудно убедиться, заменив знак《:》 после выражения, задающего Р, на знак《:》.Далее по списку Р построен график точек в виде крестиков, которые отображают отдельные значения функции sin(x). На рис. 11.8 показано построение графиков функций по точкам при явном задании функции списком координат ее отдельных точек. В первом примере эти точки соединяются отрезками прямых, так что получается кусочно-линейный график. Видно также, что указание типа точек после указания стиля линии игнорируется (а жаль, было бы неплохо, чюбы наряду с кусочно-линейной линией графика строились и выделенные окружностями точки).
Рис. 11.7. Формирование списка отдельных точек функции и их построение на графике
Рис. 1L 觀 Пскт|ю^雌匚ра(Н<^"фукк 嶼琳 явно з#даиной О1»ейъ1й1йй* точками
Во втором примере рис. 11.8 показано построение только точек заданной функциональной зависимости. Они представлены маленькими кружками. Читателю предлагается самостоятельно совместить оба подхода к построению графиков по точкам и создать график в виде отрезков прямых, соединяющих заданные точки функции, представленные кружками или крестиками.
Графики функций, заданных своими именами
Способность Maple 7 к упрощению работы пользователя просто поразительна — жаль только, что многие возможности этого становятся ясными после основательного изучения программы, на что уходят, увы, не дни, а месяцы, а то и годы. Применительно к графикам одной из таких возможностей является построение графиков функций, заданных только их функциональными именами — даже без указания параметров в круглых скобках. Такую возможность наглядно демонстрирует рис. 11.9.
Этот пример показывает, что возможно построение графиков функций даже без указания в команде pl ot диапазонов. При этом диапазон по горизонтальной оси устанавливается равным по умолчанию -10.. 10, а по вертикальной оси выбирается автоматически в соответствии с экстремальными значениями функций в указанном даапазоце изменешш везавитмой перешнш^ ^с^腿單о х).
Графики функций с ординатами, заданными вектором
Часто возникает необходимость построения графика точек, ординаты которых являются элементами некоторого вектора. Обычно при этом предполагается равномерное расположение точек по горизонтальной оси. Пример построения такого графика дан на рис. 11.10.
Рис. 11.10. Построение графика точек с ординатами, заданными элементами вектора
Из этого примера нетрудно заметить, что данная задача решается составлением списка парных значений координат исходных точек — к значениям ординат точек, взятых из вектора, добавляются значения абсцисс. Они задаются чисто условно, поскольку никакой информации об абсциссах точек в исходном векторе нет, так что фактически строится график зависимости ординат точек от их порядкового номера п.
Графики функций, заданных процедурами
Некоторые виды функций, например кусочные, удобно задавать процедурами. Построение графиков функций, заданных процедурами, не вызывает никаких тр加嬲傩铀血ожм周рируе加я рис;1114 Ь
Рис. 11.11. Построение графика функций, заданных процедурами
Здесь, пожалуй, полезно обратить внимание на то, что в функции pl ot указывается имя процедуры без списка ее параметров.
Графики функций, заданных функциональными операторами
Еще одна «экзотическая» возможность функции plot — построение графиков функций, заданных функциональными операторами. Она иллюстрируется рис. 11.12. Имена функций (без указания списка параметров в круглых скобках) тоже, по существу, являются функциональными операторами. Так что они также могут использоваться при построении графиков упрощенными способами.
Графики функций, заданных параметрически
В ряде случаев для задания функциональных зависимостей используются заданные параметрически уравнения, например % =,«) и у』&«) при изменении переменной £ в некоторых пределах. Точки (х, у) наносятся на график в декартовой системе координат и соединяются отрезками прямых. Длй этого используется функция plot в следующей форме:.'
Рис. 11.12. Построение графиков функции, заданной функциональными операторами
p】ot([fl(t) ,f2(t) ,t=tmin. .tmaxLh.v.p)
Если функции /f(?) и f^t) содержат периодические функции (например, тригонометрические), то для получения замкнутых фигур диапазон изменения переменной t обычно задается равным 0. .2*Р1 или -Pi. .Р1. К примеру, если задать в качестве функций/«) и,(七)функции sin(t) и cos(r),то будет получен график окружности. Рисунок 11.13 показывает другие, чуть менее тривиальные примеры построения графиков такого рода.
Задание диапазонов для изменений h и v, а также параметров р не обязательно. Но, как и ранее, они позволяют получить вид графика, удовлетворяющий всем требованиям пользователя.
Графики функций в полярной системе координат
Графики в полярной системе координат представляют собой линии, которые описывают конец радиус-вектора г(0 при изменении угла £ в определенных пределах —0T 飙 UQ f^. Построение таких графиков также производится функцией pl。,: км^аж для этого записывается в следующем виде:
Рис. 11.13. Построение функций, заданных параметрически
plot([r(t) ,theta(t), t4min.. tmax] .h,v.p.coords=polar)
Здесь существенным моментом является задание полярной системы координат параметром coords=polar. Рисунок 11.14 дает примеры построения графтков функций в полярной системе координат.
Графики параметрических функций и фупкци11 в полярной системе координат отличаются огромным разнообразием. Снежинки и узоры мороза на стеклах, некоторые виды кристаллов и многие иные (физические объекты подчиняются математическим закономерностям, положенным в основу построения таких графиков.
Построение трехмерных графиков
Особенности применения функции plot3d
Трехмерными называют графики, отображающие функции двух переменных z(%, у). Каждая точка z таких графиков является высотой (аппликатой) точки, лежащей в плоскости XY и представленной координатами (®, %). Поскольку экран монитора компьютера в первом приближении является плоским, то на деле трехмерные графики представляют собой специальные проекции объемных объектов.
Рис. 11.14. Построение графиков функций в полярной системе координат
Для построения графиков трехмерных поверхностей Maple имеет встроенную в ядро функцию plot3d. Она может использоваться в следующих форматах: plot3d(exprl, x=a,.b, у=с,,d.p) plot3d(f. a,.b, с.,d,p)
plot3d(Eexprf.exprg.exprh], s=a,.b, t=c..d.p) plot3d(tf.g,h], a..b, c,.d.p)
В двух первых формах plot3d применяется для построения обычного графика одной поверхности, в других формах — для построения графика с параметрической формой задания поверхности. В приведенных формах записи f, g и h — функции; exprl — выражение, отражающее зависимость от х и у; exprf, exprg и exprh — выражения, задающие поверхность параметрически; s, t, а и b — числовые константы действительного типа; с и d — числовые константы или выражения действительного типа; х, у, s и t — имена независимых переменных; р — управляющие параметры.
Параметры функции plot3d
С помощью параметров р можно в широких пределах управлять видом трехмерных графиков, выводя или убирая линии каркасной сетки, вводя функциональную окраску поверхностей, меняя угол их обзора и параметры освещения, изме-
ня兄 вид координатных осей и т. д. Следующие параметры функции plot3d задаются аналогично пх заданию для функции plot:
axesfontfontcolorcoordsfont
label fontUnestylenumpointsscalingstyle
symbolthicknesstitletitlefont
Однако функция plot3d имеет ряд дополнительных специфических параметров:
О ambient〕ight=[r,g,b] — задает интенсивность красного (г), зеленого (д) и синего (Ь) цветов подстветки в относительных единицах (от 0 до 1);
О axes=f — задаст вид координатных uccii (BOXED, NORMAL, FRAME и NONE, по умолчанию NONE);
О grid=[m,n] — задает число ливни! каркаса поверхности;
О gridstyle=x — задает С1пль липни каркаса х ('rectangular' или 'triangular');
О 1 abels=[x,y(z] — задает надписи но осям (х, у н z — строки, по умолчанпю пустые);
О 1 ight=[phi ,theta, г ,g,b] — задает углы, иод которыми расположен источник освещения поверхности и интенсивности составляющих цвета (г, g п Ь);
О 1 ightmodel=x — задаст схему освещения (соответственно 'none', 'lightl', 'light2', 'Wght3' □ 'light4D;
О orientation=[theta,phi] — задаст углы ориентации поверхности (по умолчанию 45°);
О projection=r — задает перспективу при обзоре поверхности (г может быть чпелом 0 или 1, задающим включение плл выключение перспективы, а также одной из строк 'FISHEYE', 'NORMAL' ucu 'ORTHOGONAL' (иго соответствует численным значениям г, равным 0, 0,5 плп 1, причем по умолчанию задано project!on=ORTHOGONAL));
О shading=s — задает направления, по которым меняется цвет(»ункцнонально市 окраски (значения s могут быть XYZ. XY. Z, ZGREYSCALE, ZHUE, NONE);
О tickmarks=[l ,n,m] — задает характер маркировки по осям х, у 仃 z (числа 1, п и m имеют значения не менее 1);
О view=zmin. .zmax или view=[xmin. .xmax. ymin. .ушах, zmin. .zmax] — задает минимальные и максимальные координаты поверхности для ее видимых участков.
Выбор и пересчет координат трехмерных графиков
Для трехмерных графиков возможно задание 31 типа координатных систем с помощью параметра соогб5=Тип_координатной_системы. Поскольку на экране монитора поверхность отображается только в прямоугольной системе координат и характеризуется координатами х, у и z, то для представления поверхности, заданной в иной системе координат с координатами u, v и wf используются известные [46, 47] формулы для преобразования (〃, vt w) --> (х, “,z)< Ниже
перечислены типы трехмерных координатных систем и соответствующие формулы преобразования.
blpolarcylindrlcal :
х = a*sinh(v)/(cosh(v)-cos(u))■
у = a*s1r)(u)/(cosh(v)-cos(u)) z = w
bispherical:
x = sir)(u)*cos(w)/d
у = s1n(u)*s1r)(w)/d
z = sjr)Mv)/d где d = cosh(v) - cos(u) cardioidal:
x = u*v*cos(w)八广 2z 人 2 广2
у = u*v*s1n(w)/(u*2+v*2)*2
z =(广 2-v 人 2)/2/(广 2+v 人 2)人 2
cardwldcylindrical :
x = (「2-v 人 2)/2/(广 2+「2)人 2
у = u*v/(「2+「2)人 2 z = w
casscylindrical:
x = a*2*(l/2)/2*((exp(2*u)^2*exp(u)*cos(v)+l)*(l/2;+exp(u)*cos(v)+ir(l/2)
у = a*2*(l/2)/2*((exp(2*u)^2*exp(u)*cos(v)+!)*(1/2)-exp(u)*costv)-l)*n/2) z = w
confocalellip:
x = ((;2-u)*(「2-v)*(「2-w)/(;2-M2)/(「2-L2)『q/2)
у = ((b*2-u)*(b*2-v)*(b*2-w)/(b*2-s*2)/(b*2-c*2))AO/2)
z = ((L2-u)*(L2t)*(L2-w)/(L2-「2)/(L2-b>))气 L'2) confocalparab:
x = ((「2-u;*(T2-v)*(J2-w)/{『2-d2)广(1/2)
у = ((b*2-u)*(b*2-v)*(bA2-w)/(b*2-a*2)r(l/2i
z - (/2+b人2-u-v-w)/2 conical:
-x - u*v*w/(a*b)
у = u/b*((「2 -『2)*(『2-w人2)/'(「2-b人2))人(L'2)
z = u/a*((aA2 - v人2)*(广2 - w人2)/(「2-『2))人(1/2) cylindrical:
x = u*cos(y)
у = u*s1n(y) z = w
ellcyllndrjcal :
x = a*cosh(u)*cos(v)
у = d*s1r)h(u)*s1n(v) z = w
ellipsoidal:
x = u*v*w/a/b
у = ((u*2-b*2)*(v*2-b*2)*(b*2-w*2)/(a*2-b*2))*(l/2)/b
z = ((u*2-a*2)*(a*2-v*2)*(a*2-w*2)/(a*2-b*2))*(l/2)/a hypercyllndrjcal:
x =((厂 2+v"(l/2)+u)~L2)
у = ('(u 人 2+v 人 2)人(l/2)-u)人(1/2) z = w
Invcasscyljndrical:
x = a*2*(l/2)/2*((exp(2*u)+2*exp(u)*cos(v1/2) +
exp(u)*cos(v)+!)*(1/2)/(exp(2*u)+2*exp(u)*cos(v )+!)*(1/2)
у = a*2*(l/2)/2*((exp(2*u)+2*exp(u)*cos(v)+l)*(l/2)-
exp(u)*cos(v)-!)*(1/2)/(exp(2*u)+2*exp(u)*cos(v)+!)*(1/2) z = w
invelkyllr)dr1cal :
x = a*cosh(u)*cos(v)/(cosh(u)*2-sin(\/)*2)
у = a*s1 nh(u)*s1r)(v)/(cosh (u)A2-sir)(v )*2) z = w
'invoblspheroidal :
x - a*cosh(u)*sir)(v )*cos(w)/(cosh(u)*2-cos (v )*2)
у - a*cosh(u)*s1r)(v)*s1n(w)/(cosh(u)*2-cos(v)*2)
z = a*s1nh(u)*cos(v)/(cosh(u)*2-cos,(v)'2) invprospheroidaI :
x = a*sir)h(u)*s1r)(v)*cos(w)/(cosh(u)A2-sir)(v)A2)
у - a*s ir)h(u)*sir)(v)*sir)(w)/(cosh(u)*2-sir)(v)*2)
z = a*cosh(u)*cos(v)/(cosh(u)*2-sin(v)*2) logcyVmdrlcal :
x = a/Pi*ln(u 人 2+「2)
у = 2*d/Pi*a「ctdn(v/u) z w logcoshcyl wdrical :
x = a/P1*lr)(cosh(u)*2-sw(v)A2)
у = 2*a/P1*arctar)(tar)h(u)*tan(v)) z = w
maxwel leynndinedl:
x = d/P】*(u+l+exp(u)*cos(v))
у = a/PT*(v+exp(u)*sir)(vi)
z w
oblatespheroidal:
x = a*cosh(u)*sm(v)*cos(w)
у - a*cosh(u)*sir)(v)*sir)(w)
z = a*sinh(u)*cos(v) paraboloidal:
x = u*v*cos(w)
у = u*v*sin(w)
z = (iT2 -「2)/2
parabolo1da!2:
x = 2*((u-a)*(a-v)*(a-w)/(a-b))*(l/2)
у = 2*((u-b)*(b-v)*(b-w)/(a-b))*(l/2) z = u+v+w-a-b
paracyHndrlcal :
x = (u*2 - v人2)/2 у = z = w
prolatespheroidal:
x = d*sinh(u)*sin(v)*cos(w)
y=d*sinh(u)*sin(v)*s1n(w)
z=a*cosh(u)*cos(v)
rectangular:
x = u
У = v z = w
rosecylindrical:
х =((厂 2+v 人 2)人(l/2)+u)人(l/2)/(u 人 2+v 人 2)人(1/2)
у =((厂 2+v 人 2)人(l/2Au)人(1/2)/(厂 2+v 人 2)人(1/2)
Z = W
slxsphere:
X = и/(u*2+v*2+w*2)
у = v/(u*2+v*2+w*2)
z = w/(u*2+v*2+w*2)
spherical:
x = u*cos(v)*s1r)(w)
у = u*s1r)(v)*s1r)(w)
z = u*cos(w)
rangentcyllndrical:
x = u/(「2+v 人 2)
у = v/(「2+v 人 2)
z = w
tangentsphere:
x = u*cos(w)/(u*2+v*2)
у = u*sw(w)/(u*2+v*2)
z = v/(u*2+vA2) toroidal:
x = a*smh(v)*cos(w)/d
у = a*s1r)h(v)*s1r)(w)/d
z = "s1n(u)/dгдеd=cosh(v) - cos(u)
Эти формулы полезно знать, поскольку в литературе встречаются несколько отличные формулы пересчета. Вид графиков трехмерных поверхностей очень сильно рг!зл и чается в разных координатных системах. По умолчанию трехмерные графики строятся в прямоугольной системе координат — rectangular.
Построение поверхностей
Построение поверхностей с разными стилями
На рис. 11.15 показано два примера простейших построений графиков трехмерной поверхности. По умолчанию в Maple 7 строится поверхность с функциональной окраской и стилем style=patch (верхний рисунок). Функциональная окраска делает рнсункн более информативными, но, увы, на рисунках в книге она превращается в окраску оттенками серого цвета.
Параметр style=hidden строит каркасную поверхность с функциональной окраской тонких линий каркаса и удалением невидимых линий. Чтобы график выглядел более четким, построение во втором примере задано линиями черного цвета с помощью параметра color=black (см, нижний рисунок на рис, 11.15).
Помимо значения patch для построения трехмерных поверхностей можно задавать ряд других стилей: point — точками, contour — контурными линиями, line — линиями, hidden — линиями каркаса с удалением невидимых линий, wireframe — линиями каркаса со всеми видимыми линиями, patchnogrid — с раскраской, но без линий каркаса, patchcontour — раскраска с линиями равного уровня.
Рис. 11.15. Примеры простей出е「о построения трехмерных поверхностей
Цвет трехмерного「ра力пка может задаваться (как и для двумерного) параметром color=c, где с — цвет (оттенки цвета перечислялись ранее). Возможно еще дна а;(горитма задалия цвета:
О HUE — алгоритм с заданием цвета в виде color=f(х,у);
О RGB — алгоритм с заданием цвета в виде color=[exprr,exprg,exprb], где выражения exprr, exprg и exprb задают относительную значимость (от 0 до 1) основных цветов (красного — exprr, зеленого — exprg и синего — exprb). %
Удачный выбор углов обзора фигуры и применение функциональной окраски позволяют придать построениям трехмерных фигур весьма эффектный и реалистический вид.
Построение фигур в различных системах координат
Как отмечалось, вид графика трехмерной поверхности существенно зависит от выбора координатной системы. Рисунок 11.16 показывает пример построения нелинейного конуса в цилиндрической системе коордиггат. Для задания такой системы координат используется параметр coords=cylindrical.
Рис. 11.16. Нелинейная цилиндрическая поверхность
При построении это11 (ригуры также использована цветная (функциональная окраска. Кроме того, этот прнмор иллюстрирует вы вод пал ])нсуик()м THTy/ibiioii надписи (кстати, сделанной на русском языке).
Приведем еще один пример построения трехмерной поверхности — на этот раз в сферической системе координат (рис、11.17). Здесь(|)ункцпя задана вообще элементарно просто — в виде числа 1. Но, поскольку иыбраиа с(|)срнческая система координат, в результате строится поверхность шара единичного радиуса. О том, насколько необычным может быть график toii или иной функции в различных системах координат, свидетельствует рис. 11.18. На нем показан график параметрически заданной функции от одной координаты t — sin(*), построенный в сферической системе координат.
Кстати, рис. 11.18 иллюстрирует возможность одновременного наблюдения нескольких окон. В одном окне задано построение графика, а в другом построен сам график. При построении графика в отдельном окне появляется панель форматирования графика. С помощью ее довольно наглядных кнопок можно легко скорректировать вспомогательные параметры графика (окраску, наличие линий каркаса, ориентацию и др.).
I曰 Maple 7 TP)3(L3.m*s -JSe”e,1力 蕤爾隠
金ffe &Й4^Й* 'jffttlt' f^epMl-^^?^?^ ''■&*«)(»: <ЗййЛ»'ЙФ '^^'*. 'w-™、、、g、、;、、<•…、2 、八у、 、、* а、.浦幸4鬧 Построение графика поверхности豫
в сферической системе координат~
plot3d(l,t=Pl/3. .2*Pi,р—0..Pi,coords=spherical,style=patch);
|*>.1.д| ^.|*>.1.д| ^.^^E專 №3^^E專 №3
|*>.1.д| ^.
|*>.1.д| ^.
^^E專 №3
^^E專 №3
Рис. 11.17. Построение шарообразной поверхности в сферической системе координат
-EjMaple 7
Построение ЗО-графика в сферической системе координат
> plot3d(sin(tA3),t=-Pi..Pi,p=0.•4*₽i,coords=spherical,axes=BOXED);
@ Untitled (Б) - [Server 1)
Рис. 11.18. График еще одной поверхности в сферической системе координат
30-графики параметрически заданных поверхностей
На рис. 11.19 показано построение поверхности при полном ее параметрическом задании. В этом случае поверхность задается тремя формулами, содержащимися в списке.
Рис. 11.19. График трехмерной поверхности при полном параметрическом ее задании
В данном случае функциональная окраска задана из меню, поэтому в состав функции соответствующий параметр не введен. Обратите внимание на технику удаления частей фигуры путем задания соответствующего диапазона изменения параметров t и и.
Следующий пример показывает построение простого тороида — цилиндра, свернутого в кольцо (рис. 11.20). Здесь также использован прием удаления части фигуры, что делает ее представление более наглядным и красочным. Кроме того, введены параметры, задающие функциональную окраску.
Тор на рис. 11.20 выглядит, как произведение искусства. Он дает полное и наглядное представление об этой фигуре.
Масштабирование трехмерных фигур и изменение углов их обзора
Полезно обратить внимание на параметр масштаба scaling=constrained, явно введенный в документ рис. 11.20. Его можно было бы и не вводить, поскольку
этот параметр задается по умолчанию. Он выравнивает масштабы представления фигуры по осям координат, обычно используется по умолчанию и позволяет снизить до минимума геометрические искажения фигур — тор, например, при этом виден как круглая труба, свернутая в кольцо. У таких графиков есть специфический недостаток — они занимают малую часть окна вывода.
Рис. 11.20. Тор с функциональной окраской поверхности
Задание параметра sealing=unconstrained означает отказ от равного масштаба по осям. График при этом увеличивается в размерах, но становятся заметны его искажения по осям координат. В итоге тор превращается в толстую сплющенную трубу с эллиптическим сечением (рис. 11.21).
Весьма важным является учет углов, под которыми наблюдается трехмерная поверхность или объект. К примеру, построение рис. 11.21 неудачно в том плане, что оно не показывает наличия у тора дырки. В общем, как в поговорке: «кому бублик, а кому дырка от бублика» — ведь бублик и есть материально реализованный тор. Простейший и очень удобный способ изменить угол обзора заключается во вращении фигуры на рисунке мышью при нажатой левой кнопке. При этом можно повернуть фигуру так, что ее геометрические особенности будут видны (рис. 11.22).
В Maple есть способ явно задать углы обзора с помощью параметра orientation=[theta, phi], где theta и phi — углы, через которые задаются параметрические уравнения трехмерной фигуры или поверхности. Рисунок 11.23 дает пример такого задания фигуры, которую можно назвать «квадратным» тором. Обратите внимание, что значения заданных углов обзора повторяются в полях углов на контекстной панели инструментов. Разумеется, последние будут меняться, если начать вращать фигуру на рисунке мышью.
Axdn# 丄33ww qwKdug и но oik」3Adwdk)HOW3# oiqmHW eiodosou эюои 工z•工工 rwd э do丄•%%•工工 *эи<]
(pouTe.7qsuooun=6uTxeos ' эшЕЛ^=яэхе ' ЗПН2=ЬитрЕця ' 4oq.ed=BlAq.s
一【(s)UTS#g ' (4)ut$¥(so。、" +0T ' (4) SQQ、( soo#g+ ) PE^oTd
MккНунАф o」a шэине^еЕ гиихэекидюшедеи э edoi эинэоЬхэои:
庆曜产輪R对审0 }юа?з ■ ua声艱q 球学依陣 照售、s^仃*唸3 м破噌 哨炒
][1w>4然1-*2・口吁 2 却 5
pauie^suo3un=6ui]P2S ediswedeu нинэненс wanHanawndu j инннэо(11зои 匂。丄•[?•[[ 'dmj
(реи^еH3suoQun=6uTieos ' зшен,=$ехе ' ЗПН2=Ьитpeqs ' цо^е(1=эхЛ^8,
?[(s)uTs*g (q)UTs#((s)soo#g+L)+0T,(¥)$。0串((s)soo#g+L)+0£])P£QOTd < ииЬлнЛф o」a 网анне廿e£ 网HJoahud丄з网edeu э edoi эинэоЬхэои
Hi MAIOS] - амш IJO)] - 2叩。帽日
£1^ иэхэонхдэаои эинэодхэои
Рис. 11.23. «Квадратный» тор, представленный под заданными углами обзора
Занимательные фигуры — трехмерные графики
Параметрическое задание уравнений поверхности открывает почти неисчерпаемые возможности построения занимательных и сложных фигур самого различного вида. Приведем пару построений такого рода. ‘
На рис. 11.24 показан тор, сечение которого имеет вид сплюснутой шестиконечной звезды, Вырез в фигуре дает прекрасный обзор ее внутренней поверхности, а цветная функциональная окраска и линии сетки, построенные с применением алгоритма удаления невидимых линий, дают весьма реалистичный вид фигуры. Замените параметр seal 1 ng=unconstrained на seal i ng=constra1 ned, и вы получите тор с неискаженным сечением,
^ПРИМЕЧАНИЕ^ПРИМЕЧАНИЕНа рис. 11.25 показан еще один тор. На этот раз он круглого сечения, но сверху и снизу имеет вид пятиконечной звезды.
^ПРИМЕЧАНИЕ
^ПРИМЕЧАНИЕ
В приведенных на рис. 11.19-11.25 программах построения различных поверхностей и трехмерных фигур имеется ряд характерных констант и математических выражений, определяющих как вид фигур, так и их размеры и положение. Рекомендуется тщательно проанализировать эти примеры и попробовать их в работе с несколько измененными теми или иными данными. Полезно построить ряд подобных примеров самостоятельно. Все это будет способствовать привитию учащимся специального геометрического стиля мышления^ при котором геометрические особенности фигур связываются
с их расчетным описанием.
О Maple 7 - [tof2.mwi - [Snivel 1Ц
@郎ЕЛ g X e ―唸絕 运运递喇^^»登髅金汽К、、:、:了 > plot3d([30+(11+(4+sin(6*s))*cos(s))*cos(t),
20+(11+(4+sin(6*s))*cos(s))*sin(t),
(4+sin(6*s))*sin(s)J,
s=0 . . 2*Pi,t=0 , . 3/2*Pi/grid= [36,24] , orient at ioir= [-60,64], style=patch, shading=ZHUE , axes=frame, scaling=unconstrained);
Рис. 11.24. Top с сечением в виде шестиконечной звезды
:Maple 7 - (toi3.mwt - (Seivei 1||
::jw &j 1< - i w' "ay»*
|F6
> plot3d([30+(9 + 2*sin(5*t)+2*cos(s))*cos(t) z
10+(?+2*sin(5*t)+2*cos(s))*sin(t), 2*sin(s)]zs=0. .2*Pi,t=0. .ll*Pi/6 zgrid= [12,36], style=patch,axes^frame,scaling=constrained);
J^・ 11.25. Top к^глого сечения 風導岬 пятикоиечиой звезды
Быстрое построение графиков
Двумерная быстрая графика — smartptot
В последние реализации системы Maple (5, 6 п 7) введены новые функции быстрого построения графиков. Функция smartplot(f) предназначена для создания двумерных графиков. Параметр f может задаваться в виде одиночного выражения или набора выражений, разделяемых запятыми. Задание управляющих па- рамтеров в этих графических функциях не предусмотрено; таким образом, их можно считать первичными, или черновыми. Для функции построения двумерного графика по умолчанию задан диапазон изменения аргумента ТО..10.
Рисунок 11.26 иллюстрирует применение функции smartpl ot для построения трех (верхний пример) и двух (нижний пример) графиков функций на одном рисунке.
Рис. 11.26. Построение графиков с помощью функции smartplot
Обратите внимание на второй пример применения функции smartplot. Здесь график выражения 5sin(z/)/z/ построен относительно вертикальной оси. Поэтому он развернут на 90° относительно графика, построенного обычным образом.
金)ПРИМЕЧАНИЕ金)ПРИМЕЧАНИЕНа графиках, построенных командой smartplot(x), присутствует надпись «Live», что видно на рис. 11.26.
金)ПРИМЕЧАНИЕ
金)ПРИМЕЧАНИЕ
Быстрое построение трехмерных графиков smartplot3d
Рис. 11.27. Примеры применения функции smartplot3dРис. 11.27. Примеры применения функции smartplot3dБыстрое (не в смысле ускорения самого построения, а лишь в смысле более быстрого задания построения графиков) построение трехмерных графиков обеспечивает функция smartplot3d. Для этой функции задан диапазон изменения обоих аргументов -5.5 Рисунок 11.27 поясняет применение функции smartplot3d.
Рис. 11.27. Примеры применения функции smartplot3d
Рис. 11.27. Примеры применения функции smartplot3d
Как видно из второго примера, представленного на рис. 11.27, функция smartplot3d обеспечивает построение не только отдельных поверхностей, но и ряда пересекающихся поверхностей. При этом линии пересечения поверхностей строятся вполне корректно.
Специальные приемы построения трехмерных графиков
Трехмерный график как графический объект
Принадлежность функций plot и plot3d к функциям (в ряде книг их именуют операторами, командами или процедурами) наглядно выявляется при создании графических объектов. Графический объект — это, в сущности, обычная переменная, которой присваивается значение графической функции. После этого такая переменная, будучи вызванной, производит построение соответствующего графика. Пример этого дан на рис. 11.28.
Рис. 11.28. Пример задания и вывода трехмерного графика — графического объекта
В данном случае строится лента Мебиуса, свойства которой (например, плавный переход с одной стороны ленты на другую) уже много веков будоражат воображейие людей. ,
Поскольку можно говорить, что вызов переменной возвращает графический объект, то это дает повод считать plot и plot3d графическими функциями.
Задание трехмерных графиков в виде процедур
Язык программирования Maple 7 допускает применение в процедурах любых внутренних функций, в том числе графических. Пример такого применения дает рис. 11.29. 1
Рис. 11.29. Пример создания и применения процедуры трехмерной графики
Этот пример показывает еще один способ задания и построения кольца Мебиуса. Практически любые графические построения можно оформлять в виде процедур и использовать такие процедуры в своих документах.
Построение ряда трехмерных фигур на одном графике
Функция plot3d позволяет строить одновременно несколько фигур, пересекающихся в пространстве. Для этого достаточно вместо описания одной поверхности задать список описаний ряда поверхностей. При этом функция plot3d обладает уникальной возможностью — автоматически вычисляет точки пересечения фигур и показывает только видимые части поверхностей. Это создает изобра-
жения, выглядящие вполне естественно. Пример такого построения для.двух функций показан на рис. 11.30.
Рис. 11.30. Пример построения двух трехмерных фигур, пересекающихся в пространстве
Двумерные и трехмерные графические структуры
Понятие о графических структурах
. Функции PLOT и PL0T3D (с именами, набранными большими буквами) позволяют создавать графические структуры, содержащие ряд графических объектов si, s2, s3 и т. д. Каждый объект может представлять собой точку или фигуру, поли- ■ гон, надпись и т. д., позиционированную с высокой точностью в заданной системе координат. Координатные оси также относятся к графическим объектам. Важно отметить, что функции PLOT и PL0T3D одновременно являются данными, описывающими графики. Их можно записывать в виде файлов и (после открытия файлов) предстайлять в виде графиков. Особые свойства этих функций подчеркиваются их записью прописными буквами.
Графические структуры двумерной графики
Графическая структура двумерной графики задается в виде:
PL0T(sL s2, S3,…,о);1
где si, s2, s3 ... — графические объекты (или элементарные структуры — примитивы), о — общие для структуры параметры.
Основными объектами являются:
О POINTS([xl,yl],[х2,у2],„.[хп,уп]) — построение точек, заданных их координатами;
О CURVES([[xll,yll]>...[xln,yln]]> [[х21,у21],...[х2п,у2п]].... [[xml.yml],...[xmn,ymn]])— построение кривых по точкам;
О POLYGONS([[xll,yll],...[xln,yln]], [[х21,у21],...[х2п,у2п]].... [[xml.yml],...[xmn,ymn]])— построение замкнутой области -полигона (многоугольника, так как последняя точка должна совпадать с первой);
О ТЕХТ([х,у], 'string4,horizontal, vertical) — вывод текстовой надписи 'string4, позиционированной в точке с координатами [х,у], с горизонтальной или вертикальной ориентацией. Параметр horizontal может иметь значение ALIGNLEFT или ALIGNRIGHT, указывающие, в какую сторону (влево или вправо) идет надпись. Аналогично параметр vertical может иметь значение ALIGNABOVE или ALIGNBELOW, указывающее в каком направлении (вверх или вниз) идет надпись.
При задании графических объектов (структур) si, s2, s3 и т. д. можно использовать описанные выше параметры и параметры, например, для задания стиля построения 一 STYLE (POINT, LINE, PATCH, PATCHNOGRID); толщины линий, 一 THICKNESS (кроме координатных осей); символа, которым строятся точки кривых — SYMBOL (BOX, CROSS, CIRCLE. POINT, DIAMOND и DEFAULT); стиля линий 一 LINESTYLE; цвета 一 COLOR (например, COLOR(HUE.O) для закраски непрерывной области), типа шрифта —FONT; вывода титульной надписи — TITLE(string); имени объекта — NAME(string); стиля координатных осей — AXESSTYLE (BOX, FRAME, NORMAL, NONE или DEFAULT) и т. д.
Следует отметить, что параметры в графических структурах задаются несколько иначе — с помощью круглых скобок. Например, для задания шрифта TIMES ROMAN с размером символов 16 пунктов надо записать FONT (TIMES, ROMAN Д 6), для задания стиля координатных осей в виде прямоугольника — AXESSTYLE(BOX) И т. д.
На рис. 11.31 показан пример графических построений при использовании основных структур двумерной графики.
Как видно из этого примера, графическая двумерная структура позволяет задавать практически любые двумерные графики и текстовые надписи в пределах одного рисунка.
Рис. 11.31. Пример использования двумерных структур
Графические структуры трехмерной графики
Графические структуры трехмерной графики строятся функцией PLOT3D:
PL0T3D(sl,s2,s3о)
В качестве элементарных графических структур можно использовать уже описанные выше объекты POINTS, CURVES, POLYGONS и TEXT — разумеется, с добавлением в списки параметров третьей координаты. Пример такого построения дан на рис. 11.32.
Кроме того, могут использоваться некоторые специальные трехмерные структуры. Одна из них — структура GRID:
О GRIDCa. ,b,c. .d,listlist) — задание поверхности над участком координатной плоскости, ограниченной отрезками [а, Ь] и [с, 2], по данным, заданным переменной-списком I1stlist:=[[zll>...zln] ,[z21,...z2n] ,„.[zml„.znin]] с размерностью nlm. Заметим, что эта переменная задает координату z для равноотстоящих точек поверхности.
На рис. 11.33 показан пример создания структуры трехмерной графики на базе GRID. Изображение представляет собой линии, соединяющие заданные точки.
Еще один тип трехмерной графической структуры — это MESH:
О MESH(listlist) — задание трехмерной поверхности по данным списочной переменной listlist, содержащей полные координаты всех точек поверхности (возможно задание последней при неравномерной сетке).
鹦痂隣鹦痂隣Maple 7 - {Cube.raws - (Seiver 1))
鹦痂隣
鹦痂隣
) *佰[蜀) *佰[蜀氏 £ж эл*冰僦F«M 、' - 效ло» 蜘ctew 眦
) *佰[蜀
) *佰[蜀
₽LOT3D(₽OLYGONS([[0,0,01, [1,О,01, [1,1,01, [О,1f0]I, [[0,0,01, [0,1,01, [0,1,11 ДО, 0-lib [[1,0,01, [1,1,01, [1,1,1Ь [1,0,IIЬ [[О, О, ОЬ [1,0,01 ,[1,о, плоили, [[0,1,0], [1,1,01, [1,1,И. [0,1,111, [[о,о,1], [1,о,ц, [1,1,И, [0,1,111),
LIGHT(О,О,О.О,0.7,0. О) , LIGHT《100,45,0,7,0.0,0.0), LIGHT<100,-45,0.0,0.0,0,7), ЛМВ工ENTL工GHT(О.4,О.4,О.4), TITLE(CUBE) ,STYLE(PATCH) ,COLOUR(ZHUE));
CUBE
№fSl№fSl*」第安*」第安
№fSl
№fSl
*」第安
*」第安
Рис. 11.32. Пример создания структуры трехмерной графики
1Ш^ар1е7 - |Giid.mw> - JServei 1]J
® &te 期й £®н josait Рирлй . j -,…Qjswt 聯d&w ДЫр:
Пример задания структуры трехмерной графики (1)
GO: = [[3,1,О], [2,1,31, [2,3,2], [3,0,3], [1,3,1], [1,2,3]I:
PLOT3D《 GRID(1. .3,1. .3,GO) , AXESLABELS(X,Y,Z), ORIENTATION(14 0,30),AXE S(BOXED) ,COLOR(RGB,0,1,0));
Рис. 11.33. Пример задания графической структуры типа GRID
Обычная форма задания этой структуры следующая:
MESH(LLLxll.yll1zllL...Lxln.yln.zln]L LLx211y21.z21L...Lx2n.y2n.z2n]L
LLxml.yml.zml]...Lxmn1ynin.znin]]])
Пример задания такой структуры представлен на рис. 11.34.
Рис. 11.34. Пример задания графической структуры типа MESH
Описанные структуры могут использоваться и в программных модулях. Много таких примеров описано в книгах, поставляемых с системой Maple 7,
Что нового мы узнали?
В этом уроке мы научились:
О Использовать основную функцию построения двумерных графиков — plot, О Задавать координатные системы двумерных графиков.
О Управлять цветом и стилем двумерных графиков,
О Использовать основные типы двумерных графиков,
О Строить трехмерные графики,
О Строить различные поверхности,,
О Выполнять быстрые (черновые) построения,
О Использовать специальные приемы для построения трехмерных графиков.
О Задавать графические структуры двумерной и трехмерной графики.
Расширенные средства графики
Пакет plots
Техника анимирования графиков
Пакет plottools
Расширенные средства графической визуализации
Расширенная техника анимации
Новая функция для построения стрелок arrow
Построение сложных комбинированных графиков
Пакет plots
Общая характеристика пакета plots
Пакет plots содержит почти полсотни графических функций, существенно расширяющих возможности построения двумерных и трехмерных графиков в Maple 7: a with(plots);
[animate, ammate3d, animatecurve, changecoords, complexplot, complexplot3d^ conformal, contourplot, contour pl ot3d, coordplot, coordplot 3d、cylinderplot, densityplot, display, display3d, fieldplot, Jieldplot3d, gradplot, gradplot3d, implicitplot, impHcitplot3d, inequal, listcontplot, Ustcontplot3d, listdensityplot, listplot, listplot3d^oglogplot, logplot, malrixplot, odeplot, pareto、pointplot、poinfplot3d、polavplot, polygonplot, polygonplot3d,
polyhedra_supported,polyhedraplot, replot, rootlocus, semilogplot, setoptions ,setoptions3d, spacecurve, sparsematrixplot, sphereplot, surfdata, textplot, textplot3d, tubeplot]
Ввиду важности этого пакета отметим назначение всех его функций;
О animate — создает анимацию двумерных графиков функций;
О animate3d — создает анимацию трехмерных графиков функций;
О animatecurve — создает анимацию кривых;
О changecoords — смена системы координат;
О complexplot — построение двумерного графика на комплексной плоскости;
О complexplot3d — построение трехмерного графика в комплексном пространстве;
О conformal — конформный график комплексной функции;
О contourplot — построение контурного графика;-
О contourpl ot3d — построение трехмерного контурного графика;
О coordplot — построение координатной системы двумерных графиков;
О coordpl ot3d — построение координатной системы трехмерных графиков;
О cyl i nderpl ot — построение графика поверхности в цилиндрических координатах;
О densityplot — построение двумерного графика плотности;
О display — построение графика для списка графических объектов;
О displ ay3d — построение графика для списка трехмерных графических объектов;
О fieldplot — построение графика двумерного векторного поля;.
О fieldplot3d — построение графика трехмерного векторного поля;
О gradplot — построение графика двумерного векторного поля градиента;
О gradpl ot3d — построение графика трехмерного векторного поля градиента;
О implicitplot — построение двумерного графика неявной функции;
О implicitplot3d — построение трехмерного графика неявной функции;
О inequal — построение графика решения системы неравенств;
О listcontplot — построение двумерного контурного графика для сетки значений;
О 11stcontplot3d — построение трехмерного контурного графика для сетки значений;
О listdensityplot — построение двумерного графика плотности для сетки значений;
О listplot — построение двумерного графика для списка значений;
О 1 istplot3d — построение трехмерного графика для списка значений;
О loglogplot — построение логарифмического двумерного графика функции;
Q logplot — построение полулогарифмического двумерного графика функции;
О matrixplot — построение трехмерного графика со значениями Z, определенными матрицей;
О odeplot — построение двумерного или трехмерного графика решения дифференциальных уравнений;
О pareto — построение диаграммы (гистограммы и графика);
О pointplot — построение точками двумерного графика;
О pointplot3d — построение точками трехмерного графика;
О polarplot — построение графика двумерной кривой в полярной системе координат;
О polygonplot — построение графика одного или нескольких многоугольников;
О polygonplot3d — построение одного или нескольких многоугольников;
О 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 + г/2 = R2, где R — радиус окружности. Для задания двумерного графика такого вида служит функция импликативной графики:
1mpHc1tplot(eqn,x=a. .b,y=c. .d.options)
Пример построения окружности с помощью этой функции показан на рис. 12.1, снизу. Чуть ниже мы рассмотрим подобную функцию и для трехмерного графика.
Рис. 12.1.「рафики, построенные с помощью функций polarplot и implicitplot
Построение графиков линиями равного уровня
Графики, построенные с помощью линий равного уровня (их также называют контурными графиками), часто используются в картографии. Эти графики получаются, если мысленно провести через трехмерную поверхность ряд равноотстоящих плоскостей, параллельных плоскости, образованной осями X и У графика. Линии равных высот образуются в результате пересечения этих плоскостей с трехмерной поверхностью.
Для построения таких графиков используется функция contourplot, которая может использоваться в нескольких форматах:
contourplot(exprl.x=a..b.y=c..d)
contourplotff.a..b.c..d)
contourplot([exprf.exprg.exprh Ls=a..b,t=c..d)
contourp1ot([f.g.h ].a..b.c..d)
contourplot3d(exprl,x=a..b.y=c..d)
contourplot3d(f.a..b.c..d)
contourplot3d(Cexprf.exprg.exprh],s=a..b,t=c..d)
contourplot3d([f,g.h ].a..b.c..d)
Здесь f, g и h — функции; exprl — выражение, описывающее зависимость высоты поверхности от координат % и 4; exprf, exprg и exprh — выражения, зависящие от 5 и Z, описывающие поверхность в параметрической форме; а и b — константы вещественного типа; с и d — константы или выражения вещественного типа; х, у, s и t — имена независимых переменных.
На рис. 12.2 показано построение графика линиями равного уровня для одной функции. Параметр filled=true обеспечивает автоматическую функциональную окраску замкнутых фигур, образованных линиями равного уровня. Порою это придает графику большую выразительность, чем при построении только линий равного уровня.
Рис. 12.2. Пример построения графика функции линиями равного уровня
Обратите внимание на то, что данная функция по умолчанию строит легенду — она видна под графиком в виде линий с надписями. К сожалению, в данном варианте окраски сами контурные линии получаются черными и их невозможно отличить. Однако если убрать параметр filled=truef то контурные линии (и линии легенды) будут иметь разный цвет и легко различаться.
Функция contourplot позволяет строить и графики ряда функций. Пример такого построения показан на рис. 12.3. Множество окружностей на этом рисунке создается четырьмя поверхностями, заданными функциями cl, с2, сЗ и с4.
Рис. 12.3* Пример построения графиков многих функций линиями равного уровня
ВНИМАНИЕ Обратите внимание, что на многих графиках Maple 7 по умолчанию вписывает легенду, то есть список линий с обозначениями. Иногда (как, например, на рис. 12.3) этот список оказывается просто некстати. Легенду можно убрать, расширив заодно место для графика, сняв флажок Show Legend в меню Legend, которое появляется при двойном щелчке на графике (это меню видно на рис. 22.3). То же самое можно сделать с помощью той же команды в контекстном меню. Заодно запомните, что легенду можно редактировать, выполнив команду Edit Legend.
Следует отметить, что хотя графики в виде линий равного уровня выглядят не так эстетично и естественно, как обычные графики трехмерных поверхностей (ибо требуют осмысления результатов), у них есть один существенный плюс — экстремумы функций на таких графиках выявляются порой более четко, чем на обычных графиках. Например, небольшая возвышенность или впадина за большой «горой» на обычном графике может оказаться невидимой, поскольку заслоняется «горой». На графике линий равного уровня этого эффекта нет. Однако выразительность таких графиков сильно зависит от числа контурных линий.
График плотности
Иногда поверхности отображаются на плоскости как графики плотности окраски —чем выше высота поверхности, тем плотнее (темнее) окраска. Такой вид графиков создается функцией densityplot. Она может записываться в двух форматах:
dens1typlot(exprl,x=a..b,y=c..d)
dens1typlot(f.a..b,c..d)
где назначение параметров соответствует указанному выше для функции contourplot. На рнс, 12.4 (верхняя часть) дан пример построения графика такого типа. Нетрудно заметить, что в плоскости XY график разбит па квадраты, плотность окраски которых различна. В пашем случае плотность окраски задается оттенками серого цвета.
Рис. 12.4. Графики плотности и поля векторов
Обычно графики такого типа не очень выразительны, но имеют свои области применения. К примеру, оттенки окраски полупрозрачной жидкости могут указывать на рельеф поверхности дна емкости, в которой находится эта жидкость.
Двумерный график векторного поля
Еще один распространенный способ представления трехмерных поверхностей — графики полей векторов. Они часто применяются для отображения полей, например электрических зарядов. Особенность таких графиков в том, что для их построения используют стрелки, направление которых соответствует направлению изменения цэадиента поля, а длипа — значению градиента. Так что термин «ноле векторов» надо понимать в смысле, что поле гра(])нка заполнено векторами.
Для построения таких графиков в двумерной системе координат используется (функция fieldplot:
fjeldplotff. rl. r2)
fieldplotff. rl, r2....)
где f — вектор пли множество векторов, задающих построение; rl и г2 — пределы. На рис. 12.4 в нижней части документа показан вид одного из таких графиков. Следует отметить, что для получения достаточного числа отчетливо видных стрелок надо поработать с форматированием графиков. Иначе графики этого типа могут оказаться не очень представительными. Так, слишком короткие стрелки превращаются в черточки п даже точки, не имеющие острия, что лишает графики наглядности.
Несколько позже мы рассмотрим построение на одном рисунке графиков плотности и векторного поля, а также создание более наглядных толстых стрелок.
Трехмерный график типа implicitplot3d
Трехмерные поверхности также могут задаваться уравнениями неявного вида. В этом случае для построения их графиков используется функция implicitplot3d:
jmpljc1tplot3d(exprl.х=а..b.y=c..d.z=p..q.<options>)
jmpljcltplot3d(f.a..b,c..d,p.,q.<opt1ons>)
На рис. 12.5 показаны два примера построения объемных фигур с помощью функции 1mpl1citplot3d.
Эти примеры хорошо иллюстрируют технику применения функции implicitplot3d. С ее помощью можно строить весьма своеобразные фигуры, что, впрочем, видно и из приведенных примеров. Для наглядности фигур на рис. 12.5 они несколько развернуты в пространстве с помощью мыши.
Графики в разных системах координат
В пакете plots имеется множество функций для построения графиков в различных системах координат. Объем книги не позволяет воспроизвести примеры всех видов таких графиков, ибо их многие сотни. Да это и не надо — во встроенных в справочную систему примерах можно найти все нужные сведения. Так что ограничимся лишь парой примеров применения функции tubeplot(C. options),
позволяющей строить весьма наглядные фигуры в пространстве, напоминающие трубы или иные объекты, образованные фигурами вращения.
Рис. 12.5. Примеры применения функции impUcitplot3d
На рис. 12.6 показана одна из таких фигур. Она поразительно напоминает раковину улитки. Функциональная окраска достигнута доработкой графика с помощью панели форматирования.
Эта функция может использоваться и для построения ряда трубчатмх объектов в пространстве. При этом автоматически задается алгоритм удаления невидимых линий даже для достаточно сложных фигур. Это наглядно иллюстрирует пример на рис. 12.7, показывающий фигуру «непн». Не правда ли, реалистичность этой фигуры поражает воображение?
Можно долго размышлять о том, как те пли иные математические закономерности описывают предметы реального мира, положенные в основу тех или иных геометрических объектов, или, возможно, о гениальности людей, сумевших найти такие закономерности для многих из таких объектов. В наше время Maple 7 открывает огромные возможности для таких людей.
Графики типа трехмерного поля из векторов
Наглядность ряда графиков можно существенно увеличить, строя их в трехмерном представлении. Например, для такого построения графиков полей из векторов можно использовать графическую функцию fieldplot3d. В отличие от функции fieldplot она строит стрелки как бы в трехмерном пространстве (рис. 12.8).
Q]Maple ? - (Conhoid ms - (Seivet If]
會展 &« ^л*、Z F<W &2*,、、' JW*7J^*to»、m、 ,、、•「'、、,、、'、•*'、、2'7'、、'、f磔辞
Построение мулитким卷
> restart ;with(plots) :
Uarning, the name changecGcrd® 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 f orient at ion=[-37 f 81],tubepoints=25,style=PATC
H);
Рис. 12.6. Построение графика-«улитки»
Рис. 12.7. Фигура «цепи», построенная с применением функции tubeplot
[3 Maple 7 - (Vp3d.mws - [Seiver 1])
@ gfe \t& /*' 挪ей、F雌裏314戸、卢]&恻orw ^mdte* |^rip .、'、'
График типа "трехмерное векторное поле"
> with(plots);
fieldplot3d([(x,у,z)->2*cos(x),(x,y,z)->2*y,(x,y,z)->l],-3..3,-1. olor=black,axes=boxed);
>\-\一方A三三一二\
\ r~~三一 /r告一三一三一 一x^\\\\\\\ 田
Рис. 12.8. Построение поля в трехмерном пространстве с помощью векторов
Все сказанное об особенностях таких двумерных графиков остается справедливым и для графиков трехмерных. В частности, для обеспечения достаточной наглядности нужно тщательно отлаживать форматы представления таких графиков.
Контурные трехмерные графики
В отличие от векторных графиков контурные графики поверхностей, наложенные на сами эти поверхности, нередко повышают восприимчивость таких поверхностей —подобно изображению линий каркаса. Для одновременного построения поверхности и контурных линий на них служит функция contourpl ot3d. Пример ее применения показан на рис. 12.9.
Для повышения наглядности этот график доработан с помощью контекстной панели инструментов графиков. В частности, включена функциональная окраска и подобраны углы обзора фигуры, при которых отчетливо видны ее впадина и пик.
(3 Maple 7 - |Cont3d.mws - (Se(vef 1R
Трехмерная графика с линиями равного уровня > restart,with(plots):
contourplot3d(xA2+yA2,x—3..3,y«-3..3, filled=true, coloring=[blue,green]) ;|
Warning, che name changecoords has been redefined
Рис. 12.9. График поверхности с контурными линиями
Техника визуализации сложных пространственных фигур
Приведенные выше достаточно простые примеры дают представление о высоком качестве визуализации геометрических фигур с помощью пакета pl ots. Здесь мы рассмотрим еще несколько примеров визуализации трехмерных фигур. Многие видели катушки индуктивности, у которых провод того или иного диаметра намотан на тороидальный магнитный сердечник. Некую математическую абстракцию такой катушки иллюстрирует рис. 12.10.
В документе рис. 12.10 для функции tubepl ot использовано довольно большое число параметров. Не всегда их действие очевидно. Поэтому на рис. 12.11 показано построение трех взаимно пересекающихся торов с разными наборами параметров. Этот рисунок дает также наглядное представление о возможности построения нескольких графических объектов (представленных функциями pl, р2 и рЗ) с помощью функции tubepl ot.
I阳Mapl@7 -[Gtortub.m - [Setvet 1“ .―. 一 一 .廳蹑爆|
鱼跳 &Я ¥w 庶咄F^狒Л ','、、," 勘做《 出域》• Л^о 、、,,、.浦怨照
Построение спирали на торе哲
with(plots): N:=10:餐
tortube := t ubeplot(( [10*cos(t),10*sin(t),0 ,
t=0 . . 2*Pi, raclius=2 , numiJoints=10*N, tubepoints=2*N]
,(cos(t)*(10 + 4*sin(9*t))fsin(t)*(10 + 4*sin(9*t)),4*cos(9*t) ,t=0. ,2*Pi,radius :至 =1, numpoints = trunc (37,5*N) , tubepoiiits=NJ } , scaling=UNCONSTRAINED , orientation =[60(40]):tortube;
Рис. 12.10. Top с обмоткой — толстой спиральюРис. 12.10. Top с обмоткой — толстой спиралью
Рис. 12.10. Top с обмоткой — толстой спиралью
Рис. 12.10. Top с обмоткой — толстой спиралью
Наконец, на рис. 12.12 показано построение тора с тонкой обмоткой. Рекомендуется внимательно посмотреть на запись функции tubeplot в этом примере и в примере, показанном на рис. 12.11. Можно также поэкспериментировать с управляющими параметрами графика, от которых сильно зависят его представительность и наглядность.
…Serve,]" .»^^^^^^^^^g^g
金ffe五曲眺#維ей 肉械 -*,gptbfls 蛉啾蝌 ^q《画区
Тор с обмоткой憑
pl:=spacecurve( [cos(t)*(10+3*s±n(t*15)),sin(t)*(10+3*sin(t*15)), 2*cos(t*15 装 ),t=0 . . 2*Pi , numpoint s=1000 ] ,color=black.) :
〉p2 : =tubeplot ( [10*cos (t) , 10*sin (t) , 0 ] , t=0 . . 2*Pi , numpoints=100 , radius=2, styl i;| e=PATCHNOGRID):Д
ciisplay({plfp2} ,scaling=UNCONSTRAINED) ;<:■
Рис. 12.12. Top с тонкой обмоткой
В ряде случаев наглядно представленные фигуры можно строить путем объединения однотипных фигур. Пример графика подобного рода представлен на рис. 12.13. Здесь готовится список графических объектов s, смещенных по вертикали. С помощью функции display они воспроизводятся на одном графике, что повышает реалистичность изображения.
Последний пример имеет еще одну важную особенность — он иллюстрирует задание графической процедуры, в теле которой используются функции пакета plots. Параметр п этой процедуры задает число элементарных фигур, из которых строится полная фигура. Таким образом, высотой фигуры (или шириной «шины») можно управлять. Возможность задания практически любых графических процедур средствами Maple-языка существенно расширяет возможности Maple'.
Наглядность таких графиков, как графики плотности и векторных полей может быть улучшена их совместным применением. Такой пример показан на рис. 12.14.
&Maple7 - [Gpioc ms - (Servet 1]1
■^'Э»'ЕЛ^йда' W«* Ядай»、0Е"8' g(^ 4W^ 岫 '、'、'、' '、、、、'••屮、--**、-、、《、…±、 '、-、川&扌然
Пример построения графика с использованием процедуры 4
> with(plots):г
> torii := proc(n) > local s,k; > s := seq(tubeplot( [cos(t),sin(t),k], >t=0..2*P±,numpo±nts=100,radius=.25),k=0..n-1);
> display({s}); > torii(5);
-(Seivcr 1]]-(Seivcr 1]]Рис. 12.13. Построение фигуры, напоминающей шину автомобиля
-(Seivcr 1]]
-(Seivcr 1]]
1」У1х 扌第要撩
Совместное применение функций gradplot и densityplot пакета plots
> with(plots): f:=-sin(5*x)+sin(5*y);
pl:^radplot(f,x=-l. .1,y=~l..l,grid=[15 f15],arrows=THICK):p2:=densityplot(f ,x=-l..1,y«-l..1,color=red):
display(pl,p2,axes=BOX);
Рис. 12.14. Пример совместного применения графиков 1Глотнрс^1 и векторного поля
Этот пример иллюстрирует использование «жирных» стрелок для обозначения векторного поля. Наглядность графика повышается благодаря наложению стрелок на график плотности, который лучше, чем собственно стрелки, дает представление о плавности изменения высоты поверхности, заданной функцией /.
Техника анимирования графиков
Анимация двумерных графиков
Визуализация графических построений и результатов моделирования различных объектов и явлений существенно повышается при использовании средств «оживления» (анимации) изображений. Пакет plots имеет две простые функции для создания анимированных графиков.
Первая из этих функций служит для создания анимации графиков, представляющих функцию одной переменной F(x):
animatecurve(F, г, ...)
Эта функция просто позволяет наблюдать медленное построение графика. Формат ее применения подобен используемому в функции pl ot.
При вызове данной функции вначале строится пустой шаблон графика. Если активизировать шаблон мышью, то в строке главного меню появляется меню Animation. Меню Animation содержит команды управления анимацией. Такое же подменю появляется и в контекстном (рис. 12.15).
Указанное подменю содержит следующие команды анимации:
О Play — запуск построения графика;
О Next — выполнение следующего шага анимации;
О Backward/Forward — переключение направления анимации (назад/вперед);
О Faster — ускорение анимации;
О Slower — замедление анимации;
О -Continiuus/Single cycle — цикличность анимации*
При исполнении команды Play происходит построение кривой (или нескольких кривых). В зависимости от выбора команд Faster или Slower построение идет быстро ил-и медленно. Команда Next выполняет один шаг анимации — построение очередного фрагмента кривой. Переключатель Backward/Foгward позволяет задать направление построения кривой — от начала к концу или от конца к началу. Построение может быть непрерывным или циклическим в зависимости от состояния позиции Continiuus/Single cycle в подменю управления анимацией. При циклической анимации число циклов задается параметром frames»n.
Рис. 12.15. Пример анимационного построения графика функцией animatecurve
Проигрыватель анимированной графики
При включенном выводе панели форматирования во время анимации она приобретает вид панели проигрывателя клипов (рис. 12.15). Эта панель имеет кнопки управления с обозначениями, принятыми у современных магнитофонов:
Поле координат перемещающейся точки графика.*
Остановка анимации.
Пуск анимации.
Переход к следующему кадру (фрейму).
Установка направления анимации от конца в начало.
Установка направления анимации из начала в конец (по умолчанию).
Уменьшение времени шага анимации.
Увеличение времени шага анимации.
Установка одиночного цикла анимации.
Установка серии циклов анимации.
Итак, кнопки проигрывателя, по существу, повторяют команды подменю управления анимацией.
Нажав кнопку пуска (с треугольником, острием обращенным вправо), можно наблюдать изменение вида кривой для функции sin(%)/(%). Другие кнопки управляют характером анимации. Проигрыватель дает удобные средства для демонстрации анимации, например, во время занятий со школьниками или студентами.
Построение двумерных анимированных графиков
Более обширные возможности анимации двумерных графиков обеспечивает функция animate:
ammate(F. х, t)
ammate(F. х, t, о)
В псп параметр х задает пределы изменения переменной х, а параметр t — пределы изменение дополнительной переменной t. Суть апимацшг при использовании данной функции заключается в построении серин кадров (как в мультфильме), причем каждыii кадр связан со значением изменяемой во времени переменной t. Если надо явно задать число кадров анимации N, то в качестве о следует использовать frame=N.
Рисунок 12.16 показывает применение функции animate.
Рис. 12.16. Анимация функции sin(i*x)/(i*x) на фоне неподвижной синусоиды
В документе рис. 12.16 строятся две функции — не создающая анимации функция sin(x) л создающая анимацию функция sin(/*x)/(z*x), причем в качестве переменной £ задана переменная z. Именно ее изменение и создает эффект анимации. Проигрыватель анимационных клипов и меню, описанные выше, могут использоваться для управления и этим видом анимации. Обратите внимаште на вызов графических функций в этом примере командой with и на синтаксис записи этих функций.
К сожалению, картинки в книгах всегда неподвижны и воспроизвести эффект анимации невозможно. Можно лишь представить несколько текущих кадров анимации. Представленная на рис. 12.16 картина соответствует последнему кадру анимации.
Еще один пример анимации представлен па рис. 12.17. Этот документ показывает кадр анимированного процесса улучшения приближения с ин у со ид альн oil функции рядом с различным числом членов (и порядком последнего члена ряда). Результирующая картина, изображенная на рис. 12.17, показывает как приближаемую синусоидальную функцию, так и графики всех рядов, которые последовательно выводятся в ходе анимации.
Рис. 12.17. Анимационная демонстрация приближения синусоиды рядом с меняющимся числом членов
Анимация графиков может найти самое широкое применение при создании учебных материалов. С ее помощью можно акцентировать внимание на отдель-
ных параметрах графиков и образующих их функций и наглядно иллюстрировать характер их изменений.
Построение трехмерных анимационных графиков
Аналогичным образом может осуществляться и анимирование трехмерных фигур. Для этого используется функция animate3d:
animate3d(F.x. y.t.o)
Здесь F — описание функции (или функций); х, у и t — диапазоны изменения переменных х, у и /; Для задания числа кадров ^ надо использовать необязательный параметр о в виде frame=N.
На рис. 12.18 показано построение анимированного графика. После задания функции, график которой строится, необходимо выделить график и запустить проигрыватель, как это описывалось для анимации двумерных графиков.
Рис. 12.18. Подготовка трехмерного анимационного графика
На рис. 12.18 показано также контекстное меню поля выделенного графика. Нетрудно заметить, что с помощью этого меню (и содержащихся в нем подменю) можно получить доступ к параметрам трехмерной графики и выполнить
необходимые операции форматирования, такие как включение цветовой окраски, выбор ориентации фигуры и т. д.
Назначение параметров, как и средств управления проигрывателем анимационных клипов, было описано выше.
Анимация с помощью параметра insequence
Еще один путь получения анимационных рисунков — создание ряда графических объектов pl, р2, рЗ и т. д. и их последовательный вывод с помощью функций displ ay или displ ay3d:
d1splay(pl,p2,p3…,1nsequence=true)
di spl 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
hexahedrt
n
hyperbola
Icosahedron
line
octahedron
piesMce
po1 nt
polygon
rectangle
semitorus
sphere
tetrahedron
torus
е)ПРММЕЧАНМЕ
Вызов перечисленных примитивов осуществляется после загрузки пакета в память компьютера командой with(plottools). Только после этого примитивы пакета становятся доступными. Обычно примитивы используются для задания графических объектов, которые затем выводятся функцией display. Возможно применение этих примитивов
совместно с различными графиками.
Большинство примитивов пакета plottools имеет довольно очевидный синтаксис. Например, для задания дуги используется примитив агс(с, г, а. .Ь,...), где с — список с координатами центра окружности, к которой принадлежит дуга, г — радиус этой окружности, а. .Ь — диапазон углов. На месте многоточия мо-
гут стоять обычные параметры, задающие цвет дуги, толщину ее линии и т. д. Конус строится примитивом cone(c,r,h...), где с — список с координатами центра, г — радиус основания, h — высота и т. д. Все формы записи графических примитивов и их синтаксис можно найти в справочной системе. В необходимых случаях стоит проверить синтаксис того или иного примитива с помощью справки по пакету plottools.
Примеры применения двумерных примитивов пакета plottools
На рис. 12.19 показано применение нескольких примитивов двумерной графики для построения дуги, окружности, закрашенного красным цветом эллипса и отрезка прямой. Кроме того, на графике показано построение синусоиды. Во избежание искажении! пропорций фигур надо согласовывать диапазон изменения переменной .г. Обычно параметр seal 11 ng=constrained выравншзаст масштабы и диапазоны по осям координат, что гарантирует отсутствие искажений у окружностей и других геометрических фигур. Однако при этом размеры графика нередко оказываются малыми. Напоминаем, что этот параметр можно задать и с помощью подменю Projection.
Simons ^«ciw tW;Simons ^«ciw tW;I图Mapte7 -fPtooK.nnn-[Senret 1][
Simons ^«ciw tW;
Simons ^«ciw tW;
Применение графических примитивов пакета plottools
> with(plottools):
a := 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,y=-l. .1):
plots[display](a,1,c,e,s);
Warning, the naine arrow has been redefined
Рис. 12.19. Примеры применения примитивов двумерной графики пакета plottools
Рисунок 12.20 иллюстрирует построение средствами пакета plottools четырех разноцветных стрелок, направленных в разные стороны. Цвет стрелок задан списком цветов с, определенным после команды загрузки пакета. Для построения стрелок используется примитив arrow с соответствующими параметрами.
冋 Maple 7 - [pH.tmw* • (Servef 1Н冋 Maple 7 - [pH.tmw* • (Servef 1Н@酶热瓶能!*卡阳加附用威:、,、・八“>,/2隔删s 彰《蜘" h生口qislw> with(plottools):c :e [red, blue, green, yellow]: > display( seq(arrow( [0, 0] , [cos(i*Pi/2), sin(i*Pi/2)],0.2, 0.4, 1/8, color=c[i] ), i=l..4));@酶热瓶能!*卡阳加附用威:、,、・八“>,/2隔删s 彰《蜘" h生口qislw> with(plottools):c :e [red, blue, green, yellow]: > display( seq(arrow( [0, 0] , [cos(i*Pi/2), sin(i*Pi/2)],0.2, 0.4, 1/8, color=c[i] ), i=l..4));
冋 Maple 7 - [pH.tmw* • (Servef 1Н
冋 Maple 7 - [pH.tmw* • (Servef 1Н
@酶热瓶能!*卡阳加附用威:、,、・八“>,/2隔删s 彰《蜘" h生口qislw
> with(plottools):c :e [red, blue, green, yellow]: > display( seq(arrow( [0, 0] , [cos(i*Pi/2), sin(i*Pi/2)],
0.2, 0.4, 1/8, color=c[i] ), i=l..4));
@酶热瓶能!*卡阳加附用威:、,、・八“>,/2隔删s 彰《蜘" h生口qislw
> with(plottools):c :e [red, blue, green, yellow]: > display( seq(arrow( [0, 0] , [cos(i*Pi/2), sin(i*Pi/2)],
0.2, 0.4, 1/8, color=c[i] ), i=l..4));
Рис. 12.20. Построение разноцветных стрелок, направленных в стороны
ПРИМЕЧАНИЕПРИМЕЧАНИЕПримитивы могут использоваться в составе графических процедур, что позволяет конструировать практически любые типы сложных графических объектов. В качестве примера на рис. 12.21 представлена процедура SmlthChart, которая строит хоропю известную электрикам диаграмму Смита (впрочем, несколько упрощенную). В этой процедуре используется примР1тив построения дуг аге. При этом задается верхняя часть диаграммы, а нижняя получается ее зеркальным отражением.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Обратите внимание на то, что, начиная с рис. 12.21, мы не указываем загрузку пакета plottools, поскольку она уже была проведена ранее. Однако надо помнить, что все примеры этого раздела предполагают, что такая загрузка обеспечена. Если вы использовали команду restart или только что загрузили систему Maple 7, то для исполнения примера рис. 12.21 и последующих примеров надо исполнить команду with(plottools).
Рис. 12.21. Построение диаграммы Смита
Примеры применения трехмерных примитивов пакета plottools
Аналогичным описанному выше образом используются примитивы построения трехмерных фигур. Это открывает возможность создания разнообразных иллюстрационных рисунков и графиков, часто применяемых при изучении курса стереометрии. Могут строиться самые различные объемные фигуры и поверхности —конусы, цилиндры, кубы, полиэдры и т. д. Использование средств функциональной окраски делает изображения очень реалистичными.
Рисунок 12.22 показывает построение цилиндра и двух граненых шаров. Цилиндр строится примитивом cyl 1 nder, а граненые шары — примитивом icosahedron. Другой пример (рис. 12.23) иллюстрирует построение на одном графике двух объемных фигур, одна из которых находится внутри другой фигуры. Этот пример демонстрирует достаточно корректное построение вложенных фигур.
На рис. 12.24 показано совместное построение двух пересекающихся кубов и сферы в пространстве. Нетрудно заметить, что графика пакета приблизительно (с точностью до сегмента) вычисляет области пересечения фигур. С помощью контекстно-зависимого меню правой кнопки мыши (оно показано на рис. 12.24) можно устанавливать условия обзора фигур, учитывать перспективу при построении и т. д. В частности, фигура на рис. 12.24 показаны в перспективе.
Рис. 12.22. Построение цилиндра и двух граненых шаровРис. 12.22. Построение цилиндра и двух граненых шаров曰 Maple 7 - [p*4.mwt - [Seivei 1]]
Рис. 12.22. Построение цилиндра и двух граненых шаров
Рис. 12.22. Построение цилиндра и двух граненых шаров
殴 fife 案Йй ¥他 >aart F密》J - ,' ;л,QjaJo» Jfi5Mgr 触> _
> p : - dispiay( stellate ( dodecahedzron( ) , 3) , style=pA^ch ): > q : — displayf cutout ( icosahedron ( [1, 1, 0 ] , 2.2), 7 /6\ )): > display( p, q, sealing-unconstrained ); \
i曰Maple 7 - (Ptools3d.mws - (Seiver 1J]癩麻膜
@昼ft番Й W F期BM安隣唸金瞬£^t M>$即(既螂尊 «к仪網亭飙!眦НФ' ,.浦用萧
Построение 3D графических фигур с помощью примитивов пакета plottools上
> with(plottools):岂
f :- hexahedron((0,0г0]г0.8^color-red)г hex ahedzron ([工,工,工],0.5 , co loi?—gi?een ), sphere((0,0,0},l^color-yellow): plots(display](f,style=patch);
Рис. 12.24. Примеры применения примитивов трехмерной графики пакета plottoolsРис. 12.24. Примеры применения примитивов трехмерной графики пакета plottools
Рис. 12.24. Примеры применения примитивов трехмерной графики пакета plottools
Рис. 12.24. Примеры применения примитивов трехмерной графики пакета plottools
Построение еще одной забавной трехмерной фигуры — «шкурки ежа» — демонстрирует рис. 12.25. В основе построения лежит техника создания полигонов.
Построение фигур, очень напоминающих улитки, показано на рис. 12.26. При построении этих фигур используется функция tubeplot. Обратите внимание на то, что строятся две входящие друг в друга «улитки».
Наконец, на рис. 12,27 показано построение фигуры — бутылки Клейна. Фигура задана рядом своих фрагментов, определенных в процедуре cleinpoints. Эта процедура является еще одним наглядным примером программирования графических построений с помощью Maple-языка.
С другими возможностями этого пакета читатель теперь справится самостоятельно или с помощью данных справочной системы. Много примеров построения сложных и красочных фигур с применением пакета plottools можно найти в Интернете на сайте фирмы Maple Software, в свободно распространяемой библиотеке пользователей системы Maple и в книгах по этой системе.
Построение графиков из множества фигур
В ряде случаев бывает необходимо строить графики, представляющие собой множество однотипных фигур. Для построения таких графиков полезно использовать функцию повторения seqCf.i^a. .b). На рис. 12.28 показано построение фигуры, образованной вращением прямоугольника вокруг одной из вершин..
Рис. 12.25. Построение трехмерной фигуры — «шкурки ежа»
ЕЗ Mapte 7 - [ptG.mwi - (Server 1Ц
仓氏£<>s 2,FM :«' й^сЖйяМИ^з'Мс*、、、…*
kleinpoints :- proc( ) local EdEWoin, middle, handle, top, p, q;
bottom :— [(2.5 + 1.5*cos(v))*cos(u) , (2.5 + 1-5*cos(v))*sin(u),
-2.5*sin(v)1: middle := [ (2.5+1.5*cos(v))*cos(u),
<2.5 + 1.5*cos(v))* sin(u), 3*vl:
handle :- [2 - 2*cos(v) + sin(u), cos(u), 3*vl:
top := [ 2+ < 2+cos(u) )*cos(v), sin(u),
3*Pi + <2+ cos(u) ) * sin(v) 1:
P : = plot3d( {bottom, middle, handle, topi,
u=0..2*Pi, v=0. .Pi, grid=[9, 91):
P := select(x->op(Of x) - MESH, [op(p)1);
seq( convert ( g , POLYGONS) , q=p ) ; end:
display( seq( cutout (k, 1/2), k. = kleinpoints ()),
scaling = unconstrained, orientation=[-100, 1001);
Рис. 12.27. Построение фигуры «бутылка Клейна»
В этом примере полезно обратить внимание еще и иа функцию поворота фигуры —rotate. Именно сочетание этих двух функций (мультиплицирования и поворота базовой фигуры — прямоугольника) позволяет получить сложную фигуру, показанную на рис. 12.28.
Анимация двумерной графики в пакете plottools
Пакет plottools открывает возможности реализации анимационной графики. Мы ограничимся одним примером анимации двумерных графиков. Этот пример представлен на рис. 12.29. В этом примере показана aни^faциo^^нaя иллюстрация решения дифференциального уравнения, описывающего незатухающий колебательный процесс. Строится качающийся объект — стрелка с острием вправо, решение дифференциального уравнения в виде синусоиды i-i большая стрелка с острием влево, которая соединяет текущую точку графика синусоиды с острием стрелки колеблющегося объекта.
Этот пример наглядно показывает возможности применения анимации для визуализации достаточно сложных физических и математических закономерностей. Перспективы применения системы Maple 7 в создании виртуальных физических и иных лабораторий трудно переоценить.
Анимация трехмерной графики в пакете plottools
Хорошим примером BD-анимации является документ, показанный на рис. 12.30. Представленная на нем процедура springPlot имитирует поведение упругой системы, первоначально сжатой, а затем выстреливающей шар, установленный на ее верхней пластине. Упругая система сострит из неподвижного основания, на котором расположена упруга^ масса (например, из Пористой резины), и верхней, пластины.
Рис. 12.28. Построение фигуры, образованной вращением прямоугольника
昭Maple 7 - Пй7.пмм* - ISe“et th
& £屬专珊妆汕Fopnaf ЙР^*в黄瞒 *®М森*e$ £嗎ectioi Аэтзйип Ejgwft褪mdo说灶咖」昆旧
卜石°苏「H・bll*UTF№J*jR^] 「 目
[Анимация - развертка во времени синусоиды4
f := proc(g, xdomain)三
local a, b, diffg, llnel, x, t, dline, p, c, endpt, u, dvect ;
x := Ihs(xdomain) ; diffg := diff(g, x); t := rhs(rhs(xdomain))г endpt := subs(x=t, diffg) :p :- plot(g, args [2. .nargs]);
c :« cirele([-1, 01, 1.0);
dvect : = [1/sqrt(l+endptA2), endpt/sqrt(l+endptA2)1;
linel :— arrow([-1, 01,[dvect[11, dvect[211, 0.05, 0.1, 1/10, color-red); u := [t, subs <x=t,g)1;
dllne : = arrow(u, dvect, 0.05, 0.1, 1/10,cclor«red);
display( (p, PLOT(dllne, c, llnel)),view=[-2..t+2, DEFAULT]);
display( [seq( f(sin(x), x«0..t*Pi/16), t—0..64) ], insequence—true, scaling-unconstrained);
Рис. 12・3。・ Имитация отстрела шара сжатой упругой системой
Управление анимацией, реализованной средствами пакета plottools, подобно уже описанному ранее. Последний пример также прекрасно иллюстрирует возможности применения Maple 7 при математическом моделировании различных явлений, устройств и систем.
Расширенные средства графической визуализации
Построение ряда графиков, расположенных по горизонтали
Обычно если в строке ввода задается построение нескольких графиков, то в строке вывода все они располагаются по вертикали. Это не всегда удобно, например, при снятии копий экрана с рядом графиков, поскольку экран монитора вытянут по горизонтали, а не па вертикали. Однако при применении функций plots и display можно разместить ряд двумерных графиков в строке вывода по горизонтали. Это демонстрирует пример, показанный на рис. 12.31.
Этот пример достаточно прост и нагляден, так что читатель может пользоваться данной возможностью рсегда, когда ему это нужно.
[□Maple? (pdh.mws - (Server 1И麴位臨
& 济'1*^]^、^»» |n^4. F4p*wi“ мле r入'w>A'+&₽^tt«'>3|^wto»* -祉^&、л>29 、、、、、з、*、、、、±、、、、,、、、*&、8 、、、、、、^、、、、、、>••>、、 ^ШЙ|
Построение в одной строке вывода нескольких графиков разного типа,姿
расположенных по горизонтали
Создадим графические объекты а. b н с > with(plots, conformal, display):
Г> а:-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, c]));
Рис. 12・31・ Пример расположения трех графиков в строке вывода по горизонтали
Визуализация решения систем линейных уравнений
Мы уже не раз использовали графические возможности Maple для визуализации решений математических задач. Так, многие особенности даже функций одной переменной вида /(%) могут быть выявлены с помощью графика этой функции. Затем можно точно вычислить корни функции (точки перехода через 0), экстремумы, крутизну наклона (производную) в заданных точках и т. д. Еще более информативна в этом отношении трехмерная графика — для большинства функций двух переменных вида z(x, у) нужно очень богатое математическое воображение, чтобы представить нх вид — особенно в одной из многих десятков координатных систем.
Однако некоторые виды графиков трудно представить себе даже при наличии такого воображения. В этом отношении Maple 7 предоставляет поистине уникальные возможности, обеспечивая простую и быструю визуализацию решений. Ниже мы рассмотрим несколько наиболее характерных примеров такой визуализации. Системы линейных уравнений могут решаться как с помощью функции solve, так и с помощью матричных методов. Замечательной возможностью функции sol ve является возможность решения относительно ограниченного числа переменных. Например, систему линейных уравнений с переменными х, у, z, t vl © можно решить относительно только первых трех переменных #, “ и z. При этом
решения будут функциями относительно переменных 看 и и и можно будет построить наглядный график решения (рис. 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. .max_y; о — необязательные параметры, например указывающие цвета линий, представляющих неравенства или равенства, и областей, образованных этими линиями и границами графика.
Пример применения этой функции представлен на рис. 12.33.
岡 Maule 7 - "neqatinw* - [Setver 1Н
& £fe笫ew 餌M Fo^ai , “:…、@рйми 褪mdow 撫呦
Отображение областей, представленных неравенствами
> with(plots):
inequal( {х+у>-1^ x-y<el,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 используется для цвета внешних областей. График дает весьма наглядную интерпретацию действия ряда неравенств (или равенств).
Конформные отображения на комплексной плоскости
Объем данной книги не позволяет объяснить столь тонкое понятие, как конформные отображения на комплексной плоскости. Ограничимся лишь указанием на то, что в пакете pl ots имеется функция для таких отображений:
conformal(F.rl,r2,o);
где F — комплексная процедура или выражение; г1, г2 — области, задаваемые в виде а. .Ь или name=a,.b; о — управляющие параметры. Таким образом, для построения нужного графика достаточно задать нужное выражение и области изменения г1 и г2. Пример построения конформных изображений для трех выражений дан на рис. 12.34.
Рис. 12.34. Конформное отображение на комплексной плоскости графиков трех зависимостей
Средства конформного отображения в Maple 7, к сожалению, остаются рудиментарными и вряд ли достаточными для спс口иалнстов в этой области математики*
Графическое представление содержимого матрицы
Многие вычисления имеют результаты, представляемые в форме матриц. Иногда такие результаты можно наглядно представить графически, например в виде гистограммы* Она представляет собой множество столбцов квадратного сечения, расположенных на плоскости, образованной осями строк (row), и столбцов (column) матрицы. При этом высота столбцов определяется содержимым ячеек матрицы.
Такое построение обеспечивает графическая функция matrixplot из пакета plots. На рис. 12.35 показано совместное применение зтой функции с двумя
функциями пакета linalg, формирующими две довольно экзотические матрицы А и В..
Рис. 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.o)
Она возвращает случайный полином переменной var, причем максимальная степень полинома птах может указываться параметром о вида degree=nmax.
Приведем примеры генерации случайного полинома с максимальной степенью 50:
ро!у:^randpol у([х],дедгее=50);
poly 尸 56 х44 + 49 х36 + 63 х34 + 57 产-59 f + 45 х6
polу:^randpol у([х],degreeK50);
poZy:= 66 x48 + 54 x37 - 5 x20 + 99x17 - 61 x5 - 50 x3
>poly:=randpolу([х],degree=50):
poly 产-91 x49 -47x32 - 61 x27 + 41 x12 - 58x9- 90 x8
С помощью функции allvalues можно построить список SA корней случайного полинома. А с помощью команды вида:
> with(plots):complexplot(SA.x=-1.2.. 1.2,stylе=ро1nt):
построить комплексные корни полученного случайного полинома в виде точек на комплексной плоскости. Один из таких графиков (их можно построить множество) показан на рис. 12.37.
Рис. 12.37. Расположение корней случайного полинома на комплексной плоскости
Можно заметить любопытную закономерность — точки, представляющие корни случайного полинома, укладываются вблизи окружности единичного радиуса с центром в начале координат. Однако этот пример, приводимый в ряде книг по Maple, показывает, что порою вычисления могут давать довольно неожиданные результаты. Кстати говоря, аналитически можно вычислять корни полинома с максимальной степенью не более четырех.
Визуализация поверхностей
со многими экстремумами
Maple 7 дает прекрасные возможности для визуализации поверхностей, имеющих множество пиков и впадин, другими словами, экстремумов. Рисунок 12.38 показывает задание «вулканической» поверхности с глубокой впадиной, окруженной пятью пиками. Здесь полезно обратить внимание на способ задания такой поверхности 八〃,Л, с) как функции трех переменных 〃,方 и с Он обеспечивает индивидуальное задание координат каждого экстремума и его высоты (отрицательной для впадины).
|[3Maple7"3dcontMWSTSe,verin
& Efe'^iK 如、鹏' Ft^ ''',、冲入> 0рШ ^М№ 限、' '',■词Е
[Построение 3D графика поверхности с контурными линиями на ней类
Г> f:=(а,Ь,с)->с*ехр(-(х-а)Л2-(у-b)Л2) ;^
I тооп:=Г(0,0,-3)+Г(2,2,2)+Г(-2,-2,2)+Г<-1,2гЗ)+Г(1,-2,2)+Г(2,0,2):i
I plot3d(inoon , х=-3 . . 3 , )-3 . . 3 ,contours=20 , t itle- ' Вулканическая поверхность' ,
! s t yle=patchcontour , axes=frante, shading^ZHUE , orient at ion= [60,50]):
22
],,,(У* —魂)—U - 6))
I/:= 3 6, c) —> c e
Вулканическая поверхностьШ
Рис. 12.38. Построение графика поверхности с множеством экстремумов
Наглядность этого графика усилена за счет применения функциональной окраски и контурных линий, нанесенных на саму поверхность. Все эти возможности обеспечивают параметры основной функ口ии plot3d.
А на рис. 12.39 представлен еще один способ задания поверхности — с помощью функции двух угловых переменных /(0, (р).
При построении этого рисунка также используются функциональная окраска и построение контурных линий.
Визуализация построения касательной
и перпендикуляра
В ряде геометрических построений нужно строить касательную и перпендикуляр к кривой, отображающей произвольную функцию/(х) в заданной точке х = а. Рисунок 12.40 поясняет, к^к это можно сделать. Линии касательной Т(х) и перпендикуляра N(x) определены аналитически через производную в заданной точке. Во избежание геометрических искажений положения касательной и перпендикуляра при построении графика функцией plot надо использовать параметр seal1ng=constrained. “
咼 Maple 7 - Rdf2v tnw…SenroiJD RO I
0'£Й E涝 ^ew“Mt fepn# 2>、、、,、/ S^em iM* 睜 、、“、、‘ a、c iQ、《 代、< 4、、,、、、、' w *[”吞
[ 3D график поверхности, заданной функцией двух переменных恚
f:-(theta,phi)-> (8*sin(phi)-8*sin(theta)-6*sin(theta-phi))/总
(15+6*cos(theta)+6*cos(phi))л2;
8 sm( ) - 8 siii( 0) - 6 sm(0 - Л)
/:= (0,
(15 + 6 cos(e)+ 6 cos(,))
plot3d(f(thet a,phi),theta--Pi..5*₽i/2,phi=-₽i/2 . .3*₽i,grid-[35,35 I, contours=20,title='График поверхности, заданной функцией двух переменных f(theta, phi)',style=patchcontour, axes=£rame, shading—ZHUE, orientation« [115,55 I);
График поверхности, заданной функцией двух переменных f(theta,phi)
Рис. 12.39. Построение графика поверхности, заданной функцией двух угловых переменных
L13ix|L13ix|I 圖 Maple7 - hn. cwve.mw* - ISeivei ih
L13ix|
L13ix|
[Построение касательной и перпендикуляра к функции f(x) в точке х=а
f :=x -> 2+ sin(xA2)/(x-l):a :=2.1:
T :- x -> f(a) + (x-a)*D(f)(a);
Г:= x -> f(a) + (x - л) D(/)(a)
N :- x -> f(a) - (x-a)/D(f)(a);
〉
plot( {f(x) , T<x), N(x)), x—5..5, sealing«constrained, coloi?=black);
^:=x -> f⑷-——~~- D(/)⑷
y—-2..5, discont = true.
Рис. 12.40. Построение касательной и перпендикуляра к заданной точке графика функции Дх)
Визуализация вычисления определенных интегралов
Часто возникает необходимость в геометрическом представлении определенных интегралов в виде алгебраической суммы площадей, ограниченных кривой подынтегральной функции /(х), осью абсцисс х и вертикалями % = g и х = b (пределами интегрирования). При этом желательно обеспечение закраски верхней и нижней (отрицательной и положительной) площадей разными цветами, например зеленым для верхней площади и красным для нижней. Как известно, численное значение определенного интеграла есть разность этих площадей.
К сожалению, в Maple 7 нет встроенной функции, явно дающей такое построение. Однако ее несложно создать. На рис. 12.41 представлена процедура a_plot, решающая эту задачу. Параметрами процедуры являются интегрируемая функция /(х) (заданная как функция пользователя), пределы интегрирования а и b и пределы слева ат и справа Ьт, задающие область построения графика /(.г).
Рисунок 12.41 дает прекрасное представление о сущности интегрирования для определенного интеграла. Приведенную на этом рисунке процедуру можно использовать для подготовки эффектных уроков по интегрированию разных функций.
Рис. 12.41. Графическое представление определенного интеграла
Визуализация теоремы Пифагора
Еще один пример наглядного геометрического представления математических понятий — визуализация известной теоремы Пифагора (рис. 12.42).
В этом примере используется функция построения многоугольников. Наглядность построений усиливается выбором разной цветовой окраски треугольников и квадрата.
|F^Matrfe7 • hrf»rfagrmw$ - ISeive,lil|F^Matrfe7 • hrf»rfagrmw$ - ISeive,lil
|F^Matrfe7 • hrf»rfagrmw$ - ISeive,lil
|F^Matrfe7 • hrf»rfagrmw$ - ISeive,lil
Визуализация дифференциальных параметров кривых
Дифференциальные параметры функции /(х), описывающей некоторую кривую, имеют большое значение для анализа ее особых точек и областей существования. Так, точки с нулевой первой производной задают области, где кривая нарастает (первая производная положительна) или убывает (первая производная отрицательна) с ростом аргумента х Нули второй производной задают точки перегиба кривой.
Следующая графическая процедура служит для визуализации поведения кривой £ = f(x) на отрезке изменения х от « до й:
with (plots):
shape_plot := proc(fl.a.b)
local 1,n,xl,x2.xm1d,d.yl.y2,A,B. m.M,slope, concav:
n:= 200; d := (b-a)/n; x2 :工 a;
M :工 maximize( f(x), x == a..b); m := min1mize(f(x),x = a..b);1
for i 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 := evalf( subs( x 工 xmid, diff( fl.x $
2)));
if( slope > 0 )
then A[1]:=plot(fl,x=xl..x2,color=blue.thickness=4,axes=box);
else A[1]:нр1 ot(fl,x=xl..x2.color®red,thickness=2,axes=box); fi:
if( concav > 0 ) then
B[i]:=polygonplot([[xl.M].[xl.yl].[x2.y2].[x2.M]]. color=green.style^patchnogrid);
else
B[1]:«polygonplot( [[xl,m].[xl,yl],[x2,y2].[x2,m]], color«coral,style«patchnogrid);
fl;
od;
display({ seq( A[i],i=l. .n ).seq( B[i],i<..n ) });
end;
В этой процедуре заданы следующие цвета (их можно изменить):
Таблица 12.1. Цвета при визуализации в процедуре shape_plot
Изменение /(х)
Цвет
Возрастание
Синий
Убывание
Красный
Площадь
Цвет
Над минимумом
Зеленый
Под максимумом
Коралловый
Например, для функции:
f:=x*sin(x)+x/2;sh叩e_plot(f(x),-6,6):
/:=%—> sin(x) +^x
построенный график будет иметь вид, представленный на рис. 12.43 (естественно, в книге цвета — лишь оттенки серого).
Рисунок 12,43 дает наглядное представление о поведении заданной функции. Рекомендуется опробовать данную процедуру на других функциях. Следует отметить, что, поскольку процедура использует функции mimlmlze и 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(x) =х
Классическим методом решения нелинейных уравнений является сведение их к виду х = /(х) и применение метода простых итераций хА = s(xA1) при заданном значении /. Приведем пример такого решения:
> f :== х ->3*1п(х+1);
/:=х—> 3 ln(x+ 1)
х| |0 产 0.5: хО := .5
хО := .5;
хО 尸.5
for k from 1 to 16 do x| |k := evalf( f(x| |(k-D)): od;
xl := 1.2163 953 24
x2 := 2.38 7646445
x3 := 3.660406248
x4 :二 4.617307866
x5 := 5.177557566
x6 := 5.462768 931
5.598173559
x8:= 5.660378631
x9 尸 5.688529002
x/0:= 5.701181910
xll := 5.706851745
xl2 := 5.709388956
xI3 := 5.710523646
xl4 := 5.711030964
x/5:= 5.711257755
x/6:= 5.711359134
Нетрудно заметить, что значения xk в ходе итераций явно сходятся к некоторому значению. Проведем проверку решения, используя встроенную функцию solve:
> f(x) == X: solve(t, х); 3 ln(x + 1) =х 0-3LambertW ^-1, -^- е("*/3)^ - 1
Результат выглядит необычно — помимо довольно очевидного корня 尤=0 значение другого корня получено в виде специальной функции Ламберта. Впрочем, нетрудно найти и его численное значение:
> evalf(t):
0., 5.711441084
Однако как сделать процесс решения достаточно наглядным? Обычно Для этого строят графики двух зависимостей — прямой х и кривой/1(х) — и наносят на них ступенчатую линию перемещения точки /. Специальной функции для графиков подобного рода Maple 7 не имеет. Однако можно составить специальную
процедуру для их построения. Ее листинг, заимствованный из примера, описанного в пакете обучения системе Maple 7 — PowerTool s, представлен ниже:
restart; with(plots):
Warning, the name changecoorcis has been redefined
rec_plot :н proc( fl, a , b, xO)
local xl, x2, yl, y2, i , pl, p2, p3, n, al,a2;
x2 产 xO: y2:= 0: n :工10;
for i 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[1] := 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 * 1..n), seq( p2[i], i = 1..n) ): end:
Параметрами этой процедуры являются: fl — функция /(к); а и b — пределы изменения х при построении графика; хО — значение л; с которого начинаются итерации. Исполнив команду:
rec_plot( f(x). О, 8, хО);
можно наблюдать график, иллюстрйруюпдий итерационный процесс. Он представлен на рис. 12.45.
Рис. 12.45. Иллюстрация процесса итераций
Нетрудно заметить, что для данной функции процесс итераций хотя и не очень быстро, но уверенно сходится к точке пересечения прямой у = х к кривой у = /(х). Вы можете, меняя зависимость /(х), провести исследования сходимости уравнений х = f(x).
Построение сложных фигур в полярной системе координат
Некоторые виды математической графики имеют определенную художественную ценность и фигурируют в символике различных стран и общественных
организаций. Остановимся на нескольких таких примерах применительно к графике в полярной системе координат. Представим фигуры, образованные множеством линий на плоскости.
Рисунок 12.46 демонстрирует одну из таких фигур. Это семейство из 10 кардиоид разного размера. Параметр seal 1 ing=constrained обеспечивает правильное отображение фигур — каждая кардиоида вписывается в огибающую ее невидимую окружность. Размер кардиоид задается значением параметра а.
Рис.12.46. Семейство кардиоид на одном графике
Еще одно семейство кардиоид, на сей раз шестилепестковых, представлено на рис. 12.47. Здесь также изменяемым параметром каждой фигуры является ее размер, заданный параметром а.
Фигуре, представленной на рис. 12.48, трудно дать определенное название. Назовем ее волнообразной спиралью.
По образу и подобию приведенных фигур читатель может опробовать свои силы в создании новых красочных фигур в полярной системе координат. Некоторые из них поразительно напоминают снежинки, картинки в калейдоскопе и изоб- ражейия морских звезд. Если убрать параметр col or=black, введенный ради черно-белой печати картинок в книге, то можно усилить красочность фигур за счет их разноцветной окраски.
Рис.12.48. Фигура — волнообразная спираль
Построение сложных фигур импликативной графики
Импликативные функции (см. урок 7) нередко имеют графики весьма любопытного вида. Ограничимся парой примеров построения таких графиков, представленных на рис. 12.49. Эти фигуры напоминают контурные графики функции двух переменных.
Приведенные примеры дают весьма наглядное представление о больших возможностях визуализации решений самых различных задач в системе Maple V. Можно значительно расширить их, эффектно используя описанные ранее приемы анимации изображений. В целом надо отметить, что графические возможности Maple 7 дают новый уровень качества графики современных математических систем, о котором с десяток лет тому назад можно было только мечтать.
Рис. 12.49. Построение сложных фигур, заданных импликативными функциями
Расширенная техника анимации
Анимирование разложения импульса в ряд Фурье
Анимирование изображений является одним из самых мощных средств визуализации результатов моделирования тех иди иных зависимостей или явлений.
Порою изменение во времени одного из параметров зависимости дает наглядное представление о его математической или физической сути.
Здесь мы расширим представление об анимации и рассмотрим не вполне обычный пример — наблюдение в динамике за гармоническим синтезом некоторой произвольной функции /(%) на отрезке изменения % от 0 до 1. Значения функции /(%) могут быть одного знака или разных знаков. В этом примере можно наблюдать в динамике синтез заданной функции рядом Фурье с ограниченным числом синусных членов (гармоник) — до 1, 2, 3...N. На рис. 12.50 представлен документ, реализующий такое разложение и затем синтез для пилообразного линейно нарастающего импульса, описываемого выражением /(%) = -1 + 2 * %. На графике строится исходная функция и результат ее синтеза в динамике анимации.
I 旧 Maple 7」lAftHtfier.mww - IServer 1R
咼咼④啟 *Й您钢 F哪我QmQi金$聯丄离弾罐歛於处恥蛛3n匈杀阑E E冷M 祖献№ 社曲
咼
咼
;a 67, -0.68 HI廿’
Представление функции 1(х) рядом Фурье с анимацией
> with(plots): N: =30 : f:ex->-l + 2*x:bf:=array(1. .N):
af:e(t fk)->Heaviside(t-k)*(t-k)-Heaviside(t-l-k)*(t-l-k):
for k to N do bf[k]:eevalf(2*int(sin(k*Pi*x)*f(x),xe0..1)) od:ts: = (xft) ->sum( af (t, n) *bf [nJ *sin(n*Pi*x) , n«l. . N);
u:= (x, X)-> £ af(X,n)^ sin(n xx) л ■ 1u:= (x, X)-> £ af(X,n)^ sin(n xx) л ■ 1Рис. 12.50. Один из первых стоп-кадров анимации разложения импульса в ряд ФурьеРис. 12.50. Один из первых стоп-кадров анимации разложения импульса в ряд Фурье
u:= (x, X)-> £ af(X,n)^ sin(n xx) л ■ 1
u:= (x, X)-> £ af(X,n)^ sin(n xx) л ■ 1
Рис. 12.50. Один из первых стоп-кадров анимации разложения импульса в ряд Фурье
Рис. 12.50. Один из первых стоп-кадров анимации разложения импульса в ряд Фурье
Рисунок 12.51 показывает завершающий стоп-кадр анимации, когда число гармоник N равно 30. Нетрудно заметить, что такое число гармоник в целом неплохо описывает большую часть импульса, хотя в его начале и в конце все еще заметны сильные отклонения.
Для /(х) = 1 строится приближение для однополярного импульса с длительностью 1 и амплитудой 1, при Дх) = х — приближение для пилообразного линейно
нарастающего импульса, при /(к)=『2 — приближение для нарастающего по параболе импульса, при /(х) = signum(x-l/2) — приближение для симметричного прямоугольного импульса-меандра и т. д. Фактически можно наблюдать анимационную картину изменения формы импульса по мере увеличения числа используемых для синтеза гармоник. Выбор используемого числа гармоник осуществляет амплитудный селектор — функция 叭£,/), основанная на применении функции Хевисайда.
Рис. 12.51. Второй (завершающий) кадр анимации
Самым интересным в этом примере оказывается наблюдение за зарождением и эволюцией эффекта Гиббса — так называют волнообразные колебания на вершине импульса, связанные с ограничением числа гармоник при синтезе сигнала. С ростом числа гармоник эффект Гиббса не исчезает, просто обусловленные им выбросы вблизи разрывов импульса становятся более кратковременными. Амплитуда импульсов может достигать 18% от амплитуды перепадов сигнала, что сильно ухудшает приближение импульсных сигналов рядами Фурье и вынуждает математиков разрабатывать особые меры по уменьшению эффекта Гиббса.
Можно ли наблюдать одновременно все фазы анимации? Можно! Для этого достаточно оформить анимационную картину, созданную функцией animate, в виде
отдельного графического объекта, например д, после чего можно вывести все его фазы оператором display. Это и иллюстрирует рис. 12.52. На этот раз задано /(х) = signum(x-l/2) и N = 25. Таким образом рассматриваются симметричные прямоугольные импульсы 一 меандр. У каждого рисунка координатные оси с делениями удалены параметром axes=none.
& Hie Edit 渺e央 Jnseii Fc^iM - “ gptions Window 抖綺吊〔瑋[审
「Фазы представления функции f(x) рядом Фурье при анимации袅
[> with (plots) : N: =2 5: f: ex->signum(x-l/2) :bf: «array (1. . N) :
af: = (t,k)->Heaviside(t-k)*(t-k)-Heaviside(t-1-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=l. . N):
g:=animate({f(x) ,ts(x,t) },x=0..1,t=0. .N,frameseN,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(£*%*“/3), представленной функцией трех переменных 力% и “. При этом изменение первой переменной создает фазы анимации поверхности.
Рис. 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)
dso1ve(ODE. у(х). extra_args)
dsolve({ODE. ICs), y(x), extra_args)
dso1ve({sysODE, ICs}. {funcs}extra_args)
Здесь ODE — одно обыкновенное дифференциальное уравнение или система из дифференциальных уравнений первого порядка с указанием начальных условий, у(х) — функция одной переменной, Ies — выражение, задающее начальные условия, {sysODE} —множество дифференциальных уравнений, {funcs} —множество неопределенных функций, extra_argument — опция, задающая тип решения. Параметр extra_argument задает класс решаемых уравнений. Отметим основные значения этого параметра:
О exact — аналитическое решение (принято по умолчанию);
О explicit — решение в явном виде;
О system — решение систейы дифференциальных уравнений;
О ICs — решение системы дифффенцвддьных уравнений с заданными начальными условиями:
О formal series — решение в форме степенного многочлена;
О integral transform — решение на основе интегральных преобразований Лапласа, Фурье и др,;
О series — решение в виде ряда с порядком, указываемыкг значением переменной Order;
О numeric — решение в численном виде.
Для решения задачи Коши в параметры dsol ve надо включать начальные условия, а при решении краевых задач — краевые условия. Если Maple способна найти решение при числе начальных или краевых условий мсныпего порядка системы, то в решении будут появляться неопределенные константы вида _С1, _С2 и т, д. Они же могут быть при аналитическом решении системы, когда начальные условия ые заданы. Если решение найдено в неявном виде, то в нем появится параметр _Т.
По умолчанию функция dsol ve автоматически выбирает наиболее подходящий метод решения дифференциальных уравнений. Однако в параметрах функции dsol ve в квадратных скобках можно указать предпочтительный метод решения дифференциальных уравнений. Допустимы следующие методы:
quadraturelinearBernoulliseparable
1nverse_l1nearhomogeneousChini11n_sym
exactAbelpot_sym
Информацию о каждом методе можно получить, используя команду ?d solve, met hod и указав в ней конкретный метоп,Например, команда ?dsolve, 1 тпеаг вызовет появление страницы справочной системы с подробным описанием линейного метода решения дифференциальных уравнении.
Производные при записи дифференциальных уравнений могут задаваться функцией diff или оператором D. Выражение sysODE должно иметь структуру множества и содержать помимо само!! системы уравнений их начальные условия.
Решение ОДУ первого порядка
Начнем рассмотрение практических примеров с решения одиночных обыкновенных дифференциальных уравнений (ОДУ) первого порядка:
> dsolve(diff(y(x),х)-а*х=0,у(х)):
у(х) = |ал2 + _С7
> dsolve(diff(y(x),x)-y(x)=exp(-х),у(х)):
у(х)=+ -С; е
> dsolve(diff(y(x),x)-y(x)=sin(x)*x,y(x)): 11
у(х) = ~2 cos(x) х~2 cos(x) - - sin(x) х + е" _С1
Следующие примеры иллюстрируют возможность решения одного и того же дцс^фда^期алвногд уравнения ode_L разными методами:
ode_L := sin(x)*diff(y(x),x)-cos(x)*y(x)«0; odej_ := sin(x)^^y(x)^- cos(x) y(x) = 0
dsolve(ode_L. [linear], uselnt);
y(x) = _C/ e
value(t);
y(x) = _C7 sin(x)
dsolve(ode_L, [separable], uselnt);
COS(XCOS(Xin(x)in(x)dx-dx-——d a +_a 一——d a +_a 一C/=0C/=0> value(X);ln(sin(x)) - ln(y(x)) + _C7 - 0> mu := 1ntfactor(ode_L):卩:=intfactoi^sin(x) ^^ y(x)^j - cos(x) y(x)二 0> dsolve( mu*ode_L, [exact], uselnt):> value(X);ln(sin(x)) - ln(y(x)) + _C7 - 0> mu := 1ntfactor(ode_L):卩:=intfactoi^sin(x) ^^ y(x)^j - cos(x) y(x)二 0> dsolve( mu*ode_L, [exact], uselnt):
COS(X
COS(X
in(x)
in(x)
dx-
dx-
——d a +
_a 一
——d a +
_a 一
C/=0
C/=0
> value(X);
ln(sin(x)) - ln(y(x)) + _C7 - 0
> mu := 1ntfactor(ode_L):
卩:=intfactoi^sin(x) ^^ y(x)^j - cos(x) y(x)二 0
> dsolve( mu*ode_L, [exact], uselnt):
> value(X);
ln(sin(x)) - ln(y(x)) + _C7 - 0
> mu := 1ntfactor(ode_L):
卩:=intfactoi^sin(x) ^^ y(x)^j - cos(x) y(x)二 0
> dsolve( mu*ode_L, [exact], uselnt):
Объем данной книги не позволяет остановиться на всех топкостях аналитического решения дифференциальных уравнений. Множество примеров такого решения дано в справочной базе данных Maple 7. К ней нужно обратиться в случае, если решение того или ш-юго дифференциального уравнения выходит за рамки учебного курса.
Решение дифференциальных уравнений второго порядка
Здесь видно, что для задания производной используется ранее рассмотренная функция diff. С помощью символа $ можно задать производную более высокого порядка. Ниже представлено решение двух дифференциальных уравнений второго порядка:
dsolve(diff(y(x),x$2)-diff(y(x),x)=sin(x).y(x)|;
(х) = - g sin(x) + g cos(x) + ex Cl + _C2
> de:»m*cl1 ff(y(x),x$2)-k*diff(y(x),x):
У(х)У(х)de:=m^^y(x)de:=m^^y(x)
У(х)
У(х)
de:=m^^y(x)
de:=m^^y(x)
> ух0:=у(0)=0.у(1)=1; ухО := у(0) = 0, у( 1) = 1 > dsolve({de,yxO},y(x)):
у⑴=у⑴=-1 + е‘-1 + е‘
у⑴=
у⑴=
-1 + е‘
-1 + е‘
Обратите внимание на решение второго из этих уравнений. Здесь использован прием визуализации исходного дифференциального уравнения, и оно задается значением переменной de. Кроме того, и это особенно важно, решение осуществляется при заданных начальных условиях. Именно поэтому в решении отсутствуют произвольные постоянные вида _CN.
Решение систем дифференциальных уравнений
冋 Maple 7 - [Do2.mws - [Serve,1]}冋 Maple 7 - [Do2.mws - [Serve,1]}На рис, 13.1 представлено решение системы из двух дифференциальных уравнений различными методами — в явном виде, в виде разложения в ряд и с использованием преобразования Лапласа. Здесь следует отметить, что решение в виде ряда является приближенным. Поэтому полученные в данном случае аналитические выражения отличаются от явного решения и решения с применением преобразования Лапласа,
冋 Maple 7 - [Do2.mws - [Serve,1]}
冋 Maple 7 - [Do2.mws - [Serve,1]}
佥氏 &或 ^w jra«i ¥сртеЛ -:-,,■ ';^r ^p№v>$ ^«iSw |^й>
г(х)|;г(х)|;Решение системы из двух дифференциальных уравнений
г(х)|;
г(х)|;
> sys ; - diff(y(x) ,x)-2*z (x)-y(x)-x, diff(z(x) ,x)«y(x) ^fcns := {y(x), dsolve({sys, y(0)-0 , z (0) -1}, fens);
:== 2z(x) - y(x) -= y(x)
3xax
fens^ {у(х), z(x)}5 (-2х) 1 х 1 1 {z(x) = Qe + je +[+产 У(х)=-fens^ {у(х), z(x)}5 (-2х) 1 х 1 1 {z(x) = Qe + je +[+产 У(х)=-5 (-2x)1—e + ~5 (-2x)1—e + ~6633X 1X 1
fens^ {у(х), z(x)}
5 (-2х) 1 х 1 1 {z(x) = Qe + je +[+产 У(х)=-
fens^ {у(х), z(x)}
5 (-2х) 1 х 1 1 {z(x) = Qe + je +[+产 У(х)=-
5 (-2x)1
—e + ~
5 (-2x)1
—e + ~
6
6
3
3
X 1
X 1
'> Order:』В: dso Ive <{sys,y<0)—0,n<0)T}, fens , series);
17 41З5 З6 53 48.
sa)-i + x 一产+石x -w1 +丽*一而工),
3 2 73 13 49 553 6107 78
Уа)一?х一尸 +&x -m1 +融х 一而х +而X +°a))
'> Order:e10;dsolve({sys ry( 0)*0rz (0)*1 J, fensr series);
、2 1 37 413 5 3 653 7107 8719 in
5)-1 + Х +RX -百工 +诃工+丽* -1^* +°a),
3 2 73 13 4 9 5 53 6 I" 771 я 61 g in
y(x)-2x-jx +-х --Х +-х -^х ~х -—х +—х +О(х )} > аяо1уе({яуя,у(0)-0гг(0)-11 гfens,laplace);
— (~2х) 115 (-2х) 1x1
{e)一镉 +五15 +产+ 7加)-一域 +镉 +f
[>
нетодлми
Следует отметить, что, несмотря на обширные возможности Maple 7 в области аналитического решения дифференциальных уравнений, оно возможно далеко не всегда. Поэтому, если не удается получить такое решение, полезно попытаться найти решение в численном виде.
Численное решение дифференциальных уравнений
Большинство нелинейных дифференциальных уравнений не имеет аналитического решения. Кроме того, часто аналитическое решение и не нужно, но требуется получить ответ в виде графических зависимостей,
В таких случаях для решения дифференциальных уравнений в численном виде используется функция dsolve с параметром numeric или type=numeric. При этом решение возвращается в виде специальной процедуры, по умолчанию реализующей широко известный метод решения дифференциальных уравнений Рунге—Кутта—Фелберга порядков 4 и 5 (в зависимости от условий адаптации решения к скорости его изменения). Эта процедура называется rkf45 и символически выводится (без тела) лри попытке решения заданной системы дифференциальных уравнений. Последнее достаточно наглядно иллюстрирует рис. 13.2.
Рис. 13.2. Решение системы дифференциальных уравнений численным методом rkf45 с выводом графика решения
Указанная процедура возвращает особый тип данных, позволяющих найти решение в любой точке или построить график решения (или решений). Для графического отображения Maple 7 предлагает ряд возможностей, и одна из них представлена на рис. 13.2 — см. последнюю строку ввода. При этом используется функция plot[odeplot] из пакета odeplot, предназначенного для визуализации решений дифференциальных уравнении.
В список параметров функции dsol ve можно явным образом включить указание на метод решения, например опцля mathod-dverk78 задает решение непрерывным методом Рунге—Кутта порядка 7 или 8. Вообще говоря, мысленное решение дифференциальных уравнений можно производить одш1м из следующих методов:
О classical — одна из восьми версии класслческого метода, используемого по умолчанию;
О rkf45 — метод Рунге—Кутта 4 или 5 порядка, модлфицнроваппын Фелбергом;
О dverk78 — непрерывный метод Руиге—Кутта порядка 7 пли 8;
О gear — одна из двух версий одношагового экстраполяционного метода Гира;
О mgear — одна из трех версий многошагового эктраполяцiю11^юго метода Гира;
О 1 sode — одна из восьми версий Ливенморского решателя жестких дифференциал ьных ypaв^lcнпй;
О taylorseries — метод разложения в ряд Teiijopa.
Обилие используемых методов расширяет возможности решения дифференциальных уравнений в численном виде. Большинство пользователей Maple 7 вполне устроит автоматически!! выбор метода решения по умолчанию. Однако в сложных случаях возможна прямая установка одного из указанных выше методов. С деталями реализации методов можно ознакомиться по справочной системе. С помощью параметра 'abserr'=аегг можно задать величину абсолютно/! norpeiu- ности решения, а с помощью 'minerr'=mine — минимальную величину погрешности. В большинстве случаев эти величины, заданные по умолчанию, оказываются приемлемыми для расчетов.
Maple 7 реализует адаптирусмьсе к ходу решения методы, при которых шаг решения h автоматически меняется, подстралва51сь иод условия решения. Так, если прогнозируемая погрешность решения становится больше заданной, шаг решения автоматически уменьшается. Более того, система Maple способна автоматически выбирать наиболее подходящий для решаемой задачи метод решения.
Еще один пример решения системы дифференциальных уравнений представлен на рис. 13.3. Здесь на одном графике представлены зависимости "(_г) и z(x), представляющие полное решение заданной системы. При этом процедура имеет особый вид listprocedure и для преобразования списка выходных данных в векторы решения Y и Z используется функция subs.
Для решения достаточно Сложных задач полезны специальная структура DESol для решения дифференциальных уравнений и инструментальный пакет DEtools, содержащий самые изысканные средства для графической визуализации результатов решения дифференциальных уравнений. Эти средства мы более подробно рассмотрим в дальнейшем.
Рис. 13.3. Решение системы дифференциальных уравнений численным методом с выводом всех графиков искомых зависимостей
ВНИМАНИЕ
При решении некоторых задач физики и радиоэлектроники выбираемый по умолчанию шаг изменения аргументах или t- h может привести к неустойчивости решения. Неустойчивости можно избежать рядом способов. Можно, например, нормироеать ураене- ния, избегая необходимости использования малого шага. А можно задать заведомо малый шаг. Например, при method^classical для этого служит параметр stepsize=h. Примеры такого подхода будут даны в уроке 17 (см. Решение физических задач и моделирование цепи на туннельном диоде).
Дифференциальные уравнения с кусочными функциями
Функции кусочного типа широко используются при математическом моделировании различных физических объектов и систем. В основе такого моделирования обычно лежит решение дифференциальных уравнений, описывающих поведение объектов и систем. Покажем возможность применения кусочных функций для решения дифференциальных уравнений.
Ниже представлено задание дифференциального уравнения первого порядка, содержащего кусочную функцию:'
>eq 尸 diff(y(x), х)+ piecewise(x<x*2-3, ехр(х/2))*у(х);
eq :=
(l/2x)
О
х < х2 - 3 otherwise
У(х)
Используя функцию dsolve, выполним решение этого дифферсвдиального уравнения:
>dsolve(eq, у(х));
("2 к)С/ е<-2е)("2 к)С/ е<-2е)
("2 к)
С/ е<-2е)
("2 к)
С/ е<-2е)
У&) =У&) =(1/4 - 1/4厂 7(-2е')С1 е(1/4 - 1/4厂 7(-2е')С1 еЛ'<Л'<11 - ГЧ +1 - ГЧ11 - ГЧ +1 - ГЧ(1/4- 1/4-ДЗ) (1/2 л )宀 Те-2еС1 е(1/4- 1/4-ДЗ) (1/2 л )宀 Те-2еС1 е(1/4 + 1/4 产!)+ 2 е)(1/4 + 1/4 产!)+ 2 е)2 + 2 ^"^ - х2 + 2 ^"^ - х
У&) =
У&) =
(1/4 - 1/4
厂 7(-2е')
С1 е
(1/4 - 1/4
厂 7(-2е')
С1 е
Л'<
Л'<
11 - ГЧ +
1 - ГЧ
11 - ГЧ +
1 - ГЧ
(1/4- 1/4-ДЗ) (1/2 л )
宀 Те-2е
С1 е
(1/4- 1/4-ДЗ) (1/2 л )
宀 Те-2е
С1 е
(1/4 + 1/4 产!)
+ 2 е)
(1/4 + 1/4 产!)
+ 2 е)
2 + 2 ^"^ - х
2 + 2 ^"^ - х
Нетрудно заметить, что результат получен также в форме кусочной функции, полностью определяющей решение на трех интервалах изменения х.
Приведем пример решения дифференциального уравнения второго порядка с кусочной функцией:
>eq := diff(y(x). х$2) + x*diff(y(x), х) + у(х) = piecewise(x > 0, 1);
0 <xotherwise0 <xotherwise困:=[^У(х)] + х(^у(х)] + у(х)={:
0 <xotherwise
0 <xotherwise
>dsolve(eq. y(x));
J'(x)=
2222Cl + e<4/2?)_C2Cl + e<4/2?)_C2Cl + e(-sl _С2 + е12'%"2С-е1”"Cl + e(-sl _С2 + е12'%"2С-е1”"л<00<лл<00<л
2
2
2
2
Cl + e<4/2?)_C2
Cl + e<4/2?)_C2
Cl + e(-sl _С2 + е12'%"2С-е1”"
Cl + e(-sl _С2 + е12'%"2С-е1”"
л<0
0<л
л<0
0<л
В конце этого раздела приведем пример решения нелинейного дифференциального уравнения Риккати с кусочной функцией:
> eq :=diff(y(x), x)^p-iecewise(x>0. х)*у(х)人2:
图:=^У(Х)=({;,0<Л.卜О)?
I 0 otherwise I
>dsolve({ y(0) = 1, eq }, y(x));>dsolve({ y(0) = 1, eq }, y(x));
>dsolve({ y(0) = 1, eq }, y(x));
>dsolve({ y(0) = 1, eq }, y(x));
В ряде случаев желательна проверка решения дифференциальных уравнений. Ниже показано, как она делается для последнего уравнения:
A5impWfy( eval(subs(t, eq))У;
ООх<00х<0
О
О
О <х= ' 4 —-0 <х
(М-2)
ПРИМЕЧАНИЕПРИМЕЧАНИЕКак видно из приведенных достаточно простых и наглядных примеров, результаты решения дифференциальных уравнений с кусочными функциями могут быть довольно громоздкими. Это, однако, не мешает эффективному применению функций данного класса.
ПРИМЕЧАНИЕ
ПРИМЕЧАНИЕ
Структура неявного представления дифференциальных уравнений — DESol
В ]^яде случаев иметь явное представление диф(1)срешшалы1ых уравнений нецелесообразно. Для неявного их прсдставлсшгя в Maple 7 введена специальная структура:
DESol(ехрг,vans)
где exprs — выражсттие для исходной системы дифференциальных уравнений, vars — заданный в виде опции список переменных (тиш одна переменная).
Структура DESol образует некоторый объект, даю щи г г представление о дифференциальных уравнениях, чем-то напоминающее RootOf. С этим объектом можно обращаться, как с функпиеГг, то есть его можно гштсгрировать, дифференцировать, получать разложение в ряд и вычпелять численными методами. На рис. 13.4 показаны примеры применения структуры DESol.
Рис. 13.4. Примеры применения структуры DESolРис. 13.4. Примеры применения структуры DESolОбратите внимание на последние пример — в нем структура DESol использована для получения решения дифферепциаяыюго уравнения в виде степенного ряда.
Рис. 13.4. Примеры применения структуры DESol
Рис. 13.4. Примеры применения структуры DESol
Инструментальный пакет решения дифференциальных уравнений DEtools
Средства пакета DEtools
Решение дифференциальных уравнений самых различных типов — одно нз достоинств системы Maple 7. Пакет DEtool s предоставляет ряд полезных (функций для решения дифференциальных уравнеиин и систем с такими уравнениями:
> with(DEtools);
Warning, the name adjoint has been redefined
[DEnormal, DEplot, DEplcf3d, DEplot_pofygon, DFactot; DFactorLCLM, DFocts飞ols、 Dchangevar, GCRD, LCLM, PDEchangecoords^ RiemannPsols, Xchange,
Xcommutator, Xgauge, abelsol, adjoint, autonomous, bcEoWtsol, buildsol. buildsym, canoni, caseplot, casesplit, checkrank, chinisol, clairautsol^ constcoeffsoh, convertAlg, convertsys, dalembertsol, dcoeffs, de2diffi)p、dfieldplot^ diffbp2de, dsubs,
cigenHng, endomorphism_charpoly, equmv, eta_k, eulersols, exactsol, expsols. exterior j)o\vei\firint^ firtest, formal_sol, gen_exp, generateJc^ genhomosol, gensys. hamiltonyqs, indicialeq, infgen, initialdata, integrate sols, intfactor, invariants, kovacicsols, leftdivisionliesol, /加e_i〃八 linearsol. matrixDE, matrixj'iccati^ moserj'educe, muchange, mult, mutest, newton_polygon, normalG2, odeadvisor, odepde, parafnetncsol, phaseportrait, poincare, pofysols, ratsols, red ode, reduceOrder, reduce_ordery regularj)arts, regularsp, removeJlootOf, riccati_systern, riccatisol、rifsimp^ rightdivision, rtaylor, separablesol, solve_group, superj'educesymgen, symmetric_power, symmetric_product, symtest, trans"】% translate, inUranslate, varparam, zoom ]
Этот пакет дает самые изысканные средства для аналитического и численного решения дифференциальных уравнений и систем с ними. По сравнению с версией Maple V R5 число функций данного пакета в Maple 7 возросло в несколько раз. Многие графические функции пакета DEtools были уже описаны. Ниже приводятся полные наименования тех функций, которые есть в реализациях R5, 6 и 7 системы Maple:
О DEnormal — возвращает нормализованную форму дифференциальных уравнений;
О DEplot — строит графики решения дифференциальных уравнений;
О DEpl ot3d — строит трехмерные графики для решения систем дифференциальных уравнений;
Q Ochangevar — изменение переменных в дифференциальных уравнениях;
О PDEchangecoords — изменение координатных систем для дифференциальных уравнений в частных производных;
О PDEplot — построение графиков решения дифференциальных уравнений в частных производных;
О autonomous — тестирует дифференциальные уравнения на автономность;
О convertAlg — возвращает список коэффициентов для дифференциальных уравнений;
О convertsys — преобразует систему дифференциальных уравнений в систему одиночных уравнений;
О dfieldplot — строит график решения дифференциальных уравнений в виде векторного поля;
О indicialeq — преобразует дифференциальные уравнения в полиномиальные;
О phaseportrait — строит график решения дифференциальных уравнений в форме фазового портрета;
О reduceOrder — понижает порядок дифференциальных уравнений;
О regularsp— вычисляет регулярные особые точки для дифференциальных уравнений второго порядка;
О translate — преобразует дифференциальные уравнения в список операторов;
О untranslate — преобразует список операторов в Д11ф())ерепциальныс уравнения;
О varparam — находит общее решение дифференцртальных уравнений методом вариации параметров.
Применение этих функций гарантирует совместимость документов реализаций Maple R5, 6 и 7.
Основные функции пакета DEtools
Ввиду обилия функций пакета DEtools дать их полное описание в данной книге не представляется возможным. Поэтому выборочно рассмотрим наиболее важные функции этого пакета. Функция:
autonomous(des.varsJ var)
тестирует дифференциальное уравнение (или систему) des. Ее параметрами помимо des являются независимая переменная Ivar и зависимая переменная dvar. Следующие примеры поясняют применение этой функции:
> autonomous(sin(z(t)-z(t)*2)*(DW)(z)(t)-cos(z(t))-5,z,t); true.
DE:=diff(x(s),s)-x(s)*cos(arctan(x(s)))=arctan(s):
autonomou s(DE,{x},s);
false
Функция Dchangevar используется для обеспечения замен (подстановок) в дифференциальных уравнениях:
Dchangevar(trans. deqns. c_ivar. n_ivar)
Dchangevar(tranl. tran2tranN.'deqns. cjvar. njvar)
В первом случае trans — список или множество уравнений, которые подставляются в дифференциальное уравнение, список или множество дифференциальных уравнений deqns. При этом c_1 var — имя текущей переменной, 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)=
п(х)Л2].х):
[D(/)(.v) sin(_v) + l(.v) cos(x) = l(x) sin(x), (D(“)(后)(x) - k(x)2]'
>Dchangevar(c=d.e^si n(f).{D(c),(D@@2)(e)}.dummy):
[D(d),(D®)(sin(/))]
Преобразование 2-го типа
> Dchangevar(t=arctan(tau).diff(x(t),t)HSin(t).t.tau);
D(.r)(arctan(T)) = sin( arctan(x))
Dchangevar(x=sin(cos(t)).diff(y(x).x.x.x),x.t):
(D ⑶)(),)(sin(cos(/)))
Преобразование 3-го типа
Dchangevar(x(t)=L*y(phi),diff(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):
二 tan( Tф)
de := diff(y(x),x$2) = y(x)*diff(y(x).x)/x;
,a? ,、у")傷 у")
Dchangevar({x= exp(t).y(x)=Y(t)},de.x,t):
¥5 丫⑺
2
eC)
Следует отметить, что подстановки являются мощным средством решения дифференциальных уравнений. Нередки случаи, когда дифференциальное уравнение не решается без их применения. Дополнительные примеры использования подстатовок можно найти в справочной базе данных системы Maple 7.
Функция нормализации ОДУ DEnormal синтаксически записывается в виде:
DEnormal(des.ivar.dvar)
где des — система дифференциальных уравнсп“1 Ivar — независимая переменная п dvar — зависимая переменная. Применение этой функции поясняют следующие примеры:
DE ;= хА3*у(х)+хА2*(х-l)*D(y)(x)+5O*xA3*(D@02)(у)(x)=x*sin(x):
DE :=.Ку(工)+尤2 (х - 1) D(y)(x) + 50r° (D⑵)(у)(н) =x sin(x)
DE2 := convertAlg(DE,y(x)):
DE2 尸[[f, 一 产,50 л*3 ], л* sin(_r)]
DEnormal(DE,x,y(x));
xy(x) + (x - 1)模y(x)j + 50x[±y(x)j = "^^
DEnormal(DE2,x):
「「― sing]
[x,x- 1, 50x],—-—
Функция convertAlg(des,dvar) возвращает список коэс^фицнситов формы системы дифференциальных уравнений des с зависимыми переменными dvar, Это поясняют следующие примеры:
А 尸 diff(y(x),x)*sin(x)-diff(y(x),x)-tan(x)*y(x)-5;
力尸[^y“)卜亩“)—[^ У")] — tan(x) y(x)二 5
convertAlg(A,y(x)):
[[-tan(x), sin(x)- 1], 5]
В := (D@@2)(y)(x)*cos(x) + (D(a(a2)(y)(x)*5*x*2:
В := (D°))(y)(x) cos(x) + 5 (D(2))00(.v)^
convertAlg(B,y(x));
[[0, 0, cos(x) + 5 <], 0]
Для изменения перемениых в системах дифференциальиых уравнении нсполь- зуется функция convertsys:
convertsystdeqns. inits, vars, ivar, yvec. ypvec)
Здесь deqns — одно дифференциальное уравнение или список (множество), представляющие систему дифференциальных уравнений первого порядка, inits — множество или список начальных условий, vars — зависимые переменные, Ivar — независимые переменные, yvec — вектор решений и ypvec — вектор производных. Функция:
indicialeq(des,ivar.alpha.dvar)
обеспечивает полиномиальное представление для линейного однородного дифференциального уравнения второго порядка des. Параметр alpha намечает точку сингулярности.
Y - (2*xx2+5*x*3)*diff(y(x).x.x)+(5*x-xx2)*d1ff(y(x),x)+(l+x)*y(x)=-0:
Y'convertAlg( Y. у(х));
К:=[[1 +х,5х > indicialeq( Y.> indicialeq( Y, г з 1八 х" + -х + - = 0> indicialeq( Y. x2 - x = 0 Функция:К:=[[1 +х,5х > indicialeq( Y.> indicialeq( Y, г з 1八 х" + -х + - = 0> indicialeq( Y. x2 - x = 0 Функция:-х2, 2х2 + 5х3], 0]X. -2/5. у(х)):-х2, 2х2 + 5х3], 0]X. -2/5. у(х)):X. 0. у(х));X. 0. у(х));X. 1. у(х)):X. 1. у(х)):
К:=[[1 +х,5х > indicialeq( Y.
> indicialeq( Y, г з 1八 х" + -х + - = 0
> indicialeq( Y. x2 - x = 0 Функция:
К:=[[1 +х,5х > indicialeq( Y.
> indicialeq( Y, г з 1八 х" + -х + - = 0
> indicialeq( Y. x2 - x = 0 Функция:
-х2, 2х2 + 5х3], 0]
X. -2/5. у(х)):
-х2, 2х2 + 5х3], 0]
X. -2/5. у(х)):
X. 0. у(х));
X. 0. у(х));
X. 1. у(х)):
X. 1. у(х)):
reduceOrder(des,dvar,partsol, solutionForm)
обеспечивает понижение порядка дифференциального уравнения des (или системы уравнений, представленных списком или множеством) при зависимых переменных dvar, частном решении part sol (или списке частных решений) м флаге sol utionForm, показывающем, что решение происходит явным методом (explicitly). Для демонстрации действия этой функции воспользуемся примером из ее справочной страницы:
de := diff(y(x).х$3) - 6*diff(y(x),х$2) + ll*diff(y(x).х) - 6*у(х):
У(х)] + 11 假У")卜 6y(x)У(х)] + 11 假У")卜 6y(x)de := I『y(x)de := I『y(x)
У(х)] + 11 假У")卜 6y(x)
У(х)] + 11 假У")卜 6y(x)
de := I『y(x)
de := I『y(x)
sol := exp(x):
sol := eY
reduceOrder( de, y(x). sol):
偿 卜 3(2)j + 2y(x)
reduceOrder( de. y(x). sol, basis):
e,e ,2 e
Функция:
regularsp(des,1var.dvar)
вычисляет регулярные особые (сингулярные) точки для дифференциального уравнения второго порядка или системы дифференциальных уравнений des. Следующий пример поясняет применение данной функции:
coefs := [21*(х*2 - х + 1),0.100*х*2*(х-1)*2]:
regularsp(coefs. х): [0,1]
Еще две функции пакета "DEtool s:
translate(des,ivar.pt.dvar)
untranslate(des,ivar,pt,dvar)
выполняют особую операцию трансляции дифференциального уравнения (или списка дафференциальных уравнений) из центрированного относительно 0 в цен-
трированное относительно 1 и наоборот. С деталями этого специфического процесса заинтерссованный читатель может познакомиться в справочной базе данных.
И еще одна полезная функция пакета:
varparam(sols.v.ivar)
находит общее решение дифференциального уравнения (или системы уравнений) sol s методом вариации параметров. Параметр v задает правую часть уравнения; если он равен 0, ищется только частичное решение:
varparam( [ul(x), u2(x)], g(x), x):
一C| ul(.r) +_C2 u2(x) +—gu-(:)g(x)^厶ul(x) +
ul(x) ^и2(л-) j-u2(x)l ^ul(.r) j
,Ul(x) g(.Y) . ”、
7a S 7a ^/xu2(x) 浜 U2(x)) — u2(x)| 凝 ul(x))
Более подробную информацию об этих функциях читатель найдет в их справочных страницах, а также в информационном документе detools,mws, содержащем системс^тизированное описание пакета DEtool s с многочисленными примерами его применения.
Графическое представление решений дифференциальных уравнений
Применение функции odeplot пакета plots
Для обычного графического представления результатов решения дифференциальных уравнений может использоваться функция odeplot из описанного выше пакета plots. Эта функция используется в следующем виде:
odeplot(s,vars.r.o)
где s — запись (в выходной форме) дифференциального уравнения или системы дифференциальных уравнений, решаемых численно функцией dsolve, vars — переменные, г — параметр, задающий пределы решения (например, а. .Ь), и о — необязательные дополнительные опции.
На рис, 13.5 представлен пример решения одиночного дифференциального уравнения с выводом решения у(%) с помощью функции odeplot.
В этом примере решается дифференциальное уравнение;
у'(х) == cos(x%(x))
при у(0) = 2 и х, меняющемся от -5 до 5. Левая часть уравнения записана с помощью функции вычисления производной diff. Результатом построения является график решения у(%)・
В другом примере (рис. 13.6) представлено решение системы из двух нелинейных дифференциальных уравнений. Здесь с помощью функции odepl ot строятся графики двух функций — у(х) и z(久).
В этом примере решается система:
У«Х)= N(X).
n'(x) = 3 sin(y(x))
при начальных условиях “(0) = 0, z(0) = 1 и х, меняющемся от -4 до 4 при числе точек решения, равном 25.
Иногда решение системы из двух дифференциальных уравнений (или одного дифференциального уравнения второго порядка) представляется в виде фазового портрета — при этом по осям графика откладываются значения 少(久)и z(,r) при изменении 力 в определенных пределах. Рисунок 13.7 демонстрирует построение фазового портрета для системы, представленной bhhi巳
Обычное решение, как правило, более наглядно, чем фазовый портрет решения. Однако для специалистов (например, в теории колебаний) фазовый портрет порою дает больше информации, чем обычное решение. Он более трудоемок для построения, поэтому возможность Maple 7 быстро строить фазовые портреты трудно переоценить.
I 目 Mapte 7 "OdeplZmw …SeiYerJ".. —賤期 O'
⑥ £4в 0 Ye ММ FI “ Er> W»r H屮*'-同*1
•:EV;,.k・;*X*:«RK":,:gkw:0:3X**KO:"•: "KV; W;*:・;・*:、FZ・;**i、、、、、 、 、к、"、、、、:.WU.l".”
Решение системы из двух дифференциальных уравнений军
с выводом графиков решения
> with(plots);
sys := diff(y(x) (x)=z(x) ,diff(z(x) , x)-3*sin (y(x)):;
fens :- {y(x), z(x)):
p: = dsolve ({ sys , у (0) =0, z (0)«l) , fens , type«numeric) :
odeplot(p, [[x,y(x)], [x,z(x)]],-4. .4,nun4?oints=2 5,color=black);
Рис. 13.6. Пример решения системы из двух дифференциальных уравненийРис. 13.6. Пример решения системы из двух дифференциальных уравнений|£ЗМар1е7 иНерЗпиц“5е<уе»1Н 専口隣|£ЗМар1е7 иНерЗпиц“5е<уе»1Н 専口隣改轴金琳 ®6« jniM't FiWf ),- "- 聯标顕Mw 鼎勃&1S1石Решение системы из двух дифференциальных уравнений冬с выводом графика фазового портрета решения> with(plots) :::■.sys :« diff(y(x),x)-z(x),diff(z(x),x)-3*sin(y(x));fens :- {y(X), 2(x)卜p: =■ dsolve ({sys,y(0)-0,z(0)«l|, fens , type-numeric ):odeplot(p, [y(x),z(x)],-4..4,numpoint s=5 0,color=black);改轴金琳 ®6« jniM't FiWf ),- "- 聯标顕Mw 鼎勃&1S1石Решение системы из двух дифференциальных уравнений冬с выводом графика фазового портрета решения> with(plots) :::■.sys :« diff(y(x),x)-z(x),diff(z(x),x)-3*sin(y(x));fens :- {y(X), 2(x)卜p: =■ dsolve ({sys,y(0)-0,z(0)«l|, fens , type-numeric ):odeplot(p, [y(x),z(x)],-4..4,numpoint s=5 0,color=black);
Рис. 13.6. Пример решения системы из двух дифференциальных уравнений
Рис. 13.6. Пример решения системы из двух дифференциальных уравнений
|£ЗМар1е7 иНерЗпиц“5е<уе»1Н 専口隣
|£ЗМар1е7 иНерЗпиц“5е<уе»1Н 専口隣
改轴金琳 ®6« jniM't FiWf ),- "- 聯标顕Mw 鼎勃&1S1石
Решение системы из двух дифференциальных уравнений冬
с выводом графика фазового портрета решения
> with(plots) :::■.
sys :« diff(y(x),x)-z(x),diff(z(x),x)-3*sin(y(x));
fens :- {y(X), 2(x)卜
p: =■ dsolve ({sys,y(0)-0,z(0)«l|, fens , type-numeric ):
odeplot(p, [y(x),z(x)],-4..4,numpoint s=5 0,color=black);
改轴金琳 ®6« jniM't FiWf ),- "- 聯标顕Mw 鼎勃&1S1石
Решение системы из двух дифференциальных уравнений冬
с выводом графика фазового портрета решения
> with(plots) :::■.
sys :« diff(y(x),x)-z(x),diff(z(x),x)-3*sin(y(x));
fens :- {y(X), 2(x)卜
p: =■ dsolve ({sys,y(0)-0,z(0)«l|, fens , type-numeric ):
odeplot(p, [y(x),z(x)],-4..4,numpoint s=5 0,color=black);
Функция DEplot из пакета DEtools
Специально для решения и визуализации решений дифференциальных уравнений и систем с дифференциальными уравнениями служит инструментальный пакет DEtools. В него входит ряд функций для построения наиболее сложных и изысканных графиков решения дифференциальных уравнений. Основной из этих функций является функция DEplot.
Функция DEplot может записываться в нескольких формах:
DEplot(deqns. vars. trange. eqns)
DEplot(deqns. vars. trange. inits. eqns)
DEplot(deqns. vars. trange. yrange. xrange. eqns)
DEplottdeqns. vars. trange, inits. xrange. yrange. eqns)
Здесь deqns — список или множество, содержащее систему дифференциальных уравнений первого порядка или одиночное уравнение любого порядка; vars — зависимая переменная или список либо множество зависимых переменных; trange — область изменения независимой переменной t; inits — начальные условия для решения; yrange — область изменения для первой зависимой переменной, xrange — область изменения для второй зависимой переменной; eqns — опция, записываемая в виде keyword=value. Замена имен переменных другими в данном случае недопустима.
Эта функция обеспечивает численное решение дифференциальных уравнений или их систем при одной независимой переменной t и строит графики решения. Для автономных систем эти гра(|)ики строятся в виде векторного поля направлений, а для неавтономных систем — только в виде кривых решения. По умолчаиию реализуется метод Рунге—Кутта 4-го порядка, что соответствует опции method=classical[гк4].
С функцией DEplot могут использоваться следующие параметры:
О arrows = type — тип стрелки векторного поля ('SMALL', 'MEDIUM1, 'LARGE', 'LINE' или 'NONE');
О colour, color = arrowcolour — цвет стрелок (задается 7 способами);
О dirgrid = [integer,integer] — число линий сетки (по умолчанию [20, 20]);
О iterations = integer — количество итераций, представленное целым числом;
О linecolor, linecolor = 1 ine_info — цвет линии (задается 5 способами);
О method='rk4, — задает метод решения ('euler', 'backeuler', 'impeuler' или 'rk4');
О obsrange = TRUE, FALSE — задает (при TRUE) прерывание вычислений, если кривая решения выходит из области обзора;
О scene = [name,name] — задает имена зависимых переменных, для которых строится график;
О stepsize = h — шаг решения, по умолчанию равный abs((b-a))/20 и представленный вещественным значением.
На рис. 13.8 показано решение системы дифференциальных уравнений:
xV) = x(/)(l -ХО),
у") = 0,3 у⑺(х«)- 1),
описывающих модель Лотки—Вольтерра при заданных в документе изменениях Z, *«) li “«). Решение представлено в виде векторного поля, стрелки которого являются касательными к кривым решения (сами эти кривые не строятся). Обратите внимание на функциональную закраску стрелок векторного по.;1я, делающую решение особенно наглядным (правда, лишь на экране ЦI^eт^^oгo дисплея, а нс на страницах кнн门i).
Рис. 13.8. Решение системы дифференциальных уравнений Лотки—Вольтерра с выводом в виде графика векторного поля
Еще интересней вариант графиков, представленный на рис. 13.9. Здесь помимо векторного поля несколько иного стиля построены фазовые портреты решения с использованием функциональной закраски их линий. Фазовые портреты построены для двух наборов начальных условий: %(0) = “(0) = 1,2 и х(0) = 1 п "(0) = 07 ”
Следует отметить, что функция DEplot может обращаться к другим функциям пакета DEtools для обеспечения специальных графических возможностей, таких как построение векторного поля или фазового портрета решения.
Рис. 13.9. Пример построения двух фазовых портретов на фоне векторного поля
Функция DEplot3d из пакета DEtools
В ряде случаев решение систем дифференциальных уравнений удобно представлять в виде пространственных кривых — например, линий равного уровня или просто в виде кривых в пространстве. Для этого служит функция DEplot3d:
DEplot3d(deqns. vars. trange. initset. о)
DEplot3d(deqns. vars. trange, yrange. xrange. Initset. o)
Назначение параметров этой функции аналогично указанному для функции DEpl ot.
Рисунок 13.10 поясняет применение функции DEPlot3d для решения системы из двух дифференциальных уравнений с выводом фазового портрета колебаний в виде параметрически заданной зависимости х(%), "«)• В данном случае фазовый портрет строится на плоскости по типу построения графиков линий равной высоты.
Другой пример (ри& 13.11) показывает решение системы из двух дифференциальных уравнений с построением объемного фазового портрета. В этом случае используется трехмерная координатная система и графические построения соответствуют параметрическим зависимостям _г(Х), “(%) и z(0. Вид фазового портрета напоминает разворачивающуюся в пространстве объемную спираль.
Функциональная окраска делает график пикантным, что, увы, теряется при черно-белом воспроизведении графика..
Hl Maple 7 - (DetoolS mws - (Server 1]]
⑥險&Л 驭我 Ней RW 二;<»3g ^B^^^^t;賦、,,>/ ■ ,].、" '.举.,竄
Построение фазового портрета для решения системы из двух дифференциальныхуравнений с выводом фазового портрета функцией DEplot3d
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, у(0)=1.8],[x(0)«-2*Pi, y(0)-l], [x(0)=2*Pi, y(0)=.5],[x(0)=-2*Pi, y(0)^2.1],[x(0)-2*Pi, y(0)=-2.1]], stepsize=.2, title='Pendulum Vibrations', orient at ion—[0,90], method=classical[abmoulton], correctionse3, axes«NORMAL, linecoloreblack.);
Pendulum Vibrations
Рис. 13.10. Пример решения системы из двух дифференциальных уравнений с помощью функции DEplot3d
Возможности функции DEplot3d позволяют решать системы, состоящие более чем из двух дифференциальных уравнений. Однако в этом случае число решений, представляемых графически, выходит за пределы возможного для трехмерной графики. При этом от пользователя зависит, какие из зависимостей опускаются при построении, а какие строятся.
Функция PDEplot пакета DEtools
Еще одна функция пакета DEtools — DEtools[PDEplot] — служит для построения графиков решения систем с квазилинейными дифференциальными уравнениями первого порядка в частных производных.
Эта функция используется в следующем виде:
PDEplot(pdiffeq. var. x1_curve. srange. о)
PDEplot(pdiffeq. var, i_curve. srange. xrange. yrange, urange. o)
卜.ПМсф1е 7 -[Dctcwl&mws • [Smvei 1)1
Построение 3D фазового портререта с помощью функции DEplot3d
> with(DEtools):DEplot3d((diff(x(t)ft)»y<t), diff (y(t) ,t)—s±n(x(t) )-y(t)/10),{x(t) ,y(t)),
[[х(0)»0,у(0)»1]],linecolor»t/3);[[х(0)»0,у(0)»1]],linecolor»t/3);t—-10.,20,stepsizee.1,t—-10.,20,stepsizee.1,
[[х(0)»0,у(0)»1]],linecolor»t/3);
[[х(0)»0,у(0)»1]],linecolor»t/3);
t—-10.,20,stepsizee.1,
t—-10.,20,stepsizee.1,
Рис. 13.11. Пример решения системы из двух дифференциальных уравненийс построением трехмерного фазового портрета
Здесь помимо упоминавшихся ранее параметров используются следующие: pdlffeq — квазилинейные диф(})ереициальные уравнения первого порядка (PDE), vars — независимая переменная и i curve — начальные условия для параметрических кривых трехмерной поверхности. Помимо опций, указанных для функции DEplot, здесь могут использоваться следующие опции:
О basechar 二 TRUE, FALSE, ONLY — устанавливает показ базовых характеристик кривых;
О basecolor, basecolor = b_color — устанавливает цвет базовых характеристик;
О 1 nitcolor, 1 nitcolor = i_color — инициализация цветов;
О numchar 二 Integer — задает число отрезков кривых, которое не должно быть меньше 4 (по умолчанию 20);
О numsteps = [ 1 ntegerl, integer2] — задает число шагов интегрирования (по
умолчанию [10, 10]).
Рисунок 13.12 демонстрирует применение функции PDEplot. Этот пример показывает, насколько необычным может быть решение даже простой системы дифференциальных уравнений в частных производных.
I[2]Maple 7 - IDetoolS mwi - IServer III^§8^3^lj
.依,眇 f或 ^f№*..iwt#4 Ft^a、…、…^^ .^tdcw .Ц^> y*、>、<«、、、、、、、 .、、、、” 、 j 皮扌玄
I Построение графика решения ДУ с помощью функции PDEplot4
> with(PDEtooIs):PDEplot(diff(z(u,v),u)*u*cos(v)-diff(z(u,v),v)*v*surd(u,3)二
=sin(u-v),z(u,v),[t,sin(t)^t/2]ft=-2*Pi..3*Pi,basechar=true,
iterations=2,numchar=40 fstepsize=.05,numsteps=[20,20], orientalion=[-120,70],style=PATCHCONTOUR):
Рис. 13.12. Пример применения функции PDEplotРис. 13.12. Пример применения функции PDEplot
Рис. 13.12. Пример применения функции PDEplot
Рис. 13.12. Пример применения функции PDEplot
В данном случае решение представлено трехмерной фигурой весьма нерегулярного вида.
Другой пример использования функции PDEplot показан на рис, 13.13, Он иллюстрирует комбинированное построение гра(]^иков решения разного типа с применением функциональной закраски, реализуемой по заданной форму口6 с помощью опции im'tcolor.
Еще раз отметим, что, к сожалению, рисунки в данной книге не дают представления о цвете выводимого Maple графика. Поэтому наглядность решений, видимых на экране монитора, существенно выше.
Графическая функция dfieldplot
Графическая функция dfieldplot служит для построения поля направления с помощью векторов по результатам решения дифференциальных уравнений. Фактически эта фyI^кцйя как бы входит в функцию DEplot и при необходимости вызывается последней. Но она может использоваться и самостоятельно, что демонстрирует рис. 13.14, на котором показан пример решения следующей системы дифференциальных уравнений: %'(£) = %(£)(1 - “(%)), “'«) = 0,3 “(£)(%«) - 1).
Рис. 13.13. Построение комбинированного графика с помощью функции PDEplot
Обратите ^шимa^^lIe па использование опций в этом примере, в частности на вывод надписи иа русском языке. В целом список параметров функции phaseportrait аналогичен таковому для 4)ункции DEplot (отсутствует лишь задание начг1льпых условий).
Графическая функция phaseportrait
Графическая функция phaseportrait служит для построения фазовых портретов по результатам решения одного дифференциального уравнения или системы дифференциальных уравнений deqns. Она задается в следующем виде:
phaseportrait(deqns.vars.trange.inits.о)
При задании уравнений достаточно указать их правые части. На рис. 13,15 представлен пример применения функции phaseportrait для решения системы из трех дифференциальных уравнений первого порядка.
В этом примере система дифференциальных уравнений задана с помощью оператора дифференцирования D. Функциональная окраска линии фазового портрета достигается использованием параметра linecolor, в правой части которого задана формула для цвета.
Рис. 13.14. Построение фазового портрета в виде графика векторного поляРис. 13.14. Построение фазового портрета в виде графика векторного поляI 旧 Ма(Яе7 7Delool9.nm* - [Servet 1]}I 旧 Ма(Яе7 7Delool9.nm* - [Servet 1]}@ £必茎春%ew jBsart F吶Ы@ £必茎春%ew jBsart F吶ЫПостроение простого фазового портрета с помощью функции phaseportrait пакета DEtools -> with(DEtools):phaseportrait([D(x)(t)-y(t)-2(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)=l,y(0)=0, 2(0)-211,stepsize-.05,scene-[z(t),x(t)],linecolour—sin (t *Pi/2 ) , method-classical [foreuler]);Построение простого фазового портрета с помощью функции phaseportrait пакета DEtools -> with(DEtools):phaseportrait([D(x)(t)-y(t)-2(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)=l,y(0)=0, 2(0)-211,stepsize-.05,scene-[z(t),x(t)],linecolour—sin (t *Pi/2 ) , method-classical [foreuler]);
Рис. 13.14. Построение фазового портрета в виде графика векторного поля
Рис. 13.14. Построение фазового портрета в виде графика векторного поля
I 旧 Ма(Яе7 7Delool9.nm* - [Servet 1]}
I 旧 Ма(Яе7 7Delool9.nm* - [Servet 1]}
@ £必茎春%ew jBsart F吶Ы
@ £必茎春%ew jBsart F吶Ы
Построение простого фазового портрета с помощью функции phaseportrait пакета DEtools -
> with(DEtools):
phaseportrait([D(x)(t)-y(t)-2(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)=l,y(0)=0, 2(0)-211,stepsize-.05,scene-[z(t),x(t)],
linecolour—sin (t *Pi/2 ) , method-classical [foreuler]);
Построение простого фазового портрета с помощью функции phaseportrait пакета DEtools -
> with(DEtools):
phaseportrait([D(x)(t)-y(t)-2(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)=l,y(0)=0, 2(0)-211,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 — проверки ДУ па автономность, углубленным анализом решения с помощью контроля уровня выхода и получением приближенного полиномиального аналитического решения. Более подробное знакомство с новыми возможностями решения дифференциальных уравнений можно получить из соответствующей статьи справки symbol les в разделе What is new....
Проверка ДУ на автономность
Одиночное дифференциальное уравнение или система дифференциальных уравнений называются автономными, если их правая часть явно не зависит от независимой переменной. Для автономных дифференциальных уравнений или систем при построении графиков решений функцией DEplot не обязательно задавать начальные условия, но нужно указывать диапазон изменения искомых переменных.
Для проверки уравнений (или систем) на автономность используется функция: autonomous(des.vars.ivar)
где 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)-l):
difl :=^x(/) = x(Z) (1 -y(/))
difl :二鳥y(f) = ・3 y(f)(x«)- 1)
autonomous({difl,d-|f2},[x(t),y(t)],t);
true
autonomous(diff(x(t),t)=sin(t),x.t):
false
В первом случае система дифференциальных уравнений (модель Лотки-Воль- терра) автономна, а во втором случае дифференциальное уравнение не автономно.
Контроль уровня вывода решения ДУ
Для углубленного анализа аналитического решения ДУ (или системы ДУ) можно использовать специальную возможность управления уровнем вывода ре-
шения с помощью системной переменной infl level (dsolve) :=level. Значение level=all дает обычный вывод решения без комментариев, уровень 1 зарезервирован для информации, которую может сообщить пользователь, уровень 2 или 3 дает более детальный вывод (включая сообщения об использованном алгоритме и технике решения) п, наконец, уровни 4 п 5 дают наиболее детальную информацию (если таковая есть в догюлиепие к той ииформации, которую дает уровень 2 или 3).
Приведем пример аналитического решения ДУ третьего порядка с контролем уровня вывода решеш[я:
> myDE := xA2*d-iff(y(x).x.x.x)*2*(n+l)*x*d-iff(y(x).x.x)+(a*xA2+6*n)*
*diff(y(x).х)・2*а*х*у(х)=0:
^yDE :=i j jy(x)]- 2 (儿 + l)xfy^y(x) | + (^^2 + 6 “);^y(x)]-2 <7xy(x) = 0
> infolevel[dsolve] := all:
dsolve(myDE):
у(х)-_С1 л(! 2 + Л)BessclY^-zz xj + _C2 (4 孔-2 + a x?)
+ —C3 J + Bessel* -n - g, Q x]
Infolevel[dsolve] := 1:
dsolve(myDE):
No Liouvillian solutions exists
У(А')-_С/ XУ(А')-_С/ X(丨 /2 + 〃)(丨 /2 + 〃)Besseiyf-zi - ;, Qx] + _C2 丿'~ + Besscljf-~/i - ;, 口 xBesseiyf-zi - ;, Qx] + _C2 丿'~ + Besscljf-~/i - ;, 口 x
У(А')-_С/ X
У(А')-_С/ X
(丨 /2 + 〃)
(丨 /2 + 〃)
Besseiyf-zi - ;, Qx] + _C2 丿'~ + Besscljf-~/i - ;, 口 x
Besseiyf-zi - ;, Qx] + _C2 丿'~ + Besscljf-~/i - ;, 口 x
+ _C3 (4 〃 - 2 + 〃 F)
> infolevel[dsolve] := 2:
dsolve(myDEJ;
Methods for third order ODEs:
Trying 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(xXx),x)
checking if the LODE is of Euler type
checking if the LODE is of Euler type
exponential solutions successful
"Partial success*1 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 terois of special functions:
-> Bessel
<-Bessel successful
<-solution in terms of special functions successful
У(х)二_C/ J""'" BcsseU卜"g,百x^ + _C2BcsselY卜z -;, /a 入j
+ _C3 (4 /г — 2 + <7 x^)
В данном случае повышение уровня вывода до 4 или 5 бесполезно, поскольку вся информация о решении сообщается уже при уровне 2 (или 3).
Приближенное полиномиальное решение ДУ
Во многих случаях аналитические решения даже простых ДУ оказываются весьма сложными, например содержат специальные математические функции. При этом нередко полезна подмена такого решения другим, тоже аналитическим, но приближенным решением. Наиболее распространенным приближенным решением в этом случае может быть полиномиальное решение, то есть замена реального решения полиномом той или иной степени. При этом порядок полинома задается значением системной переменной Order, а для получения такого решения функция dsolve должна иметь параметр series.
На рис. 13.17 представлено решение ДУ третьего порядка различными методами: точное аналитическое и приближенное в виде полинома с максимальным заданным порядком 10 и 60. График дает сравнение этих решений для зависимости y(t).
Дадим небольшой комментарий. Нетрудно заметить, что точное аналитическое решение весьма сложно и содержит специальные функции Бесселя и гамма- функции. При порядке полинома 8 (он несколько меньше заданного максимального) решение практически совпадает с точным до значений ^ < 2, а при максимальном заданном порядке 60 область совпадения расширяется до значений t< 5,5. Затем приближенное решение резко отходит от точного.
Этот пример, с одной стороны, иллюстрирует хорошо известный факт — быстрое нарастание погрешности полиномиального приближения за пределами области хорошего совпадения решений. С другой стороны, он показывает, что сте-
пень полинома более 60 (и даже выше) вовсе не так уж бесполезна, как это утверждается во многих статьях и книгах по полиномиальному приближению. Точность полиномиальных вычислений Maple 7 достаточно высока, чтобы обеспечить получение приближенных полиномиальных выражений со степенью порядка десятков и иногда даже сотен. Другое дело, что столь «длинный» полином не всегда удобен для аналитических расчетов, даже несмотря на его структурную простоту.
Рис. 13.17. Примеры решения ДУ третьего порядка
Что нового мы узнали?
В этом уроке мы научились:
О Использовать основную функцию решения дифференциальных уравнений dsolve.
О Решать дифференциальные уравнения первого порядка.
О Решать дифференциальные уравнения второго порядка.
О Решать системы дифференциальных уравнений.
О Выполнять численное решение дифференциальных уравнений.
О Решать дифференциальные уравнения с кусочными функциями.
О Использовать структуру неявного представления дифференциальных уравнений DESol.
О Применять инструментальный пакет решения дифференциальных уравнений DEtools.
О Осуществлять графическое представление решений дифференциальных уравнений.
О Осуществлять углубленный анализ аналитических решений дифференциальных уравнений.
Математические пакетыМатематические пакеты
Математические пакеты
Математические пакеты
口 Назначение пакетов и обращение к ним
О Пакеты функций комбинаторики
О Пакет финансово-экономических функций finance
О Пакет ортогональных многочленов orthpoly
О Пакет для работы с суммами sumtools
Пакет реализации степенных разложений powerseries
О Пакет числовой аппроксимации numapprox
О Пакет интегральных преобразований inttrans
Пакет приближения кривых CurveFitting
О Пакет для работы с полиномами PolynomialTools
Назначение пакетов расширения и обращение к ним
Как уже отмечалось, некоторые функции системы Maple помимо их нахождения в ядре могут быть расположены в стандартной библиотеке и в пакетах, входящих в поставку системы. Это значит, что их не надо приобретать дополнительно, однако перед использованием таких функций надо загрузить их или отдельно, или вместе с целым пакетом, если большинство его функций представляет интерес для пользователя.
Обзор пакетов
В этом уроке дается выборочная информация о функциях, содержащихся в пакетах. Напоминаем, что список пакетов можно получить, используя команду:
>?packages.
Этот список приведен ниже:
О DEtooIs — решение дифференциальных уравнений;
О Domains — создание областей определений в вычислениях; •
О GF — поля Галуа;
О Gausslnt — работа с целыми числами Гаусса;、
О Groebner — вычисления в базисе Гробнера;
О LREtooIs — манипуляции с линейными рекуррентными отношениями;
О LinearAlgebra — линейная алгебра;
О Matlab — интеграция с MATLAB;
О Ore_algebra — основные вычисления в алгебре линейных операторов;
О PDEtooIs — решение дифференциальных уравнений в частных производных;
О 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 — мульта процессы (для onepaцiIOII^IOЙ системы Unix);
О simplex — линейная оптимизация (симплекс-метод);
О stats — статистика;
О student — функции в помощь студентам;
О sumtools — определенные и неопределенные суммы;
О tensor — тензоры и теория относительности.
Как следует из просмотра этого обширного списка, пакеты Maple 7 охватывают многие крупные разделы математики и существенно дополняют возможности системы, предоставляемые средствами ее ядра. Пакеты расширения пишутся на Maple-языке программирования, поэтому они могут легко модернизироваться и пополняться. Этим, в частности, объясняется тот факт, что набор пакетов расширения в Maple 7 существенно пополнен по сравнению с предшествующими реализациями системы.
Новые пакеты Maple 7
Система Maple 7 пополнилась рядом, новых пакетов:
О CurveFutting — приближение кривых;
О External Calling — внешние вычисления;
О LinearFunctionalSystem — линейные функциональные системы;
О MathML — поддержка средств языка MathML 2.0;
О OrthogonalSeries — серин с ортогональными полиномами;
О PolynomialTooIs — работа с полиномами.
Из этих пакетов надо особо выделить пакет приближения кривых. Он содержит наиболее важные функции для приближения кривых, которые до сих пор были разбросаны по ряду пакетов. В конце данного урока содержится описание пакета CurveFitting. Там же имеется описание другого нового и полезного пакета — PolynomialTooIs.
Получение информации о конкретном пакете
С помощью команды:
>?name_package:
можно получить информацию о любом пакете расширения и найти список входящих в него функций. Названия пакетов были приведены выше.
Для обращения к функциям того или иного пакета используется его полная загрузка командой:
>with(package):[:]
Знак : блокирует вывод списка функций пакета, а знак ; указывает вывести этот список.
Если вам необходима какая-то одна функция пакета пли небольшая их часть, то не стоит загружать пакет целиком. Это может привести к избыточным затратам памяти компьютера и даже нарушить нормальную работу некоторых функций —следует помнить, что нередко пакеты переопределяют некоторые функции ядра. Для загрузки избранных функций используется команда with в форме >with(package, fl, f2.…):
или
>with(package. [fl. f2. „.]):
При этом загружаются функции fl, f2, ... из пакета с именем packages.
Может показаться, что было бы лучше иметь все функции в ядре. Однако создание ядра, реализующего все функции системы (в версии Maple 7 их около 3000), неразумно. Такое ядро занимало бы много места в памяти, имело большое время загрузки и затрудняло бы поиск конкретных нужных функций.
Поэтому ядро Maple 7 содержит определенный (и довольно обширный) минимум хорошо апробированных функций, а большинство других функций размещается в стандартной библиотеке и пакетах. Они готовятся на Maple-языке программирования и могу-f легко модернизироваться. К тому же пакеты могут модифицироваться (что не очень желательно) или дополняться (что приветствуется) пользователями. Некоторой платой за это является необходимость вызова того .или иного пакета или функции перед их применением.
В этом разделе описана структура пакетов 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, numbeomb, numbeomp, numbpart, numbperm^ partition^ permute^ powerset^ prevpart, randcomb, randpart, randperm^ stirlingl, Stirling!^ subsets, vectoint}
Ввиду важности функций комбинаторики приведем их полные определения:
О Chi (х) — гиперболический косинусный интеграл;
О bell (п) — возвращает число ехр(ехр(х)-1) = sum(bell (n)/n!*xxn, n=0. .infinity), причем для ,вычислений используется рекуррентное соотношение Ье1Нп+1) = (Ье11(п)+1Гп;-
О binomial (п, г) — возвращает биноминальные коэффициенты, причем, если п и г — целые числа, удовлетворяющие условию 0 <= г<= п, то функция возвращает С(п,г)=п!/(г! (п-г) I), а в общем случае С(п, г) = 1 imit(GAMMA(N+l)/ GAMMA(R+l)/GAMMA(N-R+l),R=r,N=n);
О composition(n, к) — возвращает списки композиций для целых неотрицательных пик;
О fibonacci (п) — возвращает числа Фибоначчи, вычисляемые по рекуррентной формуле Р(и) = Р(и - 1) + Р(и - 2), где F(0) = 0 и F(l) = 1;
О flbonacci (п, х) — возвращает значение полинома Фибоначчи F(n, х)= =1r F(n - 1, х) + F(n - 2, х), где F(0, х) = 0 и F( 1, _r) = 1, при этом F5) = F5, 1);
О firstpart(n) — возвращает первую часть канонической последовательности ряда;
О nextpartd) — возвращает следующую часть канонической последовательности ряда;
О lastpart(n) — возвращает последнюю часть канонической последовательности ряда;
О prevpartd) — возвращает предыдущую часть канонической последовательности ряда;
О conjpartd) — возвращает объединенный раздел в канонической последовательности ряда;
О 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;
Q vectointd) — возвращает индекс вектора канонического упорядочения 1;
О 1nttovec(m, п) — возвращает вектор канонического упорядочения для неотрицательных целых чисел тип._
Ниже даны примеры применения некоторых из этих функций:
choose(4,3);
[[1,2,3]」1,2,4]」1,3,4]」2, 3,4]]
choose([a,a.b,c],3);
[[а, а, %], [d а, с], [а,仇 с]]
composition(3,2);
{[2,1],[1,2]}
decodepart(4,2);
[1,1,2]
fibonacci(lO);
55
seq(fibonacci(i),i=L」2);
, 1,2,3, 5, 8, 13,21, 34, 55, 89, 144
partition^);
[[1JJJ 1],[1 J 1,2],[1,2,2],[1,1,3],[2,3]」1,4],[5]]
firstpartO);
nextpart(^);
口,2]
prevpart(^);
lastpartO);
[3]
conjpart(^);
multinomial(8,2,3,3); 560
numbcomp(8,5);
35・
numpartO); 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,b],[b,a]]
powerset([a,a,b]);.
[[}Aa],\.b},[a,b},{a,a],[a,a,b]]
> randcomb([a,b,c,d],3);
[〃,с,刃
> randcomb([a,b,c,d],3);
[а,仇 d]
randpart(lO):
[2,8]
randpart(lO);
[10]
> stirlingl(10,5);
-269325
> stlrling2(10,5);
42525
S:=subsets({1.2}):
while not S[finished] do S[nextvalue]() od;
{}
{2}
{1,2}
vectoint([1.0,0]);
1
inttovec(6.3);
[1,0,1]
Читателю, желающему pi с пользовать данный пакет, рекомендуется внимательно ознакомиться с этими простыми примерами и просмотреть примеры из справочной базы данных для имеющихся в пакете функций.
Пакет combstruct
Еще девять функций, относящихся к структурам комбинаторики, содержит пакет combstruct:
with(combstruct);
[allstructs, count, draw, finished^ gfeqns, gfseries, gfsolve, Uerstructs, nextstruct]
Эти функции служат для создания случайно однородных объектов, принадлежащих заданному комбинаторному классу. Ограничимся приведением примеров применения этих функций:
al 1structs(Subset({one,two}));
{{ }, {one, two}, {two}, {one}}
> allstructs(Permutatlon([x,y,z]),slze=2);
[[^y], [^z], [y,x], [y,z], [z,x], [z,y]]
> count(Subset({1,2,3}));
8
> draw(Combinatlon(5),size=4);
{1,3,4,5}
count(Permutation([а,а,b]));
3
it :=iterstructs(Permutation([a,a,b]),size=2);
it := tMe([finished = false, nextvalue = (proc () ... end proc )])
draw(Partition(9));
[2, 2, 2,3]
al 1 structs(Composition(3), s*ize=2);
[[2,1],[1,2]]
Для более полного знакомства с этими специфическими функциями обратитесь к справочной системе.
Пакет финансово-экономических функций finance
Пакет финапсово-экономическпх расчетов открывается командой:
with(finance);
[amortization^ annuity^ blackscholes, cashflows, effectiverate^futurevalue, growbigannuity, growingperpetuity, levelconpon. perpetuity^ presentvalue, yieldtomaturity\
Этот пакет представлен рядом указанных выше функций в двух формах:
functlon(args)
financeLfunction](args)
Благодаря правилам задания аргументов можно реализовать практически все известные финансово-экономические расчеты, такие как амортизация, накопления и платежи по вкладам и т. д. В свете задач рыночной экономики эти функции полезны для приверженцев решения всего на свете без выхода 〃з оболочки Maple. Все же надо отметить, что малозаметные тонкости в определении финансово-экономических функций затрудняют их применение. Есть множество специальных финансово-экономических пакетов, например «Бухгалтерия 1С», которые лучше подходят для наших экономических реалий, чем «заумный» и прозападный Maple 7.
Полный перечень функций можно найти в справке по этому пакету. Ограничимся упоминанием нескольких наиболее характерных функций, связанных с использованием вкладов:
О annuity(cash,rate,nperiods) — вычисление суммы, находящейся на вкладе с начальным значением cash, процентом начисления rate и числом периодов nperiods;
О cashfl ows(fl ows, rate) — вычисление общей суммы вклада по списку вложений fl ows и проценту обесценивания денег rate;
О futurevalue(amount, rate, nperiods) — вычисление будуи[его значения вклада при начальном вложении amount, проценте начисления rate п числе периодов nperiods;
О presentvalue(amount. rate, nperiods) — вычисление начального вклада для получения суммы в amount при проценте начислений rate и числе вкладов nperiods.
Примеры применения этих функций даны пиже:
annultydOO, .10, 15); 760,6079506
> annuity(cash,rate,nperiods);
,(11
cash
[rate rate ^rate + 1
> cashflows([1000,800,700,600].-0.05);
3492.146316
> s:=1000+800+700+600;
s := 3100
futurevalue(1000,0.1,5);
1610.51000
presentval ue(1610,0,1,5);
999,6833301
Поскольку формулы и обозначения в фииансово-экономическпх расчетах в различной литературе порою заметно различаются (особенно сильны различия между нашей и западной лнтературо^), это может создать серьезные ошибки при вычислениях. К примеру, в формулах Maple иа самом деле используются не проценты начислений или обесценивания вкладов, а соответствующие им относительные единицы, например 10% соответствует 0,1. В нашей литературе проценты обычно задаются в явном виде, то есть rate = 10 при 10%. Надо следить и за знаком величины rate, поскольку она может трактоваться как процент начислений или процент обесценивания денег по вкладам, что соответствует различным ее знакам.
》)ПРММЕЧАНМЕ》)ПРММЕЧАНМЕРасчеты такого рода для Maple 7 относятся к достаточно простым, так что даже начинающий пользователь может составить свои функции для таких расчетов по вполне понятным ему и апробированным формулам. Надо отмстить, однако, что, используя символьное задание параметров функций, легко получить вывод именно тех формул, которые использует система Maple, и сравнить их со своими формулами. В случае совпадения применение функций Maple возможно и предпочтительно.
》)ПРММЕЧАНМЕ
》)ПРММЕЧАНМЕ
В целом применение Maple 7 как системы с символьной и точной арифметикой весьма предпочтительно в финансово-экономических и статистических расчетах, поскольку обеспечивает принципиально повышенную точность и устойчивость таких расчетов.
Пакет ортогональных многочленов orthopoly
Ортогональные многочлены (полиномы) находят самое широкое применение в различных математических расчетах. В частности, они широко используются в алгоритмах интерполяции, экстраполяции и аппроксимации различных функциональных зависимостей. В пакете orthopoly задано 6 функций:
with(orthopoly):
[G, ”“,T,U]
Однобуквенные имена этих функций отождествляются с первой буквой в наименовании ортогональных полиномов. Вопреки принятым в Maple 7 правилам, большие буквы в названиях этих полиномов не указывают на инертность данных функции — все они являются немедленно вычисляемыми. В данном разделе функции этого пакета будут полностью описаны.
Отметим определения указанных функций:
О G(n,a,x) — полином Гегенбауэра (из семейства ультрасферических полиномов);
О Н(п,х) — полином Эрмита;
О L(n,x) — полином Лагерра;
О L(n.a,x) — обобп{енный полином Лагерра;
О Р(п,х) — полином Лежандра;
О Р(п,а,Ь,х) — полином Якоби;
О Т(п.х) — обобщенный полином Чебышева первого рода;
О U(n,x) — обобщенный полином Чебышева второго рода.
Свойства ортогональных многочленов хорошо известны. Все они характеризуются целочисленным порядком п, аргументом х м иногда дополнительными параметрами а и Ь. Существуют простые рекуррентные формулы, позволяющие HaiiTH полином /z-го порядка по значению полинома (п - 1)-го порядка. Эти формулы и используются для вычисления полиномов высшего порядка.
Ниже представлены примеры вычисления ортогональных полиномов:
G(O.l.x):
1
G(l.l.x);
2 х
G(l,l,5):
10
Н(3,х);
8х3-12х
КЗ.х):
1-Зх + ^х2-Ах3
L(2.a.x):
2「
+- ах + -х^
Р(2,х):
> Р(2,1.1.х):
Т(5,х):
16 а" -20л'1 十 5 х
U(5.x);
32 х‘ - 32 i 十 6 х
Представляет интерес построение графиков ортогональных многочленов, 11а рис. 14.1 построены графики ряда многочленов Гегенбауэра п Зрмпта,
Рис. 14.1. Графики ортогональных многочленов Гегенбауэра и Эрмита
На рис. 14.2 построены графики ортогональных мнозючленов Лагерра и Лежандра. Наконец, на рис. 14.3 даны графики ортогональных многочленов Чебышева Т(% х) и U(& х).
Приведенные графики дают начальное представление о поведении ортогональных многочленов. К примеру, многочлены Чебышева Имеют минимальное
Рис. 14,2, Графики ортогональных многочленов Лагерра и Лежандра
Рис. 14.3. Графики ортогональных многочленов Чебышева
отклонение от оси абсцисс в заданном интервале изменения х. Это их свойство объясняет полезное применение таких многочленов при решении задач аппроксимации функций. Можно порекомендовать читателю по их образу л подобию построить графики ортогональных многочленов при других значениях параметра и диапазонах изменения аргумента 尤
В отличие от ряда элементарных функцп!! ортогональные многочлены определены только для действительного аргумента х При комплексном аргументе просто повторяется исходное выражение с многочленом:
> evalf(U(2,2+3*1)):
Р(2, 2 + 3/)
evalf(sqrt(2+3*I)):
1.674149228 + .8959774761 /
Ортогональные многочлены не определены также и для дробного показателя 冗"Впрочем, надо отметить, что такие многочлены на практике используются крайне редко.
Пакет для работы с суммами sumtools
Состав пакета sumtools
Этот инструментальный пакет предназначен для работы со специальными суммами. Он содержит указанные ниже функции:
with(sumtools):
[Hypersum, Sumtohyper^ extended jasperъ gosper, hyperrecursio^ hypersitm, hyperterm^ sinipcomb, sumrecursion, sumtohyper]
Назначение функций данного пакета перечислено ниже:
О hypersum(U, L, z, п) и Hypersum(U, L, z, n) — вычисление гиперсукЕм;
О sumtohyper(f, k) и Sumtohyper(f, k) — преобразование сумм в гиперсуммы;
О extended_gosper(f, k), extended一gosper(f, k=m..n) и extended_gosper(f, к, j)— реализация расширенного алгоритма Госпера;'
О gosper(f, к) и gosper(f, k=m. .п) — реализация алгоритма Госпера;
О hyperrecursion(U, L, z, s(n)) — реализация гиперрекурсиошюго алгоритма;
О hypertermCU, L, z, к) н Hyperterm(U, L, z, к) — ввод пшергеометрического терма.
Работа с пакетом sumtools
Приведем примеры на применение этих функций:
extended_gosper(k*(k/2)!.к);
1 -221 -221 -2 + 左1 -2 zfu2 +1 -2 + 左1 -2 zfu2 +
1 -2
2
1 -2
2
1 -2 + 左
1 -2 zfu
2 +
1 -2 + 左
1 -2 zfu
2 +
>extended_gosper(k*(k/2)!,k.2);
> extended_gosper(k*(k/2)!.k-1..n);'
2^» + ^! + 2^»+l^!-2^!-2
> gosper(k*(k/2)!.k):
FAIL
> gosper(pochhammer(k,n),k);
(к -1) pochhammer(A:,/7)
n +1
hyperrecursion([-n.a]([b].l,f(n)):
(-"+4-% + 1)*〃一1) + (/7+6-1)出〃)
Hypersum([a,1+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+nJ.l.n);
Hyperten*n( [ 1, 1 +a,a~d~c+ l,a + 1 - d-b, q-c + 1 - b],
[l+a-d, 1 + a-c, 1 + a~b,a-b-c-d + 1], 1,〃)
simpcomb(b1nomial (n,k));
「(〃 + 1)
Г(/7-^+1) r(^+l)
sumrecurs1on(binomial(n.k)*3.k,f(n));,
_8(〃-l)2f(〃-2)-(7M-7〃 + 2)f(〃-l) + f(〃)〃2
>hyperterm([a,b].[c],z,k):
pochhammer(a,^) pochhammer(Z>,A:) zk pochhammer(c,k) k\
Из этих примеров применение функций данного пакета достаточно очевидно.
Пакет реализации степенных разложений powseries
Состав пакета powseries
Степенные разложения часто используются в математических расчетах для приближенного представления разнообразных функций и обеспечения единообразия такого представления. В пакете powseries сосредоточены расширенные средства по реализации таких разложений. Они представлены 22 функциями:
with(powseries);
[compose, evalpow, inverse, multconst, multiply, negative, powadd,powcos,powcreate, povvd吩 powexp, powint; powlog, powpoly, powsin, powsolve, powsqrt, quotient, reversion, subtract, template, tpsfarm}
Ниже представлено определение этих (функций:
О compose(a.b) — объединяет ряды а п Ь;
О evalpow(expr) — вычисляет выражение ехрг и возвращает его в виде ряда;
О inverse(p) — инвертирует ряд р;
О multconst(p.const) — умножает ряд р на константу const;
О multiply(a,b) — умножает ряд а т ряд Ь;
О negative(p) — возвращает аддитивный, обратны!! по отношению к р ряд;
О powadd(a,b...J — складывает ряды а, Ь,…;
О powcreate(expr) — соз/шет ряд для выражения ехрг;
О powpoly(pol .van) — создает ряд для полинома ро! по переменно!! van;
О powsol ve(sys) — создает ряд для решения Д1и})(^еренциалы1ых урашюнип sys;
О quotient(a,b) ~ возвращает частное для а и b в виде ряда;
О reversion(a) — дает обратное к композиции разложение ряда а;
О subtracted.Ь) — дает разность рядов а и Ь.
В выражении ехрг могут использоваться()нс])аторь1 +, -, *, / и л. С ними могут комбинироваться встроенные (функции н (функции пользователя, например /(g). Кроме того, могут использоваться следующие функции:
Powexp
powinv
powlog
powneg
powrev
Powdiff
powlnt
powquo
powsuD
powcos
Powtan
powsec
powcsc
powcot
powsinh
Powcosh
powtanh
powsech
powcsch
powcoth
Powsqrt
powadd
multiply
Примеры применения пакета powseries
Назначение большинства этих функции очевидно из их пазваппй — oim возвращают соответствующую функцию (указанную после слова pow в имени) в виде разложения в ряд пли полинома. Например, powexp раскладывает выражения с экспоненциальными функциями в ряд.
Получаемые функ!1иями ряды представляются в специальном формате. Поэтому для их применения в обычном виде необходимо использовать функцию tpsform в следующих видах:
О tpsform(p, van, order) — преобразует ])яд р в обычную форму с заданием порядка order;
О tpsform(p, van) — преобразует ряд р в обычную форму с порядком, заданным переменной Order.
Здесь р — имя степенного ряда, van — переменная, относительно которой записан ряд, order — порядок ряда. Если параметр order не указан, используется зна-
ченпе глобальной переменной Order. Ниже даны примеры, иллюстрирующие технику работы со степенными разложениями:
pl:=powexp(sin(x)):
pl := p【DC(powpGFi)end proc
p2:=powexp(cos(x));
p2 := proc (powparm) end proc
tpsform(pl.x):
+ JV + ~Л"^—工5 + 0( 1)
〉tpsform(p2,x):
е~~ех2+~ех4 + 0( a")
6
a := powseries[powexp](x):
b := powser1es[tpsform](a, x. 5):
b ] + .v + — x~ + ~ jv^ + ^- x‘ + 0(尤‘)
c := powadd( powpoly(l+x*2+x.x), powlog(l+x)):
d := tpsform(c. X, 6):
d := 1 + 2 к 1d + ^工5 + 0(N)
Применение функций этого пакета постатейно просто и прозрачно, так что заинтересованный читатель может сам опробовать на примерах работу тех функций, которые нс были лспользовапы в приведенных примерах.
Пакет числовой аппроксимации numapprox
Состав пакета numapprox
Этот пакет содержит небольшое число безусловно очень важных функций:
with(numapprox):
[chebdeg, chebmult, chebpade, chebsort, chebyshex confracform^ hermitej)ade^ hornerform^ injhorm, laurent, minimax, pade, remez]
В их числе функции интерполяции и аппроксимации полиномахш Чебышева, рядом Тейлора, отношением полиномов (Паде-аппроксимация) я др. Все они широко применяются не только в фундаментальной математике, по и при решении многих прикладных задач. Рассмотрим их, начиная с функций аппроксимации аналитических зависимостей.
Разложение функции в ряд Лорана
Для разложения функции f в ряд Лорана с порядком п в окрестности точки х а (или д- = 0) служит функция laurent:
】aurent(f. х=а, п) 】aurent(f, х. п)
Представленный ниже пример иллюстрирует реализацию разложения в ряд Лорана:
laurent(f(x),х=0.4);
f(0) + D(/)(0)x + ^(D ⑵)⑺(0)x2 + ?(D ⑶)(/)(0)炉 + 0“4)
laurent(exp(x),x,5):
1 + jv + ~ Л"2 + ~ x^ + ^^ 工 4 + O(x‘)
Паде-аппроксимация аналитических функций
Для аппроксимации аналитических функций одной из лучших является Паде- аппроксимация, при которой заданная функция приближается отношением двух полиномов. Для осуществления такой аппроксимации используется функция pade:
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. Аппроксимация Паде для синусоидальной функции
皿闷»」0i幻皿闷»」0i幻55力尸力尸495495士x3 + X33“”士x3 + X33“”552—4]62—4]699991039510395
皿闷
»」0i幻
皿闷
»」0i幻
5
5
力尸
力尸
495
495
士x3 + X
33“”
士x3 + X
33“”
5
5
2—4]6
2—4]6
99
99
10395
10395
I旧 Ма% 7 TPadetan.mw, - IServer 1]]
Паде-аппроксимация аналитической разрывной функции
> f:«(х)->tan(x): with(nurnapprox):£p:=pade(f(x),x, [5,6 I);
[> fu:—(x)-> fp:
> plot < [f (x) , fu (x) I,x—-4.5. .4.5,y=-10. . 10 , color—black.);
Паде-аппроксимация с полиномами Чебышева
Для многих аналитических зависимостей хорошие результаты дает аппроксимация полиномами Чебышева. В общем случае применяется Паде-аппрокспмация отношением таких полиномов. Она реализуется функциями chebpade:
chebpadetf. х=а.,b. [т.п])
chebpadetf. х. [т.п])
chebpadetf, а..Ь. [т,п])
Здесь а. .Ь задает отрезок аппроксимации, тип— максимальные степени числителя и знаменателя полиномов Чебышева. Приведенный ниже пример показывает аппроксимацию Паде полиномами Чебышева для функции f=cos(x):
> Digits;=10:chebpade(cos(x).х=0.,1,5):
,8235847380 Т(0, 2 х - 1)-.2322993716 Т( 1, 2 х- 1)-.05371511462 T(2,2.t - 1)
+ .002458235267 Т(3, 2 х - 1) + .0002821190574 Т(4, 2 х — 1)
-.7722229156 10'5 Т(5,2х- 1)
> chebpade(cos(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)
+ .00053 И 640964 Т( 3, 2 х - 1))
Наилучшая минимаксная аппроксимация
Минимаксная аппроксимация отличается от Паде-аппроксимащш минимизацией максимальной абсолютной погрешности во всем интервале аппроксимации. Она использует алгоритм Ремеза (см. ниже) и ревизуется следующей функцией: minimax(f, x=a..b, [m,n], w. 'maxerror') minimax(f. a..b, [m,n]. w, 'maxerror')
Здесь помимо уже отмеченных параметров w — процедура или выражение, maxerror — переменная, которой приписывается значение minimax-нормы. Ниже дан пример аппроксимации функции cos(x) в интервале [-3, 3]:
> minimax(cos(x).х=-3..3,[2.3].l.'minmax');
.5458304182 + (.5119634586 IO》-.2308484266 х) х
.5217186403 + (.1496104420 10'8 + .1062847466 х) х
> mi птах:
.04621605601
Наилучшая минимаксная аппроксимация по алгоритму Ремеза
Для получения наилучшей полиномиальной аппроксимации используется алгоритм Ремеза, который реализует следующая функция:
remez(w. f. a. b. m. n. crit. lmaxerror').
Здесь w — процедура, представляющая функцию ю(х) > 0 в интервале [a, b], f — процедура, представляющая аппроксимируемую функцию /(*), а и b — числа, задающие интервал аппроксимации \а, i], тип— степени числителя н знаменателя аппроксимирующей функции, crit — массив, индексированны!! от 1. до 7?г + 改 + 2 и представляющий набор оценок в критических точках (то есть точек максимума/мшшмума кривых погрешности), maxerror — имя переменной, которой присваивается минимаксная норма 70 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) eval* егЦх)) end proc
> crit:=array(l..7,[0..1,.25,.5..75..9,1.]);
crit := [0, ,1, .25, .5, .75, 9 L]
> remez(w.f,0.1.5.0.crit,1 maxerror1):
工 7 .0000221268863 + (1.12678937620 +
(.018447321509 + (-.453446232421 + (.141246775527 + .OO966355213O5O.r).v).r)
> maxerror;
.0000221268894463
Другие функции пакета
Отметим назначение других функцхпх пакета numapprox:
О chebdeg(p) — возвращает степень полинома Чебмшова р;
О chebmult(p, q) — умножение полиномов Чебышева р и q;
О chebsort(e) — сортирует элементы ряда Чебышева;
О confracform(r) — преобразует рациональное выражение г в ценную дробь;
О confracform(r, х) — преобразует рациональное выражение г в цепную дробь с независимой переменной х;
О hornerform(r) — преобразует рациональное выражение г в форму Горнера;
О hornerform(r, х) — преобразует рациональное выражение г в форму Горнера с независимой переменной х;
О 1nfnorm(f, х=а…b, 'хтах') — возвращает L-бесконечную норму функции иа отрезке х [а, Ь];
О infnorm(f, а…b, 'хтах') — возвращает L-бесконечную норму функции на отрезке (а, Ь].
Действие этих функций очевидно, и читатель может самостоятельно опробовать их в работе,
Пакет интегральных преобразований inttrans
Общая характеристика пакета
Это один из пакетов, наиболее важных для общематематическпх и научно-технических приложений. Он содержит небольшой набор функции:
> with(inttrans);
[addtable, fourie/\fouriercos,fowiersiii, hankel, hilhert, invfourier, iuvhilbert, invlaplace, invmellhi, laplace, melius savetable]
Однако эти функции охватывают такие практические важные области математики, как ряды Фурье, прямые и обратные преобразования Лапласа и Фурье и ряд других интегральных преобразований. Ниже они обсуждены более подробно.
В предшествующих реализациях системы Maple функции прямого и обратного Z-преобразований также входили в пакет inttrans, однако в Maple 6 и 7 они перенесены в ядро системы.
Прямое и обратное преобразования Лапласа
Прямое преобразование Лапсаса заключается в переводе некоторой функции времени /(Z) в операторную форму 尸(/>)• Это прсобразопанпе означает вычисление интеграла
оо,
F(p)=\f(t)e^dt
О
Для осуществления прямого преобразования Лапласа Maple 7 имеет функцию laplace(expr.t.p)
Здесь ехрг — преобразуемое выражение, t — переменная, относительно которой записано ехрг, и р — переменная, относительно которой записывается результат преобразования.
Обратное преобразование Лапласа означает переход от функции F(p) к функции /(£) с помощью формулы
勺)=J 尸(р)е"'а
/СО
Для вычисления этого интеграла служит функция:
invldplace(expr. р. t)
где ехрг — выражение относительно переменной р, t — переменная, относительно которой записывается резу льтирующая зависимость. Оба преобразования широко применяются в практике научно-технических вычислений и отражают суть
операторного метода. При этом прямое преобразование создает изображение, а обратное — оригинал функции, Ниже приведены примеры применения прямого и обратного преобразований Лапласа:
> laplace(sin(t)+a*cos(t),t,p):
1 аа
夕2 1 + 夕2 + ]
invlaplaceC^.p.t);
sin(r) + a cos(r)
Нетрудно заметить, что в данном случае последовательное применение прямого, а затем обратного преобразования восстанавливает исходную(j)yi[KHino sin(z) + a c()s(『).
Прямое и обратное преобразования Фурье
Прямое преобразовгише Фурье преобразует функцию времени /(/) в функцию частот и заключается в вычислении следующей интегрально!! функции:
F(w) = j/⑺成
Оно реализуется следующей функцией пакета шггегргиьных преобразона1нп'| -inttrans: fourler(expr.t.w)
Здесь ехрг — выражение (уравнение или множество), t — переменная, от которой зависит ехрг, u w — переменная, относительно которой записывается результирующая функция.
Обратное преобразование Фурье задастся вычпелеппелг интеграла:
f(t) = ^\F{w)ej,wdw.
Оно фактически переводит представление сигнала из частотной об.гастн во временную.
Примеры применения преобразования Фурье представлены ниже:
> fourier(sin(t),t.w);
-/Л Dirac(w- 1) + /冗 Dirac(w+ 1)
1nvfourier(^tw,t);
1”)(力)、
//(-е +е )
simplify(^);
sin(r)'
fourier(l-exp(-a*t),t.w);
2 л Dirac(w) - fburier(e( ° G, Г, w)
>.invfourier(t,w,t);
1八"
Обратите внимание на то, что даже в простом первом примере применение обратного преобразования Фурье вслед за прямым не привело к буквальному восстановлению исходной функции sin(t). Потребовалась команда simplify, чтобы перевести результат в виде представления синуса через экспоиенц1китьные функции к обычному виду sin(t).
Вычисление косинусного
и синусного интегралов Фурье
Разложение функции f(t) в ряд Фурье требует вычисления интегралов следующего вида:
尸⑻=Fj/") sg"‘
Они получили название косинусного и синусного интегралов Фурье п фактически задают вычисление коэффициентов ряда Фурье, в который может быть разложена функция /(£).
Для вычисления этих интегралов в пакете используются следующие функции: fouriercos(expr.t.s) fouriers1n(expr,t.s)
Поскольку формат задания этих функций вполне очевиден, ограничимся примерами их применения:
> fouriercos(5*t,t,s);
> fouriers-in(5*t,t,s);
-1 匠《 Dirac( 1 ”)
> fouriercos(exp(-t),t,s);
标炉+ 1 )
Интегральное преобразование Ханке л я
Интегральное преобразование Ханкеля задается следующим выражением;
со
F[nu]{s) = j/С)小 BesselJ(nu5 s n)山 о
и выполняется функцией;
hankel(ехрг. t, s, nu)
Здесь ехрг — выражение, равенство (или множество, или список с выражения- ми/равенствами), t — переменная в ехрг, преобразуемая в параметр преобразования s, пи — порядок преобразования.
Следующий пример демонстрирует применение функции Ханкеля:=
> hankel(t*(l/3)ttfs,2);
Прямое и обратное преобразования Гильберта
Прямое преобразование Гильберта задается следующим выражением:
— co
и превращает функцию /(£) в 尸(s).
Обратное преобразование Гильберта означает нахождение /(/^) по заданной 尸(s). Эти преобразования выполняются функциями:
hilberttexpr. t. s) tnvh1〕bert(expr, t. s)
где назначение параметров очевидно.
Приведенные ниже примеры иллюстрируют выполнение этих преобразований;
assume(a>0);
hilbert(exp(l), г, z);
О
hilbert(f(u), u, t);
hilbert(fi;u),覓,t)
hilbert(^, t, s);
-f")
hilbert(t*f(t), t, s);
s hilb6i*t(Kf), f, s)冗 + J f(_U) d_U
hilbert(t/(t*2+l)tt,s);
? + 1
> 1nvh11bert(^,s,t);
hilbert(sin(x)/x,x,y);.
cos(v) - 1
h-ilbert(ln(I*a*x),x,y);
hilbcrt(in(/A'), х,У)+ hilbert( ln(r7~), х, v)
hi〕bert(%,y,z);
-ln(/z)
Как видно из этих примеров, обратное преобразование Гильберта, осуществленное над результатом прямого преобразования, не восстанавливает функцию /(f) буквально.
Интегральное преобразование Меллина
Интегральное преобразование Меллшга задается выражением:
сс
M(s)二卜〃(х)х'-%х
О
и реализуется функцией:“
mel1in(expr. х, s)
с очевидными параметрами ехрг, х и s.
Применение преобразования Меллииа иллюстрируют следующие примеры:
assume(a>0);
mellin(x*a.x,s);
「(s + 4 〜)Heaviside(.v + 〃 〜) +「(一门〜一s) Hea\aside(-(7 —s)
Г(5 + 〃 〜+1)Г(1г-а 〜)、
Функция addtable
Как видно из приведенных примеров, не всегда интегральные преобразования дают результат в явном виде. Получить его позволяет вспомогательная функция: addtable(tname.patt.expr.t .s)
где tname — наименование преобразования, для которого образец patt должен быть добавлен к таблице поиска. Остальные параметры очевидны.
Следующие примеры поясняют применение этой функции:
fouriersin(f(t),t,s); fouriersin(fi;r), t,s)
addtable(fouriersin,f(t),F(s)s);
fouriersin(f(x),x,z);
F(z)
Пакет приближения кривых CurveFitting
Общая характеристика пакета CurveFitting
Новый пакет приближения кривых CurveFitting весьма полезен тем, кто занимается столь распространенной задачей, как приближение кривых. Он содержит ряд функций:
with(CurveFittlng);
Доступ к функциям пакета возможен с помощью конструкций:
CurveFitting[function](arguments) function(arguments)
Число функций пакета невелико и все они описаны ниже.
Функция вычисления В-сплайнов Bspline
Функция BSpline(k, v, opt) служит для вычисления В-снла百нов. Она имеет следующие параметры: к 一 порядок сплайна (целое число), v — имя u opt — параметр в виде knots=knotl 1st, где knotlist 一 сппскок из к+1 элементов алгебраического типа. Используя функцию CurveFitting[BSplIneCurve], можно строить кривые В-сшганнов. Примеры применения этой функции представлены ниже:
BSpline(3, х);
'0х<0
X < 1
1?
< ——1)х<2
|-х+-(х-2)2х < 3
03 <х
> BSpline(2, X, knots=[0,a,2J);
х<0х<ах<22<хх<0х<ах<22<хО х а
х<0
х<а
х<2
2<х
х<0
х<а
х<2
2<х
-х +а2 -а
О
Как нетрудно заметить из этих примеров, функция Bspl ine возвращает результат в виде кусочных функций типа piecewise.
Функция построения В-сплайновых
кривых BsplineCurve
Функция BsplineCurve служит для построения кривых В-сплапнов. Она может использоваться в формах:
BSplineCurve(xydata. v, opts)
BSplineCurve (xdata. ydata, v, opts)
Здесь:
xydata — список, массив или матрица точек в форме [[xl,yl], [х2,у2],... ,[хп,уп]]; xdata — список, массив или вектор значений независимой переменно!! [х1,х2хп]; ydata — список, массив или вектор значении зависимо!! переменной в форме EyLy2,..,,yn]:
V — имя независимой переменной;
opts — необязательный параметр в([)()])njc одного или более выражений вида order=k пли knots=knotl 1st.
I国М2ple 7「1с!мЬеЛ1.п1”・【Server』].「■I国М2ple 7「1с!мЬеЛ1.п1”・【Server』].「■1』阳1竺1』阳1竺Примеры применения функция BSpl ineCurve с порядком, заданным ио умолчанию, и с третьим порядком (кубический В-спЛс1Йн) представлены на pi к. 14.6.
I国М2ple 7「1с!мЬеЛ1.п1”・【Server』].「■
I国М2ple 7「1с!мЬеЛ1.п1”・【Server』].「■
1』阳1竺
1』阳1竺
,我察e 裁抽 銓1* 如®®旺 F年г® ,. •.., 良pfeon? 宣gsw 社喻》
「.a wi t Ii (C'urveFi 11 ing):
xydata * [[0.1,0], [1,.9], [2,5r6], [3,6], [4,5], [5,3] , [6,2]];
cl ;= BsplineCurve(xydata, v):plot({clz xydata}г color=black);
> с2 := BSplineCurve(xydata, v, order=3 f
knots=[0,0,1,2,3,3,4,5,6,71);plot《{c2, xydata},color=black);
Рис. 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:
> wlth(CurveFitting):
LeastSquares([[O,.5],[1,2],[2,4].[3,8]], v):
-.0500000000000 +2.44999999999999974v
> LeastSquares([O,1,2.3], [1,2.4,6], v, we1ght=[l,l,l,10]);
95 259
+у
146 146
> LeastSquares([O,1,3,5,6]. [1,-1,-3,0,5]. v, curve=a*v*2+b*v+c):
856 33 э 2231
-4-, V*" — V
637 49637
Функция полиномиальной аппроксимации Polynomiallnterpolation
Функция Pol ynomi al Interpol ation реализует полиномиальную интерполяцию и может использоваться в виде:
Polynomiallnterpolation (xydata. v)
Polynomiallnterpolat-ion(xdata. ydata. v)
Параметры функщш были определены выше. Параметр v может быть как именем, так и численным значением. Примеры применения функции представлены ниже:
> with(CurveFitting):
Polynomial Interpolation([[0.0]. [1.2].[2.4].[3.3]]. z):
33 2
--z z z
2,
Polynom-ialInterpolation([0.2,5.8J. [2.a.1.3], 3):
15
Функция рациональной аппроксимации Racionallnterpolation
Функция рацпоиалыюн интерполяции задается в виде:
Rational Interpolation (xydata, z. opts)
Rationallnterpolation(xdata. ydata, z. opts)
где необязательный параметр opts задается выражениями method=methodtype или degrees=[dl,d2]. Функция возвращает результат в виде отношения двух полиномов. Параметр methodtype может иметь значения 'lookaround или subresultant, задающие учет или пропуск сингулярных точек.
Пример применения функции Rational Interpolation (загрузка пакета опущена, но предполагается):
xpoints := ГО,1.2.3.4.-1]: уpoints := ГО.3.1,3.а,1/11]:
f := RationaHnterpolation(xpoints. ypolnts. х);'
for 1 from 1 to 6 do normal(eval(f.x=xpointsri])-ypoints[i]) end do:
0
0
0
0
3
0
Функция вычисления обычных сплайнов Spline
① ункпия:
Splinetxydata. v. opts)Spline(xdata, ydata, v. opts)
вычисляет обычпые (не В-тппа) сплайны. Примеры ее применения даны ниже: > Spl1ne([[0.1],[l,2],[2,5].[3.3]J. х):
1 + 石" 尤+ 石" 工X < 1
21 14248 2 7 J°
•—л + ~ 工 —§ 工X < 2
131 54266 2 22 ?,
——+ ”] § %X + X otherwise
> Spl1ne([0.1,2,3], [1,2,5,3], v, degree=l);
1 + vv < 1
■ -1 + 3 v v < 2
9 - 2 у otherwise
Функция аппроксимации непрерывными
дробями Thielelnterpolation
Функция Thielelnterpolation осуществляет интерполяцию на основе непрерывных дробей (^нек^-пнтерполяцию). Она задается в виде:
Thielelnterpolation (xydata. v)
Thielelnterpolat1 on(xdata, ydata. v)
Примеры применения данной функции представлены ниже:
Th-ielelnterpolat1on([[l,3]. [2,5], [4,75], [5,4]]. х);
2+ 1944 "402 7
> Th-ielelnterpolation([l,2,a], [2,4,3], 3):
Пакет для работы с полиномами PolynomialTools
Обзор возможностей пакета PolynomialTools
Пакет для работы с полиномами PolynomialTools предназначен для выполнения ряда специальных onepamiii с полиномами или создання полиномов с заданными свойствами. Этот пакет имеет небольшое число функций:
with(PolynomialTools):
[IsSelfReciprocal, MinimalPolynomial, PDEToPolynomial, PolynomialToPDE^ Shorten,
Shorter, Sort, Split, Splits, Translate ]
В пакет входят функции расщепления, сортировки и преобразования полиномов (в том числе в дифференциальные уравнения и наоборот) и др.
Функции для работы с полиномами
Рассмотрим несколько фуйкций пакета PolynomialTools общего характера.
Примеры применения этой функции представлены ниже:
wlth(PolynomlalTools):
IsSelfRedprocal(хЧ+хлЗ+х+1, х, 'р*);
а}пР“МЕЧАНИЕа}пР“МЕЧАНИЕФункция IsSelfReciprocal(a, х, 'р') проверяет полином а(х) на условие coeff(a,x,k)= =coeff(a,x,d-k) для всех к = 0. .d, где d = degree(a, х) — порядок полинома. Если это условие выполняется, то возвращается логическое значение true, иначе ——false. Если порядок d четный и если задан третий аргумент р, то р будет представлять полином Р порядка d/2, такой, что xA(d/2)*P(x+l/x) = а. При нечетном d полином а будет взаимо- обратным, что подразумевает деление на х+1. В этом случае, если р указано, результат вычисляется в форме а/(х+1).
а}пР“МЕЧАНИЕ
а}пР“МЕЧАНИЕ
true
> Р:
—2 + х + 厂
> IsSelfReciprocal (хЛ5•3*хЛ4+хЛ3+хЛ2•3*х+1. х. 'р1):
true
> Р;
3 - 4 工
> г := evalf( l+sqrt(2)):
厂:=2.414213562
Функция Minimal Polynomial (г, n, асе) возвратцает полином минимальной степени не превыптющей п, пмсюищв корень г. Необязательныii аргумент асе задает погрешность приближения. Функция Minimal Polynomial (г, п) использует решетчатый алгоритм п находит полшюм степени п (или менее) с наименьшими целыми коэффициентами. Корень г может быть денствителиным пли комплексным. Результат зависит от значения переменно!! окружения Digits. По умолчанию асе задано как 10*(Digits-2). Примеры применения дапног! функции:
> Minimal Polynomial( г, 2 ):
-1 -2_X+_Y
> г := l+sqrt(2);
厂1
> (г, 2 ): 1+72,2
> Minimal Polynomial ( 1.234, 3 );
-109 + 61 _X-5_Y + 22_X3
> fsolve( ^, J ):
1.234000001
Функция Split(a, x, b) служит для расщепления полинома а с независимой переменной х. Параметр b — необязательный. Функция Split(a, х) осуществляет комплексную факторизацию инвариантного полинома а по х. Если третий аргумент b задан, он представляет множество элементов {tltm}, таких что полином а расщепляется над K=Q(tltm), где Q означает ноле ращюнальных чисел. Примеры:
> Split(x*2+x+l,x);
(х - RootOf(_Z2 + _Z + 1)) (х + 1 + RootOfJZ? + _Z + 1))
> Split(x*2+y*x+l+y*2, X, 'b');
(x - RootOf(„Z2 +y _Z +\ +y2)) (x +y + RootOf< Z2 +y_Z+ 1 +y2))
> b;
{RootOf(_Z2 +у _Z + 1 +F)}
В пакете определена еще одна подобная функция Splits, с которой можно познакомиться по справке на нее.
Функция Translate(a, х, хО) преобразует полином а(х) с подстановкой х = х + хО, где хО — константа. Примеры применения этой функции даны ниже:
> Translate(x*2,x,1):
1 + 2 х + №
> expand(eval (х*2,х=х+1));
1 + 2 х + х"
> Translate(x*3,x,2);
8 + 12 х + 6 X? +
> expand(eval(x*3,x=x+2));
З + ^х + бл^+х3
> Translate((x+l)*3,x,-1);
х3
Функции сортировки полиномов
Для сортировки полиномов предназначены следующие три функции:
Shorter(f, g, х) Sort(v. х) Shorten(f, х)
Здесь f и g полиномы, v — список полиномов их — независимая переменная. Функции отличаются характером сортировки.
Функция Shorter определяет полином f как более короткий, чем д, по следующим признакам: меньшая длина, меньшее имя независимой переменной х, не дробный и меньшая степень других переменных. Функция Sort сортирует лист полиномов х по признакам, определяемым Shorter. Функция Shorten использует преобразования Мебиуса. Многочисленные детали ее применения можно найти в справке по данной функции.
Примеры применения функций сортировки:
> Shorten(x*2+x+l,x):
х2 + 3
> Shorten(3*x*3+18*x+14,x);
х3 - 6
> Shorten(x*4+32);
х4 + 2
> Shorter(x*3,x+5,x);
falsez
> Sort([x*3 f x*2,x+1,x+5]);
Error; (in sort_poly) sort_poly uses a 2nd argument, x,which is missing
> Sort([хЛ3 f хЛ2,x+1f x+5],x);
[1 +x,x + 5,x2,x3]
Функции преобразования полиномов в РОЕ и обратно
Функция PolynomialToPDE(polys, varsf depvars) преобразует полиномы polys no независимым переменным vars в дифференциальные уравнения с частными производными (PDE). Другая функция PDEToPolynomial (pdes, vars, depvars) осуществляет обратное преобразование.
Следующие примеры иллюстрируют применение этих функций;
> S:= Polynonn'alToPD£([(x*2 - 2*х + l)*u + x*3*v], [x], [u.v]);
+ u(x)+ u(x)> PDEToPolynomial (S, [x], [u,v]):> PDEToPolynomial (S, [x], [u,v]):M>)M>)
+ u(x)
+ u(x)
> PDEToPolynomial (S, [x], [u,v]):
> PDEToPolynomial (S, [x], [u,v]):
M>)
M>)
[(x2 - 2 x + 1) г/ + .x3 v]
Что нового мы узнали?
В этом уроке мы научились:
О Обращаться к пакетам расширения.
О Пользоваться функциями пакетов комбинаторики.
О Применять пакет финансово-экономических функций.
О Использовать ортогональные многочлены из пакета orthpoly.
О Работать с суммами пакета sumtools.
О Применять степенные разложения пакета powerseries.
О Работать с пакетом численной аппроксимации numapprox.
О Использовать интегральные преобразования пакета inttrans.
О Осуществлять приближение кривых с помощью пакета CurveFitting.
О Использовать пакет работы с полиномами PolynomialTools.
Пакеты линейной алгебры и функциональных систем
Основные определения линейной алгебры
Пакет решения задач линейной алгебры linalg
Пакет линейной алгебры с алгоритмами NAG LinearAlgebra
Интеграция системы Maple 7 с матричной системой MATLAB
Пакет линейных функциональных систем
LinearFunctionalSystems
Основные определения линейной алгебры
Прежде чем перейти к рассмотрению обширных возможностей пакетов Maple 7 по части решения задач линейной алгебры, рассмотрим краткие определения, относящиеся к ней.
Матрица (тхп) — прямоугольная двумерная таблица, содержащая т строк и п столбцов элементов, каждый из которых может быть представлен числом, константой, переменной, символьным или математическим выражением (расширительная трактовка матрицы).
Квадратная матрица — матрица, у которой число строк 加 равно числу столбцов 几 Пример квадратной матрицы размера 3x3:
2 3一
5 6.
8 9
Сингулярная (вырожденная) матрица — квадратная матрица, у которой детерминант (определитель) равен 0. Такая матрица обычно нс упрощается при символьных вычислениях. Линейные уравнения с почти сингулярными матршщми могут давать большие погрешности при решении.
Единичная матрица — это квадратная матрица, у которой диагональные элемен ты равны 1, а остальные элементы равны 0. Ниже представлена единичная матрица размера 4x4:
1ОЕ 二ОО1ОЕ 二ООООО
1
О
Е 二
О
О
1
О
Е 二
О
О
о о
О 1 о
О 0 1
Сингулярные значения матрицы А — квадратные корни из собственных значений матрицы Ат-А, где Ат - транспонированная матрица А (см. ее определение ниже); Транспонированная матрица — матрица, у которой столбцы и строки меняются местами, то есть элементы транспонированной матрицы удовлетворяют условию AT(i,j)=A(j,i). Приведем простой пример.
Исходная матрица:
а b с
А 二 d е /
Транспонированная матрица:
a d i
АТ = b е к
Обратная матрица — это матрица М-, которая, будучи умноженной на исходную квадратную матрицу М, дает единичную матрицу Е.
Ступенчатая форма матрицы соответствует условиям, когда первый ненулевой элемент в каждой строке есть 1 и первый ненулевой элемент каждой строки появляется справа от первого ненулевого элемента в предыдущей строке, то есть все элементы ниже первого ненулевого в строке — нули.
Диагональ матрицы — расположенные диагонально элементы А., матрицы А. В приведенной ниже матрице элементы диагонали представлены заглавными буквами:
А b с
А= d Е f .
Обычно указанную диагональ называют главной диагональю — для матрицы А, приведенной выше, это диагональ с элементами А, Е и £. Иногда вводят понятия поддиагоналей (элементы d и G) и наддиагоналей (элементы ft и /). Матрица, все элементы которой, расположенные кроме как на диагонали, поддиагонали и наддиагонали, равны нулю, называется ленточной.
Ранг матрицы — наибольший из порядков отличных от нуля миноров квадратной матрицы.
След матрицы — сумма диагональных элементов матрицы.
Определитель матрицы — это многочлен от элементов квадратной матрицы, каждый член которого является произведением п элементов, взятых по одному из каждой строки и каждого столбца со знаком произведения, заданным четностью перестановок:
detA = ^a17(-l)/+1Mfy>.■
где М;‘> — определитель матрицы порядка п - 1, полученной из матрицы А вычеркиванием первой строки и j-го столбца. В таком виде определитель (он же детерминант) легко получить в символьных вычислениях. В численных расчетах мы будем подразумевать под определителем численное значение этого многочлена.
Матрица в целой степени — квадратная матрица в степени п (п — целое неотрицательное число), огбределяемая следующим образом: М° = Е, М1 = М, М2 = М、М,М" = Мп-,-М.
Идемпотентная матрица — матрица, отвечающая условию Р2 = Р. Симметрическая матрица — матрица, отвечающая условию Ат = А.
Кососимметрическая матрица — матрица, отвечающая условию Ат = -А.
Ортогональная матрица — матрица, отвечающая условию Ат = А_,.
Нуль-матрица — матрица, все элементы которой равны 0.
Блок-матрица — матрица, составленная из меньших по размеру матриц, также можно представить как матрицу, каждый элемент которой — матрица. Частным случаем является блок-диагональная матрица — блок-матрица, элементы-матрицы которой вне диагонали — нуль-матрицы.
Комплексно-сопряженная матрица — матрица А, полученная из исходной матрицы А заменой ее элементов на комплексно-сопряженные.
Эрмитова матрица — матрица А, удовлетворяющая условию А = Ат.
Собственный вектор квадратной матрицы А — любой вектор х & V", х w 0, удовлетворяющий уравнению Ах = gx, где g — некоторое число, называемое собственным значением матрицы А.
Характеристический многочлен матрицы — определитель разности этой матрицы и единичной матрицы, умноженный на переменную многочлена, — |А - gEj. Собственные значения матрицы — корни ее характеристического многочлена. Норма — обобщенное понятие абсолютной величины числа.
Норма трехмерного вектора |;х|| — его длина.
Норма матрицы — значение sup(||Axii/||x||).
L-норма матрицы А — число ||А» 二 max 工卜上力卜
Матричная форма записи системы линейных уравнений — выражение А Х = В, где А — матрица коэффициентов системы. X — вектор неизвестных и В — вектор свободных членов. Один из способов решения такой системы очевиден — X = А *В, где А_, — обратная матрица.
Пакет решения задач линейной алгебры linalg
Состав пакета linalg
Несомненно, что уникальной возможностью системы Maple 7, как и других систем компьютерной алгебры, является возможность решения задач линейной алгебры в символьном (формульном, аналитическом) виде. Однако такое решение представляет скорее теоретический, чем практический интерес, поскольку даже при небольших размерах матриц (уже при 4-5 строках и столбцах) символьные результаты оказываются очень громоздкими и труднообозримыми. Они полезны только при решении специфических аналитических задач, например
с разреженными матрицами, у которых большинство элементов имеют нулевые значения.
Поэтому разработчики Mapl* 7 были вынуждены реализовать в своей системе численные методы решения задач линейной алгебры, которые широко используются в основных сферах ее приложения — математическом моделировании систем и устройств, расчетах в электротехнике, механике, астрономии и т. д.
В ядро Maple 7, как отмечалось, введены очень скромные и минимально необходимые средства для решения задач линейной алгебры. Основной упор в их реализации сделан на подключаемые пакеты. Основным из них, унаследованным от предшествующих реализаций системы, является пакет решения задач линейной алгебры 1 Inalg. Это один из самых обширных и мощных пакетов в области решения задач линейной алгебры. Он содержит свыше ста функций:
> with(llnalg);
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, LU decomp b QRdecomp, Wronskian, addcol, addrowadf, adjoint^ angle, augment, backsub, band, basis, bezout, blockmatri工 charmat, charpoly, cholesky^ col, coldim, colspace, colspan, companion^ concat, cond, copyinto, crossprod, c“/, definite^ delcols, delrows, det, diag, diverge^ dotprod, eigenvals, eigenvalues, eigenvectors^ eigenvects, entermatrix, equals exponential,
extend,^ffgausselim,fibonacci, forwardsub, frobenius, gausselim, gaussjord, geneqnsy genmatrix, grad, hadamard^ hermite, hessian^ hilbert, htranspose, thermite^ in de才line, innerprod, intbasis, inverse, ismith, issimilar, iszero Jacobian, jordan, ke门lei, laplacian, leastsqrs, linsolve, matadd, matrix, minor, mtnpoiy, 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, veepotent, veetdim, vector^ wronskian]
Ниже указано назначение тех функций пакета linalg, которые подробно не описаны:
О addeol — добавляет к одному из столбцов другой столбец, умноженный на некоторое число;
О addrow — добавляет к одной из строк другую строку, умноженную на некоторое число;
О angle — вычисляет угол между векторами;
О augment — объединяет две или больше матриц по горизонтали;
О backsub — реализует метбод обратной подстановки при решении системы линейных уравнений (см. также forwardsub):
О band — создает ленточную матрицу;
О basis — находит базис векторного пространства;
О bezout — создает Bezout-матрицу двух полиномов;
О BlockDiagonal — создает блок-диагональную матрицу;
О blockmatrix — создает блок-матрицу;
О cholesky — декомпозиция Холесского для квадратной положительно определенной матрицы;
Q charmat — создает характеристическую матрицу (charmat(M.v) — матрица, вычисляемая как V Е-М);
Q charpoly — возвращает характеристический полином матрицы;
Q col space — вычисляет базис пространства столбцов;
Q col span — находит базис линейной оболочки столбцов матрицы;
Q companion — вычисляет сопровождающую матрицу, ассоциированную с полиномом;
Q cond — вычисляет число обусловленности матрицы (cond(M) есть величина погт(М) погт(М-1));
Q curl — вычисляет ротор вектора;
Q definite — тест на положительную (отрицателыiyю) определенность матрицы;
Q diag — создает блок-диагональную матрицу;
Q diverge — вычисляет дивергенцию векторной функции;
Q elgenvals — вычисляет собственные значения матрицы;
Q eigenvects — вычисляет собственные векторы матрицы;
Q equal — определяет, являются ли две матрицы равными;
Q exponential — создает экспоненциальную матрицу;
Q ffgaussel im — свободное от дробей Гауссово исключение в матрице;
Q fibonacci — матрица Фибоначчи;
Q forwardsub — реализует метод прямой подстановки при решении системы линейных уравнений (например, для матрицы L и вектора b forwardsub(L, b) возвращает вектор решения х системы линейных уравнений L・x=b);
Q frobenius — вычисляет форму Фробениуса (Frobenius) матрицы;
Q gaussel 1m — Гауссово исключение в матрице;
Q gaussjord — синоним для rref (метод исключения Гаусса—Жордана);
Q geneqns — генерирует элементы матрицы из уравнений;
Q genmatrix — генерирует матрицу из коэффициентов уравнений;
Q grad — градиент векторного выражения;
Q GramSchmidt — вычисляет ортогональные векторы;
Q hadamard — вычисляет ограничение на коэффициенты детерминанта;
О hessian — вычисляет гессиан-матрицу выражения;
Q hilbert — создает матрицу Гильберта;
Q htranspose — находит эрмитову транспонированную матрицу;
Q ihermite — целочисленная эрмитова нормальная форма;
Q Indexfunc — определяет функцию индексации массива;
Q innerprod 一 вычисляет векторное произведение;
Q intbasis — определяет базис пересечения пространств;
Q 1 smith — целочисленная нормальная форма Шмитта;
Q Iszero — проверяет, является ли матрица ноль-матрицей;
Q jacobian 一 вычисляет якобиан векторной функции;
Q JordanBlock — возвращает блок-матрицу Жордана;
Q kernel — находит базис ядра преобразования, соответствующего данной матрице;
Q 1 aplacian 一 вычисляет лапласиан;
Q leastsqrs — решение уравнений по методу наименьших квадратов;
Q 1 insolve — решение линейных уравнений;
Q Ludecomp — осуществляет LU-разложение;
О mi про! у — вычисляет минимальный полином матрицы;
Q mulcol — умножает столбец матрицы на заданное выражение;
Q mul row — умножает строку матрицы на заданное выражение;
Q multiply — перемножение матриц или матрицы и вектора;
Q normalize — нормализация вектора;
Q orthog — тест на ортогональность матрицы;
Q permanent — вычисляет перманент матрицы — определитель, вычисляемый без перестановок;
Q pivot — вращение относительно элементов матрицы;
Q potential — вычисляет потенциал векторного поля;
Q Qrdecomp — осуществляет QR-разложение;
Q randmatrix — генерирует случайные матрицы;
Q randvector — генерирует случайные векторы;
Q ratform — вычисляет рациональную каноническую форму;
Q references — выводит список основополагающих работ по линейной алгебре;
Q rowspace — вычисляет базис пространства строки;
Q rowspan — вычисляет век!оры охвата для места столбца;
О rref — реализует преобразование Гаусса-Жордана матрицы;
О scalarmul — умножение матрицы или вектора на заданное выражение;
О singval — вычисляет сингулярное значение квадратной матрицы;
Q singularval s — возвращает список сингулярных значений квадратной матрицы;
Q smith — вычисляет Шмиттову нормальную форму матрицы;
Q submatrix — извлекает указанную подматрицу из матрицы;
Q subvector — извлекает указанный вектор из матрицы;
Q sumbasis — определяет базис объединения системы векторов;
Q swapcol — меняет местами два столбца в матрице;
Q swaprow — меняет местами две строки в матрице;
Q syl vester — создает матрицу Сильвестра из двух полиномов;
Q toepl itz — создает матрицу Теплица;
Q trace — возвращает след матрицы;
Q vandermonde — создает вандермондову матрицу;
Q vecpotent — вычисляет векторный потенциал;
Q vectdim — определяет размерность вектора;
Q wronskian — вронскиан векторных функций.
Ниже мы рассмотрим более подробно наиболее часто используемые функции из этого пакета. С деталями синтаксиса (достаточно разнообразного) для каждой из указанных функций можно ознакомиться в справочной системе Maple. Для этого достаточно использовать команду ?name;, где name — имя функции (из приведенного списка).
Интерактивный ввод матриц
Для интерактивного ввода матриц можно, определив размерность некоторого массива, использовать функцию entermatrix:
> А:=аггау(1..3.1..3);
А :=аггау(1 3, 1 3,[])
После исполнения этого фрагмента документа диалог с пользователем имеет следующий вид:
123456789123456789> entermatrix(A); enter element 1,1 > enter element 1,2 > enter element 1,3 > enter element 2,1 > enter element 2,2 > enter element 2,3 > enter element 3,1 > enter element 3.2 > enter element 3.3 >
123456789
123456789
-1 2
5 6
8 9
В:=(幻;
2 3-
8:= 4 5 6
7 8 9
В[1.1]:
1
В[2.2]:
5,
> В[3,3]:
9
Основные функции для задания векторов и матриц
В библиотечном файле 1 inalg имеются следующие функции для задания векторов и матриц:
Q vector(n.list) — создание вектора с п элементами, заданными в списке list;
Q matrix(n,m,list) — создание матрицы с числом строк п и столбцов m с элементами, заданными списком 11st.
Ниже показано применение этих функций:
> V:«vector(3.[12,34,56]):
工[12, 34, 56]
M:=matrix(2,3.[1.2.3.4]);
「123 ]
V[2];
34
M[l,3]:
3
М[2,3];
Обратите внимание на последние примеры — они показывают вызов индексированных переменных вектора и матрицы.
Функции для работы с векторами и матрицами
Для работы с векторами и матрицами Maple 7 имеет множество функций, входящих в пакет 1 inalg. Ограничимся приведением краткого описания наиболее распространенных функций этой категории.
Операции со структурой отдельного вектора V и матрицы М:
О coldim(M) — возвращает число столбцов матрицы М;
О rowdim(M) — возвращает число строк матрицы М;
Q vectdim(V) — возвращает размерность вектора V;
Q col (M.i) — возвращает г-й столбец матрицы М;
Q row(M,i) — возвращает г-ю строку матрицы М;
О minor(M,i, j) — возвращает минор матрицы М для элемента с индексами i и j;
Q delcol s(M,i.. j) — удаляет столбцы матрицы М от г-го до /-го;
Q delrows(V,i,, j) — удаляет строки матрицы М от г-й до /й;
Q extend(M,m,n,x) — расширяет матрицу М на m строк и п столбцов с применением заполнителя х.
Основные векторные и матричные операции:
Q dotprod(U.V) — возвращает скалярное произведение векторов U и V;
Q crossprod(U.V) — возвращает векторное произведение векторов U и V;
Q norm(V) или погт(М) — возвращает норму вектора или матрицы;
Q copyinto(A,B,i, j) — копирует матрицу А в В для элементов последовательно от i до j;
Q concat(Ml,M2) — возвращает объединенную матрицу с горизонтальным слиянием матриц Ml и М2;
Q stack(Ml,M2) 一 возвращает объединенную матрицу с вертикальным слиянием Ml и М2;
Q matadd(A,B) и evalm(A+B) — возвращает сумму матриц А и В;
Q multiply(A.B) и evalm(A&*B) — возвращает произведение матриц А и В;
Q adjoint(M) или adj(M) — возвращает присоединенную матрицу, такую что M?adj(M) дает диагональную матрицу, определитель которой есть det(M);
Q charpoly(M,lambda) — возвращает характеристический полином матрицы М относительно заданной переменной lambda;
Q det(M) — возвращает детерминант (определитель) матрицы М;
Q Eigenvals(M,vector) — инертная форма функции, возвращающей собственные значения матрицы М и (при указании необязательного параметра vector) соответствующие им собственные векторы;
Q jordan(M) — возвращает матрицу М в форме Жордана;
Q hermite(M) — возвращает матрицу М в эрмитовой форме;
Q trace(M) — возвращает след матрицы М;
Q гапк(М) — возвращает ранг матрицы М;
Q transpose(M) — возвращает транспонированную матрицу М;
Q inverse(M) или evalm(l/M) — возвращает матрицу, обратную к М;
Q singularvals(A) — возвращает сингулярные значения массива или матрицы А.
Приведем примеры применения некоторых из этих функций:
М : ®matrix(2,2, [а, b. с, d]);
〃 「4 ⑺
transpose(M):
~ а с~
b d
inverse(M):
' d6
-a d + b с -a d + b с
ca
-a d + b c -a d + b c
det(M):
ad -bc
rank(M);
2
trace(M):
a + d
> M-matrix(2.2,[1.2.3.4]):
> ev:«evalf(E1genvals(M,V)):
СУ :二[-.372281323, 5.372281323]
> eval(V): '-.8245648401.5657674650> charpoly(M.p):> eval(V): '-.8245648401.5657674650> charpoly(M.p):-.4222291504'-.923 0523142-.4222291504'-.923 0523142
> eval(V): '-.8245648401
.5657674650
> charpoly(M.p):
> eval(V): '-.8245648401
.5657674650
> charpoly(M.p):
-.4222291504'
-.923 0523142
-.4222291504'
-.923 0523142
p1 - 5 p-1
> jordan(M):> jordan(M):> A- array( [[1.0.1],[1.0.1],[0.1.0]]);> A- array( [[1.0.1],[1.0.1],[0.1.0]]);
> jordan(M):
> jordan(M):
> A- array( [[1.0.1],[1.0.1],[0.1.0]]);
> A- array( [[1.0.1],[1.0.1],[0.1.0]]);
■J 0 Г
% := 1 0 1
0 1 0
singularvals(A):
[0. 2,1]
Читатель, понимающий суть матричных вычислений, легко справится с тестированием других функций, входящих в пакет linalg. В приведенных примерах полезно обратить внимание на то, что многие матричные функции способны выдавать результаты вычислений в аналитическом виде, что облегчает разбор выполняемых ими операций.
Решение систем линейных уравнений
Ниже представлен простой пример составления и решения трех систем линейных уравнений с применением функций, входящих в пакет linalg:
wlth(llnalg):
C:=matr1x(3.3.[[4.8.2L[6.2.3L[3.7.llE):
"4 82一
C - 6 23
3 7
> B:=matrix(3,l,[5.6.1]);
'5"
86
1
> A:=evdlm(C);
8
以:=6 23
7 11
> Al:=copyinto(B,C,l,l):
-5 82”
Al к 6 23
1 7 11
> C:=e\/alm(A) :A2:=copy1nto(B,C, 1,2):
一4 52一
,42:= 6 63
3 1 11
> C:sevalm(A):A3:«copyinto(B,C.1.3);
"4 8 5'
N3 := 6 2 6
3 7 1
> xl:=det(Al)/det(A): _419 尸痴
> x2:=det(A2)/det(A)
> x3:«det(A3)/det(A):
t==-29
"3 :== 95
А теперь рассмотрим пример решения матричного уравнения в символьном виде:
> A:matrix(2,2,[a,b,c,d]):
Га
В:«vector(2,[с,d]):
В := [с, d]
X:=linsolve(A,B);
d (~b + c) -d a + с1 ' bc- d a ' bc - da
Следующий пример показывает решение более сложной системы линейных уравнений с комплексными коэффициентами:
A-matrix(2.2, [[10+200*1,-200*1].[-200*1,170*1]]):
_『10 + 200/ -200 Л
'■ -200/170/J.
B:=vector(2,[5,0]); в := [5, 0]
X:=multiply(inverse(A),В);
〃 「 289510 , 170600 J
[7778 3889 ,3889 3889 _
Digits:=5: convert(eval(X),fl oat); [•037156+ .13114/, .043713 + .15428/]
На этот раз решение получено использованием функций умножения матриц и вычисления обратной матрицы в виде X = А*1 В, то есть в матричном виде. В конце примера показано преобразование результатов с целью их получения в обычной форме комплексных чисел с частями, представленными в форме чисел с плавающей точкой.
Пакет линейной алгебры с алгоритмами NAG LinearALgebra
Назначение и загрузка пакета LinearALgebra
В последние годы разработчики систем символьной математики осознали, что малая скорость выполнения векторных и матричных операций при решении задач линейной алгебры оборачивается потерей заметной части рынка систем компьютерной математики. Новые версии таких систем (Mathematica 4/4,1 и Maple 6/7) отличаются от прежних прежде всего резким повышением эффективности решения задач линейной алгебры в численном виде.
В новых реализациях систем Maple и MATLAB была сделана ставка на использование давно апробированных быстрых алгоритмов линейной алгебры, предложенных создателями Number Algorithm Group (NAG). Эти алгоритмы издавна применяются на больших ЭВМ и суперкомпьютерах, обеспечивая ускорение численных матричных операций от нескольких раз до нескольких десятков раз. Их применение обеспечивает эффективное использование систем символьной
математики в решении задач, сводящихся к задачам линейной алгебры. В числе таких задач многочисленные задачи теоретической электротехники, механики многих объектов, моделирования электронных устройств и т, д.
В Maple 7 использование алгоритмов NAG является одной из первых отличительных черт новой версии системы. Оно реализуется новым пакетом LinearAl gebra. Для его загрузки используются следующие команды:
restart; with(LinearAlgebra):
[Add, Adjoint, BackwardSubstitute, BandMatrix, Basis, BezoutMatrix, BidiagonalForm, BilinearForm, CharacteristicMatrix, CharacteYisticPolynomia[ Column, ColumnDimension^ ColumnOperation, ColumnSpace^ CompanionMatrix^
ConditionNumber, ConstantMatrix, ConstantVector, CreatePermиtatioi% CrossProduct, DeleteColumn, DeleteRow, Determinant, DiagonalMatrix, Dimension,
Dimensions, DotProduct, Eigenvalues, Eigenvectors, Equal, Forw'ardSubstitute^ FrobemusForm, GenerateEquations^ GenerateMatnx, GetResultDataType, GetResultShape, GivensRotationMatrix, GramSchmidt, HankelMatrix, HermiteForm^ HermitianTranspose, HessenbergForm, HilbertMatrix, HouseholderMatrix^ IdentityMatrix, IntersectionBasis, IsDefinite, IsOrthogonal, IsSimllar, IsUnitaiy,
JordanBlockMatrix, JordanForm, LA_Main, AUDecomposition, LeastSquares, LinearSolve, Map, Map2, MatrixAdd, Matrlxlnverse^ MatrixMatrixMultiply, MatrixNorm, MatrixScalarMultiply, Matrix VectorMultiply, MinimalPolynomial^ Minor, Multiply, NoUserValue, Norm, Normalize, NullSpace, OuterProductMatrix. Permanent, Pivot, QRDecomposition, RandomMatrix, Random Vector, Rank, Row,
RowDimension^ RowOperation, RowSpace, ScalarMatrix, ScalarMultiply, ScalarVector, SchurFonn^ SingularValues, SmithForm, Sub Matrix, SubVector, SumBasis^ SyBesteYMatYix^ ToeplitzMatrix, Trace, Transpose, Tridiagona IF о rm, UnitVector, VandermondeMatrix, Vector Add, VectorAngle, VectorMatrixMultiply, VectorNorm, VectorScalarMultiply, ZeroMatrix, Zero Vector, Zip]
infolevel[LinearAlgebra]:=1; infolevel,. 八厶1
Нетрудно заметить, что многие функции этого пакета повторяет по назначению функции более старого пакета linalg, описанного выше. Поэтому мы не будем останавливаться на их повторном описании. Главное то, что эти функции задействуют возможности быстрых алгоритмов NAG и в отличие от функций пакета linalg ориентированы на численные расчеты в формате обработки вещественных чисел, характерном для компьютерной платформы. Знающий матричные методы читатель легко поймет назначение функций пакета LinearAlgebra по их составным названиям. Например, DeleteColumn означает удаление столбца матрицы, ToeplitzMatrix означает создание матрицы Теплица, ZeroMatrix — создание матрицы с нулевыми элементами и т. д. Все имена функций этого пакета начинаются с заглавной буквы.
Примеры матричных операций с применением пакета LinearALgebra
Применение алгоритмов NAG особенно эффективно в том случае, когда используется встроенная в современные микропроцессоры арифметика чисел с плавающей запятой. С помощью специального флага такую арифметику можно отключать или включать:
UseHardwareFloats 尸 false; # use software floats
UseHardyvareFloats '.- false
UseHardwareFloats := true; # default behaviour
UseHardwareFloats := true
Матрицы в новом пакете линейной алгебры могут задаваться в угловых скобках, как показано ниже:
М1:=«1|2>,<4|5>>; М2:-«112.>,<415»;
' 1
2一
Ml尸
4
5—
"1
2/
М2 :=
4
5
После этого можно выполнять с ними типовые матричные операции. Например, можно инвертировать (обращать) матрицы:
> М1Л(-1); М2Л(-1);
'-52'
Т3
-1
J_
Matrixinverse: "calling external function"
Matrixinverse: ,fNAG" hw_fO7adf
Matrixinverse: "NAG” hw_fU7ajf
.66666666666666652 .666666666666666630
1.33333333333333326 -333333333333333315
Обратите внимание, что Maple 7 теперь выдает информационные сообщения о новых условиях реализации операции инвертирования матриц с вещественными элементами, и в частности об использовании алгоритмов NAG и арифметики, встроенной в сопроцессор.
Следующий пример иллюстрирует создание двух случайных матриц Ml и М2 и затем их умножение:'
Ml:=RandomMatrix(2,3): M2:=RandomMatr1x(3,3):
Multiply(Ml,М2.'inplace'): Ml;
Г-50 62 -71-]
.30 -79 28
*20 -34
-2Г
М2 :-
-7 -62
-56
16 -90
-8_
、2570
4246
-1854"
1601
1358
3570
<2570
4246
■1854-
1601
1358
3570
Параметр inplace в функции умножения обеспечивает помещение результата умножения матриц на место исходной матрицы Ml — излюбленный прием создателей быстрых матричных алгоритмов NAG. Поскольку матрицы Ml и М2 заданы как случайные, то при повторении этого примера результаты, естественно, будут иными, чем приведенные.
Следующий пример иллюстрирует проведение хорошо известной операции LU-разложения над матрицей М, созданной функцией Matrix:
> M;=Matrix([[14.-8,l],[-ll.-4,18],[3.12,19]], datatype^!oat);
LUDecomposit1on(M,output=[,NAG'],inplace): 1p1v:=l[l]:
'14. -8.I.-
M:= -11. -4. 18.
_ 3.12.19._
LUDecomposition: calling external function"
LUDecomposition: "NAG" hw_f07adf
'П Г 14.-8.1.”
3 , .21428571428571427413.714285714285713618.7857142857142848
.3_| [・.785714285714285698 -.750000000000000000 32.8750000000000000
一г
ipiv :=3
[3
一 14.-8.1.-
.21428571428571427413,7142857142857136 18.7857142857142848
-.785714285714285698 -.750000000000000000 32,8750000000000000
Конечной целью большинства матричных операций является решение систем линейных уравнений. Для этого пакет UnearAl gebra предлагает великое множество методов и средств их реализации. Мы ограничимся простым примером одновременного решения сразу трех систем уравнений, Дабы не загромождать книгу массивными выражениями, ограничимся решением систем из двух линейных уравнений, ма1рйца коэффициентов у которых одна, а векторы свободных членов разные. Ниже показан пример решения такой системы:
M:-Matrix([[l.^] JM3],datatw»*float);
V2:»<7,-11>;
V3:«<-34,-67>;
M:=M:=-1.4.-1.4.3「5.3「5.
M:=
M:=
-1.
4.
-1.
4.
3「
5.
3「
5.
VI :=VI :=V3 ~V3 ~M:=M:="1. 3;4. 5."1. 3;4. 5.
VI :=
VI :=
V3 ~
V3 ~
M:=
M:=
"1. 3;
4. 5.
"1. 3;
4. 5.
1.
2
■-34"
-67
Li nea rSolve(M,<V11V21V3>);
LinearSolve: Hcalling external function'*
LinearSolve: "NAG" hw_f07adf
LinearSolve: "NAG" hw fD7aef
,142857142857142905 -9.71428571428571352 -4.42857142857143060'
.285714285714285698 5.57142857142857118 -9.85714285714285588
M:«Matrix([[l.,3],[4,5]].datatype*float);
ipiv, M :« LUDecofnposition(M,outpute['NAG'], inpl ace):
Li nearSolve([ipiv. М]. <V1|V2|V3>):
LUDecomposition: "calling external function"
LUDecomposition: "NAG" hw_f07adf
ipiv, M :=ipiv, M :=Г4.5.'
ipiv, M :=
ipiv, M :=
2 J [.250000000000000000 1.75000000000000000
LinearSolve: "calling external function"
LinearSolve: "NAG" hw_f07aef,
-.142857142857142905 -9.71428571428571352 -4.4285714285714306СЛ
.285714285714285698 5.57142857142857118 -9.85714285714285588]
На этом, учитывая ограниченный объем книги, мы завершаем обзор пакета Linear Algebra. Читатель, познающий или знающий методы линейной алгебры, может опробовать в работе любые функции этого пакета самостоятельно или познакомиться со множеством примеров, размещенных в справочной системе Maple 7. Возможности пакетов linalg и LinearAlgebra удовлетворят самых требовательных специалистов в этой области математики.
Интеграция Maple 7 с MATLAB
Краткие сведения b MATLAB
Несмотря на обширные средства линейной алгебры (да и многие другие), имеющиеся у системы Maple 7, есть системы компысггерной; математики, решающие »®^<#^m jjpiaccbi задач более эффективно^ и прежде вугр быстрее. В области
линейной алгебры к таким системам, безусловно, относится система MATLAB, созданная компанией MathWorks, Inc. Ее название происходит именно от слов MATrix LABoratory — матричная лаборатория.
MATLAB содержит в своем ядре многие сотни матричных функций и является одной из лучших матричных систем для персональных компьютеров. Она реализует самые современные алгоритмы матричных операций, включая, кстати, и алгоритмы NAG. Однако главное достоинство MATLAB — наличие множества дополнительных пакетов как по классическим разделам математики, так и по самым новейшим, таким как нечеткая логика, нейронные сети, идентификация систем, обработка сигналов и др. Знаменитым стал пакет моделирования систем II устройств Simulink, включаемый в пакет поставки системы MATLAB. Последней версией системы является MATLAB 6.0.
В то же время нельзя не отметить, что MATLAB — одна из самых ]'ромоздких математических систем. Инсталляция ее полной версии занимает около 1,5 Гбайт дискового пространства. Несмотря на это, интеграция различных математических систем с данной системой, похоже, становится своеобразно!! модой. Такая возможность предусмотрена и в системе Maple 7 с помощью пакета Matlab.
Загрузка пакета расширения Matlab
Для загрузки пакета Matlab используется команда:
> w1th(Matlab):
[chol, closelink, defined, det, dimensions, eig, evalM, fft, getvar, z»v, /w, ode45, openlink, qh setvar, size, square, transpose ]
Использование этой команды ведет к автоматическому запуску системы MATLAB (гарантируется работа с версиями MATLAB до 5.3.1 включительно) и установлению необходимой объектной связи между системами Maple 7 и MATLAB.
》^ПРИМЕЧАНИЕ Как нетрудно заметить, данный пакет дает доступ всего к 18 функциям системы MATLAB /(из многих сотен, имеющихся только в ядре последней системы). Таким образом, есть все
основания полагать, что возможности MATLAB в интеграции с системой Maple 7 используются пока очень слабо и носят рудиментарный характер. Стоит ли ради этих функций иметь на компьютере огромную систему MATLAB, пользователи должны решать сами. Если ответ положительный, то, скорее всего, пользователь решает тот класс задач, для которых лучше подходит MATLAB, и надо задуматься уже над тем, нужен ли в этом случае Maple.
Типовые матричные операции пакета расширения Matlab
Большинство функций пакета Matlab (не путайте с системой MATLAB, имя которой надо записывать прописными буквами) реализуют самые обычные матричные операции, что и иллюстрируют приведенные ниже примеры.
Зададим матрицу М в формате Maple:
> maplematrix^ai-arrayd-.S.l..3,[[6.4,2],[7,8.1],[3,7,3]]);
'6 4 2' maplematrix_a := 7 8 1 3 7 3
Ниже даны примеры транспонирования матрицы, ее инвертирования, вычисления детерминанта и собственных значений матрицы:
> Matlab[transpose](mapl ematrix_a):
'6. 7. 3「
8. 7.
1. 3.
Matlab[inv](maplematrix_a):
-.150000000000000022.100000000000000032.249999999999999944-.150000000000000022.100000000000000032.249999999999999944-.212499999999999967 .0250000000000000360
-.150000000000000022
.100000000000000032
.249999999999999944
-.150000000000000022
.100000000000000032
.249999999999999944
-.224999999999999978 .149999999999999966
.312500000000000000 -374999999999999944
Matlab[det](maplematrix_a):
-
> Matlab[eig](maplematrix_a);
■13.8861968635740444 +0」-
1.55690156821298186 + 1.82679340924767875 /
1.55690156821298186 - 1.82679340924767875 /_
Можно проверить, является ли матрица квадратной:
Matlab[square](mapl ematrix_a);
true
а также вычислить размер матрицы:
Matl ab[dimensions](fnaplematrix_a):
一。
Можно также проверить, является ли данная матрица матрицей системы MATLAB:
Matlab[defined]("fnaplefnatrix_a"): false
Здесь надо иметь в виду, что форматы матриц в системах Maple и MATLAB различны. Выполним LU-преобразование матрицы:
Matlab[lu](maplematriх_а,output'L'):
7."8.1._
.857142857142857094 3.57142857142857162 2.57142857142857162
.428571428571428548 .799999999999999820 3.19999999999999972
Таким образом, видно, что пакет Maple в данном случае реализует типовые матричные операции, но средствами системы MATLAB. Загрузка последней происходит автоматически при загрузке пакета Matlab. Если система MATLAB не установлена на вашем компьютере, то доступ к функциям пакета Matlab будет отсутствовать, a Maple 7 при попытке использования данных функций будет выдавать сообщения об ошибках.
Выделение сигнала на фоне шумов
Среди небольшого числа доступных функций системы MATLAB в пакете Matlab нельзя не выделить особо функции быстрого прямого и обратного преобразований Фурье. В системе MATLAB эти функции реализуют наиболее эффективные алгоритмы быстрого преобразования Фурье (БПФ), обеспечивающие решение крупноразмерных задач (например, обработки сигналов, представленных векторами и матрицами больших размеров) в десятки раз быстрее, чем при обычных методах выполнения преобразований Фурье.
Покажем возможность применения БПФ на ставшем классическим примере — выделении спектра полезного сигнала на фоне сильных помех. Зададим некоторый двухчастотный сигнал, имеющий 1500 точек отсчета:
num := 1500:
Time := [seq(.03*t. t=l..num)]:
data ;= [seq((3.6*cos(T1me[t]) + cos(6*Time[t])). t=l..num)]:
plots[pointplot](zip((x.y)->[x.y]Jlme.data). style=line):
График сигнала представлен на рис. 15.1.
Рис. 15.1. График исходного сигнала
Теперь с помощью генератора случайных чисел наложим на этот сигнал сильный 《тум» (слово «шум» взято в кавычки, поскольку речь идет о математическом моделировании шума, а не о реальном шуме физической природы):
tol := 10000:
г := rand(0..tol):'
no1sy_data ;= [seq(r()/(tol)*data[t], t=l..num)]:
plots[pointplot](zip((x,y)->[x,y],T1me,no1sy_data), style=11ne):
Нетрудно заметить, что теперь форма сигнала настолько замаскирована шумом (рис. 15.2), что можно лишь с трудом догадываться, что сигнал имеет периодическую составляющую малой амплитуды. Эта высокочастотная составляющая сигнала скрыта шумом.
Подвергнем полученный сигнал (в виде временной зависимости) прямому преобразованию Фурье, реализованному функцией fft:
ft 产 fft(noisy data):
VectorOptions(ft, datatype);
complex^
Эта операция переводит задачу из временного представления сигнала в частотное, что позволяет использовать частотные методы анализа сигнала. Выделим, к примеру, действительную и мнимую части элементов вектора ft и проверим его размер:
Рис. 15.2. Временная зависимость сигнала с шумом
real_part :=加叩(Re. ft): imag_part 尸 加叩(Im, ft):
dimensions(ft):
[1500]
Теперь выполним обычные операции вычисления спектра и зададим построение графика частотного спектра мощности сигнала:
setvarCFT". ft):setvar("n". num):
evalMCresult = FT.*conj(FT)/n"):
pwr := getvar("result"):
VectorOptions(pwr, datatype):
floaty
>pwr」ist := convert(pwr. list):
>pwr_points := [seq([(t-l)/Time[nufn]. pwr_list[t]], t=l..num/2)]:
plotsEpointpl ot](pwr_points, style=line);
Спектрограмма сигнала представлена на рис. 15.3.
800 ■]
600 •
'400
200
24'6810121416
” Рис. 15.3. Спектрограмма сигнала
Из нее отчетливо видно, что сигнал представлен двумя частотными составляющими с разной амплитудой. Таким образом, задача четкого выделения полезных компонент спектра из зашумленного сигнала с применением средств системы MATLAB успешно решена.
Пакет анализа линейных функциональных систем LinearFunctionalSystems
Назначение пакета LinearFunctionalSystems
Пакет LinearFunctionalSystems содержит набор функции для решения задач, связанных с анализом линейных функциональных систем. Обычно такие системы описываются линейными дифференциальными уравнениями, имеющими то или иное решение. Пакет LinearFunctionalSystems позволяет провести тестирование подготовленной системы, оценить ряд ее параметров и получить решение одним из ряда методов.
Вызов всех функций пакета осуществляется командой:
> with(LinearFunctional Systems):
[A reSam eSolu tion, CanonicalSystem^ ExtendSeries^ Нот о gen eons Sys tent, IsSohition, MatrixTriangularization, PolynomialSolution^ Properties, RationalSolutidii, SeriesSolution, UniversalDenominator\.
Тестовые функции пакета LinearFunctionalSystems
Прежде чем рассматривать основные функции пакета, рассмотрим две тестовые функции. Они представлены следующими формами записи:
IsSolution(sol. sys. vans) IsSolut1on(sol. A, b. x. case)
IsSolution(sol. A. x. case) AreSameSolut1on(sol. sol 1)
В них: sol — тестируемое решение, sys — система функциональных уравнений, х — независимая переменная решения, А и b -~ матрица и вектор с рациональными элементами, case — имя метода решения ('differential', 'difference' или 'qdifference').
Функции решения линейных функциональных систем
Группа основных функций пакета LinearFunctionalSystems имеет идентичны!! синтаксис и записывается в виде:
name(sys.vans.[method]) илиname(A[.b].x.case.[method])
Здесь name — одно из следующих имен:
О Polynomial Solution — решение в форме полинома;
О RationalSolution — решение в форме рационального выражения;
О SeriesSolution — решение в виде ряда;
О Uni versal Denomi nator — решение с универсальным знаменателем (и числителем, равным 1).
Система функциональных уравнений задается либо в виде полной системы sys со списком переменных vars, либо в матричном виде с заданием матрицы коэффициентов системы А и вектора свободных членов b (может отсутствовать) с указанием независимой переменной х и параметра case, имеющего значения 'differentiar, 'difference' или 'qdifference'. Параметр method, задающий метод EG-исключепия, может иметь значения 'quasimodular' или 'ordinary'.
Вспомогательные функции
Несколько вспомогательных функций пакета LinearFuiictionalSystems представлено ниже:
О MatrixTriangul arization (mat, m, n, x. It) — триангуляция матрицы mat размера mxn с указанием типа It ('lead' или 'trail');
О Canonical Systemtshift, sys, vars) или Canoni cal System(shi ft, A[, b], x, case)— возвращает систему в каноническом виде (параметр shift задается как ' di fference' или 'q-di fference', назначение других параметров соответствует указанным выше для других функций);
О ExtendSeries(sol, deg) — расширяет ряд решения sol до расширенного ряда степени deg;
О HomogeneousSystem (homo, sys, vars) ил и HomogeneousSystem (homo, A[, b], x, case)— преобразует исходную систему в гомогенную с именем homo.
О Properties(sys, vars) или Properties(А[, b], х, case) -- возвращает основные свойства системы.
Примеры применения пакета LinearFunctionalSystems
Ниже представлен ряд примеров применения пакета LinearFunctionalSystems, иллюстрирующих его возможности:
> wlth(LinearFunctionalSystems):> wlth(LinearFunctionalSystems):sys := [dlff(yKx), х) - у2(х).sys := [dlff(yKx), х) - у2(х).d5ff(y2(x), diff(y3(x), diff(y4(x), diff(y5(x), diff(y6(x),d5ff(y2(x), diff(y3(x), diff(y4(x), diff(y5(x), diff(y6(x),x) - y3(x) - y4(x),x) - y5(x),x) - 2*yl(x) - 2*x*y2(x) - y5(x),x) - x人2*yl(x) - 2*x*y3(x) - y6(x),x) - x人2*y2(x) + 2*y3(x)]:x) - y3(x) - y4(x),x) - y5(x),x) - 2*yl(x) - 2*x*y2(x) - y5(x),x) - x人2*yl(x) - 2*x*y3(x) - y6(x),x) - x人2*y2(x) + 2*y3(x)]:vars := [yl(x), y2(x), y3(x), y4(x), y5(x), y6(x)]:vars := [yl(x), y2(x), y3(x), y4(x), y5(x), y6(x)]:sol:=PolynomialSolution(sys, vars);sol:=PolynomialSolution(sys, vars);
> wlth(LinearFunctionalSystems):
> wlth(LinearFunctionalSystems):
sys := [dlff(yKx), х) - у2(х).
sys := [dlff(yKx), х) - у2(х).
d5ff(y2(x), diff(y3(x), diff(y4(x), diff(y5(x), diff(y6(x),
d5ff(y2(x), diff(y3(x), diff(y4(x), diff(y5(x), diff(y6(x),
x) - y3(x) - y4(x),
x) - y5(x),
x) - 2*yl(x) - 2*x*y2(x) - y5(x),
x) - x人2*yl(x) - 2*x*y3(x) - y6(x),
x) - x人2*y2(x) + 2*y3(x)]:
x) - y3(x) - y4(x),
x) - y5(x),
x) - 2*yl(x) - 2*x*y2(x) - y5(x),
x) - x人2*yl(x) - 2*x*y3(x) - y6(x),
x) - x人2*y2(x) + 2*y3(x)]:
vars := [yl(x), y2(x), y3(x), y4(x), y5(x), y6(x)]:
vars := [yl(x), y2(x), y3(x), y4(x), y5(x), y6(x)]:
sol:=PolynomialSolution(sys, vars);
sol:=PolynomialSolution(sys, vars);
7111212
so/ := -_c2 _ 2 x _c3, - 2 _c3, _c( +x_c2 + -x_ X _ 2 X —%+ % -сз5
.2[
_C3 - 2 X _Cj _。2一2光 ~C3
> IsSolution(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]]:-
soli := [-_q + х _с3, _q, -_с2 +х _с}-х2 _q, _q - х _q + х2 _q,- 2 х
-2 _q + 2 x _c2 - x? _q + x3 ]
> IsSolution(soll, sys. vans);
true
> AreSameSolution(sol .soil):
true
> sol[1] := 1:
s 叫:=1
> IsSolution(sol, sys, vans):
[0, f -oo, 1,3, -oo]
> so!2 := eval(soli, _c[l]=0):
sol2 := [x _Cy _Cy -_c2 - x? _Cy _c2 + x2 _cy -2 x _£驴-2 _c3 + 2 x _c2 + x3 _c3]
> IsSolution(so!2, sys. vans);
true
> AreSameSolution(soll,sol2):
false
> sys := [-хж2*у2(х) + 2*x*2*yl(x) + 4*yl(x)*x • yl(x + l)*x人2 - 4*yl(x + l)*x + 2*yl(x)-
4*yl(x + 1), y2(x + 1) - yl(x)]:
vars:= [yl(x), y2(x)]:
Uni versa1Denomi nator(sys. vans):
(X + 1 У 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
[basis, convexhull, cterm, dejine_zero, display, dual, feasible, maximize, minimize^ pivot, pivoteqn^ pivotvar, ratio, setup, standardize ]
Приведем краткое назначение этих функций:
О basis — возврат списка основных переменных для множества линейных уравнений;
О convexhull — вычисление выпуклой оболочки для набора точек;
О cterm — задание констант для системы уравнений или неравенств;
О define_zero — определение наименьшего значения, принимаемого за ноль (по умолчанию увязано со значением системной переменной Digits);
О display -- вывод системы уравнений или неравенств в матричной форме;
О dual — выдача сопряженных выражений;
О equal ity — параметр для функции convert, указывающий на эквивалентность;
О feasible — выяснение возможности решения заданной задачи:
О maximize — вычисление максимума функции;
О minimize — вычисление минимума функции;
О pivot — создание новой системы уравнений с заданным главным элементом;
О pivoteqn — выдача подсистемы уравнений для заданного главного элемента;
О pivotvar — выдача переменных с положительными коэффициентами в целевой функции;
О ratio — выдача отношений для определения наиболее жесткого ограничения;
О setup — задание системы линейных уравнений;
О standardize — приведение заданной системы уравнений или неравенств к стандартной форме неравенств типа «меньше или равно».
Функции maximize и minimize
Главными из этих функций являются maximize и minimize, оптимизирующие задачу симплекс-методом. Они записываются в следующих формах:
maximizeff. С)maximizeff. С)mmlmlzeff, С)mmlmlzeff, С)max1m1ze(f . С, m1n1mize(f . С, maximizeff . С. m1n1m1ze(f . С.max1m1ze(f . С, m1n1mize(f . С, maximizeff . С. m1n1m1ze(f . С.vartype)vartype)vartype, 'NewC'.vartype, 'NewC.vartype)vartype)vartype, 'NewC'.vartype, 'NewC.'transform')'transform')'transform')'transform')
maximizeff. С)
maximizeff. С)
mmlmlzeff, С)
mmlmlzeff, С)
max1m1ze(f . С, m1n1mize(f . С, maximizeff . С. m1n1m1ze(f . С.
max1m1ze(f . С, m1n1mize(f . С, maximizeff . С. m1n1m1ze(f . С.
vartype)
vartype)
vartype, 'NewC'.
vartype, 'NewC.
vartype)
vartype)
vartype, 'NewC'.
vartype, 'NewC.
'transform')
'transform')
'transform')
'transform')
Здесь f — линейное выражение, C — множество или список условий, vartype — необязательно задаваемый тип переменных NONNEGATIVE или UNRESTRICTED, NewC и transform — имена переменных, которым присваиваются соответственно оптимальное описание и переменные преобразования. Ниже даны примеры применения этих функций:
mlnlmlzeC х-у, {4*х+2*у <= 10, 3*х+4*у <= 16}, NONNEGATIVE,'NC,'vf ); {х = 0,у = 4}
NC:vt:
1351
{у = ~ ~ SL2 + 4 —彳 х, SL / = 2 — — .V + — SL2}
4_4 _22_
maxim1ze( х+у, {4*х+2*у ” 10, 3*х+4*у <= 16}, NONNEGATIVE ):
417417
417
417
Прочие функции пакета simplex
Функция basis(C) возвращает базис для системы линейных уравнений С. Например:'
bas5s( [ х = 2*z+w , z 上 2*y - w ]):
Функция convexhulKps) возвращает выпуклую оболочку множества точек ps:
convexhull({[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:、
def1ne_zero();
.1000000000 10'7
Dig1ts:»40:
Digits := 40
define_zero():
.1000000000000000000000000000000000000000 10'37
define_zero(l*10*(-10)):
.1000000000000000000000000000000000000000 10'9
Функция displау(С) имеет еще и форму displау(С,[х, у, z]). Она задает вывод линейных уравнений и неравенств в матричной форме:
> display({2*x+5*y-z<== 0, 2*w-4*y-z<^2}):
-0 -4 22 5 0-0 -4 22 5 0-1 W-1 W<<2'02'0
-0 -4 2
2 5 0
-0 -4 2
2 5 0
-1 W
-1 W
<
<
2'
0
2'
0
Функция dual(f, С, у) имеет следующие параметры: f — линейное выражение , С — множество неравенств и у — имя. Эта функция возвращает сопряженное с f выражение:
> dual( х-у,{2*х+3*у<=5,3*х+6*у<«15},z): 15z/+5z2, {1 W3z/+2z2,-l W6z/+3z2}
Функция feasible может быть задана в трех формах:
feaslble(C)
feaslble(C.vartype)
feas1ble(C.vartype,'NewC.'Transform')
Здесь параметр vartype может иметь значения NONNEGATIVE или UNRESTRICTED. Эта функция определяет систему как осуществимую или нет:
feasible({2*x+3*y<=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}.x.[_SLl=5-4*x-3*y]):
15 31 37
{% = -- SLl+---y. SL2=- + - SLl--y}
I 4-4, 4 -4 4~4
Функция pivoteqn(C, var) возвращает подсистему для заданного диагонального элемента С:
pivoteqn( {_SL1 = 5-3*х-2*у, _SL2 = 4-2*х-2*у}, х ):
[_SL1 =5-Зх-2у]"
Функция pivotvar(f, List) или pivotvar(f) возвращает список переменных, имеющих положительные коэффициенты в выражении для целевой функции:
pivotvar( xl-2*x2+3*x3-x4);
х1
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)
setup(C, NONNEGATIVE)
setupfC. NONNEGATIVE, 't'),
Она обеспечивает конструирование множества уравнений с переменными в левой части:
setup( {2*х+3*у<=5.3*х+5*у=15}):
{項7 = _5+,,х = -) + 5}
Последняя функция — standartize(C) — конвертирует список уравнений (неравенств) в неравенства типа «меньше или равно»:
standardize({2*х+3*у<^5,3*х+5*у=15}):
{2x + 3yW5, 3x + 5yW 15, -3 х - 5 j < -15}
Пакет планиметрии geometry
Набор функций пакета geometry
Пакет геометрических расчетов geometry в системе Maple 7 получил как бы второе рождение — число его функций по сравнению с версией этого пакета в системе Maple V R5 возросло в несколько раз. Теперь загрузка пакета возвращает весьма внушительный список из более чем 100 функций:
with(geometry);
[Appolonius, AreCollinear, AreConcurrent^ AreConcyclic, AreConjugate, AreHarmonic, AreOrthogonal, AreParallel, ArePerpendicular, AreSimilar, AreTangent, CircleOfSim ilitude, CrossProduct, CrossRatio, Defined As ^ Equation, EulerCircle, EulerLine, Exterior Angle, Externa IBisector, Find Angle, GergonnePoint^ GlideReflection, HorizontalCoord, HorizontaIName, InteriorAngle, IsEquilateral,
IsOnCircle, IsOnLine. IsRightTriangle, Major Axis, MakeSquare, Minor Axis, NagelPoint^ OnSegment, ParallelLine^ PedalTrianglet PerpenBisector, PerpendicidarLine, Polar, Pole、RadicalAxis^ RadicalCenter, RegularPolygon^ RegularStarPolygon^ SensedMagnitude, SimsonLine^ SpiralRotation^
StretchReflection, StretchRotation^ TangentLine, VerticalCoord, VerticalName,
altitude, apothem^ area, asymptotes, bisector, center, centroid, circle, circumcircle, conics convexhull, coordinates^ detail, diagonal, diameter, dilatation, directrix, distance, dmw, dsegment, ellipse^ excircle, expans ion, foci, focus, form, homology^ homothety, hyperbola, incircle, inradius, intersection^ inversion, line, medial, median, method, midpoint, orthocenter^ parabola,perimeter, point, powerpc, projection^
radius, randpointt reciprocationf reflection^ rotation, segment^ sides, similitude^ slope、 square^ stretchy tangentpc^ translation, triangle^ ye尸fex, vertices]
Этот пакет содержит средства расчета основных параметров ряда геометрических объектов. Для каждого объекта возможно задание различных исходных величин, так что пакет охватывает практически все виды классических геометрических расчетов на плоскости. Несомненно, этот пакет заинтересует всех, кто работает в области геометрии и смежных областях.
Обратите внимание на то, что многие функции этого пакета вовсе не рисуют на экране соответствующие фигуры, а лишь выполняют типовые геометрические расчеты. Разумеется, в дальнейшем, используя результаты этих расчетов, можно построить соответствующую фигуру с помощью графических функций.
Пример применения расчетных функций пакета geometry
К сожалению, описание всех функций этого пакета потребует привести справочные данные практически по всей геометрии на плоскости, объем которых намного превышает объем данной книги. Учитывая идентичность идеологии при работе с функциями этого пакета, большинство из которых имеет вполне прозрачные имена (правда, англоязычные), работу с пакетом поясним на примере одной из функций — circle. Она позволяет математически задать окружность и определить все ее геометрические параметры. Функция может иметь несколько форм записи. Например, в форме:
circle(c, [А, В. С], n, 'centernafne'=fn)
она определяет построение окружности, проходящей через три точки А, В и С. Необязательный параметр п — список с именами координатных осей. Параметр * centername *=т задает имя центра.
В форме circle(c, [А, В], п/ 'centername,=т) задается окружность, проходящая через две точки А и В, а в форме circle(c( [A, rad], n, 'centername'=т) задается окружность, проходящая через одну точку А с заданным (и произвольным) радиусом rad
и центром с. Наконец, функция circle в форме cjrcle (с, eqn, п, 1 centername'=т) позволяет задать окружность по заданным уравнению eqn и центру с.
Проиллюстрируем применение функции circle на следующих примерах. Зададим характеристические переменные:.
> _EnvHorizontalName 尸 m; _EnvVerticalName := n:
Определим окружность cl, проходящую через три заданные точки А, В и С с указанными после их имен координатами, и найдем координаты центра этой окружности:
> c1rcle(cl,[point(A,0,0), point(B,2,0),point(C,l,2)],'centernafne'=01):
〉center(cl), coordinates(center(cl));
「 3]
Далее найдем радиус окружности:
radius(cl):
и уравнение окружности, заданное в аналитическом виде:
Equation(cl);
?93
优 + 〃 - 2 т - з п = О
Наконец, с помощью функции detail получим детальное описание окружности:
detail(cl);
name of the object: cl
form of the object: circle2d
name of the center: 01
coordinates of the center: [I, 3/4]
radius of the circle: 1/16*25л(1/2)*16л(1/2)
equation of the circle: т^2+п^2-2^т-3/2^п = 0
Заинтересованный в таких расчетах читатель может самостоятельно ознакомиться с другими функциями аналогичным образом, тем более, что в справочной системе этого пакета имеется множество примеров работы с его функциями.
Визуализация геометрических объектов с помощью пакета geometry
Одно из важных достоинств пакета geometry — возможность наглядной визуализации различных геометрических понятий, например графической иллюстрации доказательства теорем или геометрических преобразований на плоскости. Проиллюстрируем это на нескольких характерных примерах, заодно показывающих технику работы с рядом функций этого пакета.
Рисунок 16.1 показывает построение из множества окружностей фигуры — кардиоиды. Вопреки обычному построению этой фигуры, используется алгоритм случайного (но удовлетворяющего требованиям построения данной фигуры) выбора положений центров и радиусов окружностей.
Рис. 16.1. Построение кардиоиды из окружностей
Рисунок 16.2 дает графическую иллюстрацию к одной из теорем Фейербаха. Здесь эффектно используются средства выделения геометрических фигур цветом, что, увы, нельзя оценить по книжной черно-белой иллюстрации.
На следующем рисунке (рис. 16.3) показано построение фигуры, образованной вращением множества квадратов относительно одной из вершин. Это хороший пример применения функций point, square, rotation и draw из пакета geometry.
Рисунок 16.4 показывает гомологические преобразования квадрата. Заинтересовавшийся читатель может легко разобраться с деталями простого алгоритма этой программы.
》)ПРММЕЧАНМЕ Обратите особое внимание на последний параметр в функции draw. Он задает постро- " ение титульной надписи с заданными шрифтом и размером символов. Сравните титуль
ные надписи на рис. 16.4 и 16.3, где титульная надпись сделана шрифтом, выбранным по умолчанию. Приятно, что в обоих случаях нет преград для использования символов кириллицы и создания надписей на русском языке.
Наконец, на рис. 16,5 показан пример построение трех окружностей, имеющих две общие точки. Обратите внимание на вывод надписей «о», «о1» и «о2», ука- зываж)щих; моложенме дайТрс^; окружностей йа рисунке»
|旧乂疝6 7 - Iqeom2.m*s TGeive; 1|旧乂疝6 7 - Iqeom2.m*s TGeive; 1m 酶做卜鹼由無總石駛*5限單**嬲货3* 粼變毅、、6s а、ш
|旧乂疝6 7 - Iqeom2.m*s TGeive; 1
|旧乂疝6 7 - Iqeom2.m*s TGeive; 1
[> restart :wlth(geo*etry):
[> triangle( T, [point(A, 0, 0), point(B, 3, -1), point(C, 6, 2)]
[incirele( inc, T, *centerna»eT-ll ):
[excirclef obj, T, [exl(Il), ex2(T2), ex3(T3)]):
[EulerCirclef ec, T, 'centername *=x ):
,> draw( [ inc (color-yellow) , ec (color=plunt) , exl(color-green), T(color=blue, filled=false) ], filled=true,
scallng=constralned, title-ПИллюстрация к теореме Фейербаха");
Иллюстрация к теореме Фейербаха
Рис. 16.2. Графическая иллюстрация к теореме Фейербаха
個 Maple7 - [geom3.m*vs - [Server 1]]
® 腐羣庶羽•《 >s«rt F唧⑶• f i 触0rM 设咏^ й^>■.qlSjZ
MakeSquare( s J J1,[point(Л,1,0),point(B , 2, 0), diagonalT]);n := 30:上
for i to n do rotationf 11|i, si, i*2*Pi/n, counterclockwlse, A ) end do:
square(sq, [point(a, 0, -1), point(b, 2, -1), point(c, 2,工), pointfd, 0, 1)]):
white := [1,工,1]: colorl := (100-2.4*x)/100*white:.
draw( [ seq( t J J i( color=COLOR( RGB, op《subs (x=i, colorl) ) ) ), i=l..30), sq(color=black# filled=true)], printtext=falsez scaling=constrained, axes-none,
thickness=3 , title= "Вращение квадрата'1 );
Вращение квадрата
隱门隱门旧 Марк 7 [g«om4 mws [Seivei 1]]
隱门
隱门
⑥旗 酬 约 鲜缽#也岭:'、、e、' J £ :気汽\岳乂 :、S^fV、\、
‘> point(oz0,0): square( sql, [point(alz -2, -2),
point(a2/ 2, -2) , point(a3z 2, 2)zpoint(a4, -2, 2)]): for i from 2 to 10 do
homology(sq||i, sq||(i~l), o, ₽i/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(aad, -11/5,11/5)]):
draw( [seq(sqI |i,1™1. .10),sq(color=COLOR(RGB г1/2,1/2,1/2), filled=true)], color™ fwhite *, thickness=l, scaling=constrained,axes=none, printtextefalse,title= ^Гомологические преобразования квадрата", titlefont^[TIMES, ROMAN,16]);
Гомологические преобразования квадрата
Рис. 16.4. Гомологические преобразования квадратаРис. 16.4. Гомологические преобразования квадрата同Maple 7 - (geam5.m*s - (Serve, H】同Maple 7 - (geam5.m*s - (Serve, H】@聴友曲改版I械戒阮《& ,; ….,,, е^m年曲*fo为^й>:> with(geometry):_EnvHorizontalName :=@聴友曲改版I械戒阮《& ,; ….,,, е^m年曲*fo为^й>:> with(geometry):_EnvHorizontalName :=circle(cl, хл2 + ул2 = 1,circle(cl, хл2 + ул2 = 1,Tcentername ‘Tcentername ‘EnvVerticalName := ‘y ol):EnvVerticalName := ‘y ol):组1费丄组1费丄c irele(с 2, [point(A,3,3), 4]c irele(с 2, [point(A,3,3), 4]'centername ‘'centername ‘o2):o2):CircleOfSimilitude(c,cl,c2, Tcentername *=o);CircleOfSimilitude(c,cl,c2, Tcentername *=o);
Рис. 16.4. Гомологические преобразования квадрата
Рис. 16.4. Гомологические преобразования квадрата
同Maple 7 - (geam5.m*s - (Serve, H】
同Maple 7 - (geam5.m*s - (Serve, H】
@聴友曲改版I械戒阮《& ,; ….,,, е^m年曲*fo为^й>:> with(geometry):_EnvHorizontalName :=
@聴友曲改版I械戒阮《& ,; ….,,, е^m年曲*fo为^й>:> with(geometry):_EnvHorizontalName :=
circle(cl, хл2 + ул2 = 1,
circle(cl, хл2 + ул2 = 1,
Tcentername ‘
Tcentername ‘
EnvVerticalName := ‘y ol):
EnvVerticalName := ‘y ol):
组1费丄
组1费丄
c irele(с 2, [point(A,3,3), 4]
c irele(с 2, [point(A,3,3), 4]
'centername ‘
'centername ‘
o2):
o2):
CircleOfSimilitude(c,cl,c2, Tcentername *=o);
CircleOfSimilitude(c,cl,c2, Tcentername *=o);
detail(c);
name of the object: c
farm of the al^ect: circle2d
name of the center: о
caardinaies of the center: l-l/S, -1/SJ
radius 时 the circle: 1/50*128^(1/2)*25^(1/2)
equation “如 circle: x ^2-6/5-^ ^2+2/S *x+2/5*y = 0
draw({c,cl,c2},printtext=true,view—[-1.5, ,3,5,-1.5, .3,5],color=black);
3
2
0
-1
Множество примеров применения всех функций пакета geometry дано в справочной системе Maple 7. Рекомендуется просмотреть те из них, которые нужны вам.
Пакет стереометрии geom3d
Набор функций пакета geom3d
Помимо существенного расширения пакета geometry в систему Maple 7 введен новый геометрический пакет geom3d. Он предназначен для решения задач в области трехмерной геометрии. При загрузке пакета появляется доступ к большому (свыше 140) числу новых функций:
> with(geom3d):
[Archimedean^ AreCollinear, Ar eConcurrent, AreConjugate, AreCoplanar^ AreDistinct, AreParallel, ArePerpendicular^ AreSameObjects, AreSamePlane, AreSkewLities^ DefinedAs, DirectionRatios, Equation, FindAngle, FixedPoint, GlideReflect, GlideReflection, GreatDodecahedron, GreatIcosahedron, GreatRhombicuboctahedron, GreatRhombiicosidodecahedron,
GreatStellatedDodecahedron, HarmonicConjugate, Hexakislcosahedron, HexakisOctahedron, InRadius, Is Archimedean, IsEquilateral^ IsFacetted, IsOnObJect, IsQuasi, IsRegular, JsRightTriangle, IsStellated, IsTangent, MidRadius, NormalVector, OnSegment^ ParallelVector^ PentagonalHexacontahedron, Pentagonallcositetrahedron, PentakisDodecahedron, QuasiRegularPolyhedron,
RadicalCenter, RadicalLine, Radicalplane, RegularPolyhedron, RhombicDodecahedron, RhombicTriacontahedron, Rotatory Reflect, Rotatory Reflection、ScrewDisplace, ScrewDisplacement, SmallRhombicuboctahedron^ SmallRhombiicos[dodecahedron, SmallStellatedDodecahedron, SnubCube, SnubDodecahedron, StereographicProjection, StretchRotate, TangentPlane,
TetrakisHexahedron, TrapezoidalHexecontahedron, Trapezoidallcositetrahedron, Triakislcosahedron, TriakisOctahedron, TriakisTetrahedron, TruncatedCuboctahedron, TruncatedDodecahedron, TruncatedHexahedron, Truncatedlcosahedron, Truncated!cosidodecahedron, TruncatedOctahedron, TruncatedTetrahedron, altitude, area, center, centroid, circle, coordinates7 cube,
cuboctahedron, detail^ d^ate, 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, 通或吗 randpoint i reflect, reflections rotater rotation, schhaf^^ segment, sides, sphere,
stellate, tetrahedron^ tname, transform^ translate, translation^ transprod, triangle, unit, valuesubs, vertices, volume, xcoord, xnameyycoord^ yname^ zcoord, zname]
Функции этого пакета обеспечивают задание и определение характеристик и параметров многих геометрических объектов: точек в пространстве, сегментов, отрезков линий и дуг, линий, плоскостей, треугольников, сфер, регулярных и квазирегулярных полиэдров, полиэдров общего типа п др. Для описания функций этого пакета пришлось бы воспроизвести обишрное справочное руководство по стереометрии. В то же время назначение функций ясно из их названия, а характер применения тот же, что для функций описанного выше пакета geometry.
Пример применения пакета geom3d
Учитывая сказанное, ограничимся единственным примером применения этого пакета (рис. 16.6).
Рис. 16.6. Иллюстрация применения пакета geom3d
Напоминаем, что цель пакета не в построении рисунков геометрических фигур, а в аналитическом представлении объектов в пространстве. Поэтому в обширной базе данных справочной системы по этому пакету вы встретите очень много ри
сунков.
Пакет для работы с алгебраическими кривыми algcurves
Пакет для работы с алгебраическими кривыми прекрасно дополняет возможности геометрических пакетов. При обращении к нему он дает доступ к полутора десяткам функций:
> restart;with(al gcurves):
[Weierstrassform, differentials, genus, homogeneous, homology^ integralJiasis, is Jiyperelliptic, jinvariant, monodromy, parametrization , periodtnatrix, plotj^not, puiseux, singularities ]
Ввиду важности функций пакета и их сравнительно небольшого числа приведем полную форму записи функций и их назначение:
О Weierstrassform(f,x,y,xO,yO,opt) — вычисление нормальной формы для эллиптических или гиперболических алгебраических кривых;
О differential s(f, х, у, opt) — вычисление голоморфных дифференциалов алгебраических кривых;
О genus(f,x,y,opt) — проверка подлинности алгебраической кривой;
О honrogeneous (f. х, у, z) — создание полинома двух переменных, гомогенного в трех переменных;
О homology(f, х, у) — нахождение канонического гомологического базиса по алгоритму Треткоффа;
О integral_basis(f, х, у, S) — нахождение интегрального базиса гыгебраического поля функции;
О is_hyperell iptic(f, х, у) — тестирование кривой на ее принадлежность к гиперболической;
О j_invariant(f ,х,у) — вычисление /-инварианта алгебраической кривой;
О monodromy(f, х, у, opt) — вычисляет монодромию алгебраической кривой;
О parametrization(f,х,у,t) 一 нахождение параметризации для кривой с родом (даваемым функцией genuc), равным 0;
О periodmatrix(f, х, у, opt) — вычисление периодической матрицы кривой;
О pl ot_knot (f, х, у, opt) — построение узла — несамопересекающейся замкнутой кривой в трехмерном евклидовом пространстве;
О puiseux(f,х=р,у,п,Т) — определение Пуизе-расширения алгебраической функции (может иметь и более простые формы записи);
О singularities(f,x,y) — анализ кривой на сингулярность.
Примеры применения пакета algcurves
Приведем примеры применения функций пакета algcurves:
>WelerstrassformC (у*2-1)*2+х*(х*2+1)*2 ,х,у,хО,уО);
У。? L 1 - X。- 光。5, 21_L, -у, -Х02, -у0
> f:=у*3+хЛ3*уЛ3+хЛ4;
/尸 уЗ +уЗ х3 +%4
>differentials(f,x,у);
х2 dx х dx х2 dx
/(I +x3)')'(l +x3)'),(l +X3)_
> differentials(f.x.y.sk1p_dx):
> nops(^);
3
>genus(f.x.y); 3
> homogeneous(f,x.y,z); x4 z2 +j^3 z3 +),3x3,.
> homology(y*3-x*2-l,x,y);
Ше([сус1е=Ше([} = [1,[-1.00000000000 7, [1,3,2]],3, [ 1.00000000000 Д [1,3,2]]], 2-[l,[-1.00000000000 7, [1,3, 2]], 2, [1.00000000000 Д [1, 3, 2]]], 3 = [1,[-1.00000000000 7, [1,3, 2]], 3, Rjl, 3,2]]], 4 = [1,[-1.00000000000 Д [1,3,2]], 2,E1,3, 2]], ]),basepoint — -.899000000000 genus ~ 1, canonycalcycle 二 table([
^1 =[[ 1, [-1.0000000000 7, 1],3, [1.0000000000Д-1]]], bl^[[\, [-1.0000000000 7, 1],2, [1.0000000000 7,-1]]],
,「1 o o 0]
]),Imearcombmatioji = ° 〔 0 0, sheets =
[-.609142506531 - 1.05506577036 Д -609142506531 + 1.055065770367,1.2182501306] D
>g 『yA3-x*yA2+2*2A(l/2)*yA2+xA2-2*2A(l/2)*x+2+yA6:;
g := у3 _ 工 у? + 2 лр2 у? + У _. 2 ^2" х + 2 + уб
>integral_basis(g,x>y);
—j 2 + х
> is_hyperelliptic(f,x,y); false
fl:Ky*2+x*5+l:is_hyperelliptic(fl,x.y);
true
>j_invariant(g,x,y);
71936606821 3803393323 万 38521803 + 38521803 屮
monodromy(fl.x.y):,
[-1.47022820183 [-2.4227005870§2.4227005870g, [[-.309016994375- .9510565162957, [[ 1, 2]]], [.809016994375-.5877852522927, [[1, 2]]], [-l.,[[ 1,2]]],
[.809016994375+ .5877852522927, [[ 1, 2]]],[-.3090169943 75+ .9510565162957, [[ 1, 2]]], [-,[[1,2]]]]]
parametrization(x*4+y*4+a*x*2*y*2+b*yA3,x.y,t);
Г 户з
「歩 + 产)庐+六,-
Z 尸 periodmatr1x(fl,x,у,Riemann);
—Г .4999999918 +1213922064 / -.9999999899 - .5257311260 Л
「-1.000000004 - .5257311066 I -.5000000106 + .6881909548 /_|
Построение алгебраических кривых класса knot
Функция plot_krK)t позволяет строить одну или несколько алгебраических кривых —узлов. Пример построения целого семейства узлов показан па рис. 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);
col orOfTangentVector = с — задает цвет касательных стрелок, по умолчанию заданный как зеленным, COLOR(RGB,Ot 1,0);
colorOfNormal Vector = с — задает цвет перпендикулярных стрелок, по умолчанию заданный как красный, COLORCRGB,1,0,0);
col orOfCurve = с — задает цвет кривой, по умолчанию заданный как синий, COLORCRGB, 0, 0, 1);
eventTolerance = positive — задает погрешность при представлении сингулярных точек (nq умолчанию 0,01);
NewtonTolerance = positive — задает погрешность при выполнении ньютоновских итераций в ходе построений.
Функция plot_real_curve вычисляет и строит алгебраическую кривую по точкам и может (при использовании параметра opt) строить стрелки-векторы по касательным и перпендикулярным направлениям к каждой точке или к части точек. Возможно задание разных цветов для кривой и стрелок. Применение функции plot_real_curve показывает рис. 16.8.
При задании построения стрелок касательные стрелки строятся по внешней части кривой и указывают направление ее построения. Перпендикулярные стрелки строятся по внутренней части кривой. Нетрудно заметить, что острие стрелки указывается только для длинных стрелок. Короткие стрелки острия не имеют и отображаются как отрезки прямых линий. Построение стрелок оказывается не
вполне точным, если разнятся масштабы графика по горизонтали и вертикали, что можно подметить при внимательном рассмотрении графика на рис. 16.8, сверху.
Рис. 16.8. Примеры применения функции plot_reaLcurve
Пакет функций теории графов networks
Набор функций пакета networks
Графы широко используются при решении многих прикладных и фундаментальных задач. Пользователей, занятых решением таких задач, наверняка порадует пакет networks, содержащий весьма представительный rfa6op функций:
> with(networks);
Warning, the names diameter; draw and vertices have been redefined
[acycpoly^ addedge^ addvertex, adjacency, allpairs^ ancestor, arrivals, bicomponentsy charpoly^ chrompoly, complement, complete, components, connect^ connectivity^ contract^ countcuts, counttrees^ cube, cycle, cyclebase^ daughtery degreeseq, delete^ departures, diameter^ dinic, djspantree^ dodecahedron, draw, duplicate, edges, ends, eweight^flow^ flowpoly, fiindcyc^ getlabel^ girth, graphs graphical^ gsimp, gunion^
heady 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 — создает пустой граф (без ребер);
О dupl icate — создает копию графа;
О compl ete — создает полный граф;
О random — возвращает случайный граф;
О petersen — создает граф Петерсена.
Функции модификации графов:
О addedges — добавляет в граф ребро;
О addvertex — добавляет в граф вершины;
О connect — соединяет одни заданные вершины с другими;
О delete — удаляет из графа ребро или вершину.
Функции контроля структуры графов:
О draw — рисует граф;
О edges — возвращает список ребер графа;,
О vertices — возвращает список узлов графа;
О show — возвращает таблицу с полной информацией о графе;
О ends — возвращает именк вершин графа;
О head — возвращает имя вершины, которая является головой ребер;
О tail — возвращает имя вершины, которая является хвостом ребер;
О incidence — возвращает матрицу инцидентности;
О adjacency — возвращает матрицу смежности;
О еweight — возвращает веса ребер;
О vweight — возвращает веса вершин;
О isplanar — упрощает граф, удаляя циклы и повторяющиеся ребра, и проверяет его на планарность (возвращает true, если граф оказался планарным, и false ~ в противном случае).
Функции с типовыми возможностями графов:
О flow — находит максимальный поток в сети от одной заданной вершины к другой;
О shortpathtree — находит кратчайший путь в графе с помощью алгоритма Дейкстры.
Каждая из этих команд имеет одну или несколько синтаксических форм записи. Их можно уточнить с помощью справочной системы. С се помощью можно ознакомиться и с назначением других функций этого обширного пакета. Проиллюстрируем его применение на нескольких типичных примерах.
На рис. 16.9 показан пример создания графа, имеющего четыре вершины, и графа Петерсона с выводом их графиков графической ф\гнкцией draw.
На рис. 16.10 показан другой пример работы с графами — построение графа функцией complete и затем его преобразование путем удаления части вершин. Исходный и преобразованный графы строятся функцией draw.
В третьем примере (рис. 16.11) граф формируется по частям - вначале задается пустой граф функцией new, а затем с помощью функций addvertex и addedge в него включаются веришны и ребра. Далее функция connect соединяет вершину а с вершиной % делая граф замкнутым. Функция draw строит сформированный таким образом граф, а функции head и tail используются для выявления «голов» и «хвостов» графа.
В четвертом примере, представленном на рис. 16.12, показано создание графа G2 (его изображение было приведено на рис. 16.10) с вычислением для этого графа максимального потока от вершины 1. Обратите внимание, что в параметрах функции fl ow, использованной для этого, заданы две переменные: eset — принимает значение множества с ребрами, по которым проходит максимальный поток, и comp — принимает значение множества, в котором содержатся вершины, по которым проходит максимальный поток. Значения этих переменных выведены в области вывода. В заключительной части этого примера показано применение функции shortpathtree, ищущей наиболее короткий путь от вершины 1 до других вершин.
|i2JMaple7 - [Netwl.mws - [Seiver 1})
^Й» £* М IM ^, ■••l^..»^.В*
Работа с графами (пример 1)
'> restart: with (networks ) ; new ( G) : addvertex ( {工,3,4,6},G);
1,3,4,6
'> connect《{工,3},{4,6},G)/edges(G);draw(G);
e7, е2, еЗ, в/
[e3, e2, e?, e4)
.3
> G1:™petersen(6):draw(Gl);
S'
Рис. 16.9. Построение графов
Рис. 16.10. Преобразование графа удалением части вершин
Рис. 16.11. Формирование графа и определение его «голов» и «хвостов»
Рис. 10.12. Пример вычисления максимального потока и наиболее коротких путей для заданного графа
Получение информации о графе
Еще один пример, приведенный ниже, иллюстрирует работу функции show, выдающей таблицу с полной информацией о графе, созданном функцией complete:
> restart:with(networks):G2:=complete(4):
> show(G2);
t^e([_Neighbors = table([l = {2, 3, 4 }, 2 = {1, 3, 4 }, 3 = {I, 2, 4 }, 4 = {1, 2, 3 J]). _EdgeIndex = tabic^symmetric, [(1,3)= {e2}, (2, 4) = {e5}, (1,2) = {e/ }, (1,4) = { e3}, (3, 4) = {еб}, (2,3)={必),
]),_Edges = {е/, e2, еЗ, e4, e5, еб}, _Bicomponeiits = _Bicomponeuts.
_Tail = table([]), _CoiuUcuts = _Countcuts, J^ead = tablc([]),
_Eweight 二 table([e6 = 1, e2 = 1, e5 = 1, e/ - 1, eV = 1, e3 = 1 ]),
—^weight = tMc(sparse, 口),_Econnectivity = Econnectivity, _Ends =
table([e6二{3,4},e2 二{1,3},е5={2,4},е/={1,2},е"{2,3},е3={1,4}]),
_Counttrees = _Coimttrees, _Emaxname = 6, _Vertices = { 1,2. 3, 4 ;,
^Status = {COMPLETE. SIMPLE}
〕)/
Разумеется,, приведенные примеры далеко не исчерпывают всех задач, которые можно решать с применением графов. Но они наглядно демонстрируют, что для большинства пользователей пакет networks превращает графы из окутанного ореолом таинственности модного средства в простой рабочий инструмент.
Пакет статистических расчетов stats
Характеристика пакета stats
Мир математических систем сейчас насыщен статистическими системами, например такими, как Statistica или StatGraphics. Они прекрасно приспособлены для решения задач статистической обработки обширных массивов данных. Тем не менее проведение статистических расчетов в Maple 7 возможно и в ряде случаев весьма целесообразно — например, когда они являются частью исследовательского проекта.
Пакет stats для таких расчетов представлен всего двумя многоцелевыми статистическими функциями:
stats[subpackage. function](args) subpackage[funct1on](args)•
Однако благодаря специальной форме задания параметров (в частности, в виде подпакетов — subpackages) возможно вычисление самых разнообразных статистических функций. Имеются следующие подпакеты:
О anova — вариационный анализ;
О describe — функции распределения вероятности;
О fit — регрессионный анализ;
О random — генерация случайных чисел с различными законами распределения;
О stateval f — вычисление статистических функций н получение оценок для массивов данных;
О statplots — построение графиков статистических функций;
О transform — функции преобразования данных.
Генерация случайных чисел
с заданным распределением
Основой этого подпакета является функция random: randorn[distribut1on] (quantity.uniform.method) или
statsirandom, distribution] (quantity.uniform.method)
где
О distribution 一 описание закона рас пределения случанн ых чисел:
О quantity — положительное число, указывающее на количество получаемых случайных чисел (по умолчанию 1, возможен параметр 'generator');
О uniform ― процедура генерации чисел с равномерным распределением или ключевое слово 'default' (по умолчанию);
О method — указание на один из трех методов ('auto', 'Inverse' пли 'builtin').
Возможно задание дискретных и непрерывных распрсделени11, nai гример binomlald 一 дискретное биномиальное распределение, dlscreteuniform — дискретное равномерное распределение, empirical — дгк'кретпое эмпирическое pan>релслепне, polsson 一 дискретное распределение Пуассона, beta — бста-распредсленис, cauchi — распределение Коиги, exponential — эксгюненциа.'1ьное и др. (есть (функции практически для всех известных распределений).
Следующие примеры демонстрируют технику получения cnygaihixx чисел с заданным законом распределения;
with(stats):Digits:=5:
stats[random, normaid](5): .79697. -.40654. -.085304. .71297. 1.1119 > statsErancfom. norma Id] (5, 'default'. 'Inverse'); -.63631. .72218. -.063423. -1.5123. .84664 > seed:=l:
uniform_generator:=proc()
global seed:
seed:=irem(seed*ll,101);
RETURN(seed/101)
end:
random[gamma[3]](5,uni form_generator);
1-1719, 1.5144. 3.3684. 1.9976. 4.8183
Графика статистического пакета stats
Статистический пакет stats имеет свою небольшую библиотечку для построения графиков. Она вызывается в следующем виде;
stats[statplots, function](args)
или
statplotsEfunction](args)
Вид графика задается описанием function: boxplot, histogram, notchedbo.x7 quantile, quantile2, scatterld, scatter2d и symmetry. Данные функции обеспечивают построение типовых графиков, иллюстрирующих статистические расчеты. В качестве примера на рис. 16.13 показано задание множества случайных точек и его отображение на плоскости в ограниченном прямоугольниколг пространстве.
Рис. 16.13. Создание случайных точек и построение их на плоскости
По равномерности распределения точек можно судить о качестве программного генератора случайных чисел, встроенного в Maple 7.
Довольно часто для визулизации вычислений используется построение гистограмм. Для их создания пакет stats имеет функцию histogram:
stats[statplots, histogram](data)
statplotsEhlstogram](data)
stats[statplots, hlstogram[scale](data)
statplots[h1 stogramEscale](data)
Здесь data — список данных, scale — число или описатель. Детали применения этой простой функции поясняет рис. 16.14. На нем дан два примера — построение столбцов заданной ширины и высоты и построение гистограммы 100 случайных чисел с нормальным распределением.
Рис. 16.14. Построение гистограмм
Обратите внимание на то, что для второго примера гистограмма будет несколько меняться от пуска к пуску, так как данные для ее построения генерируются случайным образом.
Регрессионный анализ
Под регрессионным анализом (или просто регрессией) обычно подразумевают нахождение некоторой формальной аналитической зависимости, которая приближенно (по критерию минимума среднеквадратической ошибки) аппроксимирует исходную зависимость. Последняя чаще всего бывает представлена некоторым набором точек (например, полученных в результате эксперимента).
Для проведения регрессионного анализа служит функция fit, которая вызывается следующим образом:
stats[fi t. 1 eastsquareLvars. eqn .parms]](data)
или
tn eastsquareLvars, eqn, pa rms]]( data)
где data — список данных, vars — список переменных для представления данных, eqn — уравнение, задающее аппроксимирующую зависимость (по умолчанию линейную), parms — множество параметров, которые будут заменены вычисленными значениями.
На приведенных ниже примерах показано проведение регрессии с помощью функции fit для зависимостей вида у(х):
with(stats):Digits:=5:
Digits 尸 5
f1t[leastsquare[[x,y]]]([[l,2,3,4],[3,3.5,3.9,4.6]]);
у = 2,4500 + .52000 x
fit[leastsquare[[x,y], y=a*x*2+b*x+c]]([[l,2,3,4].[1.8.4.5,10,16.5]]): 2
у = .95000 x+.21000x + .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/3 х - 7/6 у
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. Примеры регрессии полиномоми первой, второй и третьей степени
В данном случае уравнение регрессии задано в виде z = а + b х + с у, Об])а- тите внимание на важный момент в конце этого примера 一 применение полученной функции регрессии для вычислений или построения ее графика. Прямое применение функции f в данном случае невозможно, так как она представлена в невычисляемом формате. Для получения Bbinn^ncNtoro выражения она преобразуется в функцию двух переменных fa(x,y) путем отделения правой части выражения для функции f. После этого возможно вычисление значений функции fa(x,y) для любых заданных значений х и у.
К сожалению, функция fit неприменима для нелинейной регресии. При попытке ее проведения возвращается структура процедуры, но не результат регресии — см. пример ниже:
> fit[leastsquare[[x,y],y=a*exp(x)+b*x+c],{a,b,c}]([[1.2,3,4],\
[3,3.5,3.9,4.6]]);
力喝睜 S…}([[1,2,3,4],[3,3.5,3.9,4.6]])
[х,у].y = a e' + b x + с
Для проведения нелинейной регрессии произвольного вида нужно обратиться к средствам нового пакета CurveFitting, включенного в состав Maple 7. Этот пакет был описан в главе 14.
Пакет для студентов student
Функции пакета student
Пакет student — это, несомненно, один из пакетов, наиболее привлекательных для студентов п аспирантов. В нем собраны наиболее раснространентгые н нужные функции, которые студенты университетов и иных вузов ебмино используют на практических занятиях, при подготовке курсовых и дипломных проектов. Набор этих функций, разумеется, не ограничивается «скромными» потребностями студентов — просто это наиболее распространенные функции, в основном относящиеся к математическому анализу. Наряду со студентами эти фу1[кции широко используют профессионалы-математики 门 ученые, применяющие математические методы в своей работе.
В этом пакете имеется почти полсотни фу^гкцнй:
О D — дифференциальный оператор;
О Diff — инертная форма функции вычисления производной;
О Doubleint — инертная форма функции вычисления двойного интеграла;
О Int — инертная форма функции интегрирова(гия int;
Q Limit — инертная форма функции вычисления предела 1 imit;
О Llneint — инертная форма функции вычисления лине^гного интег))ала lineint;
О Point — тестирование объекта на соответствие типу точки (point);
О Product — инертная форма функции вычисления произведения членов последовательности;
О Sum — инертная форма функции вычисления суммы членов последовательности;
О Tripleint — инертная форма функции вычисления тройного интеграла;
О changevar — замена переменной;
О combine — объединение подобных членов;
О completesquare — вычисление полного квадрата (многочлена);
О distance — вычисление расстояния между точками;
О equate — создание системы уравнений из списков, таблицы, массивов;
О extrema — вычисление экстремума выражения;
О integrand — вывод подынтегрального выражения из-под знака инертного интеграла;
О intercept — нахождение точки пересечения двух кривых;
О intparts — интегрирование по частям;
□^isolate — выделение подвыражения;'
О left box — графическая иллюстрация интегрирования методом левых прямоугольников;
О leftsum — числовое приближение к интегралу левыми прямоугольниками;
О makeproc — преобразование выражения в процедуру Maple;
О maximize — вычисление максимума функции;
О middlebox — графическая иллюстрация интегрирования методом центральных прямоугольников;
О middlesum — числовое приближение к интегралу центральными прямоугольниками;
О midpoint — вычисление средней точки сегмента линии;
О minimize — вычисление минимума функции;
О powsubs — подстановка для множителей выражения;
О rightbox — графическая иллюстрация интегрирования методом правых прямоугольников;
О rightsum — числовое приближение к интегралу правыми прямоугольниками;
О showtangent — график функции и касательной линии;
О simpson — числовое приближение к интегралу по методу Симпсона;
О slope — вычисление и построение касательной к заданной точке функции;
О trapezoid — числовое приближение к интегралу методом трапеций;
О value — вычисление инертные функции.
Функции интегрирования пакета student
В пакетах Maple 7 можно найти множество специальных функций для вычисления интегралов различного типа. Например, в пакете student имеются следующие функции:
О Int(expr.x) — инертная форма вычисления неопределенного интеграла;
О Doubl ei nt (expr, x, у, Domai n) — вычисление двойного интеграла по переменным х и у по области Domain;
О Tripleinttexpr,x,y,z) — вычисление тройного интеграла;
О intpartstf,и) — интегрирование по частям.
Ниже дан пример применения функции Tripleint пакета student:
Tripleint(f(x,y,z) ,x,y,z):
///Цх, у, z) dx dy dz
Triplei nt(x*y*z*2,x=0..2,3^0..3,z=0..5):
evalf(X):
375.0000000
> 1nt(int(int(x*y*z*2,x=0. .2) ,y*0. .3) ,z«0. .5);
375
Объективности ради надо отметить, что вычисление тройного интеграла с помощью функции Tripleint занимает много времени (около 20 с на компьютере с процессором Pentium II 350 МГц). Однако тот же результат (см. последний пример) получается за доли секунды при использовании тройного интегрирования с помощью функции int.
Иллюстративная графика пакета student
Пакет student имеет три графические функции для иллюстрации интегрирования методом прямоугольников:
О leftbox(f(x), х=а. .Ь, о) или leftbox(f(x), х=а. .b, n, f shading,=<color>, о);
О rightbox(f(x), х=а.,Ь, о) или rightbox(ftx), х=а..Ь, п, о);
О middlebox(f(x), х=а. ,Ь, о) или middlebox(f(x), х=а. .Ь, п, о);
Здесь f(x) — функция переменной х, х — переменная интегрирования, а — левая граница области интегрирования, b — правая граница области интегрирования, п — число показанных прямоугольников, color — цвет прямоугольников, о — параметры (см. ?plot,options).
. ESRft耳维d州 社3电. ESRft耳维d州 社3电662-2-5-5-448080ГГ3360600 5-0 5-40402-2-0.0.応 Mapte?応 Mapte?f Untitled WTSaveil]f Untitled WTSaveil]Рис. 16.16. Примеры иллюстративной графики пакета studentРис. 16.16. Примеры иллюстративной графики пакета student疹散备後為№№№»鑑縊斂版後煞雜MV^S漿出描縊蕊绘i^謠歎憲娥廠减脸喊後吵侬瀛聯統後甕^窓歎稜添
. ESRft耳维d州 社3电
. ESRft耳维d州 社3电
6
6
2-
2-
5-
5-
4
4
80
80
Г
Г
3
3
60
60
0 5-
0 5-
40
40
2-
2-
0.
0.
応 Mapte?
応 Mapte?
f Untitled WTSaveil]
f Untitled WTSaveil]
Рис. 16.16. Примеры иллюстративной графики пакета student
Рис. 16.16. Примеры иллюстративной графики пакета student
「Иллюстрация графики пакета student
I > with(student):leftbox(5*х-хЛ2, x=l..5, color=red); middlebox(хл2,x=l..5,color=black);
rightbox(хл3,x=l..5,color=blue);
I簿g圣宣二瘍以经過阂I簿g圣宣二瘍以经過阂2 5-2 5-100100shov/t angent (sin (x) ,1.7, color=black);
I簿g圣宣二瘍以经過阂
I簿g圣宣二瘍以经過阂
2 5-
2 5-
100
100
В этих функциях прямоугольники строятся соответственно слева, справа и посередине относительно узловых точек функции /(*), график которой также строится. Кроме того, имеется функция для построения касательной к заданной точке х = а для линии, представляющей /(*):'
showtangent (f(x). х = d)
Рисунок 16.16 показывает все эти возможности пакета student. Три вида графиков здесь построены в отдельных окнах.
Графические средства пакета student ограничены. Но они предоставляют как раз те возможности, которые отсутствуют в основных средствах построения графиков.
Пакет для работы с тензорами tensor
Этот пакет впервые появился в реализации Maple V R5. Он дает средства для работы с тензорами и вычислениями, используемыми в общей теории относительности. В нем использован специальный тип данных tensor_type в виде таблиц с двумя полями: компонентов и характеристик индексов. Поле компонентов — массив с размерностью, эквивалентной рангу объекта. Поле характеристик ш-i- дексов задается списком чисел 1 и -1. При этом 1 на z-й позиции означает, что соответствующий индекс контрвариантный, а -1 — что он ковариантный.
Процедура tensor_type возвращает логическое значение true, если ее первый аргумент удовлетворяет свойствам тензора, и false, если он этому свойству не удовлетворяет.•
Каждому тензору соответствуют еще две таблицы. Таблица коэффициентов вращения задает коэффициенты вращения Ньюмена—Пенроуза, которые вычисляются функцией tensor[npspin] и индексируются именами греческих букв alpha, beta, gamma, epsilon 口 т. д. Другая таблица (компонент кривизны) содержит компоненты кривизны Ньюмена—Пенроуза. Они представлены тремя полями: полем Phi в виде массива размерности (0. .2,0. .2) с компонентами Риччи, поле Psi с массивом размерности (0. .4) с компонентами Вейля и полем R со скаляром Риччи.
Объявление:
> with(tensor);
[Christoffel!, Christoffel2, Einstein, Jacobian, Killingyqns, Levi^Civita, Lie_diff, Ricci, Ricciscalar, Riemann, RiemannF, Weyl act, antisymmetrize, change_basis, commutator compare, co* connexF, contract, convertNP, covjiijf^ create, dlmetric, d2metric, directional_diff^ displayGR, displayj^UGR, dual, entermetric, exterior_diffexterior_prod, frame, geodesic_eqns, getj^har, get_compts, get_rank, init, invars, invert, lin_com, lower,
npeurve, npspin, partial_diffy permuteJndices, petrov, prod, raise, symmetrize, tensorsGR, transform ]
дает доступ к следующим функциям пакета:
О Christoffel 1 — вычисление символов Кристоффеля первого рода;
О Christoffel2 — вычисление символов Кристоффеля второго рода;
О Einstein — возвращение тензора Эйнштейна;
О display_alJGR — описывает ненулевые компоненты всех тензоров и параметров, вычисленных командой tensorsGR (общая теория относительности);
О displayGR — описывает ненулевые компоненты конкретного тензора (общая теория относительности);
О Jacobian — Якобиан преобразования координат;
О Killing 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 — вторая частная производная метрики;
О directional_diff — производная по направлению;
О dual — осуществляет дуальную операцию над индексами тензора;
О entermetric — обеспечивает ввод пользователем координатных переменных и ковариантных компонент метрического тензора;
О exterior difF — внешнее дифференцирование полностью антисимметричного ковариантного тензора;
О exterior^prod — внешнее произведение двух ковариантных антисимметричных тензоров;
О frame — задает систему координат, которая приводит метрические компоненты к диагональной сигнатурной матрице (с положительными пли стрш【атепь- ными едшшцеши);
О geodesic_eqns — уравнение Эйлера—Лагранжа для геодезических кривых;
О get_char — возвращает признак (коварпаитный/контраварпантнын) объекта;
О getcompts — возвращает компоненты объекта;
О get_rank — возвращает ранг объекта;
О invars — инварианты тензора кривизны Римана (общая теория относпте.-iь- ности);
О invert — обращение тензора второго ранга;
О 1 Incom — линейная комбинация тензорных объектов:
О lower — опускает индексы;
О npeurve — компонента кривизны Ньюмена—Пенроуза в формализме Дсбсве- ра (общая теория относительности);
О npspin — компонент Bpauieiinn Ньюмена—Пенроуза в (формализме Дебевера (общая теория относительности);
О part1al_diff — частная производная тензора;
О permute_indices — перестановка индексов;
О petrov — классификация Петрова тензора Вейля;
О prod — внутреннее и внешнее тензорные произведения;
О raise — поднятие илдекса;
О symmetrize — симметризация тензора по любым индексам;
О transform — преобразование системы координат.
Примеры применения этого пакета можно найти в справочной базе данных системы. Пакет представляет интерес для физиков-теоретиков, работающих в области общей теории относительности и ее приложений. Для них (но не для большинства пользователей) приведенные данные полезны и понятны.
Пакет Domains
Этот небольшой пакет служит для создания доменов — таблиц операций для вычислений. При его загрузке появляется сообщение о переопределениях объектов и список из всего лишь шести функций:
> restart;with(Domains);
Domains version 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
[Array, Malrix, Matnxlnverse^ Vector,力〃7, show]
Пакет допускает применение следующих конструкций:
OomaIns[doma;n]Domains[evaldomains;
Domalnsrexample]DomalnsLcod^ng]
Приведенный ниже пример поясняет создание н использование доменов Q (для рациональных данных) п Z (для пелочисленпых данных):
> Q['+'](l/2,2/5.3/8);
51
40
> Z[Gcd](660,130);
10
Следующая операция показывает, что аомен Z является таблицей:
> type(Z,table);
true
А функция show позволяет вывести полны!! перечень всех операций, доступных для домена Z:
> show(Z.operations):
' Signatures for constructor N'
' note: operations prefixed by ― are not available'
'火:(Integers.Z) Z'
*:(Z.Z*) Z'
'+:(Z,Z*)
'一:(Z.Z)Z'
'0:Z'
'1:Z'
'<:(乙Z)Boolean'
'<=:(Z.Z) -> Boolean''
'<> :(Z.Z) Boolean''
'=:(Z,Z) -> Boolean'•
'> :(Z.Z) -> Boolean'
'>=:(Z,Z) -> Boolean1
'Abs : Z -> Z'
'Characteristic : Integers'
'Coerce : Integers -> Z'
'Div : (Z,Z) -> Union(Z,FAIL)'
' EuclIdeanNorm ; Z -> Integers'
'Factor : Z -> LZ.LLZ.Integers]*]]'
'Ged : Z* -> Z'
'Gcdex ; (Z.Z.Name) -> Z'
' Gcdex : (Z.Z,Name,Name) -> Z'
'Input : Expression -> Unlon(Z.FAIL)'
' Inv : Z -> Union(Z.FAIL)'
' Lem ; Z* -> Z'
' Max ; (Z.Z*) -> Z、
' МШ : (Z,Z*) -> Z、
'Modp :(Z.Z) -> Z'
'Mods :(Z.Z) -> Z'
'ModularHomomorphlsm ; () -> (Z -> Z,Z)、
'Normal; Z -> Z'
'Output: Z -> Expression'
' Powmod : (Z.Integers.Z) -> Z'
' Prime : Z -> Boolean'
'Quo : (Z.Z.Name) -> Z'
'Quo : (Z,Z) Z'
' Random : () -> Z'
' RelatlvelyPrlme : (Z.Z) -> Boolean'
' Rem : (Z.Z.Name) -> Z'
' Rem : (Z,Z) -> Z'
' Sign : 2 -> UNION(L-LO)'
' SmallerEuclIdeanNorm : (Z,Z) -> Boolean',
' Sqrfree : Z -> [Z.LEZ.Integers]*]]'
' Type : Expression -> Boolean'
' Unit : Z -> Z'
'UnltNormal : Z -> [Z,Z,Z「
'Zero : Z Boolean'
'人:(Z,Integers) -> Z'
Домены позволяют передавать в качестве параметра процедур набор функций в виде единого целого, что и объясняет название этих объектов. Предполагается, что это может привести к заметному сокращению кодов программ вычислений в будущих реализациях системы Maple. Пока же возможности доменов скорее выглядят как очередная экзотика, чем как реальное средство для оптимизации вычислений. Потребуется время, чтобы показать, что это не так.
Обзор пакетов узкого назначения
Мы уже не раз обращали внимание читателя на выборочный характер описания системы Maple 7 в данной книге. Хотя она п является одной из самых полных книг по данной системе, книга не претендует на роль детального справочника по Maple 7. Более того, такого справочника в виде книги нет и, вероятно, учитывая быстрые темпы модернизации программы, так и не будет. Для подобного описания Maple пришлось бы подготовить многотомное издание, охватывающее практически все области математики.
Учитывая это, мы вынуждены отказаться от попытки описать ряд пакетов специального назначения. Такими пакетами интересуются серьезные специалисты в области математики и им (не без труда, разумеется) под силу разобраться с назначением функций таких пакетов и примерами их применения, приведенными в справочной системе Maple 7. В связи с вышесказаннным, мы ограничимся перечислением оставшихся неизученными пакетов.
Пакет функций теории чисел numtheory
В этом обширном пакете собрано 46 функций, относящихся к теории чисел: a with(numtheory):
Warning, the protected name order has been redefined and unprotected
[GIgcd, bigomega, cfrac, cfracpol, cyclotomic, divisors .factorEQ, factorset ,fermat, imagunit, index, integralJyasis, invcfrac, invpht, issqrfree Jacobi, kronecker^ 入,legendre, mcombine, mersenne, minkowski, mipolys, mlog, mobius, mroot, msqrt, nearestp, nthconver, nthdenom, nthnumer, nthpow, order, pdёxpand, ф, Л, pprtmroot, primroot, quadres, rootsunity, safeprime, G, sq2factor, sum2sqr, t, thue ]
В новой реализации Maple 7 число функций было уменьшено. Большинство функций этого пакета достаточно просты и заинтересовавшийся читатель вполне в состоянии провести их тестирование самостоятельно.
Пакет для работы с р-адическими числами padic
Этот весьма специфический пакет содержит следующие функции для работы с р-адическими числами:
wlth(padic);
[arccoshp, 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
Гауссово целое число — это число вида а + /*6, где а и b ~ любые целые рациональные числа. Таким образом, они образуют решетку всех точек с целыми координатами на плоскости комплексных чисел. Пакет Gausslnt содержит достаточно представительный набор функций для работы с этими числами:
with(GaussInt);'
Warning, the name Glgcd has been redefined
[GIbasis, Glchrem, GIdivisor, GIfacpoly, GIfacset, GIfactor, GIfactors, Glgcd, GIgcdex,
Glhermite, Glissqr, Gllcm, GImcmbine, GInearest, GInodiv, GInorm, GInormal, Glorder, GIphi, GIpnme, Glquadres, Glquo, GIrem, GIroots, GIsieve, Glsmith, GIsqtfree, GIsqrt, Glunttnormal ]
Нетрудно заметить, что в этот набор входят уже известные числовые функции, к именам которых добавлены буквы GL Например, функция Glfactor(c) раскладывает гауссово число (в том числе комплексное) на простые множители, GIgcd(cl,c2) находит наибольший общий делитель гауссовых чисел cl и с2 и т, д. Функции этого пакета достаточно просты, так что ограничимся приведенными примерами. Гауссовы целые числа в большинстве научно-технических расчетов встречаются крайне редко. Так что этот пакет рассчитан на специалистов-математиков, работающих в области теории чисел.
Пакет алгебры линейных операторов Ore_algebra
Пакет Ore_algebra содержит набор функций алгебры линейных операторов, состав которого виден после обращения к пакету:
with(Ore_algebra);
[О/*е Ео DESol、Ore fo RESol、О『е Ео diff\ Оге Го shift、annihilators, applyopt; cliff' algebra, poly_algehra, qshift_algebra, rand_skew_po仅,shift_algebra, skewjilgebra, ske\v_elun, skew_gcdex, skew」)dM skew^power, skew_pre^ skewj)roduct ]
Этот пакет поддерживает решение задач в области алгебры линейных операторов
Инструментальный пакет для линейных рекуррентных уравнений LREtools
Этот пакет полезен математикам, часто использующим рекуррентные отношс- гшя и формулы. Он дополняет функцию rsol ve основной библиотеки и содержит следующие функции:*
wlth(LREtools);
[REcontent, REcreate, REplol, REprimpart, REreduceorder, REtoDE, REtodelta, REtoproc, autodispersion constcoeffso^ 6, dispersion, divconq, firstlin, hypergeomsols, polysols, ratpolysols, riccati, shift ]
С назначением функций этого пакета можно познакомиться по справочной системе Maple 7.
Пакет функций дифференциальных форм difforms
В пакете дифференциальных форм содержится следующий ряд функций:
with (di fforms);
[&八,d, defform, formpartparity, scalarpart, simpform^ wdegree]
Демонстрационные материалы по применению этого пакета входят в поставку Maple 7.
Пакет для работы с рациональными производящими функциями genfunc
В пакете genfunc, предназначенном для работы с производящими функциями, содержатся следующие средства:
> with(genfunc);
[fgf_charseq, rgf_encode, rgf^expand, rgfjlndrecur, rgfjiybrid, rgfjiorm, rgf_p"ac, rgf'j-elate, rgf_sequence, rgf_simp, rgfjerm, termscale]
Эти функции представляют специальный интерес для пользователей, работающих в области теории чисел и рациональных функций.
Пакет операций для работы с конечными
группами group
Этот пакет содержит довольно представительный набор функций для работы с конечными группами:
> wlth(group);
[DerivedS, LCS, NormalClosiirq RcmdElcmenk SaCo网tigEes, Sylow, areconjugate, center, centralizer、core, cosets, cosrep, derived, elements, groupmembe)\ grouporder, inter, mvperm^ isabelian^ isnormal、issvbgroHp, mulperms^ nornialher, orbit, parity, permrep、pre* transgroup}
Функции этого пакета представляют интерес для математиков, работающих в области конечных групп. Но вряд ли инн будут полезны большинству пользователей. Тем не менее, наличие таких функций говорит о полноте функциональных возможностей системы Maple 7.
Пакет для работы с симметрией Ли liesymm
В этом пакете, являющемся рсалпзацие!! алгоритма Харрисопа-Эстабрука, имеется ряд функций:
> with(liesymm):
Warning, the protected name close has been redefined and unprotected
[冷2 &пю& H, Lie, Lrank, TD, annul, aiUosimp. close, 〃, depvars, determine, dvalue, extgen, extvars, getcoeff, getform, hasclosnre, hook, indepvars, makeforms, mixpar, prolong, reduce, setup, translate,"戾,^'collect, w(lagree, wedgeset, wsi-ibs]
Эти функцин достаточно спецнфи^шы и могут пригодиться лишь узким специалистам.
Пакет команд для решения уравнений SolveTools
Пакет команд с весьма многообещающим названием SolveTools па самом деле содержит вовсе не средства для решения уравнений, а несколько весьма специфических функций:
> wlth(SolveTools):
[Basis, Complexity, GreaterComplexity, Rationaleoefficients^ SortByComplexity]
Функции этого пакета позволяют найти базис выражений, дескрипторы и рациональные коэффициенты. Примеры применения этого пакета очень просты, и с ними несложно ознакомиться. Однако при этом возникает вопрос «Зачем это надо?», который (увы!) остается без ответа.
Пакет для работы с таблицами Spread
Загрузка этого пакета дает средства для работы с таблицами:
> with(Spread):
[CopySelection, CreateSpreadsheet, EvaluateCwrentSelection, EvaluateSpreadsheet, GetCellFormula, GetCellValue^ GetFomiulaeMatrix, GetMaxCols, GetMaxRows, GetSelection, GetValuesMatrix, InsertMatrixIntoSelection , IsStale, SetCellFonmila, SetMatrix, SetSelection ]
Функции пакета не имеют самостоятельного значения и призваны поддерживать работу с электронными таблицами, которая уже была подробно описана. Они дают такие средства, как создание в документе шаблона таблиц, проведение операций по заполнению и редактированию ячеек таблиц, копированию содержимого таблиц в буфер памяти и т. д. Назначение функций достаточно очевидно из нх составных имен.
Пакет генерации кодов codegen
Пакет codegen представляет собой набор команд, предназначенных для организации взаимодействия системы Maple 7 с другими программными средствами:
wlth(codegen):
[С, GRAD, GRADIENT, HESSIAN, JACOBIAN, cost, declare, dontreturn, eqn, fortran, horner, lntrep2maple Joinprocs, makeglobal, makeparam, makeproc, makevoid, inaple2intrep, optimize, packargs, packlocals, packparams, prep2traits, renamevar, split, swapargs ]
Этот пакет очень полезен программистам, занимающимся разработкой сложных программных комплексов. Пакет позволяет создавать процедуры на языке Maple 7 и транслировать их в программные модули, записанные на других языках программирования, таких как Фортран или Си,
Пакет создания контекстных меню context
Пакет context служит для создания контекстных меню. Он содержит небольшое число функций:
with(context);
[buildcontext, clearlabels, defaultcontext, display, installcontext, restoredefault, testactions., troubleshoot]
Этот пакет используется довольно редко и в основном пользователями, решающими в среде Maple не вычислительные, а системные задачи. Описание таких задач выходит за рамки данной книги.
Пакет организации многопроцессорной работы process
Этот узкоспециализированный пакет содержит ряд функций по организации работы на нескольких процессорах:
with(process);
[blocky exec, fork, кИЦ 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), convert(W, dimensions, base);
length2 mass power^
with(Un1ts[Standard]):
> distance 尸 3.5*Unit(ft) + 2.4*Un1t(m);
distance := 3.466800000 [m]
force := distance*Unit(lb)/Unit(s)A2;
force := L572514028 [N]
convert(force, units, Ibf);
,3535152166 [/叨
V := i*R;
V~iR
> eval(V, [i = 2,3*Unit(mA), R = 50.0*Unit(u0mega)]);;
.1150000000 IO'6 [ Г]
converts, units, nV );
115.0000000 [«П
Пакет для работы с рядами ортогональных многочленов OrthogonalSeries
Новый пакет для работы с рядами ортогональных многочленов OrthogonalSeries имеет довольно представительный набор функций:
with(OrthogonalSeries);
[Add, ApplyOperator, ChangeBasis, Coefficients, ConvertToSum, Copy, Create, Degree, Derivate^ DerivativeRepresenlation, Evaluate, Getlnfo, Multiply^ PolynomialMultiply, ScalarMultiply, SimplifyCoefficients, Truncate]
Поскольку этот пакет представляет интерес в основном для опытных математиков, мы не будем рассматривать его функции (в целом достаточно простые) подробно и ограничимся несколькими примерами. В следующем примере с помощью функции Create создается бесконечный ряд с ортогональным многочленом Эрмита в составе базового выражения ряда:
Orthogonal Series[Create](u(n),Herm1teH(n,x));
£ u(/z) HermiteH(/7,x)
В другом примере показано представление полиномиального выражения в новом базисе с ортогональными многочленами Чебышева с помощью функции ChangeBasis:
Orthogonal Seri es[ChangeBasis](l+3*y*xA2+yA3*x,ChebyshevT(n,x), \
ChebyshevU(m.y));
3
1 + — ChebyshevT(2,x)ChebyshevU(l,^) + — ChebyshevU(l, ^)
4
+ ; ChebyshevT(l, x)ChebyshevU(l, y)
> OrthogonalSeries[Evaluate](^);
3 x' у + у X + 1
Обратите внимание на то, что новое выражение после исполнения команды Evaluate приняло вид исходного выражения.
Следующий пример демонстрирует создание ряда на основе ортогональных многочленов Чебышева и его копирование с помощью функции Сору:
S:=Create((-l)An/n!.ChebyshevT(n.x)):
W (-1)л ChebyshevT(w, х)
“=o山
T:<opy(S);
g (-1)л ChebyshevT(w, x)
Вычисление производной от ряда с ортогональными многочленами представлено ниже:
S := Create(u(n).ChebyshevT(n,х));
S :н £ u(〃) ChebyshevT (〃,x)
Derivate(S,x);
£ (〃 + I) u(〃 + I) ChebyshevU (“, x) н = 0
Еще один пример демонстрирует операцию скалярного умножения ряда с помощью функции ScalarMultiply:
a S := Create(n+l,Kravchouk(n,p,q,x));
S := £ (〃 + 1) Kravchouk (%〃,7, х)
SealarMultiply(al pha,S);
£ a (/? + 1) Kravchouk (〃,p, 7, x)
Приведенные примеры показывают, что применение этого пакета достаточно просто. С деталями (порой довольно многочисленными) применения функций этого пакета можно познакомиться по справке на данный пакет.
Пакет поддержки стандарта MathML
Для представления математической информации на страницах Интернета и последние годы был создан специальный язык MathML. Пока для большинства пользователей MathML — просто «экзотика», но так как наряду с XML его поддерживает World Wide Web Consortium, его вынуждены поддерживать все солидные фирмы — причем не только создающие системы компьютерной математики. Среди них такие крупные корпорации, как Intel, IBM и Microsoft. В Maple 7 предусмотрена новая возможность поддержки стандарта MathML 2.0. Для такой поддержки используются MathML Viewer (см. урок 2) и пакетМаЛМЬ. Пакет MathML дает минимальный набор функций для использования языка MathML:
with(MathML);
(Expo% ExportContent, Exp о rtPres ent at ion, Import, ImportContent]
В нем всего 5 функций, что позволяет разобрать их достаточно детально. Первые три функции служат для экспорта выражений:
О Export(expr) — преобразует Maple-выражение ехрг в параллельное MathML- выражение;
О Exportcontent (ехрг) — преобразует Марк-выражение ехрг в MathML-выражение в формате содержания;
О Exportpresentation (ехрг) — преобразует Марк-выражение ехрг в MathML- выражение в формате представления.
Еще две функции служат для импорта строки в формате MathML п его преобразования в Марк-выражение:
Importfmnilstring) и ImportContentfmmlstring)
Следующий пример наглядно иллюстрирует применение функций пакета расширения MathML для преобразования математического выражения а*х+Ь вначале в запись на MathML, а затем преобразование этой записи str в Марк- выражение:
str:^MathML[Export]( а*х + b );
str := "<math xinlns-http://www.w3.0rg/l998/Math/MathML'><semantics><inrow хгё f^'id5'><mrow xref^'id3'><mi xre仇'id r>a</mi><mo>&InvisibleTimes;</mo><ini xref=;,id2'>x</mi></mrow><mo>+</iTio><mi xrcf=;lid4,>b</iTii></mrow><annotatl on-xinl encoding='MathML-Content'><apply id^'id5'><plus/><apply id='id3'><ti\. mes/><ci id-idl'>a</ci><ci id-id2'>x</ci></apply><ci id='id4'>b</ci></apply>\
</annotation-xml><annotation encoding=,Maple'>a*x+b</annotation></semantics\ ></math>"
Import(str);
ax + b
Этот пример показателей тем, что дает представление о виде записей на языке MathML. Нетрудно заметить, что это достаточно громоздкий язык. Функции, представленные выше, автоматизируют процесс составления записей на языке MathML обычных математических выражений, что делает доступной для обычных пользователей подготовку публикации в Интернете, содержащей математические выражения.
Пакет ХМLTools
В Maple 7 резко расширены средства интеграции с Интернетом, Это сделано не только на уровне специфических для математических приложений средств, таких как рассмотренный выше пакет MathML, но и на уровне обычных языков сети, таких как HTML и XML.
Пакет ХМLTools служит для поддержки средств языка XML. Этот пакет предоставляет весьма внушительное число функций для этого:
with(XMLTools):
[AddAttribute, AddChildAttrCont, AttributeCount, AttributeNames, AttributeValue, Attribute ValueWithDefault^ Attributes, CData, CDataData^ CleanXML^ Comment^ CommentText, ContentModel, Con ten tModelCount, Element, ElementName, Elementstatistics, Equal, FirstChild, FromString. GetAttribute, GetChild, HasAttribute. HasChild, IsCData, Is Comment, IsElement, IsProcessinglnstruction,
IsTree, JoinEntitiesLastChild, MakeElement^ Prints PrintToFile, PrintToString, Process Attributes, Processinginstruction, ProcessinglnstructionData, ProcessinglnstructionName. ReadFile, RemoveAttribute, RemoveAttributes, RemoveChild, RemoveContent, SecondChild, Select Attributes^ SelectContent, SelectRemoveAttributes, SelectRemoveContent^ SeparateEntities, Serialize^ StripAttributes, StripComments, Subs Attribute^ SubsAttributeName, ThirdChild ToString, WriteFile]
Рассмотрение этих средств (как и средств поддержки HTML) далеко выходит за пределы тематики данной книги, хотя многие из них достаточно просты, Поэтому ограничимся единственным примером применения функции Print для получения программы на языке XML соответствующей программе задания выражения, рассмотренного в предшествующем разделе:
XMLTools[Print]( г );
<math xmlns='http://www.w3.org/1998/Math/MathML'>
<semant1cs>
<mrow xref='1d5'>
<m1 хге^'1с!Г>а</т1>
<mo>&Inv1s1bleT1mes;</mo>
<m1 xref='id2'>x</mi>
</mrow>
<mo>+</mo>
<m1 хге^'1б4'>Ь</т1>
</mrow>
<annotat1on-xml encoding='MathML-Content >
〈叩 ply 1d=,1d5'>
<plus/>
<apply id='id3'>
<t1mes/>
<c1 1d:=,1dr>a</ci>
<ci 1d='1d2'>x</c1>
</apply>
<ci 1d='1d4'>b</cl>
</annotat1on-xml>
<annotatlon encoding='Maple'>a*x+b</annotat1 on>
</semant1cs>
</math>
Пакет создания внешних программ Externalcalling
Пакет ExternalCalling служит для создания внешних программ, записанных на языке Maple (или C++). Состав пакета представлен небольшим числом функций:
О Def 1 neExternal (fn, extl 1 b) — используя функцию define external, Maple 7 задает внешнюю функцию fn в таблице функций внешних библиотек extl ib;
О External LibraryName (basename, precision) — задает имя basename функции и точность вычислений precision для функции внешней библиотеки.
Детальное знакомство с этим пакетом мы опускаем. Заинтересованный читатель найдет нужные сведения в справке по этому пакету.
Пакет линейных операторов LinearOperators
Пакет линейных операторов LinearOperators — новый пакет, содержащий средства для работы с линейными операторами. Состав пакета виден из его вызова:
with(LlnearOperators):
[Apply у DEToOrePoly^ FactoredAnnihilator. Facto redGCRD,
FactoredMinimalAnnihilatorFactoredOrePolyToDE, FactoredOrePolyToOrePoly, FactoredOrePolyToRE, IntegrateSols, MinimalAnnihilator, 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
list
listlist
negative
negint
Nonnegafive
nonnegint
nonposint
nonpositive
nonzero
Nonzerolnt
polynom
posint
positive
rational
Set
structured
truefalse
Действие большинства из них вполне очевидно из названий. Основной функцией является функция генерации случайных объектов Generate(expr). Если тип объекта не задан (например, функцией AddFlavor), то использование функции Generate будет порождать сообщение об ошибке. Примеры применения функций представлены ниже: > withCRandomTool s):
Generate(a):、
Error; (in Random1ools:-Generate) the flavor 'a' does not exist
AddFlavorfa « rand(l..20)):
Generate(a):
2
Generate(a);
11
Generate(alphachar);
Error, (in RandomTools:-Generate) the flavor 'alphachar' does not exist
AddFlavorfalphachar 5s proc() [a,b.c.d,e,f][rand(l..6)()] end proc):
GetFlavorsO:
a, alphachar^ choose^ complex^ exprseq^float, integer, list, listlist、negative, negint、 nonnegative, nonnegint, nonposint, nonpositive, nonzero, nonzeroint, polynom, posint. positive, rational, set, string, tmefalse
Generate(integer);
-72580330913
Generatedist(float, 3));
[.00007110693270, .02633073697, .7256143563 10'7]
Generate([a, integer, float]):
Error, (in RandomToolsi-Generate) the flavor 'a' does not
exist
Matrix(3, 3, Generatefrational(denominator=10). makeproc)):
■ 3
10
1
-14 ■
T5
-1
2
3 То
То0
-2И
51
-9 _10-9 _10> Matnx(3, 3. Generatefrational (denominator=10), makeproc));
-9 _
10
-9 _
10
1
4
2
2
5
5
二 3
4
-9
io
5
То
-1
-1
10
Vector(4, Generate(comp!exfintegerfrange^l..100)), makeproc)):
「67 + 10,
74 + 82 /
75 + 67 /
74 + 43 厶
Функция GetFlavorCfl vr) представляют случайный объект (или объекты) в фор、 ме процедуры:
AddFlavorfa = randd. .20)):
Generate(a):
15
GetFlavor(a);
рюс()
local г;
global _seed\
_seed := irem( ax_seed, p);
t := _seed;
to concats do _seed := irem( ax^seed, p); t := sxf + _seed end do ;
irem(f, divisor) + offset
end proc
GetFlavor(integer);
module () local Defaults', export Main\ end module
Другая функция GetFlavorsO возвращает все типы случайных объектов:
GetFlavorsO:
a, alphachar, choose^ complex, exprseq, float, integer^ list, listlist, negative, negint, nonnegative, nonnegint, nonposint, nonpositive^ nonzero^ nonieroint^ polynom, posint, positive, rational, set, strings truefalse
Функция HasFlavorCflvr) служит для проверки наличия объекта данного типа в списке типов объектов, а функция RemoveFlavor(flvr) — для удаления типа об-ьек- та. Следующие примеры иллюстрируют применение этих функций:
HdSFldVor(d);
true
RemoveFlavor(a):
HdsFlavor(a);
false
GetFlavorsO;
alphachar, choose^ complex, exprseq, float, integer^ list, listlist^ negative^ negint, nonnegative^ nonnegint, nonposint^ nonpositive、nonzero, nonzeroint, polynom, posint, positivey rational, sef, string, truefalse
Обратите внимание на то, что после унтнтожения объекта типа а он исчез из списка, выводимого функцией GetFlavors. Этот пакет, несмотря на довольно специфические возможности, наверняка будет полезен тем читателям, которые всерьез заняты реализацией «продвинутых» методов Монте-Карло, основанных на моделировании случайных объектов и ситуаций. Он служит серьезным дополнением к пакету статистических расчетов stats, описапному в этом уроке выше.
Пакет для работы со списками ListTools
Новый пакет ListTools содержит ряд полезных команд для работы со списками. Их набор представлен ниже:
with(ListTools):.
Warning, the assigned name Group now has a global binding
[BinaryPlace, BinarySearch, Categorize, DotProduct, FindRepetitions. Flatten, FlattenOncef Group, Interleave, Join, JoinSequence, MakeUiuque, 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]
DotProduct(L, L);
5.0063
DotProductCL, М):
3162
Другие новые пакеты, CurveFitting и LinearFunctionalSystem, мы рассмотрели ранее достаточно подробно (см. уроки 14 “ 15). В целом надо отметить, чгго состав пакетов Maple 7 существенно расширен по сравнению с предшествующими версиями системы. В то же время все пакеты, вошедшие в состав Maple 6, сохранены в новой версии программы — Maple 7, что гарантирует полную совместимость с ней. Практически это было подтверждено проверкой всех (а их многие сотни) примеров применения системы Maple 6 применительно к повой версии Maple 7.
Что нового мы узнали?
В этом уроке мы научились:
О Применять пакет решения задач оптимизации simplex.
О Использовать пакет двумерной геометрии geometry.
О Избранно применять пакет трехмерной геометрии geom3d.
О Использовать пакет для работы с алгебраическими кривыми 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:with(numapprox);
(chebdcg, chebmulh chebpade, chebsort, chebyshev, confracform^ hermitejjade, hornerform^'
injhorm, laurent, mbvmax, pade, remez]
Будем искать приемлемую аппроксимацию для следующей, отнюдь ле простой, тестовой функции:
f :« х -> int(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 := map(evalf, taylor(f(x), х=2, 9));
S 尸,4065945998—,1565945998“-2)+ .00209790791(彳一 2)?+ .01762626393&-2)3 — ,006207547150(% - 2)4 + .0005733566(% - 2)5 + ,00024331163(% - 2)6- ,00010010532 (%-2)7 + ,00001414212(%-2)8 + O((x-2)9)
TaylorApprox := convert(s, polynom):
Такой ряд позволяет использовать для вычислений только арифметические действия, что само по себе здорово! Для удобства преобразуем аппроксимацию в функцию, чтобы она соответствовала форме, указанной для первоначальной функции /(х). Тогда мы сможем построить график кривой ошибок для аппроксимации полиномом Тейлора:
TaylorApprox ;= unapply(TaylorApprox, х):
Tay lor Approx :=x т ,7197837994-,1565945998% + ,00209790791(% - 2)2
+ ,01762626393(%-2)3 - ,006207547150(x-2)4+ ,0005733566(%-2)5
+ .00024331163(%-2)6-,00010010532(%-2)7 + ,00001414212(%-2/
Кривая ошибок для аппроксимации полиномом Тейлора строится командой:
plot(f - TaylorApprox, 0.,4,color=black);
и имеет вид, представленный на рис. 17.2, Эта кривая нас, прямо скажем, не слишком радует, поскольку погрешность в сотни раз превышает заданную.
о -0.0002 ■0.0004 ■0.0006 ■0.0008 ■0.001■0.0012 ■0.0014о -0.0002 ■0.0004 ■0.0006 ■0.0008 ■0.001■0.0012 ■0.0014
о -0.0002 ■0.0004 ■0.0006 ■0.0008 ■0.001
■0.0012 ■0.0014
о -0.0002 ■0.0004 ■0.0006 ■0.0008 ■0.001
■0.0012 ■0.0014
Рис. 17.2. Кривая погрешности лри аппроксимации рядом Тейлора
Типичное свойство аппроксимации рядом Тейлора состоит в том, что ошибка мала вблизи точки разложения и велика вдали от. нее, В данном случае самая боль-
шая ошибка имеет место в левой оконечной точке. Чтобы вычислить значение ошибки в точке х = 0, что ведет к делению на нуль (см. определение для /(х)), мы должны использовать значение предела:
maxTaylorError ;= abs( limit(f(x), х=0) - TaylorApprox(O)):
maxTaylor Error := ,0015029620
Итак, в самом начале наших попыток мы потерпели полное фиаско. Но отчаиваться не стоит, ибо, как говорят, «даже у хорошей хозяйки первый блин — комом».
Паде-аппроксимация
Теперь опробуем рациональную аппроксимацию Паде (Pade) функции 火к) степени (4,4), Приближения по этому разложению будут аппроксимировать функцию более точно, и потому ошибки округления в вычислениях станут более заметными. Поэтому зададим еще два дополнительных знака для точности вычислений,
Digits := 12:
s := map(evalf, taylor(f(x), х=2, 9)):
PadeApprox := pade(s, x=2, [4,4]):
尸ade4Ppmx:=(,341034780922 + ,0327799093746% — ,0061278352789 (x - 2)2 + ,00452991086617(x - 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,
000035- 口口口叫 0.00025- \ 0.0002- \ 0.00015- \
0.0001- \
5е-05-
°1234
Рис. 17.3. Кривая погрешности при Паде-аппроксимации степени (4,4)
Как и при аппроксимации рядом Тейлора, ошибка здесь мала вблизи точки разложения и велика вдали от нее. Мы снова видим из графика, что для указанной функции, самая большая ошибка — в левой оконечной точке. Однако максимальная ошибка в Паде-аппроксимации уже на порядок меньше, чем при аппроксимации полиномом Тейлора:
maxPadeError := abs(limit(f(x), х«0) - PadeApprox(O)):
maxPadeError := ,000353777214
Это успех, показывающий, что мы на верном пути. Но пока погрешность остается слишком большой по сравнению с заданной.
Аппроксимация полиномами Чебышева
Знатоки техники аппроксимации знают, что лучшие приближения на заданном интервале могут быть получены при использовании разложения в ряд Чебышева. Это связано с тем, что ортогональные полиномы Чебышева позволяют получить аппроксимацию, погрешность которой в заданном диапазоне изменения аргумента распределена более равномерно, чем в предшествующих случаях. Выбросы погрешности на краях интервала аппроксимации в этом случае исключены.
Разложим функцию /(%) на [0, 4] в ряд Чебышева с точностью 1*10-8. Это означает, что все члены с коэффициентами меньше чем эта величина, будут опущены. Такая точность обеспечивается полиномом 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 := .379206274272T(°,; x T ] -.202632813998T] 1,g x -1 ]
-.0369064836430“ 2,;x-lj + .0370131431541T(3,;x-lj -,00888944143050T^4,|x-lj-.000149789336636T^5,^.Y-lj +.000642974620794T 卜,g x -1 j - .000170677949427T( 7, ; x 1 j +.0000126917283881T^8,|x-lj + .43987492873810-5T^9,|x-lj -.15628413987610-5T^10,|x-lj + .20498054066410-6T^ll,|x-lj +.45625427777810f12,;.Y-1),69432395526110-8T(13,;x-lj
Можно проверить для этого примера, что кривая ошибки при аппроксимации рядом Чебышева колеблется. Поскольку ряд Чебышева был оборван на члене 8й степени (как и полином ряда Тейлора), то максимальная ошибка оказалась равной приблизительно 0,6*10~5, Эта величина уже на два порядка меньше, чем ошибка при Паде-аппроксимации, вычисленная выше. Но все же немного не дотягивает до наших требований.
Для последующих вычислений полезно заметить, что мы можем использовать процедуру для нахождения численных значений Дх), которая будет намного эффективнее, чем прямое определение, которое требует численного интегрирования для каждого значения х. А именно определим процедуру численной оценки, основанную на пазложении в ряд Чебышева степени 13, так как максимальная ошибка
при такой аппроксимации меньше чем 10-8, и обеспечивает для нашей цели достаточную точность. Мы определим полином Чебышева Т(х) из пакета orthopol у и затем для эффективной оценки преобразуем его в форму Горнера:
F := hornerform( eval(subs(T=orthopoly[T], ChebApprox)));
F := unapply(F, x):
500001 + (.192405+(-.163970+(-.0083867+(.0277086+(-.00593183 +(-.00132727
+ (.000910060 + (-.000180351
+ (.576869 10-5 + (.448884 10$ +(- 990278 1(/6+ (.925434 10" - .347162 10* x)x)x)x)x)x
)X)X)X)X)X)X)X
Схема Горнера минимизирует число арифметических операций, заменяя операции возведения в степень операциями поеледовательного умножения.
Аппроксимация Чебышева-Паде
Теперь рассмотрим еще более точную рациональную аппроксимацию Чебыше- ва-Паде. Это такая рациональная функция г [т, п] (х) с числителем степени m и знаменателем степени п такой же, как и для разложения в ряд Чебышева. Функция г [т, п] (х) согласуется с разложением в ряд Чебышева f(x) членом степени ш+п. Мы вычислим аппроксимацию Чебышева-Паде степени (4,4), подобную обычной Паде-аппроксимации, успешно выполненной ранее:
ChebPadeApprox ;= chebpade(F. О,.4, [4,4]);
ChebPadeApprox := х -> .285648384503Т 0,;х-1 ) + .0896033645410т] 1,^х-1
-.00626546513721T[ 2,;х-1) + ,00537846708321Т| 3,gхТ
-,000414939086957T(4,;х-1)]/]т(0,gx-lj + .879308989228Т 卜,;х-1
+289575811178T( 2, g х 一 1 j + O487963355059T 卜,|x-l^
+,00650272206660T( 4, g x -1 ]
Построим кривую ошибок:
with(orthopoly. Т):
plot(F - ChebPadeApprox. O..4,color=black):
Она представлена на рис. 17.4.
Максимальная ошибка и на этот раз имеет место в левой оконечной точке. Величина максимальной ошибки несколько меньше, чем ошибка при аппроксимации рядом Чебышева. Главное преимущество представления в виде рациональной функции — высокая эффективность вычислений, которая может быть достигнута преобразованием в непрерывную (цепную) дробь (см. ниже). Однако полученная максимальная ошибка Чуть-чуть больше заданной:
Рис. 17.4. Кривая ошибки при Паде-Чебышева рациональной аппроксимации
maxChebPadeError 产 abs( F(0) - ChebPadeApprox(O)): maxChebPadeError\= .1236746 10'5
Мы достигли впечатляющего успеха и остается сделать- еще один шаг в направлении повышения точности аппроксимации.
Минимаксная аппроксимация
Классический результат теории аппроксимации заключается в том, что минимакс как наилучшая аппроксимация рациональной функции степени (ш, п) достигается, когда кривая ошибки имеет ш+п+2 равных по величине колебаний. Кривая ошибки аппроксимации Чебышева-Паде имеет нужное число колебаний, но эта кривая должна быть выровнена (по амплитуде выбросов кривой ошибки) с тем, чтобы обеспечить наилучшее минимаксное приближение. Эта задача решается с помощью функции minimax:
MinimaxApprox := minimax(F, 0..4, [4,4]. 1. 'maxerror');
MinimaxApprox :=x т (.174932901740
+ (.0833009461857+(-.0201932631012+(.00368157773344-.000157697316206г) x)x)x)/( .349866213807
+ (.031945313924+(.0622933587074+(-.001147876120SH-.00336343612168r)x)x)x)
Максимальная ошибка в аппроксимации MinimaxApprox дается значением переменной maxerror. Заметим, что мы наконец достигли нашей цели получения аппроксимации с ошибкой меньшей, чем 1*10-6:
maxMinimaxError := maxerror;
maxMinimaxError 尸.585025375366 IO"6
Построим график погрешности для данного типа аппроксимации:
plot(F - MinimaxApprox,0. .4.coloMjlack):
График ошибки, представленный на рис. 17.5, показывает равные по амплитуде колебания.
Рис. 17.5. График ошибки при минимаксной аппроксимации
Таким образом, мы добились блестящего успеха в снижении погрешности до требуемого и довольно жесткого уровня. Если бы мы задались целью получить только четыре или пять точных знаков аппроксимации, что в целом ряде случаев вполне приемлемо, то могли бы получить нужный результат гораздо раньше. Нам остается оптимизировать полученную аппроксимацию по минимуму арифметических операций и проверить реальный выигрыш по времени вычислений.
Эффективная оценка рациональных функций
Полиномы числителя и знаменателя в минимаксной аппроксимации уже выражены в форме Горнера (то есть в форме вложенного умножения). Оценка полиномом степени п в форме Горнера при n-умножениях и n-суммированиях — это наиболее эффективная схема оценки для полинома в общей форме. Однако для рациональной функции степени (ш, п) мы можем делать кое-что даже лучше, чем просто представить выражения числителя и знаменателя в форме Горнера. Мы можем нормализовать рациональную функцию так, что полином знаменателя будет со старшим коэффициентом, равным 1. Мы можем также заметить, что вычисление рациональной функции степени (т, п) в форме Горнера требует выполнения все m+n сложений , ш+п-1 умножений и 1 деления. Другими словами, общий индекс действия есть:
О ш+п операций умножения/деления;
О ш+п операций сложения/вычитания.
Вычисление рациональной функции можно значительно сократить и далее, преобразуя ее в непрерывную (цепную) дробь. Действительно, рациональная функция степени (ш, п) может быть вычислена, при использовании только
О max(m,n) операций умножения/деления;
О ш+п операций сложения/вычитания.
Например, если m = п, тогда эта новая схема требует выполнения только половины числа действий умнбжения/деления по сравнению с предшествующим методом. Для рациональной функции MinimaxApprox вычисление в форме, выраженной выше, сводится к 9 действиям умножения/деления и 8 действиям сложения/вычитания. Число операций умножения/деления можно сократить до 8, нормализуя знаменатель к форме monic. Мы можем теперь вычислить непре-
рывную (цепную) дробь для той же самой рациональной функции. Вычисление по этой схеме, как это можно видеть из вывода Maple, сводятся только к 4 действиям деления и 8 действиям сложения/вычитания:
MinimaxApprox := confracform(MinimaxApprox):
1print(M1nimaxApprox(x)):
-.468857770747е-1 + 1.07858705749/(х+4.41994843227+16.1901737091/
(х+4.29121842830+70.1948525272/(х-10,2912843004+4.77536150167/(х+1.23883665458))))
Сравнение времен вычислений
Теперь определим время, необходимое для вычисления функции /(х) в 1000 точек, используя первоначальное интегральное определение, и сравним его с временем, требующимся для схемы MinimaxApprox в виде непрерывной дроби. Так как наше приближение будет давать только 6 точных цифр, мы также потребуем 6 точных цифр и от интегрального представления функции:
Digits 尸 6: st ;= time():
seq( evalf(f(i/250.0)). i = 1..1000 ):
oldtime := timeO - st:
oldtime :二 81.805
В процессе вычислений с использованием представления рациональной функции в виде непрерывной дроби иногда требуется внести несколько дополнительных цифр точности для страховки. В данном случае достаточно внести две дополнительные цифры. Итак, новое время вычислений;
Digits := 8; st := timeO :
seq( MinimaxApprox(i/250.0), i = 1..1000 ):
newtime := timeO - st;
newtime := .694
Ускорение вычисления при аппроксимации есть:
Speedup := oldtime/newtime:
SpeedUp^= 117.87464
Мы видим, что процедура вычислений, основанная на MinimaxApprox, выполняется почти в 120 раз быстрее процедуры с использованием исходного интегрального определения. Это просто феноменальный успех, полностью оправдывающий время, потерянное на предварительные эксперименты по аппроксимации и ее оптимизации! Разумеется, при условии, что вы будете применять эту аппроксимацию многократно.
Преобразование в код Фортрана или С
Один из поводов разработки эффективной аппроксимации для вычисления математической функции заключается в создании библиотек подпрограмм для популярных языков программирования высокого уровня, таких как Фортран или С. В Maple имеются функции преобразования на любой из этих языков. Например, мы можем преобразовывать формулу для минимаксной аппроксимации в код Фортрана.
> fortran(MinimaxApprox(x)): fortran (-.0468860934488
1.07859095973
Х + 4.41993871351+Х + 4.41993871351+16.190185810216.1901858102х+ 4.29117952035+х+ 4.29117952035+70.194164500 870.194164500 810.2912413941+10.2912413941+4.77540023037х+ 1.23 883 8603424.77540023037х+ 1.23 883 860342
Х + 4.41993871351+
Х + 4.41993871351+
16.1901858102
16.1901858102
х+ 4.29117952035+
х+ 4.29117952035+
70.194164500 8
70.194164500 8
10.2912413941+
10.2912413941+
4.77540023037х+ 1.23 883 860342
4.77540023037х+ 1.23 883 860342
Итак, нами показано, что правильный выбор аппроксимации для сложной функции обеспечивает уменьшение времени ее вычисления более чем на два порядка (!) при весьма приличной точности в 6 верных знаков и при использовании для вычислений минимального числа арифметических операций. Применение при этом средств системы Maple 7 позволяет генерировать разложения в различные ряды, быстро вычислять рациональные аппроксимации функций и выполнять преобразования в различные специальные формы, сочетая это с мощными средствами интерактивной работы и графической визуализации, в частности с построением графиков функции и кривых ошибок при разных видах аппроксимации. Все это обеспечивает идеальную среду для решения таких задач.
Моделирование физических явлений
Расчет траектории камня с учетом сопротивления воздуха
Вы хотите метнуть камень в огород вашего вредного соседа? Разумеется, во время его отсутствия. Давайте промоделируем эту ситуацию, предположив два актуальных случая: дело происходит на Луне и на Земле. В первом случае сопротивления воздуха (как и его самого) нет, а в другом — сопротивление воздуха есть и его надо учитывать. Иначе камень упадет в ваш огород, а не в огород соседа!
Итак, пусть подвернувшиеся под руку камни с массой 500 и 100 г брошены под углом 45° к горизонту со скоростью Vo = 20 м/с. Найдем их баллистические траектории, если сила сопротивления воздуха Ftp=A*V, где А=0,1 Н*с/м. Сравним их с траекториями, получающимися без учета сопротивления воздуха.
Начнем с подключения пакета plots, нужного для визуализации данной задачи:
restart:
w1th(plots):,
Warning, the name changecoords has been redefined
Составим параметрические уравнения для проекций скорости на оси координат:
a Vox:»Vo*cos(alpha):Voy:eVo*sin(alpha);
Уох := Vo cos(a)
匕夕 R %9sin(a)
Мы рассматриваем два случая: камень массой 500 г и камень массой 100 г. Поскольку для каждого случая мы предусматриваем расчет в двух вариантах (с учетом сопротивления воздуха и без такого учета), то мы должны составить 4 системы дифференциальных уравнений (ДУ). Каждая система состоит из двух ДУ второго порядка и вид этих систем известен из курса физики. Ниже представлено задание этих систем ДУ (для первой системы дан вывод ее вида):
> sysl:=пlassa[l]*d^ff(x(t),t$2)^^A[l]*diff(x(t),t), massa[l]*diff(y(t),t$2)^-A[l]*(diff(y(t).t))-пlassa[l]*g:
sysl 尸 massasysl 尸 massa传x"); massa\^- у⑺卜-4得y⑺卜2吗g传x"); massa\^- у⑺卜-4得y⑺卜2吗g
sysl 尸 massa
sysl 尸 massa
传x"); massa\^- у⑺卜-4得y⑺卜2吗g
传x"); massa\^- у⑺卜-4得y⑺卜2吗g
> sys2:^^massa[l]*diff<x(t),t$2)^-A[2]*d^ff(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))-niassa[2]*g:
sys4-massa[2]*diff(x(t) ,t$2)^-A[2]*d^ff(x(t) ,t), massa[2]*diff(y(t) ,t$2)=-A[2『('diff(y(t) ,t))-massa[2]*g:
Зададим исходные числовые безразмерные данные для расчета:
> Vo:K20:massa:K[0.5,0.1]:А:к[0.1,0]:alpha:KPi/4:g:«9.8:
Vo := 20
massa := [.5, . 1 ]
Л := [.1,0]
g 尸 9.8
Выполним решение заданных систем ДУ:
pl:Kdsolve({sysl,x(0)=0.D(x)(0)=Vox,y(0)=0,D(y)(0)=Voy}, {y(t),x(t)}, typeKnumeriс ,output=li stprocedure):
pl :=p = (proc (/) ... end proc ), x(/) = (proc (/) ... end proc ), ^x(z) = (proc (/) ... end proc ),
(О = (proc (/) end proc ), ^y(f) = (proc (f) ... 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=listprocedure):
p3:«dsolve({sys3.x(0)=0,D(x)(0)=Vox.y(0)=0,D(y)(0)=Voy}, {y(t),x(t)}.
type=numeric ,output«listprocedure):
р4:*=б5о1 ve({sys4,x(0)«0.D(x)(0)=Vox.y(0)=0,D(y)(0)=Voy}, {y(t),x(t)}.
type^numeE c .output=l i stprocedure):
Создадим графические объекты — результаты решения систем ДУ:
al:=odeplot(pl. [x(t) ,y(t)] ,0. .З.соТог^гееп, view=[0. .50.0. .15]. th1ckness«2):
a2:«odeplot(p2,[x(t) ,y(t)] ,0. .3,coloured. v1ew=[0. .50.0. .15]. thickness=2):
aSi^deplotCpS.Exft),y(t)J,O..S.color^blue. view®[0..50.0..15]. thickness=2:
a4:seodeplot(p4.[x(t) .y(t)] .0. .З.соТог^Ыack. view®[0. .50,0. .15]. thickness=2):
Построим графики траекторий для первого случая:
t:=textplot([[25.8.'А=0.1'],[35.9.'А^О']],color=blue.
fon>[TlMES. ROMAN, 12]):
tl^textplot([[17.3/A=0.r].[35.9.'A^0']].color=blue,
font=[TIMES,ROMAN.12]):
disp1ay({al,a2,t}.title='TpaeKT. полета тела массой 500г',
1abelse[x,y],1 abelfont=[TIMES,ROMAN.14]);
Графики траекторий полета камня с массой 500 г представлены на рис. 17.6.
Траектория полета тела массой 500 г
Рис. 17.6. Баллистические траектории камня с массой 500 г
Теперь построим графики траекторий для второго случая:
display({a3.a4.tl},title='TpaeKT. полета тела массой 100 г',
1abels^Ex.у], labelfont=[TIMES,ROMAN,14]):
Они представлены на рис. 17.7.
Рис. 17.7. Баллистические траектории камня при массе 100 г
Из проведенных расчетов и графиков видно, что при учете силы сопротивления воздуха дальность и высота полета сильно уменьшаются по сравнению с полетом в вакууме, и эта разница зависит от массы тела, поэтому при небольшой массе тела сопротивлением воздуха пренебрегать нельзя.
Движение частицы в магнитном поле
От реального мира перейдем к микромиру. Пусть микрочастица массой 9*10_:it кг и зарядом +1,6*10"9 Кл влетает в магнитное поле с индукцией В = 0,1 Тл под углом а=80°. Рассчитаем траекторию движения частицы при начальной скорости Vo = 1*107 м/с:
restart;
Сила Лоренца, действующая на движущуюся частицу 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
В соответствии с этим известные из курса физики дифференциальные уравнения, описывающие траекторию полета частицы по осям х, у, z имеют вид:
sys^diff(x(t),t$2)^q*(Ex+(diff(y(t),t)*Bz-diff(z(t),t)*By))/massa,diff(y(t),t$2)= =q*(Ey+(diff(z(t).t)*Bx-diff(x(t).t)*Bz))/massa,diff(z(t),t$2)=
以+国(十2-汝Z⑺仅 massa以+国(十2-汝Z⑺仅 massa=q*(Ez+(diff(x(t),t)* By-diff(y(t),t)*Bx))/massa:
以+国(十2-汝Z⑺仅 massa
以+国(十2-汝Z⑺仅 massa
Зададим исходные числовые данные (опустив размерности):
q;=-1.6е-19;massa:=9.1e-31:V:=le7:alpha;K80*Pi/180:
Vx:=V*cos(alpha):Vy:=V*sin(alpha):Ex:=0:Ey:=0:Ez:=0: Bx;=0.l:By:=0: Bz:=0:
Построим траекторию движения частиц в пространстве:
with(DEtools):DEplot3d({sys},{x(t),y(t),z(t)},t=0..2e-9,[[x(0)s=0,D(x)(0)=Vx,y(0)=
K0,D(y)(0)=Vy,z(0)=0,D(z)(0)=0]],stepsize=le-ll,orientatiorF[24,117]);
Полученная траектория представлена на рис. 17.8. Она имеет вид спирали в пространстве. При этом скорость движения частицы вдоль оси х неизменна, а вдоль осей у и z имеет характерную колебательную компоненту. Случай явно куда менее тривиальный, чем полет камня, описанный выше.
Рис. 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);
xyz := {z(f) = Jq sin佶兀]sin(8791208790 f尸,x(f) = 10000000cosj^ 兀]
0/71ZUo / 77 丿7 丿
У⑺=879120879sm(9 兀卜m( 17582417580 /)}
Моделирование движения заряженной частицы в пространстве с магнитным полем показывает, что для принятых для моделирования параметров решаемой задачи, движение частццы происходит по спиралеобразной траектортн. Получен как график траектории движения частицы, так и аналитические уравнения, описывающие это движение.
Разделение изотопов
Рассмотрим еще одну классическую задачу ядер ной физики — разделение изотопов (атомов с одинаковым зарядом ядра, но разной массой). Для этого используют различные способы. В частности, это может быть масс-спектроскопический метод. Из точки А вылетают однозарядные ионы (q = е = 1.6*10't9 Кл) разной массы (от 20 до 23 а.е.м.) и под разными углами в пределах от 80 до 100° к оси х в плоскости ху (рис. 17.9). Вдоль оси z приложено магнитное поле В=10'2 Тл. Рассчитаем траектории полета частиц. Будем надеяться, что это подскажет способ разделения изотопов.
Приступим к решению данной задачи. Сила Лоренца, действующая на движущуюся частицу, F = q*(EHv, В]). Проекции векторного произведения [v, В] на оси х, у, z заданы выражениями:
Lv.B]x=vy*Bz-vz*By [v.B]y=vz*Bx-vx*Bz [v.B]z=vx*By-vy*Bz
Рис 17.9. Иллюстрация к методу разделения изотопов
В соответствии с этим дифференциальные уравнения, описывающие траекторию полета частицы по осям х, у, z имеют вид:
restart:
sys:=diff(x(t).t$2)=q*(Ex+(diff(y(t).t)*Bz-diff(z(t),t)*By))/massa,diff(y(t),t$2)=
=q*(Ey+(diff(z(t).t)*Bx-diff(x(t).t)*Bz))/massa,d1ff(z(t),t$2)=
«q*(Ez+(diff(x(t),t) *By-diff(y(t),t)*Bx))/massa:
g伊+得y(f))&一假z⑺历
豈 少+侵x(f)g国⑴
力 2z(土)一mass a,
Зададим исходные числовые данные для расчета:
q:=1.6e-19:V:=le4:
Vx:=V*cos(alpha):Vy;»V*sin(alpha);Ex:=0:Ey:*0;Ez;=0:Bx:=0:
By;=0:Bz:=le-2:
Выполним решение составленной выше системы дифференциальных уравнений:
>xyz:«dsol ve({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):
XX:e(fnassa.alpha)->.6250000000e25*fnassa*(sin(alpha)-l.*sin(alpha)*
*cos(,1600000000e-20*t/fnassa)+cos(alpha)*sin(.1600000000e-20*t/massa)):
YY:«(fnassa,alpha)->.6250000000e25*massa*(-l.*cos(alpha)+cos(alpha)*
*cos(.1600000000e-20*t/fnassa)+sin(alpha)*sin(.1600000000e-20*t/massa)):
XX:=(massa, a) -> .625 00000001025 massa
^sin(a)- l.sin(a)cos^ 16000000001 O'20-^^^ + cos(a)sin^. 16000000001 ff20-^^^
YY:=(massa, a) —> .625 00000001025 massa
(-L cos(a) + cos(a)cos(. 16000000001 O'20 ^^) + sin(a) sin^. 16000000001 O'20 ^^-^
Построим графики решения:
аеш:=1.67е-27: иг:«3.14/180:
plot([[XX(20*aefn.80*ur).YY(20*aefn,80*ur), >0..10е-5].[ХХ(20*ает.90*иг),УУ(20*ает,90*иг), t=0..10e-5],[XX(28*aefn.80*ur).YY(28*aefn,80*ur).
>0..10е-5],[ХХ(28*ает.90*иг).У¥(28*ает,90*иг).
>0..10e-5],[XX(24*aefn.80*ur),YY(24*aefn.80*ur).
t=0.. 10e-5], [XX(24*aem.90*ur) ,YY(24*aefn,90*ur), t=0. .10e-5]] ,vie№[0. .0.65,0. .0.65].
color=[red,red,bl ue,blue-black.black].1abel s=[x ,y]):
Эти графики показаны на рис. 17.10.
Рис. 17.10. Траектории движения частиц
Полученные графики (рис. 17.10) наглядно показывают на одну из возможностей разделения изотопов. Как говорится, осталось подставить «стаканчик» в нужное место для ловли нужных изотопов. Разумеется, это только изложение идеи одного из методов разделения изотопов. Увы, на практике приходится использовать сложнейшие и дорогие физические установки для решения этой актуальной задачи.
Моделирование рассеивания альфа-частиц
Одним из фундаментальных доказательств существования ядра у атомов стал опыт с бомбардировкой тонкой фольги из металла альфа-частицами с высокой энергией. Если бы «массивных» ядер не существовало, то альфа-частицы должны были бы спокойно пролетать сквозь тонкую фольгу, практически не отклоняясь. Однако, как физики и ожидали, некоторая часть частиц испытывала сильное отклонение и даже поворачивала назад. Очевидно, что имели место отскоки (упругие столкновения) с малыми, но массивными ядрами металла фольги.
В нашем распоряжении, увы (а может быть и к счастью), нет ускорителя альфа- частиц. Так что мы, не опасаясь облучения и очередной Чернобыльской катастрофы, сможем смоделировйть это интереснейшее физическое явление с помощью математической системы Maple 7. Причем спокойно сидя перед своим домашним компьютером и глубокомысленно наблюдая за траекториями полета альфа-частиц.
Итак, пусть в нашем теоретическом опыте альфа-частицы с энергией 4 МэВ рассеиваются тонкой золотой фольгой. Рассчитать траекторию частицы, приближающейся к ядру атома Au. Прицельное расстояние р равно 2*10't5 м. Приступим к решению задачи и зададим вначале систему дифференциальных уравнений для траектории альфа-частицы:
restart;
sys:=d1ff(x(t),t$2)=ql*q2*x(t)/(4*Pi*E0*massa* (x(t)人2+
+y(t)A2)"(3/2)).diff(y(t).t$2)=ql*q2*y(t)/(4*Pi*E0*massa*(x(t)A2+y(t)"2)" (3/2)):
a2 ,15J5:=— X(/)=-a2 ,15J5:=— X(/)=-qi q2 x(f)qi q2 x(f)a2 ,1戸⑺=4a2 ,1戸⑺=4, о(3/2),it EO massa (x(f) +y(f)~)ql q2 y(f), о(3/2),it EO massa (x(f) +y(f)~)ql q2 y(f)л EO massa (x(r)2 + y(O )л EO massa (x(r)2 + y(O )
a2 ,1
5J5:=— X(/)=-
a2 ,1
5J5:=— X(/)=-
qi q2 x(f)
qi q2 x(f)
a2 ,1
戸⑺=4
a2 ,1
戸⑺=4
, о(3/2),
it EO massa (x(f) +y(f)~)
ql q2 y(f)
, о(3/2),
it EO massa (x(f) +y(f)~)
ql q2 y(f)
л EO massa (x(r)2 + y(O )
л EO massa (x(r)2 + y(O )
Введем исходные числовые данные для вычислений:
ql:=2*1.6е-19:q2:=79*1.6е-19:massa:=4*1.67е-27:Е0:=8.85е-12: а:=4е'13:
р:=5е-15:Т:=4e6*1.6e-19:V0x:=sqrt(2*T/massa):
Создадим графическую структуру решения нашей системы дифференциальных уравнений для нескольких расчетных отклонений линии движения альфа-частицы от центра ядра атома, находящегося на ее пути:
with(DEtools):ss:=DEplot({sys}.{y(t).x(t)},t=0..7е-20.
[[x(0)=-d,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)] .stepsize<e-21,l inecolor=black):
with (plottools) :yy:=circle( [0.0] .2E-14, coloured, thickness=2):
Warning, the name translate has been redefined
Построим центр ядра (кружок со знаком +) и траектории альфа-частиц:
ss2-PLOT(TEXT([0.-0.Зе-14].'+'). FONT (HELVETICA. OBLIQUE. 14)):
Осталось построить график траекторий движения альфа-частиц вблизи центра атома:
with(plots):
Warning, the name changecoords has been redefined
> display([ss.yy,ss2],title='Рассеивание а-частиц',axes=framed):
График траекторий движения альфа-частиц вблизи ядра представлен на рис. 17.11.
Этот график настолько нагляден, что не требует пояснения.
Моделирование движения альфа-частиц вблизи малого и «массивного» ядра атома дает наглядное представление о математической и физической сути данного опыта. Надо лишь помнить, что нельзй нацеливать альфа-частицы прямо
в центр ядра. Более сложные, чем приведенные, расчеты показывают, что при этом альфа-частица настолько близко подходит к ядру, что надо учитывать новые факторы, возникающие при близком взаимодействии. Они могут привести к тому, что частица будет поглощена ядром. Но это уже тема нового разговора, выходящего за рамки данной книги. :
Рис. 17.11. Траектории движения альфа-частиц вблизи ядра атома
Моделирование и расчет электронных схем
Нужно ли применять Maple для моделирования и расчета электронных схем?
Нужно ли применять системы компьютерной математики для анализа, расчета и моделирования электронных схем? Ответ на этот вопрос не так прост, как кажется с первого взгляда. С одной стороны, к услугам пользователя компьютера сейчас имеется ряд программ схемотехнического моделирования, например Micro-САР, Electronics Workbench, PSpice, Design Labs и др., автоматически составляющих и решающих большие системы уравнений состояния электронных схем и моделирующих работу бесчисленного множества электронных схем без кропотливого «ручного» составления уравнений.
Но, с другой стороны, анализ схем в таких программах настолько автоматизирован, что начисто теряется его физическая и математическая сущность. Это не так уж страшно, когда моделируются типовые схемы на давно известных или, скорее, просто хорошо знакомых электронных приборах. Но это явно плохо, когда объек-
том исследования и моделирования являются новые нетрадиционные схемы на новых или малоизвестных приборах или когда знание физических и математических основ работы таких схем принципиально необходимо. Например, при изучении их в вузах и университетах. В этом случае применение систем компьютерной математики не только возможно, но и принципиально необходимо.
Малосигнальный анализ усилителя на полевом транзисторе
Рассмотрим классический усилительный каскад на полевом транзисторе, схема которого приведена на рис. 17.12, а. Его эквивалентная малосигнальная схема представлена на рис. 17.12, б.
Рис. 17.12. Принципиальная (а) и эквивалентная (5) схемы усилителя на полевом транзистореРис. 17.12. Принципиальная (а) и эквивалентная (5) схемы усилителя на полевом транзисторе
Рис. 17.12. Принципиальная (а) и эквивалентная (5) схемы усилителя на полевом транзисторе
Рис. 17.12. Принципиальная (а) и эквивалентная (5) схемы усилителя на полевом транзисторе
Наша цель заключается в расчете характеристик усилителя операторным методом. Подключим нужный нам пакет plots:
> restart:with(plots):
Warning, the name changecoords has been redefined
Из законов Киргофа вытекает, что сумма токов, втекающих в каждый узел и вытекающих из него равна 0. Следовательно, для узлов эквивалентной схемы рис. 17.12 можно записать следующую систему уравнений в операторной форме:
,с Vl-Vvs V1-V2
ТсТ
,с V2-V1 V2 V2-V3
…2:=0 = ^^ +力工-
s С7s С2
,п УЗ-У2едЗ := 0 =j+,п УЗ-У2едЗ := 0 =j+73 + 1172 V3-Vo
,п УЗ-У2едЗ := 0 =j+
,п УЗ-У2едЗ := 0 =j+
-R3~+1
sC2sC2Тез
sC2
sC2
/ с Vo-V3 Vo
> e“:=°=—j— + ^7-
Тез
Переменные напряжения на узлах схемы находятся из аналитического решения данной системы. При этом заблокируем вывод их аналитических значений, поскольку он очень громоздок. Тем не менее вы можете посмотреть на полученные формулы, поставив знак точки с запятой вместо знака двоеточия в приведенных ниже выражениях:
> solve({eql,eq2,eq3,eq4},{Vl,V2,V3,Vo}):
Обеспечим присвоение переменным Vo, VI, V2 и V3 найденных из решения системы уравнений значений:
> assign(^);
Теперь найдем операторную передаточную функцию в аналитическом виде:
> н
* Vvs
H:=((sC2R3-2Cl R2s2C3R4)/(l+sC3R3 + s2 С2 R2 Cl RI +sC2R3+sC3R4
+ C3 R4 52 c2 R2 卩 + C C3 R3 C2 R2 + s C2 R2 卩 + C3 R4 s2 C2 R2 + s C2 R2 + s Cl R2
+『C2 R3 C3 R4 Cl R2+s2 C3 R4 Cl R2 +d C2 R3 Cl R2 + s2 C3 R3 Cl R2
+ C3 R4『C2 R3 Cl R/ + У C2 R2 ilC1R1 + C3 R4『C2 R2 Cl R/
+ C3 R4『C2 R2 iiCl RI + C3 R4『Cl R/ + C3『R3 C2 R2 Cl R/ + C3『R3 Cl R/
+ s? C2 R3 C3 R4 + C2 R3 s? Cl Rl+s Cl RI)
В соответствии с выбранным операторным методом анализа введем обозначения: > £0 := 2 л/
> S := /3
5 := 2 7 л/
Это позволяет найти Н как функцию от частоты f также в аналитическом виде:
> Н;
-4 ((27Л/С2 R3 - ц) Cl R2 л2/ СЗ К4)/ (1 + 2 / nfC2 R3+21 nfC3 R3 -4d『C2R2Cl RI +2InfC3R4-4 C3 R4 Л2/ C2R2^-4 n2/ C3 R3 C2 R2 + 21nfC2 R2 卩-4C3 R4KfC2R2 + 21nfCl R2-8IKJ3 C2R3C3 R4C1 R2
4 л2/ C3 R4 Cl R2 - 4 л2/ C3 R3C1 R2-8I C3 R4 л3/ C2 R3 Cl RI
4 兀2尸 C2R2~C1 RI-81C3 R4 л3/ C2 R2 Cl RI -81 C3 R4 л3/ C2 R2 ц Cl &/
-4C3R4n2/ Cl &/- 8/C3 n3/R3 C2R2 C7 尺/ -4 C3 兀?#R3 ci RI
4 n2/ C2 R3 C3 R4 - 4 C2 R3 兀?尸 Cl RI+21 nfCl RI +21 nfC2 R2
~^^fC2R3 Cl R2)
Это тоже довольно громоздкое выражение, и его применение при «ручном» анализе потребовало бы от нас немало изобретательности. Между тем Maple 7 позволяет «в два счета» определить из него амплитудно-частотную (AVM) и фазочастотную (PhaseAV) характеристики усилителя как функции частоты:
AVM:=evalc(abs(H)):
PhaseAV:«evalc(argument(H)):
Преобразуем AVD в логарифмическую характеристику, выражающую усиление в децибелах (dB):
AVdB:=20*logl0(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*10A(-12): C3:<*10A(-6):
mu:=50:
Построим амплитудно-частотную характеристику усилителя:
gaindata:«NULL: phasedata:=NULL: for a from 0 to 8 do:
for i from 2*10Aa to 10A(a+l) by 10Г do
gaindata:=gaindata, [i, evalf(subs(f=i,AVdB))]; phasedata:=phasedata, [i, evalf(subs(f=i.AVdeg))];
od:
od:
loglogplot([gaindata], thickness=2, color=black, style=line, axes=boxed,
1111е='Коэффициент усиления K(f)', labels=['Частота (Hz)','K(dB)']):
Она показана на рис. 17.13.
Рис. 17.13. Амплитудно-частотная характеристика усилителя
Далее зададим построение фазо-частотной характеристики усилителя:
loglogplot([phasedata], -thickness=2, color=blue, style=line, axes=boxed, title^'OaaoBbiii сдвиг (в градусах)', label5«['Частота (Hz)','Фаза']):
Она представлена на рис. 17.14.
Рис. 17.14. Фазо-частотная характеристика усилителя
Найдем номинальный коэффициент усиления па частоте f=1000 (Гц):
AVmid:=eval f(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
fhigh:=fsolve(eq5,f, f=2000..100*10*6):
Jhigh := .5737800225 107
Мы можем построить и более наглядную амплитудно-частотную характеристику с точками, соответствующими граничным частотам:
with(plottools) :h:=loglO(AVmid-dAV):
aplot:= loglogplot([gaindata], thicknesses, color=black, style=11ne, axes=boxed, title='4acTOTbi flow и fhigh среза', labels=['Частота (Hz)'.'K(dB)']): bplot:=line([0.1,h], [7.1,h], color=black, linestyle=3):
cplot:=l 1ne([logl0(flow),0.58], [loglO(flow),1.6], color=blue, linestyle=3): dplot:^line([loglO(fhigh),0.58], [logl0(fhigh),1.6], color=red, linestyle=3): display([aplot,bplot,cplot,dpiot]):
Эта характеристика показана на рис. 17.15.
На ней проставлены синяя и красная пунктирные вертикали, соответствующие найденным граничным частотам flow и fhigh, а также пунктирная горизонталь, соответствующая коэффициенту усиления на этих частотах. Это позволяет наглядно оценить частотный диапазон работы усилителя.
Таким образом, задача расчета усилителя в малосигнальном режиме полностью решена. Мы получали значение номинального коэффициента усиления, рассчитали нижнюю и верхнюю граничные частоты, получили аналитические выражения для амплитудно-частотной и фазо-частотной характеристик усилителя и построили их наглядные графики.
Рис. 17.15. Амплитудно-частотная характеристика с выделенными точками граничных частотРис. 17.15. Амплитудно-частотная характеристика с выделенными точками граничных частот
Рис. 17.15. Амплитудно-частотная характеристика с выделенными точками граничных частот
Рис. 17.15. Амплитудно-частотная характеристика с выделенными точками граничных частот
Расчет аналогового фильтра на операционном усилителе
Теперь рассмотрим проектирование аналогового полосового фильтра на операционном усилителе, схема которого приведена на рис. 17.16.
Рис. 17.16. Схема полосового фильтра \ на интегральном операционном усилителеРис. 17.16. Схема полосового фильтра \ на интегральном операционном усилителе
Рис. 17.16. Схема полосового фильтра \ на интегральном операционном усилителе
Рис. 17.16. Схема полосового фильтра \ на интегральном операционном усилителе
Подготовимся к расчету фильтра:
> restart:
Зададим основные уравнения, описывающие работу фильтра на малом сигнале:
Vo 尸(-Z2/ZD* Vi;
〃^%
Vo •=
Z1 尸 R3 + l/(I*omega*C3):
z/ :=R3~^C3
> Z2 :- R4*l/(I*omega*C4) / (R4 + l/(I*omega*C4)):
Z2:=
-IR4
to a R4-
Введем круговую частоту:
omega := 2*Pi*f;
(О := 2 л/*
Найдем коэффициент передачи фильтра и его фазо-частотную характеристику как функции от частоты:
gain :- abs(evalc(Vo/Vi)):
phase := evalc(op(2.convert(Vo/Vi.pol ar))):
Для просмотра громоздких аналитических вьтражений для этих параметров замените знаки двоеточия у выражений для gain и phase на знак точки с запятой. Далее введем конкретные исходные данные для расчета:
R3 产 1000:
R4 尸 3000:
СЗ 产 0.08*10*(-6):
С4 产 0.01*10*(-6):
Построим АЧХ фильтра как зависимость коэффициента передачи в децибелах (dB) от частоты f в Гц:
plot([loglO(f), 20*logl0(gain), f=10..50000], colorKblack, ^З'Козффиииент передачи dB как функция от частоты f в Гц');
Эта характеристика представлена на рис. 17.17. Здесь полезно обратить внимание на то, что спад усиления на низких и высоких частотах происходит довольно медленно из-за малого порядка фильтра.
Рис. 17.17. АЧХ фильтра на операционном усилителе
Далее построим фазо-частотную характеристику фильтра как зависимость фазы в радианах от частоты f в Гц:
plot ([loglO(f), phase, f=10..50000], color«black, title^'Qaso-MaCTOTHaH характеристика фильтра');
Фазо-частотная характеристика (ФЧХ) фильтра показана на рис. 17.18.
На ФЧХ фильтра можно заметить характерный разрыв, связанный с превышением фазовым углом Траничного значения л. Такой способ представления фазового сдвига общепринят, поскольку его изменения стремятся вписать в диапа
зон от 一冗дот
Рис. 17.18. ФЧХ фильтра на операционном усилителе
Проектирование цифрового фильтра
Основной недостаток аналоговых активных фильтров, подобных описанному выше, заключается в их малом порядке. Его повышение за счет применения многих звеньев низкого порядка ведет к значительному повышению габаритов фильтров и их стоимости. От этого недостатка свободны современные цифровые фильтры, число ячеек которых N даже при однокристальном исполнении может достигать десятков и сотен. Это обеспечивает повышенную частотную селекцию.
Спроектируем фильтр N+1-го порядка класса FIR (Finite Impulse Response или с конечной импульсной характеристикой). Каждая из N ячеек временной задержки фильтра удовлетворяет следующей зависимости выходного сигнала у от входного х вида:
丿 пк ~ &
Подключим пакет расширения plots, нужный для графической визуализации проектирования:
restart:with(plots):
Warning, the name changecoords has been redefined
Зададим исходные данные для проектирования полосового цифрового фильтра, выделяющего пятую гармонику из входного сигнала в виде зашумленного меандра с частотой 500 Гц:
N := 64:# Число секций фильтра (на 1 меньше порядка фильтра)
fs 尸 10000:# Частота квантования
fl := 2300:# Нижняя граничная частота
fh := 2700:# Верхняя граничная частота
m := 10:# 2Am > N - число точек для анализа
Вычислим:
Т := 2Ат-1:
Т:= 1023
Fl := evalf(fl/fs);
F1 := .2300000000
F2 := evalf(fh/fs);
F2 := .2700000000
Dirac(O) := 1: # Функция Дирака
fpl:=2*Pi*Fl: fp2:=2*P1*F2:
Зададим характеристику полосового фильтра:
g := (sin(t*fp2)-sin(t*fpl))/(t*Pi);
_ sin(.5400000000/л)-sin( .4600000000 / 冗)
Вычислим FIR-коэффициенты для прямоугольного окна фильтра:
С := (n) -> lim;t(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(0..Т):
Установим значение х(п) равным 0 для времени меньше 0 и 1 для времени >=0:
for n from -N to -1 do х[п]尸 0; od:
for n from 0 to T do x[n]产 Dirac(n); od:
Вычислим временную зависимость для выходного сигнала:
for n from 0 to Т do у[п]尸 sum(h[k]*x[n-k],ksO..N); od:
Построим график импульсной характеристики фильтра, отражающей его реакцию на сигнал единичной площади с бесконечно малым временем действия:
р := [seq([j/fs,y[j]].j=O..Т)]:
plot(p. times0..3*N/fs, 1 abels=[t1me.output], axes=boxed. xtickmarks=4. 1111е='Импульсная характеристика фильтра',colorsblack):
Он показан на рис. 17.19. Нетрудно заметить, что эта характеристика свидетельствует об узкополосности фильтра, поскольку его частоты fl и fh различаются несильно. В этом случае полосовой фильтр по своим свойствам приближается к резонансному, хотя само по себе явление резонанса не используется.
Вычислим АЧХ фильтра, используя прямое преобразование Фурье. Оно после подготовки обрабатываемых массивов реализуется функцией FFT:
го := arrayd. .Т+1):io := arrayd. .Т+1):
> for n from 0 to Т do го[n+1] := у[п]: 1o[iul]尸 0: od:
FFT(m,ro.io):
Построим график АЧХ фильтра:
р [seq([j*fs/(T+l).abs(ro[j+i]+lo[j+i]*I)].j=0..T/2)]:
plot(p, frequency=0..fs/2, 1 abels=[frequency.gain], title='A4X фильтра',color=black):
Он представлен на рис. 17.20. Нетрудно заметить, что и впрямь АЧХ фильтра напоминает АЧХ резонансной цепи — она имеет вид узкого пика. Вы можете легко проверить, что раздвижением частот fl и fh можно получить АЧХ с довольно плоской вершиной и резкими спадами (говорят, что такая характеристика приближается к прямоугольной).
Рис. 17.20. АЧХ цифрового полосового фильтра
Теперь приступим к тестированию фильтра. Зададим входной сигнал в виде зашумленного меандра с частотой 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):
Г1;
od:
od:
Временная зависимость синтезированного входного сигнала представлена на рис. 17.21.
Вычислим реакцию фильтра на входной сигнал:
for n from 0 to Т do
y[n] := surri(h[k]*x[n-k].k=O..N);
od:
Построим график выходного сигнала:
> р := [seq([j/fs.x[j]]. j=0. .T)]:q 尸[seq([j/fs.y[j]],>0..T)]:
> plot(p,time=0..T/fs/4.labels=[t1me.volts].title='BxoflHOM сигнал'.color=black);
> plot(q,ti(ne=0. .T/fs/4,labels=[time,volts] ,title='BbixoflHOH сигнал',color=black):
Временная зависимость выходного сигнала показана на рис. 17.22. Нетрудно заметить, что в конце концов выходной сигнал вырождается в пятую гармонику
входного сигнала, но этому предшествует довольно заметный переходной про
цесс. Онцесс. ОнВыходной сигналВыходной сигналРис. 17.22. Временная зависимость выходного сигнала цифрового фильтраРис. 17.22. Временная зависимость выходного сигнала цифрового фильтрасвязан с узкополосностью данного фильтра.
цесс. Он
цесс. Он
Выходной сигнал
Выходной сигнал
Рис. 17.22. Временная зависимость выходного сигнала цифрового фильтра
Рис. 17.22. Временная зависимость выходного сигнала цифрового фильтра
Вычислим спектры входного и выходного сигналов, подготовив массивы выборок сигналов и применив прямое преобразование Фурье с помощью функции FFT:
ri := arrayd. .T+l):1i 尸 arrayd. .T+l):
for n from 0 to T do
N[n+1]尸 x[n]*2/T; ii[iul]尸 0;
ro[n+l] :- y[n]*2/T; io[n+l] := 0;
od:
FFT(m,ri,ii):FFT(m,ro,io):
Построим график спектра входного сигнала, ограничив масштаб по амплитуде значением 0,5 В:
р [seq([j*fs/(T+l),abs(H[j+i]+11[j+i]*I)],j=0..T/2)]:
q :« [seq([j*fs/(T+l),abs(ro[j+i]+1o[j+i]*I)],j=0..T/2)]:
plot(p, frequency=0..fs/2,y=0..0.5,1abels=[4acioia,V]. 1111е='Частотный спектр входного сигнала',col or«black);
Этот график представлен на рис. 17.23. Из него хорошо видно, что спектральный состав входного сигнала представлен только нечетными гармониками, амплитуда которых убывает по мере роста номера гармоники. Пятая гармоника на частоте 2500 Гц находится посередине полосы пропускания фильтра, ограниченной граничными частотами фильтра 2300 и 2700 Гц. Заметны также беспорядочные спектральные линии шума сигнала в пределах полосы прозрачности фильтра.
Теперь построим график спектра выходного сигнала:
pl ot(q, frequency.. fs/2,^0..0.5,1 abel 5«[частота,V], tltle^'MacioTHbiCi спектр выходного сигнала', col ог®Ы ack);
Он представлен на рис. 17.24. Хорошо видно эффективное выделение пятой гармоники сигнала и прилегающей к ней узкой полосы шумового спектра.
Частотный спектр входного сигналаЧастотный спектр входного сигналаРис. 14,23, Спектрограмма входного сигналаРис. 14,23, Спектрограмма входного сигнала0 5: 0.4;0 з-0.10*0 5: 0.4;0 з-0.10*Частотный спектр выходного сигналаЧастотный спектр выходного сигнала10002000 частота 30004000500010002000 частота 300040005000
Частотный спектр входного сигнала
Частотный спектр входного сигнала
Рис. 14,23, Спектрограмма входного сигнала
Рис. 14,23, Спектрограмма входного сигнала
0 5: 0.4;
0 з-
0.1
0*
0 5: 0.4;
0 з-
0.1
0*
Частотный спектр выходного сигнала
Частотный спектр выходного сигнала
10002000 частота 300040005000
10002000 частота 300040005000
Рис. 17.24. Спектрограмма выходного сигнала цифрового фильтра
Приведенные данные свидетельствуют, что спроектированный фильтр полностью отвечает заданным требованиям и обеспечивает уверенное выделение пятой гармоники зашумленного меандра. По образу и подобию данного документа можно выполнить проектирование и других видов цифровых фильтров.
Моделирование цепи на туннельном диоде
А теперь займемся моделированием явно нелинейной цепи. Выполним его для цепи, которая состоит из последовательно включенных источника напряжения Es, резистора Rs, индуктивности L и туннельного диода, имеющего N-образную вольтамперную характеристику (ВАХ). Туннельный диод обладает емкостью С, что имитируется конденсатором С, подключенным параллельно туннельному диоду. Пусть ВАХ реального туннельного диода задана выражением:
restart:
А: = *3: а:=10: В::=1*10А(-8): Ь:=20:
Id:«Ud->A*Ud*exp(-a*Ud)+B*(exp(b*Ud-l));
Id := Ud т A Ud e + В e
Построим график BAX:
plot(Id(Ud), Ud«-.02..0.76,color^black);
Этот график представлен на рис. 17.25. Нетрудно заметить, что ВАХ туннельного диода не только резко нелинейна, но и содержит протяженный участок отрицательной дифференциальной проводимости, на котором ток падает с ростом напряжения. Это является признаком того, что такая цепь способна на переменном токе отдавать энергию во внешнюю цепь и приводить к возникновению колебаний в ней различного типа.
Работа цепи описывается системой из двух дифференциальных уравнений:
di/dt^(Es-i(t)*Rs-u(t))/L du/dt-(i(thId(u(t))/C
Рис. 17.25. ВАХ туннельного диода
Пусть задано 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*10A(-9):
Составим систему дифференциальных уравнений цепи и выполним ее решение с помощью функции dsol ve:
se:-diff(i(t).t)=(Es-1(t)*Rs-u(t))/L, diff(u(t),t)=(1(t)-Id(u(t)))/C;
se:=^ i( /) =.Н66666667108- 500000000i(/)-^^^иС;),
^u(/)= 100000000000i( /) - .300000000010" u(/)e(-iOu(,n- 1000e<2°u<,)'"
F:s=dsolve({se, 1 (0)^0^(0)«0}.{1 (t) ,u(t)}.type=numer1c, method^cl ass leal, stepsize-10A(- 11). output-Hstprocedure):
7^:= [r= (proc (r) ... end proc ), u(r) = (proc (r) ... end proc ),
i(f)二(proc ⑺••• end proc )]
Поскольку заведомо известно, что схема имеет малые значения L и С, мы задали с помощью парметров достаточно малый шаг решения для функции dsol ve — stepsize=10*(-ll) (с). При больших шагах возможна численная неустойчивость решения, искажающая форму колебаний, получаемую при моделировании. Используя функции odeplot и di spl ay пакета plots, построим графики решения в виде временных зависимостей u(t) и 10*1 (t) и линии, соответствующей напряжению Es источника питания;
gu:=odeplot(F,[t,u(t)],0..tm,color®black, labels=['t\'u(t),10*i(t)']):
gi:Modeplot(F,[t,10*i(t)]t0..tm.colpr^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«black,
labels^CUd.Id]);
gpp:^odeplot(F,[u(t),1(t)],0,.tm.color^blue):
display(gv.gpp);
Фазовый портрет колебаний показан на рис, 17.27.
Рис. 17.27. Фазовый портрет колебаний на фоне ВАХ туннельного диода и линии нагрузки резистора Rs
О том, что колебания релаксационные можно судить по тому, что уже первый цикл колебаний вырождается в замкнутую кривую — предельный цикл, форма которого заметно отличается qt эллиптической.
Итак, мы видим, что данная цепь выполняет функцию генератора незатухающих релаксационных колебаний. Хотя поставленная задача моделирования цепи на туннельном диоде успешно решена, в ходе 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).
"2 г - 2「2 г! г +「2 ri + rl г )"2 г - 2「2 г! г +「2 ri + rl г )I 田 Maple7 - (duamint mwi - (Setvef 1|]I 田 Maple7 - (duamint mwi - (Setvef 1|]Г ^|x 阔葡热Г ^|x 阔葡热<^ £S»' ^ W W ?W ^'^"^ 'Э>^' Waw W、“、、、、:、、 у[> restart;[> ul:™t->exp(-t/taul)*(sin(t/tau2)):[> a:=theta->exp(-theta/tau):> u2(t):=ul(0)*a(t)+lnt(diff(ul(theta)ztheta)*a(t-theta),theta™0. .t);<^ £S»' ^ W W ?W ^'^"^ 'Э>^' Waw W、“、、、、:、、 у[> restart;[> ul:™t->exp(-t/taul)*(sin(t/tau2)):[> a:=theta->exp(-theta/tau):> u2(t):=ul(0)*a(t)+lnt(diff(ul(theta)ztheta)*a(t-theta),theta™0. .t);Рис. 17.29. Расчет реакции дифференцирующей цепи на синусоидальный сигнал с экспоненциально уменьшающейся амплитудойРис. 17.29. Расчет реакции дифференцирующей цепи на синусоидальный сигнал с экспоненциально уменьшающейся амплитудой> t aul:=l.:tau2: = .2:tau: = ,5: plot( [ul(t),a(t),u2(t)I,t=0. .5,color=black);> t aul:=l.:tau2: = .2:tau: = ,5: plot( [ul(t),a(t),u2(t)I,t=0. .5,color=black);
"2 г - 2「2 г! г +「2 ri + rl г )
"2 г - 2「2 г! г +「2 ri + rl г )
I 田 Maple7 - (duamint mwi - (Setvef 1|]
I 田 Maple7 - (duamint mwi - (Setvef 1|]
Г ^|x 阔葡热
Г ^|x 阔葡热
<^ £S»' ^ W W ?W ^'^"^ 'Э>^' Waw W、“、、、、:、、 у
[> restart;
[> ul:™t->exp(-t/taul)*(sin(t/tau2)):
[> a:=theta->exp(-theta/tau):
> u2(t):=ul(0)*a(t)+lnt(diff(ul(theta)ztheta)*a(t-theta),theta™0. .t);
<^ £S»' ^ W W ?W ^'^"^ 'Э>^' Waw W、“、、、、:、、 у
[> restart;
[> ul:™t->exp(-t/taul)*(sin(t/tau2)):
[> a:=theta->exp(-theta/tau):
> u2(t):=ul(0)*a(t)+lnt(diff(ul(theta)ztheta)*a(t-theta),theta™0. .t);
Рис. 17.29. Расчет реакции дифференцирующей цепи на синусоидальный сигнал с экспоненциально уменьшающейся амплитудой
Рис. 17.29. Расчет реакции дифференцирующей цепи на синусоидальный сигнал с экспоненциально уменьшающейся амплитудой
> t aul:=l.:tau2: = .2:tau: = ,5: plot( [ul(t),a(t),u2(t)I,t=0. .5,color=black);
> t aul:=l.:tau2: = .2:tau: = ,5: plot( [ul(t),a(t),u2(t)I,t=0. .5,color=black);
Обратите внимание на то, что выражение для u2(t), получаемое с помощью интеграла Дюамеля, стало намного сложнее. Тем не менее получено как аналитическое выражение для реакции цепи u2(t), так и графики ul(t), a(t) и u2(t). Они показаны внизу графика.
Что нового мы узнали?
В этом уроке мы научились:
О Оценивать возможности Maple 7 в решении конкретных прикладных задач.
О Выбирать аппроксимацию для сложной функции по заданной точности.
О Моделировать различные физические явления (полет камня, движение частицы в магнитном поле и др.).
О Моделировать и проектировать различные электронные схемы (усилителя, аналогового и цифрового фильтра, нелинейной цепи на туннельном диоде).
О Применять интеграл Дюамеля для расчета переходных процессов в линейных цепях.
Заключение
Программа Maple корпорации Waterloo Maple Inc. — патриарх в мире систем компьютерной математики. Эта система, снискавшая себе мировую известность и огромную популярность, является одной из лучших среди систем символьной математики, позволяющих решать математические задачи в аналитическом виде. Эта книга познакомила читателей с новейшей версией Maple — Maple 7. Она вобрала в себя не только обширные и мощные возможности предшествующих реализаций системы, но и предоставила в распоряжение пользователя ряд новых возможностей, Прежде всего это целый букет пакетов: CurveFitting, PolynomialTools, OrthogonalSeries и др.
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.
Дьяконов В. II. 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.
Плис А И., Сливина Н.А. 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., Lahahn G” Vorkoetter S M.. Maple 6. Programming Guide. Waterloo Maple Inc., 2000.
Дэвенпорт Дж., Сирэ И” Турнье 3.. Компьютерная алгебра. Системы и алгоритмы алгебраических вычислений. М.: Мир, 1991.
Саймон Барри. Символьная математика: новые времена — новые формы // PC Magazine/RE. 1992. № 5.
Гантмахер Ф. Теория матриц. М.: Наука, Физматлит, 1988.
Справочник по специальным функциям с формулами, графиками и математическими таблицами / Под ред. М. Абрамовица и И. С тиган. М.: Наука, Физматлит, 1979.
Корн Г., Корн Г. Справочник по математике для научных работников и инженеров. М.: Наука, 1973.
Воднев В. Т„ Наумович А. Ф., Наумович Я.⑦.Основные математические формулы. Минск: Высшая школа, 1988.
Moon Р., Spencer D Е Field Theory Handbook, 2nd Ed. Berlin: Sprniger-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
о продукции фирмы MapIeSoft, 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
симметричная, 54 9
след, 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
фуикциопальные, 23О
прерывания quit, done, stop, 263
операции
векторные и матричные, 556
матричные в пакете Mallab, 564
матричные пакета
LinearAlgebra, 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
uepcMcuieinic маркера ввода, 54 пере1[азначснпс определений, 282 перестановка
слагаемых, 290
сомножителей, 293
поддиагон^ть, 549
подстановка
определение, 368
с номо1Цыо функций acid, mul и seq, 367
показ э;[емсптов документа, 178 п осн сдоватслыюсть
бесконечно!, 289
произведение членов, 291
с заданным пределом, 289
с флкслрованиьвг числом членов. 288
предел функции в точке, 310 преобразование
выражений в тождествепныс
формы, 361
списков в векторы п матрицы, 246
строк в выражения, 252
примеры
создания н лримслепия моду.тя, 283 оперши с мачрицами пакета IlnaJg, 556 работы с линейными
функциональными системами, 569 решения СЛУ с двумя
уравнениями, 320
принтеры, 139
присваивание переменной значения функции, 254
проблема разбухания результатов вычислений, 65
проверка решения уравнений, 318 производная
высокого порядка, 293
определение, 293
функции двух переменных, 294
процедура
задание, 263
интегрирования по частям, 383
определение, 263
вложенная, 382
общая форма, 270
рекурсивная, 268
процедуры-функции, 263
русскоязычные надписи в элементах интерфейса, 136
рядьг, 311
Мак;юрепа, 313
преобразование, 312
Тейлора, 312, 313
работа
с отладчиком, 273
со справочной системой, 87
расположение окон
вертикальное, 194
горизонтальное, 194
каскадное, 192
мозаика, 193
расширение выражений, 374
редактирование объекта, 170
редактор документов, 38
решение, 559
квадратного уравнения, 65
кубического уравнения, 65
неполной СЛУ, 323
неравенств, 325
одиночных уравнений, 317
систем линейных уравнений, 558
систем линейных уравнений в пакете Linear Algebra, 562
СЛУ с помощью функции solve, 320
СЛУ с тремя уравнениями, 321
СЛУ с четырьмя уравнениями, 323 специальных видов уравнений, 329 трансцендентных уравнений, 323 тригонометрических уравнений, 319 уравнений в численном виде, 328 уравнений и неравенств, 316 уравнений с линейными
операторами, 327
уравнений со специальными функциями, 324
функциональных уравнений, 327
решения
уравнений периодические, 319
свойства модуля, 283 секции
закрытие всех, 183
и подсекции, 180
раскрытие, 184
утгравлеппе показом, 181
синтаксис, 56
система
С1[равочная, 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
линейной алгебры пакета Iinalg, 551
линейных функциональных
систем, 568
логарифмические, 238
математические, 233
обратные гиперболические, 238
обратные тригонометрические, 236
пакета Linear Algebra, 560
пакета Matlab, 564
подстановки subs и subsop, 368
пользователя 254
с отдельным вектором и матрицей, 555
с элементами сравнения, 240
специальные математические, 241
степенные, 238
тригонометрические, 234
целочисленные, 234
элементарные, 233、
инертная, 60
как объект, 55
основные понятия, 54
пользователя, 58
электронные таблицы (продолжение) автоматическое заполнение, 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
ц
Центр применений Maple, 102Центр применений Maple, 102
Центр применений Maple, 102
Центр применений Maple, 102
числа Фибоначчи, 232
экспорт файлов, 137
электронные таблицы
адресация ячеек, 154
вставка шаблона, 155
определение, 154
Cassiopeia А22Т, 127
Character, команда, 166
Clipboard, буфер обмена, 142
Close АП Help, команда, 197
Close АП, команда, 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
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
isokt, фу[1кция решеннх целочисленных уравнений, 331
Limit, инертная функция вычисления предела, 310
limit, функция вычисления предела, 310
м
тар и тар2, функции подстановки, 366
Maple
интегрированная система, 35
система компьютерной алгебры, 34
Maple 7
запуск, 49
новые возможности, 87
установка, 43
Maple Input, команда, 154
Maple Powertools, инструме[[та.71ьный
пакет, 109
MathML, 119
MathML Viewer, 120
MATLAB, 563
matrix, функция задания матриц, 555
method, параметр указания метода, 375
msolvc, функция решения уравнений по модулю, 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
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 АП, команда, 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
Undo, команда, 143
Use system default, флажок, 186
V
vector, функгхия задания вектора, 555
View, меню, 73, 172
W
Web-сервер
фирмы MapIeSoft, 81
What's New, команда, 87
whattype, функция контроля типов
выражегтий, 364
while, оператор цикла, 261, 262
WhittakerM, специальная функция, 302
Windows, меню, 192
Z
Zoom Factor, команда, 175Zoom Factor, команда, 175
Zoom Factor, команда, 175
Zoom Factor, команда, 175
unapply, задание функций пользователя, 255
В.Дъяконов