Определение операторов с помощью оператора define
Определение операторов с помощью оператора define
Большие возможности для создания операторов с заданными свойствами предоставляет специальный оператор define. Он записывается в следующей форме:
define(oper, property1, property2. ._)
Здесь ореr — имя определяемого оператора, property!, 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: