I wrote code for basic linear algebra computations --- nullspace,
column space, and orthogonal complements. You can get it
from
http://www.unk.edu/acad/math/people/willisb/home.html
In the file linearalgebra.zip, you'll find demo, usage, and test files.
Additionally, there is code for finding the spectrum that
only uses row reduction. For a description, see
http://www.unk.edu/acad/math/people/willisb/eigens-by-row.pdf
An example
(%i1) load("l:/linearalgebra/linalg.mac")$
Warning - you are redefining the Macsyma function rank
(%i2) m : matrix([1,2,3],[4,5,6],[7,8,9]) - z * ident(3);
(%O2) matrix([1-Z,2,3],[4,5-Z,6],[7,8,9-Z])
(%i3) algebraic : true$
(%i4) ptriangularize(m,z);
(%O4)
matrix([4,5-Z,6],[0,66/49,-Z^2/7+(102*Z)/49+132/49],[0,0,(49*Z^3)/264-(245*Z^2)/88-(147*Z)/44])
Tell maxima that the 3,3 entry is zero. Thus z is any eigenvalue.
(%i5) tellrat(%[3,3]);
(%O5) [Z^3-15*Z^2-18*Z]
(%i6) ratsimp(%o4);
The eigenspace corresponding the eigenvalue z is
(%O6) matrix([4,5-Z,6],[0,66/49,-(7*Z^2-102*Z-132)/49],[0,0,0])
(%i7) nullspace(%);
(%O7) SPAN(matrix([1],[(Z^2-14*Z-16)/8],[-(Z^2-18*Z-12)/12]))
where z is any eigenvalue.
Barton