convert ODEs to other ODEs of different type
convert(ODE, TYPE, y(x), keep, simplifier = ...)
convert(ODE, y_x, implicit)
ODE (ordinary differential equation)
one of: y_x, Riccati, linearODE, NormalForm, Abel, Abel_RNF, FirstKind, SecondKind, DESol, MobiusX, MobiusY, and MobiusR
dependent variable of the ODE; required only if ODE contains more than one function that is differentiated
(optional); specify that the returned ODE contain the same independent and dependent variables as the given ODE
simplifier = ...
(optional); specifies a simplifier to be used instead of the default; two shortcuts are available: parfrac and size
avoid the automatic isolation of the highest derivative; valid only if the TYPE parameter has the value yx
The convert ODE routines provide conversion schemes for ordinary differential equations (ODEs) that are frequently used in the literature, or that may be useful for other reasons. As a convention, results are returned as a sequence of two elements: the resulting ODE and the transformation of variables used to obtain it (see the examples below).
The conversion schemes available are:
y_x - interchanges the roles between the dependent and independent variable;
NormalForm - rewrites in Normal form linear ODEs (any order) as well as first order Riccati and Abel type ODEs;
Riccati - converts a second order linear ODE to a first order one of Riccati type;
linearODE - converts a first order Riccati type ODE to a second order linear one;
Abel - converts a first order nonlinear ODE to an equivalent Abel ODE when that is possible using some transformations;
Abel_RNF - rewrites an Abel type first order ODE in Rational Normal Form;
FirstKind - rewrites Second Kind Abel ODEs in First Kind form;
SecondKind - rewrites First Kind Abel ODEs in Second Kind form;
MobiusX - converts an arbitrary ODE applying to it a Mobius transformation of the independent variable- say x;
MobiusY - converts an arbitrary ODE applying to it a Mobius transformation of the dependent variable- say y⁡x;
MobiusR - converts a second order linear ODE into another one by sequentially applying three transformations: Riccati, MobiusY, and linearODE;
DESol - rewrites as a DESol the derivative of a DESol.
Regarding the conversion to Rational Normal Form of Abel ODEs, note that the returned ODE has rational coefficients if and only if the invariants of the given Abel ODE are rational in the independent variable. For a more powerful approach towards rational coefficients see also DEtools[power_equivalent].
Example 1. Interchanging the roles between the dependent and independent variables of an ODE
Given an ODE, where the unknown is, say, y⁡x, you can always rewrite it considering y and x=x⁡y as the actual independent and dependent variables, changing dydx=dydx, and so on. The resulting ODE in y,x⁡y is the one returned by convert( ode, y_x) and is obtained by applying the transformation
followed by renaming the variables x=y,y=x. This conversion operation can in many situations transform an otherwise difficult problem into an easy one and vice versa. For instance, this nasty Abel type ODE in y⁡x
ode ≔ ⅆⅆx⁢y⁡x=a0+a1⁢y⁡x+a2⁢y⁡x2+a3⁢y⁡x3s1⁢x+s0⁢y⁡x+r1⁢x+r0
where the 8 coefficients ai,rk,sj are basically arbitrary constants, transforms into this simple and straightforwardly solvable first order linear ODE in x⁡y
The conversion can be applied to non-differential expressions as well, in which case it requires an indication of the (current) dependent variable as extra argument.
sol ≔ convert⁡,y_x,x⁡y
The above is the solution - in implicit form - to the original Abel ODE. Isolating the integration constant, this result is testable as a first integral form of solution (see DEtools[firint]) using DEtools[firtest] or odetest:
This conversion can be applied to arbitrary ODEs. For instance, this second order nonlinear ODE in y⁡x
where A and B are arbitrary functions of y⁡x, becomes a linear ODE in x⁡y
ode ≔ ⅆⅆx⁢y⁡x−D⁡φ⁡y⁡x⁢y⁡x=0
Using the 'implicit' option, you avoid the isolation of the highest derivative in the output.
Example 2. Rewriting ODEs in normal form
This conversion is currently applicable to linear homogeneous ODEs of arbitrary differential order and to first order nonlinear ODEs of Riccati and Abel type.
By definition, a nth order linear ODE is in normal form when the coefficient of the nth-1 derivative is zero.
ode ≔ ⅆ2ⅆx2⁢y⁡x=A⁡x⁢ⅆⅆx⁢y⁡x+B⁡x⁢y⁡x
In above, when using the keep optional argument, the returned ODE is expressed using the same variables (here x,y⁡x) of the given ODE. When the linear ODE is in normal form it is invariant under arbitrary linear transformations of the dependent variable
where P is an arbitrary function of its argument.
This other ODE is already in normal form:
ode ≔ ⅆ3ⅆx3⁢y⁡x=x⁢ⅆⅆx⁢y⁡x+x⁢y⁡x
Hence, the second element in the following output sequence is the scaling transformation, where _C1 can have any value different from zero:
In some cases, however, it is possible to search for a transformation to Normal form such that, in addition, the coefficients are rational. For that purpose, try the more general DEtools[power_equivalent] command, which explores more elaborated transformations.
A Riccati type ODE is in normal form when the coefficients of y⁡x2 and y⁡x in the right-hand side are respectively equal to one and zero; that is, when it is of the form y'⁢=y2+J⁡x for some J⁡x.
The normal form of an Abel type ODE is defined in an analogous manner, y'⁢=y3+J⁡x, but in the Abel case this form cannot be achieved without computing integrals and finding inverses of potentially non-trivial algebraic expressions. For instance, for the general case:
In all cases (linear, Riccati and Abel ODEs) the coefficients of y⁡x and its derivatives are absolute invariants with respect to the equivalence transformations defining the ODE class. These transformations, for ODEs polynomial in the unknown and its derivatives, are always of the form
where F,P,Q are arbitrary functions of their arguments (for linear homogeneous ODEs, Q=0).
Examples 3. and 4. Converting linear second order ODEs into Riccati ones and vice versa
The general form of a second order linear homogeneous ODE is
ode_2 ≔ ⅆⅆx⁢ⅆⅆx⁢y⁡x+A⁡x⁢ⅆⅆx⁢y⁡x+B⁡x⁢y⁡x=0
This type of ODE is invariant under scale transformations of the dependent variable
where _C1 is an arbitrary constant. Due to the presence of this symmetry (the infinitesimals are 0,y, see DEtools[transinv]), you can always reduce the differential order of linear ODEs by one. In the second order case this reduction leads to a first order Riccati type ODE. A sequence with this Riccati ODE and the change of variables performed to obtain it are given by the following:
ode_1 ≔ convert⁡ode_2,Riccati
The transformation equation can also be seen as the solution to the original second order linear ODE, provided that you can solve the reduced Riccati for _a(x).
Note also the introduction, in the equivalent Riccati ODE, of an arbitrary function _F1⁡x. Any _F1⁡x can be used. Typically, you set _F1⁡x=1 or a constant. The original second order ODE can be obtained using the inverse conversion routine, as follows.
In above we are indicating the dependent variable as a third argument; this is required when the given ODE contains more than one function being differentiated.
Depending on the specific linear ODE or Riccati ODE you are working with, these conversion routines, along with the ability to adjust the values of an arbitrary function, may help you find solutions to problems not directly solved by dsolve.
Example 5. Convert to an equivalent Abel type ODE
Some first order nonlinear equations frequently appearing when solving autonomous first order ODE systems in two variables can be mapped into Abel equations. The transformation used to go from the Abel equivalent equation in - say - u⁡x to the given equation in - say - y⁡x is the second operand in the output:
ode ≔ ⅆⅆx⁢y⁡x=λ⁢y⁡x+h⁡x⁢y⁡xn1+g⁡x⁢y⁡xn−1
The more general first order equation which can be mapped into an Abel equation by these routines is
ode ≔ ⅆⅆx⁢y⁡x=y⁡x3−n⁢c0⁡x+c3⁡x+c0⁡x⁢g⁡x3+ⅆⅆx⁢g⁡x⁢g⁡x+c2⁡x⁢g⁡x+c1⁡x⁢g⁡x2⁢y⁡x2⁢n+2⁢c1⁡x⁢g⁡x+3⁢g⁡x2⁢c0⁡x+ⅆⅆx⁢g⁡x+c2⁡x⁢y⁡xn+1+3⁢c0⁡x⁢g⁡x+1⁢c1⁡x3⁢y⁡x2n−1⁢y⁡x+g⁡x⁢y⁡xn
Example 6. Rational Normal Form for Abel type ODEs
As mentioned in 2. above, the normal form for Abel ODEs requires integration to be computed. For that reason some authors prefer to use a different form, not requiring integration, where the coefficient of y⁡x2 and the independent coefficient are respectively equal to zero and one; that is, the ODE is of the form y'⁢=f3x⁢y3+f1x⁢y+1. This form is frequently called in the literature Rational Normal Form because when the invariants of the given ODE (the one originally not in RNF form) are rational in the independent variable, the coefficients in the RNF are rational. However, neither the coefficients of y⁡x in the RNF form are absolute invariants under the transformation defining the class nor these coefficients are rational when the invariants of the given Abel ODE are not. For instance, for this Abel ODE
ode ≔ ⅆⅆx⁢y⁡x=−3⁢x12+1⁢x−x12+1⁢y⁡x32⁢x112−15⁢y⁡x24⁢x134
the conversion to RNF does not imply on rational coefficients:
In some cases, for example, this one, a truly rational coefficients ODE in RNF form can be obtained using the more powerful DEtools[power_equivalent] command, which explores more elaborated transformations
Examples 7. and 8. Converting Abel ODEs from First kind format into Second kind format and vice versa
The ODE of the previous example is in First Kind form. To convert it to Second Kind form use
Note in above the introduction of two arbitrary functions _F1,_F2; basically any values for them suffice for performing the conversion, for instance the choice _F2=0, _F1=1 leads to
To convert Second Kind Abel ODEs into First Kind form the procedure is analogous:
Example 9. Converting ODEs applying MobiusX transformations of the independent variable
A second order linear ODE with constant coefficients:
ode ≔ ⅆ2ⅆx2⁢y⁡x=c1⁢ⅆⅆx⁢y⁡x+c0⁢y⁡x
In the following result, you see the transformed ODE in u⁡t and the Mobius transformation of the independent variable, x, used
transformed_ode ≔ convert⁡ode,MobiusX,a0,a1,b0,b1,u⁡t
All the arguments after MobiusX are optional. If the Mobius parameters are not specified, a transformation of that type is built with global variables _zn.
Mobius transformations of the independent variable move the location of the poles (singularities) of the equation. In this example, the original singularity is irregular at infinity while the one of the transformed ODE resulted moved to −b1b0:
Among useful functionality now available for these convert,ODEs mappings, there is the option to specify a simplifier to be used instead of the default one. For example, this specifies a MobiusX transformation of the form x=t−1t+1 and requests the coefficients of y⁡x and its derivatives to be in partial fraction decomposition form:
When you know the output will not be simplifiable, or just want to get it faster with no simplification costs, use the optional argument simplifier = NONE.
Example 10. Converting ODEs applying MobiusY transformations of the dependent variable
Mobius transformations of the dependent variable - in this example y⁡x - have the property of transforming a linear equation into nonlinear but leaving invariant (in form) the corresponding Riccati equation. To request the coefficients be simplified in size pass the optional argument simplifier = (u -> simplify(u,size)) or the shortcut keyword size as in
The keywords parfrac and size are specially available due to these being the most common situations; these or any other simplification can be requested using, for example, simplifier = (u -> any_procedure(u)).
Check the action of this transformation in the corresponding Riccati equation:
So the transformation uses four arbitrary functions of x, the resulting equation is still of Riccati type
In fact MobiusY transformations define the Riccati class: through these transformations, any Riccati equation can be obtained from any other one.
Example 11. Converting second order linear ODEs applying the composition of transformations Riccati, MobiusY, and linearODE
These non-local transformations (have an integral with derivatives of the dependent variable in the integrand) have the ability of generating the whole second order linear ODE from any given one, and for particular cases of the transformation parameters result in equations with remarkable properties. Consider an arbitrary second order linear ODE
ode ≔ ⅆ2ⅆx2⁢y⁡x=c1⁡x⁢ⅆⅆx⁢y⁡x+c0⁡x⁢y⁡x
Applying MobiusR, we obtain
ode_u ≔ convert⁡ode,MobiusR,0,1,1,0,y⁡x,u⁡x
Applying to this result MobiusR again you reobtain the original equation
In other words, this particular non-local transformation has itself for inverse. Another important property: Depending on the equation, MobiusR transformations add a so-called false singularity (the singularity actually exists but the power series solution does not require a logarithmic term). For example, take for coefficients
value_of_c ≔ c0⁡x=2⁢τ+σ⁢x,c1⁡x=2⁢x−τ
Inserting these values into the generic linear ode we obtain one with one irregular singularity at infinity - so the equation admits 0F1 hypergeometric solutions:
If we now insert these values of cj into the MobiusR transformed ODE for u⁡x, the result is an ODE with one regular (so-called false) and one irregular singularities; thus the equation belongs to the Heun biconfluent class:
ode_u ≔ eval⁡ode_u1,value_of_c
And because this singularity is false the solution to the ODE in u⁡x can also be expressed as a linear combination of hypergeometric functions and its derivatives:
By entering infoleveldsolve≔4 before executing this sequence of inputs, you obtain detailed information regarding these processes, all running in background inside dsolve's subroutines.
Example 12. Converting the derivative of a "DESol" structure into a DESol itself
Consider an arbitrary second order linear ODE
ode ≔ ⅆ2ⅆx2⁢y⁡x+f⁡x⁢y⁡x=0
and the abstract representation for its solution (see DESol)
sol ≔ dsolve⁡ode
If we differentiate sol, the result is returned as an uncomputed derivative
But the derivative of the solution of an nth order linear ODE also satisfies an nth order linear ODE. Hence, it is possible to rewrite this derivative above as a DESol itself, whose contents is also a second order ODE:
Depending on the situation, this rewriting is convenient. For example, it is of use to study the solutions of an ODE for y which we do not know how to solve by studying the solutions of the ODE satisfied by y' which we may know how to solve, or to study the properties of the function y' by studying the properties of the differential equation it satisfies,
These conversions to DESol can be performed with linear ODEs of arbitrary order.
Download Help Document