Error in solve.default(mat) Lapack routine dgesv system is exactly singular: Lapack routine dgesv: system is exactly singular: U[2,2] = 0
When attempting to utilize the solution() method on a singular matrix that lacks a matrix inverse, an error like this one will appear.
This lesson explains how to fix this mistake practically.
How to Make the Error in solve.default(mat) Lapack routine dgesv system is exactly singular Again
Let’s say we use R to build the matrix shown below.
Let’s create a singular matrix
mat <- matrix(c(1, 1, 1, 1), ncol=2, nrow=2)
Now we can view the matrix
[,1] [,2] [1,] 1 1 [2,] 1 1
Now imagine that we try to compute the matrix inverse using the solution() function.
invert matrix try
Error in solve.default(mat) : Lapack routine dgesv: system is exactly singular: U[2,2] = 0
The absence of an inverse matrix in the matrix we generated results in an error.
Please have a look at this Wolfram MathWorld article that provides ten examples of matrices without inverse matrices.
A matrix is considered singular by definition if its determinant is zero.
Before attempting to invert a particular matrix, you can find its determinant using the det() function:
Let’s compute the matrix’s determinant
det(mat)  0
Our matrix’s determinant is zero, which explains why we encounter a problem.
How to correct the issue
Simply making a matrix that is not single is the only way to correct this issue.
Consider using R’s solution() function to invert the matrix shown below:
Now we can generate a non-singular matrix
mat <- matrix(c(1, 7, 4, 2), ncol=2, nrow=2)
let’s view the matrix
[,1] [,2] [1,] 1 4 [2,] 7 2
Now we can calculate the determinant of the matrix.
det(mat)  -26
Let’s try to invert the matrix
[,1] [,2] [1,] -0.07692308 0.15384615 [2,] 0.26923077 -0.03846154
The matrix is not singular, so when we invert it we don’t encounter any errors.