Đánh giá biểu thức với ma trận và vector
Bạn có thể thực hiện các phép toán toán học theo từng phần tử (sử dụng toán tử) trên ma trận và vector, như cộng, trừ, nhân và chia. Đối với các phép toán này, cả hai đối tượng phải cùng kiểu và có cùng kích thước. Mỗi phần tử của ma trận/vector tương tác với phần tử tương ứng của ma trận/vector thứ hai.
Là số hạng thứ hai (số nhân, số bị trừ hoặc số chia), bạn cũng có thể sử dụng một số vô hướng của kiểu tương ứng (double
, float
, hoặc complex
). Trong trường hợp này, mỗi phần tử của ma trận hoặc vector sẽ được xử lý dựa trên số vô hướng đó.
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; // Tích Hadamard (theo từng phần tử)
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; // Các phép toán "tại chỗ" có thể thực hiện
matrix_a /= 2;
2
3
4
5
6
7
8
9
10
11
12
Các phép toán tại chỗ sẽ sửa đổi ma trận (hoặc vector) ban đầu bằng cách đặt kết quả vào đó, không giống như các phép toán nhị phân thông thường, trong đó các toán hạng không thay đổi và một đối tượng mới được tạo ra cho kết quả.
Ngoài ra, ma trận và vector có thể được truyền dưới dạng tham số cho hầu hết các hàm toán học. Trong trường hợp này, ma trận hoặc vector được xử lý theo từng phần tử. Ví dụ:
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]]
*/
2
3
4
5
6
7
8
9
10
11
12
Trong trường hợp của MathMod
và MathPow
, tham số thứ hai có thể là một số vô hướng, một ma trận hoặc một vector có kích thước phù hợp.