New Features in Maple 2018 - Differential Equations - Maplesoft

What's New in Maple 2018

Differential Equations

Maple 2018 continues to push the frontiers of differential equation solving, with new methods that enable Maple to find closed-form solutions to new classes of problems. What follows below describes the novelties in solving nonlinear Ordinary Differential Equations of second order, as well as the new differential elimination package DifferentialThomas. For partial differential equations with boundary condition (PDE and BC), see the corresponding What’s New in Partial Differential Equations.  

Nonlinear Ordinary Differential Equations of 2nd order that do not admit Lie point symmetries

Maple is the uncontested leader for computing symbolic solutions to differential equations, and Maple 2018 extends its lead in computing closed-form solutions by adding even more classes of problems that can be handled. The four new ODE classes solvable in this release do not admit point symmetries. The method used is based on the S-function method and a generalization of it to classes of equations with infinitely many members. 


To display special functions using textbook notation, use extended typesetting and enable the typesetting of mathematical functions. 

> interface(typesetting = extended); -1; Typesetting:-EnableTypesetRule(Typesetting:-SpecialFunctionRules); -1

Representatives of the four classes are as follows 

> PDEtools:-declare(y(x), prime = x)

`*`(` y`(x), `*`(`will now be displayed as`, `*`(y)))
`*`(`derivatives with respect to`, `*`(x, `*`(`of functions of one variable will now be displayed with '`)))

> ode[1] := diff(y(x), x, x) = `+`(`-`(`/`(`*`(diff(y(x), x), `*`(`+`(`*`(`^`(x, 4)), `-`(`*`(4, `*`(`^`(x, 3)))), y(x)))), `*`(`+`(`*`(`^`(x, 4)), y(x))))))


> sol[1] := dsolve(ode[1])


> odetest(sol[1], ode[1])


To verify that ode[1] does not admit point symmetries, construct the determining system and solve it 

> PDEtools:-declare((xi, eta)(x, y))

`*`(` xi`(x, y), `*`(`will now be displayed as`, `*`(xi)))
`*`(` eta`(x, y), `*`(`will now be displayed as`, `*`(eta)))

> DEtools[gensys](ode[1], ([xi, eta])(x, y))


In this easy case, it suffices to run a differential elimination round to verify, without actually solving the PDE system, that in only admits trivial solutions, i.e. no point symmetries 

> PDEtools:-casesplit([`*`(diff(diff(xi(x, y), y), y), `*`(`^`(`+`(`*`(`^`(x, 4)), y), 2))), `+`(`*`(diff(diff(eta(x, y), y), y), `*`(`^`(`+`(`*`(`^`(x, 4)), y), 2))), `-`(`*`(2, `*`(diff(diff(xi(x, y),...

A representative of Non Point Symmetries Class II 

> ode[2] := diff(diff(y(x), x), x) = `/`(`*`(`+`(`*`(`+`(`-`(x), 2), `*`(`^`(diff(y(x), x), 2))), `*`(`+`(`*`(`^`(x, 2)), `-`(x), `-`(y(x))), `*`(diff(y(x), x))), `*`(y(x), `*`(`+`(x, 1))))), `*`(`+`(`*...


> sol[2] := dsolve(ode[2])


> odetest(sol[2], ode[2])


Representatives of the other classes 

> ode[3] := diff(diff(y(x), x), x) = `/`(`*`(`+`(`*`(`+`(`*`(2, `*`(x, `*`(y(x)))), 2), `*`(`^`(diff(y(x), x), 2))), `*`(`+`(`*`(`^`(y(x), 2)), `-`(y(x))), `*`(diff(y(x), x))), `-`(`*`(`^`(y(x), 3), `*`...


> sol[3] := dsolve(ode[3])


> odetest(sol[3], ode[3])


> ode[4] := diff(diff(y(x), x), x) = `/`(`*`(`+`(diff(y(x), x), `-`(1)), `*`(`+`(y(x), diff(y(x), x)), `*`(`+`(x, 1)))), `*`(`+`(`*`(x, `*`(y(x))), 1)))


> sol[4] := dsolve(ode[4])


> odetest(sol[4], ode[4])


New DifferentialThomas package for performing differential elimination 

Previous Maple versions already include differential eliminations package, state-of-the-art, as DEtools[rifsimp] and DifferentialAlgebra, that use different methods to perform differential elimination, a key process towards decoupling a system of differential equations. 

Maple 2018 adds a third elimination package, DifferentialThomas, which uses yet another method, in this way succeeding in triangularizing some nonlinear DE systems that cannot be handled in practical time by the previous two existing packages. Also, both DEtools[rifsimp] and DifferentialThomas when used through the PDEtools:-casesplit command admit a case time limit option. Combining different methods with a case-time-limit option is extremely useful in that branches of the splitting of nonlinear systems that cannot be handled in practical time by one package frequently can now be reconstructed and handled by the other one. 

In addition, the new DifferentialThomas returns a disjoint decomposition of the given system, that is a decomposition where the solution of each case has no intersection with the solutions of the other cases (are not particular cases of the other other cases returned, as it may happen with the decompositions returned by DEtools[rifsimp] and DifferentialAlgebra) 


> ODE := `+`(`*`(`^`(`+`(`*`(2, `*`(y(x), `*`(diff(y(x), x, x)))), `-`(`*`(`^`(diff(y(x), x), 2)))), 3)), `*`(32, `*`(diff(y(x), x, x), `*`(`^`(`+`(`*`(x, `*`(diff(y(x), x, x))), `-`(diff(y(x), x))), 3)...

This is one of Kamke's book 2nd order nonlinear examples, and is now decomposed into five disjoint cases - the general and four singular cases. This problem cannot be decomposed with DEtools[rifsimp] or DifferentialAlgebra. 

When calling PDEtools:-casesplit, to indicate the use of the DifferentialThomas package, pass the package's name as additional argument (the same holds for RIF and DifferentialAlgebra) 

> r := PDEtools:-casesplit(ODE, DifferentialThomas)

> nops([r])

One can also call directly the package commands with a list of differential equations as first argument and the ranking set by the package’s Ranking command

> rr := DifferentialThomas:-ThomasDecomposition([ODE], DifferentialThomas:-Ranking([x], [y]))

[DifferentialSystem, DifferentialSystem, DifferentialSystem, DifferentialSystem, DifferentialSystem]

> for DifferentialSystem in rr do DifferentialThomas:-Tools:-Display(DifferentialSystem) end do; 1