Trực giao và trực chuẩn hoá Gram-Schmidt
Nếu cơ sở là một bộ hướng gốc để mô tả không gian, thì không phải cơ sở nào cũng “dễ dùng” như nhau. Có những cơ sở rất lệch, các hướng dính vào nhau, khiến việc tính toán và đọc trực giác đều mệt. Nhưng cũng có những cơ sở rất sạch: các hướng vuông góc với nhau, tách bạch, không chồng lấn.
Bài này nói về chính điều đó.
1. Trực giao là gì, và vì sao nó dễ chịu đến vậy?
Hãy tưởng tượng bạn đang mô tả chuyển động trong một căn phòng.
- Nếu dùng hai hướng ngang và dọc vuông góc nhau, mọi thứ rất rõ: chuyển động sang phải không lẫn với chuyển động đi lên.
- Nhưng nếu dùng hai hướng xiên, một chuyển động đơn giản cũng bị “nhiễu” sang cả hai hướng cùng lúc.
Đó là lý do các hệ trục vuông góc luôn được ưa thích. Chúng làm các thành phần tách rời nhau.
Trong đại số tuyến tính, sự “vuông góc” ấy được gọi là trực giao.
2. Tích vô hướng và trực giao
$$ x=(x_1,\dots,x_n),\qquad y=(y_1,\dots,y_n) $$$$ \langle x,y\rangle=x_1y_1+\cdots+x_ny_n. $$$$ \langle x,y\rangle=0. $$Điều kiện này chính là cách đại số để nói rằng hai vectơ vuông góc với nhau.
$$ \left\langle \begin{bmatrix} 1\\ 0 \end{bmatrix}, \begin{bmatrix} 0\\ 1 \end{bmatrix} \right\rangle=0, $$nên hai vectơ cơ sở chuẩn là trực giao.
3. Hệ trực giao và hệ trực chuẩn
Một hệ vectơ ${v_1,\dots,v_m}$ được gọi là:
- hệ trực giao nếu mọi cặp khác nhau đều trực giao;
- hệ trực chuẩn nếu nó trực giao và đồng thời mọi vectơ đều có độ dài bằng $1$.
Hiểu bằng lời:
- trực giao nghĩa là các hướng vuông góc nhau;
- trực chuẩn nghĩa là vừa vuông góc, vừa đã được chuẩn hoá cho cùng “đơn vị đo”.
Hệ trực chuẩn là kiểu cơ sở đẹp nhất trong thực hành.
4. Vì sao hệ trực chuẩn đặc biệt tiện?
$$ v=\langle v,e_1\rangle e_1+\cdots+\langle v,e_n\rangle e_n. $$Tức là để biết $v$ có bao nhiêu thành phần theo hướng $e_i$, ta chỉ cần lấy tích vô hướng $\langle v,e_i\rangle$.
Không có sự “nhiễu chéo” giữa các hướng.
Đó là lý do trực giao quan trọng không chỉ về hình học, mà cả về tính toán.
5. Phép chiếu: cái bóng của một vectơ lên một hướng
Trước khi vào Gram-Schmidt, ta cần một thao tác cơ bản: chiếu một vectơ lên một hướng.
$$ \operatorname{proj}_v(u)=\frac{\langle u,v\rangle}{\langle v,v\rangle}v. $$Hiểu trực giác:
đây là phần “bóng” của $u$ nằm dọc theo hướng $v$.
Gram-Schmidt về bản chất chỉ làm đi làm lại đúng một việc:
- lấy một vectơ mới;
- trừ đi các “cái bóng” của nó trên những hướng đã có;
- phần còn lại sẽ vuông góc với các hướng cũ.
6. Gram-Schmidt: biến một cơ sở xiên thành một cơ sở vuông góc
$$ u_1,u_2,\dots,u_m. $$Chúng sinh ra một không gian con nào đó, nhưng chưa chắc vuông góc với nhau. Thuật toán Gram-Schmidt cho phép biến hệ này thành một hệ trực giao, rồi từ đó chuẩn hoá thành hệ trực chuẩn.
6.1 Ý tưởng
Ta làm tuần tự:
- giữ nguyên $u_1$ làm hướng đầu tiên;
- lấy $u_2$ rồi trừ đi phần bóng của nó trên hướng đầu tiên;
- lấy $u_3$ rồi trừ đi bóng của nó trên hai hướng đầu tiên;
- cứ tiếp tục như vậy.
Mỗi lần trừ bóng xong, phần còn lại là một hướng mới thật sự vuông góc với mọi hướng đã có.
6.2 Công thức
$$ v_1=u_1. $$$$ v_2=u_2-\operatorname{proj}_{v_1}(u_2), $$$$ v_3=u_3-\operatorname{proj}_{v_1}(u_3)-\operatorname{proj}_{v_2}(u_3), $$$$ v_k=u_k-\sum_{j=1}^{k-1}\operatorname{proj}_{v_j}(u_k). $$Hệ ${v_1,\dots,v_m}$ thu được là trực giao.
$$ e_k=\frac{v_k}{\|v_k\|}. $$7. Một ví dụ đầy đủ
$$ u_1=(0,1,1),\qquad u_2=(1,0,1),\qquad u_3=(1,1,0). $$Ta sẽ trực chuẩn hoá chúng bằng Gram-Schmidt.
7.1 Bước đầu tiên
$$ v_1=u_1=(0,1,1). $$$$ \|v_1\|=\sqrt{0^2+1^2+1^2}=\sqrt2. $$$$ e_1=\frac{1}{\sqrt2}(0,1,1). $$7.2 Bước thứ hai
$$ v_2=u_2-\operatorname{proj}_{v_1}(u_2). $$$$ \langle u_2,v_1\rangle=(1,0,1)\cdot(0,1,1)=1, $$$$ \langle v_1,v_1\rangle=2. $$$$ \operatorname{proj}_{v_1}(u_2)=\frac12(0,1,1). $$$$ v_2=(1,0,1)-\frac12(0,1,1)=\left(1,-\frac12,\frac12\right). $$$$ (2,-1,1). $$$$ e_2=\frac{1}{\sqrt6}(2,-1,1). $$7.3 Bước thứ ba
Giờ ta lấy $u_3$ và trừ đi bóng của nó trên cả $v_1$ lẫn $v_2$.
$$ (1,1,-1). $$$$ e_3=\frac{1}{\sqrt3}(1,1,-1). $$7.4 Kết luận của ví dụ
$$ e_1=\frac{1}{\sqrt2}(0,1,1),\qquad e_2=\frac{1}{\sqrt6}(2,-1,1),\qquad e_3=\frac{1}{\sqrt3}(1,1,-1). $$Ba vectơ này:
- trực giao đôi một;
- có độ dài bằng $1$;
- sinh ra đúng cùng không gian với ba vectơ ban đầu.
Đây là điều Gram-Schmidt luôn bảo đảm.
8. Điều gì đang thật sự diễn ra trong Gram-Schmidt?
Nếu chỉ nhìn công thức, Gram-Schmidt dễ thành một quy trình máy móc. Nhưng về mặt trực giác, nó rất đẹp:
- $u_1$ là hướng đầu tiên;
- $u_2$ có thể chứa một phần “dính” theo $u_1$, nên ta gạt phần đó đi;
- $u_3$ có thể dính theo cả hai hướng trước, nên ta gạt tiếp;
- cuối cùng, mỗi hướng còn lại đều là phần “mới thật sự”.
Nói ngắn gọn:
Gram-Schmidt là quá trình bóc tách từng hướng mới ra khỏi những phần đã trùng lặp với các hướng cũ.
9. Vì sao Gram-Schmidt quan trọng?
Thuật toán này quan trọng vì nó là cầu nối giữa hai kiểu cơ sở:
- một cơ sở bất kỳ, có thể xiên và khó dùng;
- một cơ sở trực chuẩn, dễ tính và dễ hiểu.
Nó xuất hiện ở rất nhiều nơi:
- trong phân tích QR;
- trong least squares;
- trong giải tích số;
- trong xử lý tín hiệu;
- trong cơ học lượng tử và rất nhiều bài toán cần tách các hướng độc lập thật sạch.
10. Kết luận
Trực giao là cách đại số tuyến tính nói về sự vuông góc. Một hệ trực chuẩn là một hệ hướng gốc rất “sạch”: các hướng tách bạch và đã được chuẩn hoá cùng đơn vị.
Thuật toán Gram-Schmidt cho ta đúng thứ đó:
- bắt đầu từ một hệ độc lập tuyến tính bất kỳ;
- loại dần các phần chồng lấn;
- thu được một hệ trực giao;
- rồi chuẩn hoá để có một hệ trực chuẩn.
Nếu ghi nhớ được hình ảnh “trừ đi cái bóng”, thì Gram-Schmidt sẽ bớt rất nhiều vẻ khô khan của nó. Và đó cũng là chìa khoá để bước sang bài tiếp theo: phân tích QR.
Đọc tiếp
- Cơ sở, độc lập tuyến tính và số chiều của không gian vectơ: vì Gram-Schmidt bắt đầu từ một hệ độc lập tuyến tính rồi biến nó thành một cơ sở trực chuẩn đẹp hơn.
- Phân tích QR: tách ma trận thành hướng vuông góc và hệ số pha trộn: đây là nơi Gram-Schmidt được viết lại dưới dạng ma trận.
- Chéo hoá trực giao: khi ma trận đối xứng để lộ các trục chính: bài này cho thấy vì sao các cơ sở trực chuẩn lại đặc biệt mạnh trong chéo hoá.