views:

5647

answers:

10

What is the best open-source equivalent for Mathematica? My requirements are:

  1. (most important) Must be a real computer algebra system (CAS). Notably, I don't want Matlab clones -- I want something that can, at least, symbolically differentiate and integrate.
  2. Must be programmable. A functional-programming view of the world, like Mathematica's, would be awesome. The basic datatype of M'ica is the list, which is very convenient!
  3. (least important) Similar syntax would be nice.

The ability to deal with objects such as groups or graphs would be a great bonus, but my primary emphasis is on the main things Mathematica and Maple do: algebra and calculus, both symbolic and numeric. Also, plotting is not high on my list of requirements, as I'm mostly a terminal and not GUI user.

+1  A: 

http://en.wikipedia.org/wiki/Comparison_of_computer_algebra_systems

nsanders
[Moving my comment out of an answer, which predated the commenting system.] I forgot to mention that I was aware of that page. Indeed, part of the reason I was asking was because there were so many options there! I was wondering if people had any opinions.
A. Rex
+3  A: 

Have you seen Sage?

It provides a great terminal/gui interface and is extend able to tons of application's. It also has great support for programming, utilizing python.

I would be very surprised if it didn't do what you needed.

Brian

Brian Gianforcaro
+11  A: 

Try Maxima. It is a "real CAS" (can do symbolic stuff). Programmability emphasizes imperative, but you can do functional too. Not fast, however. Precompiled Windows version is available.

crosstalk
+1, I especialy like wxMaxima which provides a more Mathematica-like GUI for Maxima. I believe it's the default GUI on windows but you can install it in other OS's too.
catchmeifyoutry
+3  A: 

Specifically, Maxima:

http://en.wikipedia.org/wiki/Maxima_%28software%29

Jared Updike
+1  A: 

There's also a C++ library CAS called GiNaC. This isn't exactly what you were looking for but it's certainly very programmable.

Pat Notz
[Moving my comment out of an answer, which predated the commenting system.] Although I indeed was asking for something with an interface, I was curious if such libraries existed.
A. Rex
Sage uses pynac, which is a litte fork of ginac for deep python integration.
Harald Schilly
A: 

The SAS guys at work have mentioned R.

jms
SAS is statistical analysis. R can't handle (to my knowledge, anyway) algebraic functionality (unless there is a module for it).
Thomas Owens
+15  A: 

SAGE is definitely one you should consider since it actually includes the full version of Maxima within it (along with interfaces to various other mathematical packages). To answer your questions:

1) SAGE can symbolically differentiate and integrate. http://www.sagemath.org/doc/tut/node13.html

2) Programming in SAGE is done via Python.

3) The syntax is rather different to Mathematica's (which is essentially LISP-like) but here is a blog post written by a heavy user of Mathematica so you can see what he thinks.

http://www.walkingrandomly.com/?p=103

Brabster
the documentation has changed and so the link: http://sagemath.org/doc/
Harald Schilly
+3  A: 

Hm, I may be a bit late, but Sage uses Maxima for symbolic calculation. Sage is far bigger than Maxima then :) So if your tasks are simple, you can choose Maxima, it has good GUIs (xMaxima/wxMaxima) and CLI (iMaxima mode for Emacs is cool!), and it can do plotting with Gnuplot.

Anton Nazarov
A: 

after SAGE try PARI/GP and then MAGMA

pageman
A: 

If you decide to use Maxima (recommended!), you might find the following introduction and collection of resources helpful:

Resources: Maxima for Symbolic Computation: ( http://mathscitech.org/articles/maxima ),

which includes among its listings a nifty Mathematics / Maxima Syntax Conversion sheet.

AKE