Analyse Numérique II
James ASSIENE
26 avril 2016
2
Première partie
Résolution des équations aux dérivées
partielles
3
Chapitre 1
Différences finies en 1D
5
6 CHAPITRE 1. DIFFÉRENCES FINIES EN 1D
Chapitre 2
Volumes finies en 1D
7
8 CHAPITRE 2. VOLUMES FINIES EN 1D
Chapitre 3
Problème de diffusion-convexion
Voir
Problème :
(λu0 )0 + au0 + bv = f x ∈ [0, 1] u(o) = c, u(1) = d
λ n’est pas forcément continue. λ est continue à l’intérieur des mailles mais aux interfaces (points de raccords,
frontières) elle ne l’est pas Cette équation admet une solution unique La démarche reste la même : on intégre
l’équation initiale sur chaque maille
Z Z x 1 Z x 1
i+ i+
(−λu0 )0 + au0 + bv dx = [−λu0 ] + [au] + b
2 2
= u dx = fi hi
Ki xi− 1 xi− 1
2 2
qui est à priori est
−λi+ 21 u0i+ 1 + −λi− 12 u0i− 1 + a ui+ 21 − ui− 21 + bhi ūi = fi hi
2 2
avec Z xi+ 1
1 2
ūi = u dx
hi xi− 1
2
Le premier terme est le terme diffusif C, le deuxième, le terme convectif
Pour pallier au problèmes de continuité, on suppose que :
λ− u− = λ−
i+ 1 i+ 1
u−
i− 1 i− 1
2 2 2 2
Par dérivation numérique :
0
−
ui+ 12 − ui + 0 ui+1 − ui+ 12
ui+ 1 = et ui+ 1 =
2 (xi+ 12 − xi 2 (xi+1 − xi+ 12
D’après l’équation de continuité :
!
ui+ 21 − ui ui+1 − ui+ 12
λ−
i+ 1
= λ+
i+ 1
2 h+
i
2 h−
i+1
ce qui revient à dire que
9
10 CHAPITRE 3. PROBLÈME DE DIFFUSION-CONVEXION
Chapitre 4
Différences finies en dimensions 2
On s’attaque au problème
−∆u = f
sur [0, 1] × [0, 1] = Ω et
u = uΓ (2)
sur ∂Ω
On définit un maillage x0 = 0 < x2 < ... < xn+1 = 1 ; y0 = 0 < y2 < ... < ym+1 = 1 On note
nij = [xi , xi+1 ] × [yj , yj+1 ] avec i = 0, ..., n et j = 0, ..., m
On note xij = (xi , yj ). On cherche les valeurs de xij aux points internes i.e. pour i = 1, ..., n et y = 1, ..., m
On écrit l’équation 1 pour chaque (i, j) :
∂Ωu ∂Ωu
− − =f
∂x2 ∂y 2
On suppose un maillage uniforme
xi+1 − xi = h et yj+1 − yj = k
On a, par dérivation numérique
∂Ωu −ui+1,j + 2ui,j − ui−1,j
= + O(h2 )(4)
∂x2 h2
∂Ωu −ui,j+1 + 2ui,j − ui,j−1
= + O(k 2 )(5)
∂x2 h2
En remplaçant, on obtient :
−ui+1,j + 2ui,j − ui−1,j −ui,j+1 + 2ui,j − ui,j−1
+ = fij O(h2 + k 2 ) i = 1, ..., n et j = 1, ..., m
h2 h2
On a donc l’équation discrète :
ui+1,j ui−1,j ui,j+1 ui,j−1 1 1
− 2 − − − + 2ui,j + = fij i = 1, ..., n et j = 1, ..., m
h h2 k2 k2 h2 k2
L’erreur peut être majorée par
p
α (h + k)
où p définit la vitesse de convergence : plus il est grand, plus vite on converge. La méthode converge si p > 0.
Si 1 < p < 2 : superlinéaire. Si p = 2 : quadratique.
Schéma consistant : e → 0 quand h, k → 0
Stabilité : Quelques erreurs dans les données de bases doivent donner des erreurs faibles sur les erreurs du résultat
Représentation matricielle
1. Donner un numéro à chaque inconnue : ninc (xij ) = (i − 1) + (j − 1)n avec i = 1, ..., n et j = 1, ..., m
11
12 CHAPITRE 4. DIFFÉRENCES FINIES EN DIMENSIONS 2
Chapitre 5
Volumes finis en dimension 2
5.1 Cas simple : Milieu homogène isotrope en maillage rectangulaire
On essaye de résoudre l’équation sur Ω = [0, 1] × [0, 1]
~
−div(K gradu) = f surΩ
avec u = uΓ sur ∂Ω et K tenseur symétrique i.e.
∃− , + ∈ R+ , ∀x ∈ R2 : − ||x||2 ≤ xT Kx ≤ + ||x||2 presque partout sur Ω
Homogène : K a la même valeur sur Ω Isotrope : propriétés ne varient pas en fonction de la direction de l’espace
On considère :
[xi− 21 , xi+ 12 ] i = 1, ..., N x0 = x 12 = 0 et xN + 21 = xN +1 = 1
[yj− 12 , yj+ 21 ] i = 1, ..., m y0 = y 12 = 0 et ym+ 12 = ym+1 = 1
Ωij = [xi− 21 , xi+ 12 ] × [yj− 21 , yj+ 12 ]
On pose xij = (xi , yj ) ∈ Ωij point de maille Γ. On note uij = u(xij ) valeur sur Ωij de f
Pour les éléments frontières, on fabrique un élément qui l’entoure (mais de distance 0 de la frontière originale))
pour que le point "central" reste en fait sur la frontière originale
Sur Z Z
Ωij =⇒ ~
div(K gradu dΩ = f dΩ = f¯ij |Ωij |
Ωij Ωij
où Z
1
f¯ij = f dΩ
|Ωij | Ωij
D’après le théorème de Green on a :
Z Z Z Z Z
~
−(K gradu).~
next dΓij = ~ ~
−(K gradu).−j dx+ ~ ~i dy+
−(K gradu). ~
−(K gradu).~j dx+ ~
−(K gradu). ~ dx
−i
∂Ωij h−
ij
+
vij h+
ij
−
vij
~
On note hi+ 21 = xi+1 − xi . et kj+ 12 = yj+1 − yj Milieu anisotrope : K = DI où D ∈ R+ Or gradu ∂U ~ ∂U ~
= ∂x i + ∂y j
On obtient donc
uij − ui,j−1 ui+1,j − ui,j ui,j+1 − ui,j uij − ui−1,j
+D hij − D kij − D hij + D kij = f¯ij |Ωij |
yj − yj−1 xi+1 − xi yj+1 − yj xi − xi−1
− −
Avec hij = |h+ +
ij | = |hij | et kij = |vij | = |vij |
13
14 CHAPITRE 5. VOLUMES FINIS EN DIMENSION 2
5.2 Cas simple : Milieu hétérogène anisotrope en maillage rectan-
gulaire
On essaye de résoudre l’équation sur Ω = [0, 1] × [0, 1]
~
−div(K gradu) = f surΩ
avec u = uΓ (2) sur ∂Ω et K tenseur symétrique i.e.
∃− , + ∈ R+ , ∀x ∈ R2 : − ||x||2 ≤ xT Kx ≤ + ||x||2 presque partout sur Ω
K est constant par maille sur Ω, cohersitif.
On peut donc écrire (on travail aux conditions de Dirichlet), pour (1)
On écrit Ω = ∪Ωij
Z Z
~
−div(K gradu) dS = f dS
Ωij Ωij
Pour i = 1, ..., N et j = 1, ..., m (le second membre est traité de la même manière)
Z
= ~
−(K gradu)~ n dΓ (3)
∂Ωij
~
On a gradu ∂U ~ ∂U ~
= ∂x i + ∂y j
∂U
~ K11 K12 ∂x
∂U ∂U ~ ∂U ∂U ~
K gradu = ∂U = K11 + K12 i + K12 + K22 j
K12 K22 ∂y ∂x ∂y ∂x ∂y
Or ~n = (nx , ny ) donc
~ n = K11 ∂U + K12 ∂U nx + K12 ∂U + K22 ∂U ny = ∂U (K11 nx + K12 ny )+ ∂U (K12 nx + K22 ny ) (4)
K grad.~
∂x ∂y ∂x ∂y ∂x ∂y
5.3 Cas simple : Milieu hétérogène anisotrope en maillage généraux
(non structuré et non conforme)
Annexes
5.4 Implémentation
5.4.1 Gauss-Seidel
1. Rechercher sur google scholar
2. Rechercher en anglais
‘
5.4.2 TP volume finis 1D général
1. Programmer dans le cas où on fait un décentrage et le cas où on ne le fait pas (écrier le système dans ce
cas)
5.4.3 Test logiciel
Supposons que l’on doive tester une fonction f donnée. Définissons DT ≡ Test case qui est le n-uplet
(SC , DE, f, g, RA, , N ) tel que
1. SC = scénario représentatif du cas à tester
2. DE = Données représentative de SE
3. f = fonction à tester
4. g = fonction de test
5. RA = Résultat attendu
6. = tolérance
7. N = Mesure d’erreur
avec
N (g(DE, f (DE)), RA) ≤
Le plus souvent {DE} peut être infini
Dans le cas le plus extrême on test tous les cas
On définit la relation d’équivalence du test, deux entrées a et b sont en relations si et seulement si si le test est
positif pour a, il est aussi positif pour b
Avec les réels, obligatoirement travaillé avec les erreurs relatives (sauf pour 0)
Dans de nombreux cas, g = Id(si on connait le résultat) ou g = f −1 si on ne le connait pas
Problème de la partition : trouver les classes d’équivalence
Problème de l’oracle : détermination du triplet (g, RA, N )
Sur les réels, les premières classes d’équivalence sont les limites. On dit qu’on est à une limite lorsque l’une
des conditions suivantes est vérifié :
1. lorsque l’une des valeurs devient 0 (x ou f (x))
2. toute quantité qui devient infini ou devient l’une des valeurs d’une borne de l’ensemble de définition
Etre dans un voisinage des deux cas précédents implique être une limite. Chaque limite défini une classe,
de même que les voisinages gauches et droits d’une limite. Il n’y pas de classe de limite
Prendre des nombres entachés d’erreur (décimal illimité)
Pour les programmes traitant avec les chaines de caractère, penser à 0 , # etc...
Pour les collections, prendre les tailles 0, 1, 2, +∞ et les valeurs intermédiaires
On peut modéliser les données à tester par un automate
Regarder le test k−wise et "Jenny"
15