Thêm game tại WuGames.ioTài trợKhám phá kho game trình duyệt miễn phí — chơi ngay, không tải, không đăng ký.Chơi ngay

Máy tính ma trận

Tính định thức, nghịch đảo, trị riêng, hạng, vết, giải hệ Ax=b và kiểm tra số điều kiện trực tuyến. Đại số tuyến tính từng bước cho học sinh và kỹ sư.

Máy tính ma trận là gì?

Máy tính ma trận thực hiện các phép toán tiêu chuẩn của đại số tuyến tính trên các mảng số hình chữ nhật: định thức, nghịch đảo, chuyển vị, trị riêng và vector riêng, cộng, trừ, nhân với một số, và tích hàng-cột của hai ma trận. Mỗi phép toán đều mang một ý nghĩa cụ thể — diện tích bị co giãn, điểm bị xoay, phương trình được giải — một khi bạn nhìn xa hơn việc thao tác ký hiệu.

Ma trận là ngôn ngữ ta dùng mỗi khi cần nói về nhiều đại lượng cùng lúc: vị trí của mọi đỉnh trong mô hình 3D, trọng số kết nối giữa các lớp của mạng nơ-ron, xác suất chuyển trạng thái trong xích Markov, ứng suất bên trong dầm thép. Máy tính thao tác ma trận thường xuyên đến mức các nhà sản xuất GPU đã dành hai thập kỷ chế tạo phần cứng chuyên một nhiệm vụ duy nhất là nhân ma trận nhỏ rất nhanh.

Các phép toán ma trận

Định thức

Định thức là một số vô hướng duy nhất gắn với mỗi ma trận vuông. Về mặt hình học, |det(A)| cho biết hệ số mà A co giãn diện tích (trong 2D), thể tích (trong 3D) hoặc các độ đo bậc cao hơn; dấu cho biết A có đảo định hướng hay không. Định thức bằng không nghĩa là ma trận ép không gian xuống chiều thấp hơn — ba vector cùng nằm trên một mặt phẳng có định thức 3×3 bằng 0 — và đó chính là khi ma trận không có nghịch đảo.

Với ma trận 2×2 [[a,b],[c,d]], định thức là: ad − bc

Ma trận nghịch đảo

Nghịch đảo A⁻¹ của ma trận vuông A là ma trận khử ngược A: A·A⁻¹ = A⁻¹·A = I, ma trận đơn vị. Chỉ những ma trận vuông có định thức khác 0 mới có nghịch đảo. Trong thực hành, nghịch đảo là cách gọn gàng nhất để viết nghiệm của hệ tuyến tính Ax = b: x = A⁻¹b. Tuy nhiên trong tính toán số, phần mềm hầu như không bao giờ tính A⁻¹ tường minh — nó giải hệ trực tiếp bằng phân rã LU, vừa nhanh hơn vừa ổn định hơn.

Với ma trận A, nếu A × A⁻¹ = I (ma trận đơn vị) thì A⁻¹ là nghịch đảo của A.

Chuyển vị

Chuyển vị Aᵀ lật ma trận qua đường chéo chính: phần tử (i, j) chuyển sang vị trí (j, i). Hàng trở thành cột. Với ma trận m × n, Aᵀ có kích thước n × m. Chuyển vị xuất hiện khắp nơi: trong tích vô hướng (xᵀy), trong ma trận đối xứng (A = Aᵀ), trong hồi quy bình phương tối thiểu (phương trình chuẩn AᵀA x = Aᵀb) và trong mối quan hệ giữa không gian hàng và không gian cột.

Nếu A = [[1,2],[3,4]] thì Aᵀ = [[1,3],[2,4]]

Trị riêng và vector riêng

Vector riêng của ma trận A là vector khác 0 v mà hướng của nó không thay đổi bởi A — chỉ độ dài bị co giãn. Hệ số co giãn là trị riêng λ, định nghĩa bởi Av = λv. Vector riêng chỉ theo trục tự nhiên của bất cứ phép biến đổi nào mà A đại diện; trị riêng cho biết mỗi trục bị kéo dài hay nén bao nhiêu.

Trị riêng đóng vai trò trung tâm trong phân tích thành phần chính (vector riêng của ma trận hiệp phương sai trở thành các trục mới giữ phương sai cực đại), trong PageRank gốc của Google (vector riêng của một ma trận ngẫu nhiên xác định tầm quan trọng của mọi trang web), trong phân tích dao động (tần số tự nhiên là căn bậc hai của trị riêng của ma trận khối lượng-độ cứng), và trong cơ học lượng tử (mức năng lượng là trị riêng của toán tử Hamilton).

Cộng và trừ ma trận

Hai ma trận cùng kích thước được cộng hoặc trừ theo từng phần tử: (A + B)ᵢⱼ = Aᵢⱼ + Bᵢⱼ. Hai ma trận khác kích thước không thể cộng được — không có cách hợp lý nào để căn các phần tử của chúng.

Nhân ma trận

Tích A·B được tính bằng tích vô hướng giữa mỗi hàng của A và mỗi cột của B. Để phép nhân được xác định, số cột của A phải bằng số hàng của B. Phép nhân ma trận không giao hoán — A·B nhìn chung khác B·A — nhưng kết hợp được, nên (AB)C = A(BC).

Nếu A là m×n và B là n×p thì A × B là m×p.

Nhân vô hướng

Nhân ma trận với số vô hướng k nghĩa là nhân từng phần tử với k: (kA)ᵢⱼ = k · Aᵢⱼ. Định thức của (kA) với ma trận n × n bằng kⁿ lần định thức của A.

Giải hệ phương trình và điều kiện số

Phép toán «Giải Ax = b» tìm vector x thỏa mãn một hệ tuyến tính vuông. Nhập ma trận hệ số làm A và vế phải làm vector b một cột, rồi nhấn Tính toán. Bên trong, công cụ dùng phân rã LU (math.lusolve) thay vì lập A⁻¹b — đúng cách mà các thư viện số chuyên nghiệp dùng, vì nó nhanh hơn và ổn định số hơn nhiều so với nghịch đảo tường minh.

Với mỗi phép toán trên ma trận vuông, máy tính còn báo số điều kiện κ(A) ≈ ‖A‖₁·‖A⁻¹‖₁. Số điều kiện đo mức độ mà nghiệm x có thể khuếch đại sai số nhỏ trong A hoặc b. Giá trị gần 1 là lý tưởng; dưới 1000 là điều kiện tốt; từ 1000 đến 1.000.000 là ranh giới — làm tròn có thể đã làm mất vài chữ số; trên 1.000.000 ma trận có điều kiện kém và gần suy biến, nghĩa là đáp số tính được có thể bị nhiễu dấu phẩy động chi phối dù vẫn trả về một «nghiệm». Hãy luôn đọc kết luận trước khi tin vào nghịch đảo hay nghiệm hệ trong công việc kỹ thuật.

Ứng dụng của ma trận

Ma trận không hề trừu tượng — chúng vận hành phần lớn công nghệ quanh bạn:

  • Đồ họa máy tính: mọi phép xoay, co giãn và tịnh tiến 3D đều được mã hóa thành ma trận 4×4; GPU về cơ bản là bộ nhân 4×4 tốc độ cao
  • Vật lý: toán tử lượng tử, thuyết tương đối hẹp (biến đổi Lorentz), cơ học môi trường liên tục (tensor ứng suất và biến dạng)
  • Kỹ thuật: phân tích phần tử hữu hạn (ma trận độ cứng), hệ thống điều khiển (mô hình không gian trạng thái), phân tích mạch (ma trận dẫn nạp)
  • Kinh tế: mô hình đầu vào-đầu ra Leontief, ma trận lợi tức trong lý thuyết trò chơi
  • Thống kê: ma trận hiệp phương sai, hồi quy đa biến, ma trận thiết kế trong thiết kế thí nghiệm
  • Máy học: mạng nơ-ron là chồng các phép nhân ma trận đan xen với phi tuyến; huấn luyện là điều chỉnh các ma trận trọng số
  • Mật mã: mật mã dựa trên ma trận (mật mã Hill), mã sửa lỗi (Reed-Solomon)
Máy tính ma trận — Tính định thức, nghịch đảo, trị riêng, hạng, vết, giải hệ Ax=b và kiểm tra số điều kiện trực tuyến. Đại số tuyến tính từ
Máy tính ma trận

Mẹo dùng máy tính ma trận

  • Đảm bảo kích thước ma trận của bạn đúng với phép toán bạn muốn thực hiện
  • Để tính nghịch đảo, ma trận phải vuông và định thức khác 0
  • Trị riêng chỉ tính được cho ma trận vuông
  • Khi nhân ma trận, kiểm tra số cột của ma trận đầu bằng số hàng của ma trận sau
  • Dùng phép chuyển vị để biến vector hàng thành vector cột và ngược lại

Câu hỏi thường gặp

Chọn «Giải Ax = b» trong menu phép toán. Nhập ma trận hệ số vuông làm Ma trận A — mỗi hàng một phương trình, mỗi cột một ẩn. Khối «Vector b» sẽ xuất hiện: hãy để nó một cột với số hàng bằng A (dùng Thêm/Xóa hàng để khớp) và nhập các hằng số vế phải. Nhấn Tính toán, công cụ trả về vector nghiệm x dạng cột. Bên trong nó dùng phân rã LU (lusolve), không phải nghịch đảo tường minh, nên nhanh và ổn định số. Ví dụ, với 2x + y = 3 và x + 3y = 5, nhập A = [[2,1],[1,3]] và b = [[3],[5]]; nghiệm là x ≈ [0,8, 1,4]. Nếu A suy biến bạn sẽ gặp lỗi «ma trận suy biến» — khi đó hệ vô nghiệm hoặc có vô số nghiệm.

Mỗi khi bạn chạy định thức, nghịch đảo hay Giải Ax = b trên ma trận vuông, ô Tính toán hiển thị một dòng như «Số điều kiện ≈ 4,2 (điều kiện tốt)». Số điều kiện κ(A) ước lượng mức đáp số có thể khuếch đại sai số nhỏ trong dữ liệu của bạn hoặc trong làm tròn dấu phẩy động. Các kết luận là: điều kiện tốt (κ < 1000) — tin được kết quả; ranh giới (1000–1.000.000) — có thể bạn đã mất vài chữ số có nghĩa, hãy kiểm tra các kết quả nhạy cảm; điều kiện kém / gần suy biến (κ > 1.000.000 hoặc ∞) — ma trận gần như không khả nghịch, và x hay A⁻¹ tính được có thể phần lớn là nhiễu số dù vẫn trả về một con số. Định thức gần bằng 0 là dấu hiệu cảnh báo kinh điển của số điều kiện cao: ma trận về mặt kỹ thuật là khả nghịch nhưng thực tế không đáng tin. Khi đó hãy diễn đạt lại bài toán, đổi tỷ lệ đơn vị, hoặc dùng cách bình phương tối thiểu / chính quy hóa thay cho nghịch đảo trực tiếp.

Quên công thức đi một lát. Lấy hai cột của ma trận 2×2 và vẽ chúng thành hai mũi tên xuất phát từ gốc tọa độ. Chúng tạo thành một hình bình hành. Diện tích có dấu của hình bình hành đó chính là định thức. Với ma trận 3×3, ba cột tạo thành một hình hộp xiên, và thể tích có dấu của nó là định thức. Trong không gian n chiều, các cột tạo thành một "hộp" n chiều, và định thức là n-thể tích có dấu của nó. Vậy |det(A)| trả lời câu hỏi "ma trận này co giãn diện tích (hoặc thể tích, hoặc siêu thể tích) bao nhiêu lần?". Dấu trả lời "có đảo định hướng không?" — xoay 2D có det = +1 (không đảo), phản chiếu có det = −1 (đảo). Định thức bằng 0 nghĩa là các cột phụ thuộc tuyến tính — chúng ép cái hộp dẹp xuống một vùng có chiều thấp hơn — và đó chính xác là lúc ma trận không có nghịch đảo: bạn không thể khôi phục đầu vào n chiều từ đầu ra (n−1) chiều.

Vì nghịch đảo phải hủy hành động của ma trận theo cả hai chiều. Một ma trận 3×2 nhận vector 2 chiều và xuất ra vector 3 chiều — nó ánh xạ không gian 2D vào không gian 3D. Đơn giản là không tồn tại ma trận 2×3 nào, khi áp dụng cho vector 3D tùy ý, lại khôi phục được vector 2D gốc — đa số vector 3D không nằm trong ảnh của ánh xạ ban đầu. Một cách chính thức, AB = I đòi A là n × m và B là m × n, ràng buộc đó cộng với "nghịch đảo thật" (vừa AB = I VỪA BA = I) buộc m = n. Tuy nhiên với ma trận chữ nhật, có khái niệm giả nghịch đảo Moore–Penrose A⁺: nó cho nghiệm bình phương tối thiểu của Ax = b khi không tồn tại nghiệm chính xác (hệ quá xác định) hoặc chọn nghiệm có chuẩn nhỏ nhất trong vô số nghiệm (hệ thiếu xác định). Giả nghịch đảo là thứ làm hồi quy tuyến tính hoạt động — phương trình chuẩn thực chất là x = (AᵀA)⁻¹Aᵀb = A⁺b.

Vì mỗi ma trận biểu diễn một phép biến đổi, và thứ tự áp dụng biến đổi nói chung có ý nghĩa. Thử thí nghiệm này: lấy một cuốn sách, xoay 90° quanh trục đứng, rồi xoay 90° quanh trục ngang. Bây giờ đặt lại và làm theo thứ tự ngược. Cuốn sách kết thúc ở hướng khác nhau. Phép nhân ma trận mã hóa chính cấu trúc kết hợp "làm A trước, rồi đến B" này, và thứ tự nằm sẵn trong định nghĩa. Có ngoại lệ — mọi ma trận giao hoán với ma trận đơn vị, với chính nó và với các lũy thừa của nó; ma trận chéo giao hoán với nhau; phép xoay 2D giao hoán (vì xoay 2D tạo thành nhóm Abel). Nhưng nhìn chung, AB ≠ BA, và sai thứ tự là một trong những lỗi phổ biến nhất trong mã đồ họa và vật lý. Lần đầu tiên một người mới nhân ma trận model với ma trận view sai thứ tự trong OpenGL, toàn bộ khung cảnh biến mất.

Hãy tưởng tượng ma trận A là phép biến đổi kéo, xoay và làm méo vector. Đa số vector ra khỏi A đều chỉ theo hướng khác hướng ban đầu. Vector riêng là những vector hiếm hoi giữ nguyên hướng (hoặc đảo ngược chính xác) — A chỉ kéo chúng bởi hệ số λ, trị riêng. Vì vậy trị riêng và vector riêng phơi bày các trục tự nhiên của bất kỳ phép biến đổi nào mà A đại diện. Nếu A là phép xoay 2D, nó không có vector riêng thực nào (mọi vector đều xoay) nhưng có trị riêng phức mà mô-đun cho biết phép xoay. Nếu A đối xứng, nó có n vector riêng thực trực giao tạo thành các trục chính của một ellipse (hoặc ellipsoid). Trong PCA, các trục đó là hướng có phương sai lớn nhất trong dữ liệu. Trong PageRank gốc của Google, vector riêng trội của ma trận chuyển trạng thái của web liệt kê xác suất dài hạn được truy cập của mỗi trang bởi người lướt web ngẫu nhiên. Trong kỹ thuật kết cấu, trị riêng nhỏ nhất của ma trận độ cứng dự đoán khi nào cột sẽ vênh. Trị riêng là cách ma trận tiết lộ đường chéo riêng của nó.

Một ma trận vuông suy biến khi định thức bằng 0, điều đó xảy ra chính xác khi các cột phụ thuộc tuyến tính — ít nhất một cột là tổ hợp của các cột khác. Về hình học, ma trận ép phẳng không gian: ma trận 3×3 có hai cột cùng nằm trên một mặt phẳng sẽ ánh xạ mọi điểm 3D xuống mặt phẳng 2D, mất một chiều vĩnh viễn. Với Ax = b điều này rất kịch tính. Nếu b tình cờ nằm trong ảnh đã ép, hệ có vô số nghiệm (bất kỳ vector nào trong hạt nhân của A đều có thể cộng vào nghiệm cụ thể và vẫn là nghiệm). Nếu b nằm ngoài ảnh, hệ vô nghiệm hoàn toàn. Phần mềm phát hiện điều này bằng lỗi "hạng khiếm khuyết" hoặc "ma trận suy biến". Cách xử lý trong thực tế là bình phương tối thiểu: dùng giả nghịch đảo A⁺ để tìm x làm cực tiểu ‖Ax − b‖² — cho đáp số duy nhất ngay cả khi A suy biến hoặc chữ nhật. Suy biến không có nghĩa là hỏng; nó nghĩa là bạn phải cẩn thận với từ "giải".

Hạng của ma trận là chiều của không gian cột — tương đương, số cột độc lập tuyến tính (hoặc hàng; cả hai trùng nhau). Ma trận 5×5 có thể có hạng từ 0 (ma trận 0) đến 5 (hạng đầy đủ, khả nghịch). Về hình học, hạng là chiều của ảnh: ma trận 3×3 hạng 2 ánh xạ không gian 3D xuống mặt phẳng 2D. Hạng quan trọng vì nó cho biết ma trận giữ được bao nhiêu thông tin. Ma trận hạng đầy đủ là khả nghịch, có định thức khác 0, có n trị riêng khác 0, và Ax = b có nghiệm duy nhất với mọi b. Ma trận khiếm khuyết hạng làm sụp đổ một thứ — một chiều, một bậc tự do, một phép đo độc lập. Trong khoa học dữ liệu, hạng của ma trận đo lường cho biết có bao nhiêu biến thực sự độc lập; nếu ma trận 100 cột của tập dữ liệu có hạng 12, chỉ tồn tại 12 hướng biến thiên và phần còn lại là dư thừa. Phân rã giá trị suy biến (SVD) phơi bày điều này trực tiếp: số giá trị suy biến khác 0 bằng hạng.

Vì ma trận mã hóa các biến đổi tuyến tính, và quy tắc hàng nhân cột làm cho việc hợp thành hai biến đổi tương đương với nhân ma trận của chúng. Nghĩ ma trận như một hàm: cột j cho biết vector cơ sở eⱼ đi tới đâu. Nếu ma trận B đưa eⱼ tới cột Bⱼ, và ma trận A đưa mọi vector v tới Av, thì để tìm (AB)eⱼ đáp xuống đâu bạn tính A(Bⱼ) — chính là cột j của A·B khi dùng quy tắc chuẩn. Vậy định nghĩa lạ lùng không hề tùy tiện; nó bị áp đặt bởi yêu cầu "nhân ma trận = hợp thành các biến đổi mà chúng đại diện". Đó cũng là lý do nhân ma trận kết hợp được: hợp thành hàm thì kết hợp được. Và vì sao không giao hoán: hợp thành hàm nhìn chung không giao hoán. Một khi bạn thấy ma trận là hàm và phép nhân là hợp thành, mọi thứ khác đều phát sinh. Cách viết tắt "tích vô hướng của hàng và cột" chỉ là cách hiệu quả nhất để tính một phần tử cụ thể.

Hầu như ở mọi nơi máy tính làm việc gì đó thú vị. Mỗi pixel bạn thấy trong game 3D đều đã được biến đổi qua chuỗi ma trận 4×4: ma trận model (vị trí vật thể), ma trận view (camera), ma trận projection (ống kính), rồi vài ma trận nữa cho bóng và hậu xử lý. Mỗi pixel chạy qua hàng chục phép nhân ma trận mỗi khung hình, sáu mươi lần mỗi giây — đó là lý do GPU tồn tại. Hệ thống gợi ý cho bạn nội dung tiếp theo được xây trên xấp xỉ hạng thấp của ma trận khổng lồ người dùng-mục. PageRank của Google xếp hạng web thời kỳ đầu bằng vector riêng trội của ma trận ngẫu nhiên thưa. GPS điện thoại bạn hợp nhất tín hiệu bằng bộ lọc Kalman, đó là các cập nhật ma trận. Mạng nơ-ron về bản chất là chồng sâu các phép nhân ma trận xen kẽ với phi tuyến; huấn luyện một mô hình ngôn ngữ lớn nghĩa là điều chỉnh ma trận với hàng tỷ phần tử. Máy MRI tái dựng ảnh bằng cách đảo ma trận thưa trong không gian Fourier. Ngay cả máy pha cà phê buổi sáng, nếu dùng điều khiển PID, đều phụ thuộc vào ma trận hệ thống 2×2 được tinh chỉnh cho đáp ứng ổn định. Đại số tuyến tính đã không ở lại giảng đường — nó trở thành cơ sở hạ tầng.