MACS2 TPs Algo/EDP
Sup’Galilée Année 2018-2019
Travaux pratiques - Rattrapage du 25 mars 2019 (3h00)
Sans documents, sans calculatrice, sans portable, ...
Le barême est donné à titre indicatif
Exercice 1 (3 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 :
-3 -2 -1 0 1 2
-2 -1.5 -1 -0.5 0 0.5 1
[q,me]=RectMesh(-3,2,-2,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 et de celles
proposées dans le dernier examen. 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 (7 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 4 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 2 , y y y rns ` h 2 k k k rns 2 q k
k k rns 4 “ f f f pt n ` h, y y y rns ` hk k k rns 3 q y
y y rn`1s “ y y y rns ` h 6 pk k k rns 1 ` 2k k k rns 2 ` 2k k k rns 3 ` k k k rns 4 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]=redRK4(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 4. 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 : Considérons le système mécanique de trois masses m 1 , m 2 et m 3 attachées entre elles horizontalement par des ressorts de raideur k 1 , k 2 , k 3 et k 4 . Les positions au cours du temps des masses par rapport à leurs positions d’équilibre sont données par les fonctions x 1 , x 2 et x 3 .
Le système d’équations de mouvement du système s’écrit sous la forme :
$
’ &
’ %
m 1 x : 1 ptq ` pk 1 ` k 2 qx 1 ptq ´ k 2 x 2 ptq “ 0 (10a) m 2 x : 2 ptq ` pk 2 ` k 3 qx 2 ptq ´ k 2 x 1 ptq ´ k 3 x 3 ptq “ 0 (10b) m 3 x : 3 ptq ` pk 3 ` k 4 qx 3 ptq ´ k 3 x 2 ptq “ 0 (10c) On veut résoudre ce système d’E.D.O. avec pour données initiales x 1 p0q “ 1, x 9 1 p0q “ 0, x 2 p0q “ ´1, x 9 2 p0q “ 1{2, x 3 p0q “ 1{3 et x 9 2 p0q “ ´1{2. Le temps final T sera égal à 20.
On va utiliser la méthode de Runge-Kutta d’ordre 4 pour l’étude numérique des différents types de mouvements
k 1
m 1
k 2
m 2
k 3
m 3
k 4
Figure 1 – Positions d’équilibre
k 1
m 1
k 2
m 2
k 3
m 3
k 4
x 1 ptq x 2 ptq x 3 ptq
Figure 2 – En mouvement
Q. 2 1. Ecrire de manière détaillée le problème de Cauchy associé à ce système mécanique.
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 ce système mécanique par la méthode de Runge-Kutta d’ordre 4, et de représenter dans une figure les trois courbes discrètes correspondants aux positions des trois masses au cours du temps et dans une autre figure leurs vitesses.
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]=redRK4(f,a,b,yo,N) correspondant au schéma de Runge et Kutta d’ordre 4 précédent. 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]=redPC4(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 4. Ses paramètres d’entrée et de sortie sont identiques à ceux de la fonction redRK4 .
2. Ecrire un programme permettant de représenter graphiquement l’ordre du schéma de prédiction-correction pré- cédent.
Exercice 3 (7.75 points)
On souhaite résoudre numériquement l’E.D.P. suivante Bu
Bt pt, xq ´ κ B 2 u
Bx 2 pt, xq ` cpxqupt, 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 ` 2upt, bq “ v b ptq, @t Pst 0 ; t 0 ` T s. (4) avec κ ą 0, t 0 P R , T ą 0, pa, bq P R 2 , a ă b, c : ra, bs ÝÑ R ` .
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 ´ κ u n`1 i`1 ´ 2u n`1 i ` u n`1 i´1
∆x 2 ` c i u i “ f i n`1 . (5)
u n`1 N
x
´2 ´ 4u n`1 N
x
´1 ` p3 ` 4∆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 , c 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 “ ´2, b “ 2, T “ 10, fpt, xq “ x 2 cosptq, u 0 pxq “ 10, cpxq “ 2 ` sinpxq, κ “ 1, v b ptq “ sinptq,
u a ptq “
$
’ &
’ %
10 ` 50t, si t ă“ 2, 110, si t P r2; 8r, 110 ´ 50pt ´ 8q, si t P r8; 10s.
Ecrire un programme Matlab complet permettant de résoudre le problème (1) à (4) en utilisant les schémas (5)
et (6).
Exercice 4 (3.0 points)
Soient A P M m,n p R q et B P M p,q p R q. Le produit tensoriel de Kronecker de A par B , noté A b B , est la matrice de M mp,nq p R q définie avec des blocs de dimension p ˆ q par
A b B “
¨
˚
˝
A 1,1 B ¨ ¨ ¨ A 1,n B .. . . . . .. . A m,1 B ¨ ¨ ¨ A m,n B
˛
‹
‚ (1)
Le produit de Kronecker est bilinéaire et associatif : Si les dimensions des matrices A , B et C sont compatibles on a
@λ P K
A b p B ` λ ¨ C q “ p A b B q ` λp A b C q p A ` λ ¨ B q b C “ p A b C q ` λp B b C q A b p B b C q “ p A b B q b C
Par contre, il n’est pas commutatif.
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 (7.25 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 .. .
˛
‹
‹
‹
‹
‹
‹
‹
‹ V V V “
¨
˚
˚
˚
˚
˚
˚ B :,0 B :,1
.. . ..
˛
‹
‹
‹
‹
‹
‹
(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