Quá trình Gram–Schmidt

Trong toán học, đặc biệt là trong lĩnh vực đại số tuyến tính và giải tích số, quá trình Gram–Schmidt là một phương pháp trực chuẩn hóa một tập hợp các vectơ trong một không gian tích trong, thường là không gian Euclid Rn được trang bị tích trong tiêu chuẩn. Quá trình Gram–Schmidt xử lý một tập hợp vectơ hữu hạn và độc lập tuyến tính S = {v1,..., vk} với  và tạo ra từ tập đã cho một tập vectơ trực giao } sinh ra không gian con k chiều của Rn tương tự không gian sinh bởi tập S.

Phương pháp này được đặt tên theo Jørgen Pedersen Gram và Erhard Schmidt, nhưng Pierre-Simon Laplace đã quen thuộc với nó trước Gram và Schmidt. Trong lý thuyết phân rã nhóm Lie nó được tổng quát hóa bởi phân rã Iwasawa.

Áp dụng quá trình Gram–Schmidt vào các vectơ cột của một ma trận với hạng cột đầy đủ, ta có phép phân rã QR (ma trận đó được phân rã thành một ma trận trực giao và tam giác).

 Quá trình Gram–Schmidt 
khung|Quá trình Gram-Schmidt (có cải tiến) được thực hiện trên ba vectơ độc lập tuyến tính không trực giao của một cơ sở cho không gian R3. Nhấp vào ảnh để xem chi tiết.
Ta định nghĩa toán tử chiếu vectơ bởi



trong đó  ký hiệu tích trong của hai vectơ u và v. Toán tử chiếu trực giao vectơ v vào đường thẳng span bởi vectơ u. Nếu u = 0, ta định nghĩa , tức là ánh xạ chiếu  là ánh xạ không, nó biến mọi vectơ thành vectơ không.

Quá trình Gram–Schmidt sau đó được tiến hành như sau:



Dãy u1,..., uk là dãy vectơ trực giao cần tìm, và các vectơ được chuẩn hóa e1,..., ek tạo thành một tập hợp trực chuẩn. Việc tính toán dãy u1,..., uk được gọi là trực giao hóa Gram–Schmidt, còn việc tính toán dãy e1,..., ek được gọi là trực chuẩn hóa Gram–Schmidt bởi vì các vectơ đã được chuẩn hóa.

Để kiểm tra xem các công thức trên liệu có cho một dãy trực giao, đầu tiên ta tính  bằng cách thế vào công thức ở trên cho u2: ta được 0. Sau đó sử dụng điều này để tính  bằng cách lại thế vào công thức ở trên cho u3: ta tiếp tục được 0. Chứng minh tổng quát sau đó được tiếp tục nhờ phép quy nạp toán học.

Nói một cách hình học, phương pháp này được tiếp tục như sau: để tính ui nó chiếu trực giao vectơ vi vào không gian con U sinh bởi u1,..., ui−1, mà đó cũng là không gian con sinh bởi v1,..., vi−1. Vectơ ui sau đó được định nghĩa là hiệu giữa vi và hình chiếu này và đảm bảo là trực giao với tất cả các vectơ trong không gian con U.

Quá trình Gram–Schmidt cũng áp dụng cho một dãy độc lập tuyến tính và vô hạn đếm được {vi}i. Kết quả là một dãy trực giao (hay trực chuẩn) {ui}i sao cho với một số tự nhiên n: span đại số của v1,..., vn cũng chính là span của u1,..., un.

Nếu quá trình Gram–Schmidt được áp dụng cho một dãy phụ thuộc tuyến tính, nó sẽ cho ra vectơ 0 ở bước thứ i, giả sử vi là một tổ hợp tuyến tính của . Nếu cần phải có một hệ cơ sở trực chuẩn thì thuật toán nên tìm ra các vectơ không trong các kết quả và loại bỏ chúng vì không có một bội nào của vectơ không mà có độ dài bằng 1. Số vectơ đầu ra của thuật toán sẽ bằng số chiều của không gian được span bởi các vectơ đầu vào.

 Ví dụ 

 Không gian Euclide 
Xét hệ vectơ sau trong R2 (với tích trong quy ước chính là tích vô hướng)



Bây giờ, thực hiện Gram–Schmidt để có được hệ các vectơ trực giao:




Ta kiểm tra rằng các vectơ u1 và u2 chắc chắn là trực giao:



lưu ý rằng nếu tích vô hướng của hai vectơ bằng 0 thì chúng trực giao.

Đối với các vectơ khác vectơ không, ta có thể chuẩn hóa các vectơ đó bằng cách chia cho độ dài của chúng như dưới đây:




 Tham khảo 

 Tham khảo sách 

 .
 .
 .
 .

 Liên kết ngoài 


 Harvey Mudd College Math Tutorial on the Gram-Schmidt algorithm
 Earliest known uses of some of the words of mathematics: G The entry "Gram-Schmidt orthogonalization" has some information and references on the origins of the method.
 Demos: Gram Schmidt process in plane and Gram Schmidt process in space
 Gram-Schmidt orthogonalization applet
 NAG Gram–Schmidt orthogonalization of n vectors of order m routine
 Proof: Raymond Puzio, Keenan Kidwell. "proof of Gram-Schmidt orthogonalization algorithm" (version 8). PlanetMath.org.

Thể loại:Đại số tuyến tính
Thể loại:Giải tích hàm