Solving First Order ODEs of Abel Type (Having Non-constant Invariant)
Description
Examples
From some point of view, after Riccati type equations, the simplest first order ordinary differential equations (ODEs) are those having as right hand side (RHS) a third degree polynomial in the dependent variable, also called Abel type ODEs:
PDEtools[declare](y(x), f(x), prime=x); # turn ON the enhanced DE display
y⁡x⁢will now be displayed as⁢y
f⁡x⁢will now be displayed as⁢f
derivatives with respect to⁢x⁢of functions of one variable will now be displayed with '
diff(y(x),x) = f[3](x)*y(x)^3 + f[2](x)*y(x)^2 + f[1](x)*y(x) + f[0](x);
y'=f3⁢y3+f2⁢y2+f1⁢y+f0
where { f[1], f[2] f[3] } are arbitrary functions of x. Abel equations appear in the reduction of order process related to finding exact solutions to many second and higher order ODE families, and hence are frequently found in the modelling of real problems in varied areas. That has for a long time motivated people to study their integrable cases and related solving methods.
The implementation of methods for Abel ODEs dsolve follows the presentation done in Abel Equations: Equivalence and New Integrable Classes, by E.S. Cheb-Terrab and A.D. Roche, Computer Physics Communications 130 (2000).
A general "exact integration" strategy for these ODEs was first formulated by Liouville, in then 19th century, and is based on the concepts of classes, invariants and the solving of the equivalence problem. Generally speaking, two Abel ODEs belong to the same equivalence class if and only if one can be obtained from the other by means of a transformation of the form
TR := {x = F(t), y(x)= P(t)*u(t) + Q(t)};
TR≔x=F⁡t,y=P⁡t⁢u⁡t+Q⁡t
where t and u(t) are respectively the new independent and dependent variables, and F, P, Q are arbitrary functions of t satisfying
diff(F(x),x)<>0, P <> 0;
F'≠0,P≠0
Each class has infinitely many member and there are infinitely many classes. To each class there corresponds a different set of values of the invariants (built with the coefficients {f[1], f[2], f[3] } and their derivatives), and actually any one of them (we shall pick one and call it the invariant) is enough to characterize a class.
A simple integrable case happens when the invariant is constant; the solution to the ODE then follows straightforwardly in terms of quadratures, as explained in textbooks and in odeadvisor, Abel (the method for constant invariant Abel ODEs was implemented in Maple Release 5).
On the contrary, when the invariant is not constant, just a few integrable cases are known and the formulation of solving strategies is entirely based on the equivalence between two such Abel ODEs (one of which is integrable) under the transformation TR.
When a given Abel ODE belongs to one of a set of the solvable classes collected in the aforementioned CPC paper, dsolve's routines first determine this fact, without solving any differential equations, and use it to return a closed form solution without requiring further participation from the user. Apart from new solvable Abel classes, the ODE families that are covered include, as particular cases, all the Abel solvable cases presented in Kamke's and Murphy's books.
As the first example we consider here the one presented in Kamke's book with number 185
If infolevel is set to a greater integer (possible settings are 1 through 5), more detailed information about the computation method is displayed.
infolevel[dsolve] := 4; # turn ON the display of userinfos
infoleveldsolve≔4
ode[185] := x^7*diff(y(x),x)+2*(x^2+1)*y(x)^3+5*x^3*y(x)^2 = 0;
ode185≔x7⁢y'+2⁢x2+1⁢y3+5⁢x3⁢y2=0
sol[185] := dsolve((6), implicit, useInt);
Methods for first order ODEs: --- Trying classification methods --- trying a quadrature trying 1st order linear trying Bernoulli trying separable trying inverse linear trying homogeneous types: trying Chini differential order: 1; looking for linear symmetries trying exact trying Abel The relative invariant s3 is: 10/27/x^12*(9*x^2+2) The first absolute invariant s5^3/s3^5 is: -729/100*(90*x^4-15*x^2-14)^3/(9*x^2+2)^5 The second absolute invariant s3*s7/s5^2 is: 5/3*(9*x^2+2)*(972*x^6-324*x^4-15*x^2+98)/(90*x^4-15*x^2-14)^2 ...checking Abel class AIL (45) ...checking Abel class AIL (310) ...checking Abel class AIR (36) ...checking Abel class AIL (301) ...checking Abel class AIL (1000) ...checking Abel class AIL (42) ...checking Abel class AIL (185) inverse of the transformation solving the problem is: {t = x, u(t) = y(x)} <- Abel successful
sol185≔c__1+x1x+x2y2+114+∫` `1x+x2y1_a2+154ⅆ_a2=0
The integrals above can be evaluated in terms of hypergeometric functions using value. These implicit results can be tested using odetest
odetest( sol[185], ode[185] );
0
The above means mainly that dsolve can solve the whole class associated to this ODE. For instance, by changing variables
tr := {x=F(t),y(x)=P(t)*u(t)+Q(t)};
tr≔x=F⁡t,y=P⁡t⁢u⁡t+Q⁡t
subs([t=x, u=y], PDEtools[dchange](tr,ode[185],[u(t),t]) );
F⁡x7⁢P'⁢y+P⁡x⁢y'+Q'F'+2⁢F⁡x2+1⁢P⁡x⁢y+Q⁡x3+5⁢F⁡x3⁢P⁡x⁢y+Q⁡x2=0
collect( isolate((10),diff(y(x),x)), y, normal);
y'=−2⁢F⁡x2+1⁢P⁡x2⁢F'⁢y3F⁡x7−P⁡x⁢5⁢F⁡x3+6⁢F⁡x2⁢Q⁡x+6⁢Q⁡x⁢F'⁢y2F⁡x7−P'⁢F⁡x7+10⁢F⁡x3⁢P⁡x⁢F'⁢Q⁡x+6⁢F⁡x2⁢P⁡x⁢F'⁢Q⁡x2+6⁢P⁡x⁢F'⁢Q⁡x2⁢yF⁡x7⁢P⁡x−Q'⁢F⁡x7+5⁢F⁡x3⁢F'⁢Q⁡x2+2⁢F⁡x2⁢F'⁢Q⁡x3+2⁢F'⁢Q⁡x3F⁡x7⁢P⁡x
and this ODE is also solvable (actually for arbitrary F(t), P(t) and Q(t)):
dsolve((11), y(x), implicit, useInt);
Methods for first order ODEs: --- Trying classification methods --- trying a quadrature trying 1st order linear trying Bernoulli trying separable trying inverse linear trying homogeneous types: trying Chini differential order: 1; looking for linear symmetries trying exact trying Abel The first invariant is non-rational: -729/100*(90*F(x)^4-15*F(x)^2-14)^3/(9*F(x)^2+2)^5 -> Searching for a convenient change of variables... <- Unable to rationalize the invariant The relative invariant s3 is: 10/27*(9*F(x)^2+2)/F(x)^12*diff(F(x),x)^3*P(x)^3 The first absolute invariant s5^3/s3^5 is: -729/100*(90*F(x)^4-15*F(x)^2-14)^3/(9*F(x)^2+2)^5 The second absolute invariant s3*s7/s5^2 is: 5/3*(9*F(x)^2+2)*(972*F(x)^6-324*F(x)^4-15*F(x)^2+98)/(90*F(x)^4-15*F(x)^2-14)^2 ...checking Abel class AIL (45) ...checking Abel class AIL (310) ...checking Abel class AIR (36) ...checking Abel class AIL (301) ...checking Abel class AIL (1000) ...checking Abel class AIL (42) ...checking Abel class AIL (185) inverse of the transformation solving the problem is: {t = F(x), u(t) = P(x)*y(x)+Q(x)} <- Abel successful
c__1+F⁡x1F⁡x+F⁡x2P⁡x⁢y+Q⁡x2+114+∫` `1F⁡x+F⁡x2P⁡x⁢y+Q⁡x1_a2+154ⅆ_a2=0
The next example is still from Kamke's and appears there with number 257
ode[257] := x*(x*y(x)+x^4-1)*diff(y(x),x)-y(x)*(x*y(x)-x^4-1) = 0;
ode257≔x⁢x⁢y+x4−1⁢y'−y⁢x⁢y−x4−1=0
dsolve(ode[257], implicit);
Methods for first order ODEs: --- Trying classification methods --- trying a quadrature trying 1st order linear trying Bernoulli trying separable trying inverse linear trying homogeneous types: trying Chini differential order: 1; looking for linear symmetries trying exact trying Abel The equivalent Abel ODE of 1st kind is: diff(u(x),x) = -2*x*(x^2+1)*(x^2-1)*u(x)^3-2/x^2*u(x)^2-1/x*u(x) The relative invariant s3 is: -8/27*(27*x^8-9*x^4+2)/x^6 The first absolute invariant s5^3/s3^5 is: 729*(135*x^16-36*x^12+54*x^8-15*x^4+2)^3/(27*x^8-9*x^4+2)^5 The second absolute invariant s3*s7/s5^2 is: 1/3*(27*x^8-9*x^4+2)*(2835*x^24+243*x^20+2349*x^16-927*x^12+495*x^8-105*x^4+10)/(135*x^16-36*x^12+54*x^8-15*x^4+2)^2 ...checking Abel class AIL (45) ...checking Abel class AIL (310) ...checking Abel class AIR (36) ...checking Abel class AIL (301) ...checking Abel class AIL (1000) ...checking Abel class AIL (42) ...checking Abel class AIL (185) ...checking Abel class AIA (by Halphen) ...checking Abel class AIL (205) ...checking Abel class AIA (147) ...checking Abel class AIL (581) ...checking Abel class AIL (200) ...checking Abel class AIL (257) inverse of the transformation solving the problem is: {t = 1/x^2, u(t) = x*y(x)} <- Abel successful
c__1+−x⁢y+1⁢ⅇy⁢2⁢x3+y2⁢x2=0
This ODE actually belongs to the Abel class represented by the simpler ODE
Class[257] := diff(y(x),x) = -(x-1)*(x+1)*y(x)^3/(x^3)+y(x)^2;
Class257≔y'=−x−1⁢x+1⁢y3x3+y2
Actually, by converting ode[257] from Second Kind to Abel First Kind format
Abel_FirstKind_257 := convert(ode[257], FirstKind, 'keep'); # 'keep' the names (x, y(x))
Abel_FirstKind_257≔y'=−2⁢x5+2⁢x⁢y3−2⁢y2x2−yx,_a⁡x=x2+−x5+x⁢yy⁢x2
then changing variables in this ODE above (first element in the sequence) using
tr := {y(x) = u(t)/(sqrt(1/t)), x = sqrt(1/t)};
tr≔x=1t,y=u⁡t1t
and renaming the variables x=t, u=y we obtain:
subs( [t=x, u=y], PDEtools[dchange](tr, Abel_FirstKind_257[1], normal));
−2⁢x⁢y'+y⁢x=y⁢2⁢x2⁢y2−2⁢y⁢x3−2⁢y2−x2x
Isolating y' we arrive at the ODE representative for the Abel Class[257]
collect( isolate( (18), diff(y(x),x) ), y(x), factor );
y'=−x−1⁢x+1⁢y3x3+y2
A much more complicated example is given by the ODE presented in Kamke's book with number 43:
ode[43] := diff(y(x),x)+(3*x^2*a+4*x*a^2+b)*y(x)^3+3*x*y(x)^2 = 0;
ode43≔y'+4⁢x⁢a2+3⁢x2⁢a+b⁢y3+3⁢y2⁢x=0
This ODE belongs to class B (by Liouville); that is: it can be obtained from
Class[B] := diff(y(x),x) = 2*(x^2-C)*y(x)^3+2*(x+1)*y(x)^2;
ClassB≔y'=2⁢x2−C⁢y3+2⁢x+1⁢y2
by changing variables
tr := {x = -1/2*(2*a+3*t)/a, y(x) = -2/3*a^2*u(t)};
tr≔x=−2⁢a+3⁢t2⁢a,y=−2⁢a2⁢u⁡t3
and setting the parameter C in the Abel ODE representative of Class[B] as
eq_C := C = 1/4*(-3*b+4*a^3)/a^3;
eq_C≔C=4⁢a3−3⁢b4⁢a3
subs( [t=x, u=y, eq_C], PDEtools[dchange](tr, Class[B], [t,u(t)], normal));
isolate((24),diff(y(x),x)); # isolate y'
collect((25),y(x),factor);
The result above is in fact ode[43]. The process of determining the value of C for which a equivalence between the ODEs Class[B] and ode[43] exists, as well as the explicit form of the equivalence transformation, followed by using it to build the answer to ode[43] is now available via
infolevel[dsolve] := 0: # turn OFF userinfos
dsolve( ode[43] );
The database of solvable classes dsolve includes representatives for 25 classes. To each class there is associated a number. These numbers can be seen via
`dsolve/Abel_seed`(numbers);
1.1,1.2,1.3,1.4,1.5,1.51,1.52,1.53,1.6,1.8,1.9,33,36,42,45,147,185,200,201,205,257,301,310,400,515,581,815,1000,1001
nops((28));
29
Classes 1.1 to 1.9 are parameterized classes (parameter C), and each class representative - for instance, for Class 33 - can be seen via
`dsolve/Abel_seed`(33, y(x)); # instead of x and y may be any other letters
y'=x−3⁢y38⁢x−5⁢y24⁢x−3⁢y8⁢x
See Also
DEtools
dsolve
dsolve,references
infolevel
odeadvisor
odeadvisor,Abel
PDEtools
Download Help Document