0Pricing
R Academy · Pelajaran

Nilai Eigen dan Vektor Eigen

Hitung dekomposisi eigen dengan eigen() dan tafsirkan hasilnya.

Nilai Eigen dan Vektor Eigen adalah pelajaran R Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar R Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus R Academy mencakup 4 pelajaran total.

Apa Itu Nilai Eigen?

Vektor eigen v dari matriks A adalah vektor tak nol yang hanya diperbesar atau diperkecil (bukan diputar) ketika dikalikan dengan A: Av = λv. Skalar λ adalah nilai eigen. Nilai-nilai ini mengungkap arah peregangan intrinsik suatu matriks.

# Intuition: A simple scaling matrix
A <- matrix(c(3, 0,
              0, 2), nrow = 2, byrow = TRUE)

# The eigenvectors are the standard basis vectors
# A * c(1,0) = 3 * c(1,0)  -> eigenvalue 3
# A * c(0,1) = 2 * c(0,1)  -> eigenvalue 2

v1 <- c(1, 0)
A %*% v1  # c(3, 0) = 3 * v1

v2 <- c(0, 1)
A %*% v2  # c(0, 2) = 2 * v2

cat('Eigenvalues of a diagonal matrix are its diagonal entries')

eigen(): Menghitung Nilai Eigen

eigen(A) menghasilkan daftar dengan $values (nilai eigen yang diurutkan berdasarkan magnitudo menurun) dan $vectors (matriks vektor eigen sebagai kolom). Vektor eigen dinormalisasi ke panjang satu.

A <- matrix(c(4, 1,
              2, 3), nrow = 2, byrow = TRUE)

# Compute eigendecomposition
eig <- eigen(A)

# Eigenvalues
eig$values
# [1] 5 2  (descending order)

# Eigenvectors (columns)
eig$vectors
#           [,1]       [,2]
# [1,] 0.7071068 -0.4472136
# [2,] 0.7071068  0.8944272

cat('Each column is one eigenvector (unit length)')

Memverifikasi Av = lambda * v

Untuk memverifikasi, periksa bahwa A %*% v - lambda * v pada dasarnya bernilai nol. Karena titik mengambang, gunakan max(abs(...)) dan periksa apakah nilainya mendekati epsilon mesin, bukan menguji kesamaan secara persis.

A <- matrix(c(4, 1,
              2, 3), nrow = 2, byrow = TRUE)
eig <- eigen(A)

lambda1 <- eig$values[1]   # 5
v1      <- eig$vectors[, 1]

# Verify: Av - lambda*v should be ~0
residual <- A %*% v1 - lambda1 * v1
max(abs(residual))  # ~ 1e-16

# Check all eigenpairs at once
# A V = V diag(lambda) where V = eigenvectors matrix
V <- eig$vectors
Lambda <- diag(eig$values)
err <- A %*% V - V %*% Lambda
max(abs(err))  # near zero

Matriks Simetris: Nilai Eigen Riil

Matriks simetris (A = t(A)) selalu memiliki nilai eigen riil dan vektor eigen ortogonal. Ini adalah teorema spektral — penting dalam statistika (matriks kovarians bersifat semidefinit positif simetris).

# Symmetric matrix
S <- matrix(c(4, 2, 2,
              2, 3, 1,
              2, 1, 5), nrow = 3, byrow = TRUE)

# All symmetric: A = t(A)
all.equal(S, t(S))  # TRUE

# Eigenvalues are real
eig <- eigen(S)
eig$values  # All real numbers
Im(eig$values)  # All zero

# Eigenvectors are orthogonal: V'V = I
V <- eig$vectors
round(t(V) %*% V, 10)  # Identity matrix
cat('Symmetric -> real eigenvalues, orthogonal eigenvectors')

Matriks Tak Simetris: Nilai Eigen Kompleks

Matriks tak simetris dapat memiliki nilai eigen kompleks (pasangan konjugat kompleks). R mengembalikannya sebagai bilangan kompleks. Bagian riil mengatur pertumbuhan atau peluruhan; bagian imajiner mengatur rotasi atau osilasi.

# Rotation-like matrix -> complex eigenvalues
A <- matrix(c(0, -1,
              1,  0), nrow = 2, byrow = TRUE)
# This is a 90-degree rotation matrix
eig <- eigen(A)
eig$values
# [1] 0+1i 0-1i  (pure imaginary!)

# Real part: zero -> neither grows nor decays
Re(eig$values)  # 0 0

# Imaginary part: indicates rotation
Im(eig$values)  # 1 -1

# Another example: stable spiral
B <- matrix(c(-1, -2,
               2, -1), nrow = 2, byrow = TRUE)
eigen(B)$values  # -1 +/- 2i

Dekomposisi Nilai Eigen A = VLV^-1

Matriks yang dapat didiagonalkan A dapat ditulis sebagai A = V Λ V⁻¹, dengan V sebagai matriks vektor eigen dan Λ = diag(nilai eigen). Dekomposisi ini memungkinkan perhitungan pangkat matriks: A^n = V Λ^n V⁻¹.

A <- matrix(c(4, 1,
              2, 3), nrow = 2, byrow = TRUE)
eig <- eigen(A)
V      <- eig$vectors
Lambda <- diag(eig$values)

# Reconstruct A = V %*% Lambda %*% solve(V)
A_reconstructed <- V %*% Lambda %*% solve(V)
all.equal(A, A_reconstructed)  # TRUE

# Matrix power A^3 using eigendecomposition
A_cubed_eig <- V %*% diag(eig$values^3) %*% solve(V)
A_cubed_direct <- A %*% A %*% A
all.equal(Re(A_cubed_eig), A_cubed_direct)  # TRUE

Konsep PCA melalui Nilai Eigen Kovarians

Principal Component Analysis (PCA) menggunakan dekomposisi eigen dari matriks kovarians. Vektor eigen memberikan arah varians maksimum (komponen utama); nilai eigen memberikan varians sepanjang setiap arah.

set.seed(42)
# Correlated 2D data
x1 <- rnorm(100)
x2 <- 0.8 * x1 + 0.6 * rnorm(100)
X <- cbind(x1, x2)

# Covariance matrix
C <- cov(X)
print(round(C, 3))

# Eigendecomposition of covariance matrix
eig <- eigen(C)
cat('Eigenvalues (variance explained):\n')
print(eig$values)
cat('PC1 direction:\n')
print(eig$vectors[, 1])

# Variance explained by PC1
prop_var <- eig$values[1] / sum(eig$values)
cat('PC1 explains:', round(100 * prop_var, 1), '%')

Jari-Jari Spektral

Jari-jari spektral ρ(A) = max|λᵢ| adalah nilai eigen absolut terbesar. Nilai ini menentukan kestabilan dalam algoritme iteratif: jika ρ < 1, iterasi konvergen; jika ρ > 1, iterasi divergen.

spectral_radius <- function(A) {
  max(Mod(eigen(A)$values))
}

# Convergent matrix: spectral radius < 1
A_conv <- matrix(c(0.5, 0.2,
                   0.1, 0.3), nrow = 2, byrow = TRUE)
spectral_radius(A_conv)  # < 1 -> iterations converge

# Divergent matrix: spectral radius > 1
A_div <- matrix(c(2, 0.5,
                  0.3, 1.5), nrow = 2, byrow = TRUE)
spectral_radius(A_div)  # > 1 -> iterations diverge

# For positive definite A, spectral radius = max eigenvalue
cat('Spectral radius determines iterative stability')

Determinan dan Jejak melalui Nilai Eigen

Determinan sama dengan hasil kali nilai eigen; jejak sama dengan jumlahnya. Hubungan ini mengaitkan sifat aljabar dengan nilai eigen dan memberikan pemeriksaan kewajaran untuk hasil eigen() Anda.

A <- matrix(c(5, 2,
              1, 4), nrow = 2, byrow = TRUE)
eig_vals <- eigen(A)$values

# det(A) = product of eigenvalues
det(A)
prod(eig_vals)  # Same!

# trace = sum of eigenvalues
sum(diag(A))
sum(eig_vals)  # Same!

# For numeric precision, use Re() on complex
A2 <- matrix(c(3, -1, 2, 5), nrow = 2, byrow = TRUE)
ev <- eigen(A2)$values
all.equal(det(A2), prod(Re(ev)), tolerance = 1e-10)
all.equal(sum(diag(A2)), sum(Re(ev)), tolerance = 1e-10)

Matriks Definit Positif

Matriks simetris bersifat definit positif (PD) jika semua nilai eigennya positif. Matriks kovarians bersifat semidefinit positif (nilai eigen ≥ 0). Matriks PD dapat dibalik dan memiliki dekomposisi Cholesky.

# Check positive definiteness
is_positive_definite <- function(A) {
  # Symmetric check
  if (!isTRUE(all.equal(A, t(A)))) return(FALSE)
  all(eigen(A)$values > 0)
}

# Positive definite covariance matrix
S <- matrix(c(4, 2,
              2, 3), nrow = 2, byrow = TRUE)
is_positive_definite(S)  # TRUE
eigen(S)$values  # Both positive

# Not PD (one negative eigenvalue)
Q <- matrix(c(1, 3,
              3, 2), nrow = 2, byrow = TRUE)
is_positive_definite(Q)  # FALSE
eigen(Q)$values  # One negative

Iterasi Pangkat untuk Nilai Eigen Dominan

Untuk matriks besar, menghitung semua nilai eigen membutuhkan biaya komputasi besar. Iterasi pangkat menemukan nilai eigen terbesar secara iteratif — menjadi dasar algoritme PageRank milik Google. Kalikan dengan A berulang kali, lalu normalkan.

# Power iteration: finds dominant eigenvalue
power_iteration <- function(A, tol = 1e-10, max_iter = 1000) {
  n <- nrow(A)
  v <- rnorm(n); v <- v / sqrt(sum(v^2))  # random unit vector
  lambda_old <- 0
  for (i in seq_len(max_iter)) {
    w <- A %*% v
    lambda <- max(abs(w))
    v <- w / lambda
    if (abs(lambda - lambda_old) < tol) break
    lambda_old <- lambda
  }
  list(value = lambda, vector = v)
}

A <- matrix(c(4, 1, 2, 3), nrow = 2, byrow = TRUE)
result <- power_iteration(A)
result$value  # Should be ~5 (dominant eigenvalue)
eigen(A)$values[1]  # Compare

Pemeriksaan Singkat

Uji pemahaman Anda tentang nilai eigen dan vektor eigen di R.

Ringkasan: Nilai Eigen dan Vektor Eigen

Hal-hal penting: eigen(A) menghasilkan $values dan $vectors. Verifikasi dengan A %*% v - lambda*v ≈ 0. Matriks simetris memiliki nilai eigen riil dan vektor eigen ortogonal. Matriks tak simetris dapat memiliki nilai eigen kompleks. det(A) = hasil kali nilai eigen; jejak = jumlahnya. PCA menguraikan matriks kovarians. Definit positif ↔ semua nilai eigen > 0.

A <- matrix(c(6, 2, 2, 3), nrow = 2)
eig <- eigen(A)

# Key eigen operations:
eig$values    # eigenvalues
eig$vectors   # eigenvectors (columns)

# Verify Av = lambda*v
v1 <- eig$vectors[, 1]
max(abs(A %*% v1 - eig$values[1] * v1))  # ~0

# Properties
all.equal(det(A), prod(eig$values))       # TRUE
all.equal(sum(diag(A)), sum(eig$values))  # TRUE

# Reconstruct A = V Lambda V^{-1}
V <- eig$vectors
all.equal(A, Re(V %*% diag(eig$values) %*% solve(V)))

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Nilai Eigen dan Vektor Eigen” gratis?

Ya — teks lengkap “Nilai Eigen dan Vektor Eigen” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus R Academy, upgrade ke CoddyKit PRO. Kursus R Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Nilai Eigen dan Vektor Eigen”?

Hitung dekomposisi eigen dengan eigen() dan tafsirkan hasilnya. Kamu berlatih R Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai R Academy?

Tidak diperlukan pengalaman sebelumnya. R Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Nilai Eigen dan Vektor Eigen” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran R Academy ini?

Ya. Setiap pelajaran R Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Perkalian Matriks dan Determinan
  2. Menyelesaikan Sistem Linear dengan solve()
  3. Nilai Eigen dan Vektor Eigen
  4. Dekomposisi SVD, QR, dan Cholesky
← Kembali ke R Academy