Сложение, вычитание, умножение
- 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;
Здесь не говорится о делении. Это сложная процедура, которая описана ниже, в разделе о системах уравнений.
Важным применением умножения матриц является вращение векторов в трехмерном пространстве. Аккуратно нарисованная картинка и тригонометрия покажут, что если вектор поворачивается против часовой стрелки вокруг оси х на угол θ (если смотреть в направлении начала координат по оси х), то новый вектор задается матрицей 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).
Правила формального синтаксиса команд линейной алгебры приведены в конце главы.