![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Массив в Maple представляет собой разновидность табличной величины, где каждая размерность задана целочисленным диапазоном. Элементами массивов могут быть константы, переменные, выражения, списки и иные объекты. Для формирования массивов служит команда вида
array( indexfcn, bounds, list ).
Здесь indexfcn – необязательный параметр, задающий свойства массива, может принимать значения symmetric, antisymmetric, sparse, diagonal, identity или содержать имя процедуры, задающей индексацию массива. Этот параметр задает тип определяемого матрицы или вектора: симметричная (Аij=Aji), антисимметричная (Aij=-Aji), разреженная, диагональная, единичная соответственно. Если этот параметр не задан, то используется "обычная" индексация массива;
bounds – размерности. Если этот параметр опущен, то элементы массива индексируется в соответствии со списком значений bounds;
list – список значений элементов массива. Этот параметр может содержать список уравнений, список значений (одномерных) или вложенный список списков. Если этот параметр отсутствует, то создаётся массив индексных переменных с не заданными конкретными значениями.
.Для формирования одномерных массивов (векторов) в этой команде указывается один интервал a .. b изменения индексов
array( a .. b, list ).
Для формирования двумерных массивов (матриц) эта команда записывается в виде
array( a .. b, c .. d, list ),
где a .. b – интервал номеров строк, c .. d – номеров столбцов.
Замечание. Не путайте одномерные и двумерные списки с векторами и матрицами. Все объекты, созданные операторов array, имеют тип array. Кроме того, в зависимости от размерности массива, имеют один из типов:
vector – одномерный массив;
matrix – двумерный массив.
Для обращения к отдельным структурным элементам массива можно использовать функцию op. Так, если массив А был предварительно описан оператором array, то обращение
оp ( A )
возвращает фактическую структуру массива.
Обращение вида
оp (1, eval ( A ))
возвращает значение параметра indexfcn, если такой был определен. Если indexfcn не был определен, то ничего не возвращается.
Обращение вида
оp (2, eval ( A ))
возвращает значение интервалов изменения индексов (параметр bounds).
Обращение вида
ор (3, eval ( A ))
возвращает значение параметра list, т.е. список, определяющий содержимое массива.
Для эволюции арифметических выражений, содержащих операции с векторами или матрицами используется оператор evalm.
Для сложения двух матриц (векторов) A и B одинаковой размерности можно использовать две команды: add(A, B) или evalm(A+B), причём для команды существует расширенный вариант: add(A, B, c, d ) - сложение матриц (векторов) A и B со скалярными множителями c и d, т. е. Вычисляется выражение (c* A +d* B).
Умножить матрицу A на матрицу (векторов) B тоже можно двумя способами: multiply(A, B) или evalm(A &* B). Возведение матрицы A в степень n осуществляется командой evalm(A, n ). Обратную матрицу к матрице A можно вычислить двумя способами: inverse(A) и evalm(1 / A). Транспонировать матрицу A можно при помощи команды transpose(A).
Чтобы вычислить определитель матрицы A, достаточно выполнить команду det(A) из пакета linalg. Ранг матрицы A вычисляется командой rank(A). Для вычисления чмсла обусловности используется команда cond(A), а для вычисления следа – команда trace(A).
Примеры:
> x :=array( 1 .. 3 ,[ 1, 2, 3 ]): x1 :=array( 1 .. 3 ,[ a, b, c] ):op( x );op( 2 ,eval( x ));
[1, 2, 3]
1.. 3
> x+x1; evalm( x + x1 );
x+x1
[1 + a, 2 + b, 3 + c]
> m :=array( 1 .. 2, 1 .. 2 ,[[ a, b ],[ c, d ]]);
> m ;evalm( m );type( m ,array);type( m ,matrix);
m
true
true
Дата публикования: 2014-11-29; Прочитано: 221 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!