Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алфавит и синтаксис Maple.doc
Скачиваний:
69
Добавлен:
27.04.2019
Размер:
848.38 Кб
Скачать

2.5. Наборы и операции с наборами

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

Система автоматически устраняет повторение элементов в наборе. Элементы набора могут переставляться системой.

Пример:

> {1,1,2,3}; {a*x,'abc',-23.45,a.n};

{1, 2, 3}

{abc, an, -23.45, a x}

Для наборов определены следующие операции и соответствующие им бинарные операторы.

  1. объединение элементов двух наборов, оператор вида

L1 union L2 .

Здесь L1 и L2 – два набора, элементы которых необходимо объединить.

Пример:

>L1:={1,2,3}:L2:={1,4,5}: L1 union L2;

{1, 2, 3, 4, 5}

  1. пересечение наборов L1 и L2, оператор intersect.

> L1 intersect L2;

{1}

  1. исключение из набора L1 элементов набора L2 , оператор minus:

> L1 minus L2;

{2, 3}

2.6. Списки и операции со списками

Списком в Maple называется упорядоченная последовательность выражений, заключенная в квадратные скобки.

Система сохраняет порядок, в котором задан список. Повторение элементов не устраняется.

Пример:

> [1,2,3,1]; [{c,a,t},{d,o,g}];

[1, 2, 3, 1]

[{c, a, t}, {d, o, g}]

Для списков определены следующие операции и соответствующие им функции.

  1. Извлечение из списка L элементов по заданному правилу (условию) l, оператор вида

select (l, L) или select(l, L , b1, ..., bn) .

Здесь b1, ..., bn – необязательные параметры, содержащие дополнительные данные для условия. Пример типичного использования этой команды – выделение части выражения, содержащей или не содержащей некоторую переменную.

Например, выберем из списка [8, 2, 95, Pi, sin(9)] элементы, значения которых больше трех. Зададим правило и список, а затем воспользуемся оператором select.

> L:=[8,2,95,Pi,sin(9)]; l:=x->is(x>3);

L := [8, 2, 95, Pi, sin(9)]

l := x -> is(3 < x)

> select(l,L);

[8, 95, Pi]

  1. Удаление из списка L элементов, удовлетворяющих условию l; оператор вида

remove(l, L) или remove(l, L , b1, ..., bn) .

Параметры здесь имеют тот же смысл, что и для команды select.

Пример:

> remove(l,L);

[2, sin(9)]

  1. Объединение двух списков без указания правила объединения. Эту операцию можно осуществить, выделив с помощью оператора op последовательности выражений, входящих в список:

> [op(L1),op(L2)];

[1, 2, 3, 1, 4, 5]

  1. Объединение двух списков по задаваемому правилу. Такая операция осуществляется функцией вида

zip(f,u,v) или zip(f,u,v,d) .

Здесь f – бинарная функция, задающая правило объединения, u,v – списки или одномерные массивы, d – значение. Эта функция, для создания нового списка (вектора) r, применяет бинарную функцию f к компонентам двух списков (векторов) u и v по следующим правилам. Если m - длина u, и n - длина v затем, то длина списка (вектора) r - минимум из m и n, а его элементы r[i]=f(u[i], v[i]), i=1..min(m, n). Значение необязательного четвертого параметра d, используется как значение по умолчанию для f, когда длина одного из параметров u или v меньше чем другого. В этом случае длина r равна максимуму длин u и v. Элементы r[i]=f(u[i],v[i]) для i=1..min(m,n) и r[i]=f(t[i],d) для i=1+min(m,n)..max(m,n), где t – один из параметров u или v, имеющий большую длину.

Примеры:

> X:=[seq(x,x=-10..10)]: Y:=[seq(x^2,x=-10..10)]:

> l:=(x,y)->[x,y]:

> F:=zip(l,X,Y);

F := [[-10, 100], [-9, 81], [-8, 64], [-7, 49], [-6, 36], [-5, 25],

[-4, 16], [-3, 9], [-2, 4], [-1, 1], [0, 0], [1, 1], [2, 4],

[3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81],

[10, 100]]