1 | initial version |
Compared to Mathematica 6.0.1 (the version of mathematica i bought - without paying more, they won't even let me have version 6.0.2 which fixed a bug I encountered), I have found Sage to be more reliable for what I do.
The most important difference is ease of debugging. When you make a mistake, Mathematica plows on. For example, if you forget to define a variable, Mathematica assumes it's symbolic and will keep going until it crashes, hangs, generates a meaningless expression, or you treat it as a list and slice it. if you're lucky Mathematica will give meaningless errors along the way that are hard to trace back to the problem (e.g. they occur 400 lines after the initial problem, and do not mention variable names or line numbers). If you make such a mistake in Sage, it will straight away throw up an error message with a traceback, which makes for MUCH faster debugging.
In my few years' experience using Sage, I have run into several parts that were rough around the edges (e.g. interaction with Mathematica, and to a lesser extent numpy/scipy), and found one bug that silently gave me incorrect answers (returning a vector as a row vector instead of a column vector). But then I also found an issue with Mathematica, where results were qualitatively different depending on whether it was run from a notebook or a command line (which turned out to be 32-bit vs 64-bit).
Still, I find it harder to write code that silently gives the wrong answer in Sage than in Mathematica, and it is also much easier to write code that gives the correct answer in Sage than to do the same in Mathematica, due to the errors and tracebacks that Sage provides. Sage almost always gives errors when something goes wrong, which helps you work around its inconsistencies, unlike mathematica, which hopes for the best and gives no advice as to how to work around its inconsistencies.
I have had to write my own functions and do lots of numerics - both things which Sage (which incorporates Python and SciPy) is very well suited to, and Mathematica is poorly suited to.
Other advantages Sage has, like redo/multiple level undo (provided by your text editor, or to a limited extent in your browser) are just gravy.
I don't have too much experience with symbolics. The one time I tried a full_simplify
, I got a better result in Sage than in Mathematica, which surprised me.
But the biggest advantage of Sage's price tag is that you have a perpetual free trial. So give it a go - try reproducing some of your Mathematica results in Sage, and see whether it's up to scratch for your needs.