Précédent   Forum des professionnels en informatique > Autres langages > Algorithmes > Mathématiques
Mathématiques Forum d'entraide sur les mathématiques et l'algorithmique numérique. Avant de poster : Cours d'algorithmique numérique
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/01/2012, 13h06   #1
Invité régulier
 
Inscription : juin 2008
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 66
Points : 7
Points : 7
Par défaut Extrapolation sur un échantillon sinusoidal

Bonjour à tous,

Je dispose d'un certain nombre d'échantillons issus d'un gyroscope, me donnant une courbe f(t) = position angulaire.
Ces données sont très peu bruitées (on pourra considérer qu'elles ne le sont pas pour simplifier les calculs) et dessinent des courbes de type sinusoide assez propres.

Je cherche à extrapoler (en post-traitement) des données intermédiaires avec par exemple :
- à partir de 3 données A(TA, VA), B(TB, VB), C(TC, VC), en sachant que l'écart de temps entre chaque valeur n'est pas constant,
- trouver la valeur Vintermediaire pour TB < Tintermediaire < TC.

Comme il s'agit de post-traitement, au lieu de 3 données de départ, je peux tenir compte d'autant de valeurs postérieures à ma valeur de Tintermediaire que de valeurs antérieures si nécessaire.

Je suppose donc qu'il doit exister une méthode me permettant de trouver cette valeur intermédiaire avec une précision correcte à partir des dérivées première et seconde ?

Si c'est le cas, merci d'avance pour votre aide
neoirto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/01/2012, 21h45   #2
Membre éclairé
 
Doctorant en informatique
Inscription : juin 2009
Messages : 244
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Doctorant en informatique

Informations forums :
Inscription : juin 2009
Messages : 244
Points : 347
Points : 347
Si la sinusoide est propre pourquoi ne pas directement fitter la sinusoide sur toutes tes données ? une fois que tu en as les parametre tu utilises directement la fonction analytique.
Alexis.M est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 00h10   #3
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 740
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 740
Points : 9 963
Points : 9 963


Absolument..

Et si ce n'est pas une sinusoide mais une courbe de style cubique, tu peux utiliser un cubic cpline
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 12h34   #4
Invité régulier
 
Inscription : juin 2008
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 66
Points : 7
Points : 7
Merci de vos réponses !
Cela m'a permis de trouver la librairie ALGLIB.
Pouvez-vous me dire si le fait que mes echantillons soient pris à des intervalles de x variables risque de me causer des soucis ?
Quelqu'un a t il deja utilisé cette librairie, et qu'en pensez-vous ?

Merci encore
neoirto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 12h58   #5
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 740
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 740
Points : 9 963
Points : 9 963
absolument pas..

C'est le principe du cubic cpline : en général le calcul des coefficients (cubique par morceaux) est fait une fois, puis on peut interpoler justement sur des pas réguliers..

Le seul point, qui est valable pour pratiquement toutes les interpolations sauf les interpolations linéaires, est que si 2 points sont très rapprochés encadrés par 2 points plus éloignés, mais également éloignés en ordonnées, cela peut amener à des "oscillations"..

Mais vu ce que tu dis de ton cas ce ne sera pas le cas pouisque la curbe est assez régulière.

Maintenant, si tu sais que c'est réellement une sinusoide, un moindre-carrés serait plus facile..

y = b + c sin(x)
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 13h28   #6
Invité régulier
 
Inscription : juin 2008
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 66
Points : 7
Points : 7
Je vois le probleme de l'oscillation des cubiques spline. ALGLIB propose les Akima spline pour éviter ce problème, je pourrai essayer les 2 pour le coup.
Sinon en fouillant un peu, je me demande si il est judicieux d'imposer le passage par les points de départ. Est ce qu'un fitting ne serait pas plus adapté ? Je m'explique :

Mes valeurs de Y ne sont pas bruitées, mais seront limitées en résolution, donc on introduit un biais en forçant à passer par la valeur exacte de Y. Alors existe-t-il un type d'interpolation qui me permet de prendre en considération ce paramètre : par exemple, si ma résolution est de 1 et le bruit de 0, lorsque j'alimente avec par exemple une valeur de N(X=2, Y=3), je souhaite qu'à X=2, ma courbe interpolée ait une valeur de : 3 < Yinterpol < 4 ?

Merci de ton aide souviron34 !
neoirto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 15h20   #7
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 740
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 740
Points : 9 963
Points : 9 963
je te signale que c'est ce qu'on te dit depuis le début ...

Je crois que tu confonds interpolation et fitting.

Le fitting peut se faire par la méthode des moindres carrées (par exemple) facilement..

Une fois les paramètes de ta sinusoide ainsi obtenus, tu pourras facilement interpoler à la valeur que tu veux..


Note :

Bien entendu, les splines passent par les points : c'est leur défintion et leur utilité..

Des interpolations ne passant pas par les points peuvent être par exemple Béziers..
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 15h51   #8
Invité régulier
 
Inscription : juin 2008
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 66
Points : 7
Points : 7
Citation:
je te signale que c'est ce qu'on te dit depuis le début ...
Oui oui, j'avai bien noté ! Ma réponse ne suggérait pas que j'avai réinventé la roue, c'est juste que vos réponses me font graduellement changer d'avis (et apparemment, c'est souhaitable... Parce que j'allais dans le mur).

Donc le fitting qu'il me faut ne passe pas par les points c'est ça ? Et donc cette méthode est certainement préférable ?

Existe-t-il un mot clé que je devrai connaitre pour lui assigner un intervalle de "décallage aux points de réference" en rapport à ma résolution de mesure ?

Merci encore et désolé pour le malentendu
neoirto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 16h45   #9
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 740
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 740
Points : 9 963
Points : 9 963
De rien..


Je ne comprend pas trop ton histoire de mot-clé..

Tu as une formule représentative :

y = a sin (x -x0) + b

tu passes tous tes points de mesure avec cette formule,, et grâce aux moindres carrés tu en tires a et b et x0.


Je ne connais pas cette biblothèque,mais tu a sla description générale d'un moindre-carrés ici ou ou
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/01/2012, 17h17   #10
Invité régulier
 
Inscription : juin 2008
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 66
Points : 7
Points : 7
Ok, je viens de potasser un peu les liens que tu m'as transmis.
Déjà finalement, je pense qu'il serait plus juste de fitter sur une parabole plutot, mais j'imagine que ça ne change pas grand chose sur le principe du least square ?

Ensuite, concernant mon probleme de résolution :
- en considérant que je n'ai pas de bruit sur la mesure,
- et sachant que la résolution de mon capteur est de 1.00, lorsque je mesure le point N( X=2 Y=3 ), je sais donc que la courbe fittée doit passer entre 3 et 4 pour X=2.

Donc j'aimerai savoir si il existe un moyen de forcer l'algo de least squares à passer par cet intervalle, et donc à ajouter une contrainte à l'algo ?

Si ce n'est pas le cas, je peux peut être forcer un peu l'algo en rajoutant des points ? Par exemple, pour X=2, au lieu d'alimenter l'algo avec uniquement N(2 3), je pourrai peut être rajouter manuellement un point N'(2 4), ce qui aurait naturellement tendance à éviter que la courbe ne s'éloigne de cet intervalle, non ?

Et donc, encore merci !
neoirto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 01h24   #11
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 740
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 740
Points : 9 963
Points : 9 963
Citation:
Envoyé par neoirto Voir le message
- et sachant que la résolution de mon capteur est de 1.00, lorsque je mesure le point N( X=2 Y=3 ), je sais donc que la courbe fittée doit passer entre 3 et 4 pour X=2.

Donc j'aimerai savoir si il existe un moyen de forcer l'algo de least squares à passer par cet intervalle, et donc à ajouter une contrainte à l'algo ?

Si ce n'est pas le cas, je peux peut être forcer un peu l'algo en rajoutant des points ? Par exemple, pour X=2, au lieu d'alimenter l'algo avec uniquement N(2 3), je pourrai peut être rajouter manuellement un point N'(2 4), ce qui aurait naturellement tendance à éviter que la courbe ne s'éloigne de cet intervalle, non ?


tu n'as qu'un point de mesure ????

On ne fait pas d'interpolation, quelle qu'elle soit, avec 1 point..

Si tu en as N, si N n'est pas trop faible, ton interpolation marchera..

Si par exemple tu as un point X=2, X=5, X=7, x=10, .. et que tu calcules les moindres carrés de ta sinusoide, le point X=2 devrait être à la bonne valeur puisque tu dis que c'est quasiment pas bruité.. (si c'est bien une sinusoide que tu as)
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 08h45   #12
Membre éclairé
 
Doctorant en informatique
Inscription : juin 2009
Messages : 244
Détails du profil
Informations personnelles :
Localisation : France

Informations professionnelles :
Activité : Doctorant en informatique

Informations forums :
Inscription : juin 2009
Messages : 244
Points : 347
Points : 347
Peut-être que si tu nous donnais un échantillon de tes données nous pourrions plus facilement nous rendre compte des éventuelles problèmes...
Alexis.M est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 11h35   #13
Invité régulier
 
Inscription : juin 2008
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 66
Points : 7
Points : 7
Citation:
tu n'as qu'un point de mesure ????
Hummmm, well... Et bah non, j'ai une série de données !
J'essai de vous sortir un échantillon, parce que pour l'instant c'est un format prorietaire de l'electronique que j'utilise via rs232 et j'ai juste une sortie graphique. Mais de toute façon je devais le coder bientot, alors je m'y mets.

Sinon ce ne sont pas des sinusoides, ça y ressemble. Ce serait donc plus proche de paraboles finalement. Pour vous faire une idée, ça ressemble à des montagnes russes avec des pentes très différentes d'une "montagne" à l'autre, parfois ca monte, parfois ça descends, mais avec des phases de decceleration et d'acceleration progressives.

Sans quoi, l'histoire de la contrainte d'intervalle, ça n'existe pas ? Cool c'est de la recherche alors !
neoirto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 11h55   #14
Expert Confirmé Sénior
 
Inscription : janvier 2007
Messages : 8 740
Détails du profil
Informations personnelles :
Âge : 54

Informations forums :
Inscription : janvier 2007
Messages : 8 740
Points : 9 963
Points : 9 963
Citation:
Envoyé par neoirto Voir le message
ce ne sont pas des sinusoides, ça y ressemble. Ce serait donc plus proche de paraboles finalement. Pour vous faire une idée, ça ressemble à des montagnes russes avec des pentes très différentes d'une "montagne" à l'autre, parfois ca monte, parfois ça descends, mais avec des phases de decceleration et d'acceleration progressives.


Bon... Relis tes posts depuis le début: tu nous dis que c'est une sinusoide parfaite..

Dans ton cas, alors, ce n'est pas un moindre-carrés qu'il te faut mais une approximation polynomiale ou de Bziers (si tu ne veux pas passer par les points), ou un spline si tu veux passer par tes points.

  • Un problème bien posé est à moitié résolu..
  • Ce qui se conçoit bien s'énonce clairement..
  • Et les aides viennent donc naturellement..
__________________
"Un homme sage ne croit que la moitié de ce qu’il lit. Plus sage encore, il sait laquelle".

Consultant indépendant.
Architecture systèmes complexes. Programmation grosses applications critiques. Ergonomie.
C, Fortran, XWindow/Motif, Java

Je ne réponds pas aux MP techniques
souviron34 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/01/2012, 13h00   #15
Invité régulier
 
Inscription : juin 2008
Messages : 66
Détails du profil
Informations forums :
Inscription : juin 2008
Messages : 66
Points : 7
Points : 7
Ok, autant pour moi, et va pour Béziers, alors. Je vous ai effectivement un peu induit en erreur.

[Joke]Et Béziers, est-ce que ça marche avec un seul point ?[/Joke]

Merci de votre aide
neoirto est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2012, 14h16   #16
Membre émérite
 
Homme
Chercheur
Inscription : mars 2010
Messages : 733
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Chercheur

Informations forums :
Inscription : mars 2010
Messages : 733
Points : 931
Points : 931
Bonjour,

une solution très simple à mettre en oeuvre et qui fonctionne très bien : les séries de Fourier. L'algorithme s'écrit :
1. calculer les coefficients de la transformée de Fourier discrète à partir de ton échantillon,
2. extrapoler aux points que tu souhaites en utilisant la transformation de Fourier discrète inverse.

Idéalement, il est préférable que ton échantillon corresponde à des points de mesure équidistants mais si ce n'est pas le cas tu peux également utiliser des transformées de Fourier non uniformes.
Aleph69 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h36.


 
 
 
 
Partenaires

Hébergement Web