Méthodes spectrales
From Wikipedia, the free encyclopedia
En analyse numérique les méthodes spectrales sont basées sur l'expression de la solution de diverses équations (équations aux dérivées partielles, équations différentielles, problèmes de valeurs propres, optimisation, etc.) sur une base de fonctions continues.
Elles diffèrent de la méthode des éléments finis par le fait que les fonctions de base sont généralement non nulles sur l'ensemble du domaine là où les éléments finis sont à support compact. Par conséquent les méthodes spectrales relient les inconnues globalement tandis que les éléments finis le font localement. C'est pour cette raison que les méthodes spectrales conduisent à une bonne précision pour des fonctions régulières mais donnent des résultats médiocres pour les solutions discontinues présentes en mécanique des fluides[1].
Les méthodes spectrales ont été développées dans une longue série d'articles par Steven Orszag à partir de 1969.
Entre méthodes spectrales et éléments finis la méthode des éléments spectraux a été développée. Elle utilise des polynômes par morceaux de degré élevé.
Ces méthodes comprennent notamment les méthodes de séries de Fourier pour les problèmes de géométrie périodique, les méthodes spectrales polynomiales pour les problèmes de géométrie finie ou non bornée, les méthodes pseudo-spectrales (en) pour les problèmes fortement non linéaires et les méthodes spectrales itératives pour la résolution rapide des problèmes stationnaires. La mise en œuvre de la méthode spectrale est généralement réalisée par la méthode de collocation (en), la méthode de Galerkine ou la méthode tau. Pour les problèmes de très petite taille, la méthode spectrale présente l'avantage de permettre l'expression formelle des solutions, offrant ainsi une alternative pratique aux solutions en séries pour les équations différentielles.
Ces méthodes sont utilisées pour les problèmes simples. Dans le cas de problèmes multidimensionnels ils conduisent à des grandes matrices pleines dont la résolution numérique est difficile et coûteuse.
Exemple linéaire : l'équation de Poisson
Si est une fonction complexe connue de deux variables réelles, et si g est périodique en x et y (c'est-à-dire ), alors on cherche une fonction telle que :
Si l'on écrit f et g sous forme de séries de Fourier :
et que l'on substitue ces expressions dans l'équation différentielle, on obtient l'équation suivante :
On a ainsi remplacé la dérivation partielle par une somme infinie, ce qui est justifié si l'on suppose, par exemple, que f possède une dérivée seconde continue. D'après le théorème d'unicité de Cantor il faut égaliser les coefficients de Fourier terme à terme :
On obtient donc explicitement les coefficients de Fourier aj,k.
Avec des conditions aux limites périodiques, l'équation de Poisson admet une solution uniquement si b0,0 = 0. On peut donc choisir librement a0,0, qui sera égal à la moyenne de la solution. Cela correspond au choix de la constante d'intégration.
Algorithme
Cet algorithme s'écrit :
- Calcul de la transformée de Fourier (bj,k) de g.
- Calcul de la transformée de Fourier (aj,k) de f.
- Calcul de f par transformée de Fourier inverse de (aj,k).
Comme nous nous intéressons uniquement à une fenêtre de fréquences finie (de taille n, par exemple), on peut utiliser un algorithme de transformée de Fourier rapide (FFT). Par conséquent, l'algorithme s'exécute globalement en .
Le nombre fini de fréquences utilisées introduit une erreur dont on peut montrer qu'elle est proportionnelle à , où et est la fréquence la plus élevée contenue dans le développement.
Exemple non linéaire : l'équation de Burgers
Étant donné une fonction définie sur le domaine périodique , trouver tel que
où ρ est la viscosité cinématique.
Sous forme conservative faible ce problème s'écrit :
où désigne le produit scalaire.
En intégrant par parties et en utilisant la périodicité il vient :
On applique la méthode Fourier–Galerkine en choisissant :
et
où .
Cela revient à trouver tel que :
En utilisant la propriété d'orthogonalité où est symbole de Kronecker, on simplifie les trois termes qui précèdent pour chaque :
En rassemblant les trois termes pour chaque valeur de k on obtient en divisant par :
Avec des conditions initiales transformées de Fourier et une contrainte ce système couplé d'équations différentielles ordinaires peut être intégré temporellement (par exemple, à l'aide d'une méthode de Runge-Kutta). Le terme non linéaire est un produit de convolution[2],[3].