**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 L ^{A}TEX**

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.

Suppose that you expect students to recognize -intercepts and and
to formulate
.
But also they have to identify from the third
point (for which the vertex is a good choice).
Thus, you create the problem with the values , and ,
and consider the wrong choices
,
, and
.
In Maxima-embedded L^{A}TEX 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 L^{A}TEX.
It will be executed but the output will not appear in L^{A}TEX.

`\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]

- expand(a*(x-x0)*(x-x1))
- expand(-a*(x-x0)*(x-x1))
- expand((x-x0)*(x-x1))
- 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.

The perl script
`qgmax.pl`
will process
the Maxima-embedded L^{A}TEX file,
and create Maxima-evaluated L^{A}TEX file
(type `qgmax.pl -h` for usage).
It is then compiled by L^{A}TEX.

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

Department of Mathematics