pause([options]):=block([tsecs], tsecs:assoc('pausetime,options,0), if tsecs=0 then read("Execution Paused...enter any character then CTRL-ENTER") else( disp(sconcat("paused for ", tsecs," seconds")), ?sleep(tsecs)), return("") );
In MATLAB, I often use the subplot() command to make an array of multiple plots in a single figure.
In Maxima, we can achieve that by generating each of the subplots using gr2d(), and then putting them all together with a call to draw() or wxdraw():
There’s an optional columns argument — the subplots are drawn row-wise in an array with the specified number of columns:
And of course all this works for 3d plots using gr3d():
Alt Up to recall previous commands to the current input line
In Matlab and RStudio, I love the ability to recall a command I’ve already typed using the up arrow key. Today I discovered alt up arrow to do the same in wxMaxima!
Ctrl Shift K for autocomplete and function template
This is really the best implementation of function templates I’ve seen in an IDE:
In wxMaxima, if I type inte and then ctrl shift k, I see a popup menu of possible completions. Choosing integrate results in an input cell template that looks like:
Pressing Tab highlights <expr> and I simply type the expression to be integrated. A second press of Tab key highlights <x> and I type the name of the independent variable.
But wait, there’s more: this works for any currently defined function—including user defined functions.
Notepad++ is lots of people’s favorite text editor for Windows. I use it every day.
A little googling around led me to a Notepad++ user-defined syntax highlighting file for the Maxima language, written by David Scherfgen and shared at the Maxima-Discuss list.
I made a little change to the file that overcame a nagging difficulty — I found that .mac file extensions weren’t automatically being recognized upon opening.
To include Maxima syntax highlighting in Notepad++ do this:
- unzip the downloaded file MaximaNotepadDS.zip
- in Notepad++, go to Language –> Define your language…
- Press Import and navigate to the file MaximaNotepadDS.xml
- Quit Notepad++ and then start the program again.
- Now in Language menu, you’ll see Maxima in the list of languages at the bottom of the drop-down menu
- A .mac file already open won’t display with the new syntax highlighting, but any .mac file you open or save from new will automatically show with syntax highlighting.
I was looking recently at the PYPL PopularitY of Programming Language.
That site ranks popularity of programming languages (Java is #1) using Google Trends tools based on searches of the form <Language Name> Tutorial. I did my own Google Trend search, comparing the 3M of Computer Algebra Systems: Maple, Mathematica, and Maxima using the Tutorial criteria as at PYPL.
With the data from Google Trends, I computed the proportion of the total 3M monthly searches for each program. Here’s how that looks over time since 2004:
It appears to me that Maxima is slowly and steadily gaining with nearly 20% share, Maple is currently at about 30%, and Mathematica at 50%. Does anybody know what happened between 2006 and 2013 to account for the increase in popularity of Mathematica and decrease for Maple?
I’ve put together a collection of functions — some direct quotes of other contributed functions, some renamed or repackaged, and some newly implemented — for various needed tasks in my undergraduate ordinary differential equations course.
The package includes my home-grown help utility.
You can download the package MATH280.mac
…and if you’re interested, here’s my multivariable calculus package MATH214.mac
MATH280.mac contains: wxphaseplot2d(s) wxphaseplot3d(s) phaseplot3d(s) wxtimeplot(s) plotdf(rhs) wxdrawdf(rhs) sol_points(numsol,nth,mth) rkf45(oderhs,yvar,y0,t_interval) BDF2(oderhs,yvar,y0,t_interval) BDF2a(oderhs,yvar,y0,t_interval) odesolve(eqn,depvar,indvar) ic1(sol,xeqn,yeqn) ic2(sol,xeqn,yeqn,dyeqn) eigU(z) eigdiag(z) clear() - - for any of the above functions, help(function_name) returns help lines for function_name - Last Modified 5:00 PM 3/27/2017
There is an undocumented user-contributed feature of Maxima for rational inequalities: solve_rat_ineq().
Here are few examples of its capabilities and limitations: