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