Дьяконов Владимир Павлович
Шрифт:
Глава 10
Типовые средства программирования
По существу все описанные выше средства (операторы, команды и функции) систем Maple 9.5/10 являются компонентами языка программирования системы Maple. Но есть ряд типовых средств программирования (функции пользователя, условные выражения, циклы, средства вывода, маплеты и др.), которые и рассматриваются в данной главе [23, 51, 52]. Применение таких средств существенно расширяет возможности систем Maple в решении ряда математических и научно-технических задач.
10.1. Задание функций
10.1.1. Задание функции пользователя
Хотя ядро Maple 9 5/10, библиотека и встроенные пакеты расширения содержат свыше 3500 команд и функций, всегда может оказаться, что именно нужной пользователю (и порою довольно простой) функции все же нет. Тогда возникает необходимость в создании собственной функции, именуемой функцией пользователя. Для этого используется следующая конструкция:
После этого вызов функции осуществляется в виде name(х,у,…), где (x,y,…) — список формальных параметров функции пользователя с именем name. Переменные, указанные в списке формальных параметров, являются локальными. При подстановке на их место фактических параметров они сохраняют их значения только в теле функции (expr). За пределами этой функции переменные с этими именами оказываются либо неопределенными, либо имеют ранее присвоенные им значения.
Следующие примеры иллюстрирует сказанное (файл p1):
Нетрудно заметить, что при вычислении функции m(х,у) переменные х и у имели значения 3 и 4, однако за пределами функции они сохраняют нулевые значения, заданные им перед введением определения функции пользователя. Использование хотя бы одного параметра функции в виде числа с плавающей точкой ведет к тому, что функция возвращает результат также в виде числа с плавающей точкой.
10.1.2. Конструктор функций unapply
Еще один способ задания функции пользователя базируется на применении функции-конструктора unapply:
Ниже даны примеры такого задания функции пользователя (файл p1):
Последний пример показывает возможность проведения символьных операций с функцией пользователя.
10.1.3. Визуализация функции пользователя
В ряде случаев весьма желательна визуализация результатов выполнения функций пользователя. Порой она может давать неожиданный результат. На рис. 10.1 представлены примеры задания двух функций пользователя от двух переменных и построение их графиков с помощью функции plot3d.
При задании функций пользователя рекомендуется просмотреть их графики в нужном диапазоне изменения аргументов. К сожалению, наглядными являются только графики функций одной и двух переменных.
Рис. 10.1. Примеры задания функций пользователя двух переменных с построением их графиков
10.1.4. Импликативные функции
Другой важный класс функций, которые нередко приходится задавать — импликативные функции, в которых связь между переменными задана неявно в виде какого-либо выражения. Самый характерный пример такой функции — это выражение для задания окружности радиусаr: х²+у²=r².
Итак, импликативные функции записываются как уравнения. Соответственно их можно решать с помощью функции solve. Следующие примеры иллюстрируют задание уравнения окружности в общем и в частном (численном) виде (файл p1):