dalcde said:
I realized that Mathematica is extremely expensive, and I want to ask users whether it is worth the money (considering that there are other CAS such as Maxima)?
I obviously depends on what you want to do with it.
Background: I've used Mathematica for 12 years now. I mostly use it to do pure math symbolic calculations (i.e. group theory).
1. Numerical optimization in Mathematica.
I strongly DO NOT recommend Mathematica for that task if your examples are medium to large scale and nonlinear-non-convex.
Mathematica optimization solvers (and add-ons) are rather limited, have poor performance for medium to large scale nonlinear problems (i.e. long calculation times) and don't offer a complete toolbox to cover mixed integer nonlinear or linear problems.
If you want to buy a commercial software for that task, I highly recommend purchasing AMPL or GAMS. There are a lot of open-source solutions (e.g.
http://www.coin-or.org/) and the NEOS server can help in carrying out tests (
http://www.neos-server.org/neos/).
There are also a lot of open-source codes for derivative free optimization if your objective or constraint functions involve noise, are non-differentiable or their derivative is not available for some reason (e.g. the result of a computer simulation in another program).
2. Symbolic calculations in Mathematica.
If your main focus is symbolic calculations, then I highly recommend Mathematica.
3. Performance
If you want your code to have low calculation times, then I suggest coding things in a compiled language (e.g. C, Fortran) and using open source libraries.
I make this remark because I initially used Mathematica for numerical optimization as well as other numerical code and I concluded that calculation times were too long for medium to large scale problems I was considering at the time. I have since moved to AMPL and also code in C using open-source and home-made numerical libraries.
There are a ton of open-source (and very reliable) linear algebra, algebraic (or differential) equation solving routines and optimization solvers (e.g see
http://www.netlib.org/).
Hope this helps.