problem 1

A <- matrix(c(1,-1,2,0,3,4), 2)
A
##      [,1] [,2] [,3]
## [1,]    1    2    3
## [2,]   -1    0    4
X <- A%*%t(A)
paste("X:")
## [1] "X:"
X
##      [,1] [,2]
## [1,]   14   11
## [2,]   11   17
Y <- t(A)%*%A
paste("Y:")
## [1] "Y:"
Y
##      [,1] [,2] [,3]
## [1,]    2    2   -1
## [2,]    2    4    6
## [3,]   -1    6   25
eigenX <-eigen(X)
paste("eigen value for X E1 = ",eigenX$values[1], "E2 = ",eigenX$values[2])
## [1] "eigen value for X E1 =  26.6018016555873 E2 =  4.39819834441274"
paste("eigen vector for X")
## [1] "eigen vector for X"
eigenX$vectors
##           [,1]       [,2]
## [1,] 0.6576043 -0.7533635
## [2,] 0.7533635  0.6576043
eigenY <-eigen(Y)
paste("eigen value for Y E1 = ",eigenY$values[1], "E2 = ",eigenY$values[2])
## [1] "eigen value for Y E1 =  26.6018016555872 E2 =  4.39819834441274"
paste("eigen vector for Y")
## [1] "eigen vector for Y"
eigenY$vectors
##             [,1]       [,2]       [,3]
## [1,] -0.01856629 -0.6727903  0.7396003
## [2,]  0.25499937 -0.7184510 -0.6471502
## [3,]  0.96676296  0.1765824  0.1849001

the two non zero eigen value of X and Y are the same

Compute the left-singular, singular values, and right-singular vectors of A

svdA<-svd(A, dim(A)[1], dim(A)[2])
paste("left sigular:")
## [1] "left sigular:"
svdA$u
##            [,1]       [,2]
## [1,] -0.6576043 -0.7533635
## [2,] -0.7533635  0.6576043
paste("eigen vector for X")
## [1] "eigen vector for X"
eigenX$vectors
##           [,1]       [,2]
## [1,] 0.6576043 -0.7533635
## [2,] 0.7533635  0.6576043
paste("left sigular value are same as eigen vector X  ")
## [1] "left sigular value are same as eigen vector X  "
paste("right sigular:")
## [1] "right sigular:"
svdA$v
##             [,1]       [,2]       [,3]
## [1,]  0.01856629 -0.6727903 -0.7396003
## [2,] -0.25499937 -0.7184510  0.6471502
## [3,] -0.96676296  0.1765824 -0.1849001
paste("eigen vector for Y")
## [1] "eigen vector for Y"
eigenY$vectors
##             [,1]       [,2]       [,3]
## [1,] -0.01856629 -0.6727903  0.7396003
## [2,]  0.25499937 -0.7184510 -0.6471502
## [3,]  0.96676296  0.1765824  0.1849001
paste("right sigular value are same as eigen vector Y  ")
## [1] "right sigular value are same as eigen vector Y  "
paste("sigular:")
## [1] "sigular:"
svdA$d
## [1] 5.157693 2.097188
paste("square of sigular value of A")
## [1] "square of sigular value of A"
svdA$d*svdA$d
## [1] 26.601802  4.398198
paste("eigen value of Y")
## [1] "eigen value of Y"
eigenY$values
## [1] 2.660180e+01 4.398198e+00 1.058982e-16

eigen value of X and Y are same as square of sigular value of A

Problem 2

myinverse <- function(A){
m <- matrix(rep(0,length(A)), nrow = nrow(A), ncol = ncol(A))
for(i in 1:ncol(A)){
    for (j in 1:nrow(A)){
      m[j,i] = det(A[-j,-i])
      if ((j+i) %% 2 != 0){
        m[j,i] = -1 * m[j,i]
      }
    }
  }
return(t(m)/det(A))
}

Example

A <-  matrix(c(1,3,4,1, 1,2,1,3, 2,3,4,5, -1,5,-3,3), nrow=4, byrow=FALSE)
A
##      [,1] [,2] [,3] [,4]
## [1,]    1    1    2   -1
## [2,]    3    2    3    5
## [3,]    4    1    4   -3
## [4,]    1    3    5    3
myinverse(A)
##            [,1]        [,2]        [,3]       [,4]
## [1,]  0.5483871  0.32258065 -0.03225806 -0.3870968
## [2,]  3.7419355  0.61290323 -1.16129032 -0.9354839
## [3,] -1.9677419 -0.45161290  0.64516129  0.7419355
## [4,] -0.6451613  0.03225806  0.09677419  0.1612903
round(A%*%myinverse(A),0)
##      [,1] [,2] [,3] [,4]
## [1,]    1    0    0    0
## [2,]    0    1    0    0
## [3,]    0    0    1    0
## [4,]    0    0    0    1