Linear Algebra Operations on Matrices in R
Dot Product
The dot product of two vectors is a fundamental operation in linear algebra. In R, you can compute the dot product of two vectors using the %*% operator or the sum() function:
# Example 1: Dot product of two vectors v1 <- c(1, 2, 3) v2 <- c(4, 5, 6) # Dot product dot_product <- v1 %*% v2 print(dot_product) # The result is: # 32
Matrix Multiplication
Matrix multiplication is performed with the %*% operator. The number of columns in the first matrix must equal the number of rows in the second matrix:
# Example 2: Matrix multiplication m1 <- matrix(1:4, nrow = 2) m2 <- matrix(5:8, nrow = 2) # Matrix multiplication mat_product <- m1 %*% m2 print(mat_product) # The result is: # [,1] [,2] # [1,] 19 22 # [2,] 43 50
Matrix Decomposition
Matrix decomposition is an important technique in linear algebra. Here are some common types of decompositions:
LU Decomposition
LU decomposition factors a matrix into the product of a lower triangular matrix (L) and an upper triangular matrix (U). Use the lu() function from the Matrix package:
# Example 3: LU Decomposition library(Matrix) m <- matrix(c(4, 3, 6, 3), nrow = 2) lu_decomp <- lu(m) # Matrices L and U L <- lu_decomp$L U <- lu_decomp$U print(L) print(U) # The result is: # L # [,1] [,2] # [1,] 1 0 # [2,] 0.5 1 # U # [,1] [,2] # [1,] 4 3 # [2,] 0 1.5
QR Decomposition
QR decomposition factors a matrix into the product of an orthogonal matrix (Q) and a triangular matrix (R). Use the qr() function:
# Example 4: QR Decomposition qr_decomp <- qr(m) # Matrices Q and R Q <- qr.Q(qr_decomp) R <- qr.R(qr_decomp) print(Q) print(R) # The result is: # Q # [,1] [,2] # [1,] -0.8 -0.6 # [2,] -0.6 0.8 # R # [,1] [,2] # [1,] -5 -7 # [2,] 0 -1
Singular Value Decomposition (SVD)
Singular Value Decomposition (SVD) factors a matrix into three matrices: U, D, and V, where D is a diagonal matrix containing singular values:
# Example 5: Singular Value Decomposition (SVD) svd_decomp <- svd(m) # Matrices U, D, and V U <- svd_decomp$u D <- diag(svd_decomp$d) V <- svd_decomp$v print(U) print(D) print(V) # The result is: # U # [,1] [,2] # [1,] -0.707 -0.707 # [2,] -0.707 0.707 # D # [,1] [,2] # [1,] 8.0 0.0 # [2,] 0.0 0.0 # V # [,1] [,2] # [1,] -0.707 -0.707 # [2,] -0.707 0.707
Solving Linear Systems
To solve a system of linear equations of the form Ax=bAx = bAx=b, where AAA is a matrix and bbb is a vector, use the solve() function:
# Example 6: Solving a system of linear equations A <- matrix(c(2, 1, 1, 3), nrow = 2) b <- c(4, 10) # Solving the system x <- solve(A, b) print(x) # The result is: # [1] 2 4
Eigenvalues and Eigenvectors
To compute the eigenvalues and eigenvectors of a matrix, use the eigen() function:
# Example 7: Eigenvalues and eigenvectors eigen_decomp <- eigen(m) values <- eigen_decomp$values vectors <- eigen_decomp$vectors print(values) print(vectors) # The result includes eigenvalues and eigenvectors: # $values # [1] 5.372281 0.627719 # $vectors # [,1] [,2] # [1,] -0.8245648 -0.4159736 # [2,] -0.5657675 0.9093760
Summary of Key Linear Algebra Operations
- Dot Product: %*%
- Matrix Multiplication: %*%
- LU Decomposition: lu() from the Matrix package
- QR Decomposition: qr()
- Singular Value Decomposition (SVD): svd()
- Solving Linear Systems: solve()
- Eigenvalues and Eigenvectors: eigen()
Understanding these linear algebra operations allows you to perform a wide range of calculations and analyses with matrices in R.