含矩阵和向量的表达式的求值

你可以逐元素(使用运算符)对矩阵和向量执行数学运算,如加减乘除。对于这些运算,两个对象必须为相同的类型并具有相同的维数。矩阵/向量的每个成员与第二矩阵/向量的对应元素交互。

作为第二项(乘数、减数或除数),你还可以使用对应类型(doublefloatcomplex)的标量。在此情况下,将在考虑该标量的情况下处理矩阵或向量的每个元素。

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;   // 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;

原位运算通过将结果放入其中而修改原始矩阵(或向量),不同于常规二进制运算,后者其中操作数保持不变,并为结果创建一个新对象。

此外,矩阵和向量可作为参数传递给大部分 数学函数。在此情况下,矩阵或向量逐元素处理。例如:

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]]
*/

对于 MathModMathPow,第二个参数可以是标量或矩阵,或者是适当大小的向量。