Описание пакета LinearAlgebra




Действия с матрицами

Определение матрицы.

Для определения матрицы в Maple можно использовать команду matrix(n, m, [[a11,a12,…,a1n], [a21,a22,…,a2m],…, [an1,an2,…,anm]]), где n - число строк, m – число столбцов в матрице. Эти числа задавать необязательно, а достаточно перечислить элементы матрицы построчно в квадратных скобках через запятую. Например:

> A:=matrix([[1,2,3],[-3,-2,-1]]);

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

> J:=diag(1,2,3);

Генерировать матрицу можно с помощью функции f (i, j) от переменных i, j – индексов матрицы: matrix(n, m, f), где где n - число строк, m – число столбцов. Например:

> f:=(i, j)->x^i*y^j;

> A:=matrix(2,3,f);

Число строк в матрице А можно определить с помощью команды rowdim(A), а число столбцов – с помощью команды coldim(A).

 

Арифметические операции с матрицами.

Сложение двух матриц одинаковой размерности осуществляется теми же командами, что и сложение векторов: evalm(A+B) или matadd(A,B). Произведение двух матриц может быть найдено с помощью двух команд:

  1. evalm(A&*B);
  2. multiply(A,B).

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

> A:=matrix([[1,0],[0,-1]]);

> B:=matrix([[-5,1], [7,4]]);

> v:=vector([2,4]);

> multiply(A,v);

> multiply(A,B);

> matadd(A,B);

Команда evalm позволяет также прибавлять к матрице число и умножать матрицу на число. Например:

> С:=matrix([[1,1],[2,3]]):

> evalm(2+3*С);

 

Определители, миноры и алгебраические дополнения. Ранг и след матрицы.

Определитель матрицы А вычисляется командой det(A). Команда minor(A,i,j) возвращает матрицу, полученную из исходной матрицы А вычеркиванием i -ой строки и j -ого столбца. Минор Mij элемента aij матрицы А можно вычислить командой det(minor(A,i,j)). Ранг матрицы А вычисляется командой rank(A). След матрицы А, равный сумме ее диагональных элементов, вычисляется командой trace(A). 7

> A:=matrix([[4,0,5],[0,1,-6],[3,0,4]]);

> det(A);

> minor(А,3,2);

> det(%);

-24

> trace(A);

 

Обратная и транспонированная матрицы.

Обратную матрицу А- 1, такую что А- 1 А = АА- 1= Е, где Е - единичная матрица, можно вычислить двумя способами:

  1. evalm(1/A);
  2. inverse(A).

Транспонирование матрицы А – это изменение местами строк и столбцов. Полученная в результате этого матрица называется транспонированной и обозначается А'. Транспонированную матрицу А' можно вычислить командой transpose(A).

Например, используя заданную в предыдущем пункте матрицу А, найдем ей обратную и транспонированную:

> inverse(A);

> multiply(A,%);

> transpose(A);

 

Выяснение типа матрицы.

Выяснить положительную или отрицательную определенность матрицы можно при помощи команды definite(A,param), где param может принимать значения: 'positive_def' – положительно определена (A >0), 'positive_semidef' – неотрицательно определенная , 'negative_def' – отрицательно определенная (A <0), 'negative_semidef' - неположительно определенная . Результатом действия будет константа true – подтверждение, false – отрицание сделанного предположения. Например:

> A:=matrix([[2,1],[1,3]]);

> definite(А,'positive_def');

true

Проверить ортогональность матрицы А можно командой orthog(A).

> В:=matrix([[1/2,1*sqrt(3)/2],

[1*sqrt(3)/2,-1/2]]);

> orthog(В);

true

 

Функции от матриц.

Возведение матрицы А в степень n производится командой evalm(A^n). Вычисление матричной экспоненты возможно с помощью команды exponential(A). Например:

> Т:=matrix([[5*a,2*b],[-2*b,5*a]]);

> exponential(Т);

> evalm(Т^2);

 

 

Задание 2.

  1. Даны матрицы: , , . Найти: (AB) C, det A, det B, det C, det[(AB) C ]. Наберите:

> with(linalg):restart;

> A:=matrix([[4,3],[7,5]]):

> B:=matrix([[-28,93],[38,-126]]):

> C:=matrix([[7,3],[2,1]]):

> F:=evalm(A&*B&*C);

> Det(A)=det(A); Det(B)=det(B); Det(C)=det(C);

Det(F)=det(F);

Det(A)=- 1

Det(B)=- 6

Det(C)=1

Det(F)=6

  1. Дана матрица , найти: det A, , A’, det(M 22). Наберите:

> A:=matrix([[2,5,7],[6,3,4],[5,-2,-3]]);

> Det(A)=det(A);

Det(A)=- 1

> transpose(A);

> inverse(A);

> det(minor(A,2,2));

- 41

  1. Найти ранг матрицы .

> A:=matrix([[8,-4,5,5,9], [1,-3,-5,0,-7],

[7,-5,1,4,1], [3,-1,3,2,5]]):

> r(A)=rank(A);

r(A)=3

  1. Вычислить , где .

> exponential([[3,-1],[1,1]]);

  1. Дана матрица . Найти значение многочлена .

> A:=matrix([[5,1,4],[3,3,2],[6,2,10]]):

> P(A)=evalm(A^3-18*A^2+64*A);

Описание пакета LinearAlgebra

В Maple имеется пакет LinearAlgebra, ориентированный на решение задач линейной (матричной) алгебры. Он загружается соответствующей командой:

[> with(LinearAlgebra);

После выполнения этих команд система выводит на экран список процедур и функций, которыми располагает пакет LinearAlgebra.

Пакет LinearAlgebra является более мощным и совершенным по сравнению с linalg (в ранних версиях программы). Он предназначен для работы с матрицами и векторами больших размеров. Самым простым образом матрицу размером в пакете LinearAlgebra можно сформировать при помощи команды

[> Matrix(m, n, [[a[1,1],…,a[1,n]],…,[a[m,1],…,a[m,n]]]);

Приведем в табл. 3.1 назначение наиболее часто применимых процедур и функций пакета LinearAlgebra. Более полную информацию о каждой процедуре или функции можно узнать в справке, или набрав команду

[> help(имя_процедуры);


Таблица 3.1.

Название процедуры, функции Формат команды Назначение процедуры, функции
Matrix [> Matrix(m, n, [[a[1,1],…,a[1,n]],…,[a[m,1],…,a[m,n]]]); Формирование матрицы
Basis   Определяет базис для векторного пространства, заданного системой векторов
CharacteristicMatrix   Создает для квадратной матрицы ее характеристическую матрицу
CharacteristicPolynomial   Создает для квадратной матрицы ее характеристический многочлен
Determinant   Вычисляет для квадратной матрицы ее определитель
DiagonalMatrix   Создает диагональную матрицу
Eigenvalues   Вычисляет для квадратной матрицы ее собственные значения (собственные числа)
Eigenvectors   Вычисляет для квадратной матрицы ее собственные векторы (рекомендуется использовать вместе с процедурой Eigenvalues)
LinearSolve   Решает систему линейных алгебраических уравнений (СЛАУ) в матричной форме
MatrixAdd   Процедура сложения двух матриц
Matrixlnverse   Процедура нахождения обратной матрицы
MatrixMatrixMultiply   Процедура произведения двух матриц
MatrixNorm   Функция вычисления нормы матрицы
MatrixScalarMultiply   Процедура умножения матрицы на скаляр
MatrixVectorMultiply   Процедура умножения матрицы на вектор
Minor   Вычисляет минор матрицы
Normalize   Нормализует вектор
NullSpace   Возвращает нуль-пространство (ядро) матрицы
Rank   Вычисляет ранг матрицы
SylvesterMatrix   Конструирует матрицу Сильвестра из многочленов
Transpose   Вычисляет матрицу, транспонированную к данной

 


Пример 3.1. Исследовать СЛАУ с параметром (СЛАУ задана своей расширенной матрицей) и решить в каждом случае:

.

Ниже приведен текст рабочего листа по решению данной задачи (с описаниями по ходу выполнения команд).

[> restart; with(LinearAlgebra): /задаем вектор-столбцы основной матрицы/ [> a1:=Vector([2,1,3]); a2:=Vector([lambda+1,lambda,-3]); a3:=Vector([lambda-2,-3,-7]); /задаем основную матрицу и вектор-столбец свободных коэффициентов системы/ [> A:=Matrix(3,3,[a1,a2,a3]); B:=Vector([3,lambda+2,3]); /выводим определитель основной матрицы системы, решение системы в матричном виде (при значениях, в которых определитель основной матрицы не равен нулю)/ [> Delta:=Determinant(A); X:=LinearSolve(A,B); /вычисляем значения параметра , при котором определитель обращается в нуль/ [> Korni:=solve(Determinant(A)=0); [> lambda:=Korni[1]; X:=LinearSolve(A,B); Error,(in LinearAlgebra:-LA_Main:-LinearSolve) inconsistent system /Maple предупреждает, что СЛАУ при данном значении параметра несовместна/ [> lambda:=Korni[2]; X:=LinearSolve(A,B); /СЛАУ имеет бесконечное множество решений при этом значении параметра /

Пример 3.2. Найти собственные числа и соответственные собственные векторы матрицы

.

Текст рабочего листа по решению задачи имеет вид:

[> restart; with(LinearAlgebra): [> A:=Matrix(3,3,[[3,-6,9],[1,-2,3],[-3,6,-9]]); /задание исходной матрицы/ [> Add(A,-lambda): p(lambda):=Determinant(Add(A,-lambda)); /составление характеристического многочлена матрицы/ [> solve(p(lambda)=0,{lambda}); /вычисление собственных чисел матрицы/ [> v:=Eigenvalues(A); F:=Eigenvectors(A); /вычисление собственных чисел и собственных векторов матрицы с помощью процедуры Eigenvectors: первый столбец v – собственные числа матрицы, вторая матрица F содержит соответствующие собственные векторы матрицы, они расположены по столбцам!)/

 




Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: