Vous êtes sur la page 1sur 4

Université Pierre et Marie Curie Année universitaire 2009-2010

M1 Master mathématiques et applications - Cours MM006


Bases des méthodes numériques - E. Godlewski et M. Vohralik

Partiel du vendredi 30 octobre 2009


durée 2 heures - aucun document n’est autorisé
Il est demandé de justifier précisément les résultats et de rédiger soigneusement.
Toutes les questions sont indépendantes.

Il est demandé de rédiger la question scilab sur une feuille séparée

Les indications de coefficients (note sur 20 points) sont indicatives

Question 1 (7 points)
a- On considère le problème (l’équation des ondes)
 2 2
∂ u 2∂ u
(x, t) − c (x, t) = 0, x dans ]0, L[, t > 0


2 ∂x2
 ∂t



(E) ∂u
u(x, 0) = u0 (x), (x, 0) = g(x), x ∈ [0, L]


∂t



u(0, t) = u(L, t) = 0, t > 0,

où c > 0 est une constante donnée, u0 , g sont des fonctions données u0 ∈ C 2 ([0, L]), g ∈
C 1 ([0, L]), nulles en 0 et L. On suppose que (E) a une unique solution u ∈ C 2 ([0, L] × R).
Écrire un schéma de différences finies centrées consistant qui permette d’approcher la
solution u de (E) en des points (xi , tn ) par une valeur notée vin :
- Définir ces points (xi , tn ) en introduisant un pas d’espace ∆x et un pas de temps
∆t, péciser dans quels ensembles d’entiers i et n varient.
- Vérifier que si u ∈ C 2 ([0, L] × R) est solution de (E), on a le développement
∆t2 00
u(x, ∆t) = u(x, 0) + ∆tg(x) + c2 u0 (x) + O(∆t3 ).
2
En déduire une formule de différences finies pour définir vj1 à partir des valeurs u0j =
u0 (xj ), u0j±1 = u0 (xj±1 ) et de gj = g(xj ).
- Écrire le schéma permettant de calculer l’ensemble des valeurs vin : définir toutes
les données initiales et aux limites pour le schéma, préciser la formule permettant de
calculer les autres valeurs, vérifier qu’on peut l’écrire sous une forme explicite (on posera
∆t
µ = c ∆x ).
Définir et évaluer l’erreur de consistance en fonction de ∆x et ∆t et de u en supposant
la solution u de (E) suffisamment régulière u ∈ C p ([0, L]×R) (préciser la valeur minimale
de p que vous supposez).
- Introduire un vecteur v n dont les composantes sont les valeurs vin et écrire le schéma
précédent sous forme matricielle, avec une matrice qu’on précisera.

1
Question 2 (8 points)
1. On considère le problème aux limites : trouver u ∈ C 2 (]0, L[) ∩ C 0 ([0, L])
d du  du

 −
 k(x) + b(x) + c(x)u(x) = f (x), x dans ]0, L[,
(P ) dx dx dx


u(0) = α, u(L) = β

où α, β sont des constantes données, k ∈ C 1 ([0, L]), k(x) ≥ k0 > 0, ∀x ∈ [0, L], et
b, c, f ∈ C 0 ([0, L]).
1.a. Écrire la formulation variationnelle du problème aux limites (P) sous la forme :
trouver u in V
(F V ) ∀v ∈ V, a(u, v) = `(v),
dans un espace V de fonctions dérivables au sens classique. Préciser cet espace, l’ex-
pression de la forme bilinéaire a en fonction de k, b, c, la forme linéaire `. Le choix de
V, a, ` doit être fait pour avoir l’équivalence des deux formulations, on montrera cette
équivalence.
1.b. On suppose de plus b ∈ C 1 ([0, L]). Montrer que si b et c vérifient la condition :
1
− b0 (x) + c(x) ≥ 0, ∀x ∈ [0, L],
2
la forme bilinéaire a vérifie une inégalité d’ellipticité
dv 2
ν > 0, a(v, v) ≥ ν|| ||
dx 0
pour tout v ∈ C 1 ([0, L]), où ||.||20 désigne la forme de L2 (0, L). En déduire que si la
solution de (P ) existe, elle est unique.

2. On considère le problème aux limites (P1 ) : u ∈ C 2 (]0, L[) ∩ C 1 ([0, L])


d du  du

 −
 k(x) + b(x) + c(x)u(x) = f (x), x dans ]0, L[,
(P1 ) dx dx dx

k(0)u0 (0) = µ0 , k(L)u0 (L) = µL

avec la même équation différentielle que celle de (P ), les mêmes hypothèses sur k, b, c, f
mais avec d’autres conditions aux limites, où µ0 , µL sont des constantes données.
2.a. Quel espace V1 faut-il choisir pour la formulation variationnelle de (P1 ) ? Préciser
cet espace, la forme bilinéaire a1 , la forme linéaire `1 .
2.b. On suppose pour simplifier b = 0. Est ce que la condition de la question 1.b suffit
à montrer une inégalité d’ellipticité ? Donner une condition sur c qui assure l’unicité de
la solution u de (P1 ).

Il est demandé de rédiger la question suivante sur une feuille séparée


Question Scilab (5 points)

2
Question Scilab
On considère ici un problème de convection–diffusion sur l’intervalle ]0, 1[

 −u′′ (x) + b(x)u′ (x) = f (x),
(CD) u(0) = α,
u′(1) = 0,

où α ∈ R, f est une fonction dans C 0 ([0, 1]) et b une fonction dans C 1 ([0, 1]) telle que
b(1) ≥ 0 et − 12 b′ (x) ≥ 0 sur [0, 1].
Pour N ∈ N∗ , on pose h = 1/(N + 1) et définit les points
xk = kh, k = 1, . . . , N + 1.
On notera, pour alléger les notations, bk = b(xk ) et fk = f (xk ). La méthode des différences
finies (avec une discrétisation centrée du terme convectif) pour le problème (CD) est donnée
par
−α + 2uk − uk+1 uk+1 − α
+ bk = fk , k = 1,
h2 2h
−uk−1 + 2uk − uk+1 uk+1 − uk−1
+ bk = fk , k = 2, . . . , N,
h 2 2h
−2uk−1 + 2uk
= fk , k = N + 1.
h2

1. On pose uh = (u1 , . . . , uN +1 )T . Montrer que les relations précédentes peuvent s’écrire


sous forme compacte
Ah uh = vh .
2. Ecrire deux fonctions Scilab f et b pour f et b. A titre d’exemple, on pourrait
considérer
π2 π  π π 
f (x) = sin x + cos x ,
4 2 2 2
b(x) = 1.
L’entête de ces fonctions sera
function y=f(x),
function y=b(x).
Argument d’entrée : coordonnée x. Argument de sortie : valeur y de la fonction donnée
en x.
3. Ecrire une fonction Scilab calculant la matrice Ah . L’entête de cette fonction sera
function A=CalculMat(N,b).
Arguments d’entrée : le nombre de points N et le nom de la fonction b. Argument de
sortie : un tableau carré A contenant Ah .
4. Ecrire une fonction qui construit le vecteur vh . L’entête de cette fonction sera
function v=CalculSM(N,f,b,alpha).
Argument d’entrée : le nombre de points N, le nom de la fonction f , le nom de la
fonction b et le paramètre α. Argument de sortie : v contenant le vecteur du second
membre vh .

1
5. Ecrire une fonction qui évalue la solution exacte, donnée à l’occurrence par sin(πx/2),
dans les points du maillage. L’entête de cette fonction sera
function ue=SolExact(N).
Argument d’entrée : le nombre de points N. Argument de sortie : ue contenant le
vecteur des valeurs ponctuelles de la solution exacte.
6. Pour des valeurs de N données par N = 6 × 2j , j = 1, . . . , 7, calculer chacune des
erreurs kuh − ueh k1 , kuh − ueh k2 et kuh − ueh k∞ , où uh représente la solution de la
méthode des différences finies et ueh le vecteur des valeurs ponctuelles de la solution
exacte. Représenter sur un même graphique les trois courbes kuh − ueh kq , q = 1, 2, ∞,
en fonction de N en échelle log–log.
Ecrivez cet algorithme dans le langage Scilab comme si vous le programmez dans l’or-
dinateur.
Ceci est une question algorithmique – cela n’est pas la syntaxe exacte du
langage Scilab, mais l’algorithmique qui compte !

Vous aimerez peut-être aussi