Maple 9.5/10 в математике, физике и образовании
Шрифт:
3.1.9. Применение операторов специальных типов
Операторы в Maple описывают операции по преобразованию данных, в частности, выражений. Последние, в свою очередь, можно отнести к данным абстрактного типа. Могут быть описаны следующие типы операторов:
• неопределенные (f);
• нейтральные (&);
• процедурные;
• функциональные;
• композиционные (@).
Оператор относится к неопределенным, если он не был заранее определен. Такой оператор не выполняет никаких действий и просто повторяется в строке вывода:
> restart:f(1,2,а);
Композиционные операторы (на базе знака @) мы уже применяли. Другие типы операторов рассмотрены ниже.
3.1.10. Применение функциональных операторов
Функциональные операторы Maple-языка являются альтернативами функций и записываются в двух формах.
Нотация | Запись оператора |
---|---|
«arrow» (стрелочная) | vars -> result |
«angle bracket» (в угловых скобках) | <result | vars> |
Данные операторы могут использоваться для реализации подстановок. Например, запись х->х^2 означает подстановку х^2 на место переменной х. Возможны и такие подстановки в множественной форме:
Функциональный оператор в Maple часто используется для задания функций пользователя, которое будет рассмотрено несколько позднее.
3.1.11. Определение нейтральных операторов
Для создания нейтральных операторов (задаваемых пользователем и в момент задания неисполняемых), определяемых пользователем, служит знак амперсанда — &. Синтаксис нейтрального оператора следующий:
Имя оператора строится по правилам задания допустимых идентификаторов. Также в качестве имени может быть использована последовательность (один и более) специальных символов. В последовательности специальных символов не должно быть букв, цифр, подчеркивания, а также следующих символов:
& | {}[]:;'` # <перевод строки> <пробел>
Максимальная длина имени — 495 символов. Нейтральные операторы могут быть унарными и бинарными. Примеры задания бинарного нейтрального оператора приведены ниже:
3.1.12. Определение операторов с помощью оператора define
Большие возможности для создания операторов с заданными свойствами предоставляет специальный оператор define. Он записывается в следующей форме:
Здесь oper — имя определяемого оператора, property1, property2 и т.д. — наименования свойств. В принципе оператор define позволяет создавать операторы с новыми свойствами, которые отсутствуют у операторов и функций, встроенных в систему. Могут быть указаны следующие свойства операторов:
unary — унарный оператор;
binary — бинарный оператор;
diff — дифференциальный оператор;
linear — линейный оператор;
multilinear — множественный линейный оператор;
flat — ассоциативный оператор, для которого f(х,f(y,z)) = f(f(х, y), z) =f(х, у, z);
orderless — коммутативный симметричный оператор, такой что f(х, y) = f(y, х); antisymmetric — асимметричный оператор, такой что f(х, y) = -f(у, х); zero — нулевой оператор (например, V:=Vector(5,shape=zero) задает вектор с 5 нулевыми элементами);
identity — единичный оператор (например, M:=Matrix(3,3,shape=identity) задает единичную матрицу).
Следующий пример задает линейный оператор L:
Для задания некоторых свойств операторов можно использовать уравнения и соотношения вида f(x)=value. Чтобы свойство выполнялось для всех аргументов (или некоторого класса аргументов), используется описание forall. Так, приведенный ниже пример задает оператор F, который вычисляет n-е число Фибоначчи (n>2):
Обратите внимание на то, что соотношения fib(0)=1 и fib(1)=1 задают начальные значения целочисленного массива чисел Фибоначчи, которые нужны для реализации обычного итерационного алгоритма их нахождения — напоминаем, что очередное число Фибоначчи равно сумме двух предшествующий чисел Фибоначчи.
3.2. Работа с математическими функциями
3.2.1. Понятие о функциях
Более двух сотен лет тому назад в обиход математиков пришло понятие функции, как некоторой зависимости одной величины, например f или у, от другой величины — независимой переменной х или t. Функции стали обозначать как f(x), f(t), y(x) и т.д. Могут быть и функции ряда переменных, например вида f(х, у, z, …). Хотя эти понятия не являются полными, мы ограничимся ими, помня, однако, что функции могут быть определены в различных интервалах изменения их аргументов.