Skip to content

Prelle Singer Method

Nijso edited this page Feb 5, 2017 · 14 revisions

Function: prellesingerODE

prellesingerODE(ode,y,x,[options])

The Prelle-Singer method tries to find the explicit analytic solution of a linear or nonlinear first order ordinary differential equation by looking for invariant algebraic curves (IAC's), also known as Darboux polynomials. It returns the solution, or false when the solution could not be found. In principle, the Prelle-Singer method can find the solution of the ODE if the solution is Liouvillian, i.e. it can be written in terms of a finite number of exponentials, integrals or algebraic functions.

examples:

solve Kamke ODE 1.1:

prellesingerODE(kamke1_1,y,x);

where kamke1_1 is the ODE:

kamke1_1 : 'diff(y,x,1)-1/sqrt(a4*x^4+a3*x^3+a2*x^2+a1*x+a0);

solve kamke ODE 1.18:

prellesingerODE(kamke1_18,y,x,'searchExponentialFactors=true);

where kamke1_18 is the ODE:

kamke1_18 : 'diff(y,x,1)-y^2-x*y-x+1;

solve kamke ODE 1.64:

prellesingerODE(kamke1_64,y,x,'returnExplicit=false);

where kamke1_64 is the ODE

kamke1_64 : 'diff(y,x,1)-sqrt((a*y^2+b*y+c)/(a*x^2+b*x+c));

optional arguments:

'searchExponentialFactors = {true,false}

default value : false

If 'searchExponentialFactors = true then the Prelle-Singer method will try to find exponential factors of the form exp(A/B). If this value is set to false, only elementary solutions of the ODE will be found. The Prelle-Singer method of Shtokhamer (1986) and Man (1993) did not do a search for exponential factors. It is usually not needed to search for exponential factors and it slows the computations, but some ode's (e.g. Kamke ode 1.18) can only be solved by including exponential factors in the search.

'returnDarboux = {true,false}

default value : false

if 'returnDarboux = true, then the Prelle-Singer method will return the Darboux polynomials, its multiplicities, and the exponential factors. This setting will overrule 'returnIntFactor.

'returnIntFactor = {true,false}

default value : false if 'returnIntFactor = true, then the Prelle-Singer method will return the integrating factor of the ode. This setting will overrule 'returnExplicit.

'returnExplicit = {true,false}

default value : true

If 'returnExplicit = true, then the Prelle-Singer method tries to return an explicit solution in the dependent variable. During this procedure, the solution will also be simplified and cleaned up a bit to present the answer in a more compact form. Sometimes it is not possible to write the solution in explicit form, and sometimes the explicit form is extremely messy and an implicit form is desired.

'convertImaginary = {true,false}

default value : true

Invariant Algebraic Curves can contain imaginary numbers. If 'convertImaginary=true, the Prelle Singer method will try to convert the curves to an expression that does not contain %i. This means that instead of two complex IAC's, we have 1 real IAC. Usually, getting rid of complex numbers is a good idea. Sometimes, for example for Kamke's ode 1.208, it is necessary to use 'convertImaginary=false

'convertTrig = {true,false}

default value : true

if 'convertTrig = true, then {sin,cos,csc,sec,cot} functions appearing in the ODE will be converted to tan This is usually a good idea, because it will lead to a smaller set of basis functions. Sometimes, for example for Kamke's ode 1.248, it is necessary to use 'convertTrig=false

'basisFunctions = [f1,f2,f3,...,fn]

default value : []

use user-defined basis functions instead of the basis functions that are found by the Prelle-Singer method. For simple ODE's that do not contain transcendental or algebraic terms, the basis functions for an ode of the form y'(x)=f(x,y) are [y,x]. for ODE's containing e.g. log(x), the basis functions are [y,x,log(x)].

global variables:

degreeboundf

default value : 2

maximum degree of the trial polynomials for the invariant algebraic curves. Realistic values are 1,2,3,4. Most ODE's are solved by looking only for curves of degree 2 or less. Looking for curves of a higher degree can take a considerable amount of time.

degreeboundP, degreeboundQ

default value : 4

maximum degree of the trial polynomials for the exponential factor. Realistic values are 1,2,3,4

DEBUGFLAG

default value : 1

prints all debugging messages with a value smaller than or equal to DEBUGFLAG. values range from 0 (no debugging output) to 5 (print everything).

Bibliography

Y.K. Man - Computing Closed Form Solutions of First Order ODEs Using the Prelle-Singer Procedure, J. Symbolic Computation 16,1993

Duarte, Duarte, da Mota - A method to tackle first-order ordinary differential equations with Liouvillian functions in the solution , Journal of Physics A 35(17),2002

Clone this wiki locally