• Aucun résultat trouvé

MACS2 TPs Algo/EDP

N/A
N/A
Protected

Academic year: 2022

Partager "MACS2 TPs Algo/EDP"

Copied!
4
0
0

Texte intégral

(1)

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).

(2)

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

x

et py j q N j“0

y

les 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

x

dé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

(3)

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

x

p R q. La matrice O P M n

x

p 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)

S y “ 1

h 2 y J n

x

, T y “ ´ 2

h 2 y J n

x

et 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

x

p R q

On peut noter que les matrices A x , T y et S y sont des matrices de M n

x

p 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

(4)

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

y

p R q la matrice définie par A y “ h 1

2

y

L , on déduit de (11)

A xy “ I n

y

b A x ` A y b I n

x

. (13) Q. 4 (Matlab) (a) Sans utiliser de boucles, écrire la fonction Lap1DAssembling retournant la matrice creuse L .

(b) Ecrire la fonction Lap2DAssembling retournant la matrice bloc creuse A xy en utilisant (13).

(c) Proposer un programme permettant de tester/valider la matrice ainsi obtenue en utilisant le laplacien d’une fonction de R 2 à valeurs dans R .

4

Références

Documents relatifs

tant qu'on entre une valeur positive, on redemande de saisir alors qu'on voudrait s'arréter. Retenez : TANT QUE + condition de poursuite de

(avec leur type détaillé : entier, réel, complexe, vecteur, matrice, fonction, ...).. Quelles sont les inconnues du problème de

(avec leur type détaillé : entier, réel, complexe, vecteur, matrice, fonction, ...).. Quelles sont les inconnues du problème de

1 Ecrire une fonction Algorithmique triangles permettant à partir des trois sommets A, B, C d’un tri- angle initial quelconque non réduit à une droite ou à un point, de représenter

2 Ecrire une fonction [q,me]=unitsquaremesh(Nx,Ny) retournant les tableaux de points et de connectivité associé au carré unité r0, 1s ˆ r0, 1s avec Nx points suivant x et Ny

Ecrire le programme prgSysSol3 (fichier prgSysSol3.m) qui résoud le pro- blème de Cauchy par resEUP et resRK4 puis représente, pour chaque mé- thode, les orbites des 3 planètes

Documents autorisés : OUI NON Polycopiés de l’UE,

Pour cet exercice, nous allons utiliser la proposition 1.19 du cours