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.

Last week “Digg effect” had quite an impact on my hosting provider. So much so that they kindly (sic) pulled the site off the web after 10 minutes of Digg love, without even bothering to send me a warning or any notification. When I complained they told me, “let us know when you are off digg”. Yes, we all know that the Tera bytes of traffic that they promise you are fictitious, but I was naively expecting better customer care, especially after having referred about a hundred clients to them. By the way, my programming blog that’s hosted with them as well, has been previously on the frontpage of Reddit, Del.icio.us, and even Slashdot and I’ve never experienced any problems (caching does wonders). But the traffic load generated by Digg was too “fast and furious” for them to cope with.

It’s not all bad though; in fact I was already planning to switch to a more serious provider with VPS or dedicated server plans. After endless research I picked Liquid Web which is fully managed, provides root access and support 24/7 on the phone. So far so good, they worked quite a bit on tweaking my server and I’ve actually called them at 3 and 5 AM and got a person on the phone in less than 30 seconds. I don’t know how well they will be able to cope with the “Digg effect” though, only time will tell.

With my “Refresh your High School Math” article on the front page of several social websites, the amount of feedback received has been terrific. It also allowed me to confirm a theory that I’ve always thought about: there is little consistency and standardization in the teaching of mathematics. I say this because the reactions to my basic math test were very highly varied. Many people said they were not able to solve the problems. That’s sad given the admittedly basic nature of the questions, but it wasn’t a big surprise. You could consider it the FizzBuzz of mathematics. What strikes me the most though, is how many people considered the test to be rightfully “middle school” material and far too basic (except for some parts of it), while others argued that it was way too advanced and too difficult for high school mathematics. This variety of reactions shows that the topics and depth of coverage in math classes in high school are quite different throughout the world.

So I’d like to explicitly ask a question to my readers, what topics did you cover while studying mathematics in high school and in what state/country were you? Please use the comment section to answer, thank you. ;-)

In my first article “The most enlightening Calculus books”, I argued the importance of maintaining high standards for mathematics education and suggested deep and inspiring calculus books for those of you who are interested in pursuing the joy of learning mathematics. The feedback has been overwhelming and I wish to follow up with an article that addresses a couple of remarks that I’ve received by email.

One person commented on the blog, and another wrote me privately, to express their concern that “harder books are not necessarily better books” and that teaching which is geared towards only the smartest kids is a mistake. I want to point out that I’m in no way advocating teaching for the brightest minds only. Wide access to mathematics is something that should be encouraged all over the world, and I’m pretty sure it will help take society in a better direction. In fact, education in general - and mathematics, technical and scientific education in particular - are key for the development of every country and ultimately for good of humankind.

However my point was that with wider access to higher education mathematics, we should not reduce the expected and established testing standards. In other words, there is a fair level of understanding that we should expect from people who major in math or from students who strongly depend on mathematics for their future careers. Furthermore, the textbooks adopted should be mathematically sound and provide the right intellectual stimulation for those who could use it. That said, there is nothing wrong with teachers trying to use different styles of teaching to reach a wider audience, or for students who struggle with the level of math presented in the textbook, to supplement it with simpler books in order to get an easier start. Hence, it’s perfectly OK for a student (who for example is taking an undergraduate class in programming in C) to read C For Dummies if The C Programming Language by K&R is too hard for them off the bat. But that does not imply that the class should adopt “C for Dummies” as their textbook nor that the examination should be based on such a book. So to summarize this point, feel free to study any number of introductory books, as long as you know that if you plan to be serious about mathematics, you should be able to eventually read and understand standard books and be able to solve most of the exercises put forward in them.

Having clarified the first concern, I’d like to provide an answer for the second point, which actually interests me the most. A few readers wrote me emails about how they feel enthusiastic about the post and the opportunity to study mathematics again, but how those books are way too advanced for them, because they simply forgot all the mathematics taught at a high school level. So I’ve received a few “how can I get a refresher of high school math?” type of questions. The mathematics that you learned in high school is classified as pre-calculus, and as you can expect it is propaedeutic to learn math at an higher level. It is normal that you forgot quite a few formulas, but having a good grasp of the essentials of precalculus can make a big difference when trying to master calculus. You should have a decent knowledge of basic algebra, trigonometry, exponential, logarithmic, and analytic geometry. Calculus itself will provide you with a refresher of some of these topics and give you a deeper understanding not only of “how” but rather “why”. That said, Calculus without a decent precalculus base can be a big challenge for most people. Before proceeding to suggest a few resources, let’s try to establish if you actually need a refresher course or not. Here is a (simple and of course incomplete) list of some basic exercises. If you haven’t a clue or struggle to find a lot of the solutions for them, a refresher may be in order.

Simple Precalculus Questions:

1) Factor the following polynomials:

  1. \displaystyle  x^{2}-6x+9
  2. \displaystyle  x^{2}+x-6
  3. \displaystyle  x^{3}-27

2) Solve for x:

  1. \displaystyle  3x^{2}+5x-2=0
  2. \displaystyle  |x^{2}-x|=3
  3. \displaystyle  x^{4}-8ax^{2}+16a^{2}=0
  4. \displaystyle  \frac{x^2+x-6}{x+3}=0
  5. \displaystyle  2\sqrt{x} = x - 15

3) Find the values of x for which:

  1. \displaystyle  x^{2}>9
  2. \displaystyle  |2x-3| \leq 5
  3. \displaystyle  |2x-1| > 9
  4. \displaystyle  |x-1| + |x-3| \geq 8

4) Evaluate:

  1. \displaystyle  \log_{2}{1}
  2. \displaystyle  \ln{e}
  3. \displaystyle  \log_{2}{1024}
  4. \displaystyle  \frac{4^{8}2^{4}}{2^{12}}

5) Solve for x:

  1. \displaystyle  5^{x}=10
  2. \displaystyle  \log_{3}{7x} = 2
  3. \displaystyle  \log_{x}{9}=2
  4. \displaystyle  \ln(3x-2)=0
  5. \displaystyle  3^x+x=4

6) Solve for x, where \displaystyle 0\leq x \leq 2\pi:

  1. \displaystyle  2\sin{x} = 1
  2. \displaystyle  \tan{2x} = \frac{\sqrt{3}}{3}
  3. \displaystyle  \sin{3x} = 1
  4. \displaystyle  \cos^{2}{x} - x = 2 -\sin^{2}{x}

7) Write the equations of the following curves in the Cartesian plane:

  1. Parabola
  2. Hyperbola
  3. Circle
  4. Ellipse

8 ) Find the vertex, focus, and directrix of the parabolas given by the equations:

  1. \displaystyle  x^{2}=16y
  2. \displaystyle  y^{2}+4y+12x=-16

9) Find the center, vertices, foci, and eccentricity of the hyperbola given by the equation:

\displaystyle  \frac{x^{2}}{4}-\frac{y^{2}}{36}=1

10) Find the equation of a circle whose center is at (2, -3) and radius 3.

11) Determine the center and radius of the circle with equation:

\displaystyle x^{2} -4x+ y^2 - 18y = -4.

How did it go? Did you experience many struggles and the feeling that “I used to know this stuff”? If so, then it is a good idea to go for a refresher before attempting calculus right away. The following are two books that you may find useful to respectively learn and refresh basic math in a well organized manner:

  • Precalculus by Michael Sullivan: a big book, which is quite extensive and thorough. If you want an all-in-one book that covers all you need to know about precalculus and more, in a clear but college oriented manner, than this is without doubt an excellent choice. It will likely make the step up to Calculus quite easy.
  • Schaum’s Outline of Precalculus: it has a less prosaic approach but it’s still very clear and easy to read. If you were pretty good at math in high school and you just forgot a few things because you haven’t touched these topics in a while, then pick this book up. It is adequate for already mathematically inclined people who are in a rush to brush up the skills they once had.

If you feel entirely clueless and would like a “for dummies” type of book, the following two titles seem to have a good table of contents and excellent reviews:

If you would like to use some free resources available online instead, here are some lessons:

If you know of any other resources that are available for free, or if you successfully used other books for these purposes, please feel free to use the comment section to add to the discussion.

← Previous Page