Energétique I Méthodes Numériques II
Sup’Galilée Année 2013-2014
Travaux pratiques - E.D.P.
19 mai 2014 - 13h30-17h30
Travail individuel
Les Différences Finies pour l’équation de la chaleur
On souhaite résoudre numériquement l’E.D.P. suivante B u
B t p t, x q ν B
2u
B x
2p t, x q f p t, x q , @p t, x q Ps t
0; t
0T ss a; b r , (1)
u p t
0, x q u
0p x q , @ x P r a; b s , (2)
u p t, a q u
ap t q , @ t P r t
0; t
0T s , (3) u p t, b q u
bp t q , @ t P r t
0; t
0T s . (4) avec ν un réel strictement positif, t
0P R , T ¡ 0, p a, b q P R
2, a b.
On note t
n, n P v 0, N
tw et x
i, i P v 0, N
xw les discrétisations régulières des intervalles r t
0; t
0T s et r a; b s avec N
tpas de discrétisation en temps et N
xpas de discrétisation en espace.
On souhaite implémenter deux schémas de résolution de cette E.D.P. : u
ni 1u
ni∆t ν u
ni 112u
ni 1u
ni11∆x
2f
in 1. (5)
et
u
ni 1u
ni∆t ν u
ni 12u
niu
ni1∆x
2f
in. (6)
où ∆t T { N
t, ∆x p b a q{ N
x, f
inf p t
n, x
iq et u
niu p t
n, x
iq .
On rappelle que le premier schéma est le schéma d’Euler implicite et le second le schéma d’Euler explicite. Le schéma d’Euler implicite est inconditionnelement stable et le schéma d’Euler explicite est stable sous la condition de C.F.L.
ν ∆t
∆x
2¤ 1 2 .
On note, @ n P v 0, N
tw , U U U
nles vecteurs de dimension N
x1, de composantes U U U
niu
ni1, @ i P v 1, N
x1 w . Q. 1 Pour chaque schéma, écrire sur feuille et de manière détaillée la discrétisation de l’E.D.P. (1) à (4)
On étudie cette E.D.P. avec les données t
00, T 2, a 0, b 2π, ν 2, k 5 f p t, x q k sin p kt q cos p x q ν cos p kt q cos p x q ,
u
0p x q cos p kt
0q cos p x q , u
ap t q cos p kt q cos p a q , u
bp t q cos p kt q cos p b q .
Dans ce cas, la solution exacte est donnée par u exp t, x q cos p kt q cos p x q .
Q. 2 1. Pour résoudre l’E.D.P. par un schéma d’Euler implicite, le programme mainChaleurImplicite.m (script Matlab) est fourni, ainsi que les fonctions CalculF.m, NormInf.m et PlotSol.m (voir fichier CodesChaleurImplicite.tar.gz). Dans les codes fournis, il manque le fichier ChaleurImplicite.m cor- respondant à la fonction :
1
[t,x,u]=C h a l e u r I m p l i c i t e(E D P,N t,N x)
résolvant l’E.D.P. par un schéma d’Euler implicite avec
EDP : structure, définie dans mainChaleurImplicite.m, contenant l’ensemble des données de l’E.D.P.
à résoudre.
Nt : nombre de pas de discrétisation en temps, Nx : nombre de pas de discrétisation en espace,
t : discrétisation en temps (dimension Nt+1), t p n q t
n1, @ n P v 1, N
t1 w , x : discrétisation en espace (dimension Nx+1), x p i q x
i1, @ i P v 1, N
x1 w , u : u(i,n) solution approchée au temps t(n) et point x(i) (dimension (Nx+1,Nt+1)).
Ecrire cette fonction.
2. Utiliser le Profiler de Matlab pour comparer les temps d’execution de la fonction ChaleurImplicite dans les cas ou la matrice est stockée de manière pleine ou creuse. Pour celà, executer dans le profiler la commande [t,x,u]=ChaleurImplicite(EDP,5000,500); dans les deux cas et réaliser dans chaque cas un SnapShot (capture d’écran) que l’on nommera ProfilerMatFull et ProfilerMatSparse (format PNG
sous Linux).
Q. 3 1. Pour résoudre l’E.D.P. par un schéma d’Euler explicite, le programme mainChaleurExplicite.m (script Matlab) est fourni, ainsi que les fonctions CalculF.m, NormInf.m et PlotSol.m. (voir fichier CodesChaleurImplicite.tar.gz). Dans les codes fournis, il manque le fichier EulerExplicite.m cor- respondant à la fonction :
[t,x,u]=C h a l e u r E x p l i c i t e(E D P,N t,N x)