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