Answer 1:

A <- matrix(c(1,2,3,-1,0,4), 2, byrow=T)

X <- A %*% t(A)
X
##      [,1] [,2]
## [1,]   14   11
## [2,]   11   17
Y <- t(A) %*% A
Y
##      [,1] [,2] [,3]
## [1,]    2    2   -1
## [2,]    2    4    6
## [3,]   -1    6   25
# Calculate Eigen vectors & Eigen values of X and Y

eX <- eigen(X)
e_val_X <- eX$values
e_val_X
## [1] 26.601802  4.398198
e_vec_X <- eX$vectors
e_vec_X
##           [,1]       [,2]
## [1,] 0.6576043 -0.7533635
## [2,] 0.7533635  0.6576043
eY <- eigen(Y)
e_val_Y <- eY$values
e_val_Y
## [1] 2.660180e+01 4.398198e+00 1.058982e-16
e_vec_Y <- eY$vectors
e_vec_Y
##             [,1]       [,2]       [,3]
## [1,] -0.01856629 -0.6727903  0.7396003
## [2,]  0.25499937 -0.7184510 -0.6471502
## [3,]  0.96676296  0.1765824  0.1849001
# Calculate Singular Values

sVal <- svd(A)
sVal
## $d
## [1] 5.157693 2.097188
## 
## $u
##            [,1]       [,2]
## [1,] -0.6576043 -0.7533635
## [2,] -0.7533635  0.6576043
## 
## $v
##             [,1]       [,2]
## [1,]  0.01856629 -0.6727903
## [2,] -0.25499937 -0.7184510
## [3,] -0.96676296  0.1765824
# Left Vectors (U) = Eigen Vectors of AA^T

e_vec_X[,1:2]
##           [,1]       [,2]
## [1,] 0.6576043 -0.7533635
## [2,] 0.7533635  0.6576043
sVal$u
##            [,1]       [,2]
## [1,] -0.6576043 -0.7533635
## [2,] -0.7533635  0.6576043
# Right Vectors(V) = Eigen Vectors of A^TA

sVal$v
##             [,1]       [,2]
## [1,]  0.01856629 -0.6727903
## [2,] -0.25499937 -0.7184510
## [3,] -0.96676296  0.1765824
e_vec_Y[,1:2]
##             [,1]       [,2]
## [1,] -0.01856629 -0.6727903
## [2,]  0.25499937 -0.7184510
## [3,]  0.96676296  0.1765824
# Singluar Values
sqrt(e_val_X)
## [1] 5.157693 2.097188
sqrt(e_val_Y)
## [1] 5.157693e+00 2.097188e+00 1.029068e-08

Answer 2:

myinverse function

myinverse <- function(A) {
  cFac <- diag (nrow(A))

  for (i in 1:nrow ( A )) {
    for (j in 1:ncol( A )) {
    cFac[i,j] <- ( det(A[(-1*i), (-1*j) ]) * ((-1)^(i+j) )  )

    }
  }
  T <- diag(nrow(A)) 

  for ( i in 1:nrow(A)) {
    row <- cFac[i,]
    for ( j in 1:length(row)) {
      T [ j,i ] <- row[j]
    }

  }
  inv <- 1/(det(A) ) * T
  inv
}

Testing function

A <- matrix(c(3,2,1,2,1,3,1,1,3),nrow=3)

A %*% myinverse(A)
##      [,1]          [,2]         [,3]
## [1,]    1 -4.440892e-16 5.551115e-17
## [2,]    0  1.000000e+00 0.000000e+00
## [3,]    0 -1.776357e-15 1.000000e+00