A computer algebra system written in Python
github.com
github.com
On the topic of sympy, I'm working on this short tutorial---an introduction to sympy based around topics from the standard high school and first-year university curriculum: http://minireference.com/static/sympy_tutorial.pdf
Please don't post the tutorial on HN yet---I'm working out some last typos and I want to time the "official" announcement on HN with the beginning of the school year.
http://www.sympygamma.com/input/?i=integrate+log%28x^2%29
For instance, as you can see in the link above, it can provide steps for derivatives and integrals. WA has the same feature, but you need to subscribe to actually use it without limits.
The optics and the 3D geometry should help a lot with teaching and learning.
I used Sympy recently to solve the rocket equation. It involved some integrals that my rusty math skills couldn't solve so I used Sympy to solve them.
Then I ran a side by side comparison between the integrals I solved with Sympy against a numerical solution using Scipy and Numpy to verify that my results are correct.
The only negative thing about Sympy is that it's rather slow.
Here's the code if you're interested: https://gist.github.com/rikusalminen/6d6bb834d48b9664b38d
(Quickstart here http://www.sagemath.org/tour-quickstart.html, and really awesome cloud version (that requires an account, but is very worth it here: https://cloud.sagemath.com/)
Basically, Sage is more comprehensive as it pulls in a lot of different packages. SymPy is designed to be a Python CAS that you can use with other Python projects. Also, Sage doesn't directly support Windows, it requires the use of a VM image instead.
http://ipython.org/ipython-doc/2/interactive/qtconsole.html
One of the big advantages is that you can print your expressions using LaTeX:
IPython's notebook allows you to easily publish results. They include all you want and need: latex, imshow and nice code with many languages. But it's not good for generating results.
Perhaps the area it lacks most in is querying variables. In QtConsole, you just type `plot(x)` and see a plot with no side effects. In the notebook on the other hand, you have to type `plot(x)` into a new cell unless you want to rerun your code again and you have to delete that cell later (otherwise you have an unreadable notebook). Plus, the default keybindings (while easy to see) are not intuitive; I don't instinctively know how to jump back a cell.
To select a previous cell just press UP in command mode (or press Esc-UP in any mode). Ref: http://nbviewer.ipython.org/github/ipython/ipython/blob/2.x/...
Soon people will post links to the gnome repos with the title "A open source desktop environment for linux" ... now I'm tempted to do it myself.
You can see an explanation of the MacSyma system in Peter Norvig's (head of Google researcyh) Paradigms of Artificial Intelligence (PAIP).
http://norvig.com/paip/README.html
http://norvig.com/paip/macsyma.lisp
http://norvig.com/paip/macsymar.lisp
http://norvig.com/paip/cmacsyma.lisp
The original development of the MacSyma system influenced Mathematica: http://en.wikipedia.org/wiki/Macsyma