Differential Equations - Maple Help

Home : Support : Online Help : System : Information : Updates : Maple 13 : Differential Equations

Updates to Differential Equation (DE) Solvers in Maple 13

Summary

 • The theme for exact, symbolic Ordinary Differential Equation solving in Maple 13 is the exploration of alternative methods for finding solutions to DE problems that are beyond the scope of standard methods or for which standard methods give overly complicated results. For example, important nonlinear ODE families, including some which do not have point symmetries, can be solved by constructing and then solving related linear ODEs of higher order. Similarly, by exploring symmetries in non-standard ways, the solution for various ODE initial value problems can be expressed in simple form even when the ODE general solution cannot be computed. These abilities are now built in to the standard DE solver (dsolve), and the techniques are also available separately through a variety of new tools.
 • For Partial Differential Equations, the functionality of most of the symmetry commands of PDEtools has been significantly expanded in many respects and four new commands were added. Among the novelties there is one new command for the fast computation of polynomial solutions to linear and nonlinear PDE systems, and the internal PDEtools Library, with 45 specialized routines for programming purposes, is now available.
 • For numerical solutions of ODEs, improvements have been made to event handling and to accuracy and error control for ODE and index-1 DAE problems.

Exact Solutions

Ordinary Differential Equations (ODEs)

 The dsolve command can now solve varied problems formerly out of reach, as well as compute remarkably simpler solutions for various ODE families for which former solutions were too complicated.

New solutions for nonlinear ODEs, from 1st to 5th order: linearization by differentiation

 • In some cases, a nonlinear ODE that cannot be solved using standard methods can still be multiplied by an appropriate factor so that after differentiation (one or two times), the resulting expression contains a linear ODE of higher order as a factor. Solving this linear ODE permits expressing the solution to the original problem explicitly and in rather compact manner.
 Examples
 > PDEtools:-declare(y(x), prime=x);
 ${y}{}\left({x}\right){}{\mathrm{will now be displayed as}}{}{y}$
 ${\mathrm{derivatives with respect to}}{}{x}{}{\mathrm{of functions of one variable will now be displayed with \text{'}}}$ (1)
 The following shows a first order ODE nonlinear in $\mathrm{y\text{'}}$, as an arbitrary function $G$ of two arguments, and its corresponding new solution.
 > ode[1] := G((2*y(x)-2+diff(y(x),x)*x)*x^3/(3*x^4+2*x^3),-x^3*(-y(x)+1+(x+1)*diff(y(x),x))/(3*x+2)) = 0;
 ${{\mathrm{ode}}}_{{1}}{≔}{G}{}\left(\frac{\left({\mathrm{y\text{'}}}{}{x}{+}{2}{}{y}{-}{2}\right){}{{x}}^{{3}}}{{3}{}{{x}}^{{4}}{+}{2}{}{{x}}^{{3}}}{,}{-}\frac{{{x}}^{{3}}{}\left({-}{y}{+}{1}{+}\left({x}{+}{1}\right){}{\mathrm{y\text{'}}}\right)}{{3}{}{x}{+}{2}}\right){=}{0}$ (2)
 > sol[1] := dsolve(ode[1], implicit);
 ${{\mathrm{sol}}}_{{1}}{≔}{G}{}\left({-}\frac{{-}{y}{+}\frac{{\mathrm{_C1}}}{{{x}}^{{2}}}{+}{1}}{{x}{+}{1}}{,}{\mathrm{_C1}}\right){=}{0}$ (3)
 So, for any form of $G$ in ode[1], the same $G$ in the output above solves the problem. ODE solutions can be verified as usual with odetest.
 > odetest(sol[1], ode[1]);
 ${0}$ (4)
 Here are two nonlinear ODE examples, of third and fourth order, extracted from scientific publications related to applications, and their new solutions computed quickly and in compact manner using linearization by differentiation.
 > ode[2] := diff(y(x),x,x,x) = 1/8*(-8*x*diff(y(x),x,x)*diff(y(x),x) + 4*x^2*diff(y(x),x,x)^2 + diff(y(x),x)^2 + 12*y(x))/x^2/diff(y(x),x);
 ${{\mathrm{ode}}}_{{2}}{≔}{\mathrm{y\text{'}\text{'}\text{'}}}{=}\frac{{4}{}{{x}}^{{2}}{}{{\mathrm{y\text{'}\text{'}}}}^{{2}}{-}{8}{}{x}{}{\mathrm{y\text{'}\text{'}}}{}{\mathrm{y\text{'}}}{+}{{\mathrm{y\text{'}}}}^{{2}}{+}{12}{}{y}}{{8}{}{{x}}^{{2}}{}{\mathrm{y\text{'}}}}$ (5)
 > dsolve(ode[2]);
 ${y}{=}{{x}}^{{2}}{+}\frac{{4}{}{{x}}^{{3}}{{2}}}{}{\mathrm{_C2}}}{{3}}{-}{4}{}{\mathrm{_C1}}{}\sqrt{{x}}{+}{\mathrm{_C3}}{}{x}{-}\frac{{4}{}{\mathrm{_C1}}{}{\mathrm{_C2}}}{{3}}{-}\frac{{{\mathrm{_C3}}}^{{2}}}{{12}}$ (6)
 > ode[3] := diff(y(x),x,x,x,x) = 1/2*(2*diff(y(x),x,x,x)*diff(y(x),x)-diff(y(x),x,x)^2+c^4*y(x)^2)/y(x);
 ${{\mathrm{ode}}}_{{3}}{≔}{\mathrm{y\text{'}\text{'}\text{'}\text{'}}}{=}\frac{{{c}}^{{4}}{}{{y}}^{{2}}{+}{2}{}{\mathrm{y\text{'}\text{'}\text{'}}}{}{\mathrm{y\text{'}}}{-}{{\mathrm{y\text{'}\text{'}}}}^{{2}}}{{2}{}{y}}$ (7)
 > dsolve(ode[3]);
 ${y}{=}{\mathrm{_C1}}{+}\frac{\left({{\mathrm{_C1}}}^{{2}}{-}{2}{}{{\mathrm{_C3}}}^{{2}}{-}{2}{}{{\mathrm{_C4}}}^{{2}}\right){}{{ⅇ}}^{{c}{}{x}}}{{8}{}{\mathrm{_C2}}}{+}{\mathrm{_C2}}{}{{ⅇ}}^{{-}{c}{}{x}}{+}{\mathrm{_C3}}{}{\mathrm{sin}}{}\left({c}{}{x}\right){+}{\mathrm{_C4}}{}{\mathrm{cos}}{}\left({c}{}{x}\right)$ (8)

New ODE-IVP solutions from the ODE symmetries

 • For various nonlinear ODE initial value problems (ODE-IVP), a rational solution exists, but the general ODE solution involves elliptic or special functions, making it difficult to compute the simpler form when adjusting the integration constants to match the initial conditions. In Maple 13, dsolve automatically explores the ODE symmetries to compute an ODE-IVP solution in its simpler rational form directly, even if the general solution is entirely out of reach.
 Examples
 > ode[4] := diff(y(x), x, x) + 3*(diff(y(x), x))/x - 8*y(x)^3/x^6 = 0;
 ${{\mathrm{ode}}}_{{4}}{≔}{\mathrm{y\text{'}\text{'}}}{+}\frac{{3}{}{\mathrm{y\text{'}}}}{{x}}{-}\frac{{8}{}{{y}}^{{3}}}{{{x}}^{{6}}}{=}{0}$ (9)
 > ic[4] := y(1) = -1/2, D(y)(1) = -1/2;
 ${{\mathrm{ic}}}_{{4}}{≔}{y}{}\left({1}\right){=}{-}\frac{{1}}{{2}}{,}{\mathrm{D}}{}\left({y}\right){}\left({1}\right){=}{-}\frac{{1}}{{2}}$ (10)
 The general solution of ode[4] involves the inverse of an elliptic integral, represented by the elliptic function JacobiSN.
 > dsolve(ode[4]);
 ${y}{=}{\mathrm{_C2}}{}{\mathrm{JacobiSN}}{}\left(\left({-}\frac{{I}}{{{x}}^{{2}}}{+}{\mathrm{_C1}}\right){}{\mathrm{_C2}}{,}{I}\right)$ (11)
 It is not easy to adjust the integration constants $\mathrm{C1}$, $\mathrm{C2}$ so that the preceding solution satisfies the conditions y(1) = -1/2, D(y)(1) = -1/2. However, by exploring the ODE symmetries,
 > DEtools[symgen](ode[4]);
 $\left[{\mathrm{_ξ}}{=}{{x}}^{{3}}{,}{\mathrm{_η}}{=}{0}\right]{,}\left[{\mathrm{_ξ}}{=}{x}{,}{\mathrm{_η}}{=}{2}{}{y}\right]$ (12)
 dsolve can compute directly the following simple solution to the whole ODE initial value problem.
 > sol_ic[4] := dsolve([ode[4], ic[4]]);
 ${{\mathrm{sol_ic}}}_{{4}}{≔}{y}{=}{-}\frac{{{x}}^{{2}}}{{{x}}^{{2}}{+}{1}}$ (13)
 You can use odetest to test solutions against the initial conditions.
 > odetest(sol_ic[4], [ode[4], ic[4]]);
 $\left[{0}{,}{0}{,}{0}\right]$ (14)
 > ode[5] := diff(y(x), x,x,x) - diff(y(x), x,x)*y(x) + diff(y(x),x)^2 = 0;
 ${{\mathrm{ode}}}_{{5}}{≔}{-}{\mathrm{y\text{'}\text{'}}}{}{y}{+}{{\mathrm{y\text{'}}}}^{{2}}{+}{\mathrm{y\text{'}\text{'}\text{'}}}{=}{0}$ (15)
 > ic[5] := y(0) = 1, D(y)(0) = 1/6;
 ${{\mathrm{ic}}}_{{5}}{≔}{y}{}\left({0}\right){=}{1}{,}{\mathrm{D}}{}\left({y}\right){}\left({0}\right){=}\frac{{1}}{{6}}$ (16)
 For ode[5] alone dsolve obtains only a reduction of order, which contains an ODE of Abel type for _g(_f) whose solution is not known.
 > dsolve(ode[5]);
 ${y}{=}\left({{ⅇ}}^{{\int }{\mathrm{_g}}{}\left({\mathrm{_f}}\right)\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{\mathrm{_f}}{+}{\mathrm{_C2}}}\right)\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{&where}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}\left[\left\{{{\mathrm{_g}}}_{{\mathrm{_f}}}{=}\left({6}{}{\mathrm{_f}}{-}{1}\right){}{{\mathrm{_g}}{}\left({\mathrm{_f}}\right)}^{{3}}{+}\frac{\left({7}{}{\mathrm{_f}}{-}{1}\right){}{{\mathrm{_g}}{}\left({\mathrm{_f}}\right)}^{{2}}}{{\mathrm{_f}}}{+}\frac{{\mathrm{_g}}{}\left({\mathrm{_f}}\right)}{{\mathrm{_f}}}\right\}{,}\left\{{\mathrm{_f}}{=}\frac{{\mathrm{y\text{'}}}}{{{y}}^{{2}}}{,}{\mathrm{_g}}{}\left({\mathrm{_f}}\right){=}{-}\frac{{{y}}^{{2}}}{{-}\frac{{\mathrm{y\text{'}\text{'}}}{}{y}}{{\mathrm{y\text{'}}}}{+}{2}{}{\mathrm{y\text{'}}}}\right\}{,}\left\{{x}{=}{\int }\frac{{\mathrm{_g}}{}\left({\mathrm{_f}}\right)}{{\mathrm{_f}}{}{{ⅇ}}^{{\int }{\mathrm{_g}}{}\left({\mathrm{_f}}\right)\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{\mathrm{_f}}{+}{\mathrm{_C2}}}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{\mathrm{_f}}{+}{\mathrm{_C1}}{,}{y}{=}{{ⅇ}}^{{\int }{\mathrm{_g}}{}\left({\mathrm{_f}}\right)\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{\mathrm{_f}}{+}{\mathrm{_C2}}}\right\}\right]$ (17)
 This result is the best one achievable at present but there is no useful way to adjust it to match the conditions y(0) = 1, D(y)(0) = 1/6. In Maple 13, however, dsolve first detects the symmetries of ode[5] and instead of just failing to compute the general solution, it explores these symmetries, solving the problem as a whole.
 > sol_ic[5] := dsolve([ode[5], ic[5]]);
 ${{\mathrm{sol_ic}}}_{{5}}{≔}{y}{=}{-}\frac{{6}}{{x}{-}{6}}$ (18)
 > map(odetest, [sol_ic[5]], [ode[5], ic[5]]);
 $\left[\left[{0}{,}{0}{,}{0}\right]\right]$ (19)

New solutions for linear ODEs with non-rational coefficients

 • The existing routines in dsolve for this problem were optimized to solve more complicated problems and in simpler form, or using simpler special functions.
 Example
 > ode[6] := diff(y(x),x,x) + tan(x)*diff(y(x),x) + a^2*cos(x)^2*sin(x)^(2*n-2)*y(x) = 0;
 ${{\mathrm{ode}}}_{{6}}{≔}{\mathrm{y\text{'}\text{'}}}{+}{\mathrm{tan}}{}\left({x}\right){}{\mathrm{y\text{'}}}{+}{{a}}^{{2}}{}{{\mathrm{cos}}{}\left({x}\right)}^{{2}}{}{{\mathrm{sin}}{}\left({x}\right)}^{{2}{}{n}{-}{2}}{}{y}{=}{0}$ (20)
 For the ode[6], the solution in Maple 12 involves hypergeometric functions. In Maple 13, the solution is computed in terms of simpler Bessel functions.
 > dsolve(ode[6]);
 ${y}{=}{\mathrm{_C1}}{}\sqrt{{\mathrm{sin}}{}\left({x}\right)}{}{\mathrm{BesselJ}}{}\left(\frac{{1}}{{2}{}{n}}{,}\frac{{{\mathrm{sin}}{}\left({x}\right)}^{{n}}{}{a}}{{n}}\right){+}{\mathrm{_C2}}{}\sqrt{{\mathrm{sin}}{}\left({x}\right)}{}{\mathrm{BesselY}}{}\left(\frac{{1}}{{2}{}{n}}{,}\frac{{{\mathrm{sin}}{}\left({x}\right)}^{{n}}{}{a}}{{n}}\right)$ (21)

New solutions for nonlinear ODEs exploring dynamical symmetries

 • Maple's dsolve started exploring dynamical symmetries in 1997. The related solving approach, however, is algebraically complicated. For Maple 13, corresponding routines were enhanced substantially to handle these kinds of problems, taking advantage of the properties of subfamilies of these symmetries (for example, self-invariant contact symmetries). In this way, new or concretely simpler solutions can now be computed.
 Example
 > ode[7] := diff(y(x), x,x) = diff(y(x), x)+(ln(diff(y(x), x))-x)*diff(y(x), x)^2/(y(x)-diff(y(x), x));
 ${{\mathrm{ode}}}_{{7}}{≔}{\mathrm{y\text{'}\text{'}}}{=}{\mathrm{y\text{'}}}{+}\frac{\left({\mathrm{ln}}{}\left({\mathrm{y\text{'}}}\right){-}{x}\right){}{{\mathrm{y\text{'}}}}^{{2}}}{{y}{-}{\mathrm{y\text{'}}}}$ (22)
 This ODE admits only one point symmetry, but in addition it has a computable self-invariant contact (dynamical) symmetry that involves $\mathrm{y\text{'}}$.
 > DEtools[symgen](ode[7]);
 $\left[{\mathrm{_ξ}}{=}{1}{,}{\mathrm{_η}}{=}{y}\right]{,}\left[{\mathrm{_ξ}}{=}{0}{,}{\mathrm{_η}}{=}{-}{\mathrm{ln}}{}\left({\mathrm{_y1}}\right){+}{x}\right]$ (23)
 Remarkably, the point symmetry (first one in the preceding output) is of no use to integrate the equation; it leads to an intractable first order ODE. The dynamical symmetry, on the other hand, results in the following new implicit solution, involving the Ei (exponential integral) composed with the LambertW function.
 > dsolve(ode[7], implicit);
 ${-}{{\mathrm{Ei}}}_{{1}}{}\left({-}{1}{-}{\mathrm{_C1}}{}{{ⅇ}}^{{-}{x}}{-}{\mathrm{LambertW}}{}\left({-}{y}{}{{ⅇ}}^{{-}{x}{-}{\mathrm{_C1}}{}{{ⅇ}}^{{-}{x}}{-}{1}}\right)\right){}{\mathrm{_C1}}{+}\frac{{y}}{{\mathrm{LambertW}}{}\left({-}{y}{}{{ⅇ}}^{{-}{x}{-}{\mathrm{_C1}}{}{{ⅇ}}^{{-}{x}}{-}{1}}\right)}{-}{\mathrm{_C2}}{=}{0}$ (24)

New parametric solutions for nonlinear ODEs

 • For ODEs of all differential orders, dsolve can now compute parametric solutions directly from their symmetries. This is useful in various cases where the standard solution, of the form $y\left(x\right)=\mathrm{...}$, involves the algebraic inversion of special functions or integrals, while the parametric solution is simpler.
 Example
 > ode[8] := diff(y(x),x,x) = y(x)+_F1(diff(y(x),x)-y(x));
 ${{\mathrm{ode}}}_{{8}}{≔}{\mathrm{y\text{'}\text{'}}}{=}{y}{+}{\mathrm{_F1}}{}\left({-}{y}{+}{\mathrm{y\text{'}}}\right)$ (25)
 > dsolve(ode[8]);
 ${y}{=}\left({\int }{\mathrm{RootOf}}{}\left({-}{x}{+}{{\int }}_{{}}^{{\mathrm{_Z}}}\frac{{1}}{{\mathrm{_F1}}{}\left({\mathrm{_f}}\right){-}{\mathrm{_f}}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{\mathrm{_f}}{+}{\mathrm{_C1}}\right){}{{ⅇ}}^{{-}{x}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{x}{+}{\mathrm{_C2}}\right){}{{ⅇ}}^{{x}}$ (26)
 This solution is the best that can be achieved but involves composite integrals where the inner one is algebraically solved with respect to the integration variable using RootOf. These solutions can frequently be re-expressed in parametric form, free of RootOf, which can now be computed directly by dsolve from the ODE symmetries.
 > dsolve(ode[8], parametric);
 $\left[{y}{}\left({\mathrm{_T}}\right){=}\left({\int }\frac{{{ⅇ}}^{{\int }{-}\frac{{1}}{{\mathrm{_F1}}{}\left({\mathrm{_T}}\right){-}{\mathrm{_T}}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{\mathrm{_T}}{-}{\mathrm{_C2}}}{}{\mathrm{_T}}}{{\mathrm{_F1}}{}\left({\mathrm{_T}}\right){-}{\mathrm{_T}}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{\mathrm{_T}}{+}{\mathrm{_C1}}\right){}{{ⅇ}}^{{\int }\frac{{1}}{{\mathrm{_F1}}{}\left({\mathrm{_T}}\right){-}{\mathrm{_T}}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{\mathrm{_T}}{+}{\mathrm{_C2}}}{,}{x}{}\left({\mathrm{_T}}\right){=}{\int }\frac{{1}}{{\mathrm{_F1}}{}\left({\mathrm{_T}}\right){-}{\mathrm{_T}}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{ⅆ}{\mathrm{_T}}{+}{\mathrm{_C2}}\right]$ (27)

DEtools[IVPsol], a new command for specializing general solutions and a related new option in dsolve

 • The standard process of solving an ODE-IVP consists of first computing a solution that is more general, which depends on arbitrary constants, and then adjusting these constants to match the initial or boundary conditions. The initial more general solution, however, can frequently be written in different ways, which can either facilitate or make more complicated the posterior adjustment of the solution.
 To take advantage of this situation, a new command, IVPsol, has been added to the DEtools package, with the purpose of adjusting an ODE solution to given initial or boundary conditions. Also, related new flexibility has been added to dsolve: it now accepts a given solution to be used directly as a departure point to match the initial/boundary conditions.
 Example
 > ode[9] := x*diff(y(x),x,x)+4*y(x)^2 = 0;
 ${{\mathrm{ode}}}_{{9}}{≔}{x}{}{\mathrm{y\text{'}\text{'}}}{+}{4}{}{{y}}^{{2}}{=}{0}$ (28)
 A general solution for ode[9] is not known. So, in principle, it would not be possible to solve an initial value problem involving it, such as in the following example with these initial conditions.
 > ic[9] := y(1) = -1/2, D(y)(1) = 1/2;
 ${{\mathrm{ic}}}_{{9}}{≔}{y}{}\left({1}\right){=}{-}\frac{{1}}{{2}}{,}{\mathrm{D}}{}\left({y}\right){}\left({1}\right){=}\frac{{1}}{{2}}$ (29)
 But suppose you know a particular solution for ode[9] that you might have computed by any other means, for instance:
 > sol[9] := y(x) = _C1/(2*x);
 ${{\mathrm{sol}}}_{{9}}{≔}{y}{=}\frac{{\mathrm{_C1}}}{{2}{}{x}}$ (30)
 You can now pass this solution directly to dsolve so that it uses it to solve the problem instead of trying and failing to compute one itself.
 > dsolve([ode[9], ic[9]], usesolution = sol[9]);
 ${y}{=}{-}\frac{{1}}{{2}{}{x}}$ (31)
 Analogously, you can pass the initial conditions and the solution directly to DEtools[IVPsol].
 > DEtools[IVPsol]([ic[9]], sol[9]);
 ${y}{=}{-}\frac{{1}}{{2}{}{x}}$ (32)

DEtools: extended functionality of parametricsol and particularsol

 • The DEtools commands particularsol and parametricsol can now solve a new range of higher order and nonlinear ODE problems by combining standard methods with alternative ways of using symmetries.
 Example
 > ode[10] := diff(y(x), x,x,x) - diff(y(x), x,x)*y(x) + diff(y(x),x)^2 = 0;
 ${{\mathrm{ode}}}_{{10}}{≔}{-}{\mathrm{y\text{'}\text{'}}}{}{y}{+}{{\mathrm{y\text{'}}}}^{{2}}{+}{\mathrm{y\text{'}\text{'}\text{'}}}{=}{0}$ (33)
 No general solution is known for ode[10]. A particular solution for it, however, depending on one arbitrary constant, is now computable using the following.
 > DEtools[particularsol](ode[10]);
 ${y}{=}{0}{,}{y}{=}\frac{{6}}{{-}{x}{+}{\mathrm{_C1}}}$ (34)
 For ode[8], introduced in a previous paragraph, a parametric solution is now computable using the following.
 > DEtools[parametricsol](ode[8]);
 $\left\{\left[{y}{}\left({\mathrm{_T}}\right){=}\left({\int }\frac{{{ⅇ}}^{}}{}\right)\right]\right\}$