Index of New Maple 12 Features
Maple 12 contains many new capabilities and improvements to existing facilities. For a summary, see What's New in Maple 12?.
The important changes in Maple 12 are described in the following topics.
New packages and modifications to pre-existing packages. For more information, see updates/Maple12/packages.
Changes to the Maple programming facilities. For more information, see updates/Maple12/programming.
Expanded visualization and graphing capabilities. For more information, see updates/Maple12/graphics.
Improvements to specific applications of the Maple numeric computation environment. For more information, see updates/Maple12/numerics.
Improved efficiency through increased speed and reduced memory use. For more information, see updates/Maple12/efficiency.
Significant improvements to the suite of differential equation solvers. For more information, see updates/Maple12/differentialequations.
Significant additions and improvements to the symbolic capabilities in various Maple packages and procedures. For more information, see updates/Maple12/symbolic.
Improvements to the Maple graphical user interface (GUI). For more information, see updates/Maple12/gui.
Notes for users upgrading from Maple 11. For more information, see updates/Maple12/compatibility.
Changes to the Maple language and system facilities. For more information, see updates/Maple12/language.
You can access the Getting Started Guide and User Manual as worksheets in the Standard Worksheet interface. Many updates have been made to these manuals for this release.
1. From the Help menu, select Manuals, Dictionary, and more.
2. Select Manuals, and then the appropriate guide.
The new Maple Portal for Students provides instructions for beginner Maple users, particularly students and their instructors. This portal, which opens as a worksheet, acts as a guide for performing many common mathematics tasks in Maple. The demonstrated methods emphasize using the Student packages to solve typical problems from mathematics courses.
For more Maple news, tools, and tips, refer to the Maplesoft Web site http://www.maplesoft.com.
What's New in Maple 12?
The following is a summary of the major improvements in Maple 12. For an index of the updates, see the Index of New Maple 12 Features.
Smart Document Environment
Maple's smart document environment is easy to learn and easy to use. New features in Maple 12 include new plotting and visualization tools, additional support for document creation, and more resources for easy "clickable math" interaction.
Highlights:
New plotting capabilities include dual axis plots, polar plots, and specialized engineering plots such as frequency domain responses and root-locus plots.
Improved interactive 2-D plot customizations are maintained on re-execution.
The Exploration Assistant allows you to instantly create interactive mini-applications used to explore the parameters of expressions. Other improved "clickable" tools include palettes, task templates, and the drawing canvas.
New interactive embedded components include dials, gauges, and radio buttons.
Command completion templates provide a fill-in-the-blank approach to common commands.
More document layout templates, document headers and footers, and table enhancements make it even easier to create polished documents.
New code edit regions, including a start-up code region for initialization code, provide a convenient means of developing your programs directly inside the final application document.
The Maple Portal for Students acts as a guide for hundreds of common tasks from mathematics courses. The portal makes use of interactive assistants, context menus, and task templates, including over a dozen new task templates created for the portal.
A new Plotting Guide provides easy access to Maple's plotting types and options, while the updated Getting Started Guide for new users includes many more examples using interactive, "clickable" methods for problem-solving.
Improved help pages offer the choice between 2-D and 1-D math display.
The World's Richest Computational Environment
Maple delivers a vast breadth of mathematical coverage, offering high-performance computing with optimized numeric and symbolic routines. Maple 12 enriches the computational environment even further.
Highlights:
Improvements to solvers for differential equations (ODEs), partial differential equations (PDEs), and differential algebraic equations (DAEs) continue to strengthen Maple's world-leading position in numeric and symbolic differential equation solving. Enhancements include the ability to symbolically solve entire classes of ODEs for which no algorithms previously existed, and support for user-defined events in numeric solutions to DE and DAE initial value problems.
The new Dynamic Systems package offers a large selection of analytic and graphing tools for linear time-invariant systems.
Wavelet transforms have been added to the Discrete Transforms collection.
Performance improvements include fast block copy for matrices and powerful multi-dimensional data interpolation functionality.
The Student Vector Calculus package has been updated to take advantage of recent enhancements in vector calculus support inside Maple.
Various programming improvements include improved syntax for entering and indexing arrays and matrices.
Multi-threading enhancements make multi-threaded programs easier to write and more efficient.
Numerous improvements and additions include the new ability to analyze and solve systems of parameterized polynomial equations and inequalities, and enhancements to equation solving, number theory, and linear algebra.
Fully Integrated in your Existing Workflow
Maple can be integrated into your existing workflow. Maple 12 offers connectivity to many new tools, as well as enhancements to existing functionality.
Highlights:
CAD connectivity adds important analysis capabilities to CAD systems.
MATLAB(R) to Maple code translation allows you to leverage existing work.
Database connectivity gives you the ability to apply analysis and visualization tools to large datasets.
Code generation and the Maple compiler now support complex arithmetic and elementary functions.
Resources for Education
Maplesoft has developed a wide selection of resources for teachers and students.
The Teacher Resource Center provides sample applications, course material, training, and best practices, including:
Clickable Calculus(TM) applications illustrating interactive "clickable" techniques for solving problems from calculus and other subjects.
Movies and recorded seminars demonstrating clickable math techniques for a variety of subjects.
Tips and Techniques for the classroom.
Podcasts on subjects related to the use of technology in teaching and learning.
The Student Help Center is designed to help students get the most out of their Maple experiences. Resources include:
A Student Help Forum where students can get answers from experts.
Free access to the Math Oracles, a collection of online tools for solving a variety of common mathematical problems.
Training movies designed especially for students.
The Math Homework Resource Guide, a collection of recommended homework help sites.
See Also
updates/Maple12/compatibility, updates/Maple12/de, updates/Maple12/efficiency, updates/Maple12/enhancedpackages, updates/Maple12/graphics, updates/Maple12/gui, updates/Maple12/index, updates/Maple12/language, updates/Maple12/newpackages, updates/Maple12/numerics, updates/Maple12/packages, updates/Maple12/programming, updates/Maple12/symbolics
Compatibility Issues in Maple 12
The following is a brief description of the compatibility issues that affect users upgrading from Maple 11 to Maple 12.
The Multi-threaded Engine
In Maple 11, there were two separate engines shipped with Maple, one single threaded and one multi-threaded. For Maple 12, these two engines have been merged into one. Now the kernel has two modes, a single threaded mode and a multi-threaded mode. The single threaded mode is enabled by default. When a function from the Threads package is executed, the kernel enters the multi-threaded mode. It remains in multi-threaded mode until the next restart. For more information on the multi-threaded engine see the multi-threaded help page.
Numerical ODEs and stop conditions
The stop conditions facility available for numerical ODE solutions in Maple 11 and prior has been replaced by a new mechanism for handling more general events. See Events for dsolve[numeric] for more information.
Polar Plots
Plots generated by the plots[polarplot] command are now displayed with polar axes by default in the Standard Interface. It is possible to get the Cartesian axes produced in earlier versions of Maple by using the axiscoordinates=cartesian option.
See Also
Index of New Maple 12 Features, Worksheet Compatibility Issues
Maple 12 includes the following language and system changes.
Inside (), {}, [], and <>, ranges can be parsed without a beginning or end value. Literally, A[..] is evaluated to A[NULL..NULL], but if A is an Array, list, set, sequence, or string, A[..] is interpreted as the full range of A's data. Similarly A[..n] indicates the first n elements in A, and A[n..] indicates the range of data starting from n to the end of A.
The Maple command-line interface optionally stores command history between Maple sessions. Now, via history, you will have access to all Maple commands entered in previous sessions. For more information, see the `historyfile` and `historysize` options in the Maple Command and Command-line Options help page or the interface help page.
Index of New Maple 12 Features, Programming Facilities Changes in Maple 12
The Maple numeric code compiler (see Compiler) and run-time support library have been updated to support complex numerics. Complex arithmetic and calls to elementary functions of a complex argument are now supported in compiled code.
> p := proc( a :: complex, b ::
complex ) :: complex;
arcsinh(
a / I / b )
end proc:
cp := Compiler:-Compile( p ):
cp( 2.3 + 3.1 * I, I - 2.0 );
![]()
The new package RootFinding[Parametric] has been added for analyzing and solving systems of polynomial equations and inequalities depending on parameters. The package offers the ability to answer questions like the following: for which parameter values does the system have a solution, or a given number of solutions? For examples and details, see RootFinding[Parametric].
The routine fsolve has been enhanced to handle systems of procedures of more than one argument. This is the procedural equivalent of multivariate expressions.
> f := proc(x,y,z) sin(x*y-4)+cos(z); end proc:
g := proc(a,b,c) a+b+c;
end proc:
h := proc(q,r,s) (q-r)/s; end proc:
fsolve({f,g,h});
![]()
> [f,g,h](op(%));
![]()
The new routine CurveFitting[ArrayInterpolation] provides the functionality to perform linear, cubic, spline, lowest, highest, or nearest interpolation and efficient data resampling on multidimensional data.
The ifactor command accepts several new options which add the Multiple Polynomial Quadric Sieve (MPQS) method and provide enhanced access to the existing methods. The new 'mpqs' option enables direct access to the MPQS method, and the new 'mpqsmixed' and 'mixed' options enable access to a combination of factorization methods. The 'morrbril' option enables direct access to the Morrison-Brillhard method. In addition, the performance of the pollard factorization method has been enhanced.
Enhancements to Symbolic Capabilities in Maple 12, Index of New Maple 12 Features
For information on enhancements and improvements to existing packages, see Enhanced Packages in Maple 12.
This help page describes the following new packages.
Bits
CAD
Database
DynamicSystems
Security
The Bits package provides for efficient bit-wise operations in Maple. The underlying data structure for Bits is the integer. The package provides facilities for import and export type operations (splitting and joining), display, common queries, and bit-wise applied logic operations.
The CAD package provides the ability to communicate with CAD applications, allowing you to query and modify scalar values in a design. For more information on supported CAD applications see CAD.
The Database package provides methods which allow Maple to connect to an SQL database. This provides the ability to perform SQL queries and import the results into Maple. The results can be inspected manually or converted to Maple data structures. The Database package can also export data to the Database. In addition, the Database package provides Maplets to assist users unfamiliar with SQL with connecting to the database and executing queries.
The DynamicSystems package introduces an environment for creating, analyzing, simulating, and plotting linear time-invariant systems. For an overview of the various routines available in this package, see DynamicSystems.
The Security package provides a set of user-level routines for modifying and testing security settings in the Maple engine. For a detailed overview, see Security. For more information on the security features of the Maple engine, see Maple Engine Security.
Enhanced Packages in Maple 12, Index of New Maple 12 Features
For information on new Maple 12 packages, see New Packages in Maple 12.
This help page describes the following enhanced packages.
ArrayTools
CurveFitting
DEtools
DifferentialGeometry
DiscreteTransforms
LinearAlgebra
Matlab
numtheory
PDEtools
Physics
RootFinding
Statistics
Student[VectorCalculus]
The ArrayTools package has been extended by several commands for efficient Array manipulation. New commands include: BlockCopy, Diagonal, Dimensions, IsEqual, LowerTriangle, NumElems, RandomArray, RegularArray, SearchArray, Size, and UpperTriangle.
The ArrayInterpolation command for n-dimensional data interpolation has been added to the CurveFitting package. Unlike other CurveFitting commands that return interpolants, the goal of ArrayInterpolation is to provide quick and efficient data resampling and table lookup.
Two new commands, rational_equivalent and ODEInvariants, have been added to the DEtools package. The rational_equivalent command receives a third order linear ODE or a first order Abel or Riccati equation and returns an equivalent equation, of the same type, with invariants with minimal degrees, obtained using rational transformations of the independent variable combined with transformations of the dependent variable that do not change the type of the equation. The ODEInvariants command returns the so-called Wilcynski (relative) Invariants for linear ODEs as well as (relative) invariants for nonlinear ODEs obtained using an innovative derivation of the Wilcynski invariants.
In the Tensor subpackage, the CurvatureTensor command has been changed to conform with the most common conventions in the differential geometry and general relativity literature. The SectionalCurvature command has been added and the HodgeStar command has been rewritten for greater efficiency. The LieAlgebraCohomology command in the LieAlgebra package now supports calculations of Lie algebra cohomology with coefficients in a representation.
The DiscreteTransforms package now has numerical wavelet transforms. This includes the ability to obtain the coefficients for many well-known classes of Wavelets for varying filter lengths, including Daubechies and Bi-Orthogonal Spline wavelets, and the application of these wavelets on discrete data. For more information, see DiscreteTransforms.
A tool for visualization of wavelets has also been provided as DiscreteTransforms[WaveletPlot].
The LinearAlgebra package contains a new command KroneckerProduct for computing the Kronecker tensor product of two Matrices.
The Matlab package contains new commands, FromMatlab and FromMFile, that aid in converting Matlab code to Maple. Programs written in Matlab can now be translated directly to Maple syntax. In addition to basic operations, Matrix indexing and Matrix construction, over 100 Matlab commands automatically map to equivalent implementation in Maple.
The numtheory package contains a new command, iscyclotomic, which tests whether a polynomial is cyclotomic. If the polynomial is cyclotomic, the command can return the order of the polynomial.
Six new commands were added to PDEtools; Euler representing Euler's operator, ConservedCurrents to compute conserved currents (also called conservation laws), IntegratingFactors to compute related generalized integrating factors, ConservedCurrentTest and IntegratingFactorTest for testing whether given expressions are conserved currents or integrating factors, and Laplace for exploiting Laplace invariants for solving some classes of 2nd order linear PDEs in two independent variables.
The FeynmanDiagrams command now computes the tree level diagrams corresponding to the given interaction Lagrangian.
The ChangeBasis command of the Vectors subpackage of Physics, which formerly would only change the projection basis from a vector, now optionally changes also the coordinates used in its components to the natural coordinates of the indicated new basis.
Two new conversion routines, for converting vectors from the format of one of the Physics[Vectors] and VectorCalculus packages to the format of the other package, were implemented.
The new subpackage RootFinding[Parametric] for analyzing and solving systems of polynomial equations and inequalities depending on parameters has been added to the RootFinding package. It offers the ability to answer questions such as the following: for which parameter values does the system have a solution, or a given number of solutions? For examples and details, see the RootFinding[Parametric] help page.
The Statistics package has been expanded to include a wider variety of plotting functions as well as a new function for data manipulation. The ScatterPlot function has enhanced functionality, enabling you to plot one-dimensional data and with the jitter option visualize the data easily. The SymmetryPlot function creates a visual representation of the symmetry, or lack thereof, of a one-dimensional data set about its median. The AgglomeratedPlot and SunflowerPlot functions create plots that simplify viewing large quantities of data in one, two and three dimensions. Similarly, the Excise function removes data in large data sets based on the density of point clustering.
The main VectorCalculus package underwent a major overhaul for Maple 11. The migration of these updates to the Student[VectorCalculus] package has been completed for Maple 12.
The example worksheet examples,VectorCalculus has a lot of useful information about the changes that have been made to VectorCalculus, and now to Student[VectorCalculus]. To summarize, however, the fundamental changes relate to the information that mathematicians and scientists carry around in their heads when doing vector calculus, namely, the information about the spaces in which the various vectors lie.
To demonstrate, consider the tangent spaces to a curve (or surface). Vectors from the tangent space to the curve at different points should not be treated as being in the same space. To manage this, the notion of a "rooted vector" was introduced in Maple 11. A vector arising from a tangent calculation, for example, must carry with it the point at which it was computed. This information is stored as a vector space attached to the vector. Vectors in this vector space can be compared, dotted, added, etc, but vectors coming from different tangent spaces cannot be--at least not directly; the VectorCalculus package does not have the facility to map between such vector spaces.
Additionally, the association between points and vectors relies on the coordinate vectors being independent of position. This is true only of Cartesian coordinates. Hence, a "vector" in, for example, polar coordinates, which does not carry information about where it should be attached, is really a point, not a vector, and cannot take part in the usual vector operations, such as dot product. In Maple, these objects are called "free vectors" (as they are not bound to any particular root point).
See the examples,VectorCalculus worksheet for more details.
Index of New Maple 12 Features, New Packages in Maple 12, Updates to Differential Equation (DE) Solvers in Maple 12
Maple 12 includes the following changes to programming facilities.
Round brackets can be used to index into Array, Matrix, and Vector data structures. For full details refer to ?rtable_indexing. Highlights include:
the ability to grow arrays past their initially declared bounds.
the ability to reference multi-dimensional arrays with a single integer, making looping over all elements easier and more efficient.
compatibility with the way MATLAB indexes arrays.
The zip command now accepts a prefix option: zip[sparse], and zip[dense] indicating whether the zeros in the sparse objects should be ignored or included.
> zip[sparse]((x,y)->x+y+1,Array(1..3,{1=1},storage=sparse),
Array(1..4,{2=2},storage=sparse));
![]()
> zip[dense]((x,y)->x+y+1,Array(1..3,{1=1},storage=sparse),
Array(1..4,{2=2},storage=sparse));
![]()
The max and min commands now accept lists and rtable-based arrays as arguments. The list or array is scanned to find the maximum or minimum object contained inside.
> max( [-5,1,17], <12,-32,4> );
![]()
> min( <12,-32,4> );
![]()
Index of New Maple 12 Features, Language and System Updates in Maple 12
The differential equation theme for Maple 12 (exact solutions) is the exploration of different transformations for mapping given equations into ones the system knows how to solve. Using this approach, a new algorithm was developed by our research team, for 3rd order linear Ordinary Differential Equations (ODEs), that solves for the first time the entire 3F2, 2F2, 1F2 and 0F2 hypergeometric classes of equations in terms of hypergeometric and MeijerG functions [1]. The same idea is used for solving an entire family of 2nd order nonlinear ODEs parametrized by two arbitrary functions, where the solutions can be derived from the solutions of a related 3rd order linear ODE. A similar approach is used to solve the entire nonlinear 1st order Abel AIL class exploring hypergeometric functions.
Two new commands, rational_equivalent and ODEInvariants, have been added to the DEtools package, the latter returning the so-called Wilcynski Invariants for linear ODEs as well as an innovative derivation based on them that results in invariants for nonlinear ODEs.
For Partial Differential Equations, six new commands were added to PDEtools. These commands include: one representing Euler's operator, another to compute conserved currents, another for related generalized integrating factors, and one for exploiting Laplace invariants for solving some classes of 2nd order linear PDEs in two independent variables.
Regarding numerical solutions for ODEs, there are a significant number of improvements such as the new ability to handle user-defined events, parametrized problems, and the definition of discrete variables.
New solving algorithms for the entire 3F2, 2F2, 1F2 and 0F2 hypergeometric classes of equations were implemented. These new solvable classes are the ones you obtain from the standard pFq equations,
> PDEtools:-declare(y(x), prime = x);
![]()
![]()
> for pFq
in [hypergeom([], [d,e],
x), hypergeom([c], [d,e],
x), hypergeom([b,c], [d,e], x), hypergeom([a,b,c], [d,e], x)]
do
FunctionAdvisor(DE, pFq, y(x));
od;
![]()
![]()


by changing variables using a composition of the general transformations
> x -> R(x), y -> P(x)*y;
![]()
where R(x) is a rational function and P(x) is arbitrary, and
> x -> (a*x^k+b)/(c*x^k+d);
![]()
that is, a power composed with a Mobius transformation where a, b, c, d, k are arbitrary constants with respect to x. Hence, the Maple system can now solve the equivalence problem to these hypergeometric equations under rational transformations and also in the case where these transformations are composed with fractional or symbolic powers. These results by our research team are new in the literature [1].
Examples
The following equation admits three pFq hypergeometric solutions computed after determining a rational transformation relating the equation to the 0F2 equation (the first one in the output of the FunctionAdvisor above)
> diff(y(x), x, x, x) = - 6/x*(x-3)/(x-2)*diff(y(x), x, x) - 6/x^2*(x^2-6*x+10)/(x-2)^2*diff(y(x), x) - (x-1)*(x-2)^3/x^11*y(x);
![]()
> dsolve(%);
![]()


When the hypergeometric parameters are such that there are not three independent hypergeometric solutions, the new algorithm uses MeijerG functions to represent the missing ones, as in:
> diff(y(x), x, x, x) = -(12*x^2-5*x+1)/x^2/(-1+2*x)*diff(y(x), x, x) + 1/x^3*(20*x^2-c-5*x+2*c*x-24*x^3)/(-1+2*x)^2*diff(y(x), x) + c*y(x)/x^4/(-1+2*x)^2;
![]()
> dsolve(%);

![]()
Second order nonlinear equations appear in the mathematical formulation of problems in many areas. The methods of symmetries and integrating factors, implemented in Maple in previous releases, are the most important ones. However, large ODE classes escape these methods or are more properly solved by other means. For example the class of 2nd order nonlinear ODEs that can be obtained by reducing third order linear ODEs exploiting their scale invariance, admits explicit and tidy solutions that can only be obtained if that relationship - instead of the symmetries - is unveiled. For Maple 12, a related new algorithm was developed and implemented for solving that class, defined around the nonlinear equation
> diff(y(x),x,x) = -(3*y(x) + c[2](x))*diff(y(x),x) - y(x)^3 - c[2](x)*y(x)^2 - c[1](x)*y(x) - c[0](x);
![]()
where the c[j](x) are arbitrary functions. The solution to this equation can be expressed in terms of the solutions of a third order linear equation:
> dsolve(%);

Note the derivative of a DESol structure in the numerator of the right-hand side. This nonlinear ODE that the system can now solve generates an ODE class when it is transformed using
> x -> F(x), y -> P(x)*y;
![]()
The actual family of equations that is now solvable in Maple 12, for any value of the functions F(x) and P(x), is
> PDEtools:-declare((F, P)(x));
![]()
![]()
> diff(y(x), x,x) = ((diff(F(x), x,x)*P(x) - 2*diff(F(x),x)*diff(P(x),x) - diff(F(x),x)^2*c[2](F(x))*P(x))/diff(F(x),x)/P(x) - 3*diff(F(x),x)*P(x)*y(x))*diff(y(x),x) - diff(F(x),x)^2*P(x)^2*y(x)^3 - diff(F(x),x)*(3*diff(P(x),x) + c[2](F(x))*P(x)*diff(F(x),x))*y(x)^2 + (diff(F(x), x,x)*diff(P(x),x) - diff(F(x),x)*diff(P(x), x,x) - diff(F(x),x)^2*c[2](F(x))*diff(P(x),x) - c[1](F(x))*P(x)*diff(F(x),x)^3)/diff(F(x),x)/P(x)*y(x) - c[0](F(x))*diff(F(x),x)^2/P(x);

The new algorithm recognizes whether a given equation is of this form and if so it computes the values of F(x), P(x) and the c[j](x), and with them constructs a 3rd order linear ODE equivalent to the given 2nd order nonlinear equation. This algorithm is automatically combined by dsolve with the new algorithms for computing hypergeometric solutions for 3rd order linear ODEs, resulting in new solutions available in Maple 12 for a large number of 2nd order nonlinear ODEs that were formerly considered "unsolvable".
Examples
This second order nonlinear ODE is solved by transforming it into a third order linear ODE that admits Liouvillian (trigonometric) solutions
> diff(y(x), x,x) = (6/(x^2+1)^2*x*y(x) - (3*x^2-1)/(x^2+1)/x)*diff(y(x),x) - 4*x^2/(x^2+1)^4*y(x)^3+4*x^2/(x^2+1)^4;
![]()
> dsolve(%);



![]()
The following nonlinear equation is solved the same way, but the related third order linear ODE only admits hypergeometric solutions and so is solved using the corresponding new algorithms for that problem in Maple 12
> diff(y(x), x,x) = -3*diff(y(x),x)*y(x)-y(x)^3+1/x;
![]()
> dsolve(%);



A new algorithm, solving the entire Abel Inverse Linear (AIL) class of equations (see references) in terms of hypergeometric functions, was developed and implemented for Maple 12. This class of equations is the one you obtain from the standard AIL equation
> diff(y(x),x) = (a[0] + a[1]*y(x) + a[2]*y(x)^2 + a[3]*y(x)^3)/((s[0] + s[1]*x)*y(x) + r[0]+r[1]*x);

under general transformations
> x -> F(x), y -> (P(x)*y + Q(x)*y)/(S(x)*y + T(x)*y);
![]()
where F is rational and R, P, Q, S, T are arbitrary. The novelty with regards to previous Maple releases where this same class was partially solved is that in Maple 12 any equation obtained using a rational form of F(x) is now solved.
Examples
The following equation, involving only rational coefficients, admits a solution that involves only combinations of fractional and integer powers after all hypergeometric functions got simplified
> diff(y(x),x) = 1/2*1/x*(-x+5/2)/(-x+2)^3*y(x)^3+(1/2*x-3)/x/(2-x)^2*y(x)^2+1/x/(-x+2)*y(x);

> dsolve(%);

> odetest(%, %%); # verify this result - see ?odetest
![]()
Six new commands are available in PDEtools: Laplace, Euler, ConservedCurrents, ConservedCurrentTest, IntegratingFactors, and IntegratingFactorTest.
The Laplace command explores Laplace invariants to compute the general solution in terms of arbitrary functions to a single 2nd order linear PDE in two independent variables.
Examples
> PDEtools:-undeclare(prime);
![]()
> PDEtools:-declare(u(x,y), _F1(x), _F2(y));
![]()
![]()
![]()
> pde := diff(u(x, y), x, y)-2*u(x, y)/(x+y)^2;
![]()
> sol := PDEtools:-Laplace(pde, u(x,y));
![]()
This new Laplace command is automatically invoked by pdsolve, so the same solution above, in terms of two arbitrary functions of one variable, _F1(x) and _F2(y), is returned by pdsolve. PDE solutions can be verified using pdetest
> pdetest(sol, pde);
![]()
Given a system
= 0 consisting of N
equations pde[n], n = 1..N, involving M
independent variables x[1], x[2], ... = X, and where the dependent variables are u[1], u[2], ... = U, with dU denoting the set of
partial derivatives of U, conserved currents are
expressions J[
, m](X, U, dU)
each of which satisfy: d/dx[1]
J[
, 1](X, U, dU) + d/dx[2] J[
, 2](X, U, dU) + ... = Divergent J[
, m] = 0, where m = 1..M and d/dx[m]
represents the total derivative with respect to x[m]. The conserved currents coincide with the
traditional first integrals when there is only
one independent variable, so that
is a system of ODEs.
The pair of commands ConservedCurrents and ConservedCurrentTest respectively compute these conserved currents and verify whether a given expression is or is not a conserved current of a given PDE system.
Analogously, the generalized
integrating factors are expressions
[
, n](X,
U, dU) such that
[
, n] pde[n] = Divergence J[
] = 0,
so J[
] is a
conserved current. The pair of commands IntegratingFactors and IntegratingFactorTest can respectively compute
these generalized integrating factors and verify the result for correctness.
Examples
Consider the following PDE "system" consisting of a single pde
> with(PDEtools):
U := diff_table(u(x,t)):
declare(U[]);
![]()
> pde := U[t,t] + U[x,x] + U[x]*U[];
![]()
The conserved currents of pde are computed as follows and depend on arbitrary functions
> J[alpha] := ConservedCurrents(pde);


To verify these results use
> map(ConservedCurrentTest, [J[alpha]], pde);
![]()
The conserved currents are related to the generalized integrating factors
[
] via
[
, n] pde[n] = Divergence J[
] = 0.
These are the
[
]
corresponding to the J[
]
computed above
> mu[alpha] := IntegratingFactors(pde);
![]()
To verify for correctness these integrating factors use
> map(IntegratingFactorTest, [mu[alpha]], pde);
![]()
There were a significant number of improvements made for numerical ODE solution for this release.
The default ODE and DAE IVP integrators now have the ability to handle user-defined events. These events are an extension to stop conditions (which are now deprecated), and have the ability to execute code when an event occurs, and the ability to perform event iteration (i.e. when one event triggers another).
In addition, events have several interactive features, such as the ability to query the event that fired, and obtain the solution value at the time the event occurred.
For more information, see dsolve,numeric,Events.
The ODE and DAE IVP integrators have been extended to handle parametrized problems. This means that a dsolve procedure can be formed for a class of ODE or DAE, and the parameters can be adjusted, and different solutions obtained interactively.
For more information, see dsolve,numeric,interactive.
The default ODE and DAE IVP integrators now allow the definition of discrete variables as part of the problem description. These discrete variables can be of float, integer or boolean type, and are most useful in combination with event handling.
For more information, see dsolve,numeric,Events.
dsolve,numeric, dsolve,numeric,Events, dsolve,numeric,interactive, Index of New Maple 12 Features, PDEtools
Maple 12 includes numerous efficiency improvements. Some highlights where dramatic speed-ups were achieved are described below.
Several enhancements were made to zip.
Direct hardware-float callbacks are recognized for certain routines. These can bypass much of the overhead of ordinary interpreted function evaluation resulting in speed similar to that of compiled code. The following now takes 0.084 seconds in Maple 12 compared to 3.900 seconds on the same machine in Maple 11.
> N := 1000:
A := Matrix(1..N,1..N,datatype=float[8]):
B := Matrix(1..N,1..N,datatype=float[8]):
time(zip(`+`,A,B));
![]()
Special case detection for some built-in non-hardware float operations. For example, the following now takes 0.104s compared to 3.532s before.
> N := 1000:
A := Matrix(1..N,1..N):
B := Matrix(1..N,1..N):
time(zip(`+`,A,B));
![]()
Automatic procedure inlining is applied when possible. Most arrow-operator functions bypass normal function evaluation overhead resulting in better speed. The following now takes 1.104s compared to 4.248s before.
> N := 1000:
A := Matrix(1..N,1..N):
B := Matrix(1..N,1..N):
time(zip((x,y)->x+y+1,A,B));
![]()
With the introduction of round bracket array indexing, certain block-copy operations can be done much more efficiently as no intermediate object needs to be created. For example the second timing below using round brackets for indexing into A and B is much faster than the first timing, which uses square brackets. The result of a square bracket index assignment is always the assigned value so an intermediate object needs to be computed. The result of a round bracket index assignment is always the whole array, so, if the right side is a large block subselection, the intermediate copy can be bypassed in most cases resulting in memory savings.
> N := 4000:
A := LinearAlgebra:-RandomMatrix(N,N):
B := Matrix(N,N):
t := time():
B[1001..4000,1001..4000]:=A[1..3000,1..3000]:
time()-t;
![]()
> t := time():
B(1001..4000,1001..4000):=A(1..3000,1..3000):
time()-t;
![]()
The solve command takes further advantage of the FGb library, the world's most efficient Groebner bases engine. It also uses a new, faster sparse exact linear system solver for systems with rational coefficients.
Here is an example of a small dimension 1 system for which the solve command in Maple 11 was unable to find a solution. A solution could be found using FGb by calling the Groebner[Solve] command. Now in Maple 12, solve uses FGb and finds the 22 solutions in about 30 seconds.
> symmetric5:={d^5-e^5,c^5-d^5,b^5-c^5,a^5-b^5,a^4*b+b^4*c+c^4*d+d^4*e+a*e^4}:
time(solve(symmetric5,{a,b,c,d,e}));
![]()
In Maple 10, before the FGb library was used by the Groebner package, solving this system would have taken about twice as long on the same machine.
Expansion of large polynomials via the expand command has been improved. The following is a subset of a larger example. The original example used to take over 1400s to compute and now finishes in under 200s on the same machine. The example below has about a 3 times speed-up compared to Maple 11.
> ee :=
(-12*c^2*x^2*f+18*c^2*x^2*b+18*c*x^2*g*f+18*x^2*b*a^2+18*c^2*x^2*a-12*x^2*b^2*f-12*c^2*x^2*g+18*x^2*b^2*a+18*c*x^2*b^2-4+6*g-12*x*a*g-6*x^3*b*a^2-27*x^2*g*f-12*x*a*f+63*x*g*f-12*c*x*f+12*x*a*g^2-6*c*x^2*a*f-6*c*x^2*b*f-6*c*x^2*b*g+6*c*x*g*f-6*c*x^2*a*g-6*x^2*b*a*f+6*x*b*g*f-6*x^2*b*a*g+6*x*a*g*f-18*x*b*a*f-18*x*b*a*g-18*c*x*a*f-18*c*x*a*g-18*c*x*b*f+54*c*b*a*x-18*c*x*b*g+4*x^3*b^3+4*x^3*a^3+4*c^3*x^3+6*c^2*x^2+6*x^2*b^2+18*x^2*f-54*c*b*a*x^2+9*x+6*f+9*x*b*a+24*c*b*a*x^3+18*x^2*b*g*f+18*x^2*a*g*f+18*c*x^2*a^2-12*x^2*b^2*g-12*x^2*a^2*f-12*x^2*a^2*g)^6:
time(expand(ee));
![]()
Index of New Maple 12 Features
Maple 12 includes enhancements to its symbolic capabilities in the following areas.
value
RegularChains
Zeilberger's Algorithm
Minimal Additive Decomposition
Deterministic Set Ordering
Improvements to solve
Equate handles vectors of the Physics[Vectors] package
The value command now understands any function whose name starts with the % character as being an inert function. This new feature provides inert representations for any Maple or user defined function.
Examples
Define for instance a function
> F := x -> x^2+1;
![]()
> F(a);
![]()
So, you can now compute with an inert representation for this function and only perform the mapping when desired, by using value.
> %F(a);
![]()
> value(%);
![]()
The same inert representation mechanism works with any Maple function and any differentiation, expansion, or printing rule defined by using the extension mechanism (such as routines of the form `diff/foo`) are automatically taken into account by the system.
> %intat(exp(x)+1,x=H(x));

> value(%);
![]()
> %eval(%diff(%exp(x), x), x = 0);
![]()
> value(%);
![]()
The RegularChains library has two new subpackages: ConstructibleSetTools and ParametricSystemTools. ConstructibleSetTools offers a set of tools to compute with semialgebraic sets which are also known as constructible sets. ParametricSystemTools offers new tools to study the solutions of polynomial systems with parameters in their coefficients. Using the new commands DiscriminantSet and ComprehensiveTriangularize you can answer questions such as: for which values of the parameters does the polynomial F have solutions? Finitely many solutions? Exactly N solutions, for a given N?
A new version of the Zeilberger algorithm for definite hypergeometric summation has been added to the SumTools[Hypergeometric] package. This new version is based on universal denominators and is faster than the other version based on Gosper's algorithm.
Similarly, the differential analog of Zeilberger's algorithm in the DEtools package has been extended by a variant of the algorithm based on universal denominators. This variant is available in the new command DEtools[Zeilberger] via an optional argument.
A version of Zeilberger's summation algorithm has also been added for the q-difference case. The implementation of the q-Zeilberger algorithm has been added to the QDifferenceEquations package. This algorithm is available in the new command QDifferenceEquations[Zeilberger].
The SumTools package function SumDecomposition has been enhanced to allow more control over the type of minimization performed for rational function inputs.
In Maple 12 sets have a deterministic ordering that is not based on run-time properties. This means that when {b,c,a} is input, the order will be fixed to {a,b,c} no matter when you created that set, and no matter what operating system you are using.
Sets in Maple have historically been sorted by the addresses of the underlying data structures contained in the set. This meant that in any given session the same set might appear in different orders. While this is not incorrect, it did occasionally lead to difficulties with repeatability and testing. Because set-order was a major source of non-determinism in Maple, with the new order you will more reliably get the same output given the same input when repeating a calculation in a fresh Maple session.
The old set order can be obtained by using the commandline option --setsort=0. Similarly, the new set order can be enabled with --setsort=1. Variations of --setsort=0..8 are available if you want to purposefully introduce ordering differences into your code to test its robustness.
The solve command takes further advantage of the FGb library, the world's most efficient Groebner bases engine. It also uses a new, faster sparse exact linear system solver for systems with rational coefficients.
Equate can now receive two algebraic structures, u and v, representing vectors of the Vectors subpackage of the Physics package. In this case the list of equations returned is constructed by equating the components of u and v. When the vectors u and v are projected onto different orthonormal bases, the second vector is first reprojected in the basis of the first, and then the components are equated.
Examples
> with(Physics[Vectors]):
Equate the components of two vectors.
> R := x*_i + y*_j + z*_k;
![]()
> V := -z*_i + (y-x)*_k;
![]()
> Equate(R, V);
![]()
When the two vectors are not projected onto the same orthonormal basis, the second one is reprojected onto the basis of the first one. Here S is the same vector as R but expressed in spherical coordinates and the corresponding orthonormal basis. (See Vectors.)
> S := r*_r;
![]()
> Equate(R, S);
![]()
Index of New Maple 12 Features
Maple 12 Graphical User Interface (GUI) Updates
This page provides an overview of the following new and updated GUI features. These features are only available in the Standard interface.
CAD Link Assistant
Color Picker
Code Edit Region
Command Completion Templates
Document Layout Templates
Embedded Component Enhancements
Exploration Assistant
Header/Footer
Help System Examples
Startup Code Region
Table Colors
Web Resource Access
Worksheet Magnification
CAD Link Assistant
A new CAD Link Assistant allows for communication with CAD applications to read and modify the scalar properties of a model. The CAD Link Assistant is available on Windows(R) operating systems only. To open the CAD Link Assistant, go to Tools > Assistants > CAD Link...
Color Picker
The toolbar items for changing the foreground and background color of text have been enhanced. You can now select a color from a predefined set of colors, choose from a RGB wheel of colors, increase or decrease the RGB levels, or select a color from an existing color within the Maple interface. For details and instructions for the new color picker, see drawingtools.
Code Edit Region
The Code Edit Region lets you enter Maple procedures within a confined region. You can execute the procedure and then collapse the region to suppress the Maple code. Advancing the cursor within the Code Edit Region is done by pressing the Enter key. Collapsing, expanding, and executing procedures within this region are done using the context-sensitive menu. For more information, see CodeEditRegion.
Command Completion Templates
Command completion has been extended to include templates for calling sequences.
Command Completion in Maple 11

Command Completion in Maple 12

For more information, see Complete Command.
Document Layout Templates
Several new Task Templates have been added for creating professional Maple documents. Templates include technical reports, design specifications documents, and an interactive application. They make use of documentation features such as tables, sections, bookmarks, hyperlinks, and headers and footers to help you create a custom document including both Maple computations and text. To access a list of these templates, from the Tools menu, select Tasks > Browse and open the Document Layout tab.
Embedded Component Enhancements
Several new embedded components have been added: Dial Component, Meter Component, Radio Button Component, Rotary Gauge Component, Volume Gauge Component.
Certain components now have the option of being grouped. When a component is grouped, it acts as a radio button where all components of the same group name are de-selected when one is selected. More information is available in the Radio Button Component, Check Box Component, or Toggle Button Component help pages.
Sliders support floating point tickmark values and spacing. See the Slider Component help page.
Actions can now be performed using the Plot Component. An action can be performed when a 2-D plot is clicked, dragged, or when the drag ends. More information is available at Plot Component.
For a complete list of embedded components, see EmbeddedComponents.
Exploration Assistant
The Exploration Assistant lets you explore various parameter values for an expression. Place the cursor in a math expression and select Explore from the Edit menu. For details, see Explore.
Header/Footer
You can now insert predefined or custom headers and footers when printing a worksheet or document. For more information, see Headers and Footers.
Help System Examples
The Examples section of Maple help pages can be viewed in 2-D or 1-D math input. The default is 1-D. To change the global setting to display examples in 2-D math, toggle Display Examples with 2D math from the View menu.
Startup Code Region
The Startup Code region allows you to enter Maple code that will be executed every time the document is opened. Startup code can include loaded packages, defined variables and procedures, and any other Maple commands. The commands entered in the Startup Code region do not appear in the Maple document and can only be accessed by opening the Startup Code editor. For more information, see Startup Code.
Table Colors
You can define a background color for one or multiple cells in a table. Select the cell or cells you want to color, then click the context menu item Table > Cell Color... and choose a color. For more information, see Overview of Tables.
Web Resource Access
You can access the updated Student Help Center, Teacher Resource Center, and other web-based resources from within Maple. From the Help menu, select On the Web > User Resources.
Worksheet Magnification
You can now set the magnification of a Maple worksheet to 125%. For more information about the new shortcut keys associated with the magnification options, see Maple Worksheet Shortcut Keys and Quick Help and then select the shortcut keys help topic for your platform.
See Also
Index of New Maple 12 Features