[Numpy-discussion] Reduced row echelon form

jason-sage at creativetrax.com jason-sage at creativetrax.com
Tue Nov 18 18:17:00 EST 2008


Anne Archibald wrote:
> 2008/11/18 Robert Young <rob at roryoung.co.uk>:
>
>   
>> Is there a method in NumPy that reduces a matrix to it's reduced row echelon
>> form? I'm brand new to both NumPy and linear algebra, and I'm not quite sure
>> where to look.
>>     
>
> Unfortunately, reduced row-echelon form doesn't really work when using
> approximate values: any construction of the reduced row-echelon form
> forces you many times to ask "is this number exactly zero or just very
> small?"; if it's zero you do one thing, but if it's very small you do
> something totally different - usually divide by it. With
> floating-point numbers, every calculation is approximate, and such a
> method will blow up completely. If you really need reduced row echelon
> form, you have to start with exact numbers and use a package that does
> exact computations (I think SymPy might be a place to start).
>   

I also recommend Sage here (http://www.sagemath.org).  For example, here 
is a session in which we calculate the reduced echelon form of a matrix 
over the rationals (QQ):

sage: a=matrix(QQ,[[1,2,3],[4,5,6],[7,8,9]])
sage: a.echelon_form()
[ 1  0 -1]
[ 0  1  2]
[ 0  0  0]

Sage has quite a bit of advanced functionality for exact linear 
algebra.  (It also uses numpy as a backend to provide some nice 
functionality for approximate linear algebra).  Here is a short tutorial 
on constructions in linear algebra:  
http://sagemath.org/doc/const/node28.html

Jason




More information about the NumPy-Discussion mailing list