Maple (software)
| Company type | Proprietary software |
|---|---|
| Industry | Computer software |
| Founded | 1982 |
| Founder | University of Waterloo developers |
| Headquarters | Waterloo , Canada |
| Products | Maple, MapleSim |
| Owner | Maplesoft (subsidiary of Cybernet Systems since 2009) |
| Website | www |
Maple serves as both a symbolic and numeric computation platform and a versatile programming language that supports multiple paradigms. It addresses various technical computing needs such as symbolic mathematics, numerical computations, data analysis, and graphical representation. Its functionality is further enhanced by the MapleSim toolbox, which specializes in multidomain physical system modeling and automated code generation.
Functioning as a comprehensive computer algebra system, Maple is equipped to manipulate complex mathematical expressions and derive symbolic solutions for challenges including ordinary and partial differential equations.
The software is commercially produced by the Canadian company Maplesoft, with its name paying homage to its Canadian roots.
Fundamental Features
Mathematical input can be entered using conventional notation, and users have the option to design personalized interfaces. Maple accommodates high-precision numerical calculations alongside symbolic processing and graphical visualization.
Its programming language is dynamically typed and imperative, bearing similarity to Pascal, with support for lexically scoped variables. Maple provides integration capabilities with several programming environments such as C, C#, Fortran, Java, MATLAB, Visual Basic, and Microsoft Excel.
For web representation of mathematical content, Maple supports MathML 2.0 and can translate classical mathematical notation into LaTeX format for professional typesetting.
System Design
At its core lies a compact kernel developed in C, which delivers the Maple language environment. The majority of its features are implemented through libraries primarily written in Maple itself, with source code accessible for review. Numerical computations utilize established libraries including the NAG Numerical Libraries, ATLAS, and GMP.
Various numerical data types are required by different Maple functions; symbolic data is maintained as directed acyclic graph structures. The standard command-line and calculator-style interfaces are implemented using Java.
History
Maple’s development began in late 1980 at the University of Waterloo, where developers chose to create their own computer algebra system rather than adopt existing Lisp-based solutions like Macsyma. Emphasizing portability, the initial implementation was done in BCPL-related languages before settling on C. A preliminary version was available within three weeks, with more complete releases starting in 1982. By 1983, over fifty academic institutions had adopted Maple.
In 1984, the team licensed version 3.3 to Watcom Products Inc for commercial distribution. The establishment of Waterloo Maple Inc. (later known as Maplesoft) occurred in 1988 to oversee sales and subsequently research and development, which continues to operate alongside university laboratories.
The first GUI appeared with version 4.3 on Macintosh systems in 1989; support for X11 and Windows platforms followed with Maple V in 1990. Maple V Release 2 (1992) introduced the innovative "worksheet" feature that combined text editing, graphics, and formatted input/output seamlessly. In 1994, a dedicated issue of the MapleTech newsletter was published by the developers.
By 1999, Maple 6 integrated components from the NAG Numerical Libraries. The modern standard interface was introduced with Maple 9 in 2003; primarily Java-based, it faced criticism over speed but was subsequently improved. Users constrained by memory were encouraged to use the classic interface instead.
From 1995 through 2005, Maple experienced a decline in market presence due to an inferior user interface. This was addressed with Maple 10 (2005), which launched a new "document mode" interface that has been progressively enhanced in later versions.
In September 2009, Japanese software distributor Cybernet Systems acquired both Maple and Maplesoft.
Version history
- Maple 1.0: January 1982
- Maple 1.1: January 1982
- Maple 2.0: May 1982
- Maple 2.1: June 1982
- Maple 2.15: August 1982
- Maple 2.2: December 1982
- Maple 3.0: May 1983
- Maple 3.1: October 1983
- Maple 3.2: April 1984
- Maple 3.3: March 1985 (initial public release)
- Maple 4.0: April 1986
- Maple 4.1: May 1987
- Maple 4.2: December 1987
- Maple 4.3: March 1989
- Maple V: August 1990
- Maple V R2: November 1992
- Maple V R3: March 1994
- Maple V R4: January 1996
- Maple V R5: November 1997
- Maple 6: December 1999
- Maple 7: July 2001
- Maple 8: April 2002
- Maple 9: June 2003
- Maple 9.5: April 2004
- Maple 10: May 2005
- Maple 11: February 2007
- Maple 11.01: July 2007
- Maple 11.02: November 2007
- Maple 12: May 2008
- Maple 12.01: October 2008
- Maple 12.02: December 2008
- Maple 13: April 2009
- Maple 13.01: July 2009
- Maple 13.02: October 2009
- Maple 14: April 2010
- Maple 14.01: October 2010
- Maple 15: April 2011
- Maple 15.01: June 2011
- Maple 16: March 2012
- Maple16.01: May2012
- Maple17: March2013
- Maple17.01: July2013
- Maple18: March2014
- Maple18.01a,b,c: May-July-November2014
- Maple2015.0,1: March & November2015
- Maple2016.0,1,1a: March-April2016
- Maple2017.0-3: May-October2017
- Maple2018.0: March2018
- Maple2019.0-March2019
- Maple2020.0-March2020
- Maple2021.0-March2021
- Maple2022.0-March2022
- Maple2023.0-March2023
Features
Maple delivers a broad range of functionalities designed for mathematical and engineering tasks, such as:
- Handling both symbolic and numerical computations with arbitrary precision
- Extensive collections of basic and specialized mathematical functions
- Support for complex numbers, interval arithmetic, and sophisticated polynomial operations across multiple fields
- Facilities for evaluating limits, series expansions, asymptotic forms, and Gröbner bases computations
- Differential algebra capabilities alongside comprehensive matrix operations, including sparse matrix handling
- Graphing utilities for mathematical functions with animation features
- Solvers addressing systems of equations, Diophantine problems, ordinary and partial differential equations, differential-algebraic equations, delay differential equations, and recurrence relations
- Tools for numeric and symbolic calculus covering integration, summation, automatic differentiation, and integral transforms
- Optimization methods for both constrained and unconstrained local and global problems
- Statistical tools encompassing model fitting, hypothesis testing, and probability distribution analysis
- Data processing functions with visualization options, time-series analytics, and support for unit-based data types
- Access to online financial and economic datasets
- Financial computation modules for bonds, annuities, derivatives, options pricing, and stochastic process simulations
- Text mining features incorporating regular expressions
- Signal processing and control system analysis capabilities for linear and nonlinear models
- Discrete mathematics utilities including number theory applications and graph visualization/analysis tools
- Group theory support covering permutation groups and finitely presented groups
- Symbolic tensor algebra functionality
- Import/export compatibility with various data formats such as images, audio files, CAD models, and document types
- Technical word processing integrated with formula editing tools
- A versatile programming environment supporting procedural, functional, and object-oriented approaches
- Tools for designing user interfaces to create custom computational applications
- Integration options with SQL databases, Java platforms, .NET framework, C++, Fortran languages, and HTTP protocols
- Multi-language code generation capabilities including C, C#, Fortran, Java, JavaScript, Julia, Matlab, Perl, Python, R, and Visual Basic
- Support for parallel programming paradigms
Together these features make Maple a robust computational environment ideal for enterprises demanding sophisticated tools in finance, engineering design, data science, and software engineering development.
Examples of Maple code
Below is a demonstration of calculating the factorial of a nonnegative integer, showcasing an imperative programming style within Maple:
<syntaxhighlight lang="maple"> myfac := proc(n::nonnegint)
local out, i;
out := 1;
for i from 2 to n do
out := out * i
end do;
out
end proc; </syntaxhighlight> Alternatively, straightforward functions can be expressed using the "maps to" arrow syntax: <syntaxhighlight lang="maple">
myfac := n -> product(i, i = 1..n);
</syntaxhighlight>
Integration
A sample of symbolic integration in Maple: <syntaxhighlight lang="maple">
int(cos(x/a), x);
</syntaxhighlight> Result:
- <math>a \sin\left(\frac{x}{a}\right)</math>
Determinant
Calculating the determinant of a matrix example: <syntaxhighlight lang="maple">
M := Matrix([[1,2,3], [a,b,c], [x,y,z]]); LinearAlgebra:-Determinant(M);
</syntaxhighlight> Output:
- <math>bz-cy+3ay-2az+2xc-3xb</math>
Series expansion
Creating a series expansion for the hyperbolic tangent function: <syntaxhighlight lang="maple"> series(tanh(x), x = 0, 15) </syntaxhighlight> The result includes terms up to <math>x^{13}</math>.
Numerical equation solving
Finding numerical solutions for a high-degree polynomial: <syntaxhighlight lang="maple">
f := x^53-88*x^5-3*x-5 = 0 fsolve(f)
</syntaxhighlight> Sample roots:
- <math>-1.097486315, -0.5226535640, 1.099074017</math>
Solving systems of equations numerically: <syntaxhighlight lang="maple">
f := (cos(x+y))^2 + exp(x)*y + cot(x-y) + cosh(z+x) = 0:
g := x^5 - 8*y = 2:
h := x + 3*y - 77*z = 55;
fsolve({f,g,h});
</syntaxhighlight> Example solution set:
- <math>{x = -2.080507182, y = -5.122547821, z = -0.9408850733}</math>
Plotting functions
Graphing a single-variable function <math>x \sin(x)</math> over the interval [-10,10]: <syntaxhighlight lang="maple">
plot(x*sin(x), x = -10..10);
</syntaxhighlight>
Rendering a surface plot for a two-variable function <math>x^2 + y^2</math> with both variables ranging from -1 to 1: <syntaxhighlight lang="maple">
plot3d(x^2 + y^2, x = -1..1, y = -1..1);
</syntaxhighlight>
Function animation
Animating a function depending on two variables: <syntaxhighlight lang="maple"> plots:-animate(subs(k=0.5, (2*k^2)/(cosh(x*k - 4*k^3*t)^2)), x=-30..30, t=-10..10, numpoints=200, frames=50, color=red, thickness=3); </syntaxhighlight>
Animating functions involving three variables: <syntaxhighlight lang="maple"> plots:-animate3d(cos(t*x)*sin(3*t*y), x=-Pi..Pi, y=-Pi..Pi, t=1..2); </syntaxhighlight>
Creating a fly-through animation of 3D plots with customized viewpoints: <syntaxhighlight lang="maple">
M := Matrix([[400,400,200], [100,100,-400], [1,1,1]], datatype=float[8]): plot3d(1, x=0..2*Pi, y=0..Pi, axes=none, coords=spherical, viewpoint=[path=M]);
</syntaxhighlight>
Laplace transform
<syntaxhighlight lang="maple"> f := (1+A*t+B*t^2)*exp(c*t); </syntaxhighlight>
- <math> \left(1 + A \, t + B \, t^2\right) e^{c t}</math>
<syntaxhighlight lang="maple">
inttrans:-laplace(f, t, s);
</syntaxhighlight>
- <math>\frac{1}{s-c}+\frac{A}{(s-c)^2}+\frac{2B}{(s-c)^3}</math>
- Inverse Laplace transform example:
<syntaxhighlight lang="maple"> inttrans:-invlaplace(1/(s-a), s, x); </syntaxhighlight>
- <math>e^{ax}</math>
Fourier transform
<syntaxhighlight lang="maple">
inttrans:-fourier(sin(x), x, w)
</syntaxhighlight>
- <math>\mathrm{I}\pi\,(\mathrm{Dirac}(w+1)-\mathrm{Dirac}(w-1))</math>
Integral equations
Determine the function that satisfies the following integral equation:
- <math>f(x)-3\int_{-1}^1(xy+x^2y^2)f(y)dy = h(x)</math>.
<syntaxhighlight lang="maple"> eqn:= f(x)-3*Int((x*y+x^2*y^2)*f(y), y=-1..1) = h(x): intsolve(eqn,f(x)); </syntaxhighlight>
- <math>f \left( x \right) =\int _{-1}^{1}\! \left( -15\,{x}^{2}{y}^{2}-3\,xy \right) h \left( y \right) {dy}+h \left( x \right)
</math>
Application of the Maple engine
Numerous products from Maplesoft operate using the Maple engine:
- MapleNet facilitates the development of JSP and Java Applets, with interactive Maple worksheets available from version 12 onwards.
- MapleSim, a tool designed for engineering simulations.
- The Maple Quantum Chemistry Package by RDMChem, which calculates and displays molecular electronic energies and associated properties.
Previously, several third-party commercial applications incorporated the Maple engine:
- Various editions of Mathcad (1994–2006) utilized a Maple-based algebraic engine (MKM), later replaced by MuPAD.
- MATLAB's Symbolic Math Toolbox included components of Maple 10 but switched to MuPAD starting with release R2007b.
- Earlier versions of Scientific Workplace relied on Maple as their computation core; current releases have transitioned to MuPAD.
External links
- Maplesoft, division of Waterloo Maple, Inc. – official site
- Articles with short description
- C (programming language) software
- Notebook interface
- Computer algebra system software for Linux
- Computer algebra system software for macOS
- Computer algebra system software for Windows
- Computer algebra systems
- Cross-platform software
- Data mining and machine learning software
- Data and information visualization software
- Data-centric programming languages
- Econometrics software
- Functional languages
- Interactive geometry software
- IRIX software
- Linear algebra
- Maplesoft
- Mathematical optimization software
- Mathematical software
- Numerical analysis software for Linux
- Numerical analysis software for macOS
- Numerical analysis software for Windows
- Numerical programming languages
- Numerical software
- Parallel computing
- Physics software
- Plotting software
- Products introduced in 1982
- Proprietary commercial software for Linux
- Regression and curve fitting software
- Simulation programming languages
- Software modeling language
- Statistical programming languages
- Theorem proving software systems
- Time series software