Dalam banyak kasus, kita harus menghitung Ar, di mana A adalah matriks persegi berukuran n×n dan r adalah bilangan bulat positif yang besar. Dalam kasus ini, jika kita menghitung Ar secara langsung, waktu komputasi akan menjadi mahal dan kita mungkin akan mendapatkan kesalahan numerik yang besar di komputer.
Oleh karena itu, kita ingin menyederhanakan Ar sehingga kita dapat menghitungnya secara efisien. Salah satu ide kunci untuk menyederhanakan Ar adalah diagonalisasi. Pada bagian ini kita akan mendiskusikan diagonalisasi pada sebuah matriks bujur sangkar.
Q <- matrix(c(1, 1, -1, 1), 2, 2)
D <- matrix(c(3, 0, 0, 1), 2, 2)
Q_inv <- solve(Q)
print(Q_inv)
## [,1] [,2]
## [1,] 0.5 0.5
## [2,] -0.5 0.5
A <- matrix(c(1, 0, 3, -2, 2, -3, 1, -3, -2), 3, 3)
eigen(A)
## eigen() decomposition
## $values
## [1] 4.50349224 -3.56576496 0.06227272
##
## $vectors
## [,1] [,2] [,3]
## [1,] 0.5276592 -0.01504018 -0.7715961
## [2,] -0.6521968 -0.47442002 -0.5343413
## [3,] 0.5442565 -0.88017012 -0.3451359
p <- eigen(A)$vectors
D <- diag(eigen(A)$values)
p %*% D %*% solve(p)
## [,1] [,2] [,3]
## [1,] 1.000000e+00 -2 1
## [2,] -7.008283e-16 2 -3
## [3,] 3.000000e+00 -3 -2
Untuk menghitung limit ini, pertama-tama kita perlu mendiagonalisasi P. Dalam R kita akan menggunakan fungsi eigen() untuk mendiagonalisasi matriks transisi P. Pertama-tama kita harus mendefinisikan matriksnya:
A <- matrix(c(1/4, 1/5, 1/3, 1/6, 1/4, 1/5, 1/3, 1/3, 1/4, 2/5, 1/6, 1/3, 1/4, 1/5, 1/6, 1/6), 4, 4)
p <- eigen(A)$vectors
D <- diag(eigen(A)$values)
p %*% D %*% solve(p)
## [,1] [,2] [,3] [,4]
## [1,] 0.2500000+0i 0.2500000+0i 0.2500000+0i 0.2500000+0i
## [2,] 0.2000000-0i 0.2000000+0i 0.4000000+0i 0.2000000+0i
## [3,] 0.3333333+0i 0.3333333-0i 0.1666667-0i 0.1666667+0i
## [4,] 0.1666667+0i 0.3333333+0i 0.3333333+0i 0.1666667+0i
ini <- c(1/4, 1/4, 1/4, 1/4)
ini %*% p %*% D^(10000) %*% solve(p)
## [,1] [,2] [,3] [,4]
## [1,] 0.2435175+0i 0.276212+0i 0.2841037+0i 0.1961669+0i
Diagonalisasi adalah proses mengubah matriks persegi menjadi bentuk
diagonal dengan menggunakan matriks eigenvectors. Di R Studio, Anda
dapat menggunakan fungsi eigen() untuk mendapatkan
eigenvectors dan eigenvalues dari matriks, dan kemudian menggunakan
eigenvectors tersebut untuk melakukan diagonalisasi.
Berikut adalah langkah-langkah umum untuk melakukan diagonalisasi di R Studio:
Tentukan matriks persegi yang ingin Anda diagonalisasi. Misalnya,
simpan matriks dalam variabel A.
Gunakan fungsi eigen() untuk mendapatkan
eigenvectors dan eigenvalues dari matriks A. Contoh
sintaksnya:
result <- eigen(A)
Variabel result akan berisi dua komponen, yaitu
values (eigenvalues) dan vectors
(eigenvectors). Anda dapat mengakses eigenvectors dengan menggunakan
result$vectors.
Buat matriks P dengan menggunakan eigenvectors
sebagai kolom-kolomnya. Contoh sintaksnya:
P <- result$vectors
P dan simpan dalam variabel
P_inv. Anda dapat menggunakan fungsi solve()
untuk melakukan invers matriks. Contoh sintaksnya:P_inv <- solve(P)
D dengan menggunakan
eigenvalues sebagai diagonalnya. Contoh sintaksnya:D <- diag(result$values)
D = P_inv %*% A %*% P. Contoh sintaksnya:diagonalized_A <- P_inv %*% A %*% P
Matriks diagonalized_A akan menjadi bentuk diagonal dari
matriks A setelah diagonalisasi.
Perhatikan bahwa proses diagonalisasi hanya dapat dilakukan pada matriks persegi dan matriks tersebut harus memiliki eigenvectors yang lengkap.