Hi.

On Sun, Mar 18, 2012 at 9:23 AM, Ashwini Oruganti
<ashwini.oruga...@gmail.com> wrote:
> Hi,
>
> I am a sophomore undergraduate Computer Science and Engineering student.
> I've done a substantial amount of Mathematics in high school, and so far in
> my university (Differential Calculus, Integral Calculus, Linear Algebra,
> Probability Theory) and am pretty comfortable learning new concepts. My Open
> Source contribution so far has been a few patches in Evolution[1] [2] [3]
> and a few bugs (yakuake [4] , Sugarlabs [5]).
>
> I would like to work on SymPy this summer and take it up as my GSoC project.
> I went through the ideas page and was thinking over the implementation of
> Step-by-step Expression Manipulation, and I felt it could be implemented the
> way we do dry runs manually, e.g. for higher order derivatives, display the
> result of fdiff() (i.e. 1st order derivative) at each step. This would also
> help avoid code-duplication in cases where SymPy works in the way we would
> too by hand. "show_steps" could be implemented as a separate function where,
> when called by the user, it could be made it operation-specific.
>
> And as to what the output should look like, the readability part is easy,
> what's tricky is the usability part. We could store each step in an object
> (auto-name each step as step1. step2, etc) that when called, can print the
> operations occurring in that step and then the user could use it as he/she
> finds fit.

Ideally, the way we store this information and the way we print it
should be completely separate code (the way we print it could just be
implemented as part of the printing system).  As you said, the more
important part is to have it in a usable form.  Here are a few things
to think about:

- We may want to do different degrees of steps.  If I compute
diff(x*sin(x), x, x), I may want this as two first order derivatives
as you said, or I may want to break it up further and show the product
rule and rules for the derivative of x and sin(x) shown.

- Different steps may apply.  For example, if you have something that
does integrals, you could compute Integral(sin(x)*exp(x), x) using
integration by parts in two different ways.  Clearly the user should
be able to pick u and dv to be whatever he wants (even if it doesn't
work), but there should be smart defaults as well.

- You should be able to apply steps to an expression. This was
discussed in another thread on this mailing list about this topic.

- Printing is important.  You need to have a good way to visualize
what is going on, or it will be useless.

Aaron Meurer

>
> Please do let me know your take on this, and if its feasible to implement.
>
> I also had a few ideas about the implementation of sparse matrix
> representation for Matrix, in the linear algebra module.  I think we can use
> a combination of both Dense & Sparse storage. We can create a list of
> indices that holds the zero elements and modify other Matrix operations to
> first see if the element is in this list, if so, then treat it as a zero,
> else continue as before ( and refer to the Dense storage value); probably
> implement this as a test_sparse() function and add it to the existing matrix
> operations.
> It's mentioned in the wiki that this project was partially worked upon by a
> previous GSoC student. Given a reference, I could probably complete it
> further.

The unmerged work from that project is here:
https://github.com/sympy/sympy/pulls/sherjilozair

>
> I would love to get more inputs on the above ideas, and discuss the same.
>
> Regards,
> Ashwini Oruganti
>
> [1] https://bugzilla.gnome.org/show_bug.cgi?id=593449
> [2] https://bugzilla.gnome.org/show_bug.cgi?id=593444
> [3] https://bugzilla.gnome.org/show_bug.cgi?id=593450
> [4] https://bugs.kde.org/show_bug.cgi?id=294051
> [5] http://bugs.sugarlabs.org/ticket/3362
>
> --
> You received this message because you are subscribed to the Google Groups
> "sympy" group.
> To post to this group, send email to sympy@googlegroups.com.
> To unsubscribe from this group, send email to
> sympy+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/sympy?hl=en.

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

Reply via email to