I'm studying engineering, and I'm used to some programs such as
Matlab, Maple, etc. When I knew about SAGE I found it very powerful,
simple and well structured, but I quickly found out that it wouldn't
be very useful in engineering, which is more oriented to numerical
analysis and simple math operations than to abstract algebra. Although
I could just use Octave for this, I'd like to be able to use SAGE for
some engineering-oriented tasks. Here are some proposed features:

1. ENGINEERING MODE
Since SAGE is oriented to mathematics, all numbers are considered
Integer unless otherwise specified (an integer is converted using
Integer() to SAGE's inner type). This isn't practical for engineers,
who normally use real numbers.
Solution: There should be a variable that caused all numbers to be
converted to RealNumber by default instead of Integer, even if an
integer was entered.

2. UNITS
It would be nice to make SAGE capable of handling units and do unit
conversion.
Solution: There are already some Python modules that allow the "1 m"
syntax for a value with units. For some more complex units, I'd use a
syntax like "9.8 'kg*m/s^2' " (a literal number followed by a string),
or "9.8 [kg*m/s^2]" (a literal number followed by the units between
brackets).

3. BODE DIAGRAMS
I didn't find it easy to plot a Bode diagram of a function. The plot()
function doesn't appear to have a "logarithmic" option, and it doesn't
look easy to put 2 parallel plots on the same image, one on the upper
half and another on the lower half.
Solution: have a bode() function that does all the work (along with
nyquist() and maybe root_locus()). Extending the options on the plot()
function would also be nice (at least, add logarithmic_x and
logarithmic_y options).

4. MATRIX INPUT
SAGE lacks an easy way to enter matrices. The easiest one is to do
something like "matrix([[1,2],[3,4]])", but that's uncomfortable,
specially for people who are used to Matlab's (or Octave's) "[1 2; 3
4]".
Solution: My proposed syntax is "[[1,2],[3,4]]m", this is, a literal
list followed by an "m", as an alias to "matrix([[1,2],[3,4]])". Same
for "v" (vectors), "c" (complex numbers), maybe "q" (quaternions),
"p" (polynomials)...

5. MATRIX INDEXES
I had written a long paragraph about how easy is to get slices of
matrices on Matlab/Octave and how good it would be to implement
something similar on SAGE with some examples, just to realize that it
was already implemented. :(
(some examples: mat[3], mat[1,2], mat[0:3], mat[[3,2,1,0]], mat[:,
0]...)

6. TRANSPOSE/CONJUGATE
If I want to get the transposed of a matrix, I have to write
"mat.transpose()", while on Matlab it's as easy as "mat' ". Same for
conjugating complex numbers or transposing+conjugating complex
matrices.
Solution: The solutions are to have a .T (or .H, .C...) attribute, or
to have a custom operator that conjugates and transposes, such as
"*mat" or "+mat" (the latter might be easier to implement since
there's already an unary "+" operator in Python that doesn't do
anything useful).

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