Académique Documents
Professionnel Documents
Culture Documents
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 :
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
donc
2/ Sachant que:
Donc
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
Ou encore :
L'erreur locale
C'est--dire :
Ici :
On dduit donc
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
1/Ecrire une fonction Matlab dcrivant l'quation du pendule comme un systme d'quations diffrentielles d'ordre 1.
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
-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).
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 :
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 .
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)');
avec Lquation
M=70 kg
g=9.81N/kg
C=0.27 kg/m
est quivalente
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 :
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
avec et .
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 :
La solution exacte du mouvement est : Rsolution numrique : Soit le systme diffrentiel d'ordre 2 :
De mme, on dfinit :
avec
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 :
. 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.
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 :
La temprature de l'air est 293 K. Ce systme est un problme conditions aux limites en en problme conditions initiales : Posons :
et
Conditions aux limites : On connait dj une condition initiale : Comment faire ? On transforme la condition limite :
On cherche la valeur
Le programme suivant 'RK4pcl.m' permet de calculer de introduite par l'intermdiaire du clavier. condition
Une
fois
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
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
Aprs excution du programme 'RK4pcl.m'; on obtient la figure 6 sur laquelle se trouvent les solutions et .
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 :
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
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 :
, et
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 :
%******************************************* % 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).
et
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 : .
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 :
avec : On donne le pas Calculer pour . en utilisant la mthode d'Euler l'ordre 1 (calcul manuel). de l'quation diffrentielle prcdente
avec : Pour , on a :
%******************************************* % 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.
et
en fonction du temps
4. Mthode de Runge-Kutta 4.1. Mthode de Runge-Kutta du second ordre Elle est de la forme :
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
On donne :
Solution :
Si on dfinit :
et
%************************************* % 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. ( )
et
5. Mthode Matricielle avec des "Conditions aux Limites" Considrons l'quation de la conduction de la chaleur selon la direction
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 , , , ).
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
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.
avec :
autour de
s'crit :
, on trouve :
, on trouve :
On pose :
(*) 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 (*) :
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 :
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
%***************************************** % 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. 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 :
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 :
par rapport
et
sous la forme :
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 :
sont les tempratures sur le cercle aux 4 nuds (intersection avec les axes :
et oy). Ainsi,
et oy autour de
conduit aux mmes rsultats (quation de la chaleur en coordonnes comme la moyenne arithmtique des tempratures autour du cercle de
o est la moyenne arithmtique des valeurs de . -deux dimensionspeuvent tre extrapoles en coordonnes autour du cercle de rayon et de centre et est
cylindriques
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
o Au centre (
, et
Ainsi l'quation de la conduction de la chaleur en deux dimensions du problme : en Soit en diffrences finies :
pour En coordonnes cylindriques, l'quation de la conduction de la chaleur est donne par l'expression suivante :
Les coordonnes
o et
La temprature
au nud
devient :
non nulles.
et l'quation de conduction en
devient :
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
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) :
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