Máy tính ma trận miễn phí

Thực hiện các phép toán ma trận: cộng, trừ, nhân, chuyển vị, định thức và nghịch đảo.

Ma trận A

Ma trận B

Cách hoạt động

Xác định kích thước của ma trận A và B, nhập các giá trị và chọn một phép toán. Máy tính sẽ kiểm tra kích thước và thực hiện phép toán, hiển thị kết quả trong lưới ma trận rõ ràng.

Phép toán được hỗ trợ

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

Những kích thước ma trận nào được hỗ trợ?

Ma trận tối đa 6×6 được hỗ trợ. Chọn số hàng và cột cho mỗi ma trận trước khi nhập giá trị.

Khi nào tôi có thể tính nghịch đảo?

Ma trận nghịch đảo chỉ tồn tại với ma trận vuông (cùng số hàng và cột) có định thức khác 0. Ma trận suy biến (định thức = 0) không có nghịch đảo.

Dữ liệu của tôi có được lưu không?

Không. Mọi phép tính chạy trong trình duyệt của bạn. Không có gì được lưu hoặc gửi đến máy chủ.

Ma Trận Thực Sự Là Gì

Một ma trận là mảng số hình chữ nhật được sắp xếp thành hàng và cột và được xử lý như một đối tượng toán học duy nhất. Hình dạng được viết là m × n trong đó m là số hàng và n là số cột, luôn hàng trước. Các số riêng lẻ bên trong được gọi là phần tử nhập vào hay phần tử; một phần tử ở hàng i, cột j được tham chiếu là aij theo chỉ mục 1-based. (Một trong những lỗi phổ biến nhất khi chuyển bài báo toán học sang code là sự không khớp giữa quy ước 1-based này và chỉ mục 0-based được dùng bởi C, Python và JavaScript.)

Một vector là ma trận có một hàng (1 × n, «vector hàng») hoặc một cột (m × 1, «vector cột»). Một scalar là ma trận 1 × 1. Sự lồng nhau này quan trọng: nó có nghĩa là mọi phép toán trong đại số tuyến tính (tích vô hướng, phép chiếu, phép biến đổi) đều có thể biểu diễn đồng nhất dưới dạng số học ma trận, đó là lý do ma trận trở thành ngôn ngữ phổ quát của toán học ứng dụng sau năm 1900.

Lịch Sử Ngắn Gọn

Tiền thân sớm nhất được biết đến là trong tác phẩm Chín Chương về Nghệ thuật Toán học của người Trung Quốc (khoảng thế kỷ 2 trước Công nguyên), sử dụng phương pháp khử Gauss dạng bảng gọi là fangcheng để giải các hệ phương trình tuyến tính đồng thời. Thuật ngữ hiện đại «matrix» được đặt ra bởi nhà toán học người Anh James Joseph Sylvester năm 1850, dựa trên từ tiếng Latin có nghĩa là «tử cung», một cấu trúc bên trong có thể phát triển các định thức con. Bài báo nền tảng là bài báo năm 1858 «A Memoir on the Theory of Matrices» của bạn và cộng tác viên của Sylvester là Arthur Cayley, đã chính thức hóa phép nhân ma trận, ma trận đơn vị, ma trận không và ma trận nghịch đảo, biến ma trận từ một tiện ích ký hiệu thành một đại số theo đúng nghĩa.

Trong cuối thế kỷ 19 và đầu thế kỷ 20, phép khử Gauss-Jordan, lý thuyết trị riêng và định lý phổ đã củng cố ma trận là công cụ trung tâm của đại số tuyến tính. Các bước ngoặt thế kỷ 20 là công thức cơ học ma trận năm 1925 của Werner Heisenberg cho lý thuyết lượng tử (đó là lý do các nhà vật lý bắt đầu coi trọng ma trận), bài báo năm 1947 của John von Neumann và Herman Goldstine về đảo số ma trận bậc cao đã đặt nền móng cho đại số tuyến tính số hiện đại, và phiên bản phát hành năm 1979 của BLAS (Basic Linear Algebra Subprograms) và phiên bản năm 1992 của LAPACK: các thư viện tối ưu hóa mà mọi nền tảng tính toán khoa học từ MATLAB đến NumPy cuối cùng đều gọi đến.

Sáu Phép Toán Cốt Lõi, Được Giải Thích

Cộng và trừ. Cả hai ma trận phải có kích thước giống hệt nhau. Kết quả có cùng hình dạng và mỗi phần tử là tổng theo từng phần tử: cij = aij + bij. Bạn không thể cộng ma trận 2×3 với 3×2; phép toán không xác định. Phép cộng ma trận có tính giao hoán và kết hợp, giống như phép cộng số thông thường.

Phép nhân ma trận. Phép toán tạo ra sức mạnh của ma trận, và là phép toán mà hầu hết mọi người làm sai trong lần đầu tiếp cận. Để C = A × B được xác định, các chiều trong phải khớp: nếu A là m × n, B phải là n × p, và kết quả C là m × p. Chữ «n» ở giữa bị hủy; «m» và «p» bên ngoài còn lại. Mỗi phần tử được tính như tích vô hướng của một hàng của A với một cột của B: cij = Σ aik · bkj tính tổng theo k.

Ví dụ đã giải 2×2:

A = [1 2]   B = [5 6]   A·B = [1·5+2·7  1·6+2·8] = [19 22]
    [3 4]       [7 8]         [3·5+4·7  3·6+4·8]   [43 50]

Phép nhân ma trận không có tính giao hoán: A·B ≠ B·A nói chung, và đôi khi cả hai tích thậm chí có hình dạng khác nhau. (Nếu A là 2×3 và B là 3×2, A·B là 2×2 nhưng B·A là 3×3.) Tính không giao hoán này là nguồn gốc của phần lớn sự phong phú của đại số tuyến tính và là lý do bài báo năm 1858 của Cayley được coi là nền tảng.

Chuyển vị: ký hiệu AT: đổi chỗ hàng và cột. Phần tử ở hàng i, cột j trở thành phần tử ở hàng j, cột i. Vậy nếu A là m × n, AT là n × m. Đẳng thức hữu ích: (A·B)T = BT·AT, với thứ tự đảo ngược.

Định thức: một scalar duy nhất tóm tắt một ma trận vuông. Với ma trận 2×2, đó là ad − bc; với các ma trận lớn hơn, nó mở rộng đệ quy thông qua khai triển cofactor (không thực tế với ma trận vượt 4×4) hoặc qua phân rã LU (thuật toán máy tính sử dụng, O(n³)). Về mặt hình học, giá trị tuyệt đối của định thức là hệ số mà phép biến đổi tuyến tính co giãn diện tích (trong 2D), thể tích (trong 3D), v.v. Định thức bằng 2 có nghĩa là hình vuông đơn vị ánh xạ thành hình bình hành diện tích 2; định thức âm có nghĩa là hướng đảo ngược (phản chiếu gương); định thức bằng 0 có nghĩa là phép biến đổi thu gọn mọi thứ vào một đường hoặc điểm, ma trận là suy biến (không thể nghịch đảo).

Nghịch đảo: ký hiệu A⁻¹: ma trận duy nhất sao cho A · A⁻¹ = A⁻¹ · A = I, trong đó I là ma trận đơn vị. Nghịch đảo «hoàn tác» những gì A đã làm. Nó chỉ tồn tại với ma trận vuông có định thức khác 0. Máy tính tính nghịch đảo thông qua phép khử Gauss-Jordan hoặc phân rã LU. Với ma trận 2×2, công thức nổi tiếng là (1/det) × [d, -b; -c, a].

Tại Sao Ma Trận Quan Trọng Ngoài Toán Học Giáo Trình

Ma trận xuất hiện khắp nơi trong điện toán hiện đại vì mọi phép biến đổi tuyến tính đều là ma trận:

Các Ma Trận Đặc Biệt Cần Biết

Ghi Chú về Ổn Định Số Học

Số học ma trận trong dấu phẩy động ẩn chứa những bẫy không xuất hiện trong các ví dụ giáo trình. Số điều kiện của ma trận đo mức độ nghịch đảo của nó khuếch đại các nhiễu loạn nhỏ trong đầu vào, với ma trận điều kiện kém, sai số 0,1% trong một phần tử có thể gây ra sai số 1000% trong kết quả. Ví dụ bệnh lý kinh điển là ma trận Hilbert (các phần tử 1/(i+j-1)), số điều kiện của nó tăng trưởng mũ theo kích thước; ma trận Hilbert 6×6 đã có số điều kiện khoảng 10⁷, nghĩa là bảy chữ số thập phân của độ chính xác bị mất trong phép nghịch đảo.

Trong thực tế, các nhà khoa học tính toán hầu như không bao giờ tính A⁻¹ một cách tường minh. Để giải A·x = b, họ dùng phân rã LU hoặc QR; để sử dụng nghịch đảo một cách ngầm định, họ nhân A⁻¹·b qua phân rã thay vì xây dựng A⁻¹ trước. Với các hệ điều kiện kém hoặc hình chữ nhật, giả nghịch đảo dựa trên SVD (nghịch đảo Moore-Penrose) được ưu tiên. Máy tính này tính nghịch đảo tường minh cho mục đích giáo dục, điều này ổn với kích thước nhỏ nhưng đáng lưu ý khi mở rộng quy mô.

Phạm Vi Thực Tế

Máy tính này bao gồm cộng / trừ / nhân / chuyển vị / định thức / nghịch đảo trên các ma trận đến 6×6, các phép toán mà một sinh viên gặp trong khóa học đại số tuyến tính đầu tiên. Nó không tính trị riêng, vector riêng, hay các phân rã ma trận (LU, QR, SVD); nó không hiển thị các bước khử hàng; nó không hỗ trợ các phần tử ký hiệu hoặc phân số; nó không xử lý số phức; và nó không chấp nhận các biểu thức ma trận như A²·BT. Với những tính năng đó, các công cụ chuyên dụng (Symbolab, Wolfram Alpha, MATLAB, NumPy, Octave, SageMath) là bước tiếp theo phù hợp.

Thêm Câu Hỏi

Tại sao phép nhân ma trận không có tính giao hoán?

Vì ma trận đại diện cho các phép biến đổi, và thứ tự áp dụng các phép biến đổi quan trọng. Xoay rồi tịnh tiến không giống như tịnh tiến rồi xoay, phép tịnh tiến kéo khác nhau từ hướng bắt đầu khác nhau. Tính không giao hoán của phép nhân ma trận là mã hóa đại số của thực tế vật lý này, và đó là điều làm cho đồ họa 3D và cơ học lượng tử thú vị (và khó khăn).

Khi nào một ma trận không thể nghịch đảo?

Khi định thức của nó bằng 0 (tương đương, khi các hàng (hoặc cột) của nó phụ thuộc tuyến tính), tương đương, khi phép biến đổi tuyến tính mà nó đại diện thu gọn một vector khác 0 về 0. Về mặt hình học, ma trận ánh xạ không gian chiều cao hơn lên không gian con chiều thấp hơn và bạn không thể khôi phục chiều đã mất. Các ma trận như vậy được gọi là «suy biến.» Với các ma trận điều kiện kém nhưng về mặt kỹ thuật có thể nghịch đảo, nghịch đảo tồn tại về mặt lý thuyết nhưng hoàn toàn không chính xác trong dấu phẩy động, xem phần ổn định số học ở trên.

Tại sao 1-based indexing trong toán học nhưng 0-based trong code?

Quy ước toán học có từ nhiều thế kỷ, hàng đầu tiên là hàng 1 vì đếm bắt đầu từ 1. Các ngôn ngữ lập trình chọn chỉ mục 0-based vì nó đơn giản hóa số học con trỏ trên bộ nhớ mảng: phần tử ở offset i là tại base + i × element_size, không có hệ số điều chỉnh -1. Cả hai quy ước đều ăn sâu; một trong những nguồn lỗi đáng tin cậy nhất là dịch bài báo nói «hàng 3» thành code cần matrix[2].

Có thuật toán nhân ma trận nhanh nhất không?

Thuật toán vòng lặp ba lồng nhau đơn giản chạy trong O(n³). Volker Strassen đã chỉ ra vào năm 1969 rằng 7 phép nhân là đủ cho ma trận 2×2 (thay vì 8), cho ra O(n^2.807) tiệm cận khi áp dụng đệ quy. Các cải tiến liên tiếp qua nhiều thập kỷ đã đẩy giới hạn lý thuyết xuống khoảng O(n^2.371), nhưng các hằng số quá lớn đến mức với bất kỳ ma trận nào bạn thực sự gặp, O(n³) đơn giản được triển khai bên trong BLAS / cuBLAS vẫn thắng. Giới hạn dưới còn mở về mặt toán học: ít nhất là O(n²) nhưng không ai biết câu trả lời chính xác.

Có gì được gửi lên máy chủ không?

Không. Các phép tính là các phép toán dấu phẩy động đơn giản trong JavaScript, được tính toán trong trình duyệt của bạn. Không có gì về các ma trận của bạn rời khỏi trang; công cụ hoạt động ngoại tuyến sau khi đã tải.

Công cụ liên quan