The next version of CVXOPT will include our own library for
computations
with chordal matrices - including multifrontal Cholesky
factorizations.
http://abel.ee.ucla.edu/chompack/

We did not develop the library primarily for the Cholesky
routines,  but they seem to be competitive with CHOLMOD,  and they
are integrated nicely with the sparse matrices in CVXOPT, so you
might find them useful.

The next version of CHOMPACK also includes routines for solving
sparse + low-rank systems, which is useful for solving large
sparse convex problems.

On Nov 27, 4:37 pm, Dag Sverre Seljebotn <da...@student.matnat.uio.no>
wrote:
> I need a convenient matrix class for some numerical work. SciPy doesn't
> accept GPL code and besides I heavily dislike the NumPy matrix class. So
> why not put my efforts into improving Sage (or at least write something
> Sage-compatible for myself)...
>
> In particular I need to Cholesky-factor Hermitian matrices (possibly
> sparse and possibly million-by-million elements), and it would be nice
> to be able to abstract away which library does the factorization (dense
> or sparse) from case to case by simpling passing "sparse=True" to the
> matrix function...
>
> Here's the list of I need (I think) -- thoughts? Would you accept this
> into Sage, or should I just write my own custom class? Is it allowed to
> only submit new features over RDF and CDF or should any new API item
> work on all parents to be accepted?
>
> (Apologies if some of this is already in, I'm mostly ignorant about the
> Sage matrix classes):
>
> 1) Efficient sparse matrix class for RDF and CDF. (I don't think this
> exist currently? At least I get
> sage.matrix.matrix_generic_sparse.Matrix_generic_sparse which doesn't
> feel right.)
>
> 2) I haven't checked but I think converting all my sparse values to a
> Python dict to get it into a Sage matrix would be too slow, at least it
> is wasteful. So I'd like something like
>
> matrix(CDF, I=I, J=J, V=V, sparse=True)
>
> where I, J, and V are vectors containing respectively rows, columns, and
> values, element by element.
>
> 3) Support for declaring a matrix as Hermitian (or symmetric), and then
> only store half of it. Something like
>
> sage: a = matrix(..., hermitian=True)
> sage: a[1,0] = 1+1j
> sage: print a[0,1]
> (1-1j)
>
> or perhaps
>
> sage: a = matrix(..., hermitian='upper')
> sage: a[1,0] = 1+1j
> Traceback...
>      ...
> ValueError: Matrix is defined by its upper-triangular elements only
>
> This would allow storing only half the elements (and probably trigger
> Cholesky solving for log_determinant etc.).
>
> 4) Explicit diagonal matrices. And probably explicit
> lower/upper-triangular matrices as well (with efficient back-solving etc.)
>
> sage: a = matrix(CDF, ..., diagonal=True)
> sage: a[1,0] = 2
> Traceback...
>      ...
> ValueError: Assigning outside of diagonal on a diagonal matrix
>
> and similar for matrix(..., lower=True) and ...upper=True...
>
> 5) Call CHOLMOD to do sparse Cholesky, either through cvxopt or more
> likely through a recent wrapper by Nathaniel Smith. CHOLMOD is already
> in Sage through cvxopt.
>
> --
> Dag Sverre

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to