Painlevé Test

IMPORTANT MESSAGE:

It can happen that our software for the PainleveTestV2 fails to  find all possible dominant behaviors .  In particular,  
    this can happen when one or more of the leading order exponents (alphas)  remain undetermined .   In such cases
our software has no straightforward way of finding (or trying) values for the undetermined alphas .   

WHEN IN DOUBT,  
    the software should be run with DominantBehaviorMin  ->  integer1  and/or  DominantBehaviorMax  ->  integer2,  
    where  integer1 and integer2 can be specified  by the user .  
        For example,  
    DominantBehaviorMin  ->  -3 and/
            or DominantBehaviorMax  ->  
        4 
were choosen,  
    the the code will consider the following choices for the free alphas :  -3, -2, -1, 0, 1, 2, 3,  
    and 4. 

Default values : 
        DominantBehaviorMin is set to  - 
          3 and  DominantBehaviorMax is set to  - 
          1 by default .  So,  if not values are selected,  
    the code will run the test for the default values for the alphas starting  from the default DominantBehaviorMin to the default DominantBehaviorMax value .  Thus,  for each undetermined alpha,  
    the code will consider the values  - 3, -2 and  - 
      1.  

Selecting appropriate values for DominantBehaviorMax is important when one or more of the alphas are positive and the 
other alphas remain undetermined .  
        Examples are given at the bottom of this notebook . 

Why did we not design more sophisticated code that would automatically compute bounds for the undetermined values?  This is largely due to the lack of reliable Mathematica functions that handle inequalities.

To load the package, you must set the directory to where the file is located, say c:\myDirectory, and load the package as follows:

\(\(\( (*\ \(SetDirectory["c:\myDirectory"];\)\ *) \)\(
\)\( (*\ 
      For\ example, \ 
      SetDirectory["d:\demopainlevetest"]\ *) \)\)\)

SetDirectory["d:\\demopainlevetest"]

Get["PainleveTestV2.m"]

The companion paper by Baldwin and Hereman, entitled ``Symbolic Software for the Painleve Test of Nonlinear Ordinary and Partial
Differential Equations" has been published in the Journal of Nonlinear Mathematical Physics, vol. 13, number 1, Februrary 2006,
pages 90-110.  

A short description of how to use the package can be obtained by entering:

?? PainleveTest

As a first example, we consider the equation due to Korteweg and de Vries (the KdV equation) :

PainleveTest[{D[u[x, t],  t] + 6*u[x, t]*D[u[x, t],  x] + 
            D[u[x, t],  {x, 3}] == 0},  
u[x, 
        t],  {x, t} ,  Verbose  ->  True ]

The output of the Painleve Test is in the form {{Dominant Behavior, Resonances, {Constants of Integration, Constraints}, ...}.  In this example, the dominant behavior implies that the singularity manifold given by

g (x, t) = 0,

is a double pole and the solutions has a Laurent series expansion of the form

u (x, t)  =  (g^(-2)) (x, 
          t)  (∑_(n = 0)^∞) (Subscript[u, n]) (x, 
              t) (g^n) (x, t),

where (Subscript[u, n])(x, t) are analytic functions in the neighborhood of the singularity manifold g  =  0.   The integer resonances r  =  -1, 4, 6 indicate that the solution lacks any algebraic branch-points in the neighborhood of the singularity manifold.  Furthermore, since the compatibility conditions were trivially satisfied, the solution lacks logarithmic branch-points in the neighborhood of the singularity manifold. Indeed, at resonance levels r = 4 and r = 6, there were arbitrary coefficients  in the series and at all other levels the coefficients (also called integration constants) were unambigiously and uniquely determined. 

Detail can be seen for each of the three main steps of the algorithm by setting DominantBehaviorVerbose, ResonancesVerbose, and ConstantsOfIntegrationVerbose to a number between 1 and 3  (where larger numbers give incrementally more detail). 
We run the same example to see a full trace of the computations.

PainleveTest[{D[u[x, t],  t] + 6*u[x, t]*D[u[x, t],  x] + 
            D[u[x, t],  {x, 3}] == 0},  
u[x, 
        t],  {x, t},  Verbose  ->  True,  
      DominantBehaviorVerbose  ->  3,  
      ResonancesVerbose  ->  
        3,  
ConstantsOfIntegrationVerbose  ->  
        3]

The Weiss-Kruskal simplified algorithm is also implemented and can be activated with the KruskalSimplification -> x option. 
If so, the code uses the simplified Kruskal ansatz where g(x, t)  ≡  x  -  h(t) for the singularity manifold. The coefficients in the
Laurent series are functions of t only, which drastically simplifies the computations.

PainleveTest[{D[u[x, t],  t] + 6*u[x, t]*D[u[x, t],  x] + 
            D[u[x, t],  {x, 3}] == 0},  
u[x, 
        t],  {x, t},  KruskalSimplification -> x,  
      Verbose  ->  True,  DominantBehaviorVerbose  ->  3,  
      ResonancesVerbose  ->  3,  
      ConstantsOfIntegrationVerbose  ->  3]

Let us now turn to our second example: a system of nonlinearly coupled Korteweg-de Vries equations (due to Hirota and Satsuma). This example will take a while.
So, be patient!

PainleveTest[{-aa*D[u[x, t],  {x,  3}] - 
            6*aa*u[x, t]*D[u[x, t],  x] + 6*v[x, t]*D[v[x, t],  x] + 
            D[u[x, t],  t]  ==  
          0, 
D[v[x, t],  {x,  3}] + 
            3*u[x, t]*D[v[x, t],  x] + D[v[x, t],  t]  ==  
          0},  
{u[x, t], 
        v[x, t]},  
{x, t}]

Here, we see that the system has a parameter, aa.  Note that (i) there are two choices for the dominant behavior of the solution, and (ii) the combatibility condition implies that aa = 1/2. 

Below, the Verbose option is set to True in order for the user to see a detailed trace of the computations.  A greater level of  detail can be see for each of the three main steps of the algorithm by setting DominantBehaviorVerbose, ResonancesVerbose, or ConstantsOfIntegrationVerbose to a number between 1 and 3 (where larger numbers give incrementally more detail).

PainleveTest[{-aa*D[u[x, t],  {x,  3}] - 
            6*aa*u[x, t]*D[u[x, t],  x] + 6*v[x, t]*D[v[x, t],  x]  + 
            D[u[x, t],  t]  ==  
          0, 
D[v[x, t],  {x,  3}] + 
            3*u[x, t]*D[v[x, t],  x] + D[v[x, t],  t]  ==  
          0},  
{u[x, t], 
        v[x, t]},  
{x, 
        t}, 
Verbose -> 
        True, 
KruskalSimplification -> 
        x,   DominantBehaviorVerbose  ->  3,  
      ResonancesVerbose  ->  3,  
      ConstantsOfIntegrationVerbose  ->  3]

ODEs

PI - Painleve Equation I

PainleveTest[w''[z] == 6*w[z]^2 + z, w[z], z]

PII - Painleve Equation II

PainleveTest[w''[z] == 2*w[z]^3 + z*w[z] + α, w[z], 
      z]

Chazy Equation:  The Chazy equation has only negative resonances.

PainleveTest[
y'''[x] == 
        2*y[x]*y''[x] - 3*y'[x]^2, 
y[x], x, 
      Verbose -> True]

Example of an ODE with one positive and one negative alpha (Ramani, Grammaticos and Bountis).

PainleveTest[{
D[x[t],  t]  ==  
          x[t]*(a - x[t] - y[t]), 
D[y[t], 
            t]  ==  
          y[t]*(x[t]  - 
                1 )
},  
{x[t], 
        y[t]},  
{t}, 
Verbose -> 
        True,    DominantBehaviorMin  ->  -5  , 
DominantBehaviorMax  ->  
        5 
]

F-XVIII (Cosgrove)

PainleveTest[
y''''[
          x] == -5*y'[x]*y''[x] + 5*y[x]^2*y''[x] + 
          5*y[x]*y'[x]^2 - 
          y[x]^5 + (λ*x + α)*
            y[x] + γ, 
y[x], x]

Single PDEs

Fisher Equation

PainleveTest[{D[u[x, t], {x, 2}] + c*D[u[x, t], x] - u[x, t]^2 + 
            u[x, t] == 0}, u[x, t], {x, t}, 
      KruskalSimplification -> x]

Cylindrical KDV Equation

PainleveTest[{a[t]*D[u[x, t],  x] + D[u[x, t],  {x,  4}] + 
          6*u[x, t]*D[u[x, t],  {x,  2}] + 6*D[u[x, t],  x]^2 + 
          D[u[x, t],  {x,  1},  {t,  1}]},  
      u[x, t],  {x, t}]

Burgers' Equations

PainleveTest[{D[u[x, t],  t] + u[x, t]*D[u[x, t],  x] - 
          sigma*D[u[x, t],  {x, 2}]},  u[x, t],  {x, t},  
      Verbose -> True]

Modified KdV

PainleveTest[{D[u[x, t],  t] - 3* u[x, t]^2*D[u[x, t],  x] + 
          2*sigma^2*D[u[x, t],  {x, 3}]}, u[x, t],  {x, t}]

Boussinesq Equation

PainleveTest[{D[u[x, t],  {t, 2}] + 2*u[x, t]*D[u[x, t],  {x, 2}] + 
          2*D[u[x, t],  x]^2 + (1/3)*D[u[x, t],  {x, 4}]},  
      u[x, t],  {x, t}]

Integrable Nonlinear Klein-Gordon Equations

Case I:  Sine-Gorden equation

PainleveTest[{u[x, 
              t]*(D[u[x, t],  {t,  2}] - D[u[x, t],  {x, 2}]) - 
          D[u[x, t],  t]^2 + 
          D[u[x, t],  x]^2  -  (1/2)*u[x, t]^3 + (1/2)*u[x, t]},  
      u[x, t],  {x, t}]

PainleveTest[{-2*D[u[x, t],  t]*D[u[x, t],  x] + 
          2*u[x, t]*D[u[x, t],  {x,  1},  {t,  1}] - u[x, t]^3 + 
          u[x, t]}, u[x, t],  {x, t}]

Case II: Liouville equations

PainleveTest[{u[x, 
              t]*(D[u[x, t],  {t,  2}] - D[u[x, t],  {x, 2}]) - 
          D[u[x, t],  t]^2 + D[u[x, t],  x]^2  -  u[x, t]^3},  
      u[x, t],  {x, t}]

Another example, page 180 in Steeb, where alpha[1]-> -1

PainleveTest[{2*u[x, t]*D[u[x, t],  t] + D[u[x, t],  {x,  2}]}, 
      u[x, t],  {x, t}]

Systems of PDEs

One-Dimensional Nonlinear Schrodinger Equation

PainleveTest[{D[u[x, t],  t] + D[v[x, t],  {x, 2}] + 
          a*v[x, t]*(u[x, t]^2 + v[x, t]^2),  
        D[v[x, t],  t] - D[u[x, t],  {x, 2}] - 
          a*u[x, t]*(u[x, t]^2 + v[x, t]^2)},  {u[x, t],  
        v[x, t]},  {x, t},  KruskalSimplification -> x]

Reduced Maxwell Bloch Equations

PainleveTest[{D[u[x, t], x] + mu*v[x, t],  
        D[v[x, t],  x] - e[x, t]*w[x, t] - mu*u[x, t],  
        D[w[x, t],  x] + e[x, t]*v[x, t],  
        D[e[x, t],  t] + v[x, t]},  {u[x, t], v[x, t], w[x, t], 
        e[x, t]}, {x, t}, 
      KruskalSimplification -> x]

Lorenz Model of a Dissipative System with lim_{epsilon->0}

PainleveTest[{v[x, t] - D[u[x, t],  t],  
        u[x, t] - u[x, t]*w[x, t] - D[v[x, t],  t],  
        u[x, t]*v[x, t] - D[w[x, t],  t]},  {u[x, t],  v[x, t], 
        w[x, t]},  {x, t}, KruskalSimplification -> x]

Nonlinearly coupled interacting harmonic oscillators.

PainleveTest[{D[u[x, t],  {t,  2}] + w1^2*u[x, t]  +  
          mu*v[x, t]*w[x, t],  
        D[v[x, t],  {t,  2}] + w1^2*v[x, t]  +  mu*u[x, t]*w[x, t],  
        D[w[x, t],  {t,  2}] + w1^2*w[x, t]  +  mu*u[x, t]*v[x, t]},  {u[
          x, t],  v[x, t],  w[x, t]},  {x, t}]

Two coupled PDEs

PainleveTest[{-D[u[x, t],  
              t] + (1/
                3)*(-D[u[x, t],  {x,  2}] - (7/2)*
                  D[u[x, t],  x]*v[x, t] + (1/2)*u[x, t]*
                  D[v[x, t],  x] - u[x, t]^2*v[x, t]),  -D[
              v[x, t], {t,  2}] + 
          D[v[x, t],  {x,  2}] - (1/2)*D[u[x, t],  x]*
            v[x, t] + (3/2)*u[x, t]*D[v[x, t],  x]},  {u[x, t],  
        v[x, t]},  {x, t}]

Equation (2) in "A note on the Painlev´e property
of coupled KdV equations by S.Yu.Sakovich.  arXiv:nlin.SI/0402004 v1 2 Feb 2004

PainleveTest[{D[v[x, t], t]  +  6*v[x, t]*D[v[x, t],  x]  +  
              D[v[x, t],  {x,  3}]  ==  
            0, 
D[w[x, t],  t]  +  
              6*a*v[x, t]*D[w[x, t], x ]  +  
              6*(1 - a)*w[x, t]*D[v[x, t],  x]  +  
              D[w[x, t],  {x, 3}]  ==  0} /.  
        a  ->  3/2, 
{v[x, t],  
        w[x, t]}, 
{x, t},  Verbose -> True,  
      KruskalSimplification -> x]

Positive DominantBehaviorMax

Three interesting examples where one of the exponents in the dominant behaviors is positive.  It is important that at least one of the values of (Subscript[α, i]) is negative.  Furthermore, the branch with a positive α is called the non-principal (or non-generic) branch.

Example 1 is a coupled system of KdV - 
          mKdV equations taken from  Integrability of Kersten - 
          Krasilshchik 
coupled KdV - 
        mKdV equations :  
            singularity analysis and Lax pair  by  Kalkani,  
      Sakovich,  
and Yurdusen .  J .  Math .  
          Phys .  44 (4) 2003,  pp .  
          1703-1708.

We first run the test without specifiction of DominantBehaviorMax (which by default will be  - 1).

PainleveTest[{D[u[x, t],  t] == -D[u[x, t],  {x, 3}] + 
            6*u[x, t]*D[u[x, t],  x] - 3*w[x, t]*D[w[x, t],  {x, 3}] - 
            3*D[w[x, t],  x]*D[w[x, t],  {x, 2}] + 
            3*D[u[x, t],  x]*w[x, t]^2 + 
            6*u[x, t]*w[x, t]*D[w[x, t],  x],  
        D[w[x, t],  t] == -D[w[x, t],  {x, 3}] + 
            3*w[x, t]^2*D[w[x, t],  x] + 3*u[x, t]*D[w[x, t],  x] + 
            3*w[x, t]*D[u[x, t],  x]},  {u[x, t],  w[x, t]},  {x, t}, 
      KruskalSimplification -> x]

The software misses two non - 
              generic branches :  
                  alpha1  =  -2 with alpha2  =  2, 
          and alpha1 = -2 with alpha2 =  3.  
 By setting DemominantBehaviorMax sufficiently high, in this case 3 or larger, these branches will be considered .   
Hence,run the test again with the following settings:

PainleveTest[{D[u[x, t],  t] == -D[u[x, t],  {x, 3}] + 
            6*u[x, t]*D[u[x, t],  x] - 3*w[x, t]*D[w[x, t],  {x, 3}] - 
            3*D[w[x, t],  x]*D[w[x, t],  {x, 2}] + 
            3*D[u[x, t],  x]*w[x, t]^2 + 
            6*u[x, t]*w[x, t]*D[w[x, t],  x],  
        D[w[x, t],  t] == -D[w[x, t],  {x, 3}] + 
            3*w[x, t]^2*D[w[x, t],  x] + 3*u[x, t]*D[w[x, t],  x] + 
            3*w[x, t]*D[u[x, t],  x]},  {u[x, t],  w[x, t]},  {x, t}, 
      KruskalSimplification -> x,  
      DominantBehaviorMax -> 3]

Example 2 :  A coupled system of ODEs.

PainleveTest[{
D[x[t],  t]  ==  
          x[t]*(a - x[t] - y[t]), 
D[y[t], 
            t]  ==  
          y[t]*(x[t]  - 
                1 )
},  
{x[t], 
        y[t]},  
{t}, 
Verbose -> 
        True, 
DominantBehaviorMax  ->  
        2
]

Example 3 :  A coupled system of PDEs

PainleveTest[
{D[u[x, t], t]  ==  
          D[u[x, t],  {x,  2}]  -  2*u[x, t]^2  +  
            12*v[x, t], 
D[v[x, t], t]  ==  
          D[v[x, t],  {x,  2}]  -  
            2*u[x, t]*v[x, t]}, 
{u[x, t], 
        v[x, t]}, 
{x, 
        t}, 
Verbose -> 
        True, 
DominantBehaviorMax  ->  
        3, 
KruskalSimplification -> 
        x
]