> > So this is it:
> > Why is there not emphasize on sagemath.org about the fact that sage can also
> > be used for natural sciences/engineering applications etc.?
> > I think that first of all this would mean more users coming to sage.
>
> From my perspective, SAGE has evolved to the point where the main
> thing holding it back from breaking into other areas is simply the
> lack of a marketing plan.
>
> I have been working on a marketing plan for SAGE that has the
> potential to significantly increase its natural sciences, engineering,
> and mathematics user base in a relatively short period of time.  If a
> SAGE marketing sub-group were formed I would very much like to be
> involved in order to give this marketing plan a try.

For natural sciences, physics, engineering, I think the most important
part is sage.calculus. And there are still many things to improve in
my opinion:

* pattern matching
* subexpression substitution
* unifying and especially simplify the way to check the type of an
expression. Now you need to do this ugly switch:

def _is(e, what):
    import operator
    if what == "Mul":
        return isinstance(e, sage.calculus.calculus.SymbolicArithmetic) and \
            e._operator == operator.mul
    if what == "Add":
        return isinstance(e, sage.calculus.calculus.SymbolicArithmetic) and \
            e._operator == operator.add
    if what == "Pow":
        return isinstance(e, sage.calculus.calculus.SymbolicArithmetic) and \
            e._operator == operator.pow
    if what == "Div":
        return isinstance(e, sage.calculus.calculus.SymbolicArithmetic) and \
            e._operator == operator.div
    if what == "log":
        return isinstance(e, sage.calculus.calculus.SymbolicComposition) and \
            bool(e._operands[0] == sage.all.log)
    if what == "exp":
        return isinstance(e, sage.calculus.calculus.SymbolicComposition) and \
            bool(e._operands[0] == sage.all.exp)
    if what == "Function":
        return isinstance(e, sage.calculus.calculus.SymbolicComposition)
    elif what == "Rational":
        return isinstance(e, sage.rings.rational.Rational)
    elif what == "Real":
        return isinstance(e, sage.rings.real_mpfr.RealNumber)
    else:
        raise "Sorry, unknown 'class': %s" % what


Those are just things I discovered when trying to port the limits from
SymPy to SAGE. Then there are other things, for example:

* working with unknown functions, expanding them in series, etc.
(there is some trac ticket for that already)

And I am sure one can find more, I haven't investigated more closely,
just first impressions. I am sure all of the above will be fixed,
sooner or later, so it's not a big deal.

Ondrej

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to sage-devel@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to