Solving First Order ODEs by Matching Them to ODE Families Invariant under Certain Symmetry Groups
Description
Examples
The idea in the symmetry & ODE patterns is to match a given first order ODE to one of a set of ODE families which are invariant under different symmetry groups (to determine these invariant ODE families see equinv). These routines are an implementation of the algorithms presented in "Symmetries and first order ODE patterns, Computer Physics Communications 113 (1998) 239 (see dsolve's references).
We define the infinitesimals xi(x,y) and eta(x,y) as the coefficients of the infinitesimal symmetry generator:
f -> xi*diff(f,x) + eta*diff(f,y);
f→ξ⁢∂∂x⁢f+η⁢∂∂y⁢f
where x and y represent, respectively, the independent and dependent variables. The implementation in dsolve for matching first order invariant ODE families can handle the nine symmetry patterns mentioned in that CPC article:
X1 := [xi = 0, eta = F(x)*G(y)]:
X2 := [xi = F(x)*G(y), eta = 0]:
X3 := [xi = 0, eta = F(x)+G(y)]:
X4 := [xi = F(x)+G(y), eta = 0]:
X5 := [xi = G(y), eta = J(y)]:
X6 := [xi = F(x), eta = H(x)]:
X7 := [xi = F(x), eta = G(y)]:
X8 := [xi = G(y), eta = F(x)]:
X9 := [xi = a*x + b*y + c, eta = e*x + f*y + g]:
where the patterns X2, X4, X6 can be obtained from X1, X3, X5 by interchanging the roles between dependent and independent variable (x <-> y).
The explicit form of the invariant ODE families associated to the symmetry patterns 1 to 8 can be obtained using equinv. For instance the families invariant under X1, X3, X5 are given by
ODE1 := collect( DEtools[equinv](X1, y(x)), G, expand);
ODE1≔ⅆⅆxy⁡x=ⅆⅆxF⁡x⁢∫` `y⁡x1G⁡_aⅆ_aF⁡x+f__1⁡x⁢G⁡y⁡x
ODE3 := DEtools[equinv](X3, y(x));
ODE3≔ⅆⅆxy⁡x=∫` `y⁡xⅆⅆxF⁡xF⁡x+G⁡_a2ⅆ_a+f__1⁡x⁢F⁡x+G⁡y⁡x
ODE5 := DEtools[equinv](X5, y(x));
ODE5≔ⅆⅆxy⁡x=J⁡y⁡xG⁡y⁡x+f__1⁡−∫` `y⁡xG⁡_aJ⁡_aⅆ_a+x
As seen in above, these families depend on the arbitrary functions {F, G, J, _F1}, and the implementation of these methods means that these ODE families - as well as those associated to the patterns X2, X4, X6, X7, X8 and X9 - can be systematically solved, in principle, for any particular form of {F, G, J, _F1}
This method is in use in dsolve by default; however it can be invoked directly by giving the extra argument way=patterns (see symgen)
If infolevel is set to a greater integer (possible settings are 1 through 5), more detailed information about the computation method is displayed.
infoleveldsolve≔2
ode1≔diff⁡y⁡x,x=−y⁡x+b2x+a⁢1+sin⁡y⁡x⁢y⁡x+b2⁢x+a
ode1≔ⅆⅆxy⁡x=−y⁡x+b2x+a⁢1+sin⁡y⁡x⁢y⁡x+b2⁢x+a
DEtoolssymgen⁡ode1,way=patterns
-> Computing symmetries using: way = patterns
_ξ=ⅇ−1y+b⁢x+a2,_η=0
collect⁡dsolve⁡ode1,way=patterns,implicit,Intat
symmetry methods on request--- Trying Lie symmetry methods, 1st order --- -> Computing symmetries using: way = patterns
<- successful computation of symmetries.1st order, trying the canonical coordinates of the invariance group <- 1st order, canonical coordinates successful
ⅇ−1y+b⁢x+a2,0
−ⅇ1y⁡x+bx+a+∫` `y⁡xⅇ1_a+b⁢sin⁡_aⅆ_a−c__1=0
These implicit solutions are in principle testable, for instance using odetest
odetest⁡,ode1
0
For this example, all the other algorithms in dsolve fail until the ode is matched as a member of the invariant family ODE3 shown lines above
ode2≔diff⁡y⁡x,x=3⁢y⁡x2y⁡x2+x2y⁡x2⁢arctan⁡1x⁢y⁡x−−1+2⁢y⁡xx−−1+3⁢y⁡xy⁡x2⁢x
ode2≔ⅆⅆxy⁡x=3⁢1+x2y⁡x2⁢arctan⁡y⁡xx−−1+2⁢y⁡xx−−1+3⁢y⁡x⁢xy⁡x2
dsolve⁡ode2
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 Looking for potential symmetries trying inverse_Riccati trying an equivalence to an Abel ODE differential order: 1; trying a linearization to 2nd order --- trying a change of variables {x -> y(x), y(x) -> x} differential order: 1; trying a linearization to 2nd order trying 1st order ODE linearizable_by_differentiation --- Trying Lie symmetry methods, 1st order --- -> Computing symmetries using: way = 3 -> Computing symmetries using: way = 4 -> Computing symmetries using: way = 5 trying symmetry patterns for 1st order ODEs -> trying a symmetry pattern of the form [F(x)*G(y), 0] -> trying a symmetry pattern of the form [0, F(x)*G(y)] -> trying symmetry patterns of the forms [F(x),G(y)] and [G(y),F(x)] -> trying a symmetry pattern of the form [F(x),G(x)] -> trying a symmetry pattern of the form [F(y),G(y)] -> trying a symmetry pattern of the form [F(x)+G(y), 0] -> trying a symmetry pattern of the form [0, F(x)+G(y)] <- symmetry pattern of the form [0, F(x)+G(y)] successful
y⁡x=tan⁡RootOf⁡−2⁢x3⁢tan⁡_Z+2⁢_Z⁢x3+x2+c__1⁢x
This is an example from Kamke's book with an arbitrary function H depending on abstract powers
ode3≔diff⁡y⁡x,x−xa−1⁢y⁡x1−b⁢H⁡xaa+y⁡xbb=0
ode3≔ⅆⅆxy⁡x−xa−1⁢y⁡x1−b⁢H⁡xaa+y⁡xbb=0
dsolve⁡ode3
Methods for first order ODEs: --- Trying classification methods --- trying homogeneous types: differential order: 1; looking for linear symmetries trying exact Looking for potential symmetries trying an equivalence to an Abel ODE trying 1st order ODE linearizable_by_differentiation --- Trying Lie symmetry methods, 1st order --- -> Computing symmetries using: way = 3 -> Computing symmetries using: way = 4 -> Computing symmetries using: way = 5 trying symmetry patterns for 1st order ODEs -> trying a symmetry pattern of the form [F(x)*G(y), 0] -> trying a symmetry pattern of the form [0, F(x)*G(y)] -> trying symmetry patterns of the forms [F(x),G(y)] and [G(y),F(x)] 1st order, trying the canonical coordinates of the invariance group -> Calling odsolve with the ODE, diff(y(x),x) = -y(x)/(y(x)^b)*x^a/x, y(x) *** Sublevel 2 *** Methods for first order ODEs: --- Trying classification methods --- trying a quadrature trying 1st order linear trying Bernoulli <- Bernoulli successful <- 1st order, canonical coordinates successful <- symmetry patterns of the forms [F(x),G(y)] and [G(y),F(x)] successful
y⁡x=−xa⁢b−RootOf⁡∫` `_Z1−−b+_a1b−b⁢H⁡a1aa⁢b+−b+_a1bb⁢aa⁢b⁢a1aa⁢b+−b+_a1b−b⁢H⁡a1aa⁢b+−b+_a1bb⁢aa⁢b⁢a1aa⁢_a+aⅆ_a⁢a2+c__1⁢a⁢b−xa⁢b⁢aa1b
For this example
ode4≔x⁢diff⁡y⁡x,x+y⁡x+2⁢x2−4⁢x⁢y⁡x−4⁢x2−4⁢a=0
ode4≔ⅆⅆxy⁡x⁢x+y⁡x+2⁢x2−4⁢x⁢y⁡x−4⁢x2−4⁢a=0
dsolve⁡ode4,way=patterns
Methods for first order ODEs:*** Sublevel 2 *** symmetry methods on request -> Computing symmetries using: way = patterns
<- successful computation of symmetries.1st order, trying reduction of order with given symmetries:
1st order, trying the canonical coordinates of the invariance group-> Calling odsolve with the ODE, diff(y(x),x) = (-2*x-y(x))/x, y(x) *** Sublevel 3 *** Methods for first order ODEs: --- Trying classification methods --- trying a quadrature trying 1st order linear <- 1st order linear successful <- 1st order, canonical coordinates successful 1st order, trying reduction of order with given symmetries:
1st order, trying the canonical coordinates of the invariance group<- 1st order, canonical coordinates successful
1,−2−yx
y⁡x=−x2+ax,y⁡x=c__12−2⁢c__1⁢x−ax
the symmetry pattern approach led to a simpler answer than the one which could be obtained through dsolve's default algorithms.
See Also
canoni
dsolve
dsolve,Lie
PDEtools
equinv
gensys
infgen
infolevel
invariants
odeadvisor
symgen
transinv
Download Help Document