Dalam konteks matriks persegi, diagonalisasi merupakan proses untuk menyederhanakan matriks dengan membaginya menjadi matriks diagonal dan matriks invertibel. Tujuannya adalah untuk mempermudah perhitungan operasi matriks yang kompleks, seperti pemangkatan matriks.

Dalam proses diagonalisasi, kita mencari matriks invertibel Q dan matriks diagonal D sedemikian sehingga matriks awal A dapat dituliskan sebagai A = QDQ^(-1). Matriks D terdiri dari nilai-nilai eigen matriks A yang diatur di diagonal utama, sedangkan matriks Q terbentuk dari vektor-vektor eigen yang dijadikan kolom-kolomnya.

Untuk melakukan diagonalisasi, kita perlu mencari nilai-nilai eigen matriks A dan vektor-vektor eigen yang sesuai. Nilai eigen adalah bilangan kompleks atau bilangan riil yang memenuhi persamaan Av = λv, di mana A adalah matriks, v adalah vektor eigen, dan λ (lambda) adalah nilai eigen yang sesuai. Dalam beberapa kasus, matriks dapat memiliki nilai-nilai eigen yang berulang atau kompleks.

Dalam praktiknya, setelah kita menemukan nilai-nilai eigen dan vektor-vektor eigen, kita dapat membentuk matriks D dengan menempatkan nilai-nilai eigen di diagonal utama. Matriks invertibel Q terbentuk dari vektor-vektor eigen yang dijadikan kolom-kolomnya.

Diagonalisasi matriks memungkinkan kita untuk menyederhanakan perhitungan matriks yang melibatkan pemangkatan atau fungsi matriks yang kompleks. Dengan menggunakan matriks diagonal D, kita dapat dengan mudah menghitung A^r dengan memangkatkan setiap elemen di diagonal D ke pangkat r. Ini mengurangi waktu komputasi yang diperlukan dan menghindari kesalahan numerik yang mungkin terjadi.

Dengan pemahaman tentang diagonalisasi matriks, kita dapat menggunakan konsep ini untuk menyederhanakan operasi matriks yang kompleks dan menerapkannya dalam berbagai bidang seperti ilmu data, optimisasi, dan pemodelan matematika.

Diagonalisasi

Dalam konteks matriks persegi A, kita sering perlu menghitung pemangkatan A^r dengan r yang besar. Agar perhitungannya efisien, kita ingin menyederhanakan A dengan membaginya menjadi Q . D . Q^-1, di mana D adalah matriks diagonal dan Q adalah matriks invertibel.

Dalam diagonalisasi, kita mencari matriks invertibel Q dan matriks diagonal D sehingga A dapat diekspresikan sebagai A = Q . D . Q^-1. Ini berarti kita mengubah representasi matriks A menjadi kombinasi dari matriks diagonal D dan matriks invertibel Q.

Kemudian kita dapat mendekomposisi matriks A sebagai:

Q <-matrix(c(1,1,-1,1),2,2)
D <-matrix(c(3,0,0,1),2,2)
Q %*%D%*% solve(Q)
##      [,1] [,2]
## [1,]    2    1
## [2,]    1    2

Sebuah matriks persegi A dapat di diagonalisasi jika dan hanya jika matriks tersebut memiliki n vektor eigen yang linear independen, di mana n adalah ukuran matriks (jumlah baris atau kolom). Jadi, untuk dapat melakukan diagonalisasi, kita perlu menemukan n vektor eigen yang tidak memiliki hubungan linier satu sama lain.

Proses umum untuk menghitung diagonalisasi matriks A adalah sebagai berikut:

  1. Temukan nilai-nilai eigen dari matriks A. Untuk mencari nilai-nilai eigen, kita perlu menyelesaikan persamaan karakteristik matriks A. Persamaan karakteristik dinyatakan sebagai det(A - λI) = 0, di mana det adalah determinan, A adalah matriks, λ (lambda) adalah nilai eigen, dan I adalah matriks identitas.

  2. Setelah menemukan nilai-nilai eigen, cari vektor eigen yang sesuai dengan masing-masing nilai eigen. Untuk nilai eigen λ, vektor eigen v harus memenuhi persamaan A . v = λ . v. Dalam hal ini, v adalah vektor eigen dan λ adalah nilai eigen.

  3. Jika jumlah vektor eigen yang ditemukan sama dengan ukuran matriks (n), maka matriks A dapat diagonalisasi.

  4. Bentuk matriks Q dengan menggunakan vektor-vektor eigen sebagai kolom-kolomnya. Matriks Q terdiri dari vektor eigen yang ditemukan.

  5. Bentuk matriks diagonal D dengan menggunakan nilai-nilai eigen sebagai elemen-elemennya. Matriks D memiliki nilai-nilai eigen di diagonal utama dan elemen-elemen lainnya adalah 0.

  6. Akhirnya, kita dapat menuliskan matriks A sebagai A = Q . D . Q^-1, di mana Q adalah matriks dari vektor-vektor eigen dan D adalah matriks diagonal dari nilai-nilai eigen. Dalam representasi ini, matriks A telah di diagonalisasi.

Dengan mengikuti langkah-langkah di atas, kita dapat menghitung diagonalisasi matriks A jika matriks tersebut memenuhi syarat memiliki n vektor eigen yang linear independen. Diagonalisasi memungkinkan kita untuk menyederhanakan operasi pada matriks dan memahami struktur matriks dengan lebih baik.

Misalnya lagi kita punya vektor 2x2 sebagai berikut :

A <-matrix(c(2,-1,1,-1,-3,1,3,3,3),3,3)
eigen(A)
## eigen() decomposition
## $values
## [1]  4.397382 -3.824458  1.427076
## 
## $vectors
##           [,1]       [,2]       [,3]
## [1,] 0.7437078  0.2542122  0.8674476
## [2,] 0.1624484  0.9508909 -0.3981322
## [3,] 0.6484668 -0.1765859 -0.2983713

Teorema 6.7 menyatakan bahwa jika matriks persegi A memiliki n nilai eigen yang berbeda, di mana n adalah ukuran matriks (jumlah baris atau kolom), maka matriks A dapat diagonalisasi. Dalam hal ini, “nilai eigen yang berbeda” mengacu pada setiap nilai eigen memiliki jumlah aljabarik yang berbeda. Ini berarti tidak ada nilai eigen yang menjadi “ganda” atau memiliki aljabarik yang sama.

Dalam konteks diagonalisasi, jika matriks A memiliki n nilai eigen yang berbeda, kita dapat menemukan n vektor eigen yang linear independen yang sesuai dengan masing-masing nilai eigen. Karena jumlah vektor eigen yang ditemukan sama dengan ukuran matriks, kita dapat membentuk matriks invertibel Q dengan menggunakan vektor-vektor eigen sebagai kolom-kolomnya. Selanjutnya, kita dapat membentuk matriks diagonal D dengan menggunakan nilai-nilai eigen sebagai elemen-elemennya. Dalam hal ini, matriks A dapat dituliskan sebagai A = Q . D . Q^-1, di mana Q adalah matriks dari vektor-vektor eigen dan D adalah matriks diagonal dari nilai-nilai eigen.

Dengan demikian, jika matriks A memiliki n nilai eigen yang berbeda, kita dapat melakukan diagonalisasi matriks A dengan menggunakan vektor-vektor eigen dan nilai-nilai eigen yang sesuai. Diagonalisasi ini memungkinkan kita untuk menyederhanakan operasi pada matriks dan mengungkap struktur matriks yang lebih mudah dipahami.

Practical Applications

Anggap kita memiliki probabilitas transisi untuk urutan DNA seperti yang ditunjukkan dalam matriks berikut:

library(magick)
## Linking to ImageMagick 6.9.12.3
## Enabled features: cairo, freetype, fftw, ghostscript, heic, lcms, pango, raw, rsvg, webp
## Disabled features: fontconfig, x11
inp_img <- image_read("paDiagonalization.png")
plot(inp_img)

Untuk menghitung distribusi batas (limiting distribution) dari kemunculan huruf A, C, G, atau T dalam urutan yang mengalami waktu evolusi yang lama, kita dapat menggunakan persamaan sebagai berikut:

Probabilitas(A) = jumlah kemunculan A dalam urutan / panjang urutan Probabilitas(C) = jumlah kemunculan C dalam urutan / panjang urutan Probabilitas(G) = jumlah kemunculan G dalam urutan / panjang urutan Probabilitas(T) = jumlah kemunculan T dalam urutan / panjang urutan

Dalam konteks rantai Markov waktu diskret, kita dapat mengasumsikan bahwa setiap posisi dalam urutan (lokasi) adalah independen satu sama lain. Oleh karena itu, probabilitas munculnya setiap huruf dapat dihitung secara terpisah dengan membagi jumlah kemunculan huruf tersebut dengan panjang urutan.

Distribusi batas mengacu pada distribusi probabilitas akhir saat waktu evolusi yang lama. Dalam konteks ini, jika kita mengasumsikan bahwa probabilitas munculnya setiap huruf adalah konstan seiring dengan waktu evolusi yang lama, maka distribusi batas akan mencerminkan probabilitas munculnya setiap huruf setelah waktu evolusi yang lama.

Namun, perlu dicatat bahwa dalam analisis yang lebih komprehensif, faktor-faktor lain seperti mutasi, seleksi alam, dan interaksi antara lokasi dalam urutan juga perlu dipertimbangkan. Model-model yang lebih kompleks seperti model Markov tersembunyi (Hidden Markov Models) dapat digunakan untuk memodelkan evolusi urutan yang lebih realistis.

inp_img <- image_read("limit.png")
plot(inp_img)

dimana phi adalah sebuah vektor :

inp_img <- image_read("vektor.png")
plot(inp_img)

Untuk menghitung batas ini, pertama-tama kita perlu mendiagonalisasi matriks P.

Dalam R, kita akan menggunakan fungsi eigen() untuk mendiagonalisasi matriks transisi P. Pertama, tentukan matriks:

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)
A
##           [,1]      [,2]      [,3]      [,4]
## [1,] 0.2500000 0.2500000 0.2500000 0.2500000
## [2,] 0.2000000 0.2000000 0.4000000 0.2000000
## [3,] 0.3333333 0.3333333 0.1666667 0.1666667
## [4,] 0.1666667 0.3333333 0.3333333 0.1666667

Kemudian kita gunakan fungsi eigen():

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

Sekali lagi, perhatikan bahwa kita menggunakan fungsi solve() untuk menghitung invers dari matriks p. Sebagai alternatif dari solve(), kita dapat menggunakan fungsi inv().

Di sini, “*” mengacu pada bilangan kompleks. Mari kita definisikan phi sebagai distribusi seragam (uniform distribution), yaitu:

inp_img <- image_read("v2.png")
plot(inp_img)

ini <-c(1/4,1/4,1/4,1/4)
ini
## [1] 0.25 0.25 0.25 0.25
ini %*% p %*% D^(10000) %*% solve(p)
##              [,1]        [,2]         [,3]         [,4]
## [1,] 0.2435175+0i 0.276212-0i 0.2841037-0i 0.1961669+0i

Oleh karena itu, probabilitas munculnya A, C, G, atau T adalah sebagai berikut: ==> 0.2435175+0i ==> 0.276212+0i ==> 0.2841037+0i ==> 0.1961669+0i