Dag Sverre Seljebotn 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.)

This would simply use SciPy's sparse matrix classes.

> 
> 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