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: MS = MatrixSpace(GF(7),2,2) sage: g = MS([[5, 1], [4, 1]]) sage: eigvals = [g.eigenspaces()[0][0], g.eigenspaces()[1][0]]; eigvals [4, 2] sage: g.eigenspaces() [ (4, Vector space of degree 2 and dimension 1 over Finite Field of size 7 User basis matrix: [1 5]), (2, Vector space of degree 2 and dimension 1 over Finite Field of size 7 User basis matrix: [1 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.