TP – Résolution numérique d`EDP 1 Résolution numérique de l

PC* 2014–2015 – Informatique pour tous TP – R´
esolution num´
erique d’EDP
TP – R´
esolution num´
erique d’EDP
1 R´esolution num´erique de l’´equation de Laplace
Dans tout ce qui suit, nx et ny seront des variables globales que l’on fixera `a 70.
1.1 Discr´etisation
On cherche `a r´esoudre l’´equation de Laplace V= 0 sur un domaine D.
Dans le TP nous nous contenterons d’un domaine Drectangulaire de taille Lxsur Ly. Pour approximer les solution
de l’´equation, nous discr´etisons le domaine D, la solution sera approxim´ee sur un nombre fini de points. On maille ainsi
le domaine en grille de pas dx =dh =hde mani`ere `a obtenir nx =Lx/h + 1 lignes verticales et ny =Ly/h + 1 lignes
horizontales.
Les points de la grille seront r´ep´er´es par la ligne et la colonne sur lesquels ils se trouvent :
(0,0) x
y
(nx1,0)
(0, ny1)
j
h
i
(i, j)
Ly
Lx
D
Quadrillage du domaine D
Les valeurs de Vaux croisements du quadrillage seront stock´ees dans une matrice Vde taille nx×nyde la mani`ere
suivante :
06i6nx1; jny1; V[i,j] =V(ih, jh)
Q1.Diff´erences finies.
(a) ´
Etant donn´ee une fonction f:RRde classe C3donner une approximation `a l’ordre 3 en hde f(a+h) et
f(ah) et en d´eduire une approximation de f00 (a) `a l’aide de f(a+h), f(ah) et f(a).
(b) En d´eduire, pour iJ1, nx2K, une approximation de 2V
x2(ih, jh) `a l’aide de V.
Faites de mˆeme pour 2V
y2(ih, jh) en pr´ecisant les indices pour lesquels cette approximation est valide.
Justifier ainsi l’approximation
iJ1, nx2K;jJ1, ny2K; ∆V(ih, jh)V[i+1,j] + V[i1,j] + V[i,j+1] + V[i,j1]4V[i,j]
h2
(c) Sur les bords du domaine, l’approximation n’est plus valide car les points V[i+1,j],V[i-1,j], . . .ne sont pas
tous d´efinis.
Donner une approximation `a l’ordre 2 en hde f(a+ 2h) et en d´eduire une approximation de f00 (a) `a l’aide de
f(a+ 2h), f(a+h) et f(a)..
En d´eduire alors une approximation de 2V
x2(ih, jh) en fonction de V[i+2,j],V[i+1],j et V[i,j].
De la mˆeme fa¸con, donner une approximation de 2V
x2(ih, jh) en fonction de V[i-2,j],V[i-1],j et V[i,j].
Ainsi, avec les approximations d´ecrites plus haut, l’´equation ∆V= 0 se transforme en le syst`eme d’´equation dont les
inconnues sont les V[i,j] avec iJ0, nx1Ket jJ0, ny1K, les ´equations ´etant donn´ees par :
iJ1, nx2K;jJ1, ny2K;V[i+1,j] + V[i1,j] + V[i,j+1] + V[i,j1]4V[i,j] = 0 (int´erieur)
Lyc´
ee Louis Thuillier 15 f´evrier 2015
PC* 2014–2015 – Informatique pour tous TP – R´
esolution num´
erique d’EDP
pour le domaine int´erieur, et pour les bords (hors coins) :
jJ1, ny2K;i= 0 V[i+2,j]2V[i+1,j] + V[i,j+1] + V[i,j1]V[i,j] = 0 (gauche)
jJ1, ny2K;i=nx1V[i2,j]2V[i1,j] + V[i,j+1] + V[i,j1]V[i,j] = 0 (droite)
iJ1, nx2K;j= 0 V[i,j+2]2V[i,j+1] + V[i+1,j] + V[i1,j]V[i,j] = 0 (bas)
iJ1, nx2K;V[i,j2]2V[i,j1] + V[i+1,j] + V[i1,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=nx1; j= 0 V[i2,0]2V[i1,0] + V[i,2]2V[i,1]+2V[i,0] = 0 (bas droite)
i=nx1; j=ny1V[i2,j]2V[i1,j] + V[i,j2]2V[i,j1]+2V[i,j] = 0 (haut droite)
i= 0; j=ny1V[2,j]2V[1,j] + V[i,j2]2V[i,j1]+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 :
iJ0, nx1K;jJ0, ny1K;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 iJ0, nx1K,jJ0, ny1K. Ces ´equations sont donees 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 ( iJ1, nx2K;jJ1, ny2K) ou sur les bords (i= 0, i=nx1, j= 0, j=ny1). 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
PC* 2014–2015 – Informatique pour tous TP – R´
esolution num´
erique d’EDP
Pour construire B, il faut aplatir la matrice V, c’est `a dire ranger ses coefficients dans un longs vecteur de taille nx×ny.
Pour cela on range les coefficients colonne par colonne dans un vecteur X. Ainsi, le coefficient V[i,j] de la matrice V
correspondra au coefficient X[i+nx*j] de X:
V[i,j]X[i+nxj]
Q3.Aplatissement de la matrice
(a) ´
Ecrire une fonction num(i,j) renvoyant le num´ero du coefficient (i,j) dans le vecteur X.
´
Ecrire la fonction coeff(n) renvoyant le couple (i,j) tel que V[i,j] correspond `a X[n].
(b) En d´eduire une fonction vecteurVersMatrice(X) qui ´etant donn´e un vecteur Xde taille nx×nyrenvoie la
matrice Vqui lui est associ´ee.
Q4.Construction de la matrice Aet du vecteur B.
La matrice Bdu syst`eme lin´eaire est construite comme suit : si on a une condition initiale en (i,j) alors
A[num(i,j),num(i,j)]=1 et B[num(i,j)]=C[i,j,1], sinon, les coefficients de la num(i,j)–i`eme ligne corres-
pondent `a une des ´equations (int´erieur), (gauche), ..., (haut-gauche). Par exemple pour un point int´e-
rieur, on aura :
avec u=num(i,j),A[u,num(i+1,j)]=1,A[u,num(i-1,j)]=1,A[u,num(i,j+1)]=1, etc. . .
´
Ecrire une fonction consrtuireAB(C) qui ´etant donn´ee une matrice de condition initiale C, renvoie la matrice Aet
le second membre Bassoci´e.
Q5.R´esolution et affichage de la solution.
R´esoudre le probl`eme avec les diff´erentes conditions initiales d´efinies pr´ec´edemment.
Pour visualiser les solutions, on pourra dans un premier temps utiliser la fonction matshow du package plot de
matplotlib. On importera ainsi ce module `a l’aide de la commande import matplotlib.pyplot as plt. On peut
alors visualiser une matrice `a l’aide de la commande plt.matshow(V) (ou plt.imshow(V)). Pour obtenir l’echelle
de couleur utilis´ee, on peut entrer la commande plt.colorbar().
Q6.Champ ´electrique.
Il s’agit ici de d´eterminer le champ ´electrique en tout point du quadrillage. On rappelle la relation E=gradV=
V
x ,V
y .
Pour calculer Eon doit ainsi ˆetre capable d’estimer les d´eriv´ees partielles par rapport `a xet y.
(a) Expliquer les approximations :
V
x (ih, jh)
V[i+1,j]V[i1,j]
2hsi iJ1, nx2K
1
h(V[i+1,j]V[i,j]) si i= 0
1
h(V[i,j]V[i1,j]) si i=nx1
et donner la pr´ecision de celles–ci.
(b) ´
Ecrire une fonction E(V) qui ´etant donn´e Venvoie un couple de matrice Ex et Ey donnant respectivement la
premi`ere et la seconde coordonn´ee du champ Een tout point du quadrillage.
(c) ´
Ecrire une fonction normeE(Ex,Ey) renvoyant une matrice donnant en chaque point du qudrillage la norme du
vecteur E.
Tracer la matrice obtenue et observer la pouvoir des pointes.
1.4 R´esolution num´erique : m´ethode par relaxation
La m´ethode pr´ec´edente n´ecessite de r´esoudre un syst`eme lin´eaire avec un tr`es grand nombre d’inconnues ce qui n’est
pas toujours possible en partique, par exemple sur des grilles poss´edant des millions de points. On peut alors tenter de
cherche une m´ethode de r´esolution approch´ee du syst`eme lin´eaire (lui mˆeme ´etant issu d’une approximation du syst`eme
r´eel).
On remarque que les ´equations que l’on doit r´esoudre s’´ecrivent sous la forme :
V[i,j] =
C[i,j,1] si (i,j) est une condition au limite,
1
4(V[i+1,j] + V[i1,j] + V[i,j+1] + V[i,j1]) (int´erieur)
V[i+2,j]+2V[i+1,j]V[i,j+1]V[i,j1] (gauche)
. . .
(1)
Ainsi, on peut voir une solution du syst`eme lin´eaire comme un point fixe V=F(V) o`u Fesigne l’application qui `a une
matrice Vassocie le second membre de (1). Une id´ee pour tenter de r´esoudre le syst`eme est de d´efinir la suite de matrice
Lyc´
ee Louis Thuillier 35 f´evrier 2015
PC* 2014–2015 – Informatique pour tous TP – R´
esolution num´
erique d’EDP
(Vn)nde la mani`ere suivante : V0= 0 et pour tout n,Vn+1 =F(Vn). Si la suite (Vn)nconverge vers une limite L, alors
Lv´erifie L=F(L), c’est `a dire que Lest solution du syst`eme lin´eaire.
Reste le probl`eme de la convergence la suite. Celle–ci d´epend beaucoup des conditions initiales, il se trouve que pour
ˆetre assur´e de la convergence de la m´ethode, il faut donner des conditions initiales sur les bords du domaine. Ainsi, seul
les points int´erieurs au domaine seront it´er´es suivant (hors les conditions aux limites ´eventuelles) :
Vn+1[i,j] = 1
4(Vn[i+1,j] + Vn[i1,j] + Vn[i,j+1] + Vn[i,j1])
Ainsi, nous ´etudierons une configuration similaire au second probl`eme mais «vu de loin »:
x
y
V=-5
V=+5
V=0
Ly/4
Ly/8
Ly/8
Ly/4
Lx/4Lx/4
a2Lx
4
a2Lx
4
Conditions aux limites 3
Pour approximer la solution du syst`eme lin´eaire, nous allons donc calculer la suite de matrice (Vn)njusqu’`a ce que
kVn+1 Vnk6seuil o`u seuil est un param`etre fix´e. La solution approch´ee du syst`eme sera alors la derni`ere matrice
calcul´ee.
Q7.´
Ecrire une fonction F(V,C) qui ´etant donn´e une matrice Vet des conditions au limites Crenvoie un couple
(V’,erreur) avec V’=F(V) et erreur=kV0Vk.
On supposera que les conditions aux limites contiennent les bords du domaine, de sorte que seul la formule pour
les points int´erieurs sera utilis´ee.
On pourra commencer par ne renvoyer que V0puis modifier sa fonction pour calculer en mˆeme temps l’erreur.
Q8. En d´eduire une fonction relaxation(C,seuil,nbMaxIteration=1000) qui, ´etant donn´e une condition initiale C
et un seuil seuil, renvoie la solution approch´ee avec le seuil seuil.
On limitera le nombre d’it´eration `a 1000.
Q9. Appliquer votre m´ethode avec la condition initiale 3 et comparer avec la m´ethode pr´ec´edente.
Lyc´
ee Louis Thuillier 45 f´evrier 2015
1 / 4 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !