Matrix Functions for Teaching and Learning Linear Algebra and Multivariate Statistics, http://friendly.github.io/matlib/
Version 0.9.1
These functions are mainly for tutorial purposes in learning matrix algebra
ideas using R. In some cases, functions are provided for concepts available
elsewhere in R, but where the function call or name is not obvious. In other
cases, functions are provided to show or demonstrate an algorithm, sometimes
providing a verbose =
argument to print the details of computations.
In addition, a collection of functions are provided for drawing vector diagrams in 2D and 3D.
Get the released version from CRAN:
install.packages("matlib")
The development version can be installed to your R library directly from this repo via:
if (!require(devtools)) install.packages("devtools")
library(devtools)
install_github("friendly/matlib", build_vignettes = TRUE)
This installs the package from the source and creates the package vignettes, so you will need to have R Tools installed on your system. R Tools for Windows takes you to the download page for Windows. R Tools for Mac OS X has the required programs for Mac OS X.
The functions in this package are grouped under the following topics
- Convenience functions:
tr()
- trace of a matrixR()
- rank of a matrixJ()
- constant vector, matrix or arraylen()
- Euclidean length of a vector or columns of a matrixvec()
- vectorize a matrixProj(y, X)
- projection of vector y on columns of Xmpower(A, p)
- matrix powers for a square symmetric matrix
- Determinants: functions for calculating determinants by cofactor expansion
minor()
- Minor of A[i,j]cofactor()
- Cofactor of A[i,j]rowMinors()
- Row minors of A[i,]rowCofactors()
- Row cofactors of A[i,]Det()
- Determinants by elimination or eigenvalues
- Elementary row operations: functions for solving linear equations "manually" by the steps used in row echelon form and Gaussian elimination
rowadd()
- Add multiples of rows to other rowsrowmult()
- Multiply rows by constantsrowswap()
- Interchange two rows of a matrix
- Linear equations: functions to illustrate linear equations of the form
$\mathbf{A x = b}$
showEqn(A, b)
- show matrices (A, b) as linear equationsplotEqn(A, b)
,plotEqn3d(A, b)
- plot matrices (A, b) as linear equations
- Gaussian elimination: functions for illustrating Gaussian elimination for solving systems of linear equations of the form
$\mathbf{A x = b}$ . These functions provide averbose=TRUE
argument to show the intermediate steps and afractions=TRUE
argument to show results usingMASS::fractions
.
gaussianElimination(A, B)
- reduces (A, B) to (I, A^{-1} B)Inverse(X)
,inv()
- usesgaussianElimination
to find the inverse of Xechelon(X)
- usesgaussianElimination
to find the reduced echelon form of XGinv(X)
- usesgaussianElimination
to find the generalized inverse of XLU(X)
- LU decomposition of a matrix Xcholesky()
- calculates a Cholesky square root of a matrixswp()
- matrix sweep operator
- Eigenvalues: functions to illustrate the algorithms for calculating eigenvalues and eigenvectors
Eigen()
- eigenvalues and eigenvectorsSVD()
- singular value decompositionpowerMethod()
- find the dominant eigenvector using the power methodshowEig()
- draw eigenvectors on a 2D scatterplot with a dataEllipse
- Vector diagrams: functions for drawing vector diagrams in 2D and 3D
arrows3d()
- draw nice 3D arrowscorner()
,arc()
- draw a corner or arc showing the angle between two vectors in 2D/3DpointOnLine()
- position of a point along a linevectors()
,vectors3d()
- plot geometric vector diagrams in 2D/3Dregvec3d()
- calculate and plot vectors representing a bivariate regression model,lm(y ~ x1 + x2)
in mean-deviation form.
A small collection of vignettes is now available. Use browseVignettes("matlib")
to see them.
See also: Fox & Friendly, Visualizing Simultaneous Linear Equations, Geometric Vectors, and Least-Squares Regression with the matlib Package for R, June 2016, useR! Conference, Stanford.