Составные математические объекты

 

Элементами составных математических объектов являются числа, имена выражения и любые другие объекты. В качестве основных составных объектов в Maple используют: последовательности, множества, списки, таблицы и некоторые другие. Например:

1. последовательности (exprseq)

> s:= 1,4,9,25;

> t:= sin, cos, tan;

> whattype(s);

Пустая последовательность обозначается NULL. Последовательности ассоциативны, т.е. складываются

> s:=1,(4,9,16),25;

> t:=s,s;

Наиболее эффективный путь создания последовательностей - это применение специальной функции seq (не применяйте для этого циклы, данная команда более эффективна, так как не создает промежуточных последовательностей). Например:

> s:=seq( i^2, i=1..5 );

С другой стороны

> s:=NULL; for i from 1 to 5 do s:=s,i^2 od;

Как видим, цикл работает медленее и занимает больше памяти. Другие примеры:

> seq( x[i], i=1..5 );

> a:=38*x^2+y*x-11;

> seq(coeff(a,x,i),i=0..degree(a,x));

> seq(D(f),f=[sin,cos,tan,exp,ln]);

2. множества ( set )

> s:={x,1,1-z,x};

> whattype(s);

Как мы видим, в множестве не может быть одинаковых элементов. Пустое множество обозначается {}. Для работы с множествами используют команды union, intersect, minus:

> {a,b} union {b,c};

> {a,b} intersect {b,c};

> {a,b} minus {b,c};

> a union b union a;

> {3,4} union a union {3,7};

> `union`({3,4},a,{3,7});

3. списки ( list )

Списки отличаются от множеств тем, что в них могут присутствовать одинаковые элементы

> List:=[x,1,1-z,x];

> whattype(List);

> [x,y,y];

> [y,x,y];

Заметим, что это разные списки! Для создания списков и множеств можно использовать команду seq, это эффективнее, чем применение циклов.

> L := [seq(x[i],i=1..4)];

> L[2];

Для добавления элемента в список

> L := [op(L),x[5]];

Для выделения части списка

> L[-3..-2];

Для сокращения списка (выбрасываем второй элемент)

> L := subsop(2=NULL,L);

Список также может состоять из списков

> L:=[[1,2],[3,4,5]];

Элементами множеств и списков могут быть так же сами множества или списки.

Для работы с множествами и списками используют следующие логические операторы:

· member

· has

· convert

> member(y, {x, y, z});

> member(y, {x*y, y*z});

> member(x*y, [x*y, w+u, y]);

> member(w, [x, y, w, u], 'k'); k;

В последнем примере мы присвоили переменной k номер элемента w в данном списке. Аналог данной команды для выражений:

> f := (a+b^3+c)^(4/3);

> has( f, a );

> has( f, b^3 );

> has( f, b^2 );

> has( f, a+b^3+c );

> has( f, a+c );

> has( f, {c,d} );

> has( f, {d,e} );

Оператор преобразования

> convert( [1,2,3,4], `+` );

> f := seq( x[i]^i, i=1..4 );

> convert([f], `*`);