矩陣
創建矩陣
matrix
> a <- matrix(c(1:4,2:5,3:6,4:7),ncol=4,nrow = 4)
> a
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 2 3 4 5
[3,] 3 4 5 6
[4,] 4 5 6 7
創建單位矩陣
diag
> diag(x=1,nrow = 4,ncol = 4)
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 1 0 0
[3,] 0 0 1 0
[4,] 0 0 0 1
創建零矩陣
diag
> e <- diag(x=0,nrow = 3,ncol = 3)
> e
[,1] [,2] [,3]
[1,] 0 0 0
[2,] 0 0 0
[3,] 0 0 0
創建對角矩陣
diag
> e <- diag(1:4,ncol = 4,nrow=4)
> e
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 0 2 0 0
[3,] 0 0 3 0
[4,] 0 0 0 4
創建上/下三角矩陣
lower,tre()
> a[lower.tri(a,diag = FALSE)] <- 0
> a
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 0 3 4 5
[3,] 0 0 5 6
[4,] 0 0 0 7
upper.tri()
> a[upper.tri(a,diag = FALSE)] <- 0
> a
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 2 3 0 0
[3,] 3 4 5 0
[4,] 4 5 6 7
矩陣轉置
> a
[,1] [,2] [,3] [,4]
[1,] 1 0 0 0
[2,] 2 3 0 0
[3,] 3 4 5 0
[4,] 4 5 6 7
> a <- t(a)
> a
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 0 3 4 5
[3,] 0 0 5 6
[4,] 0 0 0 7
求行列式的值
> a
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 0 3 4 5
[3,] 0 0 5 6
[4,] 0 0 0 7
> det(a)
[1] 105
矩陣求逆
solve
> a
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 0 3 4 5
[3,] 0 0 5 6
[4,] 0 0 0 7
> solve(a)
[,1] [,2] [,3] [,4]
[1,] 1 -0.6666667 -0.06666667 -0.03809524
[2,] 0 0.3333333 -0.26666667 -0.00952381
[3,] 0 0.0000000 0.20000000 -0.17142857
[4,] 0 0.0000000 0.00000000 0.14285714
矩陣求秩
> a
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 0 3 4 5
[3,] 0 0 5 6
[4,] 0 0 0 7
> qr(a)$rank
[1] 4
求解特徵值和特徵向量
eigen
> eigen(a)
eigen() decomposition
$values
[1] 7 5 3 1
$vectors
[,1] [,2] [,3] [,4]
[1,] 0.5602873 0.6163156 0.7071068 1
[2,] 0.6645268 0.7043607 0.7071068 0
[3,] 0.4690778 0.3521804 0.0000000 0
[4,] 0.1563593 0.0000000 0.0000000 0
正交矩陣
t(a)%*%a = E
> c <- matrix(c(sqrt(2)/2,-sqrt(2)/2,sqrt(2)/2,sqrt(2)/2),nrow = 2)
> c
[,1] [,2]
[1,] 0.7071068 0.7071068
[2,] -0.7071068 0.7071068
> value <- t(c)%*%c
> value
[,1] [,2]
[1,] 1 0
[2,] 0 1