4.6 Exercices 139 Exercice 4.13 Équation de Poisson

publicité
4.6
139
Exercices
Exercice 4.13
Équation de Poisson polaire. Le but de cet exercice est de rendre
la méthode des différences finies très efficace grâce à la transformée de Fourier rapide. L’idée est de résoudre une équation aux dérivées partielle dans le domaine des
sinusoïdes de Fourier. Grâce à la FFT, on dispose d’un moyen très rapide de passer
du domaine spacial au domaine de Fourier,
© et vice et versa.
ª
On souhaite calculer, pour x ∈ D = y ∈ R2 \ kyk 6 1 , le déplacement vertical
u(x), d’une membrane élastique circulaire soumis à une force surfacique f (x). Ce
déplacement vérifie l’équation de Poisson
½
∀ x ∈ D,
∆u(x) = f (x),
(4.6.5)
∀ x ∈ ∂D,
u(x) = g(x).
a) Montrer qu’en coordonnées polaires, le problème (1) s’écrit


∂ 2 u 1 ∂u
∂2u
+r
+ r12 2 = f (r, θ),
∀ (r, θ) ∈]0, 1[×[0, 2π[,
2
∂r
∂r
∂θ
 ∀ θ ∈ [0, 2π[,
u(1, θ) = g(θ).
(2)
b) Sous l’hypothèse que la solution u est suffisamment régulière, on peut la développer
en séries de Fourier de θ. On cherche donc, pour Nθ > 0 une solution approchée
sous la forme
NθP
/2−1
u(r, θ) =
n=−Nθ /2
u
bn (r)einθ
avec
u
bn (r) =
1
2π
R 2π
0
u(r, θ)e−inθ dθ.
On développe de même θ 7→ f (r, θ) et g en polynôme trigonométrique. Montrer
alors que u vérifie (2) si et seulement si
∀ n ∈ {−Nθ /2, . . . , Nθ /2 − 1}, ∀ r ∈]0, 1[,
d2 u
bn
dr 2
+
un
1 db
r dr
−
n2
bn
r2 u
= fbn .
c) Soit Nθ > 0 et Nr > 0 les nombres de points de discrétisation selon θ et selon r.
On choisit les points de discrétisation
∀ j = 1, . . . , Nθ ,
θj =
2(j−1)π
,
Nθ
et ∀ i = 1, . . . , Nr ,
ri = (i − 1/2)∆r ,
avec ∆r = 2/(2Nr − 1). On définit les matrices et vecteurs Scilab suivant, pour
n = 1, . . . , Nθ
U(i,j) = u(ri , θj ),
UU(i,n) = u
bne (ri ),
f(i,j) = f (ri , θj ),
ff(i,n) = u
bne (ri ),
g(i,j) = g(θj ),
gg(n) = gbne ,
où n
e = n − 1 si 1 6 n 6 N/2 et n
e = n − 1 − N si N/2 < n 6 N. Expliquer pourquoi
on peut calculer, de façon approchée, gg, ff et U de la façon suivante
gg(n) =
1
Nθ
UU(i,n) =
Nθ
P
− 2iπ
N (j−1)(n−1)
g(j)e
j=1
Nθ
P
θ
2iπ
U(i,j)e Nθ
,
(j−1)(n−1)
ff(n) =
1
Nθ
Nθ
P
− 2iπ
N (j−1)(n−1)
f(j)e
θ
,
j=1
.
j=1
On admet que ces calculs se réalisent de façon très rapide (en temps O(Nθ log(Nθ )))
grâce aux instructions Scilab suivantes
gg = fft(g,-1) ; ff = fft(f,-1) ; U(i, :) = fft(U(i, :),1) ;
140
Chapitre 4
Application de la TFD
4.6
d) Montrer que l’on peut calculer de façon approchée les vecteurs v = UU( :,n) en
résolvant, pour n = 1, . . . , Nθ l’équation aux différences finies
vi+1 −2vi +vi−1
(∆r )2
+
1 vi+1 −vi−1
ri
2∆r
+
n
e2
v
ri2 i
= ff(i,n).
(3)
Ecrire le système matriciel correspondant.
Programmer en Scilab les différentes étapes
Calcul de f et g pour des fonctions dont on connaît explicitement u.
Calcul de ff et gg avec la commande fft.
Calcul des UU( :,n) en résolvant (3).
Calcul de U avec la commande fft.
Affichage du résultat et comparaison avec la solution exacte.
On pourra commencer par tester la résolution pour la fonction f étudiée à la
question 6. On doit obtenir une erreur ku − Uk2 nulle (à la precision de Scilab
près). Comment expliquer ce phénomène ? Tester ensuite sur des fonctions u plus
complexes (comme par exemple la fonction u(r, θ) = exp(r3 cos(θ))), et évaluer la
variation de l’erreur en fonction de Nr et Nθ . Pouvait-on le prévoir ?
La figure 4.19 montre la solution de l’équation de poisson pour la fonction u
proposée à la question d.
Z
1
0
−1
−1
−1
0
0
Y
X
1
Fig. 4.19
polaires
1
Resolution de l’équation de Poisson en coordonnées
Téléchargement