# [R] Solving sparse, singular systems of equations

William Dunlap wdunlap at tibco.com
Wed Apr 20 16:59:08 CEST 2016

```This is not a solution but your lsfit attempt
#Error in lsfit(A, b) : only 3 cases, but 4 variables
lsfit(A,b)
gave that error because lsfit adds a column of 1 to
its first argument unless you use intercept=FALSE.
Then it will give you an answer (but I think it converts
your sparse matrix into a dense one before doing
any linear algebra).

Bill Dunlap
TIBCO Software
wdunlap tibco.com

On Wed, Apr 20, 2016 at 4:22 AM, A A via R-help <r-help at r-project.org>
wrote:

>
>
>
>  I have a situation in R where I would like to find any x (if one exists)
> that solves the linear system of equations Ax = b, where A is square,
> sparse, and singular, and b is a vector. Here is some code that mimics my
> issue with a relatively simple A and b, along with three other methods of
> solving this system that I found online, two of which give me an error and
> one of which succeeds on the simplified problem, but fails on my data
> set(attached). Is there a solver in R that I can use in order to get x
> without any errors given the structure of A? Thanks for your time.
> #CODE STARTS HEREA =
> as(matrix(c(1.5,-1.5,0,-1.5,2.5,-1,0,-1,1),nrow=3,ncol=3),"sparseMatrix")b
> = matrix(c(-30,40,-10),nrow=3,ncol=1)
> #solve for x, Error in LU.dgC(a) : cs_lu(A) failed: near-singular A (or
> out of memory)solve(A,b,sparse=TRUE,tol=.Machine\$double.eps)
> #one x that happens to solve Ax = bx = matrix(c(-10,10,0),nrow=3,ncol=1)A
> %*% x
> #Error in lsfit(A, b) : only 3 cases, but 4 variableslsfit(A,b)#solves the
> system, but fails belowsolve(qr(A, LAPACK=TRUE),b)#Error in qr.solve(A, b)
> : singular matrix 'a' in solveqr.solve(A,b)
> #matrices used in my actual problem (see attached files)A =
> #Error in as(x, "matrix")[i, , drop = drop] : subscript out of
> boundssolve(qr(A, LAPACK=TRUE),b)
>
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help