IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Mathématiques Discussion :

Approximation polynomiale d'un ensemble de points


Sujet :

Mathématiques

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut Approximation polynomiale d'un ensemble de points
    Bonjour,

    je cherche un algorithme permettant, à partir d'un ensemble de points, de trouver une fonction polynomiale assez proche des ces points.

    les contraintes sont (je suis en milieu professionnel, j'ai pas trop le choix):

    -cet algorithme doit déterminer une fonction polynomiale d'un degré fixé (pour le moment compris entre 1 et 7).
    -il doit être rapide, il y a environ 75 points.
    -il faut pouvoir fixer une valeur d'origine (il faut en tout cas que ce soit la même valeur de départ (à t=0)).
    -à part pour la valeur initiale, le polynôme recherché n'a pas besoin de passer précisément par tout les points.
    il faut pouvoir calculer le coefficient de détermination (la marge d'erreur je crois?).

    C'est un phénomène physique qui est observé.

    Voila, si quelqu'un pouvait m'aider ça serait vraiment sympa. J'ai déjà pas mal cherché mais c'est pas évident, et puis je dois trouver une solution assez rapidement.

  2. #2
    Rédacteur
    Avatar de pseudocode
    Homme Profil pro
    Architecte système
    Inscrit en
    Décembre 2006
    Messages
    10 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Architecte système
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2006
    Messages : 10 062
    Par défaut
    Pour imposer la valeur a t=0, tu ecris le polynome recherché P(t) sous la forme:

    P(t) = a0 + t*Q(t)

    ou a0 est la valeur à t=0.

    Tu peux ensuite utiliser les moindres carrés pour determiner le meilleur polynome t*Q(t) passant par les points (x_i , y_i-a0)
    ALGORITHME (n.m.): Méthode complexe de résolution d'un problème simple.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    merci pour ta réponse je vais voir ça

  4. #4
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!

    Ce n'est pas très compliqué:

    Tu as 75 paires de valeurs t01 à t75 et f01 à f75. Chaque paire te donne une information, donc une équation. Si tu veux approximer ta fonction par un polynôme, disons de degré 3, soit f=A0+A1*t+A2*t^2+A3*t^3, tu as 3 inconnues A1, A2 et A3, car A0 est déjà connu, car égal à f(0). Tu as donc un système de 75 équations à 3 inconnues, donc largement surdéterminé. Pour trouver la "moins mauvaise solution", au sens des moindres carrés, la solution la plus simple consiste à utiliser la pseudoinverse de Moore-Penrose (fonction pinv dans MatLab. Il est équivalent, mais un peu plus compliqué, de passer par la décomposition en valeurs singulières (routine DSVDC dans LinPack). Pour plus de détails, va voir dans Numerical Recipes.

    Jean-Marc Blanc

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Par défaut
    Merci pour vos réponses, au moins je sais vers ou chercher maintenant.

    FR119492: je pense que c'est ce genre de choses qu'il me faut, cependant je ne trouve pas d'algo pour calculer la pseudo-inverse. J'essaye d'installer des librairies qui le font (un dérive de matlab, je code en C++), mais bon, c'est tellement plus marrant quand on arrive même pas a l'installer ... J'ai pourtant pas mal cherché (mais les sites de maths en anglais ne m'aident pas beaucoup ).


    Sinon, j'aurais peut être du préciser que le but est de lisser les courbes, et non d'avoir une courbe passant par tout les points.

  6. #6
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Par défaut
    Salut!
    J'ai pondu récemment un cours sur les diverses méthodes de résolution des systèmes linéaires. Il est déjà sur le site, à l'adresse ftp://ftp-developpez.com/jmblanc, mais pas encore officiellement annoncé. Quand tu auras tout lu et tout compris, tu trouveras les sous-programmes dont tu as besoin dans la bibliothèque LAPack++, qui est téléchargeable gratuitement de www.netlig.org
    Jean-Marc Blanc

  7. #7
    Invité de passage
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1
    Par défaut
    bonjour, je cherche à faire la même chose avec excel VBA, le problème c'est queje en trouve pas le code sur internet, je pense pourtant ne pas être le seul à chercher un code vba de regression polynomiale.
    Si quelqu'un a une piste c'est génial !
    Merci d'avance

  8. #8
    Membre très actif
    Profil pro
    chercheur
    Inscrit en
    Avril 2004
    Messages
    830
    Détails du profil
    Informations personnelles :
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : chercheur

    Informations forums :
    Inscription : Avril 2004
    Messages : 830
    Par défaut
    Je sors des limites de l'épure mais je tiens à te dire que si ta fonction n'a pas de raison précise d'être un polynôme, tes résultats n'auront aucune signification ( en particulier pour des interpolations ou des extrapolations )

Discussions similaires

  1. Approximation polynomiale d'un nuage de points
    Par kurul1 dans le forum Signal
    Réponses: 3
    Dernier message: 27/04/2012, 16h40
  2. Réponses: 5
    Dernier message: 16/02/2007, 15h53
  3. boule minimale contenant un ensemble de points
    Par tlemcenvisit dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 28/02/2006, 10h36
  4. Récupérer l'ensemble des points d'une droite
    Par Psycho_Kwak dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 18/01/2006, 11h42
  5. Réponses: 3
    Dernier message: 12/06/2002, 19h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo