Advanced Math

Maple 18 includes numerous cutting-edge updates in a variety of branches of mathematics:

 

Fractals

Maple 18 features a new package for generating Fractals. This includes various fractal generators, such as BurningShip, Julia, Lyapunov, Mandelbrot, and Newton. For more, see Fractals in Maple 18.

BurningShip 

Julia

Lyapunov  

Mandelbrot

Newton

HyperlinkImage  

HyperlinkImage  

HyperlinkImage  

HyperlinkImage  

HyperlinkImage  

 

Graph Theory

Several improvements and enhancements have been made to the GraphTheory package including the new Latex command for generating code for displaying a graph using the LaTeX picture environment. 

 

For more, see Updates to Graph Theory

 Image 

 

Group Theory

There are numerous improvements for Group Theory, including a new library of Perfect Groups. Other new commands include: 

  • AbelianInvariants: Compute the Abelian invariants of a finitely presented group.
  • CycleIndexPolynomial: Return the degree of a permutation group.  
  • PresentationComplexity: Return a measure of the complexity of a presentation of a finitely presented group.  
  • Simplify: Simplify the presentation for a group.
> G := GroupTheory:-Group(Perm([[1, 2]]), Perm([[2, 3, 4]])); 1
 
PermutationGroup({thismodule, object}, )
 
> GroupTheory:-CycleIndexPolynomial(G, [a, b, c, d]); 1
 
`+`(`*`(`/`(1, 24), `*`(`^`(a, 4))), `*`(`/`(1, 8), `*`(`^`(b, 2))), `*`(`/`(1, 4), `*`(b)), `*`(`/`(1, 3), `*`(c)), `*`(`/`(1, 4), `*`(d)))
 

For more details, see Updates to Group Theory.

 

Numerical Integration with Cuba Library

Maple 18 provides more methods for numerical integration, adding four routines for high-dimensional numerical integration that rely on the Cuba library for multidimensional numerical integration.

 Example

> spikes := Statistics:-Sample(Uniform(0, 1), [6, 4]); 1
 
spikes := Matrix(%id = 18446744078088539662)
 
> integrand := add(mul(ln(`+`(`*`(1.7, `*`(abs(`+`(x[i], `-`(spikes[i, j]))))))), i = 1 .. 6), j = 1 .. 4)
 
`+`(`*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[1], `-`(HFloat(0.8147236863931789)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[2], `-`(HFloat(0.9057919370756192)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[3], `-`(...
`+`(`*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[1], `-`(HFloat(0.8147236863931789)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[2], `-`(HFloat(0.9057919370756192)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[3], `-`(...
`+`(`*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[1], `-`(HFloat(0.8147236863931789)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[2], `-`(HFloat(0.9057919370756192)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[3], `-`(...
`+`(`*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[1], `-`(HFloat(0.8147236863931789)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[2], `-`(HFloat(0.9057919370756192)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[3], `-`(...
`+`(`*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[1], `-`(HFloat(0.8147236863931789)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[2], `-`(HFloat(0.9057919370756192)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[3], `-`(...
`+`(`*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[1], `-`(HFloat(0.8147236863931789)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[2], `-`(HFloat(0.9057919370756192)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[3], `-`(...
`+`(`*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[1], `-`(HFloat(0.8147236863931789)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[2], `-`(HFloat(0.9057919370756192)))))))), `*`(ln(`+`(`*`(1.7, `*`(abs(`+`(x[3], `-`(...
 
> region := [seq(x[i] = 0 .. 1, i = 1 .. 6)]; 1
 
[x[1] = 0 .. 1, x[2] = 0 .. 1, x[3] = 0 .. 1, x[4] = 0 .. 1, x[5] = 0 .. 1, x[6] = 0 .. 1]
 
> int(integrand, region, 'numeric', 'epsilon' = 0.1e-2, 'method = _CubaSuave', 'methodoptions = [flatness = 1, nnew = 10000]'); 1
 
HFloat(1.5294370231579368)

 

QDifferenceEquations

The QDifferenceEquations package includes two new commands for working with q-difference operators. 

> L := `+`(`*`(`+`(`*`(`^`(x, 2)), `-`(1)), `*`(Q)), `+`(`-`(`*`(`^`(q, 2), `*`(`^`(x, 2)))), 1)); -1
 

Closure computes the closure in the ring of linear q-difference operators with polynomial coefficients.

> C := QDifferenceEquations:-Closure(L, Q, x, q)
 
[`+`(`*`(`+`(`*`(`^`(x, 2)), `-`(1)), `*`(Q)), `-`(`*`(`^`(q, 2), `*`(`^`(x, 2)))), 1), `+`(`*`(`+`(`-`(`*`(q, `*`(x))), `-`(1)), `*`(`^`(Q, 2))), `*`(`+`(`*`(`^`(q, 3), `*`(x)), `*`(`^`(q, 2)), `*`(q...
[`+`(`*`(`+`(`*`(`^`(x, 2)), `-`(1)), `*`(Q)), `-`(`*`(`^`(q, 2), `*`(`^`(x, 2)))), 1), `+`(`*`(`+`(`-`(`*`(q, `*`(x))), `-`(1)), `*`(`^`(Q, 2))), `*`(`+`(`*`(`^`(q, 3), `*`(x)), `*`(`^`(q, 2)), `*`(q...

Desingularize computes a multiple of a given q-difference operator with fewer singularities.

> M := QDifferenceEquations:-Desingularize(L, Q, x, q)
 
`+`(`*`(`^`(Q, 2)), `*`(`+`(`-`(`*`(`^`(q, 2))), `-`(1)), `*`(Q)), `*`(`^`(q, 2)))
 

For details, see Q-Difference Equation in Maple 18.

 

RootOf

There have been several ease of use enhancements made to the function RootOf, including with numeric, interval, and index selectors. 

> allvalues(RootOf(`+`(`*`(`^`(x, 2)), `-`(x), `-`(1)), `/`(1, 2)))
 
`+`(`*`(`/`(1, 2), `*`(`^`(5, `/`(1, 2)))), `/`(1, 2)), `+`(`/`(1, 2), `-`(`*`(`/`(1, 2), `*`(`^`(5, `/`(1, 2))))))
 
> RootOf(`+`(`*`(`^`(x, 2)), `-`(x), `-`(1)), 1 .. 2)
 
RootOf(`+`(`*`(`^`(_Z, 2)), `-`(_Z), `-`(1)), 1 .. 2)
 
> evalf(RootOf(`+`(`*`(`^`(_Z, 2)), `-`(_Z), `-`(1)), 1 .. 2))
 
1.618033989
 

For more on improvements to RootOf in Maple 18, see the RootOf updates page.