Vous êtes sur la page 1sur 40

FACULTE DES SCIENCES ET TECHNIQUES Dpartement Gnie Mcanique

TD Mthodes Numriques Exercice 1: On considre le problme de Cauchy :

a) Calculer la solution analytique b) Appliquer les mthodes d'Euler explicite et d'Euler implicite pour obtenir la solution numrique c) Raliser un programme Matlab pour les deux Mthodes d) Vrifier que les deux mthodes convergent avec un ordre linaire Solution a) La solution analytique est :

b) Les schmas explicite et implicite d'Euler sont : Schma explicite : Schma implicite :

c/ et d/ Voir programme Matlab

Exercice 2 : Pour approcher le problme de Cauchy :

on considre la mthode de trapze ou de Crank-Nicolson tel que :

o h est le pas de temps

1/ En supposant que la solution exacte y(t) soit C (R+), calculer l'erreur locale de troncature introduite par la mthode numrique ci-dessus. 1/ Par dfinition : l'erreur locale de troncature de la mthode de Crank-Nicolson

O y(t) est la solution exacte Corrig :

donc

2/ Sachant que:

Quelle est l'ordre de convergence de cette mthode ? Corrig: On a :

Donc

Cette mthode est donc d'ordre 2

3/ Soit le problme : Retrouver la solution analytique Pour rsoudre numriquement ce problme, on applique les mthodes d'Euler progressive et de Crank-Nicolson

Le tableau ci-contre montre les erreurs commises par les deux mthodes l'instant t=5 pour diffrents valeurs du pas de temps h.

Identifier quelle colonne entre les deux a t calcule en utilisant la mthode de Crank-Nicolson. Justifier la rponse. Trouver la condition de stabilit sur h pour la mthode d'Euler progressive. Corrig : Voir programme Matlab pour la rsolution numrique On a vu que la mthode de Crank-Nicolson est d'ordre 2 et on sait que la mthode d'Euler progressive est d'ordre 1. On remarque que lorsqu'on divise le pas de temps par 2, l'erreur dans la premire mthode est divise de la mme faon par un facteur de 2, tandis que dans la seconde mthode elle est divise par 4. On en dduit que la premire mthode correspond la mthode d'Euler progressive d'ordre 1 et la seconde mthode la mthode de CrankNicolson d'ordre 2.
n 1 2 3 4 5 h 1 0,5 0,25 0,125 0,0625 h(i)/h(i+1) ?? 2 2 2 2 ErreurMthode1 0,03052276 0,01460741 0,007161485 0,003548112 0,001765997 e1(i)/e1(i+1) ?? 2,089539487 2,039718019 2,018393162 2,009126856 ErreurMthode2 0,005215832 0,001034686 0,00024971 6,18916E05 1,54398E05 e2(i)/e2(i+1) ?? 5,040980549 4,143543881 4,034642515 4,008581734

Condition de stabilit : Soit le problme :

On effectue un dveloppement de Taylor suivant :

Ou encore :

L'erreur locale

sur la mthode est :

La mthode est stable lorsque Pour cela il faut que

tend vers zro quand n tends vers l'infini

C'est--dire :

Ici :

On dduit donc

4) Vrifier l'ingalit de la question 2/ dans le cas o

Exercice 3: Pendule simple L'quation rgissant le mvt d'un pendule simple de longueur et faisant un angle par rapport la verticale :

On rappelle que

, et on prendra pour l'implmentation

1/Ecrire une fonction Matlab dcrivant l'quation du pendule comme un systme d'quations diffrentielles d'ordre 1.

Solution 1/ Le problme de Cauchy est sous la forme gnrale

En effet :

Ecrivons la fonction

Les variables phi et phiprime sont des vecteurs de longueur 2, o phi(1) reprsente l'angle avec la verticale, phi(2) reprsente . que le pendule fait

2) Programmer la mthode d'Euler explicite, pour un systme d'ordre 1 et de dimension quelconque. Une solution pour Euler.m :

3) L'tat initial du pendule dfinit l'amplitude du mouvement : si celle-ci est faible, la solution de l'quation linarise donne une approximation du comportement du pendule.

Faire un programme Matlab pour valider cette approximation pour diffrents tats initiaux en comparant pour chacun des cas le rsultat de l'intgration numrique de l'quation du pendule avec la solution analytique du problme linaris.

Do

Dfinir un fichier de script qui trace sur un mme graphique pour l'intervalle de temps [0 5] et pour l'tat initial

- La solution

du pendule calcule par la mthode d'Euler avec 5000 points d'intgration.

-La solution du pendule donne par la mthode prdfinie de Matlab ode45 La solution analytique de l'quation linarise. Recommencer pour

Solution Matlab

Exercice 3 (suite) : Pendule Amorti : On dsire rsoudre numriquement l'quation diffrentielle dcrivant le mouvement d'un pendule amorti :

o la position du pendule est donne par x , m est la masse du pendule, k la constante de raideur du ressort (linaire) et le coefficient de frottement (linaire).

Soient les donnes suivantes du problme

Conditions initiales : t=0s, le pendule est sa position d'quilibre (x(0)=0) mais possde une vitesse de 2m/s. En utilisant la mthode de Runge-Kutta, raliser un programme Matlab pour rsoudre l'quation diffrentielle pour .

Solution : Dans une premire tape, on va transformer cette quation du second ordre en un systme de deux quations du premier ordre. A cet effet, posons :

On a donc le systme diffrentiel suivant :

Soient les donnes suivantes du problme

Conditions initiales : t=0s, le pendule est sa position d'quilibre (x(0)=0) mais possde une vitesse de 2m/s. Rsoudre l'quation diffrentielle pour .

La fonction dcrivant l'EDO


function udot = oscillateur(t,u) % on initialise le vecteur colonne udot udot = zeros(2,1); %on calcule les drives % ? /m = 0.5 et k/m = 1.5, udot(1) = u(2); udot(2) = -0.5*u(2) -1.5*u(1);

Programme du pendule amorti %Valeur initiale : u0 = [0 2] [t u] = ode45('oscillateur',[0 20],[0 2]); % Affichage de la position et la vitesse du pendule en fonction du temps plot(t,u(:,1));hold on; plot(t,u(:,2),'r-.'); xlabel('temps (s)'); title('Pendule amorti'); legend('Position (m)','Vitesse

(m/s)');

Exercice 4 : Tir de projectile Soit rsoudre lquation diffrentielle suivante :

avec Lquation

M=70 kg

g=9.81N/kg

C=0.27 kg/m

est quivalente

et , et on donne comme condition

Dterminer numriquement V(t). On choisit un pas de temps initiale V(t=0)=0. Tracer la solution de cette quation diffrentielle pour . Solution (voir ExoRef1.m) La solution numrique obtenue par la mthode dEuler s'crit :

On obtient un graphique qui donne lvolution de la solution V(t) en fonction du temps.

Exercice : Projectile On cherche rsoudre le problme du mouvement d'un point solide de masse m la position dans le repre vitesse (voir figure). D'aprs la mcanique du point, il suffit d'appliquer le PFD au solide :
Mouvement dun point de masse dans un champ de pesanteur

ayant une

dans un champ de pesanteur

1/ Ecrire ce problme sous la forme d'un problme de Cauchy, tel que :

avec et .

2/ Soient les conditions initiales du problme :

En utilisant une mthode numrique adquate, resoudre le systme diffrentiel ci-dessus pour determiner le point de lancement avec une vitesse initiale d'attrissage de trois tirs avec diffrents angles

Solution Supposons que le mouvement est bidimensionnel dans le plan Projetons l'quation vectorielle dans le repre donne le systme d'quation diffrentiel suivant :

Les conditions initiales du problme :

La solution exacte du mouvement est : Rsolution numrique : Soit le systme diffrentiel d'ordre 2 :

Pour rsoudre numriquement ce systme, commenons par poser :

Ce systme peut s'crire donc :

De mme, on dfinit :

Ce systme diffrentiel peut s'crire donc :

En regroupant l'ensemble des composantes on a alors :

sous la forme d'une seule quation diffrentielle matricielle,

avec

Problme de Cauchy : Trouver telle que :

La rsolution de cette quation fournira les fonctions : 2/ Programme de la fonction fprojectile en Matlab pour calculer f (t, u (t)) : (fprojectile ) et Le script suivant rsout le systme d'quations diffrentielles (S1) avec les conditions initiales . Les rsultats sont montrs pour la position de la particule (N+1=31) temps compris entre 0 et 11s. Dtermination des paramtres initiaux L'un des buts de la mthode de Tir est de dterminer ou d'optimiser les paramtres initiaux afin d'obtenir un certain comportement dsir de la solution. Exemple : Dans le cas d'un projectile, on peut chercher dterminer pour quel angle de lancement le projectile irat-il le plus loin possible ? C'est on va cherche le point d'atterrissage du solide pour lequel on a :

Faisons une approximation linaire entre On a alors :

de la coordonne telle que :

Le point d'atterrissage aprs simplification :

est le zro de la fonction d'approximation linaire

. Ce qui donne

La vitesse en x est en gnrale non constante, on peut donc faire une approximation linaire pour calculer

D'o

Le point d'atterrissage est dfini compltement, soit Ci-dessous, on donne une reprsentation montrant les traces des trajectoires et le point d'attrissage de trois tirs avec diffrents angles de lancement avec une vitesse initiale

Exercice 5: Equation thermique Une plaque mtallique paisse la temprature de 200C (ou 473K) est soudainement place dans une chambre de 25K, o la plaque est refroidie la fois par la convection naturelle et le transfert radiatif de chaleur. On donne les constantes physiques suivantes :

En supposant que la distribution de temprature dans le mtal est uniforme, l'quation donnant la temprature en fonction du temps est :

Rsoudre cette quation diffrentielle par la mthode de Runge-Kutta l'ordre 2 pour Solution : (voi programme matlab) La liste du programme 'RK2.m' est la suivante :

et

La solution hyperbolique.

obtenue de l'quation diffrentielle prcdente, dcrot en fonction du temps d'une faon

Exercice 6 Une baguette de longueur est place dans un coulement dair la temprature de . La temprature ) est maintenue gale , mais le ct droit est isol. Le transfert de chaleur gauche de la baguette (en dans la baguette se fait par convection. Dterminer la distribution de la temprature le long de laxe de la baguette, sachant que les caractristiques du matriau constituant cette baguette sont :

Solution : L'quation de la conduction de la chaleur dans la direction de l'axe

de la baguette est donne par :

avec les conditions aux limites suivantes :

La temprature de l'air est 293 K. Ce systme est un problme conditions aux limites en en problme conditions initiales : Posons :

et

. Pour le rsoudre, il faut le transformer

Le systme prcdent s'crit donc :

Conditions aux limites : On connait dj une condition initiale : Comment faire ? On transforme la condition limite :

. Il reste dterminer la seconde condition.

en une condition initiale telle que :

On cherche la valeur

de telle sorte que

permet de donner pour chaque valeur arbitraire cette valeur satisfait la

Le programme suivant 'RK4pcl.m' permet de calculer de introduite par l'intermdiaire du clavier. condition

Une

fois

, on peut arrter les calculs en tapant la valeur 99999.

Seule, une condition initiale est connue partir des conditions aux limites, mais la seconde condition initiale qui reste inconnue. doit tre Cependant, on peut rsoudre l'quation en faisant une transformation de la condition aux limites connue en une condition initiale

. Ainsi, on cherche la valeur de telle sorte que permet de donner Une fois . pour chaque valeur arbitraire cette valeur satisfait la

Le programme suivant 'RK4pcl.m' permet de calculer de introduite par l'intermdiaire du clavier. condition

, on peut arrter les calculs en tapant la valeur 99999.

Ainsi, l'quation diffrentielle (1er ordre) ci-dessus conditions aux limites peut tre rendue en une quation diffrentielle du 1er ordre conditions initiales, en posant :

Seule, une condition initiale est connue partir des conditions aux limites, mais la seconde condition initiale qui reste inconnue. doit tre Cependant, on peut rsoudre l'quation en faisant une transformation de la condition aux limites connue en une condition initiale

. Ainsi, on cherche la valeur de telle sorte que permet de donner Une fois . pour chaque valeur arbitraire cette valeur satisfait la

Le programme suivant 'RK4pcl.m' permet de calculer de introduite par l'intermdiaire du clavier. condition

, on peut arrter les calculs en tapant la valeur 99999.

Aprs excution du programme 'RK4pcl.m'; on obtient la figure 6 sur laquelle se trouvent les solutions et .

Fig. 6 : volution des solutions

et

pour

Exercice 7 La temprature d'une barre de fer de longueur est initialement la temprature de . La temprature du , mais la temprature du ct droit est maintenue constante ct gauche est soudainement rduite . Tracer la l'volution de la temprature dans la barre chaque intervalle de temps gal , et ceci (c'est dire : ) jusqu' Les proprits thermiques du matriau sont :

Solution : La diffusivit thermique est calcule par :

Pour chercher l'volution de la temprature dans la barre, on divise l'intervalle [0,50] en 49 petits intervalles (par exemple). L'quation diffrentielle rsoudre est celle de la chaleur dfinie prcdemment. Les valeurs des conditions aux limites sont et telles que :

Le programme suivant ('RK4cc.m'), utilise la mthode de Runge-Kutta l'ordre 4 pour la rsolution de l'quation aux drives partielles de la conduction de la chaleur suivant la direction et en fonction du temps.

%************************************************* % Conduction de la chaleur dans une barre de fer * %************************************************* clear;clf;clc;hold off; k=80.2;ro=7870;Cp=447e3;TL=0;TR=200; alpha=k/ro/Cp;dx=(50-1)/49; %******************************* % Construction de la matrice A * %******************************* A(1,1:2)=[-2 1];A(1,3:50)=0; A(50,1:48)=0;A(50,9:10)=[1 -2]; for i=2:49 for j=1:50 if i<j-1 & j>i+1 A(i,j)=0; end if i==j A(i,j)=-2;

A(i,j-1)=1; A(i,j+1)=1; end end end M=A*alpha*1/dx^2; S(1)=TL;S(50)=TR;S(2:49)=0;S=S*alpha/dx^2;S=S'; T(1:50)=40; T=200*ones(T); T=T'; n=0;t=0;h=20;m=0; axis([0 10 0 220]); j=[0,1:length(T),length(T)+1]; T_p=[TL,T',TR]; plot(j,T_p); text(j(2),T_p(2),['t=',int2str(t),'s']); xlabel('i : Nombre de points'); ylabel('T (en C)'); for k=1:5 for m=1:50 n=n+1; k1=h*(A*T+S); k2=h*(A*(T+k1/2)+S); k3=h*(A*(T+k2/2)+S); k4=h*(A*(T+k3)+S); T=T+(k1+2*k2+2*k3+k4)/6; t=h*n; end hold on; j=[0,1:length(T),length(T)+1]; T_p=[TL,T',TR]; plot(j,T_p); text(j(k+1),T_p(k+1),int2str(t)); end

Exercice 2 : On veut rsoudre lquation diffrentielle du 1er ordre suivante :

en utilisant les formules dAdams ouvertes lordre 1 et les formules dAdams (prdicteur-correcteur) pour un pas . On donne la limite de convergence . 1/ Calculer par les deux mthodes pour 2/ Ecrire un programme dans Matlab permettant de calculer et de tracer les rsultats de ces deux mthodes sur le mme graphe, Conclusion. Solution : (prdicteur-correcteur) consiste

Les

formules

dAdams

crire

la

solution

sous

la

forme

: Dans ce cas, on a :

est inconnue ; donc est aussi inconnue. or Dans ce cas, on utilise la mthode itrative suivante :

est la kime valeur itre de o de faon ce que :

, et

est une valeur arbitraire initiale de

. La rsolution doit se faire

Si

, on obtient :

. On arrte les calculs si ** Formules dAdams ouvertes lordre 1 (Mthode dEuler) : Pour la mthode dEuler, la solution est donne par lexpression :

b) Le programme suivant eul2.m permet dinclure les 2 mthodes :

%******************************************* % Rsolution d'une quation diffrentielle * % du 1er ordre par deux mthodes * %******************************************* clear; clf; hold off;

% Mthode d'Euler l'ordre 1 y1(1)=10;t(1)=0;h=0.1;n=1; while t(n)<1.5 n=n+1; t(n)=t(n-1)+h; y1(n)=y1(n-1)+h*(-y1(n-1).^1.5+1); end % Mthode du prdicteur-correcteur ym(1)=10.5;t(1)=0;h=0.1;n=1;e=1e-4;n1=10000; while t(n)<1.5 n=n+1; t(n)=t(n-1)+h; ym(n)=ym(n-1)+h*(-ym(n-1).^1.5+1); % Itration succssives et substitution for k=1:n1 ymb=ym(n)+0.5*h*(-(ym(n)).^1.5-(ym(n-1)).^1.5+2); if abs(ym(n)-ymb)<=e; break; printf('Erreur de (%d)=%f\n',k,abs(ym(n)-ymb)); end if k==n1 fprintf('Pas de convergence pour t=%f\n',t(n)); end end end fprintf('t=%f\t y1=%f\t ym=%f\n',t,y1,ym); grid on; hold on; plot(t,y1,t,y1,'*'); plot(t,ym,'-r'); xlabel('t');ylabel('y'); gtext('***Mthode d''Euler (ordre 1)'); gtext('-Prdicteur-correcteur'); Aprs excution du programme ci-dessus, on obtient le graphique de la figure 2 ci-dessous dans lequel il y a les 2 solutions (mthode d'Euler et Mthode d'Adams).

Fig. 2 : Comparaison des deux mthodes de rsolution numrique

3. quations diffrentielles du second ordre Ces quations sont du type :

et

sont des constantes ou des fonctions de .

et sont des conditions initiales. Avant d'appliquer la mthode d'Euler par exemple, on peut rendre l'quation prcdente une quation du type 1er ordre. Dans ce cas, on pose D'o : .

Les conditions initiales deviennent :

o : En faisant le calcul pas par pas, on obtient : pour ,

pour

Ainsi, dans Matlab, le calcul pour chaque pas de temps peut tre dcrit par les matrices ci-dessous. On dfinit au dpart et par :

et ensuite, on crit , et on rsout l'quation :

Exemple : Rsoudre l'quation diffrentielle suivante :

avec : On donne le pas Calculer pour . en utilisant la mthode d'Euler l'ordre 1 (calcul manuel). de l'quation diffrentielle prcdente

Calculer, en utilisant un algorithme dans Matlab, la solution pour . pour .

Tracer l'volution de Solution :

a. Le systme prcdent peut tre crit sous la forme :

avec : Pour , on a :

b. Sous une forme vectorielle, l'quation prcdente s'crit :

o La mthode d'Euler donne :

Le programme 'eul3.m', list ci-dessous permet de calculer la solution

de l'quation diffrentielle propose :

%******************************************* % Rsolution d'une quation diffrentielle * % du second ordre par la mthode d'Euler * %******************************************* clc; clear; clf; hold off; t_max=5;h=0.05;n=1; y(:,1)=[0;1];t(1)=0; while t(n)<t_max y(:,n+1)=y(:,n)+h*def_f(y(:,n),t);yb=y; t(n+1)=t(n)+h; n=n+1; end axis([0 5 -1 1]); plot(t,y(1,:),t,y(2,:),':r'); xlabel('Temps (en s)');ylabel('v(t) et u(t)'); gtext('Solution : v(t)'); L=length(t); text(t(L-2),y(2,L-5),'Solution : u(t)'); La fonction 'def_f(y,t)' est un sous programme dont la liste est dresse ci-dessous :

%******************************** % Dfinition de la fonction : * % def_f(y,t) * %******************************** function f=def_f(y,t); a=5;C=20; f=[y(2);(-a*abs(y(2))*y(2)-C*y(1))]; La figure 3 ci-aprs donne l'volution des solutions et . La solution oscille autour de 0 et tend s'amortir au fur et mesure que le temps t augmente. On pourrait ventuellement utiliser une autre mthode de rsolution numrique pour chercher . titre d'exemple, essayer d'utiliser la mthode itrative d'Adams (Prdicteur-Correcteur) pour retrouver la solution . Comparer cette solution celle d'Euler l'ordre 1.

Fig. 3 : volution des solutions

et

en fonction du temps

4. Mthode de Runge-Kutta 4.1. Mthode de Runge-Kutta du second ordre Elle est de la forme :

ou bien sa forme standard peut tre crite ainsi :

Cette mthode est quivalente celle d'Euler deux itrations seulement. 4.2. Mthode de Runge-Kutta l'ordre 4 Cette mthode s'exprime sous la forme :

et la solution

est donne par :

Exemple 1 : Rsoudre le systme suivant par la mthode de Runge-Kutta l'ordre 4 :

avec les conditions initiales suivantes :

On donne :

Les constantes sont gales :

Solution :

Si on dfinit :

et

, le systme prcdent devient :

Ce systme peut s'crire sous la forme matricielle suivante : o et :

Le programme suivant 'RK4.m' permet la rsolution du systme prcdent :

%************************************* % Mthode de Runge-Kutta l'ordre 4 * %************************************* clear;clc;clf; M1=1;M2=1;M3=1; K1=1;K2=1;K3=1; F1=0.01;F3=0;F=[0 0 0 F1/M1 0 F3/M3]'; B1=0.1;B3=0.1;h=0.1; y(:,1)=[0 0 0 0 0 0]';t(1)=0;i=1; C=[0 0 0 1 0 0; 0 0 0 0 1 0; 0 0 0 0 0 1; -K1/M1 K2/M1 0 -B1/M1 B1/M1 0; K1/M2 -(K1+K2)/M2 K2/M2 B1/M2 -B1/M2 0; 0 K2/M3 -(K2+K3)/M3 0 0 -B3/M3]; while t<=30 k1=h*f1m(y(:,i),C,F); k2=h*f1m(y(:,i)+k1/2,C,F); k3=h*f1m(y(:,i)+k2/2,C,F); k4=h*f1m(y(:,i)+k3,C,F); y(:,i+1)=y(:,i)+(1/6)*(k1+2*k2+2*k3+k4); t(i+1)=i*h;

i=i+1; end plot(t,y(1:3,:)); grid on; text(t(70),y(1,70),'y1'); text(t(70),y(2,70),'y2'); text(t(70),y(3,70),'y3'); xlabel('Temps (en s)'); ylabel('Solutions,y1, y2, y3'); La fonction 'f1m.m' est le sous programme list ci-dessous :

%***************** % Fonction f1m.m * %***************** function f=f1m(y,C,F); f=C*y+F; Aprs excution du programme 'RK4.m', on obtient le graphe suivant donnant les solutions recherches. ( )

Fig. 5 : volution des trois solutions

et

5. Mthode Matricielle avec des "Conditions aux Limites" Considrons l'quation de la conduction de la chaleur selon la direction

o la condition initiale est :

et les conditions aux limites sont :

En utilisant les diffrences finies, l'quation diffrentielle ci-dessus s'crit :

o , est le nombre d'intervalles sur Dans ce cas, les conditions aux limites s'crivent :

et

On obtient ainsi le systme suivant : o et sont des vecteurs colonnes et est une matrice carre d'ordre , dfinis ci-aprs :

; et Ce systme peut tre rsolu par la mthode de Runge-Kutta par exemple. Exemple 1 : La temprature d'une barre de fer de longueur du ct gauche est soudainement rduite constante , et ceci jusqu' (c'est dire : Les proprits thermiques du matriau sont : , est initialement la temprature de , . La temprature , mais la temprature du ct droit est maintenue , , , ).

. Tracer la l'volution de la temprature dans la barre chaque intervalle de temps gal

Solution : La diffusivit thermique est calcule par :

en 49 petits intervalles (par Pour chercher l'volution de la temprature dans la barre, on divise l'intervalle exemple). L'quation diffrentielle rsoudre est celle de la chaleur dfinie prcdemment. Les valeurs des conditions aux limites sont et telles que :

Le programme suivant ('RK4cc.m'), utilise la mthode de Runge-Kutta l'ordre 4 pour la rsolution de l'quation aux drives partielles de la conduction de la chaleur suivant la direction et en fonction du temps.

%************************************************* % Conduction de la chaleur dans une barre de fer * %************************************************* clear;clf;clc;hold off; k=80.2;ro=7870;Cp=447e3;TL=0;TR=200; alpha=k/ro/Cp;dx=(50-1)/49; %******************************* % Construction de la matrice A * %******************************* A(1,1:2)=[-2 1];A(1,3:50)=0; A(50,1:48)=0;A(50,9:10)=[1 -2]; for i=2:49 for j=1:50 if i<j-1 & j>i+1 A(i,j)=0; end if i==j A(i,j)=-2; A(i,j-1)=1; A(i,j+1)=1; end end end M=A*alpha*1/dx^2; S(1)=TL;S(50)=TR;S(2:49)=0;S=S*alpha/dx^2;S=S'; T(1:50)=40; T=200*ones(T); T=T'; n=0;t=0;h=20;m=0; axis([0 10 0 220]); j=[0,1:length(T),length(T)+1]; T_p=[TL,T',TR]; plot(j,T_p); text(j(2),T_p(2),['t=',int2str(t),'s']); xlabel('i : Nombre de points'); ylabel('T (en C)'); for k=1:5 for m=1:50 n=n+1; k1=h*(A*T+S); k2=h*(A*(T+k1/2)+S); k3=h*(A*(T+k2/2)+S); k4=h*(A*(T+k3)+S);

T=T+(k1+2*k2+2*k3+k4)/6; t=h*n; end hold on; j=[0,1:length(T),length(T)+1]; T_p=[TL,T',TR]; plot(j,T_p); text(j(k+1),T_p(k+1),int2str(t)); end Exemple 2 : tude de la rpartition de la temprature dans les parois un four On considre un four dans le plan de la section droite reprsents ci-dessous. On appelle four et la surface externe. en un point de la paroi vrifie l'quation de Laplace : la surface interne du

En rgime permanent, la temprature

avec les conditions aux limites suivantes :

Fig. 7 : Gomtrie et maillage des parois du four - Ecrire un programme calculant la temprature figure 7 ci-dessus (figure en haut). On suppose que les dimensions Application Numrique : , , et de la paroi du four aux points de la grille dfinie sur la permettent ce quadrillage.

et : Solution : quation de Laplace :

avec :

Le dveloppement en srie de Taylor de la fonction

autour de

s'crit :

En additionnant ces deux relations et en divisant par

, on trouve :

En oprant de la mme manire pour la variable

, on trouve :

Dans notre cas, on a

. Donc, le Laplacien bidimensionnel s'crit :

On pose :

Pour simplifier la notation, l'expression prcdente s'crit sous la forme :

(*) Cette quation peut tre reprsente par la forme molculaire suivante :

Pour

et

par exemple, on obtient 26 nuds l'intrieur du domaine (fig. 7). Donc, ; sur et sur ).

, o

est l'ensemble des points intrieurs du domaine (et crivons les premires et dernires lignes du systme (*) :

Remarquons que : et que : On a le systme suivant alors :

On a donc un systme de 26 quations 26 inconnues. Donc, ce systme (ou l'quation de Laplace discrtise) peut tre rsolu(e) par la mthode de Gauss-Seidel (mthode explicite) o l'quation de Laplace donne le point central de chaque forme molculaire par l'expression :

(**) Remarque : Avec l'algorithme prcdent (**), il est inutile de mmoriser explicitement la matrice du systme (*). Il suffit de mmoriser la temprature de chacun des points de la grille. Dfinissons les valeurs particulires des indices correspondants aux parois de la figure 8 suivante :

Fig. 8 : Dfinition des indices caractrisant les parois

Le programme suivant appel 'laplace.m' permet de rsoudre le systme (**) par la mthode explicite. Pour cela, on se donne une valeur (distribution) arbitraire initiale chaque couple quand , donne une nouvelle valeur o , qui porte dans l'quation (**) au second membre pour , et ainsi de suite. L'arrt des calculs se fait

est la limite de convergence que l'on se donne.

%***************************************** % Etude de la rpartition de temprature * % dans les parois d'un four * % Rsolution d'un systme linaire par * % la mthode itrative de Gauss-Seidel * % Mthode explicite * %***************************************** tic; flops(0); clear all; clc;clf; eps=1e-4;k1=300; % Donnes initiales L1=input ('Introduire la valeur de L1 :\n'); L2=input ('Introduire la valeur de L2 :\n'); L3=input ('Introduire la valeur de L3 :\n'); L4=input ('Introduire la valeur de L4 :\n'); dx=input ('Introduire la valeur du pas dx :\n'); Thetaint=input ('Introduire la valeur de Theta interne :\n'); Thetaext=input ('Introduire la valeur de Theta externe :\n'); % Calcul des indices m=round(L1/dx)+1; n=round(L2/dx)+1; m1=round((L1-L3)/(2*dx))+1; n1=round((L2-L4)/(2*dx))+1; m2=m1+round(L3/dx); n2=n1+round(L4/dx); % Initialisation de la temprature dans le four for i=1:n for j=1:m T(i,j)=Thetaint; end end % Temprature de la paroi externe for i=1:n T(i,1)=Thetaext; T(i,m)=Thetaext; end for j=1:m T(1,j)=Thetaext; T(n,j)=Thetaext; end % Temprature de la paroi interne for i=n1:n2 T(i,m1)=Thetaint;

T(i,m2)=Thetaint; end for j=m1:m2 T(n1,j)=Thetaint; T(n2,j)=Thetaint; end % Mthode de Gauss-Seidel (Itrations) for k=1:k1 for i=2:n-1 for j=2:m1-1 T(i,j)=0.25*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1)); end end for i=2:n-1 for j=m2+1:m-1 T(i,j)=0.25*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1)); end end for i=2:n1-1 for j=m1:m2 T(i,j)=0.25*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1)); end end for i=n2+1:n-1 for j=m1:m2 T(i,j)=0.25*(T(i-1,j)+T(i+1,j)+T(i,j-1)+T(i,j+1)); end end if abs(T(n-1,m-1)-T(2,2))<=eps fprintf('\n \n'); fprintf('Tempratures aprs "%d itrations\n',k); fprintf('\n \n'); break; end end for i=1:n fprintf('%5.0f\t',T(i,1:m)); fprintf('\n'); end % Trac des courbes de temprature en 3D hold off; if n==m figure(1); i=1:n; j=1:m; grid on; [x,y]=meshgrid((i-1)*dx,(j-1)*dx); mesh(x,y,T); Title('Evolution de la temprature dans le four'); xlabel('i');ylabel('j');zlabel('T (en C)'); end % Trac des courbes isothermes en 2D

figure(2); i=1:n;j=1:m; grid on; contour(i,j,T(i,j),15); title('Lignes isothermes dans les parois du four'); xlabel('i');ylabel('j'); t_mis=toc Nb_opt=flops On excute ce programme (laplace.m), en rentrant les valeurs de et . >>Introduire la valeur de L1 : 60 Introduire la valeur de L2 : 60 Introduire la valeur de L3 : 20 Introduire la valeur de L4 : 20 Introduire la valeur du pas dx : 1 Introduire la valeur de Theta interne : 1220 Introduire la valeur de Theta externe : 35 t_mis= 113.9700 Nb_opt= 7362728 , , , , et enfin

Fig. 9 : volution en 3D de la temprature dans les parois du four

Fig. 10 : Lignes isothermes dans les parois du four 6. Conversion de coordonnes Dans Matlab, il existe plusieurs commandes pour la conversion des coordonnes. Nous en donnons ci-aprs un bref apperu. 6.1. Coordonnes polaires Les fonctions 'cart2pol' et 'pol2cart' permettent respectivement le passage des coordonnes cartsiennes en coordonnes polaires et inversement. Les syntaxes sont : >>[theta,r]=cart2pol(x,y) >>[x,y]=pol2cart(theta,r) et doivent tre des vecteurs de mme taille reprsentant les coordonnes des points considrs, et , o r et reprsentent les coordonnes polaires et sont des vecteurs de mmes dimensions que est exprime en radians.

6.2. Coordonnes cylindriques Les fonctions 'cart2pol' et 'pol2cart' permettent respectivement le passage des coordonnes cartsiennes en coordonnes cylindriques et inversement. Les syntaxes sont : >>[theta,r,z]=cart2pol(x,y,z) >> [x,y,z]=pol2cart(theta,r,z) , et sont des vecteurs de mme taille, et sont des vecteurs de mmes dimensions que , et , et est exprime en radians. 6.3. Coordonnes sphriques Les fonctions 'cart2sph' et 'sph2cart' permettent respectivement le passage des coordonnes cartsiennes en coordonnes sphriques et inversement. Les syntaxes sont : >>[Az,Elv,r]=cart2sph(x,y,z) >>[x,y,z]=sph2cart(Az,Elv,r) r, , et sont des vecteurs de mme taille, et sont respectivement l'azimut et l'lvation exprimes en radians, de mmes dimensions que , et . 7. Problmes en Coordonnes Cylindriques Considrons l'quation de la conduction de la chaleur exprime en coordonnes cartsiennes :

En coordonnes polaires, cette quation s'crit sous la forme :

sur la domaine Sur ce domaine dessous, avec , on construit un maillage en coordonnes polaires et o et sont des entiers. comme le montre la figure 11 ci-

Fig. 11 : Systme de maillage en coordonnes polaires Ainsi, la temprature et la fonction deviennent au point :

Pour des valeurs non nulles de disrtise suivante :

, les drives secondes de

par rapport

et

s'crivent sous la forme

En utilisant les diffrences centres,

peut s'crire au point

sous la forme :

Ainsi, l'quation de la chaleur discrtise est :

Soit, aprs regroupement des diffrents termes :

C'est l'quation de conduction de la chaleur discrtise (diffrences finies) en coordonnes cylindriques, obtenue pour des valeurs de non nulles ( ). Les indices i et sont des entiers (commenant par 1 dans Matlab). A l'origine ( ), l'quation de la conduction en coordonnes polaires prsente une singularit. Cette dernire doit tre limine. Pour cela, on utilise le Laplacien de l'quation de la conduction non pas en coordonnes cylindriques, mais en coordonnes cartsiennes :

quand On construit ensuite un cercle de rayon et , , et , centr en . Considrons la temprature ,

sont les tempratures sur le cercle aux 4 nuds (intersection avec les axes :

et oy). Ainsi,

l'quation prcdente (en coordonnes cartsiennes) s'crit sur le cercle de rayon

La rotation des axes

et oy autour de

conduit aux mmes rsultats (quation de la chaleur en coordonnes comme la moyenne arithmtique des tempratures autour du cercle de

cartsiennes discrtise). En considrant rayon , l'quation prcdente devient :

o est la moyenne arithmtique des valeurs de . -deux dimensionspeuvent tre extrapoles en coordonnes autour du cercle de rayon et de centre et est

la valeur de la temprature Les coordonnes polaires

cylindriques

(trois dimensions) pour l'obtention de l'quation de la conduction de la chaleur discrtise.

Pour le problme bidimensionnel en voqu prcdemment, compte tenu de la symtrie axiale, l'quation de la conduction de la chaleur peut tre rduite :

Pour

, l'quation prcdente discrtise s'crit sous la forme :

o Au centre (

, et

est un entier positif.

), en utilisant la rgle de l'Hopital nous obtenons :

Ainsi l'quation de la conduction de la chaleur en deux dimensions du problme : en Soit en diffrences finies :

s'crit compte tenu de la symtrie axiale

pour En coordonnes cylindriques, l'quation de la conduction de la chaleur est donne par l'expression suivante :

Les coordonnes

sont reprsentes par :

o et

sont des entiers.

La temprature

au nud

est note par :

et les diffrentes drives partielles deviennent :

L'quation de la chaleur discrtise en coordonnes cylindriques au nud

devient :

pour des valeurs de Pour , on a :

non nulles.

et l'quation de conduction en

devient :

en Soit en utilisant les diffrences finies au nud :

8. Discrtisation de l'quation de la Conduction en rgime instationnaire Dans le systme de coordonnes cartsiennes (trois dimensions), l'quation de conduction de la chaleur en rgime instionnaire (temporel) s'crit (si ):

Pour rsoudre cette quation aux drives partielles en utilisant la mthode des diffrences finies, on utilise un maillage cubique (mailles de cts avec :

o , que :

et

sont entiers positifs, et le domaine temporel est divis en petits intervalles de temps

de telle sorte

Dans ce cas, la temprature

au point P(x,y,z) un temps donn

est reprsente par :

En utilisant la mthode des diffrences finies, les diffrents termes de l'quation ci-dessus au drives partielles s'crivent au point P(x,y,z) :

et l'quation de la conduction discrtise en trois dimensions devient :

En regroupant les diffrents termes de cette quation, on obtient :

Cette quation ne peut tre rsolue que par une mthode itrative (mthode de Gauss-Seidel par exemple). Si on pose :

alors, la condition de convergence de la solution recherche dpend essentiellement du signe de la quantit Cette quantit doit tre strictement positive. Ainsi, une condition doit relier le pas de temps et les autres pas spatiaux ( , et ):

par des valeurs arbitraires ( Pour amorcer le calcul itratif, on ensemence le domaine de frontire exemple), et on arrte les calculs quand la condition suivante sera ralise :

par

est la prcision que lon se fixera.

Vous aimerez peut-être aussi