MACS2 TPs Algo/EDP
Sup’Galilée Année 2019-2020
Travaux pratiques - Examen du 9 mars 2020 (2h30)
Sans documents, sans calculatrice, sans portable, ...
Le barême est donné à titre indicatif
Exercice 1 (11 points)
On souhaite résoudre numériquement l’E.D.P. suivante Bu
Bt pt, xq ´ κpxq B 2 u
Bx 2 pt, xq ` c Bu
Bx 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)
Bu
Bx pt, aq “ v a ptq, @t P rt 0 ; t 0 ` Ts, (3)
upt, bq “ u b ptq, @t Pst 0 ; t 0 ` Ts. (4)
avec c ą 0, t 0 P R , T ą 0, pa, bq P R 2 , a ă b, κ : 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 ` T s 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 ` c u n`1 i`1 ´ u n`1 i´1
2∆x “ f i n`1 . (5)
u n`1 2 ´ 4u n`1 1 ` 3u n`1 0 “ ´2∆xv a pt n`1 q. (6) Q. 1 (a) Expliquer précisement comment le schéma (5) (ordre 1 en temps et ordre 2 en espace) a été obtenu à
partir de (1) et expliciter les valeurs u n`1 i , f i n`1 , c i , ∆t et ∆x.
(b) Expliquer précisement comment le schéma (6) (ordre 2) a été obtenu à partir de (3).
(c) Donner une discrétisation (détaillée) du problème (1) à (4) en utilisant (entre autres) 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 (a) Comment initialiser le vecteur U U U 0 ?
(b) 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) 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 d´2 µ P R 3 et ν P R 3 sont donnés.
Q. 4 (Matlab) On se donne a “ ´2, b “ 2, T “ 10, f pt, xq “ x 2 cosptq, u 0 pxq “ 10, kpxq “ 2 ` sinpxq, c “ 1, v a ptq “ sinptq,
u b ptq “
$
’ &
’ %
10 ` 50t, si t ă“ 1, 60, si t P r1; 9r, 60 ´ 50pt ´ 9q, si t P r9; 10s.
Ecrire un programme Matlab complet permettant de résoudre le problème (1) à (4) en utilisant les schémas (5) et (6).
Pour améliorer les performances du programme, nous allons réécrire la fonction AssembleMat1D sans utiliser de boucles et en utilisant la commande A=sparse(i,j,s,m,n) .
Q. 5 (Matlab) (a) Expliquer l’usage de la commande A=sparse(i,j,s,m,n) .
(b) Ecrire la fonction AssembleMat1DVec retournant la matrice creuse M P M d p R q définie par (8). Cette fonction ne devra pas utiliser de boucles for ou while .
Exercice 2 (9 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 .
La normale unitaire extérieure à Γ est notée n n n. 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 , g : Γ ÝÑ R et κ P R ` donnés. On veut résoudre le problème suivant
´∆u ` κ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 ` κU i,j “ 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 “ Fpi, jq du système.
2
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 de M n
xp R q. La matrice O P M n
xp R q est la matrice nulle. Les matrices creuses D , M et E ainsi que les vecteurs B :,j P R n
x, 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.
Et maintenant quelques petits rappels sur le produit tensoriel de kronecker :
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 bloc 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
˛
‹
‚ (12)
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
3
Par contre, il n’est pas commutatif.
Soit K “ A b B . Cette matrice peut être calculée avec la fonction kron de Matlab/Octave : K = kron(A,B);
Si les matrices A et B sont creuses ( sparse ) alors K l’est aussi.
En notant A y P M n
yp R q la matrice définie par A y “ h 1
2y