Линейная алгебра

Искусство использования матриц и векторов для решения задач физики

Версия для печати

Сложение, вычитание, умножение

  • restart:with(LinearAlgebra):

Есть много способов выполнения этих алгебраических операций в Maple, но показан будет только один. Остальные – см. ?LinearAlgebra. Кроме того, правила формального синтаксиса команд линейной алгебры приведены в конце главы.

Для сложения двух матриц В+С размером используйте команду Add или знак +.

  • B:=Matrix([[1,2,3],[4,5,6],[7,8,9]]);
  • C:=Matrix([[3,2,1],[5,6,4],[9,7,8]]);
  • E:=Add(B,C);

или

  • E:=B+C;

Вычитание сводится к сложению с матрицей со знаком минус.

  • E:=Add(B,-C);

или

  • E:=B-C;

Очень внимательно следите за тем, чтобы сложение и вычитание имели смысл. Например:

  • F:=Matrix([[5,7],[1,3]]);
  • Add(E,F);

поскольку матрицы не одинакового размера.

Умножение матриц с помощью команды Multiply:

  • G:=Multiply(B,C);

Есть хороший способ умножения матриц, который можно найти в списке команд по запросу ?LinearAlgebra.

Можно умножать матрицы и векторы так:

  • b:=<5,6,7>;
  • Multiply(B,b);

Как и ожидалось, умножение квадратной матрицы на вектор-столбец дает вектор-столбец. Умножение вектора-строки на квадратную матрицу дает новый вектор-строку:

  • c:=Vector[row]([1,2,3]);

или в сокращенной форме:

  • c:=<1|2|3>;
  • Multiply(c,C);

Можно умножать матрицы и векторы на скаляры простым оператором умножения:

  • 3*b;
  • 5*B;

Здесь не говорится о делении. Это сложная процедура, которая описана ниже, в разделе о системах уравнений.

Задача 5.1 о повороте вектора

Важным применением умножения матриц является вращение векторов в трехмерном пространстве. Аккуратно нарисованная картинка и тригонометрия покажут, что если вектор поворачивается против часовой стрелки вокруг оси х на угол θ (если смотреть в направлении начала координат по оси х), то новый вектор задается матрицей Rx, умноженной на , где Rx задается так:

  • Rx:=Matrix([[1,0,0],[0,cos(theta),-sin(theta)],[0,sin(theta),cos(theta)]]);

Подобно этому получается вращение матриц вокруг осей y и z на углы φ и ψ:

  • Ry:=Matrix([[cos(phi),0,sin(phi)],[0,1,0],[-sin(phi),0,cos(phi)]]);
  • Rz:=Matrix([[cos(psi),-sin(psi),0],[sin(psi),cos(psi),0],[0,0,1]]);

Замечание: в знаках матрицы Ry нет ошибки. Иной знак, чем в Rx и Rz, из-за того, что вращение полностью определяется правилом правой руки для углов: направьте большой палец правой руки по оси вращения, а остальные пальцы поворачивайте в направлении положительных углов. Сделайте это для φ = π/2 и проверьте, что Ry – правильное.

Используйте эти матрицы вращения, чтобы проверить, где заканчивается вектор [1,0,0] после последовательности поворотов:

(a) на относительно оси у, затем

(b) на относительно оси х, и в конце

(c) на относительно оси z.

После получения ответа в Maple проверьте его «на пальцах» (удостоверьтесь, что координатные системы – правые). Затем возьмите тот же вектор [1,0,0], но выполните действия (вращения) в обратном порядке. Получилось ли то же самое? (Нет, – по причине того, что операции вращения не коммутативны.)

Вращение не должно изменять модуль вектора. Проверим, так ли это у нас? Модуль вектора получим командой Norm(v,2).

Правила формального синтаксиса команд линейной алгебры приведены в конце главы.