TP n°3 :

APPROXIMATION NUMERIQUE DES PROBLEMES D’EVOLUTION

De nombreux phénomènes naturels dépendent de plusieurs paramètres ; l’étude de leur évolution nous ramène souvent à résoudre des équations différentielles de plusieurs variables et de leurs dérivées partielles respectives. Donnons par exemple 3 équations aux dérivées partielles simples qu’on rencontre souvent en physique :

C’est l’équation de D’Alembert ou équation des cordes vibrantes, c’est aussi l’équation de propagation des ondes électromagnétiques.

C’est l’équation de Laplace, c’est une équation qu’on rencontre souvent en électrostatique et en radioélectricité ; la résoudre c’est trouver la fonction à 2 variables U(x,y).

C’est l’équation de diffusion : soit C la concentration des particules exprimée en kg/m3. La diffusion de ces particules dans un fluide obéit à cette équation aux dérivées partielles – D étant le coefficient de diffusion (m²/s). Cette équation s’applique également à la diffusion de la chaleur : on l’appelle donc " équation de la chaleur ".

Nous nous intéresserons dans ce TP uniquement au premier type d’équations appelé aussi équation d’ondes que nous allons étudier sur un domaine borné en espace. Nous allons alors considérer le problème hyperbolique (Q) suivant :

On suppose que f est de classe C 2 sur ú et g de classe C 1 sur ú , on suppose également que ces 2 fonctions satisfont les conditions de compatibilité f(0) = f(1) = g(0) = g(1) = 0.

Toute solution de l’équation (E) est de la forme : F(x-ct) + G(x+ct) où F et G sont 2 fonctions de classe C 2.

Le but du TP est de trouver F et G lorsque v est astreint à certaines conditions aux limites. Nous supposerons toujours t ³ 0 en convenant que l’origine des temps a été choisie à l’instant où on commence à observer le phénomène représenté par l’équation (E).

Dans le cas où il n’y a pas de frontière, l’équation d’ondes est définie dans tout ú . Il n’y a pas de conditions aux limites, mais uniquement des conditions initiales. La solution s’exprimera explicitement en fonction de ces conditions par la formule de D’Alembert décrite dans le TP.

Observons le cas des équations d’ondes sur un intervalle borné W =[a,b]. Il s’agit toujours du calcul de la formule de D’Alembert qui permet de connaître F et G sur [a,b]. Détaillons les faits si nous devions procéder en pratique à la résolution par cette méthode : on trouvera d’abord v(x,t) (= formule de D’Alembert) pour a £ x+ct £ b et a £ x-ct £ b ; en appliquant la condition frontière en a, on trouvera F et G sur [a-(b-a),a] ; en l’appliquant en b on les trouvera sur [b,b+(b-a)] et il faudra faire cela une infinité de fois. C’est un procédé lourd et impraticable mais il met en évidence le comportement des ondes – on pourra d’ailleurs se référencer au livre : Equations aux dérivées partielles de H. REINHARD.

Lorsque la dimension de l’espace considéré N vaut 1 et W = ]0,1[, l’équation d’ondes modélise les petites variations d’une corde qui n’est soumise à aucune force extérieure. Pour chaque t, le graphe de la fonction :

x Î W ® v(x,t) coïncide avec la configuration de la corde à l’instant t. Lorsque N = 2, l’équation modélise les vibrations d’une membrane élastique. Pour chaque t, le graphe de la fonction x coïncide avec la configuration de la membrane à l’instant t. De manière générale l’équation d’ondes modélise la propagation d’une onde dans un milieu élastique homogène W Ì ú N.

Dans ce TP nous nous focaliserons sur le problème à 1 dimension et nous allons chercher une approximation du problème (Q).

La condition v(0,t)=v(1,t)=0 exprime que la corde est fixée au bord de l’espace considéré [a,b] (=[0,1]).

Les conditions v(x,0)=f(x) et ( v/ t)(x,0)=g(x) traduisent l’état initial du système : ce sont les données de Cauchy ; la configuration initiale est décrite par f(x) et la vitesse initiale par g(x).

Le problème (Q) est approché sur un intervalle de temps [0,T]. Nous allons nous donner une grille définie par (h,k) avec h = 1/(M+1) [le pas d’espace], k = T/N [le pas de temps], M Î ù et N Î ù *. Nous considérons le schéma suivant :

Comme nous avons pu le constater au cours de ces TP, Matlab n’admet pas d’indice nul ; il va donc falloir dans le programme décaler les indices de +1 de manière à éviter ce problème. Nous mettrons également le temps en indice de colonne, alors que l’espace en indice de ligne. Aussi nous aurons le nouveau système :

 La convergence de ce schéma n’a lieu que sous certaines hypothèses et pour la condition suivante :

Présentation de la fonction :

La fonction ondes met en œuvre l’approximation définie précédemment pour approcher la solution des équations d’ondes. Soient c un paramètre représentant en physique la vitesse de propagation de l’onde, M : nombre de sous-intervalles de la subdivision de [a,b], N : nombre de sous-intervalles dans la subdivision de l’intervalle [0,T]; l’instruction V = ondes (‘f’,‘g’,M,N,T,c) renvoie la matrice V de dimension (M+2)´ (N+1) à partir de fonctions arbitraires " f " et " g " définies plus haut (paramètres initiaux).

Algorithme de la fonction ondes:


function V = ondes (f,g,M,N,T,c);

h=1/(M+1); %pas d’espace - constant

k=T/N; %pas de temps - constant

L=c*k/h %affichage pour contrôle (=lambda défini plus haut)

V=zeros(M+2,N+1); %espace -> ligne / temps -> colonne

%Préallocation

for i=2:M+1

V(i,1)=feval(f,(i-1)*h);

end;

for i=2:M+1;

V(i,2)=k*feval(g,(i-1)*h)+((L^2)/2)*(V(i+1,1)-2*V(i,1)+V(i-1,1))+V(i,1);

end;

%Il y a inversion entre les indices de ligne et de colonne car on souhaite %voir une évolution au cours du temps : pour un temps j donné, on voit la %position des points de la corde

for j=2:N %indice du temps

for i=2:M+1 %indice d’espace

V(i,j+1)=2*V(i,j)*(1-L^2)+(L^2)*(V(i+1,j)+V(i-1,j))-V(i,j-1);

end;

end;

for j=1:N+1,

plot(V(:,j)); %visualisation de l’allure de la corde au

axis([1,M+2,-1,1]); %cours du temps

pause(0.01); %temps de pose entre chaque graphique

end;

mesh(V); %Visualisation en 3D de la surface balayée par la corde sur [0,T]


 

Test de la fonction ondes :

Pour tester notre fonction, nous allons prendre le schéma simple suivant dont on connaît la solution :

 Nous avons créer pour cette question une nouvelle fonction appelée test dont voici l’algorithme :


function [vo,v]=test(f,g,M,N,T,c);

%calcul de la solution exacte:

vo=zeros(M+2,N+1);

h=1/(M+1);

k=T/N;

for j=1:N+1

for i=2:M+1

vo(i,j)=cos(pi*(j-1)*c*k)*sin(pi*(i-1)*h);

end;

end;

%calcul de la solution approchée:

v=onde(f,g,M,N,T,c,vo); %utilisation de la fonction " onde "

%représentation graphique:

figure(1); %ouverture de la fenêtre graphique n°1

mesh(vo);

title('Solution vraie');

figure(2); %ouverture de la fenêtre n°2

mesh(v);

title('Solution approchée');


Prenons par exemple : M=9 N=20 T=1 c=1 ; on a bien l £ 1 (= 0.5)

Nous pouvons comparer graphiquement les 2 résultats présentés aux figures 21 et 22 et voir qu’elles se ressemblent, donc que la fonction ondes nous fournit une bonne approximation de la solution du problème.

Dans cette fonction, nous constatons l’emploi de la fonction onde qui est la même que la fonction ondes – la différence intervenant dans la représentation graphique des courbes : on a ajouté le graphique montrant l’évolution simultanée des solutions exacte et approchée au cours du temps (dans un subplot). Son algorithme étant peu différent nous ne le présenterons pas – il figure néanmoins en annexe.

Conservons le système différentiel précédent et observons l’erreur maximale commise par la fonction ondes ou onde :

Extrait de la feuille de commande d’une session de Matlab présentant divers calculs d’erreurs maximales :


" [vo,v]=test('f','g',9,20,1,1);

L =

0.5000

" norm(vo-v,inf) %calcul d’erreur max par la formule de la norme infinie

ans =

0.0619

" [vo,v]=test('f','g',29,60,2,0.5);

L =

0.5000

" norm(vo-v,inf)

ans =

0.0206

" [vo,v]=test('f','g',99,200,1,1);

L =

0.5000

" norm(vo-v,inf)

ans =

0.0062

" [vo,v]=test('f','g',99,500,1,1);

L =

0.2000

" norm(vo-v,inf)

ans =

0.0197

" [vo,v]=test('f','g',99,100,1,1);

L =

1

" norm(vo-v,inf)

ans =

3.9404e-013


On constate que pour un même l , plus le maillage est fin, meilleure est l’approximation. De surcroît, plus l tend vers 1, meilleur est le résultat. Nous pouvons donc conclure que, pour l’obtention d’une excellente approximation de la solution, l’utilisateur devra combiner un maillage fin et un l » 1, au prix d’un certain temps d’attente du fait des opérations à effectuer. En effet, le dernier exemple, montre que l’on se rapproche de la précision relative " eps " de Matlab. Mais voyons plus en détail l’influence de k et de h.

 

Influence du rapport k/h :

Reprenons le même schéma que précédemment et observons simplement une demi-période i.e. T = 1.

Les 3 graphiques (23 à 25) illustrent cette influence. Si k=h, le tracé de la courbe nous paraît plus lisse ; cela tient au nombre de points choisis et au fait que le maillage de la grille de subdivision de l’espace-temps est de section carré. D’autre part si k << h, i.e. lorsque la subdivision du temps est beaucoup plus fine que celle de l’espace, l’approximation est encore plus précise au sens où à chaque d t (élément de l’intervalle de subdivision du temps) la position d’un point de la corde d’abscisse x est clairement défini par v(x,d t). On dira que la fonction v(x,t) trouvée dépendra continûment du temps si d t tend vers 0. En revanche, dans le cas où k >> h, la division grossière de [0,T] combinée à une subdivision fine de l’espace nous donne un résultat précis au sens où on connaît la position d’un plus grand nombre de points de la corde à l’instant t. Mais la vitesse de propagation c étant très faible pour satisfaire la condition l £ 1, on voit que l’allure de la corde ne va que très faiblement changer par rapport à sa configuration initiale. Aussi, la fonction v(x,t) trouvée dépendra continûment de x si d x tend vers 0. Nous comprenons alors pourquoi une grille de subdivision (d x,d t) de l’espace-temps nous donnera un résultat plus précis que (x,t).

Influence de la valeur de c :

Prenons toujours les mêmes fonctions f et g définies précédemment et choisissons les paramètres suivant :

M=44 N=200 T=1 c

Observons l’influence de c sur la solution du système. Une représentation graphique des résultats nous est donnée aux figures 26 à 28. Il est clair que plus c augmente plus on aperçoit de périodes ou de demi-périodes. Pour c=1, on observe une demi-période, c=2, on observe une période, c=3 : une période et demie, etc…

En effet, nous avons vu que la solution générale du problème (cf. p 36) dépend du produit ‘ct’ ; donc multiplier la vitesse de propagation de la corde par 2 revient à multiplier la période par 2. D’autre part, si c<1, on observera que des morceaux de demi-période : pour s’en convaincre faisons le test avec :


" ondes('f','g',49,50,1,0.5);

L =

0.5000


 

Influence des fonctions f et g :

Nous pouvons également modifier l’allure de la corde à l’instant initial , i.e. en agissant sur f et g mais tout en respectant leurs hypothèses. Aussi les figures 29 et 30 illustrent cette partie. Ainsi, nous serons capable de modéliser n’importe quelle allure de la corde simplement en modifiant f et g – on peut prendre aussi bien des fonctions triangles que sinusoïdales, des fonctions polynômes ou exponentielles…le tout est de vérifier qu’elles satisfassent les hypothèses du problème.

 

 

CONCLUSION :

L’équation des ondes est un exemple typique d’équation hyperbolique. Il faudra retenir qu’à une condition frontière (ou limite) donnée en a correspond un comportement de l’onde lorsqu’elle change de sens de propagation au point a.

Nous avons vu que la solution générale de l’équation de la corde vibrante dépend de 2 fonctions arbitraires f et g, il paraît donc naturel d’imposer dans un problème d’évolution 2 données initiales : la position et la vitesse. Le problème de Cauchy – nous l’avons vu dans le TP précédent – est le problème type de la mécanique générale : on y écrit le principe fondamental de la dynamique et on impose les positions et les vitesses du système à t = 0. Il en est de même ici à ceci près que notre système (la corde) dépend continûment de la variable x au lieu de dépendre d’un nombre fini de paramètres.

Nous avons appris dans ce TP à modéliser un problème qui est dépend des coordonnées d’espace – temps, tel que l’équation d’ondes. Mais il sera intéressant de savoir comment approcher un système d’ondes. On pourra alors se focaliser sur d’autres problèmes hyperboliques et aborder les problèmes paraboliques.

 




retour vers sommaire de Licence