Monday, November 9, 2009

(wx)Maxima - An Open Source CAS

The original use for computers when they where first created was to have them compute numbers. When they first came about computers where contained in large rooms and where only able to make the most basic of calculations, as time has progressed how ever our systems have steadily gotten smaller and more powerful. At this point in time there is very little (given enough time) our computers cannot calculate.

How exactly do we make our computers run such calculations? Our systems are useless without software to run on them - enter the world of CASes or Computer Algebra Systems. A CAS is a type of software that allows the computer to perform calculations such as algebra, calculus, generation of two and three dimensional graphs, as well as more simple computations such as basic addition, subtraction, multiplication, and division.

Maxima is an open source, cross-platform, computer algebra system. On its own Maxima is simply a command line interface (CLI) that gives you access to a whole slew of different commands that allow you to perform just about every type of useful math function you can think of. From Maxima's homepage:
"[Maxima] is a system for the manipulation of symbolic and numerical expressions, including differentiation, integration, Taylor series, Laplace transforms, ordinary differential equations, systems of linear equations, polynomials, and sets, lists, vectors, matrices, and tensors."
From personal experience as a math student I can say that having a CAS at my disposal both in class and for take home work has been invaluable. Such software allows the user to better focus on the new lesson at hand rather than get caught up in sticky, time consuming applications from long past lessons such as algebra.

The syntax for Maxima commands is extremely easy to pick up, especially if you have any kind of programming experience (in fact for the most the the function syntax largely resembles the python scripting language). Maxima also does a great job of defining functions and variables, so if you have a certain complicated number or complex function you are going to be making multiple calls of you do not have to fully type it out more than once. One of my favorite features of Maxima is how it labels inputs (%i1) and outputs (%o1). For each additional input/output the number value is increased by one. By labeling them all as such it makes it very easy to recall a certain value you obtained earlier on, thusly reducing the amount of typing needed and greatly lowering the chance of human error (such as transposing or leaving out numbers/decimal places).

Now a CLI is fine and dandy if you are intimately familiar with the software, however for the beginning user this is not so useful. One solution to such an issue would be to dive in reading documentation detailing the different functions and their syntaxes, however this can be a cumbersome task and for the average user - especially if you just want to do a few calculations and get on with the rest of your work. A more viable solution is something along the lines of wxMaxima, an open source, cross-platform, GUI (graphic user interface) front end for Maxima.

wxMaxima does a good job of organizing the different functions Maxima provides into different categories such as: Equations, Algebra, Calculus, and Plots. Such organization allows for someone who has never used the software before to quickly find the function they are looking for and provides easy dialog boxes for entering the inputs the function requires to be used properly. wxMaxima also helps teach a user the CLI as they use the program, as each function is called it displays how the syntax should look when the command is run. The last feature I want to mention that wxMaxima provides is saving your work, if you have a set of functions you plan to use on a regular basis you can save the file to be reloaded at a later date. Also present is the option to export your work to either an HTML file or a LaTeX file if you wanted to send it to someone else to view.

All in all I think Maxima is a fantastic piece of software and it is easily on par with commercial CASes such as Maple. If you are a math or science student or someone who works with complex functions and numbers in the field Maxima is definitely worth taking the time to check out.

~Jeff Hoogland


  1. Have you succeeded in running maxima and wxmaxima on your N900 ? I am also deeply interested to do so. Thanks

  2. I have ported Maxima to the Android phones / tablets. If you are interested, visit for download.