Let \[A = \begin{bmatrix}a & b\\ c & d\\ \end{bmatrix}\]
and let \[A^T = \begin{bmatrix}e & f\\ g & h\\ \end{bmatrix}\]
Then \[AA^T = \begin{bmatrix}ae+bg & af+bh\\ ce+dg & cf+dh\\ \end{bmatrix}\]
and \[A^TA = \begin{bmatrix}ea+fc & eb+fd\\ ga+hc & gb+hd\\ \end{bmatrix}\]
As can be seen from the above, the 2 matrix products are not equal i.e. this matrix multiplication is not commutative. We can further verify this with an example below
A<-matrix(c(1,0,2,5),nrow=2)
A
## [,1] [,2]
## [1,] 1 2
## [2,] 0 5
#Let C be it's transpose
C<-t(A)
C
## [,1] [,2]
## [1,] 1 0
## [2,] 2 5
# Now let's multiply the A and its transpose in both orders (A first and then C first):
A%*%C
## [,1] [,2]
## [1,] 5 10
## [2,] 10 25
C%*%A
## [,1] [,2]
## [1,] 1 2
## [2,] 2 29
#As can be seen from this, the 2 matrix products are not equal.
This would be true for symmetric matrices, of which the identity matrix is one example. For a symmetric square matrix, the transpose is the same as the original matrix. Therefore the order does not matter when it is multiplied with its transpose. An example is given below:
A<-matrix(c(1,0,2,0,3,0,2,0,1),nrow=3)
A
## [,1] [,2] [,3]
## [1,] 1 0 2
## [2,] 0 3 0
## [3,] 2 0 1
#Let C be it's transpose
C<-t(A)
C
## [,1] [,2] [,3]
## [1,] 1 0 2
## [2,] 0 3 0
## [3,] 2 0 1
# Now let's multiply the A and its transpose in both orders (A first and then C first):
A%*%C
## [,1] [,2] [,3]
## [1,] 5 0 4
## [2,] 0 9 0
## [3,] 4 0 5
C%*%A
## [,1] [,2] [,3]
## [1,] 5 0 4
## [2,] 0 9 0
## [3,] 4 0 5
#As can be seen from this, the 2 matrix products are equal.
LUdecomp<-function(matrixA) {
numberOfRows<-nrow(matrixA)
numberOfCols<-ncol(matrixA)
matrixU<-matrixA
matrixL<-diag(x=1,nrow=numberOfRows,ncol=numberOfCols)
for (i in 1:(numberOfRows-1)) {
for (j in (i+1):numberOfRows){
if (matrixU[i,i]!=0) {
multiplier<-matrixU[j,i]/matrixU[i,i]
matrixL[j,i]<-multiplier
matrixU[j,]<-matrixU[j,]-multiplier*matrixU[i,]
}
}
}
return(list('U'=matrixU,'L'=matrixL))
}
A<-matrix(c(1,4,2,0,3,2,5,1,8), nrow=3)
A
## [,1] [,2] [,3]
## [1,] 1 0 5
## [2,] 4 3 1
## [3,] 2 2 8
B<-LUdecomp(A)
cat("The upper triangular matrix is: \n")
## The upper triangular matrix is:
B$U
## [,1] [,2] [,3]
## [1,] 1 0 5.00000
## [2,] 0 3 -19.00000
## [3,] 0 0 10.66667
cat("The lower triangular matrix is: \n")
## The lower triangular matrix is:
B$L
## [,1] [,2] [,3]
## [1,] 1 0.0000000 0
## [2,] 4 1.0000000 0
## [3,] 2 0.6666667 1
cat("The product of the U and L matrices is :\n")
## The product of the U and L matrices is :
#Multiply the L and U matrices together
B$L %*% B$U
## [,1] [,2] [,3]
## [1,] 1 0 5
## [2,] 4 3 1
## [3,] 2 2 8
cat("As can be seen, this matrix multiplication returns the original input matrix. This proves that the factorization is correct.\n")
## As can be seen, this matrix multiplication returns the original input matrix. This proves that the factorization is correct.