\[\mathbf{A} = \left[\begin{array} {} 1 & 2 & 3\\ -1 & 0 & 4\\ \end{array}\right] \]

# Problem Set 1
A <- matrix(c(1, -1, 2, 0, 3, 4), nrow = 2, ncol = 3)
A
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]   -1    0    4
# X = A * AT
X <- A %*% t(A)
X
##      [,1] [,2]
## [1,]   14   11
## [2,]   11   17
# Y = AT * A
Y <- t(A) %*% A
Y
##      [,1] [,2] [,3]
## [1,]    2    2   -1
## [2,]    2    4    6
## [3,]   -1    6   25
# Compute eigenvalues and eigenvectors of X 
X_eigen <- eigen(X)

X_values <- X_eigen$values
X_values
## [1] 26.601802  4.398198
X_vector <- X_eigen$vectors
X_vector
##           [,1]       [,2]
## [1,] 0.6576043 -0.7533635
## [2,] 0.7533635  0.6576043
# Compute eigenvalues and eigenvectors of Y
Y_eigen <- eigen(Y)

Y_values <- Y_eigen$values
Y_values
## [1] 2.660180e+01 4.398198e+00 1.058982e-16
Y_vector <- Y_eigen$vectors
Y_vector
##             [,1]       [,2]       [,3]
## [1,] -0.01856629 -0.6727903  0.7396003
## [2,]  0.25499937 -0.7184510 -0.6471502
## [3,]  0.96676296  0.1765824  0.1849001
# Compute left-singular, singular values, and right-singular vectors of A using svd command
svd_A <- svd(A)

left_singular <- svd_A$u
left_singular
##            [,1]       [,2]
## [1,] -0.6576043 -0.7533635
## [2,] -0.7533635  0.6576043
singular_values <- svd_A$d
singular_values
## [1] 5.157693 2.097188
right_singular <- svd_A$v
right_singular
##             [,1]       [,2]
## [1,]  0.01856629 -0.6727903
## [2,] -0.25499937 -0.7184510
## [3,] -0.96676296  0.1765824
# Compare the eigenvector of X with left_singular 
X_vector
##           [,1]       [,2]
## [1,] 0.6576043 -0.7533635
## [2,] 0.7533635  0.6576043
left_singular
##            [,1]       [,2]
## [1,] -0.6576043 -0.7533635
## [2,] -0.7533635  0.6576043
round(abs(X_vector)) == round(abs(left_singular))
##      [,1] [,2]
## [1,] TRUE TRUE
## [2,] TRUE TRUE
# Compare the eigenvector of Y with right_singular
Y_vector
##             [,1]       [,2]       [,3]
## [1,] -0.01856629 -0.6727903  0.7396003
## [2,]  0.25499937 -0.7184510 -0.6471502
## [3,]  0.96676296  0.1765824  0.1849001
right_singular
##             [,1]       [,2]
## [1,]  0.01856629 -0.6727903
## [2,] -0.25499937 -0.7184510
## [3,] -0.96676296  0.1765824
#Problem Set 2
# The input matrix has to be square
myinverse <- function(B){
  n <- nrow(B)
  C <- matrix(nrow = n, ncol = n)
  for (i in 1:n){
    for (j in 1:n){
      C[i, j] <- det(B[-i,-j])*(-1)^(i+j)
    }
  }
  inverse_B <- t(C)/det(B)
  return(inverse_B)
}