A while ago, there was a big discussion about making the echelon_form 
and echelonize command for matrices automatically work over the fraction 
field of the base ring, sort of like how the inverse operation works 
now.  The plan then was to make the current echelon functions instead be 
hermite form functions, and make new echelon functions that would first 
convert the base ring to a fraction field.

The relevant ticket is #3211.

Well, it's been about a year now, and I'm wondering if such a 
fundamental change is advisable any more.  For me, the reason to make 
the change was because many linear algebra people, and almost all 
undergraduate students learning linear algebra, always consider a matrix 
to be over a field, even if the entries of the matrix are just integers. 
  You can see in numerous tutorials and helps for linear algebra in Sage 
the explanations about why the person really needs to declare a matrix 
as matrix(QQ, data), not just matrix(data).

As of now, I can see several possibilities:

1. Keep everything the way it is, but make a new function, say m.rref(), 
that automatically works over the fraction field.  I don't believe this 
handles things like row reducing (over QQ) the basis of a nullspace when 
entries are just integers, though.  Compare, for example, 
matrix(range(9)).right_kernel() and matrix(QQ,range(9)).right_kernel(), 
where a student would expect the latter answer for the former question.


2. Change all references to echelon form for non-fields to hermite form, 
and have echelon form first construct the fraction field before doing 
anything.  Of course, echelon form for fields does not need to change. 
This was the vote from the discussion a long time ago, but it is also a 
rather invasive change.  This leads to the "right" behavior from a 
student's standpoint that a matrix is always over a field (or, you might 
say, the matrix by default acts like it is over a field).

3. Keep everything as it is and forever keep explaining to students and 
linear algebra people that they must declare their matrices as 
matrix(QQ, ...), etc.  I think this was voted down in the previous 
discussion.

Any other ideas?  What do you think we should do now?  Proceed with 
option 2, or has the growth of Sage in the last year made it so that 
option 2 is impractical now?

Jason

-- 
Jason Grout


--~--~---------~--~----~------------~-------~--~----~
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel-unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to