Example 1. Interchanging the roles between the dependent and independent variables of an ODE
Given an ODE, where the unknown is, say, , you can always rewrite it considering and as the actual independent and dependent variables, changing , and so on. The resulting ODE in is the one returned by convert( ode, y_x) and is obtained by applying the transformation
followed by renaming the variables . 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
>
|
|
| (1) |
where the 8 coefficients are basically arbitrary constants, transforms into this simple and straightforwardly solvable first order linear ODE in
| (2) |
| (3) |
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.
>
|
|
| (4) |
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
>
|
|
| (6) |
where and are arbitrary functions of , becomes a linear ODE in
| (7) |
Another example:
>
|
|
| (8) |
| (9) |
Using the 'implicit' option, you avoid the isolation of the highest derivative in the output.
>
|
|
| (10) |
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.
>
|
|
| (11) |
>
|
|
| (12) |
>
|
|
| (13) |
In above, when using the keep optional argument, the returned ODE is expressed using the same variables (here ) of the given ODE. When the linear ODE is in normal form it is invariant under arbitrary linear transformations of the dependent variable
where is an arbitrary function of its argument.
This other ODE is already in normal form:
>
|
|
| (14) |
Hence, the second element in the following output sequence is the scaling transformation, where _C1 can have any value different from zero:
>
|
|
| (15) |
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.
>
|
|
| (16) |
A Riccati type ODE is in normal form when the coefficients of and in the right-hand side are respectively equal to one and zero; that is, when it is of the form for some .
>
|
|
| (17) |
>
|
|
| (18) |
The normal form of an Abel type ODE is defined in an analogous manner, , 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:
>
|
|
| (19) |
>
|
|
| (20) |
In all cases (linear, Riccati and Abel ODEs) the coefficients of 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 are arbitrary functions of their arguments (for linear homogeneous ODEs, ).
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
>
|
|
| (21) |
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 , 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:
>
|
|
| (22) |
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 . Any can be used. Typically, you set or a constant. The original second order ODE can be obtained using the inverse conversion routine, as follows.
>
|
|
| (23) |
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 - to the given equation in - say - is the second operand in the output:
>
|
|
| (24) |
>
|
|
| (25) |
>
|
|
The more general first order equation which can be mapped into an Abel equation by these routines is
>
|
|
| (27) |
>
|
|
| (28) |
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 and the independent coefficient are respectively equal to zero and one; that is, the ODE is of the form . 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 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
>
|
|
| (29) |
the conversion to RNF does not imply on rational coefficients:
>
|
|
| (30) |
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
>
|
|
| (31) |
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
>
|
|
| (32) |
Note in above the introduction of two arbitrary functions ; basically any values for them suffice for performing the conversion, for instance the choice , leads to
>
|
|
| (33) |
To convert Second Kind Abel ODEs into First Kind form the procedure is analogous:
>
|
|
| (34) |
Example 9. Converting ODEs applying MobiusX transformations of the independent variable
A second order linear ODE with constant coefficients:
>
|
|
| (35) |
In the following result, you see the transformed ODE in and the Mobius transformation of the independent variable, , used
>
|
|
| (36) |
All the arguments after MobiusX are optional. If the Mobius parameters are not specified, a transformation of that type is built with global variables .
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 :
>
|
|
| (37) |
>
|
|
| (38) |
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 and requests the coefficients of and its derivatives to be in partial fraction decomposition form:
>
|
|
| (39) |
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 - 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
>
|
|
| (40) |
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:
>
|
|
| (41) |
>
|
|
| (42) |
So the transformation uses four arbitrary functions of , 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
>
|
|
| (44) |
Applying MobiusR, we obtain
>
|
|
| (45) |
Applying to this result MobiusR again you reobtain the original equation
>
|
|
| (46) |
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
>
|
|
| (47) |
Inserting these values into the generic linear ode we obtain one with one irregular singularity at infinity - so the equation admits 0F1 hypergeometric solutions:
>
|
|
| (48) |
| (49) |
| (50) |
If we now insert these values of into the MobiusR transformed ODE for , the result is an ODE with one regular (so-called false) and one irregular singularities; thus the equation belongs to the Heun biconfluent class:
>
|
|
| (51) |
| (52) |
>
|
|
| (53) |
And because this singularity is false the solution to the ODE in can also be expressed as a linear combination of hypergeometric functions and its derivatives:
>
|
|
| (54) |
By entering 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
>
|
|
| (55) |
and the abstract representation for its solution (see DESol)
| (56) |
If we differentiate sol, the result is returned as an uncomputed derivative
| (57) |
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:
| (58) |
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,
>
|
|
| (59) |
These conversions to DESol can be performed with linear ODEs of arbitrary order.