Иллюстрированный самоучитель по Maple 6/7

Определение операторов с помощью оператора define

Большие возможности для создания операторов с заданными свойствами предоставляет специальный оператор define. Он записывается в следующей форме:

define(oper, property1, property2...)

Здесь ореr – имя определяемого оператора, property1, property2 и т. д. – наименования свойств. В принципе, оператор define позволяет создавать операторы с новыми свойствами, которые отсутствуют у операторов и функций, встроенных в систему.

Могут быть указаны следующие свойства операторов:

  • unary – унарный оператор;
  • binary – бинарный оператор;
  • diff – дифференциальный оператор;
  • linear – линейный оператор;
  • multilinear – множественный линейный оператор;
  • flat – ассоциативный оператор, для которого f(x/(y,z)) = f(f(x,y),z) = f(x,y,z);
  • orderless – коммутативный симметричный оператор, такой что f(x,y) = f(y,x),
  • antisymmetric – асимметричный оператор, такой что f(x,y) = -f(y,xc);
  • zero – нулевой оператор (например, V: = Vector(5,shape=zero) задает вектор с 5 нулевыми элементами);
  • identity – единичный оператор (например, M: = Matrix(3.3,shape=identity) задает единичную матрицу).

Следующий пример задает линейный оператор L:

Иллюстрированный самоучитель по Maple 6/7 › Встроенные операторы и функции › Определение операторов с помощью оператора define

Для задания некоторых свойств операторов можно использовать уравнения и соотношения вида f(x)=value. Чтобы свойство выполнялось для всех аргументов (или некоторого класса аргументов), используется описание forall. Так, приведенный ниже пример задает оператор F, который вычисляет n-е число Фибоначчи (n > 2):

Иллюстрированный самоучитель по Maple 6/7 › Встроенные операторы и функции › Определение операторов с помощью оператора define

Обратите внимание на то, что соотношения fib(0)=1 и fib(1)=1 задают начальные значения целочисленного массива чисел Фибоначчи, которые нужны для реализации обычного итерационного алгоритма их нахождения, – напоминаем, что очередное число Фибоначчи равно сумме двух предшествующих чисел Фибоначчи.

Последний пример иллюстрирует применение системной функции time для определения времени, затраченного на вычисление значения функции fib(20). Это время задается в секундах. Нетрудно заметить, что даже для ПК с процессором Pentium II 350 МГц это время оказалось довольно значительным (более 3 с), поскольку каждое новое число Фибоначчи вычисляется заново.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.