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