Mở đầu

Ở trường đại học, chúng ta đã học rất nhiều về toán ma trận, nhưng lại rất ít áp dụng, hầu như mọi người đều lãng quên nó sau khi rời bỏ ngôi trường yêu quý của mình. Có người nói với mình rằng, nó vô dụng và hầu như chả giúp ích gì cho họ cả.Hôm nay mình sẽ cùng các bạn tản mạn một xíu.Tại sao chúng ta lại được học toán ma trận và liệu học toán ma trận có giúp ích gì cho chúng ta hay không?

Ma trận cơ bản

Một tập hợp toán ma trận gồm mộ nhóm theo cột và hàng theo hình chữ nhật, bên trong là các phần tử ứng mỗi vị trí gióng theo hàng và cột.Các ma trận có thể được hoán đổi hoặc nhân với nhau và cho ra một kết quả khác của ma trận.

 Image 2253c213 e7d8 45ab a2ef 2f41faecf90b

Ví dụ trên chính là một ma trận mxn, các hàng m nằm ngang và n cột theo chiều dọc.Mỗi phần tử của một ma trận thường được biểu thị bằng một biến ví dụ như a21 đại diện cho phần tử ở hàng thứ hai và cột thứ 1 của ma trận.

Trò chơi kéo búa bao

hai 1 8887 1388475710

Biết lý thuyết sơ sơ vậy để mình thử với bài toán kéo búa bao này như thế nào nhé.

Bây giờ mình sẽ tạo ra một trò chơi nho nhỏ để chơi với máy và quy ước như sau:

 - Kéo thắng bao
 - Bao thắng búa
 - Búa thắng kéo
 Viết một chương trình máy tính để mô phỏng lại trò chơi này.

Mình sẽ tạo ra một con máy giả để chơi oẳn tù tì với mình.

Giờ mình sẽ mô phỏng lại các lượt thắng thua trên một bảng giữa người và máy xem như nào.

Ví dụ :

Máy : Bao | Tôi : Bao

Kết quả : Hoà

 Image 69c7fd08 7c9f 4975 ba40 29e5e9c0b0ba

Kết quả cuối cùng ta sẽ có được bảng biểu diễn như bên trên.

Mọi ý tưởng ban đầu đã xong xuôi, giờ nhìn có vẻ giống như một ma trận nhỉ.Chúng ta sẽ bắt đầu biểu diễn chúng lên ma trận nhé.

matrix = [["Hoa","Thua","Thang"],["Thang","Hoa","Thua"],["Thua","Thang","Hoa"]]

Và giờ mình cũng sẽ tạo ra một con máy random tự động trả về bao búa kéo với mình

from random import randint
print ("Quy uoc Bao :0")
print ("Quy uoc Bua :1")
print ("Quy uoc Keo :2")
lst = ["Bao","Bua","Keo"]
computer = randint(0,2)
userinput = int (input ("Moi ban nhap: \n"))
print ("Nguoi dung da nhap",lst[userinput])
print ("May nhap",lst[computer])
matrix = [["Hoa","Thua","Thang"],
["Thang","Hoa","Thua"],
["Thua","Thang","Hoa"]]
print ("Ket Qua",matrix[computer][userinput])
view raw buabaokeo.py hosted with ❤ by GitHub

Ok và giờ ta đã có một con máy để chơi với chúng

 Image 020f3b86 2a10 462e 8afb 945e0b9f4749

Để đỡ tốn bộ nhớ hơn, lúc này chúng lại đưa các chữ trong ma trận về biểu diễn bởi một ma trận toàn số đại diện cho giống ở trường chúng ta đã học nhé.Ở đây các con số 0,1,-1 đại diện cho 3 khổ mẫu hoà,thắng,thua.Vì thế chúng ta mới có ma trận 3x3.Cứ thế mở rộng bài toán mỗi phức tạp, chúng ta sẽ có mỗi ma trận lớn hơn và tốn thời gian hơn để giải.

from random import randint
print ("Quy uoc Bao :0")
print ("Quy uoc Bua :1")
print ("Quy uoc Keo :2")
lst = ["Bao","Bua","Keo"]
computer = randint(0,2)
userinput = int (input ("Moi ban nhap: \n"))
print ("Nguoi dung da nhap",lst[userinput])
print ("May nhap",lst[computer])
mx = [[0,-1,1],
[1,0,-1],
[-1,1,0]]
results = ["Hoa","Thang","Thua"]
print ("Ket qua",results[mx[computer][userinput]])
view raw buabaokeo2.py hosted with ❤ by GitHub

Và cũng sẽ cho ra kết quả tương tự, điều khác ở đây chính là ma trận đã giúp chúng ta giải quyết bài toán một trò chơi vui vẻ thật nhanh phải không ?

Giờ hãy thử lại bài toán này với phương pháp của riêng bạn không dùng ma trận xem có đơn giản như thế không ?

Đi làm chúng ta làm gì ?

Với việc đơn giản hoá các vấn đề thành những con số như vậy, chúng ta có thể bắt gặp đâu đó một biểu diễn vector(XYZ) dạng như này :

 Image a795b8c8 a0ad 435f b284 c7a7883d6e30

Việc này hoàn toàn giống như trò chơi đơn giản hoá bên trên kia.Làm như vậy chúng ta phần nào tiết kiệm được bộ nhớ và đưa về quy ước chung.

Như vậy cũng tương tự với việc học trên trường học, chúng ta vùi đầu để giải quyết những con số, những lỗ hổng còn thiếu trong ma trận kia thì ở đây chúng ta cũng đang làm việc đó một cách âm thầm bằng việc tính toán các vector, đơn giản hoá chúng lại để tìm ra kết quả tính toán phù hợp.

Mở rộng

Hy vọng qua bài viết này sẽ giúp bạn phần nào đó hình dung cơ bản về một ma trận và tính hữu ích của nó.Tất nhiên không phải ai cũng được sử dụng và áp dụng vào cuộc sống hằng ngày.Tất nhiên ở trong trường học là khô khan và các bài toán đa số là để đánh đố nhau nhưng cũng đừng vì đó mà nản lòng.Hãy tìm một thứ hữu ích biết đâu bạn sẽ thích nó.