Materi
Kelas Aljabar Linier Lanjutan mendiagonalkan matriks sebagai A = PDP⁻¹ dan mencatat bahwa tidak setiap matriks dapat didiagonalkan. Matriks simetris, A = Aᵀ, selalu dapat, dan dengan cara yang lebih rapi. Teorema spektral (Austin §7.1, Kuttler §7.4) menyatakan bahwa matriks simetris real punya nilai eigen yang semuanya real, vektor eigen untuk nilai eigen yang berbeda saling tegak lurus, dan ada basis ortonormal Rⁿ yang terdiri atas vektor eigennya. Jadi A = QDQᵀ dengan Q matriks ortogonal; P⁻¹ cukup ditulis Qᵀ. Kebalikannya juga berlaku: matriks yang dapat didiagonalkan secara ortogonal pasti simetris.
Bukti ketegaklurusannya pendek: bila Av = λv dan Aw = μw, maka λ(v · w) = (Av) · w = v · (Aw) = μ(v · w), dan karena λ ≠ μ, haruslah v · w = 0. Untuk nilai eigen berkelipatan, ruang eigennya dipilihkan basis ortonormal lewat Gram–Schmidt. Matriks simetris muncul di banyak tempat: AᵀA dari kuadrat terkecil, matriks kovarians data, dan matriks jarak. Untuk AᵀA, semua nilai eigennya bahkan tidak negatif, karena v · AᵀAv = ‖Av‖² ≥ 0.
np.linalg.eigh khusus untuk matriks simetris: ia hanya membaca setengah segitiga matriks, mengembalikan nilai eigen real yang terurut NAIK, dan kolom vektor eigen yang ortonormal. np.linalg.eig tidak menjamin urutan nilai eigen, dan untuk nilai eigen kembar ia memilih sembarang basis ruang eigennya, yang belum tentu ortonormal. Untuk mengurutkan turun, np.argsort memberi indeks urutan naik yang tinggal dibalik.
A = [[4, 2], [2, 1]] (simetris)
polinom karakteristik: λ² − 5λ = 0 → λ = 5 dan λ = 0
λ = 5: (A − 5I)v = 0 → v = (2, 1); λ = 0: v = (1, −2)
(2, 1)·(1, −2) = 0 ✓ tegak lurus
Q = (1/√5)[[2, 1], [1, −2]], D = diag(5, 0), A = QDQᵀ
import numpy as np
nilai, Q = np.linalg.eigh(np.array([[4., 2], [2, 1]]))
nilai # array([0., 5.]) — terurut naik