4. Système d’équations et ordre 2#

Le but est de voir comment utiliser la méthode d’intégration d’Euler explicite pour étudier le régime transitoire d’un système d’équations. On a alors un système d’équations différentielles. La théorie relative à la méthode d’intégration par Euler explicite ayant déjà été donnée, nous allons ici partir d’un exemple pour comprenre sa généralisation à des systèmes d’ordre supérieurs.

4.1. Système d’équations - Position du problème#

On s’intéresse au système d’équations différentielle suivant :

{dudt=1τv2τudvdt=1τv1τu

4.1.1. Vision vectorielle#

Le système d’équations différentielles précédent peut être vu comme une seule équation différentielle d’ordre 1 faisant un intervenir des vecteurs:

ddt(uv)=(1τv2τu1τv1τu)

soit, en définissant le vecteur:

Y(t)=(u(t)v(t))

Sa dérivée est:

(4.1)#dYdt=F(t,Y(t))

avec :

F(t,Y(t))=(1τv(t)2τu(t)1τv(t)1τu(t))

On rappelle que d’un point de vue vectoriel:

  • u = Y[0] et v = Y[1].

  • F prend comme argument un vecteur Y (de taille 2) et renvoie un vecteur de taille 2.

  • On n’a techniquement pas besoin du temps puisque F ne dépend pas explicitement du temps mais on prendra l’habitude de le mettre comme argument même si on ne l’utilise pas (pour des fonctions comme solve_ivp).

4.1.2. Schéma d’Euler#

Le principe du schéma d’Euler est alors identique au cas d’ordre 1 avec une seule fonction:

Yk+1Yk+F(tk,Yk)×h

avec Yk=Y(tk) et h=tk+1tk

Dans l’expression précédente, la somme correspond à la somme vectorielle (somme des coordonnées terme à terme w1+w2) et la multiplication à la multiplication d’un vecteur par un scalaire (λw).

Il faudra juste veiller à ce que la fonction F renvoie un vecteur numpy et que y0 soit un vecteur numpy dans les programmes (de manière à faciliter la somme vectorielle et la multiplication par un scalaire - pas besoin de boucle). Les valeurs uk et vk calculées aux instant tk=t0+hk sont alors stockées dans deux vecteurs numpy (on pourra les rassembler dans un seul tableau numpy à deux colonnes comme le fait odeint (ce que fera naturellement la fonction euler créée dans la partie précédente) ou à deux lignes comme le fait solve_ivp.

4.2. Système d’ordre 2#

Lors qu’on doit résoudre un système d’ordre 2 du type:

d2ydt2=G(t,y(t),dydt(t))

on peut toujours le réécrire sous la forme d’un système d’équations différentielles d’ordre 1 où les deux fonctions inconnues sont:

Y(t)=(u(t)=y(t)v(t)=y˙(t))

En effet, la dérivée de Y est:

(4.2)#dYdt=(y˙(t)y¨(t))=(v(t)g(t,u(t),v(t)))

On peut donc se ramener au cas précédent en posant:

F(t,Y(t))=(v(t)g(t,u(t),v(t)))

La méthode permettant de résoudre un système d’équation permettra donc aussi de résoudre un système d’ordre 2 (et on obtient en prime la dérivée de la solution aux instants tk).