I was in office the other day and we do not have a license for Maple nor Mathematica so I decided to try the free alternatives, and I found two excellent ones.

1. Euler Math Toolbox (71MB) is the best option. It provides excellent numerical algorithms like remez to find the minimax polynomial approximation of a function for example. And it is also capable of symbolic calculations like calculating integrals, derivatives, dealing with linear algebra problems. The plotting and multiline commands are not as slick as what you can do in Maple or Mathematica but it is still an excellent software. I found the minimax algorithm to be more robust and easier to use than the Mathematica one for example, and basically as good as the one implemented in Maple

Example to plot a function:

plot2d(“sin(x)”,-Pi,Pi,>insimg)

Example to define and multiply a matrix:

A:=[1,1;0,1]; A.A

Example to use Maxima for polynomial expansion:

&expand((x-1)*(x-2)*(x-3))

Example to get the degree 2 minimax polynomial approximating sin(x) between 0 and Pi:

x=equispace(0,Pi,50); {t,d}=remez(x,sin(x),2); P=polytrans(t,d)

2. WxMaxima (32MB) is part of the default Maxima installation and proved to me the closest and best alternative to Maple in terms of symbolic and matrix calculations. At the same time it lacks some important numerical algorithms, which is why I prefer Euler Math Toolbox overall. But since its multiline handling is closer to Maple I still end-up using it for anything requiring flow controls and loops.

Example to integrate/differentiate a function:

integrate(sin(x),x); diff(sin(x),x);

Example to plot two functions:

wxplot2d([sin(x),cos(x)], [x,-5,5]);

Example to define and multiply a matrix:

a:matrix([1,1],[0,1]); a.a;

Example of polynomial expansion:

expand((x-1)*(x-2)*(x-3));

Example of solving for polynomial roots:

solve(x^3-6*x^2+11*x-6,x);

Example of simple computation loop:

array(res,8)$

z:7$

for i:1 thru 8 do ( res[i]:mod(z^i,8) )$

listarray(res);