PC* 2014–2015 – Informatique pour tous TP – R´
esolution num´
erique d’EDP
pour le domaine int´erieur, et pour les bords (hors coins) :
∀j∈J1, ny−2K;i= 0 V[i+2,j]−2V[i+1,j] + V[i,j+1] + V[i,j−1]−V[i,j] = 0 (gauche)
∀j∈J1, ny−2K;i=nx−1V[i−2,j]−2V[i−1,j] + V[i,j+1] + V[i,j−1]−V[i,j] = 0 (droite)
∀i∈J1, nx−2K;j= 0 V[i,j+2]−2V[i,j+1] + V[i+1,j] + V[i−1,j]−V[i,j] = 0 (bas)
∀i∈J1, nx−2K;V[i,j−2]−2V[i,j−1] + V[i+1,j] + V[i−1,j]−V[i,j] = 0 (haut)
et enfin, les quatres ´equations aux coins :
i=j= 0 V[2,0]−2V[1,0] + V[0,2]−2V[0,1]+2V[0,0] = 0 (bas −gauche)
i=nx−1; j= 0 V[i−2,0]−2V[i−1,0] + V[i,2]−2V[i,1]+2V[i,0] = 0 (bas −droite)
i=nx−1; j=ny−1V[i−2,j]−2V[i−1,j] + V[i,j−2]−2V[i,j−1]+2V[i,j] = 0 (haut −droite)
i= 0; j=ny−1V[2,j]−2V[1,j] + V[i,j−2]−2V[i,j−1]+2V[0,j] = 0 (haut −gauche)
1.2 Gestion des conditions aux limites
Une ´equation aux d´eriv´ees partielles est souvent coupl´ees `a des conditions aux limites, c’est `a dire que l’on impose `a la
fonction inconnue de v´erifier certaines conditions sur un sous–ensemble du domaine D. Cela peut ˆetre par exemple, V= 0
sur le bord x= 0 et V= 10 sur le bord x=Lx. Dans ce cas, la valeur de V[i,j] sera impos´ee pour certains couples
(i,j). Par exemple, dans le cas pr´ec´edent, V[0,j]=0 et V[nx-1,j]=10, mais on peut imposer d’autres conditions aux
limites.
Nous d´eciderons d’impl´ementer les conditions aux limites sous la forme d’un tableau C`a trois entr´ees de taille nx×ny×2
d´efini comme suit :
∀i∈J0, nx−1K;∀j∈J0, ny−1K;C[i,j,0] = (0 s’il n’y a pas de condition au limite en (i,j)
1 sinon, la condition ´etant alors V[i,j]=C[i,j,1]
Q2.Impl´ementation des conditions aux limites.
´
Ecrire des fonctions condition1() et condition2(a=0.5) construisant les tableaux correspondant aux conditions
au limites suivantes :
(0,0) x
y
V=0 V=10
Condition 1
x
y
V=0 V=10
a×Lx
a×Lx
Lx/3
Lx/3
Condition 2
1.3 R´esolution num´erique : premi`ere m´ethode
Une fois l’´equation discr´etis´ee, le probl`eme revient `a r´esoudre un syst`eme d´equations lin´eaires dont les inconnues sont
les coefficients V[i,j] avec i∈J0, nx−1K,j∈J0, ny−1K. Ces ´equations sont donn´ees par V[i,j]=C[i,j,1] si on
a une condition initiale en (i,j) et sinon, par les ´equations pr´ec´edentes suivant les cas o`u on est `a l’int´erieur du do-
maine ( i∈J1, nx−2K;j∈J1, ny−2K) ou sur les bords (i= 0, i=nx−1, j= 0, j=ny−1). Il y a ainsi nx×nyinconnues.
Il existe plusieurs m´ethodes pour r´esoudre un tel syst`eme d’´equation. Pour les syst`eme pas trop gros (moins de 10000
inconnues pour un ordinateur raisonnable) on peut tenter une r´esolution exacte du syst`eme par une d´ecomposition QR
ou LU. La module numpy de python contient un sous–module linalg contenant la fonction solve permettant de r´e-
soudre efficacement un tel syst`eme : si Acontient une matrice N×Net Bun vecteur de taille N, alors la commande
linalg.solve(A, B) renvoie la solution du syst`eme lin´eaire AX =B.
Pour utiliser la fonction linalg.solve il faut donc construire la matrice Adu syst`eme lin´eaire et le second membre B.
La matrice Asera une matrice de taille N×Navec N=nx×nyqui sera construite `a partir des ´equations pr´ec´edentes
et Bun vecteur de taille Nqui sera donn´e par les conditions initiales.
Lyc´
ee Louis Thuillier 25 f´evrier 2015