SageMath: Python-based Mathematics. Rock it.
sagemath.org
sagemath.org
The aim of my thesis is to discover why proprietary tools like Maple, Mathlab, and Mathematica have flourished within the mathematics world given that theorem proving and calculating seem to require access to the algorithms for verification processes. I aim to interview the leaders behind both proprietary and open tools to see what drives and motivates them. This video by William Stein http://www.sagemath.org/help-video.html on the SageMath website goes a long way towards answering some of my questions.
I would like to look at this problem space from all angles, economic, ethical, scientific, you name it. I would welcome ideas on research strategies and any and all pointers. Speak up now, no matter how trivial you think your idea!
Thank you tomrod for posting this, thank you.
I have bookmarked:
http://directory.fsf.org/category/math/
and
http://en.wikibooks.org/wiki/FOSS_Education/Research_using_F...
There are a number of other sites dedicated to pre-university level education of mathematics but I was more thinking about my own experience with Maple, Mathematica, and Matlab and FOSS tools of a quality to substitute for these. Having listened to the SageMath intro video I would add Magna to that list I suppose but maybe it is narrower in scope.
I need to know how the tools are categorized. I guess each mathematical field has its own set of tools.
I guess Computer Algebra Systems (CAS) would be the general term for the symbolic math side of things and Automated Theorem Provers (ATP) for the proof theory side of things. Ignoring ATP for the moment I suppose you can subdivide CAS many ways. I wouldn't even know how to list the divisions in mathematics or even if each division had a corresponding type of mathematical tool.
We don't have access to the algorithms that a human mathematician working unaided uses to do things like evaluate a tricky integral, simplify a complicated expression, and so on, yet we can still verify their proofs.
I don't see why him using a computer program, proprietary or not, would make a difference. We verify the proof by checking the result, not the thought processes or computational processes that were used behind the scenes to come up with it.
Would any who uses it now or recently care to make a candid comparison between it and its commercial competitors?
But the project has definitely produced at least one A++ bit of code: Cython. That is very much worth learning and complementary to numpy (e.g. Cython/numpy integration: http://wiki.cython.org/tutorials/numpy).
Mathematica has a few advantages. The input notation can look more like traditional mathematics: adjacency instead of * for multiplication, superscript instead of ^ for exponentiation, fraction notation. I think that cuts down on errors. Variables are symbolic in Mathematica by default. The Mathematica language is something of a defacto standard and WolframAlpha understands it to a certain extent, so you have access for free if you have internet. WolframAlpha mobile gives you CAS on your phone.
That said, an open source version of Mathematica is desirable and Sage should be supported. I keep a table of equivalences at http://hyperpolyglot.org/math to try to lessen the mental burden of using two equivalent products.
I agree that Sage still needs work (the 100+ bugs submitted daily to the RSS support feed says so!) but it works really well.
Maybe I should have mentioned Coq in my previous list. I installed it a few days ago. Haven't learned to use it yet.
These are probably easily corrected. But solutions already exist within the FLOSS community with other packages such as Sage (and, of course, Numpy and the rest)--reinventing the wheel is something few have time for! :-) This is a big reason I like Sage: it is designed like the Borg in that it uses bindings to connect into other software (both proprietary and open source).
Yes! Star Trek reference and SageMath in the same sentence. It is a good night.
- Mathematica is better than the other stuff for symbolics still and it has a really nice interface. For basic stuff the Python libraries work fine. Check out Maple and its clones too.
- C is for when you need speed above all else (check out Weave, a Python package for executing C code from within your Python scripts, though)
I only know a few Haskell people in the scientific computing world. I'm not sure what the draw is, but if you do a lot of algorithms and don't mind the unpredictable performance, Haskell is a good tool too I'm sure. Ocaml also gets some use in scientific computing if functional programming is your thing.
It does computer algebra, like integrate(x^2), as well as physical constants, like coulombs or hbar. I made a draggable graphing calculator for it, but it was too slow so I never released it.
Then people will start talking more about Sage. It's a great package, but the road to getting it is bumpy.
For those who don't know what Sage is, think of it as an Open Source alternative to Wolfram Mathematica.
I also see comments about R. For me, the best way to code in R is to use RKWard. It's maybe the best frontend for R. Feel free to check it out..
Nontrivial is compiling from source, however :-).
Sage does more than Mathematica, as I understand it. It can be used as a replacement for Matlab, R, etc. I got informed of it by friend who is an applied mathematician by day and a .Net guru by night. Wikipedia has a decent writeup at: http://en.wikipedia.org/wiki/Sagemath