Sage has support for sparse linear algebra over PID's.
sage: M = MatrixSpace(QQ, 100, sparse=True) sage: A = M.random_element(density = 0.05) sage: E = A.echelon_form()
The multi-modular algorithm in Sage is good for square matrices (but not so good for non-square matrices):
sage: M = MatrixSpace(QQ, 50, 100, sparse=True) sage: A = M.random_element(density = 0.05) sage: E = A.echelon_form() sage: M = MatrixSpace(GF(2), 20, 40, sparse=True) sage: A = M.random_element() sage: E = A.echelon_form()
Note that Python is case sensitive:
sage: M = MatrixSpace(QQ, 10,10, Sparse=True) Traceback (most recent call last): ... TypeError: MatrixSpace() got an unexpected keyword argument 'Sparse'
Sage can compute eigenvalues and eigenvectors:
sage: g = matrix(GF(7), [[5, 1], [4, 1]]) sage: g.eigenvalues() [4, 2] sage: g.eigenvectors_right() # returns (eigenvalue, [eigenvectors], algebraic multiplicity) [(4, [ (1, 6) ], 1), (2, [ (1, 4) ], 1)]
Eigenvalues and eigenvectors over Q or R can also be computed using Maxima (see section 4.4 below).
See About this document... for information on suggesting changes.