Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
чм и maple эф.doc
Скачиваний:
5
Добавлен:
01.05.2025
Размер:
2.02 Mб
Скачать

Пакет LinearAlgebra

Все команды пакета LinearAlgebra можно вызывать непосредственно по имени, предварительно подключив все его команды функцией

> with(LinearAlgebra);

Основные типы данных

Основные типы данных, с которыми работают команды пакета LinearAlgebra, являются скаляры, представляющие как числа, так и алгебраические выражения, а также матрицы и векторы.

Конструктором матриц является команда Matrix() (обязательно с заглавной буквы).

Создание матриц

> Matrix(2);

> Matrix(2,3);

> Matrix(1..1,1..4,6);

> Matrix([[1,2,3],[4,5,6]]);

> Matrix(2,(i,j)->x^i+y^j);

Создать вектор можно конструктором Vector().

В пакете LinearAlgebra различаются векторы-столбцы и векторы-строки. Их можно определять, задавая соответствующее значение последнего параметра: column или row. Первый параметр задает размерность вектора.

Создание векторов

> Vector(2);

> Vector[row](1..3,5);

> Vector([1,2,3]);

> Vector(2,i->x^i);

Разработчики пакета LinearAlgebra предоставили пользователю возможность использования краткой формы задания векторов и матриц:

<a,b,c> создает матрицу или вектор по строкам;

<a|b|c> создает матрицу или вектор по столбцам.

Если величины, задаваемые в угловых скобках, не являются скалярами, то создается матрица, в противном случае вектор.

Краткая форма задания векторов и матриц

> V1:=<1,2,3>; # Создание вектора-столбца

> V2:=<1|2|3>; # Создание вектора-строки

> M1:=<<1|2>,<3|4>>; # Создание матрицы по строкам

> М2:=<<1,3>|<2, 4>>; # Создание матрицы по столбцам

> <М2|M1>; # Создание матрицы из двух других

Для создания специальных типов матриц и векторов — единичных, нулевых, матриц и векторов констант и скалярных — можно использовать специальные конструкторы, хотя объекты указанных типов можно создать и при помощи общих конструкторов.

Специальные типы матриц

> IdentityMatrix(2,2); # Единичная матрица

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

> Matrix(15,15,(i,j)->i*j);

Для просмотра подобных векторов и матриц в Maple включена специальная программа просмотра структурированных данных (Structured Data Browser), которую можно вызвать щелкнув дважды в области вывода (на матрицу).

Элементарные операции с матрицами и векторами

Основные операции с матрицами в пакете LinearAlgebra выполняются проще, чем такие же в пакете linalg.

Элементарные операции с векторами и матрицами

> M1:=<<1|2>,<3|4>>;

> M2:=<<10|7>,<8|15>>;

> M1+M2;

> M1-M2;

> 3.1*M1+5*M2;

Так как произведение матриц (имеется в виду операция скалярного умножения) не является коммутативной, то использование операции коммутативного умножения (*) для векторов и матриц приводит к ошибке. Коммутативное умножение можно использовать для перемножения скаляра и матрицы или вектора. В этом случае все элементы этих объектов умножаются на соответствующий скаляр:

> 4*<<7,8>| <1,6*t>>;

Выполнить некоммутативное умножение в Maple можно операцией, символом которой является точка (.). Она никогда не меняет сомножители местами, поэтому произведения x.y.z и x.z.y не являются тождественными:

Скалярные произведения векторов и матриц

> <1,3>.<4|6>; # Вектор-столбец умножается на вектор-строку

> <4|6>.<1,3>; # Вектор-строка умножается на вектор-столбец

> <<3,-1>|<-8,15>|<9,10>>.<<1,x,y>|<4,-7,2>>;

# Матрица 2x3 умножается на матрицу 3x2

Для получения степени квадратной матрицы можно последовательно применить операцию скалярного умножения необходимое число раз или операцию возведения в степень (^):

> M:=<<2,8>|<7,0.5>>;

> M.M.M.M.M;

> M^5;

Показатель степени может быть и отрицательным целым числом, что позволяет вычислять обратную матрицу и ее степени:

> M^(-1);

> %.M;

Для выделения элементов матрицы и ее подматриц используется индексная запись, причем в качестве индекса можно применять диапазон, что позволяет выделять целые блоки исходной матрицы:

> M:=Matrix(5, (i,j)->3*i-j);

> M[3,2];

> M[3,1..-1];

> M[1..-1,2];

> M[2..3,2..4];

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

Команды выполнения операций над матрицами и векторами

Название команды

Описание

DeleteRow

Удаление строки матрицы

DeleteColumn

Удаление столбца матрицы

Row

Выделение строки матрицы

Column

Выделение строки матрицы

SubMatrix

Выделение подматрицы из заданной матрицы

SubVector

Выделение подвектора из заданного вектора

ScalarMultiply

Умножение матрицы/вектора на скаляр

MatrixVectorMultiply

Скалярное произведение матрицы на вектор-столбец

DeleteCplumn

Удаление строки матрицы

VectorMatrixMultiply

Скалярное произведение вектора-строки на матрицу

MatrixMatrixrMultiply

Скалярное произведение матрицы на матрицу

Matrixlnverse

Вычисление обратной матрицы

Determinant

Вычисление определителя матрицы

Minor

Выделение миноров матрицы

ConditionNumber

Вычисление числа обусловленности матрицы

Eigenvalues

Вычисление собственных значений матрицы

Eigenvectors

Вычисление собственных векторов