 Enhancements to Symbolic Capabilities in Maple 12 - Maple Programming Help

# Online Help

###### All Products    Maple    MapleSim

Home : Support : Online Help : System : Information : Updates : Maple 12 : updates/Maple12/symbolics

Enhancements to Symbolic Capabilities in Maple 12

 Maple 12 includes enhancements to its symbolic capabilities in the following areas.

value and Inert Functions

 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}{≔}{x}{↦}{{x}}^{{2}}{+}{1}$ (1)
 > F(a);
 ${{a}}^{{2}}{+}{1}$ (2)
 So, you can now compute with an inert representation for this function and only perform the mapping when desired, by using value.
 > %F(a);
 ${?}$ (3)
 > value((3));
 ${{a}}^{{2}}{+}{1}$ (4)
 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));
 ${{\int }}_{{}}^{{H}{}\left({x}\right)}\left({{ⅇ}}^{{x}}{+}{1}\right)\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{x}$ (5)
 > value((5));
 ${H}{}\left({x}\right){+}{{ⅇ}}^{{H}{}\left({x}\right)}$ (6)
 > %eval(%diff(%exp(x), x), x = 0);
 ${?}$ (7)
 > value((7));
 ${1}$ (8)

New Tools in Regular Chains

 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$?

Zeilberger's Algorithm

 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].

Minimal Additive Decomposition

 The SumTools package function SumDecomposition has been enhanced to allow more control over the type of minimization performed for rational function inputs.

Deterministic Set Ordering

 In Maple 12 sets have a deterministic ordering that is not based on run-time properties. This means that when $\left\{a,b,c\right\}$ is input, the order will be fixed to $\left\{a,b,c\right\}$ 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.

Improvements to solve

 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 handles vectors of the Physics[Vectors] package

 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;
 ${R}{≔}{x}{}{\mathrm{_i}}{+}{y}{}{\mathrm{_j}}{+}{z}{}{\mathrm{_k}}$ (9)
 > V := -z*_i + (y-x)*_k;
 ${V}{≔}{-}{z}{}{\mathrm{_i}}{+}\left({y}{-}{x}\right){}{\mathrm{_k}}$ (10)
 > Equate(R, V);
 $\left[{x}{=}{-}{z}{,}{y}{=}{0}{,}{z}{=}{y}{-}{x}\right]$ (11)
 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;
 ${S}{≔}{r}{}{\mathrm{_r}}$ (12)
 > Equate(R, S);
 $\left[{x}{=}{r}{}{\mathrm{sin}}{}\left({\mathrm{\theta }}\right){}{\mathrm{cos}}{}\left({\mathrm{\phi }}\right){,}{y}{=}{r}{}{\mathrm{sin}}{}\left({\mathrm{\theta }}\right){}{\mathrm{sin}}{}\left({\mathrm{\phi }}\right){,}{z}{=}{r}{}{\mathrm{cos}}{}\left({\mathrm{\theta }}\right)\right]$ (13)

 See Also