Next: VisualDSolve Up: Book Reviews Previous: Gröbner Bases and Applications.

# MAPLE, A Comprehensive Introduction

by Roy Nicolaides and Noel Walkington
Cambridge University Press: Cambridge, 1996, xix+466 p
ISBN 0 521 56230 9 (hardback)

Review by André Heck
CAN/Amstel Institute
University of Amsterdam, The Netherlands
Email: `heck@can.nl`

As stated on the back cover and in the preface of the book, the aim of the authors was to provide a solid grounding in Maple. In short, a book accessible to anyone with background in calculus and linear algebra as taught in first year courses at American universities, and designed to enable its reader to extract value from Maple without wasting time and effort in the learning process. Although complete in its coverage of Maple V Release 4, there should be no ``fat'' in the text. In this review we will look at the outcome.

The book has twelve chapters: an introductory chapter with Maple basics, six chapters on the use of Maple in calculus and linear algebra, and three chapters on Maple programming. Each chapter start with a short explanation of the goal and the topics of the chapter, and ends with a summary of relevant Maple commands. The topics treated are: basic usage of the system covering input/output, evaluation and simplification, on-line help, and organization of Maple (ch. 1); calculus items such as computing with numbers, manipulating expressions, solving equations (ch. 2), differentiation and integration, limits, series expansions (ch. 3); working with matrices, eigenvalues and eigenvectors, matrix decompositions (ch. 3); numerical methods for integrations, nonlinear solving, and differential equations(ch. 4); graphics in two and three dimensions (ch. 5); computational algebra with algebraic fields, finite fields, and polynomial rings (ch. 7); useful Maple utilities (ch. 8) and packages (ch. 9). The chapters on Maple programming discuss looping, branching, and data structures such as sets, lists, tables, and arrays (ch. 10); defining, debugging, and applying Maple procedures (ch. 11); examples covering ``Printing Maple expression trees'', ``Vector identities and simplification'', ``Fractals, graphics, and L-systems'', ``Finite-difference formulas'', and ``Testing random numbers''.

Although this is not a complete coverage of Maple, a broad range of topics on using the system is discussed in the book. Some useful issues that are missing are elimination of variables, implicit differentiation, and coordinate transformations. In the programming chapter, the use of the `userinfo` command as debugging and user information tool, and the use of the `march` utility to build up a single archive of private Maple procedures would have been appropriate. But in general, the comprehensive coverage of Maple by the authors is ok.

Since the book is undoubtedly written for novice users and as reference book for later, we have a close look at how Maple is introduced, at what level and wich choice of examples, at which commands are discussed and which are left out, and at the correctness or completeness of explanations. In this respect, sadly enough, the book is weak. We will underpin this conclusion.

The book starts with a chapter on the basics of Maple. One thing immediately strikes the eye: no word is spent about the worksheet interface, even though this is the most important interface of Maple. As a matter of fact, the authors choose the text-based interface of Maple as the main interface: this is clear from the Maple pseudo-sessions that use two-dimensional ascii formulas instead of nicely typeset formulas that Maple can produce, and from the discussion on how to make help pages, which is almost opposite to what a programmer should do when he or she want to provide help pages in the same fashion as Maple contains them.

One could argue about whether the discussion on internal representation of a Maple expression should take in the first introductory chapter or later, but one can insist on correctness of explanation. The authors however make no distinction between a representation tree of an expression and the direct acyclic graph (DAG), which is the real internal representation. They don't distinguish between the convenience procedures to split Maple expressions into many parts or to select individual parts of expressions (understandable in many cases via representation trees), and the internal representation that Maple really uses (needed to understand all phenomena). An understandable offense against correctness is the statement that Maple has no labeling facility for statements and no ``go to'' statement. These are undocumented, but existing features of Maple.

The contents of the first chapter is in general uninspiring for the novice user: why would he or she be interested in Maple's laws of evaluation and simplification, or in the usage of structured data types. The novice user will be more interested in mathematical activities like how to graph a function, how to integrate or differentiate a function, how to work with matrices, and so on. Answering the questions on how to do things in Maple, brings motivation to the process of learning more about Maple's underpinnings.

Besides the correctness of explanations, the completeness of the Maple discussions is important. Throughout the chapters, the authors do not use the full functionality of Maple V Release 4. A few examples: in the description of how to manipulate list, there is no word about accessing elements counting backwards. Maple's ability to do partial fraction decomposition over the algebraic closure of the field of definition is apparently not known to the authors. The distinction between the use of the sequence operator `\$` and the sequence command `seq` is not made and leads to clumsy Maple examples. The question ``Why do you think the forward quotes are needed?'' on page 296 could be answered by ``Because the `\$` operator is used instead of the more convenient `seq` procedure.'' Options in the `dsolve` procedure are not specified with their keyword. For example, `dsolve(..., laplace)` is used instead of `dsolve(...,method=laplace)`. With the keyword `method`, other integral transforms can be used as well. The optional argument of `RootOf` to specify the root in which one is interested is not used although the discussion in section 7.1 screams for it. The use of `array` instead of `matrix` and `vector` unnecessarily complicates matrix algebra such as the interpretation of vectors as column or row vectors. And this list of examples could be extended.

A few critical words about the ease of use of the book. The index is almost useless: it is merely a list of Maple commands, which makes it difficult for novice or casual users of Maple to find what they need. For example, in the index there exist no references on items such as starting or quitting Maple, getting help, and the use of names starting with underscores, although these topics are treated in the text.

In the text, the reader is often referred to other sections. A bit too often, one could say, and what irritates is that the process of going to a section is complicated by the omission of numbers to subsections: when you read ``... in the Full Evaluation subsection ...'', you first have to go to the table of contents to find out that this actually is a subsection of section 2.1 on page 11.

References to relevant articles and textbooks on Maple and mathematics are missing. So, the question ``where can I learn more about Maple after working through this book'' stays unanswered.

There are some good things to say about the book: the authors succeeded in writing a readable text suitable for self-study, and the reader will certainly learn from it how to use Maple. What is more, he or she will have read one of the few textbooks on Maple that does not evade the difficulty of topics like algebraic number fields, approximation of mathematical functions and data, and evaluation rules in Maple. Most chapters can be read at random order as they do not unnecessarily depend on each other. The summaries of relevant Maple procedures at the chapters are good quick references for further use of Maple. The exercises at the end of the first five chapters and chapters 11 & 12 on Maple programming are good with respect to level, relevance, and variety. A pity, but also strange, that other chapters contain no exercises. Unfortunately, this is not enough to compensate the imbalance of the text and the incorrectness/incompleteness of the Maple discussion so that we come to the conclusion ``not recommended for use.''

Next: VisualDSolve Up: Book Reviews Previous: Gröbner Bases and Applications.