TeXmacs–maxima interface

A.G. Grozin Budker Institute of Nuclear Physics, Novosibirsk, Russia Abstract

This tutorial presents features of the new and improved TeXmacs-maxima interface. It is designed for running maxima-5.9.2 from TeXmacs-1.0.5 (or later).

GNU TeXmacs [1] is a wysiwyg text processor which allows one to produce texts (including mathematical formulae) of high typographical quality easily. It is free (licensed under GPL), and available on Linux and other Unix-like systems, and on MS Windows.

It can also be used as a graphical user interface to a number of computer algebra systems and similar mathematical programs. I wrote interfaces to maxima, reduce , MuPAD, Axiom, qcl, and Mathematica [2,3]. reduce and MuPAD interfaces were later largely re-written and improved by others. Here I describe features of the new and improved version of the maxima interface.

Maxima [4] is the direct descendant of Macsyma – one of the oldest computer algebra systems developed at MIT at the end of 1960's. It is also free (licensed under GPL). The GUI based on TeXmacs provides an excellent quality of formulae both produced by maxima and written by the user for processing by it. The combination TeXmacs + maxima is completely free (both in the sense of the price and in the sense of the availability of sources and the right to study and modify them). At the moment, it is the best available free alternative to Mathematica (which is too expensive for many potential users). This combination is actively used by a large number of users in many countries, as I can see from numerous emails with questions.

This tutorial describes the new version of the interface which will be included in the next stable release, TeXmacs-1.0.5. It is intended for running the next stable release of maxima, namely, 5.9.2. Neither is available at the moment. If you want to try this new interface, you can do this with TeXmacs-1.0.4.7 and the current cvs maxima.

Let's start TeXmacs. We shall use the package varsession :

This is not strictly necessary, but interactive sessions look nicer with it. We shall also use Automatically close brackets :

Now we shall start one of the versions of maxima installed:

Also we shall tick Mathematical input :

If you click the icon looking like “?” on the toolbar, TeXmacs will show the maxima manual:

It is convenient to clone the window:

Then, in one of the windows you return to the buffer which contains the maxima session (in this case, this buffer is called no name ):

In the other window, you can read the manual. Blue texts are hyperlink; clicking them displays the corresponding sections of the manual.

Everything is ready for doing calculations. Usual methematical notations can be used for input expressions to a large extent. Don't forget to use * for multiplication; it is not visible, just produces a little space. Powers are produced using the toolbar or ^ ; fractions – by the toolbar or A-f ; square roots – by the toolbar or A-s ; large (automatically resizable) brackets – by A-( (note that with our settings this produces both the opening bracket and the closing one, and the cursor is left between them). You can use greek letters. For example, α can be produced via the toolbar, by H-a (see help for the meaning of the modifier hyper), or by a tab . Γ means the Γ-function; π means ... what would you think? ... π; γ means the Euler constant; ζ means the Riemann ζ-function.

The integral sign is produced via the toolbar or by S-F5 I . If it has limits, it means a definite integral, otherwise indefinite. Then you write your integrand, then a space, the differential sign (produced by d tab tab ), a space, and your integration variable. The form of the result often depends on parameters; in such cases, maxima asks questions. If you don't want such interactive queries, you can provide the relevant information beforehand.

You can select some (part of) an output field with the mouse:

Then click on an input line, and click with the middle mouse button. The selected expression is inserted. You can edit it and execute.

It is also possible to go to an earlier input line, edit it and press enter . The old output below this line will be replaced by the new one. This is very useful during the first stage of your work, when you investigate various possible approaches. Using this method too often leads to a spaghetti-like set of input and output lines, which is difficult to understand; it is even difficult to reproduce your calculation later.

Here are some definite integrals. The base of natural logarithms ⅇ is produced via the toolbar or by e tab tab , and the infinity symbol – via the toolbar or by @ @ .

Sums are similar to integrals. In addition to sums with a lower limit and an upper one, maxima understands sums with a lower limit like n∈[a,b,c], where the symbol ∈ is produced by \ i n enter . Products are also similar. Binomial coefficients are produced by \ b i n o m enter . They look like matrices, but differ from them! Therefore, don't try to create them via the toolbar menu for matrices and other kinds of tables.

Note a subtle point: the integral sign (or the sum or product sign) is considered as a kind of an “opening bracket”, and there is the corresponding “closing bracket”, which is invisible, but it shows where your integral ends. You can see it in the Document → View → Edit source tree mode as < big|. > . With out setting of Edit → Preferences → Keyboard → Automatically close brackets , it is automatically produced after the integral sign when you input it; if you don't use this mode, you can produce it by \ b i g tab . enter .

Maxima understands matrices and determinants. They are produced via the toolbar. New columns and rows are inserted by A-right , A-left , A-down , A-up . The imaginary unit ⅈ is produced via the toolbar or by i tab tab .

You can inserted some text explaining an input line. To this end, placing the cursor on this input line, select Insert text field from the toolbar menu:

Naturally, this explanation text can be as long as you need, and it can contain mathematical formulae.

And here is a determinant.

Maxima can solve equations and systems of equations. It returns the list of solutions.

Here we define and plot the function f(x,y)=sin(r)/r where r=sqrt (x2 + y2).

The plot appears in a separate gnuplot window:

Here we define a recursive function and trace its execution.

You can create a “sub-session” within the maxima session. With the cursor on an input line, select Fold input field from the toolbar menu:

A sub-session appears; you can edit its title:

You can work within this sub-session; it has its own current input line.

If you dowble-click on the left bar of the sub-session, it gets folded:

Now only its title is visible. This is convenient for long sub-calculations of your project: you can fold them all, and see only the skeleton of your calculation. Sub-sessions can be nested. You can unfold them by double-clicking once more.

Finally, we quit maxima:

If you give a presentation, it is convenient to select Remove all output fields from the toolbar menu:

All output lines disappear.

It suffices to press enter on an input line, and maxima will be re-started. The results will be produced in the presence of your audience, just by pressing enter many times.

Of course, you can save your work as a .tm file. Next time you start TeXmacs to edit this file, just press enter at the first input line to re-start maxima.

References