行列計算をする際の簡単なメモ
- 行列の作成
行列を作るには、matrix() にベクトルデータ(一次元配列データ)を渡すことで行います。
> a <- matrix( c(1,2,3,4,5,6),nrow = 2,ncol = 3) > a [,1] [,2] [,3] [1,] 1 3 5 [2,] 2 4 6
横走査で配置したい場合は、byrow = TRUE、を追加で指定します。
> matrix(c(101:106),nrow = 2, ncol = 3, byrow = TRUE) [,1] [,2] [,3] [1,] 101 102 103 [2,] 104 105 106
- 行列の和
> a + a [,1] [,2] [,3] [1,] 2 6 10 [2,] 4 8 12
- 行列の項目ごとの積
> a * a [,1] [,2] [,3] [1,] 1 9 25 [2,] 4 16 36
- 行列積
> a %*% a # 求められない Error in a %*% a : non-conformable arguments > c <- matrix( c(3,4,3,4,3,4), nrow = 3, ncol = 2) > c [,1] [,2] [1,] 3 4 [2,] 4 3 [3,] 3 4 > d = a %*% c > d [,1] [,2] [1,] 30 33 [2,] 40 44
- スカラー積を求める
> d * 2 [,1] [,2] [1,] 60 66 [2,] 80 88
- 逆行列を求める
> e <- matrix( c(1,2,3,4),nrow = 2,ncol = 2) > e [,1] [,2] [1,] 1 3 [2,] 2 4 > f = solve(e) > f [,1] [,2] [1,] -2 1.5 [2,] 1 -0.5
元の行列と単位行列の行列積をとると、単位行列になります。(計算誤差があるので正確に 1 と 0 ではない場合がある点に注意)
> e %*% f [,1] [,2] [1,] 1 0 [2,] 0 1