library(matrixcalc)
\(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\)
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
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