350
9 Solutions des exercices
puis, en sommant sur j et en remarquant que
∞
j=−∞ (u
n+1
j+1 − u
n+1
j−1 )u
n+1
j
= 0,
on obtient
∞
j=−∞
|u
n+1
j
|
2 ≤
∞
j=−∞
|u
n+1
j
|
2 +
∞
j=−∞
|u
n+1
j
− u
n
j |
2 ≤
∞
j=−∞
|u
n
j |
2 .
Solution 8.12 Le schéma décentré (8.59) peut s’écrire sous la forme simplifiée
u
n+1
j
=
(1 − λa)u
n
j + λau
n
j−1 si a > 0
(1 + λa)u
n
j − λau
n
j+1 si a < 0.
Commençons par le cas a > 0. Si la condition de CFL est vérifiée, alors les
coefficients (1 − λa) et λa sont strictement positifs et inférieurs à 1.
Ceci implique que
min{u
n
j−1 , u
n
j } ≤ u
n+1
j
≤ max{u
n
j−1 , u
n
j }
et, par récurrence sur n,
inf
l∈Z
{u
0
l } ≤ u
n+1
j
≤ sup
l∈Z
{u
0
l } ∀n ≥ 0,
d’où on déduit l’estimation (8.85).
Quand a < 0, en utilisant à nouveau la condition de CFL, les coefficients
(1+λa) et −λa sont strictement positifs et inférieurs à 1. En procédant comme
précédemment, on en déduit l’estimation (8.85).
Solution 8.13 Pour résoudre numériquement le problème (8.47), on appelle
le Programme 9.5. Noter que la solution exacte est une onde progressive, de
vitesse a = 1, définie par u(x, t) = 2 cos(4π(x − t)) + sin(20π(x − t)). Comme
le nombre de CFL est fixé à 0.5 les paramètres de discrétisation Δx et Δt sont
reliés par la relation Δt = CF L · Δx. On ne peut donc choisir arbitrairement
qu’un seul des deux paramètres.
Pour vérifier la précision du schéma en Δt, on peut utiliser les instructions
suivantes :
xspan =[0 ,0.5];
tspan =[0 ,1];
a =1; cfl =0.5;
u0= inline ( ’ 2* cos (4* pi* x )+ sin (20* pi* x) ’ ,’x ’ );
uex = inline ([ ’ 2* cos (4* pi *(x -t ))+ ’ ,...
’ sin (20* pi *(x -t )) ’] , ’x ’ ,’t ’ );
ul= inline ( ’ 2* cos (4* pi* t) - sin (20* pi* t) ’ ,’t ’ );
DT =[1. e -2 ,5.e -3 ,2.e -3 ,1.e -3 ,5.e -4 ,2.e -4 ,1.e -4];
e_lw =[]; e_up =[];
for deltat = DT
deltax = deltat *a / cfl;
[ xx ,tt , u_lw ]= hyper ( xspan , tspan ,u0 ,ul ,2 ,...
cfl , deltax , deltat );
[ xx ,tt , u_up ]= hyper ( xspan , tspan ,u0 ,ul ,3 ,...
cfl , deltax , deltat );
U = feval ( uex ,xx , tt( end ));
[ Nx , Nt ]= size ( u_lw );
e_lw =[ e_lw sqrt ( deltax )* norm ( u_lw (Nx ,:) -U ,2)];
e_up =[ e_up sqrt ( deltax )* norm ( u_up (Nx ,:) -U ,2)];
Précédent

- 360/374

Suivant