1 Pengenalan Eigen Dominan Metode Power
Nilai eigen \(\lambda\) dengan
vektor eigen taknol x yang bersesuain dengan nilai
eigen \(\lambda\) dari suatu matriks
persegi, katakan matriks A dapat didefinisikan sebagai
\[
Ax=\lambda x
\] Persamaan di atas dapat dimodifikasi menjadi
\(=Ax=\lambda Ix\)
\(=Ax-\lambda Ix=0\)
\(=(A-\lambda I)x=0\) atau \(=(\lambda I-A)x=0\)
Untuk mencari nilai eigen, digunakan persamaan
\[
det(A-\lambda I)=0
\]
atau
\[ det(\lambda I-A)=0 \] agar diperoleh solusi pemecahan taknol. Dari nilai eigen tersebut, maka dapat dicari vektor eigennya juga.
Namun, pencarian nilai eigen tak selalu mudah. Oleh sebab itu, diperlukan suatu pendekatan numerik untuk mencari nilai eigen tersebut. Salah satunya adalah dengan metode Power.
Metode Power digunakan untuk mencari nilai eigen dominan beserta pasangan vektornya. Eigen dominan disebut juga nilai eigen terbesar yang dimiliki suatu matriks.
2 Proses Metode Power untuk Mencari Eigen Dominan
Langkah-langkah iterasi dengan metode Power untuk matriks A berukuran
\(n \times n\)
1. Mulai dengan vektor inisial berukuran \(n
\times 1\) \[
X_0=\begin{bmatrix}
1 \\
1 \\
\vdots \\
1 \\
\end{bmatrix}
\]
2. Bangkatikan \(X_k\) secara rekursif
dengan
\(Y_k=AX_k\)
\(X_{k+1}=\frac{1}{c_{k+1}}Y_k\)
\(c_{k+1}\) adalah nilai elemen terbesar dari vektor \(Y_k\)
- \(X_k\) dan \(Y_k\) masing-masing akan konvergen ke
vektor eigen v dan nilai eigen \(\lambda\)
\(\displaystyle \lim_{k \to \infty} X_k=v\)
\(\displaystyle \lim_{k \to \infty} c_k=\lambda\)
3 Contoh Metode Power dengan Iterasi menggunakan R
Cari pasangan nilai eigen dan vektor eigen dominan dari matriks
\[
A=
\begin{bmatrix}
7 & 6 & -3 \\
-12 & -20 & 24 \\
-6 & -12 & 16
\end{bmatrix}
\]
> A<-matrix(c(7,6,-3, -12,-20,24, -6,-12,16),byrow=T, nrow=3)
> A
[,1] [,2] [,3]
[1,] 7 6 -3
[2,] -12 -20 24
[3,] -6 -12 16
> X<-matrix(c(rep(1, nrow(A))), nrow = nrow(A), ncol=1)
> X
[,1]
[1,] 1
[2,] 1
[3,] 1
> error<-100
> c<--100
> tolerated<-0.00001
> n<-0
>
> repeat {
+ Iter<-n
+ print(paste("Iterasi ke-", Iter))
+ Y=A%*%X
+ k<-c
+ c=max(Y)
+ X=1/c*Y
+ print(c)
+ print(X)
+ print("------------------------")
+ n<-Iter+1
+ error=abs(k-c)
+ if(error<tolerated) break
+ }
[1] "Iterasi ke- 0"
[1] 10
[,1]
[1,] 1.0
[2,] -0.8
[3,] -0.2
[1] "------------------------"
[1] "Iterasi ke- 1"
[1] 2.8
[,1]
[1,] 1.0000000
[2,] -0.2857143
[3,] 0.1428571
[1] "------------------------"
[1] "Iterasi ke- 2"
[1] 4.857143
[,1]
[1,] 1.00000000
[2,] -0.58823529
[3,] -0.05882353
[1] "------------------------"
[1] "Iterasi ke- 3"
[1] 3.647059
[,1]
[1,] 1.00000000
[2,] -0.45161290
[3,] 0.03225806
[1] "------------------------"
[1] "Iterasi ke- 4"
[1] 4.193548
[,1]
[1,] 1.00000000
[2,] -0.52307692
[3,] -0.01538462
[1] "------------------------"
[1] "Iterasi ke- 5"
[1] 3.907692
[,1]
[1,] 1.000000000
[2,] -0.488188976
[3,] 0.007874016
[1] "------------------------"
[1] "Iterasi ke- 6"
[1] 4.047244
[,1]
[1,] 1.000000000
[2,] -0.505836576
[3,] -0.003891051
[1] "------------------------"
[1] "Iterasi ke- 7"
[1] 3.976654
[,1]
[1,] 1.000000000
[2,] -0.497064579
[3,] 0.001956947
[1] "------------------------"
[1] "Iterasi ke- 8"
[1] 4.011742
[,1]
[1,] 1.0000000000
[2,] -0.5014634146
[3,] -0.0009756098
[1] "------------------------"
[1] "Iterasi ke- 9"
[1] 3.994146
[,1]
[1,] 1.0000000000
[2,] -0.4992672203
[3,] 0.0004885198
[1] "------------------------"
[1] "Iterasi ke- 10"
[1] 4.002931
[,1]
[1,] 1.000000000
[2,] -0.500366122
[3,] -0.000244081
[1] "------------------------"
[1] "Iterasi ke- 11"
[1] 3.998536
[,1]
[1,] 1.0000000000
[2,] -0.4998168722
[3,] 0.0001220852
[1] "------------------------"
[1] "Iterasi ke- 12"
[1] 4.000733
[,1]
[1,] 1.000000e+00
[2,] -5.000915e-01
[3,] -6.103143e-05
[1] "------------------------"
[1] "Iterasi ke- 13"
[1] 3.999634
[,1]
[1,] 1.000000e+00
[2,] -4.999542e-01
[3,] 3.051851e-05
[1] "------------------------"
[1] "Iterasi ke- 14"
[1] 4.000183
[,1]
[1,] 1.000000e+00
[2,] -5.000229e-01
[3,] -1.525856e-05
[1] "------------------------"
[1] "Iterasi ke- 15"
[1] 3.999908
[,1]
[1,] 1.000000e+00
[2,] -4.999886e-01
[3,] 7.629453e-06
[1] "------------------------"
[1] "Iterasi ke- 16"
[1] 4.000046
[,1]
[1,] 1.000000e+00
[2,] -5.000057e-01
[3,] -3.814683e-06
[1] "------------------------"
[1] "Iterasi ke- 17"
[1] 3.999977
[,1]
[1,] 1.000000e+00
[2,] -4.999971e-01
[3,] 1.907352e-06
[1] "------------------------"
[1] "Iterasi ke- 18"
[1] 4.000011
[,1]
[1,] 1.000000e+00
[2,] -5.000014e-01
[3,] -9.536734e-07
[1] "------------------------"
[1] "Iterasi ke- 19"
[1] 3.999994
[,1]
[1,] 1.000000e+00
[2,] -4.999993e-01
[3,] 4.768374e-07
[1] "------------------------"
[1] "Iterasi ke- 20"
[1] 4.000003
[,1]
[1,] 1.000000e+00
[2,] -5.000004e-01
[3,] -2.384185e-07
[1] "------------------------"
>
> ## OUTPUT
> print(c) ## Nilai Eigen
[1] 4.000003
> round(X,6) ## Vektor Eigen
[,1]
[1,] 1.0
[2,] -0.5
[3,] 0.0Penjelasan syntax
- A untuk membentuk matriks di soal
- X untuk membentuk vektor inisial
- error sebagai inisial nilai error (nilainya bebas asalkan cukup besar agar proses looping tidak berhenti)
- c sebagai nilai eigen awal (dipilih paling negatif karena yang akan dicari adalah nilai eigen terbesar, sehingga proses looping dapat terus berjalan)
- tolerated sebagai batas toleransi selisih nilai eigen tiap iterasi
- n=0 sebagai penanda iterasi dimulai dari ke-0
- Y=A%*%X sebagai proses perhitungan
- k<-c di mana k sebagai objek penyimpanan nilai eigen inisial
- c=max(Y) untuk membentuk nilai eigen baru
- X=1/c*Y sebagai proses pembentukan vektor eigen baru
Jadi, matriks A memiliki
nilai eigen dominan \(\lambda=4\)
dengan vektor eigen \[
\begin{bmatrix}
1 \\
-0.5 \\
0 \\
\end{bmatrix}
\]