2.8.1 Sparse Linear Algebra

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.