The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.
The following examples illustrate the basic properties of the determinant of a matrix. We do this first with simple numerical examples and then using geometric diagrams.
##      [,1] [,2]
## [1,]    3    1
## [2,]    2    4## [1] 10## [1] -10## [1] -10Note that to multiply rows by different constants requires a diagonal matrix on the left.
##      [,1] [,2]
## [1,]    9    3
## [2,]    2    4## [1] 30This is because multiplying a matrix by a constant multiplies each row.
## [1] 90## [1] 90The determinant of a product is the product of the determinants. The same holds for any number of terms in a matrix product.
##      [,1] [,2]
## [1,]    4    2
## [2,]    3    5## [1] 140## [1] 140det() == 0Here we just add an additional copy of column 1 of a matrix, so
C[,3] == C[,1]. The determinant is 0 because the columns
are linearly dependent.
##      [,1] [,2] [,3]
## [1,]    1    5    1
## [2,]    2    6    2
## [3,]    4    4    4## [1] 0This is the principle behind one of the elementary row operations.
## [1] 10Many aspects of matrices and vectors have geometric interpretations. For \(2 \times 2\) matrices, the determinant is the area of the parallelogram defined by the rows (or columns), plotted in a 2D space. (For \(3 \times 3\) matrices, the determinant is the volume of a parallelpiped in 3D space.)
##      [,1] [,2]
## [1,]    3    1
## [2,]    2    4## [1] 10The matlib package has some handy functions
(vectors()) for drawing geometric diagrams.
library(matlib)
xlim <- c(0,6)
ylim <- c(0,6)
par(mar=c(3,3,1,1)+.1)
plot(xlim, ylim, type="n", xlab="X1", ylab="X2", asp=1)
sum <- A[1,] + A[2,]
# draw the parallelogram determined by the rows of A
polygon( rbind(c(0,0), A[1,], sum, A[2,]), col=rgb(1,0,0,.2))
vectors(A, labels=c("a1", "a2"), pos.lab=c(4,2))
vectors(sum, origin=A[1,], col="gray")
vectors(sum, origin=A[2,], col="gray")
# add some annotations
text(0,6, "det(A) is the area of its row vectors", pos=4)
text(mean(A[,1]), mean(A[,2]), "det(A)", cex=1.25)There is a simple visual proof of this fact about determinants but it is easiest to see in the case of a diagonal matrix, where the row vectors are orthogonal, so area is just height x width.
##      [,1] [,2]
## [1,]    2    0
## [2,]    0    2## [1] 4Plot this as before:
par(mar=c(3,3,1,1)+.1)
plot(c(0,2), c(0,2), type="n", xlab="X1", ylab="X2", asp=1)
sum <- D[1,] + D[2,]
polygon( rbind(c(0,0), D[1,], sum, D[2,]), col=rgb(0,1,0,.2))
vectors(D, labels=c("d1", "d2"), pos.lab=c(3,4))
vectors(sum, origin=D[1,], col="gray")
vectors(sum, origin=D[2,], col="gray")
text(mean(D[,1]), mean(D[,2]), "det(D)", cex=1.25)Finally, we can also see why the determinant is zero when the rows or columns are proportional.
##      [,1] [,2]
## [1,]    1    2
## [2,]    2    4## [1] 0Such vectors are called collinear. They enclose no area.
par(mar=c(3,3,1,1)+.1)
plot(c(0,4), c(0,4), type="n", xlab="X1", ylab="X2", asp=1)
vectors(B, labels=c("b1", "b2"), pos.lab=c(4,2))These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.