Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Массивы, векторы и матрицы



Массив в 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; Прочитано: 204 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.007 с)...