# In certain situations, Maxima can actually solve a sextic equation.

For readers who don’t know, a sextic equation is a polynomial of the 6th degree. As the subject line suggests, recent versions of Maxima can find symbolic solutions to those, if used correctly, and, if the sextic actually has ‘an exact, analytical solution’, which is also referred to sometimes as ‘a symbolic solution’.

Whether these analytical solutions are actually more useful than numeric approximations, remains an unanswered question.

What has happened to me is, that I’ve tried to use the method shown below, to cause Maxima to display the solution, and that due to what amounted to a typo, I had given it a polynomial which was visually similar to the one shown, but which was also different in some small way, so that the only solution which Maxima displayed, was the original polynomial, thus implying that Maxima was not able to solve an altered one. The reason this happened is easy to explain…

Not all polynomials of the 6th degree actually have an analytical solution. If given an example that does not, Maxima will fail to display one. All polynomials of the 4th degree actually have an analytical solution, but it may easily be too complex for consumer-grade Computer Algebra Systems (CAS) to output. But, by the time the user is asking a CAS to solve a cubic, he should be able to expect this form of a solution to be output.

The sextic below is actually the product of two cubics, which also explains why Maxima was able to solve it. The reader will need to enable JavaScript:

• From my site, And
• From MathJax.org,

To be able to view the worksheet:

(Updated 7/04/2020, 13h30… )

(As of 7/02/2020: )

There’s a little piece of additional information, which the reader may find useful. The reader’s goal might be, to accomplish the same feat, on an Android-based, mobile device. In such a situation, there are two apps which will accomplish this for him or her, if both activated:

The first app is merely a shell, which, when run for the first time, actually installs Maxima (the free, open-source application). But the second app is the more-difficult to work with. Because Maxima has been installed in exactly the same way, that it would be installed on a PC, its successful use requires that the user enter the full gamut of ASCII characters. If the user happens to be using a US, ASCII, Bluetooth Keyboard, then he or she happens to be in luck. But, if a user is employing a graphical, on-screen keyboard, chances are that it is meant for input in a Human language, and not for a Computing syntax.

Hacker’s Keyboard is a (closed-source, paid-for) ‘Input Method’, of which Android users may install and activate as many as they like, but this one enables, Computing-based, ASCII character input.

There are certain controversies, in using this alternative input method, over the on-screen keyboard that normally ships with a phone or a tablet:

• According to Android itself, it could be malware, ideally situated to capture all the user’s secrets, while in use, And
• The issue exists separately, that certain input methods will fail to unlock the phone, after a reboot.

While I would not knowingly suggest that the reader install malware, this second controversy strikes me as the more-important one. If the Android user has switched to this on-screen KB, he or she must also make sure that:

• The device does not crash in mid-session, And that
• The user switches back to an Android-optimized KB, after being finished with Hacker’s Keyboard.

But aside from that, this is the result that I can obtain, just from a smart-phone:

(Update 7/03/2020, 6h55: )

There was a question which I was curious about, and which the reader might also be curious about, concerning how Maxima is able to recognize, that the sextic which I gave it above, is actually the product of two cubics, which it can solve. Presumably, if the sextic was actually the product of a quadratic and a quartic, Maxima would not be able to solve it.

And so, one way in which Maxima could have been programmed to reduce polynomials would have been, to try factoring out rational roots, but, until the deflated polynomial has become a cubic, at which point Maxima could generally solve a cubic. The above example was of the form:

(x3 +1) (a x3 + b x2 + c x + d)

And, if this form was a necessary step for Maxima to be able to solve sextics, this would have been slightly disappointing, because they might, in other cases, just exist as the product of two cubics, neither of which have rational roots, but both of which have 3 real roots. To test what Maxima can really do, I also had a session that went as shown below. Mind you, the session shown below took place on one of my PCs, and not on any Android device:

http://dirkmittler.homeip.net/dicubic_1.html

(Update 7/04/2020, 11h20: )

There is another question which I could offer an opinion on, which would be, of ‘Whether the author of Maxima On Android did a good job, of porting this software to Android.’

Honestly, I’ve never made serious use of the Android version. But, having used desktop versions, I have observed that often, the Graphical Front-End to Maxima being used, may actually affect how positive an experience the user will have. Because the graphical front-end which I tend to use, is ‘wxMaxima’, it’s from this GUI that I obtain certain features. Maxima On Android has a much more sparse GUI.

One of the features which wxMaxima offers is, that the user can export his Maxima worksheet, as ‘a Maxima batch file’, which can also be referred to as ‘a script file’. These files are pure text files, and don’t have much in the way of special features. Their text-commands are executed by Maxima, when loaded, exactly as they’d be executed, if their commands were simply typed in.

A convention which exists under Linux is, that these batch files should have the filename extension ‘.mac’. But in reality, there is no reason why they cannot simply have the filename extension ‘.txt’.

As Maxima On Android offers the user the ability to Import such a “Script File”, it makes much more sense under Android, that their filenames end with ‘.txt’. And the reason is the fact that under Android, it’s not possible to edit .MAC Files in a text editor. But, even within Dropbox, the feature is offered to edit .TXT Files.

Therefore, because of the additional fact that Maxima On Android does not allow an entire session or worksheet to be exported as a Maxima Batch File, the cycle may be necessary, to keep editing the Batch Files in a text editor, and then to try importing them again, into Maxima On Android, until they work.

There is one small way in which the author has made the use of his port of the application ‘easier to work with’. Maxima itself has commands such as ‘batch()’ or ‘open()’, in which the user can specify filenames in double quotes. If the user always had to specify the full path-name, then, under Android, this could easily turn into an ordeal, over the long and complex path-names that Android generally has. So, what the author did was, when importing a batch file, if the user does not specify a full path-name, to look for the named file in the (Android) “Downloads” folder. If I’m not mistaken, this causes a temporary file to be created somewhere…

But, aside from that, this GUI is somewhat lacking. The user can tap on an element of output, which is being displayed in typeset form, and cause that output to appear in the input field, in Maxima Text Format, Not as LaTeX. This is how the port handles the possible task of repeating history. Once in the input field, the one element of Algebra can be Copied to the clipboard, or, Edited, before being given as a command again. Similarly, elements of user input can be copied To the Input Field, just by being tapped on, in the history. But in reality, this constitutes very little in the way of GUI support.

Also, trying to load the package ‘lapack’ won’t work. The reason for this is the fact that this package is generally treated differently by Maxima, when first loaded, from how the other packages are treated. For most packages, the code is stored in LISP format (which is also how this version of Maxima Saves its sessions), and are simply read in. ‘lapack’ is different in that, on a PC, the package must first be compiled, before being used. ‘Compiling’ means that source code needs to be translated into executable binary. And, on a 1.5GHz CPU, this can take 15 minutes. Once a given user has compiled this package once, he or she does not need to do so again.

Well, under Android, Maxima cannot have the tools needed to compile anything. And so, ‘lapack’ will not work.

Certain other commands, that are built-in to Maxima, work in the Android port, just as they’d work on a PC, such as, for example, the ‘tex()’ function, which converts some equations from Maxima syntax, into LaTeX, which can in turn be copied and pasted. But, outside Maxima, an Android user is unlikely to have many apps that use LaTeX, and so, it’s not clear to me, how useful it would actually be, to use this function…

(Update 7/04/2020, 11h40: )

There is a word to be said, about how ‘Maxima On Android’ generates plots. Under Stock Maxima, the functions that would do so, are ‘plot()’ and ‘draw()’, as well as ‘plot3d()’ and/or ‘draw3d()’. After the user has given any one of these commands under Maxima On Android, he or she is expected to tap on the ‘Graph’ Menu-Entry, to switch views to the plot.

What some people complain is that the ‘plot()’ functions work, but that the ‘draw()’ functions do not.

This is an area, where the developer would have been responsible to develop the GUI a little better. But the dev can easily state, that this was not trivial to achieve, just because again, he would have ported ‘GNUPlot’ to Android, not, rewritten GNUPlot.

When using ‘wxMaxima’, in addition to these plotting functions, that open a separate window, there are the functions ‘wxplot()’ and ‘wxdraw()’, that work exactly the same way, but that embed the plots in the worksheet instead. I can say that the way wxMaxima handled its responsibilities was good, in that everything works. But, as should already be clear from this posting, Maxima On Android simply does not achieve as much, concerning the GUI, as wxMaxima achieves.

I suppose that a more protracted way exists, to test the ‘plot()’ function of Maxima On Android. What it normally allows is, for the user to specify an output file, that will be an image file, into which each plot will be output. I suppose that users could try this feature under …Android. But then, one possible result could be, that the image file is output, and that the Android user cannot find it, over the question of Android path-names etc..

(Update 7/04/2020, 13h30: )

I have just tested, whether the ‘draw3d()’ function works, in the Android port of the software:

The screen-shot above, of a 3D implicit function, is what using the ‘draw3d()’ function output, on my Samsung Galaxy Tab S6. So, at least on that device, it works. This was the Maxima Batch File, that generated the output above:


/*
Object of exercise:
To demontsrate the capabilities of the 'draw' package,
using the implicit equation of a sphere.
*/

implObj : implicit(x^2 + y^2 + z^2 - 4, x, -5, 5, y, -5, 5, z, -2, 2);

load("draw")$draw3d(enhanced3d=true,surface_hide=true, x_voxel=20,y_voxel=20,z_voxel=20, dimensions=[600,600], implObj)$



I find the fact that it worked impressive, because, when we give the command:

load(draw)\$

On a desktop PC, what the messages indicate is, that it depends on ‘VTK’, and not just on ‘GNUPlot’. Therefore, the dev has gone beyond what he has stated to have done, and has ported some interface to ‘VTK’, to Android as well.

What I take this to mean is that, when certain other users were not able to get ‘draw()’ to work, there may have been one out of two problems involved:

• It’s possible that the plotting features do not work on specific Android devices, Or
• It’s possible that certain users did not know, that they need to load the ‘draw’ package explicitly, before using it…

Similarly, it’s possible that some small number of users:

• Forget to tap on the ‘Graph’ Menu-Entry, after giving the ‘plot()’ command, to view their plot, But
• Know how to leave the dev a really negative review on Google Play.

The majority of reviewers strike me as people though, who have experience in using Maxima, but who complain that specific packages, which they are used to, just don’t work on the Android port of the application…

Dirk