학부수업/다변수함수론

chapter1 Matrix Algebra_1. Notation

Whale_Rice 2021. 10. 22. 00:07

건국대학교 응용통계학과 3-2 김형문 교수님의 다변수함수론 강의 中 R programming을 참고하였습니다.

 

A vector

a <- c(1,2,3,4)
a <- 1:4

[1] 1 2 3 4

 

A matrix

array(1:6,dim=c(2,3)) # dim = c(2,3)은 2*3 행렬을 만든다는 소리이다.
matrix(1:6,nrow=2,ncol=3) # nrow =2, nrow=3 은 행의 개수가 2, 열의 개수가 3이라는 소리이다.
rbind(c(1,2,3),c(4,5,6)) # rbind은 'r'ow기준으로 bind한다는 소리이다.
cbind(c(1,4),c(2,5),c(3,6)) # cbind는 'c'olumn기준으로 bind한다는 소리이다.

     [,1] [,2] [,3]
[1,]    1    2    3
[2,]    4    5    6
x1 <- 1:4; x2 <- 5:8 ; x3 <-  9:12; x4 <- 13:16
matrix(c(x1,x2,x3,x4),nrow=4,ncol=4) # 위에서도 알 수 있겠지만 default가 column 방향으로 되어있다.

     [,1] [,2] [,3] [,4]
[1,]    1    5    9   13
[2,]    2    6   10   14
[3,]    3    7   11   15
[4,]    4    8   12   16

 

Transpose of a vector

a <-c(1,2,3,4)
t(a) # 여기서 주의해야할 점은 기본 a은 열벡터로 저장된다는 점이다. R에서 벡터는 열벡터로 생각해야한다.

     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4

 

Transpose of a matrix

X <- array(1:16,dim=c(4,4))
t(X)

     [,1] [,2] [,3] [,4]
[1,]    1    2    3    4
[2,]    5    6    7    8
[3,]    9   10   11   12
[4,]   13   14   15   16

 

Identity matrix

diag(3)

     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1

?diag
Description : Extract or replace the diagonal of a matrix, or construct a diagonal matrix.
Usage : diag(x = 1, nrow, ncol, names = TRUE)

# 그럼 diag(3)은 nrow에 3이 들어갔다는 소리이다. 즉, dia(nrow=3). 만약 diag(ncol=3)이면 어떻게 될까??
오류가 나온다고 할 수 있겠다.. (why? argument "nrow" is missing, with no default 즉, nrow이 들어가야하는 순간인데, ncol이 지정되었으니 R이 당황한 것이다. )

 

Inverse matrix & Inverse of a diagonal matrix

A <- matrix(c(1,2,1,3),2,2)
solve(A)

     [,1] [,2]
[1,]    3   -1
[2,]   -2    1

solve(matrix(c(1,0,0,0,2,0,0,0,3),3,3))

     [,1] [,2]      [,3]
[1,]    1  0.0 0.0000000
[2,]    0  0.5 0.0000000
[3,]    0  0.0 0.3333333

 

 

Product of two matrices

A <- matrix(c(1,2,1,2),2,2)
B <- matrix(c(1,3,2,4),2,2)
A%*%B # 행렬의 곱을 의미한다.

     [,1] [,2]
[1,]    4    6
[2,]    8   12

# 참고
A*B # 각 해당 원소끼리의 곱을 의미한다.

     [,1] [,2]
[1,]    1    2
[2,]    6    8

 

Vector and square matrix of ones

rep(1,5)

[1] 1 1 1 1 1

rep(1,5) %*% t(rep(1,5)) # 여기서 주의해야할 점은 rep(1,5)은 화면에서는 행벡터로 보이지만, 사실 열벡터라는 것이다.

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    1    1    1
[2,]    1    1    1    1    1
[3,]    1    1    1    1    1
[4,]    1    1    1    1    1
[5,]    1    1    1    1    1

matrix(1,5,5)

     [,1] [,2] [,3] [,4] [,5]
[1,]    1    1    1    1    1
[2,]    1    1    1    1    1
[3,]    1    1    1    1    1
[4,]    1    1    1    1    1
[5,]    1    1    1    1    1

# 참고
t(rep(1,5)) %*% rep(1,5)

     [,1]
[1,]    5

 

Centering matrix (중심화 행렬 -> 나중에 표본분산을 구할 때 용이하게 쓰인다.)

diag(3) -(1/3)*matrix(1,3,3)

           [,1]       [,2]       [,3]
[1,]  0.6666667 -0.3333333 -0.3333333
[2,] -0.3333333  0.6666667 -0.3333333
[3,] -0.3333333 -0.3333333  0.6666667

An example of linear dependence

v1 <- c(1,2); v2 <- c(2,4)
V <- matrix(c(v1,v2),2,2)
v.fun <- function(r1,r2){r1*v1 + r2*v2}

v.fun(0,0)

[1] 0 0

v.fun(-2,1)

[1] 0 0

det(V)

[1] 0

ㅎㅎ,, 왜 이렇게 독립성 여부를 보여야 하는지 모르겠지만,, 위에서 c1*v1 +c2*v2 = 0 을 만족하는 (c1,c2) = (0,0)만이 존재하지 않다는 것을 보여주는 예시이다. (-2,1)도 있으니깐!!

 

Partitioned form of a matrix

A11 <- matrix(1:4,2,2); A21 <-matrix(5:6,1,2)
t(A11)%*%A11 + t(A21)%*%A21

     [,1] [,2]
[1,]   30   41
[2,]   41   61

A <- matrix(c(1,2,5,3,4,6),3,2)
t(A)%*%A

     [,1] [,2]
[1,]   30   41
[2,]   41   61