- •Вывод данных
- •Условная инструкция «if»
- •Цикл «for»
- •Цикл «while»
- •Процедуры
- •Команды ввода/вывода
- •Самостоятельные упражнения
- •Тема 5. Решение дифференциальных уравнений в системе Maple
- •Тема 6. Линейная алгебра в системе Maple
- •Матричные и векторные операции
- •Математические операции с матрицами и векторами
- •Команды работы со структурой матриц и векторов
- •Примеры применения некоторых команд линейной алгебры
- •Основные операции векторного анализа
Тема 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.
Математические операции с матрицами и векторами
linsolve(M,v) решение линейной системы алгебраических уравнений вида M∙x=v, где M – матрица.
gausselim(M) метод Гаусса для матрицы M.
eigenvals(M) вычисление собственных чисел матрицы M.
eigenvects(M) вычисление собственных векторов матрицы M; результат представляется в виде: собственное число, его кратность, затем соответствующий собственный вектор.
norm(M) вычисление нормы матрицы M.
orthog(M) проверка ортогональности матрицы M.
hermite(M,x) получение эрмитовой формы матрицы M.
angle(v1,v2) вычисление угла между векторами v1 и v2 одинаковой длины.
basis(V) определение базиса для набора векторов V.
rank(M) вычисление ранга матрицы M.