Действия с матрицами
Основная часть команд для решения задач линейной алгебры содержится в библиотеке 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]);
Сложение двух матриц одинаковой размерности осуществляется теми же командами, что и сложение векторов:
evalm(A+B)
matadd(A,B).
Произведение двух матриц может быть найдено с помощью двух команд:
evalm(A&*B);
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=Е, где Е единичная матрица, можно вычислить двумя способами:
evalm(1/A);
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).
К треугольному виду матрицу А можно привести тремя способами:
команда gausselim(A) приводит матрицу А к треугольному виду методом Гаусса;
команда ffgausselim(A) приводит матрицу А к треугольному виду методом Гаусса без деления. Эта команда предпочтительней для работы с символьными матрицами, так как не производит нормировку элементов и исключает возможные ошибки, связанные с делением на нуль;
команда 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);