# A Maple package for computing rational first integrals of planar polynomial vector fields

Authors: A. Bostan, G. Chèze, T. Cluzeau, and J.-A. Weil

I - Content

We consider a planar polynomial vector field

(S):  x' = A(x,y),
y' = B(x,y),

attached to a derivation D:=A(x,y) * d/dx + B(x,y)*d/dy.
A rational first integral of (S) is a non-constant rational function F(x,y) such that D(F)=0.
Moreover a polynomial M(x,y) is a Darboux polynomial for D if there exists a polynomial L(x,y) such that D(M)=L*M.

This web page is dedicated to a Maple package called RationalFirstIntegrals which contains implementations of the algorithms developped in the submitted paper by A. Bostan, G. Chèze, T. Cluzeau, and J.-A. Weil.

This package mainly contains :
• 4 distinct procedures for computing rational first integrals of planar polynomial vector fields,
• 1 procedure for simplifying the expression of a rational first integral,
• 1 procedure for computing Darboux polynomials of planar polynomial vector fields
We illustrate how to use the different procedures in some examples in Section IV below.

II - Download and installation

Our package is available for download: RationalFirstIntegrals.m

To install it, you must proceed as follows:
1. Copy the previous .m file in a directory called "RationalFirstIntegrals"
2. Add this directory to your libname, for example by performing the two following steps:

• Open Maple and type

libname;

• Then, type

libname := " the global path of the directory
RationalFirstIntegrals", the result of the previous step;

3. Type

with(RationalFirstIntegrals);

You must get the list of the functions contained in the package. If you do obtain an error message, then you have probably done something wrong in Step 2.
If you do not manage to install the package, then contact us.

Note that the procedure HeuristicRationalFirstIntegral requires the installation of the package gfun.

III - List of main procedures

Here are the main procedures of our package. See the next section for examples files illustrating how to use them.
1. GenericRationalFirstIntegral

Input:  the polynomials A and B (in the variables x and y) defining the planar polynomial vector field,  a number pt such that A(pt,y) <> 0,
a bound N, and a list param of parameters if the cofficients of A and B contain parameters.

Output: A rational first integral of (S) of degree <= N or "None".

2. ProbabilisticRationalFirstIntegral

Input: the polynomials A and B (in the variables x and y) defining the planar polynomial vector field,  a number pt such that A(pt,y) <> 0,
a list CI containing two rational numbers c_1 and c_2, a bound N, and a list param of parameters if the cofficients of A and B contain parameters.

Output: A rational first integral of (S) of degree <= N, "None" or "I don't know".

Note that we get an error message if one of the rational numbers c_i (i=1,2) of CI satisfies A(pt,c_i) = 0 in which case we need to run the procedure with distinct c_i's.

3. DeterministicRationalFirstIntegral

Input: the polynomials A and B (in the variables x and y) defining the planar polynomial vector field,  a number pt such that A(pt,y) <> 0,
a list S containing two rational numbers a and b such that a < b which encode the set of rational numbers r which satisfy a < r <b,
a bound N, and a list param of parameters if the cofficients of A and B contain parameters.

Output: A rational first integral of (S) of degree <= N or "None".

4. HeuristicRationalFirstIntegral (requires the gfun package)

Input: the polynomials A and B (in the variables x and y) defining the planar polynomial vector field,  a number pt such that A(pt,y) <> 0,
a list CI containing two rational numbers c_1 and c_2, and a bound N >= 3.

Output: A rational first integral of (S) of degree <= N or "Fails".

Note that we get an error message if one of the rational numbers c_i (i=1,2) of CI satisfies A(pt,c_i) = 0 in which case we need to run the procedure with distinct c_i's.

5. SimplifyRFI

Input: the polynomials A and B (in the variables x and y) defining the planar polynomial vector field,  and a rational function F(x,y) which is a rational first integral
of a planar polynomial vector field.

Output:
A rational function G(x,y) which is a rational first integral of the same planar polynomial vector field but written in a more "compact" form or F(x,y) if no more
compact form is found.

6. DarbouxPolynomials

Input: the polynomials A and B (in the variables x and y) defining the planar polynomial vector field,  a number pt such that A(pt,y) <> 0,
and a bound N >= 3.

Output: a list containng the set of all irreducible Darboux polynomials for D of degree <= N, "Infinite number of Darboux polynomials" or "None" .

IV - Example files

V - Bug reports

You can now run your own examples.
If you have any problem with the package, find a bug or want to ask questions, then contact us.
In case of an error in RationalFirstIntegrals, please attach to your e-mail a Maple worksheet which documents the error on a particular example.