About 50,000 people read my article 3 awesome free Math programs. Chances are that at least some of them downloaded and installed Maxima. If you are one of them but are not acquainted with CAS (Computer Algebra System) software, Maxima may appear very complicated and difficult to use, even for the resolution of simple high school or calculus problems. This doesn’t have to be the case though, Maxima is very friendly and this 10 minute tutorial will get you started right away. Once you’ve got the first steps down, you can always look up the specific function that you need, or learn more from Maxima’s official manual. Alternatively, you can use the question mark followed by a string to obtain in-line documentation (e.g. ? integrate). This tutorial takes a practical approach, where simple examples are given to show you how to compute common tasks. Of course this is just the tip of the iceberg. Maxima is so much more than this, but scratching even just the surface should be enough to get you going. In the end you are only investing 10 minutes.

Maxima as a calculator

You can use Maxima as a fast and reliable calculator whose precision is arbitrary within the limits of your PC’s hardware. Maxima expects you to enter one or more commands and expressions separated by a semicolon character (;), just like you would do in many programming languages.

(%i1) 9+7;
(%o1) 16
(%i2) -17*19;
(%o2) -323
(%i3) 10/2;
(%o3) 5

Maxima allows you to refer to the latest result through the % character, and to any previous input or output by its respective prompted %i (input) or %o (output). For example:

(%i4) % - 10;
(%o4) -5
(%i5) %o1 * 3;
(%o5) 48

For the sake of simplicity, from now on we will omit the numbered input and output prompts produced by Maxima’s console, and indicate the output with a => sign. When the numerator and denominator are both integers, a reduced fraction or an integer value is returned. These can be evaluated in floating point by using the float function (or bfloat for big floating point numbers):

8/2;
=> 4
8/2.0;
=> 4.0
2/6;
=> \displaystyle \frac{1}{3}
float(1/3);
=> 0.33333333333333
1/3.0;
=> 0.33333333333333
26/4;
=> \displaystyle \frac{13}{2}
float(26/4);
=> 6.5

As mentioned above, big numbers are not an issue:

13^26;
=> 91733330193268616658399616009
13.0^26
=> \displaystyle 9.1733330193268623\text{ }10^_{+28}
30!;
=> 265252859812191058636308480000000
float((7/3)^35);
=> \displaystyle 7.5715969098311943\text{ }10^_{+12}

Constants and common functions

Here is a list of common constants in Maxima, which you should be aware of:

  • %e - Euler’s Number
  • %pi - \displaystyle \pi
  • %phi - the golden mean (\displaystyle \frac{1+\sqrt{5}}{2})
  • %i - the imaginary unit (\displaystyle \sqrt{-1})
  • inf - real positive infinity (\infty)
  • minf - real minus infinity (-\infty)
  • infinity - complex infinity

We can use some of these along with common functions:

sin(%pi/2) + cos(%pi/3);
=> \displaystyle \frac{3}{2}
tan(%pi/3) * cot(%pi/3);
=> 1
float(sec(%pi/3) + csc(%pi/3));
=> 3.154700538379252
sqrt(81);
=> 9
log(%e);
=> 1

Defining functions and variables

Variables can be assigned through a colon ‘:’ and functions through ‘:=’. The following code shows how to use them:

a:7; b:8;
=> 7
=> 8
sqrt(a^2+b^2);
=> \sqrt{113}
f(x):= x^2 -x + 1;
=> x^2 -x + 1
f(3);
=> 7
f(a);
=> 43
f(b);
=> 57

Please note that Maxima only offers the natural logarithm function log. log10 is not available by default but you can define it yourself as shown below:

log10(x):= log(x)/log(10);
=> \displaystyle log10(x):=\frac{log(x)}{log(10)};
log10(10)
=> 1

Symbolic Calculations

factor enables us to find the prime factorization of a number:

factor(30!);
=> \displaystyle 2^{26}\,3^{14}\,5^7\,7^4\,11^2\,13^2\,17\,19\,23\,29

We can also factor polynomials:

factor(x^2 + x -6);
=> (x-2)(x+3)

And expand them:

expand((x+3)^4);
=> \displaystyle x^4+12\,x^3+54\,x^2+108\,x+81

Simplify rational expressions:

ratsimp((x^2-1)/(x+1));
=> x-1

And simplify trigonometric expressions:

trigsimp(2*cos(x)^2 + sin(x)^2);
=> \displaystyle \cos ^2x+1

Similarly, we can expand trigonometric expressions:

trigexpand(sin(2*x)+cos(2*x));
=> \displaystyle -\sin ^2x+2\,\cos x\,\sin x+\cos ^2x

Please note that Maxima won’t accept 2x as a product, it requires you to explicitly specify 2*x. If you wish to obtain the TeX representation of a given expression, you can use the tex function:

tex(%);
=> $$-\sin ^2x+2\,\cos x\,\sin x+\cos ^2x$$

Solving Equations and Systems

We can easily solve equations and systems of equations through the function solve:

solve(x^2-4,x);
=> \displaystyle \left[ x=-2 , x=2 \right]
%[2]
=> x=2
solve(x^3=1,x);
=> \displaystyle \left[ x={{\sqrt{3}\,i-1}\over{2}} , x=-{{\sqrt{3}\,i+1}\over{2}}  , x=1 \right]
trigsimp(solve([cos(x)^2-x=2-sin(x)^2], [x]));
=> \displaystyle \left[ x=-1 \right]
solve([x - 2*y = 14,  x + 3*y = 9],[x,y]);
=> \left[ \left[ x=12 , y=-1 \right]  \right]

2D and 3D Plotting

Maxima enables us to plot 2D and 3D graphics, and even multiple functions in the same chart. The functions plot2d and plot3d are quite straightforward as you can see below. The second (and in the case of plot3d, the third) parameter, is just the range of values for x (and y) that define what portion of the chart gets plotted.

plot2d(x^2-x+3,[x,-10,10]);

2dplot.png

plot2d([x^2, x^3, x^4 -x +1] ,[x,-10,10]);

many_2dplot.png

f(x,y):= sin(x) + cos(y);
plot3d(f(x,y), [x,-5,5], [y,-5,5]);

3dplot.png

Limits

limit((1+1/x)^x,x,inf);
=> %e
limit(sin(x)/x,x,0);
=> 1
limit(2*(x^2-4)/(x-2),x,2);
=> 8
limit(log(x),x,0,plus);
=> -\infty
limit(sqrt(-x)/x,x,0,minus);
=> -\infty

Differentiation

diff(sin(x), x);
=> \displaystyle cos(x)
diff(x^x, x);
=> \displaystyle x^{x}\,\left(\log x+1\right)

We can calculate higher order derivatives by passing the order as an optional number to the diff function:

diff(tan(x), x, 4);
=> \displaystyle 8\,\sec ^2x\,\tan ^3x+16\,\sec ^4x\,\tan x

Integration

Maxima offers several types of integration. To symbolically solve indefinite integrals use integrate:

integrate(1/x, x);
=> \displaystyle log(x)

For definite integration, just specify the limits of integrations as the two last parameters:

integrate(x+2/(x -3), x, 0,1);
=> \displaystyle -2\,\log 3+2\,\log 2+{{1}\over{2}}
integrate(%e^(-x^2),x,minf,inf);
=> \sqrt{\% pi}

If the function integrate is unable to calculate an integral, you can do a numerical approximation through one of the methods available (e.g. romberg):

romberg(cos(sin(x+1)), x, 0, 1);
=> 0.57591750059682

Sums and Products

sum and product are two functions for summation and product calculation. The simpsum option simplifies the sum whenever possible. Notice how the product can be use to define your own version of the factorial function as well.

sum(k, k, 1, n);
=> \displaystyle \sum_{k=1}^{n}{k}
sum(k, k, 1, n), simpsum;
=> \displaystyle {{n^2+n}\over{2}}
sum(1/k^4, k, 1, inf), simpsum;
=> \displaystyle {{\%pi^{4}}\over{90}}
fact(n):=product(k, k, 1, n);
=> fact(n):=product(k,k,1,n)
fact(10);
=>  3628800

Series Expansions

Series expansions can be calculated through the taylor method (the last parameter specifies the depth), or through the method powerseries:

niceindices(powerseries(%e^x, x, 0));
=> \displaystyle \sum_{i=0}^{\infty }{{{x^{i}}\over{i!}}}
taylor(%e^x, x, 0, 5);
=> \displaystyle 1+x+{{x^2}\over{2}}+{{x^3}\over{6}}+{{x^4}\over{24}}+{{x^5}\over{120 }}+\cdots

The trunc method along with plot2d is used when taylor’s output needs to be plotted (to deal with the +\cdots in taylor’s output):

plot2d([trunc(%), %e^x], [x,-5,5]);

taylor.png

I hope you’ll find this useful and that it will help you get started with Maxima. CAS can be powerful tools and if you are willing to learn how to use them properly, you will soon discover that it was time well invested.


If you enjoyed this post, then make sure you subscribe to our RSS Feed.

Comments

60 Responses to “A 10 minute tutorial for solving Math problems with Maxima”

  1. Josh on June 4th, 2007 3:52 pm

    This is awesome. Awesome! Thank you.

    – Josh

  2. Will on June 4th, 2007 4:47 pm

    Cool beans. Very nice write-up.

  3. bastianazzo on June 4th, 2007 4:49 pm

    nice infos, in my opinion these kind of software should be much more supported by universities, instead of (implicitly) encouraging the use of pirated software…
    thanks! I was just trying to improve my Maxima skills…

    ciao ciao!

  4. Beni on June 4th, 2007 5:24 pm

    Thank you. Very useful intro.

  5. dzer0 on June 4th, 2007 8:34 pm

    Wow. Looks awesome. The thing that REALLY sealed the deal was the TeX output. Love it.

  6. links for 2007-06-05 « Donghai Ma on June 5th, 2007 12:15 am

    […] A 10 minute tutorial for solving Math problems with Maxima (tags: math tutorial) […]

  7. links for 2007-06-05 « My Weblog on June 5th, 2007 12:16 am

    […] A 10 minute tutorial for solving Math problems with Maxima (tags: math lisp tutorial) […]

  8. A 10 minute tutorial for solving Math problems with Maxima « Gatika(blog.com) on June 5th, 2007 3:03 am

    […] Link Original: A 10 minute tutorial for solving Math problems with Maxima […]

  9. Sexy Girl on June 5th, 2007 4:19 am

    Great software. Great for my high school subject.

  10. Bogititus on June 5th, 2007 4:19 am

    this was NOT a guide for high school calc…

    it’s a great, vague, manual snapshot

    ..

    a guide would have a scan from a high school calc book, and STEPS with screenshots

  11. 一個人對世界傻笑 on June 5th, 2007 5:39 am

    A 10 minute tutorial for solving Math problems with Maxima(10 分鐘學會使用Maxima)

    之前那篇
    3 Awesome Math Programs(3個超棒的數學繪圖程式)
    裡面有提到這個程式Maxima
    官方的教學文件在這裡
    剛剛在Digg上看到一篇好文章
    圖片和解釋都說得很詳盡(想當初用Mathematica用到快起肖= =&#82…

  12. jasoncrowther on June 5th, 2007 7:29 am

    man, where was all this cool free math software when I was stuck using maple on mac plus? argh!

  13. budlight on June 5th, 2007 8:27 am

    probably a good thing that it “appears” difficult as it’d a shame for highschoolers to simply use it instead of learning basic algebra.

  14. unikuser on June 5th, 2007 8:56 am

    This is awesome little tool. Wish I knew about this in my school.

  15. I Only Wish » A 10 minute tutorial for solving Math problems with Maxima on June 5th, 2007 9:22 am

    […] read more | digg story […]

  16. Birch Leafminer on June 5th, 2007 9:34 am

    I have been using Maxima as I re-learn Algebra. I use it it verify what I do by hand, but sometimes I would like to see some of the intermediate steps. Is there any way to do that?

  17. Ian on June 5th, 2007 9:34 am

    How the hell do you translate these formulas to be used in software programs like javascript and actionscript?

    Could you possibly create a tutorial on what all the symbols mean?

  18. A 10 minute tutorial for solving Math problems with Maxima « Veronica’s Lore on June 5th, 2007 10:12 am

    […] Read the original source… […]

  19. rwinston on June 5th, 2007 10:17 am

    Excellent write-up. How did you get the LaTeX output on the fly? The presentation looks great!

  20. Will on June 5th, 2007 10:59 am

    The fancy calculus stuff doesn’t translate. Most of the basic functions (sin, sqrt, log, etc) are available as Math.sin() and whatnot. Google for “javascript math” to get a full list of Javascript’s math functions and constants.

  21. Antonio on June 5th, 2007 11:23 am

    @rwinston

    Thank you very much. I used a LaTeX plugin for Wordpress, and I wrote the TeX code for simple cases and Maxima’s tex(expr) function for the longer ones.

  22. easan on June 5th, 2007 11:41 am

    great job ! do u know of a similar tutorial for R ?

  23. Antonio on June 5th, 2007 12:01 pm

    @easan

    Thanks a lot easan. For R, take a look at this tutorial: http://www.cyclismo.org/tutorial/R/

  24. DaedriX on June 5th, 2007 1:13 pm

    This is really cool, sadly the school year is now over and I can’t use it!!! fdasdafhasdkj! GRRR!

  25. Machuidel on June 5th, 2007 8:03 pm

    Maxima has its roots in Macsyma which existed before Mathematica and Maple.

    See the following article about Macsyma:
    http://en.wikipedia.org/wiki/Macsyma

    I’ve recommended Maxima to many people. Most of these people rejected it and did not even bother to look it up because they never heard of the name or believe free software cannot be of good quality.

    I would like to see a side-to-side comparison between Maxima and the commercial alternatives. I can imagine Mathematica and Maple having more features (never missed them though) and a more optimized solver.

  26. Smith Data Processing Services » Blog Archive » links for 2007-06-06 on June 6th, 2007 1:15 am

    […] A 10 minute tutorial for solving Math problems with Maxima (tags: mathematics opensource tutorial) […]

  27. mart1n on June 12th, 2007 2:31 am

    great program! helps a lot at the university

  28. tech.twomadgeeks.com » Blog Archive » A tutorial for solving Math problems with Maxima on June 17th, 2007 6:22 pm

    […] Link: Math Blog […]

  29. alex on June 19th, 2007 3:10 pm

    Thanks!

    I’d messed with Maxima a few months ago, and found it a painful experience trying to figure it out from the manual. Went thru your tutorial last night and now I can use this for solving real problems.

    This will be a HUGE asset for me.

    Alex

  30. my upou days : solving math problems on June 25th, 2007 4:30 am
  31. sewlai on July 17th, 2007 8:52 am

    Hi!The information was delivered in a simple way that it is very easy to understand in using the software which initially i found it very difficult to use Maxima when I explore it al by my own. But now you had help me to solve my probs.
    It is indeed a fantastic piece of info for me especially at this moment in rushing my assignment. Thanks…

  32. Me on July 21st, 2007 8:42 pm

    Got exactly what I wanted.
    Thank you so much@

  33. Jacobus on August 15th, 2007 8:52 am

    Hi
    Thanks for the Tut. However I cant find information to help me. My problem is as follows:
    I want to solve f in the following two functions, when I choose the following:
    s=2400 and d = 2000. f is the required value, which is the focal point of a parabole.

    h=d^2/(16*f);
    s=d/2*(sqrt((4*h/d)^2+1))+2*f*ln((4*h/d)+sqrt((4*h/d)^2+1));

    I substitude h in the second function and then evaluate for the said values of s and d.

    All goes well and is calculated. However I then can not get a calculated value for f from Maxima. The following eauation is given.

    2400=2*ln(500/f+sqrt(250000/f^2+1))*f+1000*sqrt(250000/f^2+1)

    What can I do to get a calculated value for f?

    Thanks
    Jacobus

  34. JiK on September 7th, 2007 7:44 am

    with Mathematica, I can do wonderful things to turn a series of calculations into a semi-professional looking document. Can I do that with maxima? (or wmaxima, or …?) I’ve played with it (on windows) and it just seems like a ‘calculator’ I can solve it all, but it’s not really made to give a nice formatted output. Seems. I claim no full knowledge, maybe I’m missing something.

  35. rajendra on September 7th, 2007 6:54 pm

    Thank you. Your article is very useful to me to start with with Maxima.
    Rajendra

  36. Antonio Cangiano on September 8th, 2007 12:58 am

    JiK, you can use Maxima from within TeXmacs or from a SAGE notebook.

  37. A 10 minute tutorial for solving Math problems with Maxima « Susanwc’s Weblog on October 2nd, 2007 8:25 am

    […] read more | digg story […]

  38. Mz. DiC3 on October 3rd, 2007 12:37 pm

    i think that knowing all this math will be very helpful in the long run. it should really help you in the future

  39. Tom Carnevale on October 28th, 2007 6:33 pm

    Any suggestions on how to get Maxima to generate a surface of revolution; e.g., the surface formed between y=x^2, y=0 and x=6 is revolved about either axis?

    Thanks.

  40. Heraldo on November 28th, 2007 7:10 pm

    Very usefull. Muito bom mesmo.

  41. Hr.stein on November 29th, 2007 8:32 pm

    fantastic program! great work guys!

    After a short tutorial, I tried a real problem:

    solve([x*(1+(0.083/y)^(1/z))-41, x*(1+(0.833/y)^(1/z))-44.9, x*(1+(8.333/y)^(1/z))
    -47.8], [x,y,z]);
    ____
    But get no response, anything I was wrong?

  42. Antonio Cangiano on November 29th, 2007 9:33 pm

    Hr.stein, I run your system of equations and as a response I got that it has no solutions ([]).

  43. Hr.stein on November 30th, 2007 4:53 am

    thanks for your reply, Antonio!

    In fact, I would expect an approximate solution using least square approach, with indication of deviation.( somewhat like the Mathematica does).

    I still think Maxima could solve the equations, only I miss some built-in functions or there is mistake in my expression.

    Regards!

  44. ENYI JOHNSON on December 8th, 2007 7:10 pm

    log (3m+7)-log (m+4)= 2log 6 - 3log 3
    6 6 6 6

  45. Alex Tzeros on December 9th, 2007 5:05 am

    This is a fantastic tutorial. Thanks to the author, I was able to discover the great power of this amazing program. Based on this page, I started to write a tutorial for Maxima in Greek.
    http://lomik.wordpress.com/maxima/

  46. Richard on January 13th, 2008 6:39 pm

    Hello

    How can I tell maxima that a given variable is real and greater than zero in the expression below?

    integrate((a/pi)/(a^2+x^2),x,-inf,inf)

  47. Jeffrey S Fox on January 23rd, 2008 8:08 pm

    fantastic!! This is a great getting started tutorial and showes the power of the program.
    I teach at University of Colorado and really push the value and quality of open source software (which I use in my own research). Next time I teach numerical analysis I will definitly use Maxima!

  48. macosala on February 2nd, 2008 9:12 pm

    Excellent!! Thanks for your great tutorial for Maxima.

  49. Baha' Alsaify on February 4th, 2008 12:41 pm

    Wow, just from reading about the Maxima wants me to use it, it seems that its a very powerful mathematical tool

  50. Ray Pereda on February 12th, 2008 6:06 pm

    I used to lust after Mathematica but it is outrageously expensive: $2,500. We are approaching the point where open source alternatives, like Maxima, are the way to go for heavy duty computer assisted symbolic and numerical mathematics.

  51. Maxima: il CAS open source | linux 4 life on February 17th, 2008 8:15 am

    […] Essendo studente di ingegneria, mi trovo spesso nella necessità di utilizzare un CAS (Computer Algebra System) ovvero un programma in grado di eseguire calcoli numerici, simbolici, grafici e altre operazioni correlate. Il software più diffuso per effettuare questo tipo di operazioni è Mathematica il quale però è un software commerciale, così mi sono messo alla ricerca di un programma open source con funzionalità simili. Tale programma esiste e si chiama Maxima. Con esso è possibile svolgere tutta una serie di operazioni come derivazione, integrazione, risoluzione di sistemi di equazioni, grafici di funzioni in 2 e 3 dimensioni e molto altro ancora. Per facilitare l’utilizzo del programma è disponibile wxMaxima un comodo front-end grafico, che permette rapido accesso alle principali funzioni del programma. Di seguito trovate alcuni screenshots con qualche esempio. Il testo degli esempi è tratto dall’ottima guida: A 10 minute tutorial for solving math problems with Maxima. […]

  52. Javed Alam on February 24th, 2008 7:58 am

    I like the way you are presenting this material. I have used Maxima and Scilab in teaching a course on Computation. I am a big fan of Maxima. Scilab is OK but crashes a lot. ON the other hand Maxima is extremely solid with many options for the user interface. It is promoted as a symbolic math program but it can do most of the run of the mill numerical math. Here is the link to the course material I taught.

    http://www.eng.ysu.edu/~jalam/engr6924s07/

    Feel free to take any part of the material if you want to write more articles about math calculation using Maxima.Also any feed back from is highly welcomed.

  53. Dotan Cohen on March 3rd, 2008 6:26 am

    Very nice tutorial, Antonio. I’m signing up for your RSS feed.

    Tell me, is there a way to zoom and rotate the 3d graphs? Also, my graphs are not solid planes like your screenshots but rather grids. How does one make the planes solid? Thanks.

  54. zorzal on March 7th, 2008 4:31 pm

    Richard,
    Use assume(a>0);

  55. Jon on March 25th, 2008 7:37 am

    Dotan,

    To make the graphs coloured and solid you could add [gnuplot_pm3d,true] to the end of the statement eg:

    plot3d(f(x,y), [x,-5,5], [y,-5,5],[gnuplot_pm3d,true]);

  56. BWB on March 27th, 2008 4:07 pm

    Re: Jacobus

    Better late than never?

    (%i1) find_root(subst( [h=d^2/(16*f),d=2000,s=2400], s=d/2*(sqrt((4*h/d)^2+1))+2*f*log((4*h/d)+sqrt((4*h/d)^2+1))),f,1,2400);
    (%o1) 421.811063853618

  57. J.C.Pizarro on April 7th, 2008 7:28 am

    I’ve 2 issues here:

    FIRST: Halting problem in TM
    ——
    The below symbolic example doesn’t terminate after many minutes in maxima-5.14.0 although the human solution is f(x)-g(x)-h(x):

    factor(expand((f(x)-g(x)-h(x))^500));

    To fix this problem in the future: better
    artificial sustitution in the solving of
    factor or intelligent lazy computation as
    factor(expand(Alpha)) => Alpha.

    SECOND: Non-deterministic Memoization
    ——-
    With

    factor(expand((sqrt(x+a)+b)^10));

    i got once the imprecise solution

    10 b x^4 sqrt(x+a) + 120 b^3 x^3 sqrt(x+a) + … + 45 a^4 b^2 + a^5

    but i got many times sqrt(x+a)+b)^10 .

    I think that the maxima system
    uses memoization that remember some
    internal answers of previous computations
    but it’s non-deterministic.

  58. J.C.Pizarro on April 7th, 2008 2:47 pm

    axima 5.14.0 (with CLISP 2.41) has 2 symbolic bugs:
    * First bug: it doesn’t factor when it uses sqrt instead sqrt2 :
    (%i1) factor(expand((sqrt(x)+y)^2));
    2
    (%o1) y + 2 sqrt(x) y + x
    (%i2) factor(expand((sqrt2(x)+y)^2));
    2
    (%o2) (y + sqrt2(x))
    * Second bug: wrong result due to the sign: (y-x)^1000 instead of (x-y)^1000 :
    (%i3) factor(expand((x-y)^1000));
    1000
    (%o3) (y - x)

  59. magnus on April 19th, 2008 3:51 pm

    Is there any way to get nice looking latex fonts in the EuMathT notebook? For example, if one calculates >:integrate(x,x) one gets
    x^2
    —–
    2

    and this in not nice looking. How to get LaTeX fonts?

  60. Lim Ee Hai on April 30th, 2008 10:10 am

    Seem like a good maths tool. Students of maths should welcome this tool. Nowadays, learners go for effective learning tools. This is a good target.

Leave a Reply