Eigen Dominan Metode Power

Louis Aubert Andriawan

2022-06-01

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\)

  1. \(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.0

Penjelasan 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} \]