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):
y⁡x⁢will now be displayed as⁢y
derivatives with respect to⁢x⁢of 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')
convert( subs(diff(y(x),x,x) = `y''`, diff(y(x),x) = `y'`,y(x)=y,(4)), diff);
subs(_F1 = G, redode(mu(y(x),diff(y(x),x)),y(x),2) ); # ODE family admitting mu(y,y')
convert( subs(diff(y(x),x,x) = `y''`, diff(y(x),x) = `y'`,y(x)=y,(6)), diff);
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
This ODE has the following integrating factor (see intfactor)
This integrating factor can be tested using mutest
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):
From where the solution to the original ode follows straightforwardly:
(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
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
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):
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.
Download Help Document
What kind of issue would you like to report? (Optional)