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