library(matrixcalc)

Problem set 1

1) Show \(A^TA \neq AA^T\)

Answer :

\(A = \left[\begin{array}{ccc} -2 & 3 & -2\\ -4 & -2 & 1\\ 2 & 4 & 2 \end{array}\right]\)

\(A^T = \left[\begin{array}{ccc} -2 & -4 & 2\\ 3 & -2 & 4\\ -2 & 1 & 2 \end{array}\right]\)

\(AA^T = \left[\begin{array}{ccc} -2 & 3 & -2\\ -4 & -2 & 1\\ 2 & 4 & 2 \end{array}\right] \left[\begin{array}{ccc} -2 & -4 & 2\\ 3 & -2 & 4\\ -2 & 1 & 2 \end{array}\right]= \left[\begin{array}{ccc} 17 & 0 & 4\\ 0 & 21 & -14\\ 4 & -14 & 24 \end{array}\right]\)

\(A^TA = \left[\begin{array}{ccc} -2 & -4 & 2\\ 3 & -2 & 4\\ -2 & 1 & 2 \end{array}\right] \left[\begin{array}{ccc} -2 & 3 & -2\\ -4 & -2 & 1\\ 2 & 4 & 2 \end{array}\right] = \left[\begin{array}{ccc} 24 & 10 & 4\\ 10 & 29 & 0\\ 4 & 0 & 9 \end{array}\right]\)

# A is a 3x3 matrix

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

#Transpose of A is calculated by t(A)

t(A)%*%A
##      [,1] [,2] [,3]
## [1,]   24   10    4
## [2,]   10   29    0
## [3,]    4    0    9
A%*%t(A)
##      [,1] [,2] [,3]
## [1,]   17    0    4
## [2,]    0   21  -14
## [3,]    4  -14   24

From the above result we conclude - \(A^TA \neq AA^T\)

2) For a special type of square matrix A, we get \(A^TA = AA^T\). Under what conditions could this be true?

Answer :

For a symmetric matrix, we get \(A^TA = AA^T\). When a matrix is equal to its transpose we call such a matrix as symmetric. Symmetric metric has same number of rows and columns, so its a square matrix. We see from the below that \(A^TA = AA^T\).

\(A = \left[\begin{array}{ccc} 2 & 3 & -9 & 5 & 7\\ 3 &1 &6 &-2 &-3\\ -9 &6& 0 &-1& 9\\ 5& -2& -1& 4 &-8\\ 7& -3& 9& -8& -3\\ \end{array}\right] A^T = \left[\begin{array}{ccc} 2 & 3 & -9 & 5 & 7\\ 3 &1 &6 &-2 &-3\\ -9 &6& 0 &-1& 9\\ 5& -2& -1& 4 &-8\\ 7& -3& 9& -8& -3\\ \end{array}\right]\)

#Here A is a 5x5symmetric matrix
A <- matrix(c(2,3,-9,5, 7,3 ,1 ,6 ,-2 ,-3,-9 ,6, 0 ,-1, 9,5, -2, -1, 4 ,-8,7, -3, 9, -8, -3), nrow=5, byrow = TRUE)

t(A)%*%A
##      [,1] [,2] [,3] [,4] [,5]
## [1,]  168  -76   58  -23 -137
## [2,]  -76   59  -46   23   97
## [3,]   58  -46  199 -133 -100
## [4,]  -23   23 -133  110   24
## [5,] -137   97 -100   24  212
A%*%t(A)
##      [,1] [,2] [,3] [,4] [,5]
## [1,]  168  -76   58  -23 -137
## [2,]  -76   59  -46   23   97
## [3,]   58  -46  199 -133 -100
## [4,]  -23   23 -133  110   24
## [5,] -137   97 -100   24  212

Problem set 2

Write an R function to factorize a square matrix A into LU or LDU, whichever you prefer

LU <- function(A){
  
  # Check if given matrix is square.
  
  if(dim(A)[1]!=dim(A)[2]){
  return('Not a square matrix')
  }
  
  n <- nrow(A)   
  U <- A
  L <- diag(n)   

  for (j in c(1:n)){
    for(i in c(2:n)){
      if(i > j){
        the_row <- U[j,]
        multiplier <- U[i, j] / the_row[j]
        U[i,] <- U[i,] - (multiplier * the_row)
        L[i,j] <- multiplier
      }
    }
  }
  
  return(list(L=L, U=U))
}
# A is a 3x3 matrix

A <- matrix(c(-2,3,-2,-4,-2,1,2,4,2), nrow = 3, byrow = TRUE)
LU(A)
## $L
##      [,1]   [,2] [,3]
## [1,]    1  0.000    0
## [2,]    2  1.000    0
## [3,]   -1 -0.875    1
## 
## $U
##      [,1] [,2]   [,3]
## [1,]   -2    3 -2.000
## [2,]    0   -8  5.000
## [3,]    0    0  4.375
# verify using the R inbuilt function

# A is a 3x3 matrix

A <- matrix(c(-2,3,-2,-4,-2,1,2,4,2), nrow = 3, byrow = TRUE)
lu.decomposition(A)
## $L
##      [,1]   [,2] [,3]
## [1,]    1  0.000    0
## [2,]    2  1.000    0
## [3,]   -1 -0.875    1
## 
## $U
##      [,1] [,2]   [,3]
## [1,]   -2    3 -2.000
## [2,]    0   -8  5.000
## [3,]    0    0  4.375