integrating factors (2nd order) - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Mathematics : Differential Equations : dsolve : integrating factors (2nd order)

Solving Second Order ODEs by Computing Integrating Factors for Them






Integrating factors - depending on two variables - for second order ODEs


For second order ODEs integrating factors depending on three variables, (x,y,y') always exist - their determination however may be as difficult as solving the ODEs themselves. However, integrating factors of the form mu(x,y), mu(x,y'), mu(y,y'), that is, depending on just two variables, when they exist, can be determined systematically (see E.S. Cheb-Terrab and A.D. Roche, "Integrating factors for second order ODEs", Journal of Symbolic Computation V. 27, No. 5 (1999) 501). This method is implemented in dsolve.


The main idea of this method consists of algorithmically determining whether or not a given second order ODE is member of one of the three reducible ODE families respectively admitting integrating factors of the forms mu(x,y), mu(x,y'), mu(y,y') (see redode):


PDEtools[declare](y(x), prime=x);

yxwill now be displayed asy

derivatives with respect toxof functions of one variable will now be displayed with '


subs(_F1 = G, redode(mu(x,y(x)),y(x),2) );            # ODE family admitting mu(x,y)



convert( subs(diff(y(x),x,x) = `y''`, diff(y(x),x) = `y'`,y(x)=y,(2)), diff);



subs(_F1 = G, redode(mu(x,diff(y(x),x)),y(x),2) );    # ODE family admitting mu(x,y')

y''=` `y'μxⅆ_a+D1Gx,y+D2Gx,yy'μx,y'


convert( subs(diff(y(x),x,x) = `y''`, diff(y(x),x) = `y'`,y(x)=y,(4)), diff);

y''=` `y'μxⅆ_a+Gx+Gyy'μx,y'


subs(_F1 = G, redode(mu(y(x),diff(y(x),x)),y(x),2) ); # ODE family admitting mu(y,y')

y''=` `y'D1μy,_ay'ⅆ_a+D1Gx,y+D2Gx,yy'μy,y'


convert( subs(diff(y(x),x,x) = `y''`, diff(y(x),x) = `y'`,y(x)=y,(6)), diff);

y''=` `y'μyy'ⅆ_a+Gx+Gyy'μy,y'


and in doing that, determining mu. Concretely, this means that members of these three ODE families can now be systematically reduced to first order ODEs - for arbitrary mu and G - as if they were simple exact equations (total derivatives). This has enlarged in a noticeable way the decision procedures available for tackling second order ODEs in the nonlinear case.


Although the relevant thing here is that the new algorithms don't require solving any auxiliary differential equation, it is also worth mentioning that the ODE families above include members not having point symmetries and nonetheless reducible to quadratures; this fact was the main result of an interesting article in 1988 (see A. Gonzalez-Lopez, Phys. Lett. A, (1988) 190). As an ODE example, consider

with(DEtools, firint, intfactor, mutest, odeadvisor):

ode := diff(y(x),x,x) - diff(y(x),x)^2/y(x) + sin(x)*y(x)*diff(y(x),x) +



This ODE has the following integrating factor (see intfactor)

Mu := intfactor(ode,y(x));



This integrating factor can be tested using mutest

mutest(Mu, ode);  # returns zero whem Mu is an integrating factor



The product Mu*ode is an exact ODE (a total derivative) and hence one can take advantage of this fact to reduce the second order ODE to a first order one, in this case of Bernoulli type (in turn fully solvable in the general case):

first_integral := firint( Mu*ode, y(x));



odeadvisor(first_integral, y(x));



From where the solution to the original ode follows straightforwardly:



odetest((13),ode);   # test this result



(for more details on how to build solutions from the knowledge of integrating factors see dsolve,education, subsection Constructing solutions using integrating factors.) All these steps are performed automatically by dsolve by calling

dsolve(ode, y(x));

It is also possible to invoke the use of "just" this method for reducible ODEs or for each of the three forms of integrating factors via

dsolve(ode, y(x), [reducible]);

dsolve(ode, y(x), [mu_xy]);     # mu(x,y)

dsolve(ode, y(x), [mu_y_y1]);   # mu(y,y')

dsolve(ode, y(x), [mu_x_y1]);   # mu(x,y')

For the specific example under discussion, the first three callings above will solve the problem.

As a concluding remark, an ODE not having point symmetries and having such an integrating factor of the form 1/y is still a simple problem if compared with the three ODE families shown on top, related to arbitrary integrating factors depending on two variables.

That the ode under discussion has no point symmetries can be checked with ease as follows. First we generate the determining system for the infinitesimals of the symmetry generator (see gensys):

sys := DEtools[gensys](ode, [xi(x,y), eta(x,y)]);



nops([sys]);        # number of PDEs in the resulting system



Then we simplify this system with respect to its integrability conditions using casesplit (in turn using DifferentialAlgebra or DEtools,Rif):




verifying that the only solution to this system is the trivial (useless) one. There are in fact infinitely many cases like the one just mentioned, so that the integrating factor and the symmetry approaches end up complementing each other in a quite useful manner.

See Also