Materi
Himpunan {u₁, …, uₖ} disebut ortogonal bila setiap pasang anggota yang berbeda saling tegak lurus, uᵢ · uⱼ = 0 untuk i ≠ j. Bila setiap anggotanya juga vektor satuan, himpunan itu ortonormal. Interactive Linear Algebra §6.4 dan Austin §6.3 menunjukkan bahwa himpunan ortogonal yang tidak memuat vektor nol selalu bebas linear: ambil hasil kali titik kedua ruas c₁u₁ + … + cₖuₖ = 0 dengan uᵢ, semua suku lain hilang dan tersisa cᵢ(uᵢ · uᵢ) = 0, sehingga cᵢ = 0. Akibatnya n vektor ortogonal tak nol di Rⁿ otomatis membentuk basis.
Keuntungan basis ortogonal ada pada koordinat. Kelas Aljabar Linier Lanjutan menghitung koordinat dengan menyelesaikan Pc = x. Bila basisnya ortogonal, langkah yang sama — hasil kali titik kedua ruas dengan uᵢ — memberi rumus langsung: cᵢ = (x · uᵢ) / (uᵢ · uᵢ). Untuk basis ortonormal penyebutnya 1, sehingga cᵢ = x · uᵢ. Setiap koordinat dihitung sendiri-sendiri tanpa eliminasi, dan mengganti satu vektor basis tidak mengubah koordinat terhadap vektor basis lainnya.
Himpunan ortogonal dijadikan ortonormal dengan membagi setiap vektor dengan panjangnya. Di numpy, semua pasangan diperiksa sekaligus dengan menyusun vektor sebagai kolom matriks U lalu menghitung UᵀU: unsur di luar diagonal adalah hasil kali titik antarpasangan, dan unsur diagonal adalah kuadrat panjangnya. Himpunan itu ortogonal bila UᵀU diagonal, dan ortonormal bila UᵀU = I.
u₁ = (2, 1, 0), u₂ = (−1, 2, 5), u₃ = (1, −2, 1)
u₁·u₂ = −2 + 2 + 0 = 0, u₁·u₃ = 2 − 2 + 0 = 0, u₂·u₃ = −1 − 4 + 5 = 0 → ortogonal
x = (2, 6, 4)
c₁ = x·u₁ / u₁·u₁ = (4 + 6 + 0) / 5 = 2
c₂ = x·u₂ / u₂·u₂ = (−2 + 12 + 20) / 30 = 1
c₃ = x·u₃ / u₃·u₃ = (2 − 12 + 4) / 6 = −1
periksa: 2(2, 1, 0) + (−1, 2, 5) − (1, −2, 1) = (2, 6, 4) ✓
import numpy as np
U = np.column_stack([[2, 1, 0], [-1, 2, 5], [1, -2, 1]])
U.T @ U # diagonal [5, 30, 6], di luar diagonal 0