I'm not sure what the best solution is here because I don't fully
understand your objective. If A has low rank then the solution is not
unique and if it has almost low rank, the solution is very ill conditioned.
A solution could our new "shift" argument to our complex Cholesky
factorization. This will introduce some regularization to the problem. This
requires latest master of Julia. Then you can do
julia> A = sprandn(20,20,0.1);A = A'A;
julia> b = A*ones(size(A, 1));
julia> A\b
ERROR: ArgumentError: matrix has one or more zero pivots
in ldltfact at sparse/cholmod.jl:1042
in ldltfact at sparse/cholmod.jl:1048
in factorize at sparse/linalg.jl:688
in \ at linalg/generic.jl:244
julia> cholfact(A, shift = 1e-16)\b
20-element Array{Float64,1}:
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.0
1.38612
0.0
1.0
1.0
1.0
1.0
1.0
1.0
2015-04-20 20:32 GMT-04:00 Mladen Kolar <[email protected]>:
> Hi,
>
> I am interested in solving a linear system Ax = b where A is a sparse,
> symmetric positive semi-definite matrix.
> A is not exactly low rank, however, for the estimation problem at hand,
> one can approximate A with a matrix that has rank around sqrt(p) where A is
> p x p matrix and still obtain an estimator of x that will have good
> statistical properties.
>
> Is there an incomplete Cholesky factorization for sparse symmetric
> matrices in julia? Or an svd implementation for sparse matrices?
> What would be a recommended way of solving the above problem?
>
> Kind regards,
> Mladen
>