We have a square Matrix A which has the maximum eigenvalue, 7.
A <- matrix(c(1, -3, 2, 4, 4, -1, 6, 3, 5), ncol = 3, byrow = T)
Define arbitrary vector,u1
u1 <- c(1, 1, 1)
Multiply u1 for A, we got v2
v2 <- A %*% u1
v2
## [,1]
## [1,] 0
## [2,] 7
## [3,] 14
u2 is made by v2 deviding maximum element of v2
u2 <- v2/max(v2)
the eigenvalue and eigenvector of 1st iterations
max(v2)
## [1] 14
u2
## [,1]
## [1,] 0.0
## [2,] 0.5
## [3,] 1.0
iteration #2
v3 <- A %*% u2
v3
## [,1]
## [1,] 0.5
## [2,] 1.0
## [3,] 6.5
u3 <- v3/max(v3)
max(v3)
## [1] 6.5
u3
## [,1]
## [1,] 0.07692
## [2,] 0.15385
## [3,] 1.00000
iteration #3
v4 <- A %*% u3
v4
## [,1]
## [1,] 1.61538
## [2,] -0.07692
## [3,] 5.92308
u4 <- v4/max(v4)
max(v4)
## [1] 5.923
u4
## [,1]
## [1,] 0.27273
## [2,] -0.01299
## [3,] 1.00000
iteration #4
v5 <- A %*% u4
v5
## [,1]
## [1,] 2.31169
## [2,] 0.03896
## [3,] 6.59740
u5 <- v5/max(v5)
max(v5)
## [1] 6.597
u5
## [,1]
## [1,] 0.350394
## [2,] 0.005906
## [3,] 1.000000
iteration #5
v6 <- A %*% u5
v6
## [,1]
## [1,] 2.3327
## [2,] 0.4252
## [3,] 7.1201
u6 <- v6/max(v6)
max(v6)
## [1] 7.12
u6
## [,1]
## [1,] 0.32762
## [2,] 0.05972
## [3,] 1.00000
iteration #6
v7 <- A %*% u6
v7
## [,1]
## [1,] 2.1485
## [2,] 0.5494
## [3,] 7.1449
u7 <- v7/max(v7)
max(v7)
## [1] 7.145
u7
## [,1]
## [1,] 0.30070
## [2,] 0.07689
## [3,] 1.00000
iteration #7
v8 <- A %*% u7
v8
## [,1]
## [1,] 2.0700
## [2,] 0.5104
## [3,] 7.0349
u8 <- v8/max(v8)
max(v8)
## [1] 7.035
u8
## [,1]
## [1,] 0.29425
## [2,] 0.07255
## [3,] 1.00000
iteration #8
v9 <- A %*% u8
v9
## [,1]
## [1,] 2.0766
## [2,] 0.4672
## [3,] 6.9832
u9 <- v9/max(v9)
max(v9)
## [1] 6.983
u9
## [,1]
## [1,] 0.2974
## [2,] 0.0669
## [3,] 1.0000
By using routine, calcurate 50 times.
u <- c()
v <- c()
u[[1]] <- c(1, 1, 1)
for (i in 1:50) {
v[[i]] <- A %*% u[[i]]
u[[i + 1]] <- v[[i]]/max(v[[i]])
print(max(v[[i]]))
}
## [1] 14
## [1] 6.5
## [1] 5.923
## [1] 6.597
## [1] 7.12
## [1] 7.145
## [1] 7.035
## [1] 6.983
## [1] 6.985
## [1] 6.997
## [1] 7.002
## [1] 7.002
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
## [1] 7
chaning eigenvector matrix
change <- matrix(unlist(v), nrow = 3)
plot(apply(change, 2, max), type = "b")
printing the differences between n-th and n+1-th eigenvalue
options(scipen = 15)
diff(apply(change, 2, max))
## [1] -7.5000000000000000000 -0.5769230769230766498 0.6743256743256740293
## [4] 0.5226761427548831662 0.0247927002627568172 -0.1100070670889685687
## [7] -0.0517013718241345899 0.0017970592386555850 0.0123773779381100013
## [10] 0.0049058996322308701 -0.0006844619086301407 -0.0013942683944225820
## [13] -0.0004439290842395138 0.0001226538388472420 0.0001522312659378855
## [16] 0.0000377058411853426 -0.0000180155997169251 -0.0000161854385032356
## [19] -0.0000028923287711535 0.0000023938886073438 0.0000016752518270380
## [22] 0.0000001805610363448 -0.0000002986936973315 -0.0000001685456814116
## [25] -0.0000000051801825052 0.0000000356167069171 0.0000000164272009329
## [28] -0.0000000009553575708 -0.0000000040971794846 -0.0000000015414647336
## [31] 0.0000000002591464821 0.0000000004571063528 0.0000000001377262748
## [34] -0.0000000000435891323 -0.0000000000496003238 -0.0000000000114708243
## [37] 0.0000000000062181371 0.0000000000052402527 0.0000000000008499867
## [40] -0.0000000000008126833 -0.0000000000005382361 -0.0000000000000488498
## [43] 0.0000000000001003642 0.0000000000000532907 0.0000000000000008882
## [46] -0.0000000000000115463 -0.0000000000000053291 0.0000000000000000000
## [49] 0.0000000000000017764