Center of MechanicsStephan Kaufmann


Leading Orders


The straightforward expansion of a system of PDEs leads to a system of PDEs for every order of the small parameter(s). With physically realistic boundary and initial conditions, many of the functions will vanish in low orders. A rigid proof for the vanishing of these functions is difficult in computer algebra systems, because it requires the solution of PDE's.

The implemented heurisic algorithm for the determination of the leading orders of the functions is based on the assumptions of regularity and strongest coupling. Regularity assumes that functions and their derivatives are of the same order. The principle of strongest coupling requires that the derivatives do not drop out of the equations in the asymptotic limit (the small parameter tends to zero).

Let us consider the following (synthetic) system with one boundary condition:


  eqs =
    D[u[x,y,z,t],x] + eps D[v[x,y,z,t],y] == 0,
    eps D[u[x,y,z,t],y] + D[w[x,y,z,t],z] == 0,
    D[w[x,y,z,t],y] + c D[u[x,y,z,t],{t,2}] == 0,
    v[0,y,z,t] == f[y,z,t]

It contains the functions


  fcts = {u[x,y,z,t], v[x,y,z,t], w[x,y,z,t]};


  IndexForm[eqs, Functions -> fcts]


  u   + eps v   == 0
   ,x        ,y
  eps u   + w   == 0
       ,y    ,z
  c u    + w   == 0
     ,tt    ,y
  v[0, y, z, t] == f[y, z, t]

Since the function f in the boundary condition is of order O(1), v must also be of order O(1). Because of regularity, v,y must also be of order O(1).

We now assume that the boundary conditions for u make it vanish in order O(1). If u would start at order O(eps2), it would not satisfy the principle of strongest coupling in the first equation. Therefore, u has to start at order O(eps).

An analogous argument for the second equation, knowing that u is O(eps), shows that w is O(eps2).

A similar argument deduces from the third equation that the parameter c must be of order O(eps).

This algorithm is implemented in the functions FindOrders and FindParameterOrder.


FindOrders[equations, fcts, knownFcts, spacevars, eps] returns a list of lists. Each sublist contains the functions of one order, starting with O(1).

- the list of equations, initial and boundary conditions,
- the unknown functions,
- the given functions known to be of order O(1),
- the list of space variables,
- the small parameter.

The list of functions knownFcts, known to be of order O(1), may consist of inhomogeneities in the inital or boundary conditions, or of functions which also appear in the list fcts.



  FindOrders[eqs, fcts, f[y,z,t], {x,y,z}, eps]


  {{v[x, y, z, t]}, {u[x, y, z, t]}, {w[x, y, z, t]}}


  ords = FindOrders[Drop[eqs, -1], fcts, v[x,y,z,t],
    {x,y,z}, eps]


  {{v[x, y, z, t]}, {u[x, y, z, t]}, {w[x, y, z, t]}}


FindParameterOrder[equations, orders, param, eps] determines the order of an additional parameter.

- the list of equations,
- the orders of the functions (output of FindOrder),
- the parameter,
- the small parameter.



  FindParameterOrder[eqs, ords, c, eps]


  {c -> eps C[1]}


OrderRules[orders, fcts] produces rules (based on the heuristic algorithm) which can be substituted into the results of PolyOrderListPDE.

- a list produced by FindOrder or FindStartOrder,
- the functions.



  oRules = OrderRules[ords, fcts]


         (__)                                (__)
  {(u[0])    [__] -> 0, u[0][__] -> 0, (w[0])    [__] -> 0, w[0][__] -> 0, 
    (w[1])    [__] -> 0, w[1][__] -> 0}


  IndexForm[PolyOrderListPDE[eqs, fcts, eps, 2],
    TabForm -> False]


     (0)          (0)            (0)       (0)
  {{u      == 0, w      == 0, c u       + w      == 0, 
        ,x           ,z             ,tt       ,y
     v   [0, y, z, t] == f[y, z, t]}, 
      (1)      (0)          (0)      (1)            (1)       (1)
    {u      + v      == 0, u      + w      == 0, c u       + w      == 0, 
         ,x       ,y           ,y       ,z             ,tt       ,y
      (1)                      (2)      (1)          (1)      (2)
     v   [0, y, z, t] == 0}, {u      + v      == 0, u      + w      == 0, 
                                  ,x       ,y           ,y       ,z
        (2)       (2)          (2)
     c u       + w      == 0, v   [0, y, z, t] == 0}}
           ,tt       ,y


  PolyOrderListPDE[eqs, fcts, eps, 2] /. oRules;


  IndexForm[%, TabForm -> False]


  {{True, True, True, v   [0, y, z, t] == f[y, z, t]}, 
      (1)      (0)                  (1)           (1)
    {u      + v      == 0, True, c u       == 0, v   [0, y, z, t] == 0}, 
         ,x       ,y                   ,tt
      (2)      (1)          (1)      (2)            (2)       (2)
    {u      + v      == 0, u      + w      == 0, c u       + w      == 0, 
         ,x       ,y           ,y       ,z             ,tt       ,y
     v   [0, y, z, t] == 0}}

Up to PerturbationPDE


10-Feb-2016 | Stephan Kaufmann | ZfM | ETH