-
Notifications
You must be signed in to change notification settings - Fork 0
/
Eigen code.R
73 lines (51 loc) · 1.34 KB
/
Eigen code.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# Eigen vector and eigen value code
library(matlib)
### MATLIB
# https://cran.r-project.org/web/packages/matlib/vignettes/inv-ex1.html
# https://cran.r-project.org/web/packages/matlib/index.html
# install.packages("matlib")
### Matrix
# ENTER AS COLUMNS --or-- use option ", byrow=TRUE"
A <- as.matrix(data.frame(c(1,-2,-2),c(-1,3,1),c(1,0,2)))
A
tr(A) # trace
e <- eigen(A) # eigen everything
e$values
V <-e$vectors # save vectors as matrix
V
Avectors <- zapsmall(e$vectors) # reduce unreasonable numbers with zapsmall
Avectors
# for ease of copying
# Avectors [,1]
# Avectors [,2]
# Avectors [,3]
det(V) # determinant
inv(V) # inverse
R(V) # rank
# Identity matrix 3*3
Id = as.matrix(data.frame(c(1,0,0),c(0,1,0),c(0,0,1)))
Id
gaussianElimination(A,Id,tol = sqrt(.Machine$double.eps),
verbose = TRUE, latex = FALSE, fractions = FALSE)
# D is a diagonal matrix with 1, 2, and 3 on its diagonal.
D <- as.matrix(data.frame(c(1, 0, 0),c(0, 2, 0),c(0,0,3)))
D
# Verify that A = VDV^-1
q8 <- zapsmall(V %*% D %*% solve(V))
q8
A
q8==A
# If B is an invertible matrix with eigenvector v-> corresponding to eigenvalue L, then
# v0> is also an eigenvector for B^-1 but for eigenvalue 1/L
B = as.matrix(data.frame(c(2,0),c(0,-2)))
B
det(B)
eB <- eigen(B)
eB
eB$values
eB$vectors
Bi = inv(B)
eBi <- eigen(Bi)
eBi
eBi$values
eBi$vectors