dsolve
setup dsolve's parameters and solving schemes
Description
This help-page is directed to people interested in programming new methods or just curious about dsolve's structure. For standard users, it is recommended to not to change dsolve's defaults; be aware that changing these defaults without clearly understanding what is being done may just result in a significant loss in dsolve's performance.
Many of the defaults of dsolve can be changed by assigning some appropriate environment variables, used by dsolve as solving parameters (see also dsolve,Lie). Also, new solving methods can be plugged into dsolve's structure, any of the existing solving methods can be removed, and the order in which they are applied can be changed. This page has the purpose of providing the required information concerning all these subjects.
By default, dsolve will try to solve all the intermediate integrals found during the solving process, but in some cases it will prefer using the inert Int instead (for instance when large and complex-structure answers by int may complicate the solving process). It is then possible to set up the integrator used by dsolve by assigning _Env_odsolve_int to one of: int; `PDEtools/int` or Int. The default is `PDEtools/int`. The use of int as the integrator will force the evaluation of integrals in all cases, and the acceptance by dsolve of all the answers returned by int. The use if Int as the integrator will prevent the evaluation of integrals in general (in many cases speeding up the solving process but sometimes making it impossible). The use of `PDEtools/int` as the integrator permits dsolve to monitor the answers returned by int as to avoid the most usual complications which may happen in the posterior steps of the solving process. In all the cases, if at the end of the solving process an answer involve integrals, these will finally be expressed using Int.
All dsolve's solving schemes belongs to 3 different blocks of routines:
1) classification schemes
2) semi-classification schemes
3) Lie's symmetry method
It is possible to turn ON / OFF each of these 3 sectors separately by assigning true or false to each of: _Env_use_class, _Env_use_semiclass and _Env_use_Lie. Methods belonging to 1) are expected to return an answer in all the cases (if the given ODE satisfies the corresponding pattern), Methods belonging to 2) involve some "trial and error" which may sometimes not lead to an answer, even when the ODE matches the appropriate pattern in principle. Finally, the method of symmetries is mostly used with non-classifiable ODEs, involves looking for particular solutions for the PDE for the coefficients of possible infinitesimal generators of invariance Lie groups, and the success of the scheme cannot be determined a priori in general.
Concerning the classification methods presently used by dsolve, they can be seen via:
ODEtools/init(): # to load the routines
indices(`dsolve/methods`); # a table of solving methods
1,semiclass,1,2,special_functions,2,linear_nonhomogeneous,high,nonlinear,1,development,3,development,2,development,2,linear_homogeneous in Normal Form,3,linear_homogeneous,2,linear_homogeneous all methods,high,development,1,extra,2,linear_homogeneous other,3,nonlinear,2,linear_homogeneous,2,hypergeometric,high,linear_nonhomogeneous,1,high_degree,3,linear_nonhomogeneous,2,nonlinear,high,linear_homogeneous,1,special,2,linear_homogeneous as given
Methods for 1st order ODEs
`dsolve/methods`[1];
quadrature,linear,Bernoulli,separable,inverse_linear,homogeneous,Chini,lin_sym,exact,Abel,pot_sym
Methods for 2nd order linear homogeneous ODEs
`dsolve/methods`[2,'`linear/homogeneous`'];
dsolve/methods2,linear/homogeneous
During the solving process, once the differential order and the subtype of problem was identified, dsolve tries the related methods in the order displayed above. This order can be changed as desired, and methods can be plugged or removed too. For example consider removing 'Bernoulli' from the solving scheme and changing the order as to try exact before Chini; this can be achieved via:
`dsolve/methods`[1] := subs(['Bernoulli'=NULL, exact=Chini, Chini=exact], `dsolve/methods`[1]);
dsolve/methods1≔quadrature,linear,separable,inverse_linear,homogeneous,exact,lin_sym,Chini,Abel,pot_sym
Since the methods used by dsolve are those appearing in the table `dsolve/methods`, it is possible to plug-in a new solving method by you as well, provided that some basic rules are followed. These rules will be explained in the next update of the help-pages of the package.
See Also
DEtools
int or Int
PDEtools
Download Help Document