Robert P. Munafo, 2007 Jan 27.

Maxima, originally known as MACSYMA, is a symbolic-math package comparable to Mathematica, Maple and MATLAB, but available free of charge in open-source, GPL form.

For more information, go here.

To perform the math work shown in the Brown Method, lemniscates, R2.1/3a and other pages, I used SBCL 0.9.14 and maxima-5.9.3 running on a MacOS X system.

Following are some examples of operations performed with maxima, based on this tutorial by Zdzislaw Meglicki at Indiana University:

Ordinary arithmetic:

7 * 27 / 1.43;

200!; Note bignum output


ezgcd(10,15); GCD of items followed by "remaining part" of each

(2^30/3^20)*sqrt(3); output is in exact form/

ev(%, numer); shows the previous result as floating-point

Converting complex numbers from polar to orthogonal form:

rectform(ev(%e^%i, numer));

a : (3+5*%i)/(7+4*%i);








Calculate the limit of a function; in this case we're approaching a removable singularity.

limit(x/x, x, 0);

Performing basic algebra, e.g. expanding a binomial raised to a power:


b : (x+y)^15;



Factoring polynomials:

p1: x^3-x^2;
|p2: x^2+x-2;|

factor([p1, p2]); note common factor of (x-1)

e: ezgcd(p1, p2);


expand(%); reconstructs p1

e2 : (x^3-y^3) / (x^2+x-y-y^2);


ev(e2, x=1, y=2);

at(e2, [x=1, y=2]);

ur: (u^2-7*u+12)/(4u^2-36u+72); ratio of two polynomials

part(ur, 1); just the numerator

factor(%); numerator fctored

factor(ur); factor auto-distributes and the result auto-cancels

Algebraic manipulation with trig functions:

c : cos(x)^5 + sin(x)^4 + 2*cos(x)^2 - 2*sin(x)^2 - cos(2*x);



d : 2*cos(x/2)^2 * cos(x)^4;




Solving equations:

solve(x^2 = 1); only one variable — solves automatically

solve(a*x^2=4, x); one variable and one parameter

solve(a*x^2=4, a); treating a as the variable

solve([a+b=10, 2*a+b=12], [a,b]); system of equations in two variables

Finding all (real and/or complex) roots of an arbitrary-order polynomial (uses numerical methods):


Performing an integral. (Maxima will ask three questions — answer positive; positive; negative;)

integrate(x^2*sin(alpha*x), x, 0, beta);

Series sums, and products:

sum((1+i)/(1+i^4), i, 1, 10);

sum(1/k^2,k,1,inf); shows sigma-notation

%, simpsum; shows π2/6/


%pi^2/6, numer; compare to previous

product(((i^2+3*i-11)/(i+3)), i, 0, 10);

Constructing lists and arrays:

makelist(i,i,1,31); integers from 1 to 31 inclusive

makelist((x+1)^a, a, 0, 5); first 5 binomials

expand(makelist((x+1)^a, a, 0, 5)); the same binomials, expanded (note that expand distributes)

makelist(expand((x+1)^a), a, 0, 5); same answer, different way

makelist(makelist(binomial(n, i), i, 0, n), n, 0, 10); 10 rows of Pascal's triangle

Defining functions; Taylor series (this particular Taylor series is mentioned in Darko Veberic, Having Fun with Lambert W(x) Function, arXiv:1003.1628v1 [cs.MS] 8 Mar 2010)

w1(y) := y*%e^y;

f(y) := 2*(%e*w1(y-1)+1);

functions; shows the functions you've defined so far

t1 : taylor(f(y), y, 0, 20);

makelist(coeff(t1,y,n), n, 0, 20); extracting the coefficients

makelist(ratnumer(coeff(t1,y,n)), n, 0, 20); extracting the numerators

makelist(ratdenom(coeff(t1,y,n)), n, 0, 20); extracting the denominators

Series inversion:

t1 : taylor(sin(x),x,0,10);

load ("revert")$

revert(t1, x);


Decoding a generating function:

decode_gfun(f,x,N) := makelist(coeff(taylor(f,x,0,N),x,n),n,0,N);

decode_gfun(x / (1 - 6*x + x^2),x,12); gives terms of A001109

Some generating functions converge to a power series in positive exponents of x near x=0, and converge to another power series in negative exponents of x as x gets arbitrarily large, i.e. approaches infinity. The series that converges as x goes to infinity is called a "Laurent series". It is generated with the same command as a Taylor series, but with "inf" in place of the third argument"0":

taylor(1/(1-x-x^2), x, inf, 10);

Here are the power series for the first generating function from Ramanujan's lost notebook, where he discusses sums of cubes (see this article):

makelist(coeff(taylor((1+53*x+9*x^2)/(1-82*x-82*x^2+x^3), x, 0, 10),x,n),n,0,10);

makelist(coeff(taylor((1+53*x+9*x^2)/(1-82*x-82*x^2+x^3), x, inf, 10),x,n),n,1,10);

Expanding the Chebyshev polynomials from their generating functions:



Stuff I haven't annotated yet:

f(x) := x^2 + 1/2;

define(g(x), x^2 + 1/2);

f(x) := x * sin(a*x) + b*x^2;


diff(f(x), x, 2);


ev(%, diff);

g(x) := 'diff(f(x),x);


g(x), diff;

g(x) := diff(f(x),x);


at(g(x), [a=1, b=2, x=3]);

for i:1 thru 16 step 1 do block(display(N(i)));

divisors(100); builtin function that returns an array

for i in divisors(100) do display(i); iterates over the array returned by divisors

From the Mandelbrot Set Glossary and Encyclopedia, by Robert Munafo, (c) 1987-2018.     Mu-ency index

Robert Munafo's home pages on HostMDS   © 1996-2018 Robert P. Munafo.
aboutcontact    mrob    news    @mrob_27    mrob27
This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License. Details here.
This page was written in the "embarrassingly readable" markup language RHTF, and was last updated on 2018 Feb 04. s.11