Il existe de nombreuses façons d'essayer de « résoudre » les équations différentielles. Certaines relèvent du calcul formel, d'autres pas. Ce texte est destiné à présenter rapidement ces méthodes les unes par rapport aux autres tout en précisant les contributions de l'équipe de calcul formel du LIFL. Voici une équation différentielle ordinaire avec une condition initiale. L'inconnue est une fonction du temps x(t).

x' = x(3 - x),
x(0) = 1.

Intégration numérique

Intégrer numériquement l'équation avec sa condition initiale, consiste à approximer le graphe de sa solution par un nombre fini de points. L'intégration numérique n'est pas considérée comme une branche du calcul formel. Voici toutefois comment procéder avec le logiciel de calcul formel MAPLE. On entre l'équation différentielle

> equadiff := diff(x(t),t) - x(t)*(3-x(t));
                                /d      \ 
                    equadiff := |-- x(t)| - x(t) (3 - x(t)) 
                                \dt     /

On la résout en précisant la condition initiale et le fait qu'on veut une intégration numérique.

> solution := dsolve ({equadiff, x(0)=1}, x(t), numeric);
                   solution := proc(x_rkf45)  ...  end proc 

La solution au sens de MAPLE est une fonction qui permet d'évaluer (au moins de façon approchée) la solution de l'équation différentielle pour différentes valeur du temps.

> solution (0);
                              [t = 0., x(t) = 1.]

> solution (0.5);
                     [t = 0.5, x(t) = 2.07431460567341386]

La plus simple des méthodes d'intégration numérique est la méthode d'Euler. En général, on utilise des méthodes plus sophistiquées comme les schémas de Runge-Kutta. La mise au point des schémas de Runge-Kutta nécessite la résolution de certains systèmes d'équations qui ne peut être menée en pratique que par des techniques d'algèbre non commutative auxquelles Michel Petitot a contribué.

Intégration sous forme fermée

Intégrer sous forme fermée (ou close) une équation différentielle consiste à en calculer une solution sous la forme d'une formule. C'est le type d'intégration qu'on apprend dans les cours de mathématiques traditionnels à l'entrée en université. L'intégration sous forme fermée est une des branches du calcul formel. L'équipe du LIFL y a contribué indirectement en développant des méthodes capables de déterminer si deux équations différentielles données sont équivalentes, à un changement de variables près (voir plus bas). En général, l'intégration sous forme fermée n'est malheureusement pas possible : ce n'est pas parce qu'une équation différentielle a une solution que celle-ci peut forcément se noter sous la forme d'une formule finie ne faisant intervenir que les fonctions bien connues : exponentielles, sinus, arc tangente etc ... Sur l'exemple, c'est toutefois possible. C'est ce que montrent les commandes ci-dessous :

On résout l'équation différentielle sous forme fermée. Comme on ne précise pas la condition initiale, on obtient une formule dépendant d'une constante arbitraire, notée _C1 par MAPLE.

> dsolve (equadiff, x(t));
                                          3
                          x(t) = -------------------
                                 1 + 3 exp(-3 t) _C1

Analyse qualitative

L'analyse qualitative d'une équation différentielle consiste à se faire une idée de la forme des solutions de l'équation sans la résoudre. Voici le type de résultat qu'on peut obtenir par analyse qualitative sur l'exemple.

« Il y a deux solutions constantes : les fonctions x(t) = 0 et x(t) = 3. Si la condition initiale x(0) est inférieure à 0, la courbe est décroissante et tend vers moins l'infini (lorsque le temps tend vers plus l'infini). Si la condition initiale est comprise entre 0 et 3, la courbe est croissante et tend vers la valeur limite 3. Si la condition initiale est supérieure à 3, la courbe est décroissante et tend vers la valeur limite 3. La solution constante x(t) = 0 est dite répulsive. La solution constante x(t) = 3 est dite attractive. »

L'analyse qualitative d'une équation et plus généralement d'un système d'équations différentielles peut être menée par des méthodes numériques ou des méthodes formelles. Le paquetage MAPLE RegularChains, mis au point par des membres de l'équipe (Marc Moreno Maza, François Lemaire), est un outil qui peut aider à l'analyse qualitative d'un système d'équations différentielles. Il est dédié à la résolution de systèmes d'équations polynomiales.

Élimination différentielle

L'élimination différentielle est une méthode de calcul formel à laquelle l'équipe a contribué. Pour en comprendre l'utilité, il est nécessaire de considérer des systèmes d'équations différentielles. En voici un exemple.

x' = 0.7 y + sin (2.5 z),
y' = 1.4 x + cos (2.5 z),
1 = x^2 + y^2.

Même un lecteur peu familier avec ce type de système, qui mélange équations différentielles et non différentielles, peut réaliser qu'intégrer numériquement ce système est problématique. Essayons de l'intégrer numériquement avec la méthode d'Euler. Il y a trois fonctions inconnues x(t), y(t) et z(t). Supposons donc fixées trois conditions initiales x(0), y(0) et z(0) et un pas de temps h. En remplaçant x, y et z par les conditions initiales dans les deux premières équations, on parvient facilement à calculer les valeurs des dérivées x'(0) et y'(0) et donc des approximations de x(h) et de y(h). Par contre, on ne voit aucun moyen simple de calculer z'(0) et donc l'approximation de z(h). Il semble qu'il manque au système une équation de la forme

z' = quelque chose.

L'idée, c'est que cette équation ne manque pas : elle est cachée dans le système. L'élimination différentielle permet de révéler de telles équations cachées. Voici comment procéder avec le paquetage MAPLE diffalg, dont la première version a été mise au point par un membre de l'équipe (François Boulier) et auquel d'autres chercheurs (Évelyne Hubert, François Lemaire, Edgardo Cheb-Terrab) ont contribué. On charge en mémoire le paquetage diffalg

> with (diffalg):

On affecte le système à simplifier à la variable syst. Comme les méthodes d'élimination différentielle ne s'appliquent qu'à des systèmes polynomiaux et que le système initial ne l'est pas, on code le sinus et le cosinus en introduisant deux nouvelles variables et trois nouvelles équations : s(t) désigne le sinus, c(t) le cosinus. Le système obtenu est polynomial. Il est équivalent au système de départ.

> syst := [diff(x(t),t) - 7/10*y(t) - s(t),
>              diff(y(t),t) - 14/10*x(t) - c(t),
>              x(t)^2 + y(t)^2 - 1,
>              diff(s(t),t) - 25/10*diff(z(t),t)*c(t),
>              diff(c(t),t) + 25/10*diff(z(t),t)*s(t),
>              s(t)^2 + c(t)^2 - 1]:

On affecte à la variable R le contexte dans lequel le calcul d'élimination doit se faire. On indique qu'il n'y a qu'une seule dérivation (par rapport au temps), que la notation est la notation standard « diff » de MAPLE et on précise le classement (« ranking » en Anglais). Sans entrer dans les détails, le fait que la fonction inconnue z soit située à droite dans la liste des fonctions inconnues indique au logiciel qu'on cherche une équation de la forme

z' = quelque chose.

> R := differential_ring (derivations = [t], notation = diff, ranking = [[s, c, x, y, z]]):

On applique l'algorithme d'élimination différentielle à syst et R. Le résultat est affecté à la variable ideal.

> ideal := Rosenfeld_Groebner (syst, R):

Le calcul fini, on peut demander la liste des équations obtenues. L'équation recherchée est un peu volumineuse. Elle apparaît en deuxième place dans la liste.

> rewrite_rules (ideal [1]);
 d                          d                          6             4
[-- y(t) = 7/5 x(t) + c(t), -- z(t) = 1/25 (-12348 y(t)  + 25809 y(t)
 dt                         dt

                 2                         2
     - 16961 y(t)  + 3500 - 14700 x(t) y(t)  c(t) + 3940 x(t) c(t)

                           4    /          6           4           2
     + 13230 c(t) x(t) y(t) )  /  (441 y(t)  - 882 y(t)  + 541 y(t)  - 100),
                              /
                                  2
                y(t) (21 - 21 y(t)  + 10 x(t) c(t))
    s(t) = 1/10 -----------------------------------,
                                     2
                            -1 + y(t)

        2                  2            541     2   441     4
    c(t)  = -21/5 x(t) y(t)  c(t) + 1 - --- y(t)  + --- y(t) ,
                                        100         100

        2           2
    x(t)  = 1 - y(t) ]

Problèmes d'équivalence

Deux équations différentielles ordinaires (EDO) sont dites équivalentes si elles sont égales à un changement de variables près. Un solveur de problèmes d'équivalence a été mis au point dans l'équipe par Michel Petitot et Raouf Dridi. Ce solveur s'appuie sur des travaux préliminaires de Sylvain Neut (paquetage MAPLE Cartan) et, plus généralement, sur la méthode d'équivalence d'Élie Cartan. En voici le principe :

  • Précalculer une table d'équations différentielles connues (équation de Van Der Pol, équations de Painlevé, d'Airy ... et même toutes celles du livre de Kamke par exemple).
  • Étant donné une équation différentielle à résoudre, le solveur cherche une EDO dans la liste ainsi qu'un changement de variables qui réalise l'équivalence.

Le problème difficile consiste à trouver le changement de variables. Dans le cas général, il est lui-même solution d'un système d'équations aux dérivées partielles. Notre solveur se concentre sur les changements de variables qui ne nécessitent aucune intégration. Informellement, l'idée consiste à restreindre le groupe de transformations autorisées jusqu'à-ce que le groupe de symétrie de l'équation soit discret.

Exemple de l'équation de Van Der Pol

Considérons l'équation différentielle ordinaire du second ordre suivante:

 2
d
--- y(x) =
  2
dx

     /d      \2   /d      \        2          4 /d      \          2
    -|-- y(x)|  + |-- y(x)| epsilon  - epsilon  |-- y(x)| exp(y(x))  - 1
     \dx     /    \dx     /                     \dx     /

Pour cette équation, le solveur classique dsolve de MAPLE renvoie une équation du premier ordre compliquée ainsi qu'une quadrature (intégrale) non calculée. Notre solveur trouve que cette équation est équivalente à celle de Van Der Pol

            / 2      \
            |d       |                 2      /d      \
            |--- y(x)| - epsilon (-y(x)  + 1) |-- y(x)| + y(x) = 0
            |  2     |                        \dx     /
            \dx      /

pour le changement de variables (qui préserve les solutions périodiques):

                                                         2
           (x, y, epsilon) -> (x, exp(y) epsilon, epsilon )