Каждый
объект Maple состоит из подобъектов известного
типа, которые также состоят из меньших
подобъектов, и так вплоть до элементарных
базисных объектов. Наглядно можно представить
каждый объект в виде древовидной структуры.
Средства Maple позволяют исследовать и
извлекать индивидуальные элементы, составляющие
объект. Эта возможность очень полезна при
оперировании большими объектами. В качестве
такого средства в Maple используются команды op и nops .
Эти команды по разному действуют на
объекты различного типа. Так, если анализируемый
объект - выражение, то команда nops сообщает
сколько подобъектов (выражений) первого уровня
находится в объекте, а команда ор может
использоваться чтобы отобразить эти подобъекты
в виде последовательности выражений. Приведем
пример:
> object:= 3*x^2+2*x-3;
> nops(object);
> op(object);
Команда ор может также
использоваться чтобы извлечь индивидуальные
элементы из объекта, а используемая рекурсивно,
может забраться еще глубже - в подобъект.
> object:= x^3 * exp ( 1)-34/Pi;
> op ( 1, object);op ( 1, op ( 1,
object));
> whattype ( op ( 2, x^2+exp (1)-3)
);
Освоившись с командами op, nops можно
создавать более сложные команды для
манипулирования элементами объекта. Например,
можно создать команду, которая будет извлекать
последний элемент выражения "object"
(созданного ранее).
> op ( nops (object), object);
Если исследуемый объект - индексная
переменная (например с именем Iname), то команда nops
(Iname) возвращает число индексов, функция op(
i,Iname) возвращает i -ый индекс, а функция op (0,Iname)
возвращает имя индексной переменной.
> nops(A[i,j]);nops(A[i][j]);
> op(1,A[i,j]);op(1,A[i][j]);
> op(0,A[i][j]);
Если исследуемый объект
функция-процедура (с именем Fname(x1,x2...)), то команда nops
возвращает число аргументов этой функции,
команда op( i,Fname(x1,x2,...)) возвращает i-тый
аргумент, а команда op( 0,FunName(x1,x2,...) - имя
функции.
> nops(F(x,y,z));op(1..3,F(x,y,z));op(0,F(x,y,z));
|