Evaluación de expresiones con matrices y vectores

Puede realizar operaciones matemáticas elemento por elemento (utilice operadores) sobre matrices y vectores, como sumas, restas, multiplicaciones y divisiones. Para estas operaciones, ambos objetos deben ser del mismo tipo y tener las mismas dimensiones. Cada miembro de la matriz/vector interactúa con el elemento correspondiente de la segunda matriz/vector.

Como segundo término (multiplicador, sustraendo o divisor), también se puede utilizar un escalar del tipo correspondiente (double, float o complex). En este caso, cada elemento de la matriz o vector se procesará teniendo en cuenta ese escalar.

matrix matrix_a = {{0.1, 0.2, 0.3}, {0.4, 0.5, 0.6}};
matrix matrix_b = {{1, 2, 3}, {4, 5, 6}};
matrix matrix_c1 = matrix_a + matrix_b;
matrix matrix_c2 = matrix_b - matrix_a;
matrix matrix_c3 = matrix_a * matrix_b;   // Hadamard product (element-by-element)
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;                     // operations "in place" are possible 
matrix_a /= 2;

Las operaciones in situ modifican la matriz (o vector) original colocando en ella el resultado, a diferencia de las operaciones binarias normales en las que los operandos no se modifican y se crea un nuevo objeto para el resultado.

Además, las matrices y los vectores pueden pasarse como parámetros a la mayoría de las funciones matemáticas. En este caso, la matriz o el vector se procesan elemento a elemento. Por ejemplo:

matrix a = {{1, 4}, {9, 16}};
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]]
*/

En el caso de MathMod y MathPow, el segundo parámetro puede ser un escalar, una matriz o un vector del tamaño adecuado.