411 REFERENCE · Wikibooks
Maxima/What is Maxima and what is it useful for
Reference material by Wikibooks contributors. This retains its source identity and is not 411 news reporting.
What is Maxima and What is it Useful or?
Introduction
"Experienced Lisp programmers may say that there are built-in Lisp procedures that will achieve far more succinctly and efficiently what I have achieved in some of the example programs here.
My defence is that the point of these tutorials is not to teach Common Lisp in its entirety, but to help the reader understand the general principles of programming in Lisp. I believe that it is daunting for a beginner to be confronted with a catalogue of Lisp procedures to learn by rote. It is far more important to understand how to approach a problem, and break it down into simpler problems with the help of recursion."
– From Lisp in Small Parts
Readers might find it curious for a book about Maxima to lead off with a quote about the Lisp programming language. It is true that Maxima is a software application based on Lisp, so it that sense a reference to Lisp is not completely unusual.
However, it is the point that is made by this quote that is quite relevant to those that find themselves using Maxima for some specific purposes or simply as a matter of personal interest. This book is not intended to be a "Maxima in Small Parts" version of the topic. It is neither a tutorial or a comprehensive and thoroughgoing technical guide for Maxima. Neither is it a "How-to-Do" recipe document for this or that with Maxima This book is intended to be a sort of middle ground between a tutorial and a technical reference manual.
Maxima as a computer algebra system (CAS) application is technically both wide and deep in terms of its scope. The intent of this book is to "help the reader understand the general principles of" using Maxima. If the reader is new to Maxima then all of what follows may be too much with which to start. Beginning with the many tutorials available may better serve users new to Maxima. On the other hand, if the reader is an experienced user of Maxima then the effort to consider all of what follows may not meet subjective technical standards, and possibly not be particularly instructive.
Maxima, as well as Lisp, are not "new kids on the block" so to speak. To some readers and users with a more modern perspective and exposure to such matters, Maxima and its "out-of-the-box" command line interface (CLI) may seem crude and out of date. Don't be swayed by this. There is a much capability at hand in using Maxima. Readers and users are highly encouraged to use the wxMaxima graphical user interface (GUI) application for the best experience. wxMaxima with its interactive workbook environment positions Maxima on a completely different level of user experience. The details of installing Maxima and wxMaxima follow in a subsequent section. Readers of this book should note well that the example code herein was produced using the wxMaxima GUI. However, some users may choose to begin using the Maxima CLI or the xMaxima GUI included with the Maxima distribution. See the book section describing installation for details related to Maxima user interfaces.
About Maxima and its Uses
Maxima belongs to the category of computer software applications known as computer algebra systems - or CAS. Within this category of applications, it is "general purpose" in that it is not dedicated to any specific mathematical topic of study or application. However, within that general-purpose category there is a sense in which it is a special-purpose application in that, while significant numerical computational capabilities are possible, the primary emphasis is on processing "symbolic" mathematical expressions using syntax for expression composition for input that conforms to that which Maxima can parse, interpret, and process.
So, to state it briefly, Maxima is primarily an application for processing symbolic mathematical expressions according to the purpose of the user using syntax Maxima can parse and interpret.
In general, Maxima expressions fall into three categories:
Mathematical expressions
Object expressions
Programming expressions
Mathematical expressions are for doing things that simply are essentially of a mathematical nature. Object expressions are used to create data structures for storage. Programming expressions provide the capability for some types of imperative or functional programming instructions.
Thus, Maxima is not strictly a programming language like Python, Julia, Java, C, and so forth. The differences between Maxima as a CAS, and other programming languages should become evident from the contents of this document and, even better, with the actual experience of using Maxima to accomplish specific mathematical tasks. However, Maxima includes a relatively complete set of programming expressions in the context of its intended purpose as a CAS. Additionally, Maxima can be used to access the underlying Lisp programming language.
Getting started using Maxima will be much easier if the user begins with a particular frame of mind. Almost every user input to Maxima is an expression of some type. Expressions are what Maxima is all about - especially mathematical symbolic expressions. If numbers can be considered as represented symbolically by numeration (integers, fractions, decimal or floating point literals) then it is not an exaggeration to characterize everything Maxima can do as symbolic processing.
The following is a list of a few examples (certainly not all) of what Maxima can be used for:
Solve algebraic equations symbolically or numerically
Solve ordinary differential equations
Matrix creation and operations
Calculus - limits, differentiation, integration
Expansion, factoring, and simplification of expressions
Rational numbers as fractions, and "big" floating point numbers to specified precision
Complex numbers
Trigonometric expressions
Plotting - 2D and 3D with some animation
Maxima also includes packages that may be loaded into the current working environment that provide for some specialized tasks, including the study of specific mathematical subjects or applications.