Updates to Differential Equation (DE) Solvers in Maple 9
In Maple 9, the power of the differential equation solvers has been greatly increased for exact and numeric DEs. In addition, there is a new interactive graphical interface for solving ODE problems.
Summary
Exact Solutions for Ordinary and Partial Differential Equations
Numerical Solution for Ordinary and Partial Differential Equations
Graphical Interface for Exact and Numeric Solutions
The ODE Analyzer, a new interactive interface, has been created for numeric and symbolic solutions of ODE and ODE systems. The interface is easy to use, with many common options. In addition to computation of solutions and solution values, plots can also be generated. The interface is suitable as an educational tool; it can provide the corresponding Maple commands needed to compute the solution or plot. For information on launching the interface (and command-line options), see dsolve/interactive. For an illustrated description of the interface, see worksheet/interactive/dsolve.
Exact Solutions
First Order Nonlinear Equations
New solving methods for ODEs of Abel type.
New solving methods for ODEs that can be mapped into solvable Abel and Riccati type ODEs.
Second Order Linear Equations
New solving methods for ODEs that have non-rational coefficients or admit hypergeometric solutions.
New solving methods for rational coefficient ODEs that admit doubly-periodic non-Liouvillian solutions.
New integration methods for second order linear ODEs that explore non-standard forms of their Lie symmetries.
Miscellaneous
Update of many dsolve routines to return ODE solutions in terms of hypergeometric functions instead of integrals if possible.
Significant optimization of dsolve routines for the computation and use of differential invariants to solve nonlinear ODEs.
Significant optimization of dsolve routines by more quickly abandoning attempts to solve an ODE using algorithms that cannot solve it. For average problems, routines exit three to ten times faster.
Update of the dsolve function to use the LinearFunctionalSystems package for the computation of series solutions to linear ODE systems with polynomial coefficients.
New solving methods for PDE systems and optimization of the existing pdsolve routines for solving a single PDE.
Numerical Solutions
Numerical Methods for Ordinary Differential Equations
More efficient Taylor series ODE solutions with high precision.
Interactive features added to the dsolve function output. You can query about and change the initial data, method used, and other parameters.
Ability to solve ODE systems containing user-defined functions.
Numerical Methods for Partial Differential Equations
Extension of all numeric PDE methods to solve nonlinear PDEs that are linear in the highest time derivative.
Addition of time-adaptive solution computation. For example, you can now compute a solution to within a specified error per unit time step.
Computation and plotting of error estimates for a solution as a function of time and space.
Linear ODEs
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 '
Solutions for more third order linear ODE families that depend on arbitrary functions:
diff(y(x),x,x,x) = g(x)*diff(g(x),x)*y(x) + 2*diff(g(x),x)*diff(y(x),x) + diff(g(x),x,x)*y(x) + g(x)^2*diff(y(x),x);
y'''=g⁡x⁢g'⁢y+2⁢g'⁢y'+g''⁢y+g⁡x2⁢y'
dsolve((2),y(x));
y=c__1⁢ⅇ∫g⁡xⅆx+c__2⁢∫ⅇ−∫g⁡xⅆxⅆx2⁢ⅇ∫g⁡xⅆx+c__3⁢ⅇ∫g⁡xⅆx⁢∫ⅇ−∫g⁡xⅆxⅆx
(1-I)*diff(y(x),x,x,x,x)-(3+5*I)*diff(y(x),x,x,x)+(-I*x+x-9+3*I)*diff(y(x),x,x)+(8*I-3*I*x-x)*diff(y(x),x)+(2+2*I-I*x-x)*y(x);
1−I⁢y''''−3+5⁢I⁢y'''+−I⁢x+x−9+3⁢I⁢y''+8⁢I−3⁢I⁢x−x⁢y'+2+2⁢I−I⁢x−x⁢y
dsolve((4),y(x));
y=c__1⁢ⅇ−1+2⁢I+I⁢3⁢x2+c__2⁢ⅇ−I⁢3+1−2⁢I⁢x2+c__3⁢−∫AiryAi⁡1−x⁢ⅇ−x⁢I⁢3−12ⅆx⁢ⅇ−1+2⁢I+I⁢3⁢x2+∫AiryAi⁡1−x⁢ⅇx⁢1+I⁢32ⅆx⁢ⅇ−I⁢3+1−2⁢I⁢x2+c__4⁢−∫AiryBi⁡1−x⁢ⅇ−x⁢I⁢3−12ⅆx⁢ⅇ−1+2⁢I+I⁢3⁢x2+∫AiryBi⁡1−x⁢ⅇx⁢1+I⁢32ⅆx⁢ⅇ−I⁢3+1−2⁢I⁢x2
Solutions for second order linear ODEs in terms of elementary, hypergeometric, or special functions instead of uncomputable integrals:
-4*x*y(x) + diff(y(x),x) - 2*diff(y(x),x,x)*x + 2*diff(y(x),x,x)*x^3;
−4⁢y⁢x+y'−2⁢y''⁢x+2⁢y''⁢x3
dsolve((6));
diff(y(x),x,x) = cos(2*x)/sin(2*x)*diff(y(x),x)-2*y(x);
y''=cos⁡2⁢x⁢y'sin⁡2⁢x−2⁢y
dsolve((8));
y=c__1⁢sin⁡2⁢x34⁢LegendreP⁡14,34,cos⁡2⁢x+c__2⁢sin⁡2⁢x34⁢LegendreQ⁡14,34,cos⁡2⁢x
The solutions for Kamke's examples 43, 133, 263, 319, 353, 354, and 355 had uncomputable integrals in previous releases of Maple. In Maple 9, they are solved in terms of hypergeometric functions.
New elementary and hypergeometric solutions for linear ODEs families with non-rational coefficients:
diff(y(x),x,x) = 1/2*(2*x^3*y(x)*(x^2-1)^(1/2)-x^3*y(x)+diff(y(x),x)*x^4-3*diff(y(x),x)*x^2+2*diff(y(x),x))/x/(x^2-1)^2;
dsolve((10));
diff(y(x),x,x) = (-x^5*y(x)-3*x^3*y(x)+3*diff(y(x),x)*(x^2+3)^(1/2))/(x^2+3)^(3/2)/x;
y''=−x5⁢y−3⁢x3⁢y+3⁢y'⁢x2+3x2+332⁢x
dsolve((12));
New doubly-periodic solutions for second order linear ODEs; in this case, the solution is computed directly from the ODE symmetries.
diff(y(x),x,x)-12*WeierstrassP(x,a,b)*y(x);
y''−12⁢WeierstrassP⁡x,a,b⁢y
dsolve((14));
y=c__1⁢WeierstrassPPrime⁡x,a,b+c__2⁢WeierstrassPPrime⁡x,a,b⁢−2⁢6⁢a⁢WeierstrassP⁡x,a,b2−9⁢WeierstrassP⁡x,a,b⁢b−a2⁢WeierstrassPPrime⁡x,a,b4⁢WeierstrassP⁡x,a,b3−WeierstrassP⁡x,a,b⁢a−b−6⁢a⁢WeierstrassZeta⁡x,a,b+9⁢b⁢x
(WeierstrassPPrime(x,a,b) + WeierstrassP(x,a,b)^2)*diff(diff(y(x),x),x) + (WeierstrassP(x,a,b)^3 - WeierstrassP(x,a,b)*WeierstrassPPrime(x,a,b) - 6*WeierstrassP(x,a,b)^2 + 1/2*a)*diff(y(x),x) + (WeierstrassPPrime(x,a,b)^2 - WeierstrassP(x,a,b)^2*WeierstrassPPrime(x,a,b) - WeierstrassP(x,a,b)*(6*WeierstrassP(x,a,b)^2 - 1/2*a))*y(x) = 0;
WeierstrassPPrime⁡x,a,b+WeierstrassP⁡x,a,b2⁢y''+WeierstrassP⁡x,a,b3−WeierstrassP⁡x,a,b⁢WeierstrassPPrime⁡x,a,b−6⁢WeierstrassP⁡x,a,b2+a2⁢y'+WeierstrassPPrime⁡x,a,b2−WeierstrassP⁡x,a,b2⁢WeierstrassPPrime⁡x,a,b−WeierstrassP⁡x,a,b⁢6⁢WeierstrassP⁡x,a,b2−a2⁢y=0
dsolve((16));
y=c__1⁢WeierstrassP⁡x,a,b+c__2⁢ⅇWeierstrassZeta⁡x,a,b
New solutions for linear ODE problems that do not match any classification, but for which it is possible to compute symmetries of a non-standard form that can be used to determine a solution:
diff(diff(y(x),x),x) = 1/4*(-2*Psi(x)*Psi(2,x)+3*Psi(1,x)^2+Psi(x)^4)/Psi(x)^2*y(x);
y''=−2⁢Ψ⁡x⁢Ψ⁡2,x+3⁢Ψ⁡1,x2+Ψ⁡x4⁢y4⁢Ψ⁡x2
dsolve((18));
y=c__1⁢ⅇ−Ψ⁡−1,x2Ψ⁡x+c__2⁢ⅇΨ⁡−1,x2Ψ⁡x
Simpler solutions in terms of elementary and special functions instead of hypergeometric functions:
diff(diff(y(x),x),x) = 1/4*(4*(x^n)^2*n^2-1+4*(x^n)^4*n^2+n^2)/x^2*y(x);
y''=4⁢xn2⁢n2−1+4⁢xn4⁢n2+n2⁢y4⁢x2
dsolve((20));
y=c__1⁢x12−n2⁢ⅇx2⁢n2+c__2⁢x12−n2⁢erf⁡xn⁢ⅇx2⁢n2
Simpler solution in terms of square roots instead of compositions of sin, cos, ln, and radicals:
-1/4*1/x/(x-1)*y(x)+1/2*(2*x-1)/x/(x-1)*diff(y(x),x)+diff(y(x),x,x) = 0;
−y4⁢x⁢−1+x+2⁢x−1⁢y'2⁢x⁢−1+x+y''=0
dsolve((22));
y=c__1⁢x+c__2⁢−1+x
Quickly abandon attempt to solve an ODE for which no solution can be computed:
x^n*diff(y(x),x,x)+c*(a*x+b)^(n-4)*y(x)=0;
xn⁢y''+c⁢a⁢x+bn−4⁢y=0
dsolve((24));
y=DESol⁡_Y''+c⁢a⁢x+bn−4⁢_Y⁡xxn,_Y⁡x
Nonlinear ODEs
Improved recognition of Elliptic function solutions:
diff(y(x),x)^2 = 1/(1+x^4*k^2+(-k^2-1)*x^2);
y'2=11+x4⁢k2+−k2−1⁢x2
dsolve((26));
y=EllipticF⁡x,k+c__1,y=−EllipticF⁡x,k+c__1
Kamke's example 80, in terms of an arbitrary function f⁡x:
diff(y(x),x)+f(x)*sin(y(x))+(1-diff(f(x),x))*cos(y(x))-diff(f(x),x)-1, y(x);
y'+f⁡x⁢sin⁡y+1−f '⁢cos⁡y−f '−1,y
dsolve((28));
y=2⁢arctan⁡−ⅇ∫f⁡xⅆx+∫ⅇ∫f⁡xⅆxⅆx⁢f⁡x+f⁡x⁢c__1c__1+∫ⅇ∫f⁡xⅆxⅆx
Implicit hypergeometric solution for Kamke's example 81 and a more general ODE class, of which example 81 is a special case:
diff(y(x),x) = -2*tan(x)*tan(y(x))+1;
y'=−2⁢tan⁡x⁢tan⁡y+1
dsolve((30));
c__1+tan⁡x1+tan⁡y2⁢1+tan⁡x2tan⁡x⁢tan⁡y−1214+tan⁡y+tan⁡x⁢hypergeom⁡12,54,32,−tan⁡y+tan⁡x2tan⁡x⁢tan⁡y−122⁢tan⁡x⁢tan⁡y−1=0
diff(y(x),x) = -(P(y(x))^2+1)*(2*F(x)*P(y(x))-1)*diff(F(x),x)/(1+F(x)^2)/D(P)(y(x));
y'=−P⁡y2+1⁢2⁢F⁡x⁢P⁡y−1⁢F'1+F⁡x2⁢D⁡P⁡y
dsolve((32), y(x));
c__1+F⁡xP⁡y2+1⁢1+F⁡x2F⁡x⁢P⁡y−1214+P⁡y+F⁡x⁢hypergeom⁡12,54,32,−P⁡y+F⁡x2F⁡x⁢P⁡y−122⁢F⁡x⁢P⁡y−1=0
AIA 2p Abel type equations ("Abel Inverse Abel" 2-parameterized class, see Abel ODE papers in dsolve/references):
diff(y(x),x) = 2*y(x)*(2*x-3+b^2+y(x))/(y(x)*x+(x-1)*(-4+b^2+3*x));
dsolve((34));
c__1+b−1⁢LegendreP⁡1,b,−−1+x−y−−y⁢LegendreP⁡0,b,−−1+x−y1−b⁢LegendreQ⁡1,b,−−1+x−y+−y⁢LegendreQ⁡0,b,−−1+x−y=0
Explicit solution free of integrals for Riccati type equations; in previous releases, the solution was implicit with integrals.
diff(y(x),x) = (x-exp(x))*y(x)^2+(exp(2*x)-x^2)/(-x+exp(x))*y(x)-exp(x)*(-x^2+x-1+x*exp(x))/(-x+exp(x))^2;
y'=x−ⅇx⁢y2+ⅇ2⁢x−x2⁢y−x+ⅇx−ⅇx⁢−x2+x−1+x⁢ⅇx−x+ⅇx2
dsolve((36),[sym_pat]); # the optional use of [sym_pat] methods speeds up this process
y=tan⁡4⁢ⅇx⁢x3−x4−6⁢ⅇ2⁢x⁢x2+4⁢ⅇ3⁢x⁢x−ⅇ4⁢x⁢−x2+2⁢ⅇx−2⁢c__14⁢x2−2⁢x⁢ⅇx+ⅇx2⁢4⁢ⅇx⁢x3−x4−6⁢ⅇ2⁢x⁢x2+4⁢ⅇ3⁢x⁢x−ⅇ4⁢x+x2−ⅇ2⁢x2⁢−ⅇ2⁢x+2⁢x⁢ⅇx−x2
Explicit solution - free of RootOfs - with integrals of the arbitrary function σ⁡x; in previous releases, the solution was implicit or expressed using RootOf with integrals.
sigma(x) = -(y(x)-x*diff(y(x),x))*diff(y(x),x)/x/y(x)/diff(diff(y(x),x),x);
σ⁡x=−y−y'⁢x⁢y'x⁢y⁢y''
dsolve((38));
y=c__2⁢ⅇ∫ⅇ−∫1σ⁡x⁢xⅆx∫ⅇ−∫1σ⁡x⁢xⅆx⁢σ⁡x−1σ⁡xⅆx−c__1ⅆx
Simpler form of the solution; in previous releases, the solution was RootOf expressions with integrals.
diff(y(x),x,x)*(x-y(x))+2*diff(y(x),x)*(1+diff(y(x),x)) = 0;
y''⁢−y+x+2⁢y'⁢1+y'=0
dsolve((40));
Enhanced Computation of Series Solutions for Some Linear ODE Systems
The dsolve function now uses LinearFunctionalSystems package routines for the computation of series solutions to linear ODE systems with polynomial coefficients.
PDEtools[declare](x(t), y(t), prime=t);
x⁡t⁢will now be displayed as⁢x
y⁡t⁢will now be displayed as⁢y
derivatives with respect to⁢t⁢of functions of one variable will now be displayed with '
{t*diff(x(t),t,t,t)-diff(y(t),t,t)-x(t)-t^3*y(t) = 0, t^2*diff(y(t),t,t)+diff(diff(x(t),t),t)-2*x(t)-t*y(t) = 0};
t⁢x'''−y''−x−t3⁢y=0,t2⁢y''+x''−2⁢x−t⁢y=0
dsolve((43), {x(t), y(t)}, 'series');
x=x⁡0+D⁡x⁡0⁢t+x⁡0⁢t2+D⁡x⁡03+y⁡06⁢t3+x⁡04+D⁡y⁡012⁢t4+−y⁡030−x⁡040−D⁡x⁡060⁢t5+O⁡t6,y=y⁡0+D⁡y⁡0⁢t−12⁢x⁡0⁢t2+D⁡x⁡06+y⁡06⁢t3+5⁢x⁡012+D⁡y⁡06⁢t4+−19⁢y⁡0120−3⁢x⁡040−D⁡x⁡015⁢t5+O⁡t6
PDEs
Using the HINT option for PDE systems containing arbitrary functions:
{-diff(xi(x,y),y,y)+diff(xi(x,y),y)*h(y), diff(eta(x,y),x)*g(x)+diff(eta(x,y),x,x), diff(eta(x,y),y)*h(y)+eta(x,y)*diff(h(y),y)+2*diff(xi(x,y),y)*g(x)-2*diff(xi(x,y),x,y)+diff(eta(x,y),y,y), 2*diff(eta(x,y),x,y)+diff(xi(x,y),x)*g(x)-diff(xi(x,y),x,x)+2*diff(eta(x,y),x)*h(y)+xi(x,y)*diff(g(x),x)};
ηx⁢g⁡x+ηx,x,−ξy,y+ξy⁢h⁡y,ηy⁢h⁡y+η⁡x,y⁢hy+2⁢ξy⁢g⁡x−2⁢ξx,y+ηy,y,2⁢ηx,y+ξx⁢g⁡x−ξx,x+2⁢ηx⁢h⁡y+ξ⁡x,y⁢gx
pdsolve( (45), [xi,eta], HINT=`+`);
η⁡x,y=c__1+c__6+∫c__5−c__1⁢h⁡y⁢ⅇ∫h⁡yⅆyⅆy⁢ⅇ−∫h⁡yⅆy,ξ⁡x,y=c__4+∫c__3+c__2⁢g⁡x⁢ⅇ∫−g⁡xⅆxⅆx⁢ⅇ−∫−g⁡xⅆx+c__2
pdetest((46),(45));
0
In Maple 9, a number of improvements have been implemented in the numeric ODE and PDE solvers, including the following.
Numeric Solutions of ODE and ODE Systems
Modifications to the taylorseries method to allow more efficient computation of high accuracy solutions.
Addition of interactive features to the procedure returns of the numeric ODE solvers allows you to query and change the initial data, query the last computed point (very useful for problems with singularities), and query the method used in the procedure, for example, rkf45. For more information, see dsolve/numeric/IVP.
Significant efficiency improvements to the numeric ODE boundary value problem solver, especially for difficult problems.
Ability to solve ODE systems containing user-defined functions. For more information, see the known option in dsolve/numeric.
Numeric Solutions of Time Dependent PDE and PDE Systems
Extension of all methods (schemes) to solve nonlinear PDEs that are linear in the highest time derivative.
Computation and plotting of error estimates for the solution as a function of time and space. For more information, see pdsolve/numeric/errorcontrol.
Addition of time-adaptive solution computation. For example, you can now compute a solution to within a specified error per unit time step. Note: Only the time step can be adapted. The solution must be computed with a number of spatial points sufficient to keep the spatial error within tolerance. This condition is monitored, and an error results if the spatial mesh is too coarse. For more information, see pdsolve/numeric/errorcontrol.
See Also
dsolve
dsolve/interactive
dsolve/numeric
dsolve/numeric/IVP
dsolve/series
dsolve/taylorseries
hypergeom
Index of New Maple 9 Features
Legendre
LinearFunctionalSystems
PDEtools[declare]
pdsolve
pdsolve/numeric/errorcontrol
RootOf
Weierstrass
worksheet/interactive/dsolve
Download Help Document