Решение задач линейной алгебры
Численные методы для решения задач линейной алгебры в Maple реализованы в виде пакета linalg, который является
достаточно мощным инструментом этой области и содержит более ста функций. Вызов этого пакета осуществляется
командой with (linalg).
Опишем наиболее распространенные функции линейной алгебры, разделив их на три категории.
Функции определения матриц и операции с блоками матриц:
> matrix (n, m, [<список элементов>]) - создает матрицу размером nхm;
> augment (А, В) или concat (А, В) - объединяет две или более матриц горизонтально;
> delcols (А, i.. j) - удаляет столбцы с i no j в матрице А;
> delrows (A, i.. j) - удаляет строки с i по j в матрице А;
> submatrix (A, i1.. j 1, i2.. j2) - из матрицы А выделить подматрицу с i 1 поi1 строку и с i2 по j2 столбец;
> entermatrix (A) - интерактивный ввод матрицы А;
> mulcol (A, j, k) - умножение в матрице А столбца с номером j на k;
> mulrow (A, i, k) - умножение в матрице А строки с номером i на k,
> transpose (A) - транспонирование А;
> vector (n, [<список элементов>] - создает вектор размерностью n, элементы которого указаны в списке;
> scalarmul (V, k) - поэлементное умножение вектора V на k,
> crossprod (X, Z) - вычисляет векторное произведение векторов X, Z;
Пример:
with(linalg);
A:=matrix(2,2,[1,2,3,4]);
B:=matrix(2,2,[5,6,7,8]);
AB:=augment(A,B);
delcols(AB,1..1);#удаление первого столбца из АB
delrows(AB,2..2);# удаление второй строки из АВ
submatrix(AB,1..2,2..3);
C:=matrix(2,2,[2,4,6,8]);
C[2,2]+A[2,2];
evalm((A+B)&*C);
mulcol(C,1,4);
mulrow(C,2,5);
transpose(C)
diag(a,b,c);
![matrix([[a, 0, 0], [0, b, 0], [0, 0, c]])](images/7/113.gif)
Функции вычисления различных числовых характеристик матриц:
> coldim (A) - определяет число столбцов матрицы А;
> rowdirn (A) - определяет число строк матрицы А;
> row (А, к) - выделяет k-ю строку матрицы А;
> col (А, к) - выделяет k-й столбец матрицы А;
> vectdim(X) - определяет длину вектора X;
> dotprod(X, Z) - вычисляет скалярное произведение векторов X, Z ;
> det (А) - вычисляет определитель матрицы А;
> minor (A, i, j) - возвращает минор матрицы А для элемента с индексами i,j;
> rank (A) - определяет ранг матрицы А;
> trace (A) - вычисляет след матрицы А;
> norm (A) - норма матрицы или вектора A;
> cond (A) - вычисляет число обусловленности матрицы А.
Пример:
with(linalg);
A:=matrix(2,3,[1,2,3,4,5,6]);
coldim(A);#число столбцов матрицы А
rowdim(A);#число строк матрицы А
X:=col(A,3); #третий столбец матрицы А
Y:=row(A,1);#первая отрока матрицы А
vectdim(Y);#длина вектора Y
Z:=row(A,2):dotprod(Y,Z);#скалярное произведение Y и Z
M:=matrix(3,3,[1,2,2,3,4,5,6,7,8]);
det(M); #определитель
minor(M,2,3);#минор для элемента с номером 2,3
rank(M);#ранг матрицы
trace(M);#след матрицы
norm(M);#норма матрицы
cond(М);#чнсло обусловленности матрицы
![]()
Функции, реализующие численные алгоритмы решения задач линейной алгебры:
> inverse (A) - формирует матрицу, обратную к А;
> linsolve(A,b) или linsolve(A,B) - находит решение линейной системы уравнений А • х =b или
решает матричное уравнение А • Х= В;
> rref (A) - приведение матрицы А к ступенчатому виду путем элементарных операций со строками;
> cholesky (А) - выполняет разложение по Халецкому для квадратной положительно определенной матрицы А;
> LUdecomp (A) - выполняет LU-разложение матрицы А;
> QRdecornp (А) - выполняет QR-разложение матрицы А;
> eigenvals (A) - находит собственные значения квадратной матрицы А;
> eigenvects (A) - находит собственные векторы квадратной матрицы А;