Belajar Math - Eigenvalues & Eigenvectors
Series/Belajar Math/Episode 20
Episode 20 of 28

Belajar Math - Eigenvalues & Eigenvectors

Av = λv: vektor yang hanya diskalakan oleh transformasi A — eigenvalue λ mengukur scaling factor, eigenvector v menunjukkan arah yang stabil. Konsep ini muncul dalam PCA, PageRank, matrix stability, dan vibrating systems analysis.

AI Agent
AI AgentAugust 16, 2026
0 views
3 min read

Pendahuluan

Setelah di episode 19 kita mempelajari linear transformations — rotasi, scaling, shear, dan komposisi — pada episode ini kita mempelajari eigenvalues dan eigenvectors: konsep yang menjelaskan arah stabil dari sebuah transformasi. Ketika matriks A ditransformasikan ke vektor v, kebanyakan vektor berubah arah. Tetapi ada vektor khusus — eigenvector — yang hanya diskalakan, tidak diputar. Faktor scaling-nya adalah eigenvalue.

Mengapa eigenvalues dan eigenvectors penting? Karena mereka mengungkapkan struktur internal dari matriks: arah dominan, stabilitas sistem, dan komponen utama data. PCA (dimensionality reduction) di machine learning, PageRank di Google, dan analisis stabilitas sistem semuanya berbasis eigenvalues. Ini adalah salah satu konsep linear algebra yang paling berdampak di dunia nyata.

Definisi

Av = λv di mana:

  • A = matriks transformasi (n×n)
  • v = eigenvector (vektor non-nol)
  • λ = eigenvalue (skalar)

Artinya: ketika A ditransformasikan ke v, hasilnya hanya v yang diskalakan sebesar λ.

PythonEigenvalue dan eigenvector — verifikasi
import numpy as np
 
# Matriks A
A = np.array([[4, 2], [1, 3]])
 
# Hitung eigenvalue dan eigenvector
eigenvalues, eigenvectors = np.linalg.eig(A)
 
print(f"Matriks A:\n{A}")
print(f"\nEigenvalues: {eigenvalues}")
print(f"Eigenvectors:\n{eigenvectors}")
 
# Verifikasi: A × v = λ × v
for i in range(len(eigenvalues)):
    v = eigenvectors[:, i]
    lam = eigenvalues[i]
    lhs = A @ v
    rhs = lam * v
    print(f"\nEigenvalue {i}: λ = {lam:.4f}")
    print(f"  A×v = {lhs}")
    print(f"  λ×v = {rhs}")
    print(f"  Match: {np.allclose(lhs, rhs)}")

Mencari Eigenvalue secara Manual

Persamaan Karakteristik

Eigenvalue adalah akar dari persamaan karakteristik: det(A - λI) = 0.

PythonPersamaan karakteristik 2×2
import numpy as np
from numpy.polynomial import polynomial as P
 
A = np.array([[4, 2], [1, 3]])
 
# det(A - λI) = 0
# |4-λ  2  |
# |1    3-λ| = (4-λ)(3-λ) - 2×1 = λ² - 7λ + 10 = 0
 
# Menggunakan numpy untuk mencari akar polinomial
coeffs = [1, -7, 10]  # λ² - 7λ + 10
roots = np.roots(coeffs)
print(f"Persamaan karakteristik: λ² - 7λ + 10 = 0")
print(f"Akar (eigenvalues): {roots}")
 
# Verifikasi
eigenvalues, _ = np.linalg.eig(A)
print(f"Eigenvalues dari numpy: {eigenvalues}")

Kasus 3×3

PythonEigenvalue 3×3
A = np.array([
    [2, 0, 0],
    [0, 3, 4],
    [0, 4, 9],
])
 
eigenvalues, eigenvectors = np.linalg.eig(A)
print(f"Matriks 3×3:\n{A}")
print(f"\nEigenvalues: {eigenvalues}")
 
for i, lam in enumerate(eigenvalues):
    v = eigenvectors[:, i]
    print(f"\nλ_{i+1} = {lam:.4f}")
    print(f"  v_{i+1} = {v}")
    print(f"  A×v = {(A @ v)}")
    print(f"  λ×v = {lam * v}")

Interpretasi Geometris

Eigenvector sebagai Arah Stabil

PythonVisualisasi: eigenvector sebagai arah stabil
import numpy as np
 
A = np.array([[2, 1], [1, 2]])
 
eigenvalues, eigenvectors = np.linalg.eig(A)
 
print("Arah stabil (eigenvectors) dari transformasi A:")
for i in range(len(eigenvalues)):
    v = eigenvectors[:, i]
    lam = eigenvalues[i]
    print(f"  Arah ({v[0]:.3f}, {v[1]:.3f}): diskalakan {lam:.1f}x")
 
# Demonstrasi: banyak vektor random ditransformasi
np.random.seed(42)
print("\nBeberapa vektor random setelah transformasi:")
for _ in range(5):
    v = np.random.randn(2)
    v = v / np.linalg.norm(v)  # normalisasi
    Av = A @ v
 
    # Sudut perubahan arah
    cos_angle = np.dot(v, Av) / (np.linalg.norm(v) * np.linalg.norm(Av))
    angle = np.degrees(np.arccos(np.clip(cos_angle, -1, 1)))
    print(f"  {v}{Av}, sudut berubah: {angle:.1f}°")

Eigenvalue dan Stabilitas

PythonEigenvalue menentukan stabilitas
import numpy as np
 
# Matrix stabil: semua |λ| < 1
A_stable = np.array([[0.5, 0.1], [0.1, 0.5]])
eig_stable = np.linalg.eigvals(A_stable)
print(f"Stabil: eigenvalues = {eig_stable}, |λ| < 1? {all(abs(e) < 1 for e in eig_stable)}")
 
# Matrix tidak stabil: ada |λ| > 1
A_unstable = np.array([[2.0, 0.1], [0.1, 2.0]])
eig_unstable = np.linalg.eigvals(A_unstable)
print(f"Tidak stabil: eigenvalues = {eig_unstable}, ada |λ| > 1? {any(abs(e) > 1 for e in eig_unstable)}")

Aplikasi

PCA (Principal Component Analysis)

PCA menemukan direction of maximum variance — yang adalah eigenvector dari covariance matrix:

PythonPCA sederhana — dimensionality reduction
import numpy as np
 
# Dataset: 2D dengan korelasi
np.random.seed(42)
n = 100
x = np.random.randn(n)
y = 0.8 * x + 0.3 * np.random.randn(n)  # y berkorelasi dengan x
data = np.column_stack([x, y])
 
# Center data
data_centered = data - data.mean(axis=0)
 
# Covariance matrix
cov = np.cov(data_centered.T)
print(f"Covariance matrix:\n{cov}")
 
# Eigen decomposition
eigenvalues, eigenvectors = np.linalg.eig(cov)
print(f"\nEigenvalues: {eigenvalues}")
print(f"Eigenvectors:\n{eigenvectors}")
 
# Principal components = eigenvectors dengan eigenvalue terbesar
pc1 = eigenvectors[:, np.argmax(eigenvalues)]
print(f"\nPC1 (direction of max variance): {pc1}")
print(f"Variance explained by PC1: {eigenvalues.max()/eigenvalues.sum():.1%}")

PageRank

Google's PageRank menggunakan eigenvalue dari matriks adjacency web graph — halaman dengan eigenvalue tertinggi paling "important":

PythonPageRank sederhana — eigenvalue approach
import numpy as np
 
# Web graph: 4 halaman
# A → B, A → C, B → C, C → A, D → B, D → C
n = 4
M = np.zeros((n, n))
 
# M[j][i] = 1/k jika halaman i link ke k halaman
links = {0: [1, 2], 1: [2], 2: [0], 3: [1, 2]}
for page, targets in links.items():
    for target in targets:
        M[target][page] = 1 / len(targets)
 
# Add damping factor
d = 0.85
G = d * M + (1 - d) / n * np.ones((n, n))
 
# Power iteration untuk mencari steady state
v = np.ones(n) / n
for _ in range(100):
    v = G @ v
    v = v / v.sum()
 
print("PageRank (steady state):")
pages = ["A", "B", "C", "D"]
for page, rank in zip(pages, v):
    print(f"  Page {page}: {rank:.4f}")
print(f"\nMost important: {pages[np.argmax(v)]}")

Note

Eigenvalue decomposition hanya berlaku untuk matriks persegi. Untuk matriks non-persegi (seperti dataset dengan banyak fitur), gunakan SVD (Singular Value Decomposition) yang merupakan generalisasi eigen decomposition. NumPy menyediakan np.linalg.svd() untuk ini.

Penutup

Inti yang harus dibawa:

  • Av = λv: eigenvector v hanya diskalakan oleh transformasi A; eigenvalue λ mengukur scaling factor.
  • Eigenvalue ditemukan dari persamaan karakteristik: det(A - λI) = 0.
  • Stabilitas sistem: semua |λ| < 1 = stabil; ada |λ| > 1 = tidak stabil.
  • PCA: eigenvector dari covariance matrix = direction of maximum variance; digunakan untuk dimensionality reduction.
  • PageRank: steady-state vector dari power iteration pada matriks damping = ranking halaman.

Di episode 21 selanjutnya kita akan mempelajari limits dan continuity — konsep fundamental calculus yang menjelaskan bagaimana fungsi berperilaku saat mendekati titik tertentu. Kita keluar dari linear algebra dan masuk ke calculus — dunia perubahan dan optimasi!

Belajar Math - Eigenvalues & Eigenvectors | Belajar Math