Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MAPLE.doc
Скачиваний:
221
Добавлен:
24.03.2015
Размер:
1.52 Mб
Скачать

6. Работа с последовательностями, списками, множествами. Последовательности с заданным числом членов

Простейшими являются суммы последовательностей с фиксированным числом членов. Ниже даны примеры применения этих функций (файл sum):

> restart;k:=2;

k:= 2

> Sum(k^2,k=1..4);

> sum(k^2,k=1..4);

Error, (in sum) summation variable previously assigned, second argument evaluates to k=1..4

> sum('k^2','k'=1..4);

30

> sum(1/i,i=1..100);

> evalf(%);

5.187377518

Обратите внимание, что во втором примере система отказалась от вычисления, а в третьем даже выдала сообщение об ошибке, связанную с тем, что переменной k перед вычислением сумм было присвоено численное значение 2. После заключения выражения и переменной индекса k в прямые кавычки ошибка исчезла, поскольку такая операция означает, что переменной придается неопределенное значение.

Основные функции для произведения членов последовательностей

Аналогичным образом для произведений членов f(i) некоторой последовательности, например вида

используются следующие функции:

product(f, k);

product(f, k=m..n);

product(f, k=alpha);

Product(f, k);

Product(f, k=m..n);

Product(f, k=alpha).

Обозначения параметров этих функций и их назначение соответствуют приведенным для функций вычисления сумм. Это относится, в частности, и к применению одиночных кавычек для f и k.

7. Работа с массивами, таблицами. Создание Maple-таблиц и их применение

Еще одним важным типом множественных данных являются таблицы. Они задают данные с произвольной индексацией. Для создания таблиц служит функция table, которая при вызове в простейшем виде table[] создает шаблон пустой таблицы:

> table[];

table[ ]

Пустая таблица резервирует память под данные. Когда параметром функции table является список выражений, он выводится в естественном порядке расположения элементов таблицы, но с произвольным порядком индексации:

> Т:=table ({1,2,Pi, `string`});

T: = table([1 = 1, 2 = 2, 3 = π, 4 = string])

> Т [3] ;

π

> S:=table([(one)=1,(two)=2,(three)=3]);

S := table([one = 1, three = 3, two = 2])

> S [1];

S1

> S[two];

2

> S[three];

3

> entries(S);

[1], [3], [2]

> indices(S);

[one], [three], [two]

В конце приведенных примеров показано, как можно выделить отдельные компоненты таблицы и вывести значения и индексы таблицы с помощью функций entries и indices. Следующие примеры показывают, что таблицу можно использовать для выполнения математических преобразований:

> F := table([sin=cos, cos=-sin]): op(op(F));

[cos = -sin, sin = cos]

> F[cos] (Pi/2);

-1

> F[sin] (0);

1

> evalf(cos(Pi/2));

0.

> evalf(sin(0));

0.

Следует внимательно присмотреться к этим примерам — они демонстрируют замену функции косинуса на синус со знаком «—» и синуса на косинус.

Создание массивов, векторов и матриц

Важным типом данных являются списки или листы. В Maple 9.5 они создаются с помощью квадратных скобок, например:

[1,2,3,4] — список из четырех целых чисел;

[1,2.34,5] — список из двух вещественных и одного целого числа;

[a,b, "Привет"] — список из двух символов (переменных) и строковой константы;

[sin(x), 2*cos(x),a^2-b] — список из трех математических выражений.

Для создания векторов (одномерных массивов) и матриц (двумерных массивов) служит функция array. Обычно она используется в следующих формах:

array[a..b,s1] — возвращает вектор с индексами от а до b и значениями в одномерном списке s1;

array[a..b,c..d,s2] — возвращает матрицу с номерами строк от а до b, номерами столбцов от с до d и значениями в двумерном списке s2.

Примеры задания вектора и матрицы представлены ниже:

array(1..3,[х,у,х+у]) — создает вектор с элементами x, у и х+y;

array(1..2,1..2,[[a,b],[c,d]]) — квадратная матрица 

Для создания векторов может использоваться также конструктор векторов Vector[o](d, init, ro, sh, st, dt, f, а, о) с рядом опционально заданных параметров. В этой книге эта конструкция практически не используется. Векторы и матрицы можно также задавать с помощью угловых скобок:

> V:=<a,b,с>;

> Vector[row]([a,b,с]);

[a, b, c]

> Vector[row](<a, b, c>);

[a, b, c]

> M:=<<a,b,c>|<d,e,f>>;

Имеется множество функций для работы со списками, массивами и матрицами. Они будут рассмотрены в дальнейшем. В принципе, размерность массивов, создаваемых списками, не ограничена, и массивы могут быть многомерными.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]