線形代数

crossprod

crossprod:行列の積を求める。

x <- c(1,3,6,8,9)
y <- c(2,2,2,2,2)
crossprod(x,y)
##      [,1]
## [1,]   54
tcrossprod(x,y)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    2    2    2    2    2
## [2,]    6    6    6    6    6
## [3,]   12   12   12   12   12
## [4,]   16   16   16   16   16
## [5,]   18   18   18   18   18

tcrossprod

tcrossprod:転置した積を求める。

# tcrossprodのサンプルコードから参照
z <- 1:4; names(z) <- letters[1:4]
z
## a b c d 
## 1 2 3 4
tcrossprod(as.matrix(z))
##   a b  c  d
## a 1 2  3  4
## b 2 4  6  8
## c 3 6  9 12
## d 4 8 12 16

eigen, qr, svd

%*%

%*%:行列の積を計算する
左辺の行列の列数と右辺の行列の行数が一致していることが前提条件

x <- matrix(c(1,2,3,4), ncol = 2)
x
##      [,1] [,2]
## [1,]    1    3
## [2,]    2    4
y <- matrix(c(4,1,3,2,2,3), ncol = 3)
y
##      [,1] [,2] [,3]
## [1,]    4    3    2
## [2,]    1    2    3
x %*% y
##      [,1] [,2] [,3]
## [1,]    7    9   11
## [2,]   12   14   16
具体的に計算してみると
1*4+3*1 1*3+3*2 1*2+3*3
2*4+4*1 2*3+4*2 2*2+4*3

%o%, outer

%o%:行列の外積を計算する。
outer:同じく外積を計算する。

x <- matrix(1:5, 1, 5)
y <- matrix(1:5, 1, 5)
x %o% y
## , , 1, 1
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## 
## , , 1, 2
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    2    4    6    8   10
## 
## , , 1, 3
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    3    6    9   12   15
## 
## , , 1, 4
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    4    8   12   16   20
## 
## , , 1, 5
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    5   10   15   20   25
outer(x,y)
## , , 1, 1
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    2    3    4    5
## 
## , , 1, 2
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    2    4    6    8   10
## 
## , , 1, 3
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    3    6    9   12   15
## 
## , , 1, 4
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    4    8   12   16   20
## 
## , , 1, 5
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    5   10   15   20   25

rcond

行列の逆条件数を計算する。

x <- matrix(c(632.98091, 772.70443, 21.38760, 158.83162, 113.46291, 700.92520, 135.74351, 84.19629, 571.85798, 710.49040, 252.67074, 436.90322), nrow = 4, byrow = TRUE)
rcond(x)
## [1] 0.1448387

solve

正方行列の逆行列を求める。

x <- matrix(c(632.98091, 772.70443, 21.38760, 158.83162, 113.46291, 700.92520, 135.74351, 84.19629, 571.85798, 710.49040, 252.67074, 436.90322, 185.59513, 331.96215, 584.90032, 134.66699), nrow = 4, byrow = TRUE)
solve(x)
##               [,1]          [,2]          [,3]          [,4]
## [1,]  2.354206e-03 -0.0022915430 -0.0006363633  0.0007206384
## [2,] -7.163805e-06  0.0018431495 -0.0002547444 -0.0003174488
## [3,] -4.172952e-05 -0.0003684931 -0.0005394568  0.0020297783
## [4,] -3.045613e-03  0.0002151611  0.0038480097 -0.0016008673
最終更新日:2016/04/27

copyrigth © 2016 r-beginners.com All rigths reserved.

PAGE TOP ▲