Constructing the matrices for this exercise
A = matrix(c(6,4,4,10,-2,8,4,6,8),nrow = 3, ncol = 3, byrow = TRUE)
B = matrix(c(6,-2,5,5,7,4,-2,3,1),nrow = 3, ncol = 3, byrow = TRUE)
C = matrix(c(3,-1,10,5,7,4,-2,3,1),nrow = 3, ncol = 3, byrow = TRUE)
D = matrix(c(2,-1,-1,2),nrow = 2, ncol = 2, byrow = TRUE)
J = matrix(c(1,1,1),ncol = 1, byrow = TRUE)
print(A)
## [,1] [,2] [,3]
## [1,] 6 4 4
## [2,] 10 -2 8
## [3,] 4 6 8
print(B)
## [,1] [,2] [,3]
## [1,] 6 -2 5
## [2,] 5 7 4
## [3,] -2 3 1
print(C)
## [,1] [,2] [,3]
## [1,] 3 -1 10
## [2,] 5 7 4
## [3,] -2 3 1
print(D)
## [,1] [,2]
## [1,] 2 -1
## [2,] -1 2
print(J)
## [,1]
## [1,] 1
## [2,] 1
## [3,] 1
Determinant of a Matrix
# 1a. [B + C]
(B + C)
## [,1] [,2] [,3]
## [1,] 9 -3 15
## [2,] 10 14 8
## [3,] -4 6 2
# 1b. J'A
(t(J) %*% A)
## [,1] [,2] [,3]
## [1,] 20 8 20
# c. tr(A'C)
sum(diag(t(A) %*% C))
## [1] 140
# 1d. DD^-1
(D %*% solve(D))
## [,1] [,2]
## [1,] 1 0
## [2,] 0 1
# 1e. eigenvalues and normalized eigenvectors of D
eigen_D <- eigen(D)
(eigen_D$values)
## [1] 3 1
# 1e. eigenvalues and normalized eigenvectors of D
(eigen_D$vectors)
## [,1] [,2]
## [1,] -0.7071068 -0.7071068
## [2,] 0.7071068 -0.7071068
###2. Verify if the following relationships hold:
##2a. CA^T = (C^T A)^T
CA_T <- C %*% t(A)
CT_A_T <- t(t(C) %*% A)
# Compare the results
(CA_T)
## [,1] [,2] [,3]
## [1,] 54 112 86
## [2,] 74 68 94
## [3,] 4 -18 18
(CT_A_T)
## [,1] [,2] [,3]
## [1,] 60 76 104
## [2,] -10 0 38
## [3,] 36 76 80
# Check if they are equal
(all.equal(CA_T, CT_A_T))
## [1] "Mean relative difference: 0.8636364"
##2b. tr(3BA) = 3tr(BA)
# Calculate tr(3BA)
tr_3BA <- sum(diag(3 * B %*% A))
# Calculate 3tr(BA)
tr_BA <- sum(diag(B %*% A))
three_tr_BA <- 3 * tr_BA
# Compare the results
(tr_3BA)
## [1] 270
(three_tr_BA)
## [1] 270
# Check if they are equal
(all.equal(tr_3BA, three_tr_BA))
## [1] TRUE
##2c. |AB^T C| = |A| |B^T| |C|
# Calculate |AB^T C|
det_ABT_C <- det(A %*% t(B) %*% C)
# Calculate |A| |B^T| |C|
det_A <- det(A)
det_BT <- det(t(B))
det_C <- det(C)
det_product <- det_A * det_BT * det_C
# Compare the results
(det_ABT_C)
## [1] -12344832
(det_product)
## [1] -12344832
# Check if they are equal
(all.equal(det_ABT_C, det_product))
## [1] TRUE
##2d. r(ABC) = r(C)
# Calculate r(ABC)
rank_ABC <- qr(A %*% B %*% C)$rank
# Calculate r(C)
rank_C <- qr(C)$rank
# Compare the results
(rank_ABC)
## [1] 3
(rank_C)
## [1] 3
# Check if they are equal
(all.equal(rank_ABC, rank_C))
## [1] TRUE
###3.Find the generalized inverse of A.
# Calculate the generalized inverse of A
library(MASS)
A_ginv <- ginv(A)
print(A_ginv)
## [,1] [,2] [,3]
## [1,] 0.2105263 0.02631579 -0.13157895
## [2,] 0.1578947 -0.10526316 0.02631579
## [3,] -0.2236842 0.06578947 0.17105263
###4.Find a C-inverse for matrix A.
# Calculate a C-inverse for matrix A
A_cinv <- solve(t(A) %*% A) %*% t(A)
print(A_cinv)
## [,1] [,2] [,3]
## [1,] 0.2105263 0.02631579 -0.13157895
## [2,] 0.1578947 -0.10526316 0.02631579
## [3,] -0.2236842 0.06578947 0.17105263
Rank of a matrix
qr(A)$rank
## [1] 3
qr(B)$rank
## [1] 3
qr(C)$rank
## [1] 3
qr(D)$rank
## [1] 2
qr(J)$rank
## [1] 1