Quiz Generator with MAXIMA

Maxima is a open source computer algebra system. Unlike Mathematica or Maple it is freely available at maxima.sourceforge.net. It can manipulate mathematical formulas symbolically and show mathematical functions graphically. Thus, it is used to solve typical problems presented in precalculus and calculus level. See math.tntech.edu/machida/1911 for some calculus applications. However, quite the opposite is also true--it can create problems, which motivates this project.

Maxima-embedded LATEX

Creating a multiple-choice question is quite time-consuming, but some generalization helps to create such a question. Let us illustrate the idea using the following question:

QUESTION. Find the equation for the parabola shown below.

\includegraphics[]{qgmax_plot0.ps}

Suppose that you expect students to recognize $x$-intercepts $x_0$ and $x_1$ and to formulate $y = a(x-x_0)(x-x_1)$. But also they have to identify $a$ from the third point (for which the vertex is a good choice). Thus, you create the problem with the values $a$, $x_0$ and $x_1$, and consider the wrong choices $y = -a(x-x_0)(x-x_1)$, $y = -(x-x_0)(x-x_1)$, and $y = (x-x_0)(x-x_1)$. In Maxima-embedded LATEX you write this as follows:

Maxima expression. The Maxima expression

\maxima maxima expression \endmaxima

will be executed and evaluated by Maxima. It is then replaced with the math mode $output$ where the output is automatically converted to TEX.

Maxima code. A set of maxima expressions (code) can be embedded inside LATEX. It will be executed but the output will not appear in LATEX.

\maximacode
maxima code;
...........
maxima code;
\endmaximacode

Maxima plot. Plot parameters are first evaluated by Maxima, and passed onto gnuplot. The format can be chosen from the following list forms. Here the expressions in the ``comma-separated'' list are not allowed to contain commas (``,'') themselves.

\maximaplot [f(x), x-axis lower limit, x-axis upper limit] \endmaximaplot

\maximaplot
[f(x), x-axis lower limit, x-axis upper limit, y-axis lower limit, y-axis upper limit]
\endmaximaplot

\maximaplot
[parametric, lower end of t, upper end of t, f(t) in x-axis, g(t) in y-axis, .....]
\endmaximaplot

\maximaplot
[parametric, lower end of t, upper end of t, xrange, x-axis lower limit, x-axis upper limit, f(t) in x-axis, g(t) in y-axis,.....]
\endmaximaplot

\maximaplot
[parametric, lower end of t, upper end of t, xrange, x-axis lower limit, x-axis upper limit, yrange, y-axis lower limit, y-axis upper limit, f(t) in x-axis, g(t) in y-axis,.....]
\endmaximaplot

Compiled without Maxima. When it is compiled with the style file qgmax.sty, the above example looks like the following:

QUESTION. Find the equation for the parabola shown below.

[a*(x-x0)*(x-x1),x0-1,x1+1]

  1. expand(a*(x-x0)*(x-x1))
  2. expand(-a*(x-x0)*(x-x1))
  3. expand((x-x0)*(x-x1))
  4. expand(-(x-x0)*(x-x1))

Processed with Maxima. When the Maxima code is evaluated, the result looks like the following:

QUESTION. Find the equation for the parabola shown below.

\includegraphics[]{qgmax_plot0.ps}

  1. $-2 x^2+4 x+6$

  2. $2 x^2-4 x-6$

  3. $x^2-2 x-3$

  4. $-x^2+2 x+3$

The perl script qgmax.pl will process the Maxima-embedded LATEX file, and create Maxima-evaluated LATEX file (type qgmax.pl -h for usage). It is then compiled by LATEX.

Here you can upload your Maxima-embedded file. I will process it for you.



Department of Mathematics
Last modified: 2005-03-17