MACS2 TPs Algo/EDP
Sup’Galilée Année 2018-2019
Travaux pratiques - Contrôle final du 17 janvier 2019 (3h00)
Sans documents, sans calculatrice, sans portable, ...
Le barême est donné à titre indicatif
Exercice 1 (2.5 points)
Pour stocker les informations (minimales) relatives à un maillage, on utilise les tableaux qqq et me me me respectivements tableau des sommets/points et tableau de connectivité :
nom type dimension descriptif
n q entier 1 nombre total de noeuds (sommets) du maillage n me entier 1 nombre de triangles
q réels 2 ˆ n q q( il , i ) est la il -ème coordonnée du i -ème sommet, il P t1, 2u et i P t1, . . . , n q u. Le i-ème sommet sera aussi noté qqq i “ pqqq i x , qqq i y q avec qqq i x “ q(1, i ) et qqq i y “ q(2, i )
me entier 3 ˆ n me me(jl,k) indice de stockage, dans le tableau q , du jl -ème sommet du tri- angle d’indice k, jl P t1, 2, 3u et k P t1, . . . , n me u. Pour tout triangle la nu- mérotation des points est dans le sens direct.
q (:, me(1,k)) est le 1er sommet du k- ème triangle, q (:, me(2,k)) est le 2ème sommet, ...
Q. 1 Ecrire une fonction [q,me]=RectMesh(a,b,c,d,Nx,Ny) retournant les tableaux de points et de connectivité associé au rectangle ra, bs ˆ rc, ds avec Nx points suivant x et Ny points suivant y comme décrit sur la figure ci-dessous :
-2 -1.5 -1 -0.5 0 0.5 1 1.5 2
-1 -0.5 0 0.5 1
[q,me]=RectMesh(-2,2,-1,1,7,6)
1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20
21 22
23 24
25 26
27 28
29 30
31 32
33 34
35 36
37 38
39 40
41 42
43 44
45 46
47 48
49 50
51 52
53 54
55 56
57 58
59 60
1 2 3 4 5 6
7 8 9 10 11 12
13 14 15 16 17 18
19 20 21 22 23 24
25 26 27 28 29 30
31 32 33 34 35 36
37 38 39 40 41 42
Attention, les numérotations sont celles imposées par la figure et elles diffèrent de celles utilisées en TP. Les nombres
encadrés sont les indices/numéros des sommets. Les nombres dans les triangles sont les indices/numéros des triangles.
Exercice 2 (5.5 points)
On rappelle tout d’abord quelques définitions.
Definition 1 (problème de Cauchy) Soit f f f l’application continue définie par
f f f : rt 0 , t 0 ` T s ˆ R d ÝÑ R d pt, y y yq ÞÝÑ f f f pt, y y yq
avec T Ps0, `8s. Un problème de Cauchy revient à chercher une fonction y y y : rt 0 , t 0 ` T s ÝÑ R d continue et dérivable, telle que
y
y y 1 ptq “ f f f pt, y y yptqq, @t P rt 0 , t 0 ` T s (1)
y y ypt 0 q “ y y y r0s P R d . (2)
Différents schémas sont rappelés permettant de résoudre numériquement un problème de Cauchy. On note t n , n P v0, N w, une discrétisation régulière de rt 0 , t 0 ` Ts, y y y rns « y y ypt n q et f f f rns “ f f f pt n , y y y rns q
‚ Le schéma de Runge-Kutta d’ordre 3
k k k rns 1 “ f f f pt n , y y y rns q
k k k rns 2 “ f f f pt n ` h 2 , y y y rns ` h 2 k k k rns 1 q
k k k rns 3 “ f f f pt n ` h, y y y rns ´ hk k k rns 1 ` 2hk k k rns 2 q y y y rn`1s “ y y y rns ` h 6 pk k k rns 1 ` 4k k k rns 2 ` k k k rns 3 q.
(3)
‚ Trois schémas d’Adams-Bashforth : y y y rn`1s “ y y y rns ` h
2
´
3f f f rns ´ f f f rn´1s
¯
. (4)
y y y rn`1s “ y y y rns ` h 12
´
23f f f rns ´ 16f f f rn´1s ` 5f f f rn´2s
¯
. (5)
y y y rn`1s “ y y y rns ` h 24
´
55f f f rns ´ 59f f f rn´1s ` 37f f f rn´2s ´ 9f f f rn´3s ¯
. (6)
Ces schémas sont explicites et leur ordre correspond au nombre de pas.
‚ Trois schémas d’Adams-Moulton : y y
y rn`1s “ y y y rns ` h 2
´
f f f rn`1s ` f f f rns
¯
. (7)
y y
y rn`1s “ y y y rns ` h 12
´
5f f f rn`1s ` 8f f f rns ´ f f f rn´1s ¯
. (8)
y y
y rn`1s “ y y y rns ` h 24
´
9f f f rn`1s ` 19f f f rns ´ 5f f f rn´1s ` f f f rn´2s
¯
. (9)
Ces schémas sont implicites et leur ordre correspond au nombre de pas plus un.
Q. 1 (Matlab) Ecrire la fonction Matlab [ t ,Y]=redRK3(f,a,b,yo,N) permettant de résoudre numériquement le problème de Cauchy (1)-(2) par le schéma de Runge et Kutta d’ordre 3. Les paramètres d’entrée sont les données du problème de Cauchy avec f “ f f f , a “ t 0 , b “ t 0 ` T, y0 “ y y y r0s P R d et N étant le nombre de pas de discrétisation.
Application : On souhaite résoudre numériquement le problème de l’oscillateur libre de Van der Pool (1924) d 2 x
dt 2 ptq ´ ω 0 p1 ´ x 2 ptqq dx
dt ptq ` ω 0 2 xptq “ 0, @t P r0, T s (10) avec les conditions initiales
xp0q “ x 0 et dx
dt p0q “ v 0 (11)
où x 0 et v 0 sont deux réels donnés. xptq représente l’amplitude des oscillations. , ω 0 et T sont des constantes positives.
On pourra prendre, par exemple, “ 0.1, ω 0 “ 1 et T “ 10.
On va utiliser la méthode de Runge-Kutta d’ordre 3 pour l’étude numérique des différents types de mouvements possibles, suivant les conditions de l’expérience (choix des valeurs de et de ω 0 ) et les conditions initiales imposées.
On souhaite ensuite tracer les deux courbes discrètes xptq et x 1 ptq.
Q. 2 1. Ecrire de manière détaillée le problème de Cauchy associé à (10)-(11).
2. Quelles sont les données du problème de Cauchy obtenu ? (avec leur type détaillé : entier, réel, complexe, vecteur, matrice, fonction, ...)
3. Quelles sont les inconnues du problème de Cauchy obtenu ? (avec leur type détaillé : entier, réel, complexe, vecteur, matrice, fonction, ...)
Q. 3 (Matlab) Ecrire un programme Matlab permettant de résoudre numériquement (10)-(11) par la méthode de Runge-Kutta d’ordre 3, et de représenter les deux courbes discrètes correspondant à xptq et x 1 ptq.
Un schéma prédicteur-correcteur procède à chaque itération en deux temps : il fournit une valeur approchée de la solution au n i` eme pas en utilisant un schéma explicite (prédiction), puis il calcule la valeur correspondante de f f f et enfin, il substitue cette valeur dans un schéma implicite (correction).
y y
y r0s donné
pour n variant de 0 à N ´ 1 faire
Calculer y y y une valeur approchée de y y ypt n`1 q par un schéma explicite à partir de y y y rns , y y y rn´1s , ...
Evaluer f f f “ f f f pt n`1 , y y yq
Calculer y y y rn`1s à l’aide d’un schéma implicite en remplaçant f f f rn`1s par f f f finpour
On suppose écrite la fonction [ t ,Y]=redRK3(f,a,b,yo,N) correspondant au schéma de Runge et Kutta d’ordre 3.
Les paramètres d’entrée f, a, b, yo correspondent respectivement aux f f f , t 0 , t 0 `T, y y y r0s du problème de Cauchy (1)-(2).
Enfin, Y est le tableau contenant les y y y rns , n P t0, ¨ ¨ ¨ , Nu et t est le tableau contenant les N+1 réels t n , n P t0, ¨ ¨ ¨ , Nu Q. 4 (Matlab) 1. Ecrire la fonction [ t ,Y]=redPC3(f,a,b,yo,N) correspondant à un schéma prédicteur-correcteur
utilisant les schémas d’Adams-Bashforth et d’Adams-Moulton d’ordre 3. Ses paramètres d’entrée et de sortie sont identiques à ceux de la fonction redRK3 .
2. Ecrire un programme permettant de représenter graphiquement l’ordre du schéma de prédiction-correction pré- cédent.
Exercice 3 (6.0 points)
On souhaite résoudre numériquement l’E.D.P. suivante Bu
Bt pt, xq ´ κpxq B 2 u
Bx 2 pt, xq “ f pt, xq, @pt, xq Pst 0 ; t 0 ` T sˆsa; br, (1)
upt 0 , xq “ u 0 pxq, @x P ra; bs, (2)
upt, aq “ u a ptq, @t P rt 0 ; t 0 ` T s, (3)
Bu
Bx pt, bq ` upt, bq “ v b ptq, @t Pst 0 ; t 0 ` T s. (4) avec κ : ra, bs ÝÑ R `˚ , t 0 P R , T ą 0, pa, bq P R 2 , a ă b.
On note t n , n P v0, N t w et x i , i P v0, N x w les discrétisations régulières des intervalles rt 0 ; t 0 ` Ts et ra; bs avec N t pas de discrétisation en temps et N x pas de discrétisation en espace. On souhaite résoudre l’E.D.P. à l’aide des schémas numériques
u n`1 i ´ u n i
∆t ´ κ i u n`1 i`1 ´ 2u n`1 i ` u n`1 i´1
∆x 2 “ f i n`1 . (5)
u n`1 N
x
´2 ´ 4u n`1 N
x
´1 ` p3 ` 2∆xqu n`1 N
x
“ 2∆xv b pt n`1 q. (6)
Q. 1 1. Expliquer précisement comment le schéma (5) a été obtenu à partir de (1) et expliciter les valeurs u n`1 i , f i n`1 , κ i , ∆t et ∆x.
2. Expliquer précisement comment le schéma (6) a été obtenu à partir de (4).
3. Donner une discrétisation (détaillée) du problème (1) à (4) en utilisant les schémas (5) et (6).
On note U U U n les vecteurs de dimension N x ` 1, de composantes U U U n i “ u n i´1 , @i P v1, N x ` 1w.
Q. 2 1. Comment initialiser le vecteur U U U 0 ?
2. En supposant le vecteur U U U n déjà calculé, montrer que le vecteur U U U n`1 est solution du système linéaire
A U U U n`1 “ bbb n (7)
en explicitant la matrice A et le vecteur bbb n (préciser les dimensions).
Q. 3 (Matlab) 1. Ecrire la fonction AssembleMat1D retournant la matrice creuse M P M d p R q définie par
M “
¨
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˝
ν 1 ν 2 ν 3 0 . . . . . . 0 β 1 α 1 β 1 0 . . . . . . 0 0 . . . . . . . . . . . . .. . .. . . . . . . . . . . . . . . . . .. . .. . . . . . . . . . . . . . 0 0 . . . . . . 0 β d´2 α d´2 β d´2 0 . . . . . . 0 µ 1 µ 2 µ 3
˛
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‚
(8)
où α P R d´2 , β P R d´2 µ P R 3 et ν P R 3 sont donnés. Cette fonction ne devra pas utiliser de boucles for ou while.
2. On se donne a “ 0, b “ 3, T “ 10, f pt, xq “ x 3 sinptq, u 0 pxq “ 10,
v b ptq “
#
10 ` 20t, si t ă“ 5,
110, si t ą 5. et κpxq “
#
1, si x P ra, p2a ` bq{3s Y rpa ` 2bq{3, bs, 5, si sp2a ` bq{3, pa ` 2bq{3r.
Ecrire un programme Matlab complet permettant de résoudre le problème (1) à (4) en utilisant les schémas (5) et (6).
Exercice 4 (1.5 points)
Nous allons écrire une fonction permettant d’effectuer ce produit. Mais auparavant, quelques petits rappels (ou non) des possibilités offertes par le langage Matlab.
Il est facile sous Malab/Octave de modifier une matrice (creuse ou non). Par exemple,
‚ A(I,J)=M
Les tableaux d’indices I et J sont de dimension respective n et m. La matrice M est de dimension n-par-m.
La matrice A est modifiée de telle sorte que
A(I(i ), J(j))=M(i,j), @ i P v1, nw, @j P v1, mw
‚ A(I,J)=A(I,J)+M Même chose en sommant.
‚ A(i,:)=a
Ici a est un scalaire. Tous les éléments de la ligne i de la matrice A valent a .
‚ A(:, j)=a
Ici a est un scalaire. Tous les éléments de la colonne j de la matrice A valent a .
‚ ...
Sous Matlab/Octave, il est possible de récupérer tous les éléments non nuls d’une matrice creuse A ainsi que leurs indices de ligne et de colonne à l’aide de la commande
[ I ,J,K]=find(A);
Ici les trois tableaux I, J et K ont même longueur et on a A(I(k),J(k)) == K(k) pour tout k inférieur ou égal à length(K).
Q. 1 (Matlab) Ecrire la fonction spMatKron permettant à partir deux matrices creuses carrées A P M n p R q et
B P M m p R q de retourner la matrice creuse C “ A b B . Pour celà, on initialisera la matrice retournée C à l’aide de
la commande C=sparse(n∗m,n∗m) puis on utilisera uniquement une boucle sur les éléments non-nuls de la matrice
A pour «remplir» la matrice C .
Exercice 5 (5.5 points)
Soient Ω “sa, brˆsc, drĂ R 2 et Γ “ BΩ la frontière du domaine Ω. On note Γ N , Γ S , Γ O et Γ E respectivement les frontières nord, sud, ouest et est. on a
Γ “ Γ N Y Γ S Y Γ O Y Γ E .
On note px i q N i“0
xet py j q N j“0
yles discrétisation régulières, respectivement, des intervalles ra, bs et rc, ds défines par x i “ a ` ih x , @i P v0, N x w et y j “ c ` jh y , @j P v0, N y w (1) avec h x “ pb ´ aq{N x et h y “ pd ´ cq{N y . On note aussi
n x “ N x ` 1, n y “ N y ` 1 et N “ n x ˆ n y (2)
Soient f : Ω ÝÑ R et g : Γ ÝÑ R deux fonctions données. On veut résoudre le problème suivant
´∆u “ f, dans Ω (3)
u “ g, sur Γ (4)
en utilisant la discrétisation d’ordre 2 suivante :
´ U i`1,j ´ 2U i,j ` U i´1,j
h 2 x ´ U i,j`1 ´ 2U i,j ` U i,j´1
h 2 y “ f px i , y j q, @pi, jq Pw0, N x vˆw0, N y v, (5)
U 0,j “ gpa, y j q, @j Pw0, N y v, (6)
U N
x,j “ gpb, y j q, @j Pw0, N y v, (7)
U i,0 “ gpx i , cq, @i P v0, N x w, (8)
U i,N
y“ gpx i , dq, @i P v0, N x w. (9)
avec U i,j « upx i , y j q.
Pour tout j P v0, N y w, on note U :,j le vecteur de R n
xdéfinit par
U :,j “
¨
˚
˝ U 0,j
.. . U N
x,j
˛
‹
‚ .
On note V V V P R N le vecteur bloc
V V V “
¨
˚
˚
˚
˚
˝ U :,0
U :,1
.. . U :,N
y˛
‹
‹
‹
‹
‚
Q. 1 Explicitez la bijection F : v0, N x w ˆ v0, N y w ÝÑ v1, Nw telle que
@pi, jq P v0, N x w ˆ v0, N y w, V k “ U i,j , avec k “ Fpi, jq.
Dans le cas de la numérotation en pi, jq P v0, N x w ˆ v0, N y w on parlera de numérotation 2D et pour la numérotation en k P v1, Nw on parlera de numérotation globale.
Q. 2 (Matlab) Ecrire la fonction k=bijF(i,j ,nx) correspondant à la bijection F ( numerotation 2D vers nume- rotation globale).
Chacune des équations du problème discret (5)-(9) correspond à une discrétisation en un point px i , y j q. Nous choisissons d’écrire ces équations en utilisant la même numérotation que lors de la construction du vecteur V V V : l’équation écrite au point px i , y j q sera écrite en ligne k “ F pi, jq du système.
Q. 3 Etablir que le problème discret (5)-(9) peut s’écrire sous la forme du système linéaire bloc
¨
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˝
E O ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ O O
M D M O ¨ ¨ ¨ O O
O M . . . . . . . . . .. . .. . .. . O . . . . . . . . . O .. . .. . .. . . . . . . . . . . M O
O O ¨ ¨ ¨ O M D M
O O ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ O E
˛
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‚ V V V “
¨
˚
˚
˚
˚
˚
˚
˚
˝ B :,0 B :,1
.. . .. . B :,N
y˛
‹
‹
‹
‹
‹
‹
‹
‚
(10)
où chaque bloc de la matrice est une matrice pN x ` 1q par pN x ` 1q. La matrice O P M N
x`1 p R q est la matrice nulle. Les matrices creuses D , M et E ainsi que les vecteurs B :,j P R N
x`1 , pour tout j P v0, N y w, devront être donnés explicitement.
On note I n la matrice identité de M n p R q et J n la matrice de M n p R q définie par
J n “
¨
˚
˚
˚
˚
˚
˚
˚
˝
0 0 ¨ ¨ ¨ ¨ ¨ ¨ 0 0 1 . . . .. . .. . . . . . . . . . . .. . .. . . . . 1 0 0 . . . . . . 0 0
˛
‹
‹
‹
‹
‹
‹
‹
‚
P M n p R q.
Nous allons maintenant générer/assembler la matrice du système (10) sans tenir compte des conditions aux limites : on note ´A xy la matrice ainsi obtenue.
C’est une matrice bloc de M N p R q avec n y lignes bloc composées de blocs carrés de dimension n x qui s’écrit sous la forme :
A xy “
¨
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˝
O O ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ O O O A x O O ¨ ¨ ¨ O O O O A x . . . . . . .. . .. .
.. . O . . . . . . . . . O .. . .. . .. . . . . . . . A x O O O O ¨ ¨ ¨ O O A x O O O ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ O O
˛
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‚
`
¨
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˝
O O ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ O O S y T y S y O ¨ ¨ ¨ O O O S y T y . . . . . . .. . .. .
.. . O . . . . . . . . . O .. . .. . .. . . . . . . . T y S y O O O ¨ ¨ ¨ O S y T y S y
O O ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ ¨ O O
˛
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‚
(11)
où
S y “ 1
h 2 y J n
x, T y “ ´ 2
h 2 y J n
xet A x “ 1 h 2 x L avec
L “
¨
˚
˚
˚
˚
˚
˚
˚
˚
˚
˚
˝
0 0 0 ¨ ¨ ¨ ¨ ¨ ¨ 0 1 ´2 1 . . . .. . 0 . . . . . . . . . . . . .. . .. . . . . . . . . . . . . . 0 .. . . . . 1 ´2 1 0 . . . . . . 0 0 0
˛
‹
‹
‹
‹
‹
‹
‹
‹
‹
‹
‚
P M n
xp R q
On peut noter que les matrices A x , T y et S y sont des matrices de M n
xp R q.
En notant A y P M n
yp R q la matrice définie par A y “ h 1
2y