Période d'une fonction périodique.
dans Analyse
Bonjour à tous.
Je cherche une manière d'écrire un programme évaluant $T>0$ pour une fonction $f$ $T$-périodique ($T>0$ est donc la plus petite période $>0$ de $f$).
L'idéal serait d'obtenir $T$ comme : limite d'une intégrale ($\displaystyle\underset{{x}\rightarrow{+\infty}}\lim\frac 1x\int_0^xf(t)\text{d}t=\frac 1T\int_0^Tf(t)\text{d}t$ est très insuffisant pour déterminer $T$ ...), premier zéro/$extremum$ d'une fonction à inventer, ... J'ai vu aussi apparaître la notion de fonction d'auto-corrélation que je ne connais guère, et qui est très peu documentée d'un point de vue mathématique.
Avez-vous quelques idées (le sujet peut être déplacé en informatique, mais il me semble qu'il peut donner lieu à des résultats/caractérisations mathématiques intéressants ?) ? Merci !
Je cherche une manière d'écrire un programme évaluant $T>0$ pour une fonction $f$ $T$-périodique ($T>0$ est donc la plus petite période $>0$ de $f$).
L'idéal serait d'obtenir $T$ comme : limite d'une intégrale ($\displaystyle\underset{{x}\rightarrow{+\infty}}\lim\frac 1x\int_0^xf(t)\text{d}t=\frac 1T\int_0^Tf(t)\text{d}t$ est très insuffisant pour déterminer $T$ ...), premier zéro/$extremum$ d'une fonction à inventer, ... J'ai vu aussi apparaître la notion de fonction d'auto-corrélation que je ne connais guère, et qui est très peu documentée d'un point de vue mathématique.
Avez-vous quelques idées (le sujet peut être déplacé en informatique, mais il me semble qu'il peut donner lieu à des résultats/caractérisations mathématiques intéressants ?) ? Merci !
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
On peut approximer ça en discrétisant $f$ pour obtenir $x(n)$ et en calculant sa transformée de Fourier discrète $X(k)$.
L'autocorrélation c'est $R(m) = \sum_n x(n) \overline{x(n+m)}$ et sa transformée de Fourier discrète c'est $|X(k)|^2$.
Ce que tu cherches est fait très couramment en traitement du signal, aussi bien la transformation du signal par TFR (transformée de Fourier rapide) que la détection des pics. Il y a une abondante littérature sur le sujet. Il me semble qu'on utilise de plus en plus pour la deuxième étape des outils de reconnaissance de forme (traitement d'image, réseaux de neurones).
Si tu cherches des pistes sur Internet, la TFR est souvent notée FFT (Fast Fourier Transform), et j'ai souligné dans le texte les thèmes pour un moteur de recherche.
A noter : Tu peux aussi essayer d'inventer une "usine à gaz" logicielle qui marchera pour les premiers exemples auxquels tu as pensé, mais plus pour d'autres. Mais ce n'est pas pour rien qu'on a inventé ces méthodes "lourdes".
Cordialement.
L'auto-corrélation paraît une meilleure piste pour commencer simplement, si on ne veut pas attaquer des algos spécifiques.
Cordialement.
Cordialement.
(*) bien évidemment, sur plusieurs périodes de 12, donc un intervalle de plusieurs douzaines.
ce qui change par rapport à l'outil théorique, c'est et la discrétisation, et la finitude de l'intervalle d'étude (on ne traite pas $f$, mais $f\mathbb 1_{[a,b]}$.
Cordialement.
D'ailleurs, c'est ça qui brouille tout (dans ma tête, au moins) !! Il y a un pic à la fréquence de base 1/12, puis des pics secondaires aux fréquences multiples 1/6, 1/4, 1/3, 5/12, 1/2, 7/12, 2/3, 3/4, 5/6,11/12, 1, ...
Cordialement.
Est-ce que pour commencer t'es déjà d'accord que la transformée de Fourier (continu) du signal périodique de période $12$ que je propose n'a aucun pic en $f=1/12$ ? Là j'ai simplement appliqué les formules connus sur Fourier. J'ai pu me planter mais je ne vois pas ce pic dont tu parles. La transformée de Fourier du sinus fait apparaître deux pics à + et - la fréquence, j'ai une somme de deux sinus, et j'utilise la linéarité de la TF. Aucun pic à $1/12$ à l'horizon selon moi.
Pour la transformée de Fourier discrète, le théorème que j'énonce indique qu'effectivement la TFD n'aura pas non plus de pic à $1/12$. En bref, je pense que la transformée de Fourier n'est pas le bon outil pour calculer simplement la période d'un signal.
PS : dans mes messages précédents j'ai inversé fréquence et période, ça ne change rien au raisonnement.
PS 2 : je vais finir par faire un script python pour convaincre tout le monde puisque vous n'arrivez pas à me convaincre non plus :-D
Si ce que tu dis est vrai, inutile d'utiliser la TFR pour détecter des fréquences. C'est bizarre, plein de gens le font !
Cordialement.
Dans le monde réel $M$ ne divise pas $N$, donc on multiplie $x(n)$ par une fenêtre de Hanning et on regarder les valeurs de $M$ pour lesquelles $\sum\limits_{k \not \equiv 0\, \bmod\, N/M} |X(k)|^2 \le \epsilon \sum\limits_k |X(k)|^2 $.
Avec ton exemple en prenant $\epsilon = 1/100$, $N$ suffisamment grand et $F_s$ suffisamment petit on trouve $M \in \{(11,13),(23,25),(35,37),\ldots\}$ et il faut des algorithmes compliqués pour estimer la bonne valeur, mais en gros l'idée c'est que si $\epsilon$ ne décroit pas beaucoup entre $\approx 12$ et $\approx 24$ alors on choisit $M \approx 12$.
Avec un $\epsilon$ et $F_s$ plus petit et un $N$ plus grand on aurait trouvé de meilleures approximations des multiples de $12$.
Dans tous les cas $3,4$ sont exclus immédiatement.
Note que pour calculer $\sum\limits_{k\not \equiv 0\, \bmod\, N/M} |X(k)|^2$ on peut s'amuser à estimer $Y(f) = |X(e^f)|^2$
alors $\sum\limits_{k \equiv 0\, \bmod\, N/M} |X(k)|^2= Y \ast h(\log M)$ donc une convolution, où $h(f) = \sum_l \delta(f-l \log 2)$
Il existe les mêmes algorithmes en travaillant sur l'autocorrélation $R(m)= FFT^{-1}[|X(k)|^2]$ et les problèmes se posent en gros dans les mêmes termes.