Appendix

This page accompanies the Appendix of O’Sullivan and Unwin (2010).

Add two matrices

A <- matrix(1:4, nrow=2, byrow=TRUE)
B <- matrix(5:8, nrow=2, byrow=TRUE)
A + B
##      [,1] [,2]
## [1,]    6    8
## [2,]   10   12

Matrix multiplication

A <- matrix(c(1,-4,-2,5,3,-6), nrow=2)
B <- matrix(c(6,4,2,-5,-3,-1), nrow=3)
A %*% B
##      [,1] [,2]
## [1,]    4   -2
## [2,]  -16   11
B %*% A
##      [,1] [,2] [,3]
## [1,]   26  -37   48
## [2,]   16  -23   30
## [3,]    6   -9   12

Matrix transposition

A <- matrix(1:6, nrow=2, byrow=TRUE)
A
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]    4    5    6
t(A)
##      [,1] [,2]
## [1,]    1    4
## [2,]    2    5
## [3,]    3    6

Identity matrix

I <- matrix(0, ncol=2, nrow=2)
diag(I) <- 1
I
##      [,1] [,2]
## [1,]    1    0
## [2,]    0    1
I <- matrix(0, ncol=5, nrow=5)
diag(I) <- 1
I
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    0    0    0    0
## [2,]    0    1    0    0    0
## [3,]    0    0    1    0    0
## [4,]    0    0    0    1    0
## [5,]    0    0    0    0    1

Finding the inverse matrix

A <- matrix(1:4, nrow=2, byrow=TRUE)
Inv <- solve(A)
Inv
##      [,1] [,2]
## [1,] -2.0  1.0
## [2,]  1.5 -0.5
AA <- A %*% Inv
AA
##      [,1]         [,2]
## [1,]    1 1.110223e-16
## [2,]    0 1.000000e+00
round(AA, 10)
##      [,1] [,2]
## [1,]    1    0
## [2,]    0    1

inv(AB) == inv(A) * inv(B)

A <- matrix(1:4, nrow=2, byrow=TRUE)
B <- matrix(4:1, nrow=2, byrow=TRUE)
AB <- A %*% B
solve(AB)
##       [,1]  [,2]
## [1,]  3.25 -1.25
## [2,] -5.00  2.00
# the same as
solve(B) %*% solve(A)
##       [,1]  [,2]
## [1,]  3.25 -1.25
## [2,] -5.00  2.00

Simulataneous equations

A <- matrix(c(3,2,4,-4), nrow=2)
b <- matrix(c(11, -6))
solve(A) %*% b
##      [,1]
## [1,]    1
## [2,]    2

Rotation

A <- matrix(c(.6,-.8,.8,.6), nrow=2)
s <- matrix(c(3, 4))
As <- A %*% s
round(As, 10)
##      [,1]
## [1,]    5
## [2,]    0
S <- matrix(c(1,1,3,-2,0,5,-1,4,-2.5,-4), nrow=2)
AS <- A %*% S
AS
##      [,1] [,2] [,3] [,4] [,5]
## [1,]  1.4  0.2    4  2.6 -4.7
## [2,] -0.2 -3.6    3  3.2 -0.4

The angle of rotation matrix A is

angle <- acos(A[1])
angle
## [1] 0.9272952
# in degrees
180*angle/ pi
## [1] 53.1301

See this page for more on rotation matrices.

Eigenvector and values

M <- matrix(c(3,2,4,-4), nrow=2)
eigen(M)
## eigen() decomposition
## $values
## [1] -5  4
## 
## $vectors
##            [,1]      [,2]
## [1,] -0.4472136 0.9701425
## [2,]  0.8944272 0.2425356
M <- matrix(c(1,3,3,2), nrow=2)
eigen(M)
## eigen() decomposition
## $values
## [1]  4.541381 -1.541381
## 
## $vectors
##           [,1]       [,2]
## [1,] 0.6463749 -0.7630200
## [2,] 0.7630200  0.6463749