logo
ЭО Лаб работа 2

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

Основная часть команд для решения задач линейной алгебры содержится в библиотеке linalg. Поэтому перед решением задач с матрицами и векторами следует загрузить эту библиотеку командой with(linalg).

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

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

Сложение двух матриц одинаковой размерности осуществляется теми же командами, что и сложение векторов:

  1. evalm(A+B)

  2. 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).

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

> det(K);

1

> minor(K,3,2);

> det(%);

-24

> trace(K);

9

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

  1. evalm(1/A);

  2. inverse(A).

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

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

> inverse(K);

> multiply(K,%);

> transpose(K);

В пакете linalg имеются функции решения систем линейных уравнений, отличные от функции solve() из стандартной библиотеки. Для решения системы линейных алгебраических уравнений вида MX=B, где M – матрица, X вектор из правых частей уравнения, имеются функции linsolve(M,B).

Пусть требуется решить следующую систему уравнений

Запишем систему в матричном виде

Затем в командной строке вводим

>with(linalg)

>A:=matrix(2,1,[9,12])

>B:=matrix(2,2,[5,2,2,5])

Решаем систему уравнений BX=A:

>linsolve(B,A)

Ответ: x=1, y=2.

Из курса линейной алгебры известно, что если Ах=х, то вектор х называется собственным вектором матрицы А, а число  – собственным числом, соответствующим данному собственному вектору. Совокупность всех собственных чисел матрицы называется спектром матрицы. Если в спектре матрицы одно и тоже собственное число встречается k раз, то говорят, что кратность этого собственного числа равна k.

Для нахождения собственных чисел матрицы А используется команда eigenvalues(A). Для нахождения собственных векторов матрицы А используется команда eigenvectors(A). В результате выполнения этой команды будут получены собственные числа, их кратность и соответствующие собственные векторы.

Чтобы понять, в каком виде получаются результаты выполнения команды eigenvectors, внимательно разберитесь со следующим примером: матрица имеет 3 собственных вектора:, отвечающий собственному числукратности 1,, отвечающий собственному числукратности 1,, отвечающий собственному числукратности 1. Найдем их вMaple:

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

> eigenvectors(A);

[2,1,{[-1,0,1]}], [3,1,{[1,1,1]}], [6,1,{[1,-2,1]}]

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

Для вычисления характеристического многочлена матрицыA используется команда charpoly(A,lambda).

К треугольному виду матрицу А можно привести тремя способами:

  1. команда gausselim(A) приводит матрицу А к треугольному виду методом Гаусса;

  2. команда ffgausselim(A) приводит матрицу А к треугольному виду методом Гаусса без деления. Эта команда предпочтительней для работы с символьными матрицами, так как не производит нормировку элементов и исключает возможные ошибки, связанные с делением на нуль;

  3. команда gaussjord(A) приводит матрицу А к треугольному виду методом Гаусса-Жордана.

Характеристическую матрицу можно вычислить командойcharmat(A,lambda).

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

> U:=matrix([[3,2-I],[2+I,7]]):

> eigenvectors(U);

,

Дана матрица . Привести матрицуА треугольному виду, найти ее характеристическую матрицу.

> A:=matrix([[1,-3,4],[4,-7,8],[6,-7,7]]):

> g:=gausselim(A);

>g:=ffgausselim(A);

> F:=charmat(A,lambda);