Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

[Matlab] Approximation polynômiale



  1. #1
    ellymimi

    [Matlab] Approximation polynômiale


    ------

    Bonjour à tous,

    Dans le cadre de mon stage, je dois faire une approximation polynômiale d'un signal, sur Matlab.
    J'ai essayé dans un premier temps de faire une approximation des moindres carrés pour le permier ordre et deuxième ordre, en utilisant polyfit.
    Mais j'ai obtenu un résultat pas très satisfaisant car on ne peut pas dire si c'est linéaire ou de l'ordre 2 (voir la figure de la pièce jointe).
    J'ai fait une recherche sur internet et j'ai vu qu'il y a aussi la méthode d'approximation avec la série de Taylor (il y a cette fonction sur Matlab, mais je n'ai pas réussi à le faire)
    Connaissez-vous d'autres méthodes d'approximation polynômiale? Cela me serait d'une grande aide...

    Merci d'avance

    -----
    Images attachées Images attachées  

  2. Publicité
  3. 📣 Nouveau projet éditorial de Futura
    🔥🧠 Le Mag Futura est lancé, découvrez notre 1er magazine papier

    Une belle revue de plus de 200 pages et 4 dossiers scientifiques pour tout comprendre à la science qui fera le futur. Nous avons besoin de vous 🙏 pour nous aider à le lancer...

    👉 Je découvre le projet

    Quatre questions à explorer en 2022 :
    → Quels mystères nous cache encore la Lune 🌙 ?
    → Pourra-t-on bientôt tout guérir grâce aux gènes 👩‍⚕️?
    → Comment nourrir le monde sans le détruire 🌍 ?
    → L’intelligence artificielle peut-elle devenir vraiment intelligente 🤖 ?
  4. #2
    Arzhur

    Re : [Matlab] Approximation polynômiale

    Bonjour,


    Il y a les polynomes de Lagrange. Dans la pratique je ne sais pas si c'est mieux ou moins bien que la méthode des moindres carrés.

    Au fait, pourquoi te limites-tu à un polynome d'ordre 2 ?

  5. #3
    ellymimi

    Re : [Matlab] Approximation polynômiale

    Merci pour ta réponse.
    Oui, j'ai oui qu'il existe des polynômes de Lagrange mais apparemment c'est la même chose que polyfit, c'est à dire les moindres carrés...
    Je me limite pas spécialement à l'ordre 2. J'ai aussi essayé pour l'ordre 3 mais la courbe me semble pas très bien non plus...

  6. #4
    Arzhur

    Re : [Matlab] Approximation polynômiale

    Je me limite pas spécialement à l'ordre 2. J'ai aussi essayé pour l'ordre 3 mais la courbe me semble pas très bien non plus...
    Je pensais plus à des polynômes d'ordre 10-20...Je ne sais pas si un polynôme est la meilleure approximation : on dirait que t'as "2 droites".

  7. A voir en vidéo sur Futura
  8. #5
    Paraboloide_Hyperbolique

    Re : [Matlab] Approximation polynômiale

    Bonsoir,

    Effectuer une approximation polynomiale sur la totalité de ce type de données est en général une mauvaise idée, car:

    1. Des polynômes de degrés faibles (0, 1, 2 et 3) ne permettent pas d'effectuer de bonnes approximations.
    2. Les polynômes de degrés plus élevés (> 3) peuvent être victimes d'oscillations sauvages (phénomène de Runge). https://fr.wikipedia.org/wiki/Ph%C3%...%A8ne_de_Runge

    Une chose qui pourrait convenir serait une interpolation polynomiale par morceaux. La fonction "spline" de Matlab permet de faire cela.

  9. #6
    ellymimi

    Re : [Matlab] Approximation polynômiale

    Merci braucoup à tous pour tous ces bons conseils. Je pense que je vais essayer la méthode de Lagrange et celle de spline aussi.
    Sauriez-vous comment on utilise la méthode de Lagrange sur Matlab?

  10. Publicité
  11. #7
    Paraboloide_Hyperbolique

    Re : [Matlab] Approximation polynômiale

    Bonjour,

    Je déconseille l'utilisation de l'approximation de Lagrange pour vos données, pour les raisons citées au message #5. Une approximation spline est plus indiquée. Si vous avez la bonne toolbox (que je n'ai malheureusement pas), allez voir sur: http://www.mathworks.nl/help/curvefit/spap2.html

  12. #8
    deyni

    Re : [Matlab] Approximation polynômiale

    Bonjour,

    je ne suis pas du tout un spécialiste, donc ce que je dis peut-être faux, mais il me semble que la spline est un interpolation, or ellymimi veut une approximation.
    interpolation = polynome qui passe par tout les points
    approximation = polynome qui passe au plus de chaque points en minimisant l'erreur selon un critère (moindre carré....)

    Pourquoi pas les polynomes de Tchebychev?
    Ce que tu fais m'interesse beaucoup, tiens-moi au courant ellymimi s'il te plait.
    Deynid'oiseaux partout !! :rire:

  13. #9
    Paraboloide_Hyperbolique

    Re : [Matlab] Approximation polynômiale

    Bonjour,

    En effet, les splines ont été conçus initialement pour l'interpolation (tout comme les polynômes de Lagrange). Il n'est cependant pas interdit d'effectuer de l'approximation avec; que ce soit Lagrange ou spline. Le lien que je renseigne parle bien d'approximation spline (au sens des moindres carrés).

  14. #10
    lou_ibmix_xi

    Re : [Matlab] Approximation polynômiale

    je ne suis pas du tout un spécialiste, donc ce que je dis peut-être faux, mais il me semble que la spline est un interpolation, or ellymimi veut une approximation.
    interpolation = polynome qui passe par tout les points
    approximation = polynome qui passe au plus de chaque points en minimisant l'erreur selon un critère (moindre carré....)
    Je ne suis pas spécialiste non plus mais à mon avis interpolation et approximation recouvre à peu prêt la même chose:

    - une interpolation c'est essayer de déterminer des points manquant entre des points que l'on connait
    - une extrapolation c'est essayer de déterminer des points manquant au-delà des points que l'on connait

    Quand on interpole, on utilise un fonction (par exemple de type polynomiale) dont le résultat, en général, approxime les mesures que l'on connait déjà. Le choix d'une fonction d'interpolation par rapport à une autre se faisant sur un critère de "distance minimale" entre les points connus et les points interpolés (souvent moindres-carrés).

    Dans le cas particulier d'une interpolation polynomiale, il est quasi certain de retomber sur une approximation pour les points connus car le polynome qui passe par n points est en général de degrès n (il y a peut-être un +1 ou -1).

    Dernière remarque, une recette de cuisine pour évaluer l'ordre minimal du polynome interpolateur est de compter les points d'inflexions: une inflexion "symétrique" +2, une infléxion "assymétrique" +3.

  15. #11
    ellymimi

    Re : [Matlab] Approximation polynômiale

    Salut à tous,

    D'abord excusez-moi de mon manque de réactivité...je me documentais sur les liens que vous m'aviez passés et essayais aussi de comprendre...
    Paraboloide_Hyperbolique : j'ai regardé la fiche sur la commande snap2 mais au niveau des données, je n'ai pas compris comment faire .spap2(knots,k,x,y) returnsthe B-form of the spline f of order k withthe given knot sequence knots for which y(:,j) = f(x(j)), all j Je ne sais pas qu'est-ce qu'il faut donner à knots...

    deyni : Je veux bien essayer le polynôme de Tchebychev, mais pareil je sais pas comment procéder...Vu que la formule principale est Tn+2= 2*x*Tn+1 - Tn, je dois peut-etre faire comme si c'était une récurrence...J'aurais peut-etre ecrit T0=1 et T(1,1)=X dans un premier temps, pour initialiser la boucle...

    lou_ibmix_xi : merci pour ces précisions En effet, je pense que les points qui passent par ces n points sont de degré n-1

  16. #12
    Paraboloide_Hyperbolique

    Re : [Matlab] Approximation polynômiale

    Bonsoir.

    Citation Envoyé par lou_ibmix_xi Voir le message
    Je ne suis pas spécialiste non plus mais à mon avis interpolation et approximation recouvre à peu prêt la même chose
    C'est proche mais pas identique. La différence principale réside dans le fait qu'une interpolation passe obligatoirement par tous les points de données, alors qu'une approximation ne fait que s'en approcher (elle peut y passer, mais ce n'est pas obligatoire).

  17. Publicité
  18. #13
    Paraboloide_Hyperbolique

    Re : [Matlab] Approximation polynômiale

    Citation Envoyé par ellymimi Voir le message
    Paraboloide_Hyperbolique : j'ai regardé la fiche sur la commande snap2 mais au niveau des données, je n'ai pas compris comment faire .spap2(knots,k,x,y) returnsthe B-form of the spline f of order k withthe given knot sequence knots for which y(:,j) = f(x(j)), all j Je ne sais pas qu'est-ce qu'il faut donner à knots...
    Le noeuds ("knots" en anglais) sont des scalaires dans un espace paramétrique sur R (la spline est vue comme une courbe paramétrique). Dans votre cas une liste de noeuds équidistants et strictement croissants allant de 0 à 1 devrait convenir. Le nombre de noeuds est donné par la formule: nombre de points de données = nombre de noeuds - degré de l'approximation voulue.

    Sinon, la documentation dans le lien que j'ai fournis propose également d'autres méthode plus "raffinées" pour déterminer un ensemble "satisfaisant" de noeuds.

  19. #14
    deyni

    Re : [Matlab] Approximation polynômiale

    Bonjour,

    à mon avis (et je me trompe souvent ),je déconseille l'interpolation, car il risque de prendre en compte du bruit, l'approximation lui non.
    Au fait tchebychev est un mauvais avis, car l'intervalle doit être compris entre -1 et 1. Peut-être les polynômes de Hilert ou Legendre
    Deynid'oiseaux partout !! :rire:

Discussions similaires

  1. Approximation polynômiale de la température
    Par borish dans le forum Physique
    Réponses: 4
    Dernier message: 27/02/2011, 23h21
  2. Regression polynomiale et Matlab
    Par Don Quichotte dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 19/01/2011, 15h46
  3. approximation matlab
    Par Spidercochon dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 17/10/2010, 20h47
  4. PB approximation d'une courbe par equation polynomiale SCILAB
    Par chessmaster63 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 14/06/2010, 21h55
  5. meilleure approximation polynomiale
    Par ornicar dans le forum Mathématiques du supérieur
    Réponses: 9
    Dernier message: 11/07/2009, 00h25