# Một góc nhìn khác về định thức ## 1. Định thức là gì? Khi chúng ta bắt đầu học đại số tuyến tính và học theo những tài liệu cổ điển ở các trường đại học giảng dạy, ta có thể bắt gặp định nghĩa của định thức như sau: > Cho ma trận vuông A cấp n×n với các phần tử aᵢⱼ. Định thức của ma trận A, ký hiệu là det(A) hoặc |A|, được định nghĩa bằng công thức: > det(A) = Σ sgn(σ) · a₁σ(1) · a₂σ(2) · ... · aₙσ(n) > Trong đó: > > Σ là tổng trên tất cả các hoán vị σ của tập {1, 2, ..., n} > sgn(σ) là dấu của hoán vị σ (bằng +1 nếu σ là hoán vị chẵn, bằng -1 nếu σ là hoán vị lẻ) > Tích a₁σ(1) · a₂σ(2) · ... · aₙσ(n) gọi là tích sơ cấp Hay nói đơn giản hơn là chọn đại 1 hàng i rồi tính tổng của từng phần tử Aij trên hàng i nhân với định thức của ma trận con đã bỏ hàng i và cột j. Chúng ta có thể dễ dàng nhận thấy, định nghĩa như vậy là quá rối rắm, phức tạp và chúng ta hoàn toàn đếch hiểu được rốt cuộc định thức nó là cái gì. Mặc dù ban đầu khi mới phát hiện ra định thức, các nhà toán học cũng thực sự không hiểu được chúng ta cái gì, nhưng chúng ta, những người đi sau xứng đáng có được 1 góc nhìn dễ hiểu hơn! ## 2. Một góc nhìn khác về định thức Tôi sẽ cung cấp cho bạn một thông tin về định thức luôn, đó là trị tuyệt đối của định thức sẽ cho chúng ta biết được diện tích hoặc thể tích của ô đơn vị của ma trận mà nó nắm giữ. Ví dụ như: Chúng ta có 1 ma trận đơn vị 2x2 như sau: \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix} Nếu như ta coi mỗi hàng của nó là 1 vector đơn vị trong 1 hệ quy chiếu (mà thực ra đúng là vậy do (1,0) và (0,1) là cơ sợ cho hệ tọa độ Descartes ta hay xài), ta sẽ có hình mình họa sau: ![image](https://hackmd.io/_uploads/rkH1A7xBxe.png) Như bạn có thể thấy, 2 vector đó sẽ tạo ra 1 ô cơ sở cho không gian là 1 hình vuông và dễ dàng nhận ô kia có diện tích là 1 do nó là 1 hình vuông 1x1 nên định thức của ma trận tôi vừa nêu cũng là 1. Ở 1 ví dụ khác, giả sử ta có ma trận: \begin{pmatrix} 1 & 0 \\ 1 & 1 \end{pmatrix} Ta sẽ có 1 hình minh họa như sau: ![image](https://hackmd.io/_uploads/r1BlyElBeg.png) Ta dễ dàng nhận thấy chiều cao và cạnh đáy của hình bình hành trên là 1 nên diện tích của nó cũng là 1 và đúng quả thật, định thức của ma trận trên là 1. Để kiểm chứng cho luận điểm của tôi, bạn hoàn toàn có thể dùng đoạn code Julia sau để kiểm chứng: ``` using LinearAlgebra A=[1 0;0 1] println(det(A)) B=[1 0;1 1] println(det(B)) ``` Output: ``` 1 1 ``` ## 3. Xây dựng phương pháp tính định thức Ok, vậy là đã rõ ràng về định thức là gì, giờ ta hãy cùng nhau xây dựng 1 phương pháp tính định thức thật đơn giản. ### a. Det(I)=1 Như tôi đã đề cập ở trên và bạn có thể thấy I lúc nào cũng sẽ là 1 hình vuông, hoặc 1 khối vuông nên mặc định rằng định thức của I sẽ là 1. ### b. Đổi chỗ hàng Đổi chỗ hàng sẽ làm đổi dấu định thức. Lý giải dễ hiểu: khi ta đổi chỗ 2 vector hàng thì về bản chất nó vẫn cùng là 1 hình nên trị tuyệt đối của định thức hay diện tích/thể tích của nó vẫn không đổi. Còn vì sao nó đổi dấu thì khi khác lý giải. $$ \begin{vmatrix} c & d \\ a & b \end{vmatrix} =-\begin{vmatrix} a & b \\ c & d \end{vmatrix} $$ ### c. Định thức của ma trận có vector không độc lập Nếu ma trận có các vector không độc lập thì sẽ có định thức là 0, để chứng minh điều đó, ta quan sát ma trận sau: $$ \begin{pmatrix} 1 & 2 \\ 2 & 4 \end{pmatrix} $$ Nó có thể được hình tượng hóa thành: ![image](https://hackmd.io/_uploads/H1sVkAlSel.png) Ta có thể dễ dàng nhận ra 2 vector (1,2) và (2,4) tạo thành 1 đường thẳng nên rõ ràng diện tích tạo bởi chúng sẽ là 0. Quan sát 1 ví dụ khác, ta lại có 1 ma trận: \begin{pmatrix} 1 & 2 & 0\\ 2 & 4 & 1 \end{pmatrix} Dễ dàng nhận ra rằng ta có 2 vector trong không gian 3 chiều, nên thay vì tạo thành 1 hình khối, nó sẽ chỉ tạo nên 1 mặt phẳng do đó, thể tích hay trị tuyệt đối của định thức này cũng là 0. ### d. Nhân 1 hàng $$ \begin{vmatrix} t \cdot a & t \cdot b \\ c & d \end{vmatrix} = t \cdot \begin{vmatrix} a & b \\ c & d \end{vmatrix} $$ Nói ngắn gọn thì là khi ta kéo giãn 1 cạnh t lần và giữ nguyên các cạnh còn lại (giả sử như tạm thời chỉ xét 2 chiều) thì diện tích của hình bình hành do 2 vector (a,b) và (c,d) tạo ra sẽ bị dãn ra t lần. Giả sử, ta có ma trận sau: \begin{pmatrix} 3 & 0 \\ 2 & 2 \end{pmatrix} Giờ thì ta hãy cùng hình tượng hóa ma trận này: ![image](https://hackmd.io/_uploads/BJ05RigSlx.png) Ok, bạn có thể thấy rằng 2 vector (3,0) và (2,2) của chúng ta sẽ lần lượt là vector OA và OB, trị tuyệt đối của định thức chúng tạo ra sẽ là diện tích của hình bình hành trên. Vậy chuyện gì sẽ xảy ra nếu như tôi nói rằng tôi kéo dài vector OA ra khoảng 2 lần? ![image](https://hackmd.io/_uploads/r155kngHxl.png) Bạn cũng có thể nhận ra rằng sau khi tôi kéo dài OA ra 2 lần theo hướng cũ của nó, diện tích của hình mới này tăng gấp đôi. Đây là 1 quy tắc khá dễ hiểu nên bạn hoàn toàn có thể skip đến phần tiếp theo, còn nếu hứng thú cách chứng minh, ta có thể xem chứng minh đơn giản: #### Chứng minh Mối Quan Hệ Diện Tích Khi Kéo Dài Cạnh Đáy --- Giả sử chúng ta có một tam giác với: * Đường cao: $h$ * Cạnh đáy: $b$ Diện tích $S$ của hình bình hành được tính bằng công thức: $$S = \ h \cdot b$$ --- Khi cạnh đáy $b$ được kéo dài lên **$x$ lần**, cạnh đáy mới sẽ là: $$b' = x \cdot b$$ Ví dụ, nếu kéo dài $2$ lần như bạn đề cập (OA := 2\*OA), thì $x=2$ và $b' = 2 \cdot b$. --- Đường cao $h$ không thay đổi khi chúng ta chỉ kéo dài cạnh đáy. Vì vậy, diện tích mới $S'$ của hình bình hành sẽ là: $$S' = \\h \cdot b'$$ Thay $b' = x \cdot b$ vào công thức trên: $$S' = \\(x \cdot b)$$ Sắp xếp lại các số hạng: $$S' = x \cdot \left(h \cdot b \right)$$ --- Vì $S = \frac{1}{2} \cdot h \cdot b$, chúng ta có thể thay thế vào biểu thức $S'$: $$S' = x \cdot S$$ Ok vậy là đã chứng minh xong quy tắc thứ 1. ### e. Cộng 1 hàng $$ \begin{vmatrix} a+a' & b+b' \\ c & d \end{vmatrix} = \begin{vmatrix} a & b \\ c & d \end{vmatrix} +\begin{vmatrix} a' & b' \\ c & d \end{vmatrix} $$ Giả sử, ta có ma trận: \begin{pmatrix} 3 & 0 \\ 2 & 2 \end{pmatrix} Ok giờ thử cộng thêm 1 vector giả như là (2,1) cho hàng trên xem chuyện gì sẽ xảy ra bằng đoạn code julia như sau: ``` using LinearAlgebra A=[3 0;2 2] B=[2 1;2 2] A_PLUS_B=[5 1;2 2] println(det(A)) println(det(B)) println(det(A_PLUS_B)) ``` Output: ``` 6 2 8 ``` Thú vị phải không, sau khi tính xong định thức cho chúng, chúng ta đã có: $$ \begin{vmatrix} 3+2 & 0+1 \\ 2 & 2 \end{vmatrix} = \begin{vmatrix} 3 & 0 \\ 2 & 2 \end{vmatrix} +\begin{vmatrix} 2 & 1 \\ 2 & 2 \end{vmatrix} $$ Ok, hãy bắt đầu dùng hình học chứng minh quy tắc này, giả sử tư bắt đầu với 2 vector OA và OB bất kì. ![image](https://hackmd.io/_uploads/rJ2qmpxSgg.png) Giờ ta sẽ thêm 1 vector OC bất kì vào OB để tạo thành vector OD: ![image](https://hackmd.io/_uploads/rkny4TeSxg.png) Viết dưới dạng đại số thì ban đầu ta có ma trận sau: \begin{pmatrix} a_{1} & a_{2} \\ b_{1} & b_{2} \end{pmatrix} Hàng trên sẽ là OA hàng dưới là OB, sau đó ta thực hiện cộng 1 vector OC có tọa độ (c_{1} c_{2})bất kì vào OB: \begin{pmatrix} a_{1} & a_{2} \\ b_{1}+c_{1} & b_{2}+c_{2} \end{pmatrix} Ok, tiếp tục với hình học: ![image](https://hackmd.io/_uploads/HJP9BTlSxx.png) Từ C,B,D ta lần lượt dựng các đường cao Ch1, Bh2 và Dh3 lên đường thẳng OA. Vì OA giữ nguyên nên ta sẽ chứng minh được điều ta vừa nêu nếu chỉ ra được rằ rằng: Diện tích tạo bởi tứ giác do OD và OA bằng tổng diện tích của 2 tứ giá do OA;OB và OA;OC tạo thành, điều đó tương đương: $Dh_3 = Bh_2 + Ch_1$ Đầu tiên, ta sẽ dựng đường cao BE lên Dh3: ![image](https://hackmd.io/_uploads/rJDdDagrgx.png) Dễ dàng nhận thấy tứ giác $BEh_3h_2$ có 3 góc vuông nên nó sẽ là hình chữ nhật. $\Rightarrow Eh_3 = Bh_2 \tag{1}$ --- Tiếp tục xét tam giác $COh_1$ và tam giác $DBE$, ta có: - $CO = BD$ - $\angle BDE = \angle OCh_1$ (do $OC \parallel BD$ và $Ch_1 \parallel Dh_3$ do cùng vuông góc $OA$) - $\angle DBE = \angle COh_1$ (do 2 tam giác là tam giác vuông) $\Rightarrow \triangle COh_1 = \triangle DBE \Rightarrow DE = Ch_1 \tag{2}$ --- Đem (1) + (2), ta có: $DE + Eh_3 = Bh_2 + Ch_1 \Leftrightarrow Dh_3 = Bh_2 + Ch_1$ $\Rightarrow$ Điều ta cần chứng minh. #### Lưu ý: Mọi nguyên tắc liên quan đến tương tác với 1 hàng (như 2 nguyên tắc vừa nêu) của ma trận đều có thể thao tác với bất kì hàng nào thoải mái, miễn sao lúc thao tác giữ nguyên các hàng còn lại, điều đó đạt lượt là nhờ quy tắc thứ 2. ### f. Cộng hàng này với t lần hàng kia $$ \begin{vmatrix} a & b \\ c & d \end{vmatrix} = \begin{vmatrix} a+t\cdot c & b+t\cdot d\\ c & d \end{vmatrix} $$ Áp dụng quy tắc vừa chứng minh ở trên, ta sẽ có: $$ \begin{vmatrix} a+t\cdot c & b+t\cdot d\\ c & d \end{vmatrix}=\begin{vmatrix} a & b\\ c & d \end{vmatrix}+\begin{vmatrix} t\cdot c & t\cdot d\\ c & d \end{vmatrix} $$ Dễ dàng nhận ra ma trận phía sau có 2 vector không độc lập, nên nó singular cho nên định thức đó sẽ là 0, nên ta sẽ còn: $$ \begin{vmatrix} a+t\cdot c & b+t\cdot d \\ c & d \end{vmatrix} = \begin{vmatrix} a & b \\ c & d \end{vmatrix} $$ Đó cũng chính là điều ta phải chứng minh. ## 4. Cách tính định thức ### a. Phương pháp tính định thức Ok chúng ta vừa thành công trong việc xây dựng 1 bộ quy tắc liên quan đến định thức, vậy bây giờ làm sao để ta có thể tính được định thức theo 1 cách sơ khai nhất? Nên nhớ dựa vào các quy tắc đã nêu ở trên, ta hoàn toàn có thể dùng khử Gauss để đưa ma trận về dạng ma trận đường chéo như sau: \begin{pmatrix} a & 0 \\ 0 & d \end{pmatrix} Dễ thấy rằng sau khi đưa được về dạng này thì độ dài của mỗi vector cũng chính là phần tử khác 0 của nó nên đến đây định thức của ma trận này sẽ là a*d. Giờ tôi sẽ chứng minh công thức của ma trận 2x2 như sau, đầu tiên ta có: \begin{pmatrix} a & b \\ c & d \end{pmatrix} Đầu tiên ta lấy hàng 2 trừ cho c/a lần hàng 1, ta được: \begin{pmatrix} a & b \\ 0 & d-b*c/a \end{pmatrix} Tiếp theo ta khử nốt b bằng cách lấy hàng 1 trừ đi bội số hàng 2 sao cho b về 0: \begin{pmatrix} a & 0 \\ 0 & d-b*c/a \end{pmatrix} Vậy lúc này định thức ma trận này là: $a \cdot \left(d - \frac{b \cdot c}{a}\right) = a \cdot d - b \cdot c$ Chuẩn như sách giáo khoa. The end.