Abel - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim


Solving First Order ODEs of Abel Type (Having Non-constant Invariant)

 

Description

Examples

Description

• 

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

yxwill now be displayed asy

fxwill now be displayed asf

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

(1)

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'=f3y3+f2y2+f1y+f0

(2)
  

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)};

TRx=Ft,y=Ptut+Qt

(3)
  

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,P0

(4)
  

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.

Examples

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

infoleveldsolve4

(5)

ode[185] := x^7*diff(y(x),x)+2*(x^2+1)*y(x)^3+5*x^3*y(x)^2 = 0;

ode185x7y'+2x2+1y3+5x3y2=0

(6)

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

sol185c__1+x1x+x2y2+114+` `1x+x2y1_a2+154&DifferentialD;_a2=0

(7)

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

(8)

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)};

trx=Ft&comma;y=Ptut+Qt

(9)

subs([t=x, u=y], PDEtools[dchange](tr,ode[185],[u(t),t]) );

Fx7P'y+Pxy'+Q'F'+2Fx2+1Pxy+Qx3+5Fx3Pxy+Qx2=0

(10)

collect(  isolate((10),diff(y(x),x)),  y, normal);

y'=2Fx2+1Px2F'y3Fx7Px5Fx3+6Fx2Qx+6QxF'y2Fx7P'Fx7+10Fx3PxF'Qx+6Fx2PxF'Qx2+6PxF'Qx2yFx7PxQ'Fx7+5Fx3F'Qx2+2Fx2F'Qx3+2F'Qx3Fx7Px

(11)

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+Fx1Fx+Fx2Pxy+Qx2+114+` `1Fx+Fx2Pxy+Qx1_a2+154&DifferentialD;_a2=0

(12)

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;

ode257xxy+x41y'yxyx41=0

(13)

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+xy+1&ExponentialE;y2x3+y2x2=0

(14)

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;

Class257y'=x1x+1y3x3+y2

(15)

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_257y'=2x5+2xy32y2x2yx,_ax=x2+x5+xyyx2

(16)

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)};

trx=1t&comma;y=ut1t

(17)

and renaming the variables x=t, u=y we obtain:

subs( [t=x, u=y], PDEtools[dchange](tr, Abel_FirstKind_257[1], normal));

2xy'+yx=y2x2y22yx32y2x2x

(18)

Isolating y' we arrive at the ODE representative for the Abel Class[257]

collect( isolate( (18), diff(y(x),x) ), y(x), factor );

y'=x1x+1y3x3+y2

(19)

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;

ode43y'+4xa2+3x2a+by3+3y2x=0

(20)

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;

ClassBy'=2x2Cy3+2x+1y2

(21)

by changing variables

tr := {x = -1/2*(2*a+3*t)/a, y(x) = -2/3*a^2*u(t)};

trx=2a+3t2a&comma;y=2a2ut3

(22)

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_CC=4a33b4a3

(23)

subs( [t=x, u=y, eq_C], PDEtools[dchange](tr, Class[B], [t,u(t)], normal));

(24)

isolate((24),diff(y(x),x));    # isolate y'

(25)

collect((25),y(x),factor);

(26)

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] );

(27)

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&comma;1.2&comma;1.3&comma;1.4&comma;1.5&comma;1.51&comma;1.52&comma;1.53&comma;1.6&comma;1.8&comma;1.9&comma;33&comma;36&comma;42&comma;45&comma;147&comma;185&comma;200&comma;201&comma;205&comma;257&comma;301&comma;310&comma;400&comma;515&comma;581&comma;815&comma;1000&comma;1001

(28)

nops((28));

29

(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'=x3y38x5y24x3y8x

(30)

See Also

DEtools

dsolve

dsolve,references

infolevel

odeadvisor

odeadvisor,Abel

PDEtools