Вычисление выражений с матрицами и векторами

Над матрицами и векторами можно поэлементно производить математические операции (применять операторы) — сложение, вычитание, умножение и деление. Для этого оба объекта должны быть одного и того же типа и иметь одинаковые размеры. Каждый член матрицы/вектора взаимодействует с соответствующим элементом второй матрицы/вектора.

В качестве второго слагаемого (множителя, вычитаемого, делителя) можно также использовать скаляр соответствующего типа (double, float или complex). В этом случае каждый элемент матрицы или вектора будет обработан с учетом этого скаляра.

matrix matrix_a = {{0.10.20.3}, {0.40.50.6}};
matrix matrix_b = {{123}, {456}};
matrix matrix_c1 = matrix_a + matrix_b;
matrix matrix_c2 = matrix_b - matrix_a;
matrix matrix_c3 = matrix_a * matrix_b;   // произведение Адамара (поэлементное)
matrix matrix_c4 = matrix_b / matrix_a;
matrix_c1 = matrix_a + 1;
matrix_c2 = matrix_b - double_value;
matrix_c3 = matrix_a * M_PI;
matrix_c4 = matrix_b / 0.1;
matrix_a += matrix_b;                     // возможны операции "по месту"
matrix_a /= 2;

Операции "по месту" модифицируют исходную матрицу (или вектор), помещая в неё результат, в отличие от обычных бинарных операций, в которых операнды остаются без изменений, а для результата создается новый объект.

Кроме того, матрицы и векторы можно передавать в качестве параметра в большинство математических функций. В этом случае матрица или вектор обрабатываются по элементам. Например:

matrix a = {{14}, {916}};
Print("matrix a=\n"a);
a = MathSqrt(a);
Print("MatrSqrt(a)=\n"a);
/*
   matrix a=
   [[1,4]
    [9,16]]
   MatrSqrt(a)=
   [[1,2]
    [3,4]]
*/

В случае MathMod и MathPow в качестве второго параметра может быть использован как скаляр, так и матрица или вектор соответствующего размера.