Les Newsletters Interstices
Onde sinusoïdale Image de parameter_bond, sur Flickr.
    Niveau intermédiaire
    Niveau 2 : Intermédiaire

    La décomposition en séries de Fourier

    Traitement d’images & Son
    Algorithmes Modélisation & Simulation
    L’idée révolutionnaire de Joseph Fourier est que les fonctions trigonométriques sinus et cosinus permettent de décomposer n’importe quelle fonction. Découvrez-la à l'aide d'exemples imagés.

    Joseph Fourier
    Par Jules Boilly — « Portraits et Histoire des Hommes Utiles, Collection de Cinquante Portraits, » Société Montyon et Franklin, 1839-1840. Domaine public.

    Au début du XIXe siècle, Joseph Fourier étudie la propagation de la chaleur et est le premier à décrire son évolution mathématiquement par l’équation de la chaleur. Dans le cas d’une tige, cette équation admet des solutions particulières s’exprimant à l’aide des fonctions trigonométriques sinus et cosinus. L’idée révolutionnaire de Joseph Fourier est que ces fonctions particulières permettent de décomposer n’importe quelle fonction et de décrire ainsi l’évolution de la chaleur dans n’importe quelle situation : c’est la décomposition en série de Fourier, que l’on retrouve pour la résolution de l’équation de la chaleur mais aussi dans les fichiers MP3, dans l’analyse de signaux, dans l’imagerie médicale… Le but de cet article est de découvrir à l’aide d’exemples imagés cette décomposition introduite par Joseph Fourier.

    La famille des fonctions sinus

    La décomposition de Fourier que nous allons voir s’appuie sur une famille de fonctions sinus. Les sinus font partie des fonctions trigonométriques et ont donc une longue histoire. Ils apparaissent dans les problèmes géométriques utilisant des angles et ont surtout été développés pour l’astronomie, une science très importante dans l’Antiquité. Pour aboutir à leur forme actuelle, ils sont partis de la Grèce antique, allés jusqu’en Inde pour revenir par la Perse et l’Arabie et enfin en Europe à la Renaissance. L’utilisation de ces sinus par Joseph Fourier n’est pas liée à un problème géométrique mais plutôt à leurs propriétés mathématiques, comme nous l’expliquerons plus loin. La famille des sinus qui nous intéresse ici est plus précisément définie comme suit : pour chaque entier n, on regarde la fonction qui à x entre 0 et 1 associe sin(nπx). Pour nous familiariser avec ces fonctions, traçons le graphe de quelques-unes d’entre elles.

    Le premier sinus qui nous intéresse est sin(πx). Son graphe sur l’intervalle [0,1] est tracé ci-dessous. La fonction part de 0, forme une large bosse montant jusqu’à la valeur 1 pour revenir ensuite à 0.
    Le deuxième sinus de cet article est sin(2πx). Son graphe sur l’intervalle [0,1] est tracé ci-dessous. La fonction part de 0, forme une bosse au-dessus de l’axe y=0 puis une autre sous l’axe pour revenir ensuite à 0.
    Le troisième sinus forme lui un graphe avec trois bosses comme ci-dessous.
    Sans surprise, le quatrième sinus a un graphe composé de quatre bosses entre 0 et 1.

      On peut bien sûr continuer ainsi : sin(5πx) forme cinq bosses, sin(10πx) forme dix bosses… Pour diversifier les formes obtenues avec ces fonctions, on peut les combiner en sommes pondérées par des coefficients.

    Ci-dessous, le graphe de la fonction sin(πx)+sin(4πx). On voit les quatre bosses du sin(4πx) mais aussi l’influence de sin(πx) qui remonte la partie centrale du graphe.
    Notre deuxième exemple de combinaison de sinus est 0.4sin(πx)+0.4sin(4πx)-0.3sin(4πx). Avec trois sinus et des coefficients, le graphe est plus complexe. On obtient ainsi une forme qui s’éloigne des graphes des fonctions sin(nπx) seules.

    Pour mieux comprendre comment la forme du graphe se crée grâce à la combinaison des fonctions sinus, voici en animation deux exemples de combinaisons de trois fonctions sinus. Le premier correspond à l’exemple précédent, le deuxième à -0.2sin(2πx)-0.5sin(3πx)-0.4sin(8πx).

    On peut ainsi créer différentes formes en combinant ces différents sinus. Mais jusqu’où peut-on aller ? C’est là que se trouve l’idée révolutionnaire de Joseph Fourier.

    La décomposition de Fourier

    Nous venons de voir que les fonctions sin(nπx) engendrent différentes formes si on regarde leurs combinaisons. Avant les travaux de Joseph Fourier, on savait comment utiliser ces combinaisons pour obtenir certaines solutions d’équations. Mais l’idée révolutionnaire de Joseph Fourier est qu’on peut obtenir ainsi toutes les solutions car toutes les fonctions dans l’intervalle [0,1] peuvent être obtenues en combinant des sin(nπx). Daniel Bernoulli avait déjà utilisé ce principe, mais il semble que Joseph Fourier soit le premier à le formaliser mathématiquement.

    Théorème : toute fonction f sur l’intervalle [0,1] se décompose comme une combinaison infinie des fonctions sin(nπx) \[f(x)= a_1 \sin(\pi x) + a_2 \sin(2 \pi x) +a_3 \sin(3 \pi x) + a_4 \sin(4 \pi x) + a_5 \sin(5 \pi x) + \ldots\] De plus, les coefficients an sont donnés par la formule \[a_n = 2 \int f(x) \sin(n \pi x) dx\]

    Pour rendre ce théorème mathématiquement rigoureux, il faudrait préciser ce qu’on entend par cette somme infinie (les «…» ne voulant rien dire en science) et ce que veut dire l’égalité à f (qui est plus subtile que l’on pourrait penser). Joseph Fourier avait bien compris ces problèmes et les avait résolus avec la rigueur en cours à l’époque. Nous n’allons pas entrer dans les détails mathématiques de ce théorème et de ces formules. Pour cet article, ce qu’il nous faut retenir en pratique est que :

    1. Toute fonction f peut être approchée par des combinaisons finies de fonctions sin(nπx) avec une erreur aussi petite que voulue.
    2. Les coefficients an de cette combinaison sont donnés par une formule explicite et peuvent être calculés facilement.

    Illustrons ce principe par un premier exemple. La famille des sinus ne contient que des fonctions formant des bosses lisses, de douces collines. Peut-on obtenir un graphe plus pointu en les combinant ? «Oui» nous dit le théorème ci-dessus, «il suffit de bien ajuster les coefficients de la combinaison».

    Prenons un autre exemple. On regarde la fonction f dont le graphe est ci-contre. Il s’agit d’une sorte de creux qui n’occupe que la première moitié du segment. Il ne s’agit pas d’un mode sinusoïdal et en fait, il ne s’agit pas non plus d’une combinaison d’un nombre fini de sin(nπx). Pourtant, on va pouvoir approcher très précisément cette forme par des combinaisons de sin(nπx) comme l’annonce le théorème de Fourier ci-dessus. Les bons coefficients seront difficiles à trouver à la main, mais on dispose de la formule plus haut : il suffit de faire le calcul (ou de le faire faire par un ordinateur).

    Dans les exemples ci-dessus, on approche petit à petit la forme voulue à l’aide de six sinus. Plus on va en ajouter, plus la forme sera approchée avec précision. Rappelons que ces approximations comprenant de plus en plus de sinus sont obtenues par des formules. Ce qu’on appelle décomposition de Fourier est donc calculable automatiquement par un ordinateur et de façon très rapide.

    Avec dix sinus, cela devient difficile de faire la différence avec l’original, sauf au niveau du raccord entre le creux et la partie plate.
    -0.424sin(πx)-0.5sin(2πx)-0.254sin(3πx)+0.06sin(5πx)-0.028sin(7πx)+0.016sin(9πx)-0.011sin(11πx)+0.007sin(13πx)-0.005sin(15πx)
    Avec 25 sinus, on obtient une très bonne représentation de la fonction initiale. Le dessin du graphe initial contient 1000 points donc 1000 informations. Or on peut obtenir le dessin ci-dessous avec seulement 25 coefficients donc 25 informations. La qualité est très bonne avec 97,5% d’espace gagné. C’est l’idée derrière les formats compressés JPEG ou MP3.

    La décomposition de Fourier permet donc de décomposer une fonction en somme de sinus. Cela ouvre la voie à des applications pratiques comme la compression d’images, en dosant le nombre de sinus utilisés, mais aussi de nombreuses autres qui seront abordées dans cette série d’articles. Le théorème de Fourier nous dit que toute fonction peut être ainsi décomposée en sinus. Est-ce que cela fonctionne vraiment pour toutes les fonctions ? Oui, pour toutes les fonctions f, du moins celles qui représentent des données physiques pour lesquelles l’énergie \( \int f^2 \) est définie. Cela fonctionne même pour des fonctions qui ne sont pas continues, c’est-à-dire qui admettent des sauts. Ceci était tellement surprenant pour l’époque que certains mathématiciens ont pris cette propriété comme un argument indiquant que le résultat devait être faux : comment une fonction avec un saut pourrait-elle être approchée par des fonctions qui sont continues ? Mais Joseph Fourier avait bien raison et a fini par imposer son point de vue. Ce type de propriété paradoxale a poussé les mathématiciens à reprendre de façon plus rigoureuse les bases de l’analyse mathématique.

    Avec six sinus, il est difficile d’obtenir un saut abrupt.
    Avec 30 sinus, on obtient déjà une forme de créneau.
    Avec 100 sinus, on obtient bien un créneau avec un saut très abrupt. Il reste encore de petites oscillations aux endroits où le graphe varie brusquement. Il s’agit du phénomène de Gibbs que l’on peut aussi voir sur les images JPEG.

    Pour finir, nous allons nous amuser avec la décomposition de deux fonctions, l’une rouge et l’autre bleue. Nous allons faire apparaître petit à petit plus de sinus de leur décomposition.

    Avec un seul sinus on n’a pas vraiment d’informations.
    0,19sin(πx) -0.19sin(πx)
    Avec deux sinus, on a une sorte de cacahuète.
    0,19sin(πx) + 0.086sin(3πx) -0.19sin(πx) – 0.065sin(3πx)
    Avec cinq sinus… un vaisseau spatial ?
    0,19sin(πx) + 0.086sin(3πx) + 0.044sin(5πx) – 0.035sin(7πx) + 0.038sin(9πx) -0.19sin(πx) – 0.065sin(3πx) – 0.05sin(5πx) – 0.0028sin(7πx) + 0.002sin(9πx)
    Avec dix sinus, on devine un papillon ?
    0,19sin(πx) + 0.086sin(3πx) + 0.044sin(5πx) – 0.035sin(7πx) + 0.038sin(9πx) + 0.005sin(11πx) – 0.004sin(13πx) + 0.007sin(15πx) + 0.004sin(17πx) + 0.008sin(19πx) -0.19sin(πx) – 0.065sin(3πx) – 0.05sin(5πx) – 0.0028sin(7πx) + 0.002sin(9πx) – 0.001sin(11πx) – 0.024sin(13πx) + 0.005sin(15πx) – 0.003sin(17πx) – 0.001sin(19πx)
    Avec 20 sinus, cela se précise
    0,19sin(πx) + 0.086sin(3πx) + 0.044sin(5πx) – 0.035sin(7πx) + 0.038sin(9πx) + 0.005sin(11πx) – 0.004sin(13πx) + 0.007sin(15πx) + 0.004sin(17πx) + 0.008sin(19πx) + … -0.19sin(πx) – 0.065sin(3πx) – 0.05sin(5πx) – 0.0028sin(7πx) + 0.002sin(9πx) – 0.001sin(11πx) – 0.024sin(13πx) + 0.005sin(15πx) – 0.003sin(17πx) – 0.001sin(19πx) + …
    Avec 80 sinus, c’est presque parfait, sauf de petites oscillations, surtout proches des endroits où le graphe varie brusquement : c’est de nouveau une manifestation du phénomène de Gibbs.
    0,19sin(πx) + 0.086sin(3πx) + 0.044sin(5πx) – 0.035sin(7πx) + 0.038sin(9πx) + 0.005sin(11πx) – 0.004sin(13πx) + 0.007sin(15πx) + 0.004sin(17πx) + 0.008sin(19πx) + … -0.19sin(πx) – 0.065sin(3πx) – 0.05sin(5πx) – 0.0028sin(7πx) + 0.002sin(9πx) – 0.001sin(11πx) – 0.024sin(13πx) + 0.005sin(15πx) – 0.003sin(17πx) – 0.001sin(19πx) + …
    Avec 150 sinus, l’image apparaît parfaitement.
    0,19sin(πx) + 0.086sin(3πx) + 0.044sin(5πx) – 0.035sin(7πx) + 0.038sin(9πx) + 0.005sin(11πx) – 0.004sin(13πx) + 0.007sin(15πx) + 0.004sin(17πx) + 0.008sin(19πx) + … -0.19sin(πx) – 0.065sin(3πx) – 0.05sin(5πx) – 0.0028sin(7πx) + 0.002sin(9πx) – 0.001sin(11πx) – 0.024sin(13πx) + 0.005sin(15πx) – 0.003sin(17πx) – 0.001sin(19πx) + …

    N’est-ce pas surprenant ? Encore une fois, c’est la puissance de la décomposition de Fourier : on peut partir de n’importe quelle fonction et tous les calculs sont donnés par des formules explicites qu’il n’y a qu’à appliquer. Le point difficile ici était d’avoir une formule pour les courbes du dessin. Ces formules semblent avoir été introduites par un professeur américain en 2011 et une de leurs premières traces se trouve sur le forum reddit. Elles sont maintenant connues sous de nom de Batcurves. On pourra consulter cette page sur Stackexchange pour des explications sur les formules. On pourra aussi trouver cette vidéo qui dramatise un peu l’application de la décomposition de Fourier à la Batcurve. Notez que dans cette vidéo, la décomposition se fait selon des cosinus à la place des sinus, mais le principe est exactement le même.

    Application aux cordes vibrantes

    La transformation de Fourier a été introduite dans le cadre de l’équation de la chaleur. Comme nous n’avons pas l’habitude de « voir » la chaleur, le tracé des solutions de son équation ne nous serait pas très familier. Dans cet article, nous allons donc plutôt regarder les solutions de l’équation des cordes vibrantes. Il s’agit de décrire les oscillations d’une corde fixée à ses deux bouts : corde de guitare, de piano, corde à sauter… Quel rapport avec la propagation de la chaleur ? C’est la magie des mathématiques ! Les deux problèmes sont physiquement très différents, mais la décomposition de Fourier est un outil mathématique suffisamment puissant pour intervenir dans les deux cas. Jean le Rond d’Alembert et Leonhard Euler avaient introduit et étudié l’équation des cordes vibrantes. Ils savaient qu’elle possède des solutions particulières décrites par notre famille des sinus.

    L’animation ci-contre présente une corde vibrant selon la fonction sin(πx). Plus précisément, c’est la fonction cos(πt)sin(πx), qui dépend à la fois du temps t et de l’espace x, qui est solution de l’équation des cordes vibrantes. Cette solution est très particulière dans le sens où la forme de la corde est toujours celle du premier sinus, elle ne fait qu’osciller au cours du temps : l’amplitude du mouvement, en chaque point x, varie dans le temps selon la fonction cos(πt). On appelle cette vibration particulière le premier mode de vibration. Dans le cadre musical, c’est ce mode qui sera responsable de la note produite par la corde. On parle à ce moment-là de mode fondamental.

    Si les sinus sont des fonctions importantes pour cette équation des cordes vibrantes, c’est que, comme l’équation de la chaleur, elle fait intervenir des dérivées secondes. Si on dérive deux fois de suite une fonction sinus, on retombe sur la même fonction, à un facteur près. C’est pour cela que le profil de la solution ci-contre reste en permanence celui d’une fonction sinus.

    Le premier mode des cordes vibrantes

    Si on regarde les autres sinus, on obtient encore des solutions particulières de l’équation des cordes vibrantes. Ces solutions ne sont que les sinus vus plus hauts que l’on fait vibrer de plus en plus rapidement. On peut facilement voir ces modes de vibration en faisant osciller une corde que l’on tient par une main. Musicalement, ces modes de vibrations de la corde de guitare (ou piano, ou violon…) sont responsables des harmoniques du son et de ce qu’on appelle le timbre de la note.

    Le deuxième mode d’oscillation correspond à la solution cos(2πt)sin(2πx). Sa fréquence d’oscillation est deux fois plus rapide que celle du premier mode, aussi bien en temps qu’en espace. Pour une corde d’instrument de musique, ce mode produit un son une octave au-dessus de l’oscillation du mode fondamental vu plus haut. On parle de la première harmonique.
    Le troisième mode d’oscillation correspond à la solution cos(3πt)sin(3πx). Sa fréquence d’oscillation est trois fois plus rapide que celle du premier mode. Musicalement, il est responsable de la deuxième harmonique.
    Le quatrième mode d’oscillation correspond à la solution cos(4πt)sin(4πx) qui oscille quatre fois plus rapidement que le mode fondamental. Et ainsi de suite…
    Les sinus sont donc responsables de solutions particulières pour l’équation des cordes vibrantes. On retrouve ces modes de vibration sinusoïdaux assez facilement dans les expériences physiques comme dans la vidéo ci-contre. Source : vidéo Youtube du Scientibus par F. Louradour, Faculté des Sciences de Limoges.

    Pouvons-nous obtenir d’autres solutions que ces modes sinusoïdaux ? Quand on agite une corde, on n’obtient pas forcément de tels modes et c’est donc qu’il existe d’autres solutions (comme on peut le voir dans la vidéo ci-dessus). En fait, l’équation des cordes vibrantes a la propriété mathématique de la linéarité : toute somme de solutions est encore solution de l’équation. Si on part des deux solutions cos(πt)sin(πx) et cos(4πt)sin(4πx), on peut obtenir une nouvelle solution cos(πt)sin(πx)+cos(4πt)sin(4πx)

    Nous avons déjà vu la fonction sin(πx)+sin(4πx) qui est la somme de deux de nos fonctions sinus. Si on lâche une corde avec cette forme, elle oscillera comme ci-contre.
    La solution cos(πt)sin(πx)+cos(4πt)sin(4πx) de l’équation des cordes vibrantes est la somme des vibrations des premier et quatrième modes. On voit qu’il ne s’agit pas d’un mode propre comme les oscillations des sinus car le profil de la corde se déforme au cours du temps au lieu de simplement osciller. La corde revient quand même régulièrement dans sa position initiale, une fois que le premier mode a fait un aller-retour et donc que le quatrième a eu le temps d’en faire quatre.
    Nous avons déjà vu la fonction 0,4sin(πx)+0,4sin(2πx)-0,3sin(6πx) qui est la somme de trois de nos fonctions sinus déjà vues avec des coefficients. Si on lâche une corde avec cette forme, elle oscillera comme ci-contre.
    La solution 0,4cos(πt)sin(πx)+0,4cos(2πt)sin(2πx)-0,3cos(6πt)sin(6πx) de l’équation des cordes vibrantes est la somme des vibrations de trois des modes sinusoïdaux avec les coefficients associés. Il ne s’agit pas d’un mode propre puisque le profil de la corde se déforme au cours du temps.

    Nous venons de voir que les fonctions sin(nπx) engendrent des solutions importantes pour l’équation des cordes vibrantes. Comme dit dans l’introduction, il en est de même pour l’équation de la chaleur. Dans les deux cas, on peut aussi obtenir de nouvelles solutions en faisant des combinaisons des solutions données par les sinus. Cette façon d’obtenir des solutions était déjà connue à l’époque de Fourier, par exemple déjà utilisée par Daniel Bernoulli. La révolution apportée par Joseph Fourier est que sa décomposition montre que toutes les solutions de l’équation des cordes vibrantes s’écrivent comme combinaisons des solutions données par les modes en sinus. Si on reprend la forme en creux vue plus haut, on peut obtenir l’évolution d’une corde lâchée selon cette forme.

    On commence par décomposer la forme en creux comme une combinaison de fonctions sinus. Nous avons déjà vu cela plus haut. Pour rappel, les coefficients sont donnés par une formule explicite et sont donc calculables facilement.
    -0,42sin(πx) – 0.5sin(2πx) – 0,26sin(3πx) + 0.06sin(5πx) – 0.03sin(7πx) +…
    On peut aussi utiliser la description de notre courbe initiale en fonction de sinus pour regarder comment se comporte une corde mise initialement suivant notre forme ci-contre. Il suffit de remplacer les sinus dans la décomposition par les modes de vibrations. C’est cette idée qui a poussé Fourier à étudier la décomposition qui porte son nom. Il s’agit d’une méthode efficace toujours utilisée aujourd’hui dans les simulations numériques en recherche et en industrie.
    -0,42cos(πt)sin(πx) – 0.5cos(2πt)sin(2πx) – 0,26cos(3πt)sin(3πx) + 0.06cos(5πt)sin(5πx) – 0.03cos(7πt)sin(7πx) +…

    Peut-être que la simulation de la vibration de la corde ci-dessus vous semble irréelle. Il est en effet difficile de voir une corde vibrer ainsi car le modèle utilisé ne tient pas compte des amortissements et de la dissipation d’énergie. Si on veut obtenir une simulation plus fine, on peut diminuer petit à petit l’amplitude des oscillations. En outre, dans la réalité, la dissipation est plus forte pour les hautes fréquences, c’est-à-dire les modes sin(nπx) avec n grand. On obtient alors une simulation comme ci-contre qui est plus réaliste. Plus on attend, plus les deux premiers modes sin(2πx) et finalement sin(πx) sont visibles. Encore une fois, cette animation est principalement basée sur la décomposition en différents modes introduite par Joseph Fourier.

    Une histoire qui continue

    Si les fonctions cosinus et sinus sont connues depuis l’Antiquité, ce n’est qu’au XVIIIe siècle qu’on commence à comprendre leur importance en dehors des problèmes géométriques. Vers 1810, Joseph Fourier est le premier à énoncer que toute fonction peut se décomposer comme une somme infinie de ces fonctions trigonométriques cosinus et sinus. Il montre aussi que les calculs pour obtenir cette décomposition sont simples et explicites. Il faudra plusieurs années pour que les mathématiciens s’approprient ce résultat en en comprenant toute sa profondeur et en le rendant plus rigoureux. À partir de la décennie 1980, l’avènement du numérique ouvre un vaste champ d’applications pour la décomposition introduite par Joseph Fourier et pour ses descendantes les ondelettes : traitement du signal, fichier MP3, images JPEG, simulations numériques pour l’ingénierie…   L’auteur remercie Christian Jutten ainsi que le comité éditorial d’Interstices pour lui avoir proposé le projet d’article et pour leur relecture attentive. Les images et gif animés ont été produits par l’auteur grâce à un programme Python et au logiciel Gimp.

    Newsletter

    Le responsable de ce traitement est Inria. En saisissant votre adresse mail, vous consentez à recevoir chaque mois une sélection d'articles et à ce que vos données soient collectées et stockées comme décrit dans notre politique de confidentialité

    Niveau de lecture

    Aidez-nous à évaluer le niveau de lecture de ce document.

    Si vous souhaitez expliquer votre choix, vous pouvez ajouter un commentaire (Il ne sera pas publié).

    Votre choix a été pris en compte. Merci d'avoir estimé le niveau de ce document !

    Romain Joly

    Maître de conférences à l'Institut Fourier de Grenoble.
    Voir le profil

    Découvrez le(s) dossier(s) associé(s) à cet article :

    DossierCulture & Société
    Environnement & PlanèteHistoire du numériqueMédecine & Sciences du vivantTraitement d’images & Son

    Fourier, à l’avant-garde de la révolution numérique