Materi
Rumus proyeksi dan koordinat menjadi sederhana bila basisnya ortogonal, tetapi basis yang datang dari soal jarang ortogonal. Proses Gram–Schmidt (Interactive Linear Algebra §6.4, Austin §6.4) mengubah basis v₁, …, vₖ menjadi basis ortogonal u₁, …, uₖ yang merentang subruang yang sama. Langkahnya: u₁ = v₁, lalu setiap vⱼ dikurangi proyeksinya pada semua u sebelumnya, uⱼ = vⱼ − Σᵢ<ⱼ (vⱼ · uᵢ / uᵢ · uᵢ) uᵢ. Yang tersisa adalah bagian vⱼ yang tegak lurus terhadap rentang vektor-vektor sebelumnya.
Dua sifat menjaga hasilnya. Pertama, rentang u₁, …, uⱼ sama dengan rentang v₁, …, vⱼ pada setiap langkah, sehingga urutan vektor asli ikut menentukan hasilnya. Kedua, bila suatu vⱼ sudah berada di rentang vektor-vektor sebelumnya, proyeksinya adalah vⱼ sendiri dan uⱼ menjadi vektor nol; jadi Gram–Schmidt sekaligus menguji kebebasan linear. Basis ortonormal didapat dengan membagi setiap uⱼ dengan panjangnya, di setiap langkah atau setelah semuanya selesai.
Di komputer, proyeksi dihitung terhadap vektor yang SUDAH diperbarui, satu per satu, karena galat pembulatan pada rumus sekaligus menumpuk dan membuat vektor akhir tidak lagi tepat tegak lurus. Pustaka numerik melangkah lebih jauh dengan faktorisasi QR, pokok pelajaran berikutnya. Untuk menandai vektor yang menjadi nol, pakai ambang kecil seperti 1e−10, bukan perbandingan dengan nol.
v₁ = (1, 0, 1), v₂ = (2, 1, 0), v₃ = (1, 1, 1)
u₁ = (1, 0, 1)
u₂ = v₂ − (v₂·u₁/u₁·u₁)u₁ = (2, 1, 0) − (2/2)(1, 0, 1) = (1, 1, −1)
u₃ = v₃ − (2/2)(1, 0, 1) − (1/3)(1, 1, −1) = (−1/3, 2/3, 1/3)
periksa: u₁·u₂ = 1 + 0 − 1 = 0, u₁·u₃ = 0, u₂·u₃ = (−1 + 2 − 1)/3 = 0 ✓
ortonormal: bagi dengan ‖u₁‖ = √2, ‖u₂‖ = √3, ‖u₃‖ = √6/3