Тема 6. Линейная алгебра в системе Maple



Часть команд линейной алгебры содержится в стандартной библиотеке (т.е. доступны по умолчанию), к таким командам относятся команды: evalm, Eigenvals, Det и некоторые другие. Другие команды содержатся в пакете linalg. Пакет линейной алгебры (linalg), содержащий более 100 команд, подключается командой

> with(linalg);

Основными объектами команд линейной алгебры являются массивы (array), векторы (vector) и матрицы (matrix). Приведем примеры их эквивалентного ввода матриц.

Пример:

> array(1..2,1..3,[[a,b,c],[d,e,f]]); matrix(2,3,[a,b,c,d,e,f]);

Для ввода вектора можно также использовать два способа.

Пример:

> A:=array(1..3,[x,y,z]);

> A:=vector(3,[x,y,z]);

При вводе можно опускать часть элементов массива, матрицы, вектора. Maple заполнит вакансии переменными по умолчанию. Maple предоставляет возможность сокращенного задания симметричных, антисимметричных, разреженных, диагональных и единичных матриц. Для ввода таких матриц достаточно ввести характерные элементы и указать тип вводимой матрицы. При работе с массивами нужно помнить, что Maple следует правилу оценки последнего имени. Это означает, в частности, что если вы определили массив, а затем в строке ввода напечатали его имя, то строка вывода будет состоять из этого имени. Для выдачи содержимого массива можно использовать команды eval и op.

Нижеследующий пример иллюстрирует сказанное:

> M:=array(1..2,1..2,identity);

Здесь при помощи опции identity задается диагональная единичная матрица 2x2.

> M;

> eval(M);

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

> ?linalg

Матричные и векторные операции

add(u,v) или evalm(u+v) сложение двух векторов или матриц.

Для команды add существует расширенный вариант:

add(M1,M2,c1,c2) сложение матриц или векторов M1 и M2 со скалярными множителями c1 и с2 (c1*M1+c2*M2), причем размерности этих матриц должны быть одинаковыми.

multiply(M1,M2) или evalm(M1 &* M2) умножение матриц M1 и M2. Причем в качестве одного из параметров может быть вектор ( multiply(M1,v1) ).

> S := array([[1,2],[3,4]]):

> T := array([[1,1],[2,-1]]):

> evalm(S+2*T);

> evalm(S^2);

> evalm(sin(S));

> evalm(S &* T);

dotprod(v1,v2) скалярное произведение векторов v1 и v2.

crossprod(v1,v2) векторное произведение векторов v1 и v2.

evalm(M^n) возведение матрицы M в n-ю степень.

inverse(M) или evalm(1/M) вычисление обратной к M матрицы.

det(M) вычисление определителя матрицы M.

trace(M) вычисление следа матрицы M.

adjoint(M) вычисление сопряженной матрицы для квадратной матрицы M.

transpose(M) транспонирование матрицы M.


Дата добавления: 2022-06-11; просмотров: 19; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!