Experiments with Maxima for Engineering Calculus

Evert Provoost via Maxima-discuss <[email protected]>
Newsgroups gmane.comp.mathematics.maxima.general
Message-ID <[email protected]>
Dear all,

I was going through my old notes and found some remarks on using Maxima
for the calculus courses in our engineering programme from two years
ago. Unfortunately I lost some of more specific notes, so some of these
are from memory, but perhaps this could still be useful.

(As I lost the code of these trials, I tried to check with the
changelogs of since released versions if I am not reporting resolved
issues. Sorry if I missed any.)

As a bit of background: the courses switched CAS a number of times
already, initially they went with Maple, then, a little under a decade
ago, there was a push from the faculty to standardize all courses on
MATLAB so they switched to MuPAD (which staff and students actually
rather enjoyed), but of course this was discontinued in favour of the
integrated toolbox.

The MATLAB favouritism still stands, unfortunately, but that made me
wonder, often using Maxima in my research, if a tool that won't just
randomly disappear or be 'financially unfavourable' could do the job.

The following is always in comparison to the Symbolic Math Toolbox.


The Good:

When Maxima is able to do something it is almost universally
easier/better. A lot of additional steps in the scripts we provide to
students are redundant with Maxima. Maxima as a language is also
designed as a CAS, giving less friction between the object and subject
languages (something that also holds in comparison to SymPy, used in the
maths programme): unknown symbols are assumed to be variables,
arithmetic is exact by default, etc.

It is also far more 'pedantic', which is great in a teaching (and I'd
argue all) context(s). Half of the comments in the existing teaching
material are reminders to students to be sure to run the commands with a
parameter assumed to be zero as else they would only get the most common
solution. With Maxima, that becomes a prompt, which is infinitely more
useful.


The 'Bad' (i.e. the missing features):

The only real blockers I found (or, at least, where I couldn't find an
easy workaround) were Sturm-Liouville theory, and Fourier transform
equivalents of `laplace` and `ilt`/`pwilt`.

We primarily teach series solutions to PDEs (which generally start from
Sturm-Liouville problems), I am reasonably certain that the existing
capabilities for series are sufficient to provide all we need once we
have the solution to the subproblem, but I haven't tested that.

Related to PDEs are piecewise functions, for our purposes we can get
away with using combinations of Heaviside step functions. It might be
useful to make those more convenient (e.g. a readily available box
function, ifelse, etc.), but p.w. functions is a topic with plenty of
discussion already. ;-)

There was one ODE where I got a suboptimal solution (has since been
fixed, see feature request #192), and I couldn't figure out how to
rewrite some things in terms of hyperbolic functions (MATLAB inherits
MuPAD's `rewrite` function, which is a rather neat way of asking the
system for a specific form). But I would consider those to be rather
minor.


The 'Ugly':

Nothing unexpected, Maxima has been in development for many years, with
many volunteer contributions, so different parts of the system sometimes
behave in slightly inconsistent ways: the one ODE solver only supports a
symbol as placeholder for the unknown function, the other prefers
`y(t)`, some ODEs need ode_contrib, etc. Again, all very minor, and not
really an issue for this type of course: students generally have to fill
in the blanks of scripts prepared by the TAs.


In conclusion:

Maxima as it stands is great to support an engineering maths course
involving calculus and ODEs. Only once PDEs get involved some
limitations might appear, so it depends on the course. Sometimes its ad
hoc development makes things a little more confusing than necessary, but
that is vastly outweighed by being a free tool students can rely on for
the rest of their academic and/or professional life.

If it were up to me, we would incorporate it into teaching where
possible, but I am unfortunately a mere TA and not the course
coordinator (who is, understandably, not planning on a fourth switch any
time soon).


On a slightly different note, I would also like to thank all current,
past, and future contributors to Maxima for all their wonderful work.
Both when I was a student and now as a researcher, this program has
helped me tremendously!

-- 
Kind regards,
Evert Provoost
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.