Nhân ma trận từng bước
Ở bài trước, bạn đã biến một bảng dữ liệu thành ma trận: mỗi hàng là một bản ghi, mỗi cột là một thuộc tính. Bài này ta cho hai ma trận gặp nhau. Trên bảng, tôi sẽ vẽ hàng của ma trận thứ nhất bằng một màu phấn và cột của ma trận thứ hai bằng màu khác, rồi trượt chúng vào nhau. Nhân ma trận chính là phép tính đứng sau việc tính điểm, xoay hình và cả hệ gợi ý mà bạn sẽ gặp ở module 3.
Sau bài này, bạn có thể:
- Kiểm tra kích thước hai ma trận trước khi nhân, bước quan trọng nhất và hay bị bỏ qua.
- Tính một phần tử bất kỳ của tích bằng cách lấy hàng nhân với cột.
- Làm trọn một phép nhân 2×3 với 3×2, viết ra từng bước như trên bảng.
- Giải thích vì sao AB thường khác BA.
Kiểm tra kích thước trước khi nhân
Quy tắc duy nhất cần nhớ: số cột của A phải bằng số hàng của B. Viết kích thước hai ma trận cạnh nhau, hai số ở giữa phải trùng nhau:
$$ (m \times n);(n \times p) ;\rightarrow; (m \times p) $$
Hai số ngoài cùng cho kích thước kết quả. Nếu hai số giữa không trùng, phép nhân không tồn tại, không phải "khó tính" mà là không được định nghĩa.
| A | B | Kích thước tích | Nhân được? |
|---|---|---|---|
| 2×3 | 3×2 | 2×2 | Có |
| 3×2 | 2×5 | 3×5 | Có |
| 2×3 | 2×3 | — | Không, 3 ≠ 2 |
| 1×4 | 4×1 | 1×1 | Có |
Ví dụ thật: bảng điểm 3 học sinh × 2 bài kiểm tra là ma trận 3×2. Nhân với vector trọng số 2×1 cho ra 3×1, mỗi học sinh một điểm tổng. Số cột 2 khớp số hàng 2, hợp lệ.
Bài tập nhanh 1. A là 4×2, B là 2×2. Tích có kích thước bao nhiêu? Còn B·A thì sao?
Xem đáp án
A·B là 4×2 (số giữa 2 = 2). B·A: B là 2×2, A là 4×2, số giữa là 2 và 4, không khớp, nên B·A không tồn tại. Đây là ví dụ cho thấy thứ tự ảnh hưởng cả đến việc phép nhân có tồn tại hay không.
Một ô của tích: hàng gặp cột
Mỗi ô của ma trận kết quả được tính độc lập. Ô ở hàng i, cột j bằng tích vô hướng của hàng i (ma trận A) với cột j (ma trận B): nhân từng cặp rồi cộng lại, đúng phép tính bạn đã làm ở Module 1.
Với A = [[2, 1], [0, 3]] và B = [[1, 4], [2, 1]], ô (1,1) là hàng 1 của A gặp cột 1 của B: 2·1 + 1·2 = 4. Ô (1,2) là hàng 1 gặp cột 2: 2·4 + 1·1 = 9. Cứ thế, mỗi ô là một lần "hàng trượt qua cột".
Bài tập nhanh 2. Vẫn hai ma trận trên, tính ô (2,2) của A·B.
Xem đáp án
Hàng 2 của A là (0, 3), cột 2 của B là (4, 1). Tích: 0·4 + 3·1 = 3.
Làm trọn một phép nhân, từng bước
Lấy A là 2×3 và B là 3×2:
A = [[1, 2, 3], [4, 5, 6]], B = [[1, 0], [0, 1], [2, 1]]
- Kiểm tra kích thước: A là 2×3, B là 3×2, số giữa 3 = 3, nhân được, kết quả 2×2.
- Vẽ khung kết quả 2×2 rỗng, ghi nhãn hàng 1, hàng 2 và cột 1, cột 2.
- Ô (1,1): hàng 1 của A nhân cột 1 của B: 1·1 + 2·0 + 3·2 = 7.
- Ô (1,2): 1·0 + 2·1 + 3·1 = 5.
- Ô (2,1): 4·1 + 5·0 + 6·2 = 16.
- Ô (2,2): 4·0 + 5·1 + 6·1 = 11. Kết quả A·B = [[7, 5], [16, 11]].
Áp dụng vào dữ liệu: S = [[8, 6], [7, 9], [10, 8]] là điểm của 3 học sinh ở 2 bài, W = [[0.4], [0.6]] là trọng số. S·W là 3×1: 6.8, 8.2, 8.8. Mỗi hàng dữ liệu cho ra một con số tổng hợp, đúng thứ bạn cần khi chấm điểm có trọng số.
Bài tập nhanh 3. Tính A·B với A = [[2, 1]] (1×2) và B = [[3], [5]] (2×1).
Xem đáp án
Số giữa 2 = 2, kết quả 1×1. Ô duy nhất: 2·3 + 1·5 = 11. Nhân hàng với cột cho một số vô hướng, đó chính là tích vô hướng của hai vector.
Nhân ma trận không giao hoán
Vẫn A = [[2, 1], [0, 3]] và B = [[1, 4], [2, 1]] ở trên, A·B = [[4, 9], [6, 3]] nhưng B·A = [[2, 13], [4, 5]]. Hai kết quả khác nhau hoàn toàn, nên AB hầu như luôn khác BA. Lý do hình học rất trực quan: A rồi B không giống B rồi A, ví dụ "xoay 90 độ rồi kéo dài" khác với "kéo dài rồi xoay 90 độ".
Một ngoại lệ đáng nhớ là ma trận đơn vị I = [[1, 0], [0, 1]]. Nhân với I thì ma trận không đổi: A·I = I·A = A. I đóng vai trò như số 1.
Bài tập nhanh 4. Không tính hết, hãy cho biết A·I với A là 2×3 có kích thước bao nhiêu và bằng gì.
Xem đáp án
I phải là 3×3 để nhân được với 2×3. Kết quả là 2×3 và bằng chính A, vì I không làm thay đổi gì.
Nhìn phép nhân như một chuyển động
Có một cách đọc khác, và nó là cầu nối sang bài sau: mỗi cột của B cho biết một vector cơ sở sẽ đi về đâu. Nhân A·B nghĩa là áp B trước, rồi áp A lên kết quả. Với ma trận 2×2, bạn có thể hình dung cả mặt phẳng bị xoay và co giãn, còn phép nhân chính là việc nối hai chuyển động đó lại thành một.
Mẹo phấn trắng: kiểm tra nhanh và lỗi hay gặp
- Viết kích thước ra giấy trước khi tính. Chín mươi phần trăm lỗi nhân ma trận là lỗi kích thước, không phải lỗi số học.
- Đừng nhân từng phần tử tương ứng. [[1,2],[3,4]] nhân [[1,2],[3,4]] không phải [[1,4],[9,16]]. Đó là tích Hadamard, một phép khác.
- Kiểm tra chéo bằng cách đếm: kết quả m×p phải có đúng m·p ô, mỗi ô là một tích vô hướng dài n số hạng.
- Với dữ liệu, giữ một quy ước cố định: hàng là bản ghi, cột là thuộc tính. Đổi quy ước giữa chừng sẽ ra kích thước sai ngay.
- Nếu phép nhân "không chạy", hãy kiểm tra xem có cần chuyển vị không. Bài sau sẽ nói rõ hơn.
Ghi nhớ nhanh và bước tiếp theo
Ba điều cần mang theo: kiểm tra (m×n)(n×p) trước khi tính; mỗi ô của tích là hàng nhân cột; và AB khác BA, chỉ ma trận đơn vị mới nhân mà không làm đổi ma trận kia.
Bài tiếp theo, "Chuyển vị và biến đổi tuyến tính nhìn bằng hình ảnh", sẽ cho bạn thấy phép nhân vừa làm thực sự là một chuyển động của cả mặt phẳng: xoay, co giãn, và cả lật hình.
- Muốn nhân A với B, số _____ của A phải bằng số _____ của B.
- Tích của ma trận 2×3 và ma trận 3×4 có kích thước _____.
- Phần tử ở hàng i, cột j của AB bằng _____.
- Nhân ma trận nói chung không có tính _____, nghĩa là AB thường khác BA.
- Ma trận _____ đóng vai trò như số 1 trong phép nhân ma trận.
Front: Điều kiện để nhân A với B là gì? Back: Số cột của A phải bằng số hàng của B.
Front: A là m×n, B là n×p. Tích A·B có kích thước bao nhiêu? Back: m×p, lấy số hàng ngoài của A và số cột ngoài của B.
Front: Phần tử ở hàng i, cột j của A·B được tính thế nào? Back: Lấy hàng i của A nhân vô hướng với cột j của B: nhân từng cặp rồi cộng.
Front: Hàng nhân cột trong phép nhân ma trận chính là phép gì đã học? Back: Tích vô hướng của hai vector.
Front: Nhân ma trận có tính giao hoán không? Back: Không, nói chung AB khác BA.
Front: Ma trận đơn vị I cỡ 2×2 là gì và A·I bằng gì? Back: I = [[1,0],[0,1]]; A·I = I·A = A, giống nhân với số 1.
Front: A là 2×3, B là 2×3. Nhân được không? Back: Không, vì 3 khác 2, số cột của A không khớp số hàng của B.
Front: A là 3×2, B là 2×5. Kích thước tích A·B? Back: 3×5.
Front: Nhân hai ma trận có phải nhân từng phần tử tương ứng? Back: Không, đó là tích Hadamard; nhân ma trận dùng hàng nhân cột.
Front: Mỗi cột của B mô tả điều gì khi nhân A·B? Back: Ảnh của một vector cơ sở sau khi áp B, rồi A áp lên kết quả đó.
Front: Vì sao AB và BA có thể khác kích thước? Back: Vì điều kiện ghép kích thước khác nhau, chỉ cùng tồn tại khi số hàng của A bằng số cột của B.
Front: Bước đầu tiên nên làm trước khi nhân hai ma trận? Back: Viết kích thước ra nháp và kiểm tra số cột của A bằng số hàng của B.
Front: Nhân ma trận với một vector cột cho ra gì? Back: Một tổ hợp tuyến tính của các cột, tức một vector kết quả mới.