La chaîne d'oscillateurs est constituée de N points de masse m reliés par des ressorts identiques, de raideur a. Le déplacement du point k=1..N par rapport à sa position d'équilibre est noté qk.
Pour un point autre que les bords (1<k<N), l'équation du mouvement est :
avec :
Les bords sont contitués d'un point fixe (points d'indice 0 et N+1), ce qui donne les deux équations différentielles :
Si on note q le vecteur colonne des N déplacements, le système différentiel (équations 1, 3 et 4) s'écrit :
où V est une matrice carrée (symétrique) définie par :
On définit les moments pk comme les dérivées par rapport au temps des déplacements qk. L'hamiltonien du système (énergie par unité de masse) s'écrit :
Les équations du mouvement s'écrivent :
Soit d la distance à l'équilibre entre deux points voisins. La longueur de la chaîne est L=Nd. L'approximation des milieux continus, valable pour N grand sur une échelle grande devant d, consiste à définir le déplacement des masses par une fonction continue u(x). L'équation (1) correspond à la discrétisation de l'équation différentielle suivante :
Il s'agit de l'équation des ondes (milieu non dispersif), avec une célérité :
Les conditions aux limites du problème étudié sont :
Les modes propres du problème continu sont les solutions de la forme :
La solution est :
Les conditions limites imposent :
où m est un entier strictement positif. La pulsation du mode propre d'indice m est :
La longueur d'onde du mode d'indice m est :
Les modes de basse fréquence, pour lesquels m est petit devant N, devraient se retrouver dans le problème discret.
Les modes propres sont les solutions de l'équation (5) de la forme :
où a est un vecteur colonne à N éléments. Dans un mode propre, tous les points de la chaîne oscillent à la même pulsation.
En reportant dans l'équation différentielle, on obtient :
avec :
Il s'agit donc de déterminer les valeurs propres et les vecteurs propres de la matrice V. Celle-ci est réelle et symétrique; ces valeurs propres sont donc réelles et ses vecteurs propres sont orthogonaux.
Par analogie avec le problème continu traité ci-dessus, on recherche les vecteurs propres sous la forme :
En reportant cette solution supposée dans (23), on obtient :
On pose alors :
La matrice V a donc N valeurs propres distinctes :
Le vecteur propre correspondant à la valeur propre d'indice m est :
La constante multiplicative a été ajoutée pour obtenir des vecteurs propres normés.
Les pulsations propres sont :
On retrouve les pulsations propres du modèle continu lorsque N est grand et m petit devant N. Pour les modes dont la longueur d'onde est proche de d (m proche de N), la pulsation propre est très différente de celle prévue par le modèle continu, bien que les vecteurs propres aient une forme similaire.
La matrice V a N valeurs propres distinctes; elle est donc diagonalisable. Soit A=(ak,m) la matrice carrée dont la colonne m correspond au vecteur propre d'indice m. Cette matrice est orthogonale donc :
Remarque : pour ce problème particulier la matrice A est symétrique, donc égale à son inverse.
Les coordonnées normales sont définies par la transformation :
Inversement, les coordonnées normales sont obtenues à partir des déplacements par :
En dérivant par rapport au temps, on obtient :
La matrice A diagonalise V, c'est-à-dire :
où Λ est la matrice diagonale formée des valeurs propres.
Exprimons les équations du mouvement avec les coordonnées normales :
On obtient avec ces coordonnées N équations différentielles indépendantes :
dont la solution générale est (mode propre d'indice m) :
Finalement, la solution générale exprimée avec les déplacements est :
Exprimons l'hamiltonien en fonction des coordonnées normales :
L'énergie du mode m est donc :
Chaque coordonnée normale ξm est un oscillateur harmonique dont l'énergie Em se conserve.
Au cours d'un calcul numérique, on peut être amené à calculer les coordonnées normales en fonction des déplacements (ou l'inverse). La transformation s'écrit :
Cette transformation est appelée transformée en sinus discret. Il s'agit d'un produit d'une matrice N par N par un vecteur colonne à N éléments, soit N2 opérations. Si l'on dispose d'une architecture matérielle parallèle (par exemple CUDA), ce produit peut être parallélisé. Dans le cas contraire, on doit utiliser l'algorithme FFT (Fast Fourier Transform), de complexité Nlog(N). La FFT est généralement programmée pour la transformée de Fourier discrète. Il faut donc établir le lien entre la transformée en sinus discret (TSD) et la transformée de Fourier discrète (TFD).
La TSD opère sur N+1 point (argument du sinus). Le point supplémentaire est obtenu en posant :
Pour se ramener à la TFD, il faut étendre les échantillons sur 2(N+1) points de manière à définir une fonction impaire. Ceci est obtenu de la manière suivante :
C'est-à-dire :
Considérons la TFD de ces 2(N+1) points :
La partie imaginaire de la TFD est donc (à une constante près) la transformée en sinus discret.
L'exemple suivant (Mathematica) montre comment générer les déplacements à partir des coordonnées normales.
La fonction suivante calcule les pulsations propres :
omega[n_,m_]:=4*Pi*Sin[m*Pi/(2*(n+1))];
La solution est définie par la liste des constantes Cm. La fonction suivante génère les coordonnées normales :
xi[c_,t_]:=Module[{m}, n=Length[c]; Return[Table[c[[m]]*Cos[omega[n,m]*t],{m,1,n}]]; ]
La transformée en sinus discret définie plus haut est calculée avec la fonction FourierDST (type 1). La fonction suivante calcule les déplacements :
p[c_,t_]:=FourierDST[xi[c,t],1];
Voyons par exemple une chaîne de 10 masses dans le mode fondamental :
c={1,0,0,0,0,0,0,0,0,0} n=Length[c]; w1=omega[n,1]; T1=2*Pi/w1;
ListPlot[{p[c,0],p[c,T1*0.25],p[c,T1*0.5],p[c,T1*0.75]},PlotRange->{{0,n+1},{-1,1}},AxesLabel->{"k","pk"}]plot1.pdf
La même chaîne avec plusieurs modes :
c={1,0.8,0.7,0.5,0,0.3,0,0.1,0,0}
ListPlot[Table[p[c,T1*t/100],{t,0,10}],PlotRange->{{0,n+1},{-1,1}},AxesLabel->{"k","pk"}]plot2.pdf