Here's another idea for GSoC.  I don't think there's as much doubt
here as with the others, so I'll probably just go ahead and add it to
the ideas list.

Many times, people ask how they can tell what some functions are
doing.  For example, they want to know step by step how
diff(x*sin(x**2), x) works, or integrate(x*sin(x**2), x).  For the
former, the best you can do is to follow the code; for the latter, the
algorithm doesn't work at all like you would do it by hand, so there's
really no way.

The idea is to implement a way to do this.  It would be along the
lines of WolframAlpha, where if you do certain operations (including
the above two), there is a button "Show steps," which shows everything
step by step.

The question is what would be a good interface for this?  For the most
part, it would probably mean reimplementing the basic "by hand"
algorithms, so that you can determine exactly what steps are used.
What should the output look like, so that it is both readable and
usable (e.g., maybe some kind of annotated objects representing
operations that you can literally apply to an expression to do those
things).

Another question: for those operations where what SymPy does is pretty
close to what you'd do by hand (e.g., differentiation), what is a good
way to avoid code duplication and make things extensible?

Of course, we don't have to answer these questions before we can put
it on the ideas list: we can have the students interested in doing it
try to come up with the best ways, but I think it's good to discuss
ideas before hand.

Aaron Meurer

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/sympy?hl=en.

Reply via email to