Partage
  • Partager sur Facebook
  • Partager sur Twitter

Réalisation d'une courbe de tendance polynomiale d'ordre 3

Sujet résolu
    8 décembre 2010 à 9:49:56

    Bonjour,
    je suis actuellement en licence pro informatique CDED. Dans le cadre d'un de mes projets, je dois réaliser une courbe de tendance polynomiale d'ordre 3.
    Je possède un nuage de points... A partir de ces points, il est possible sous Excel de réaliser cette courbe facilement et sans problème.
    Le but de mon projet est de ne pas utiliser Excel. Je dois créer un programme permettant à partir du nuage de point de créer cette courbe de tendance. Mais le plus important étant d'avoir l'équation de cette courbe avec ces coefficients...
    En espérant avoir des réponses rapidement...
    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      8 décembre 2010 à 12:05:40

      Salut ! :)

      Tu peux par exemple utiliser la formule de Lagrange pour l'interpolation :

      <math>\(P_n(x) = \sum_{k=0}^n \phi_{nk}\ f(x_k)\)</math>
      avec
      <math>\(\phi_{nk}(x) = \frac{(x - x_0)...(x - x_{k-1})(x - x_{k+1})...(x - x_n)}{(x_k - x_0)...(x_k - x_{k-1})(x_k - x_{k+1})...(x_k - x_n)}\)</math>

      Par exemple, si ton nuage de points est :
      <math>\(x\)</math> <math>\(f(x)\)</math>
      0 3
      1 5
      2 7
      3 5
      4 3

      Alors, en appliquant la formule, tu trouves ceci :

      Il y a <math>\(n + 1 = 5\)</math> points distincts donc <math>\(n = 4\)</math>.

      <math>\(\Rightarrow\ P_4(x) = \phi_{40}(x) \times 3 + \phi_{41}(x) \times 5 + \phi_{42}(x) \times 7 + \phi_{43}(x) \times 5 + \phi_{44}(x) \times 3\)</math>

      <math>\(\Leftrightarrow\ P_4(x) = \frac{(x - 1)(x - 2)(x - 3)(x - 4)}{(0 - 1)(0 - 2)(0 - 3)(0 - 4))} \times 3 + \frac{(x - 0)(x - 2)(x - 3)(x - 4)}{(1 - 0)(1 - 2)(1 - 3)(1 - 4))} \times 5 + \frac{(x - 0)(x - 1)(x - 3)(x - 4)}{(2 - 0)(2 - 1)(2 - 3)(2 - 4))} \times 7 + \frac{(x - 0)(x - 1)(x - 2)(x - 4)}{(3 - 0)(3 - 1)(3 - 2)(3 - 4))} \times 5 + \frac{(x - 0)(x - 1)(x - 2)(x - 3)}{(4 - 0)(4 - 1)(4 - 2)(4 - 3))} \times 3\)</math>

      <math>\(\Leftrightarrow\ P_4(x) = \frac{1}{8} \times (x - 1)(x - 2)(x - 3)(x - 4) - \frac{5}{6} \times x(x - 2)(x - 3)(x - 4) + \frac{7}{4} \times x(x - 1)(x - 3)(x - 4) - \frac{5}{6} \times x(x - 1)(x - 2)(x - 4) + \frac{1}{8} \times x(x - 1)(x - 2)(x - 3)\)</math>

      Je ne suis pas super doué en TeX, je ne sais pas comment on fait un retour à la ligne, donc désolé que tout soit si petit... :euh:
      Tu peux faire Clic droit > Afficher l'image pour voir le calcul en plus grand. ;)
      • Partager sur Facebook
      • Partager sur Twitter
        8 décembre 2010 à 12:48:25

        Merci pour ta réponse.
        Mais j'aimerai savoir si c'est possible qu'avec tous les points que j'ai... d'avoir uniquement un polynome d'ordre 3.
        Dans ton exemple c'est plutot un polynome d'ordre 4.
        Merci
        • Partager sur Facebook
        • Partager sur Twitter
          8 décembre 2010 à 12:52:02

          Les polynômes de Lagrange ne sont pas les plus adapté pour ce genre de chose, il y a un phénomène bien connu qui fait que l'approximation par les polynômes de Lagrange dévie sensiblement du nuage de points

          http://fr.wikipedia.org/wiki/Phénomène_de_Runge

          Il y a plusieurs méthodes d'approximation, je suis pas un expert mais je pense que ton prof peut te donner des pistes de recherche
          • Partager sur Facebook
          • Partager sur Twitter
            8 décembre 2010 à 13:16:53

            Oui c'est bien ce qu'il me semblait...

            Je vais voir du coté des approximation. Encore merci.
            Si une autre idée vous passe par la tete... ;)
            • Partager sur Facebook
            • Partager sur Twitter
              8 décembre 2010 à 17:49:05

              Peut-être une possibilité :

              va voir du côté des probabilités et des formules permettant par exemple d'effectuer une régression linéaire et l'adapter, il y a une méthode générale, mais n'ayant pas ça sous la main, je ne peux rien dire de plus.

              Bonne soirée

              Marc
              • Partager sur Facebook
              • Partager sur Twitter

              Avez-vous entendu parler de Julia ? Laissez-vous tenter ...

                8 décembre 2010 à 18:46:21

                Si tu as de bonnes bases en maths, c'est un problème de minimisation. Inspire toi par exemple de la formule (et de la démonstration) du chi 2. Ensuite, essaier de minimiser une fonction distance ça revient à faire une projection (sur l'espace des polynômes de degré trois par exemple) exactement comme le chi 2, mais pas sur le même espace.

                Le développer ici en généralité et même en particulier serait carrément trop long, demande à ton professeur il t'expliquera ça beaucoup mieux en détail.
                • Partager sur Facebook
                • Partager sur Twitter
                  8 décembre 2010 à 22:35:42

                  Alors un polynome de degré 3, c'est 4 contraintes.
                  Si tu as exactement 4 points, ça va. Si tu en as davantage, tu ne pourras pas faire passer le polynome par tous les points (a moins bien sur que par chance les points tombent pile ou il faut)

                  Tu peux faire plusieurs polynomes de degré 3, assemblés les uns aux autres, de tel sorte que la continuité du tout soit C1 ou C2.

                  On parle de splines cubiques.
                  • Partager sur Facebook
                  • Partager sur Twitter

                  Recueil de code C et C++  http://fvirtman.free.fr/recueil/index.html

                    14 décembre 2010 à 14:19:01

                    Apres réflexion je pense m'orienter vers le VBA qui me permettra de réaliser une courbe de tendance facilement et sans problème sous Excel.
                    Merci encore.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      14 décembre 2010 à 19:34:00

                      Bonjour,

                      Il y a eu un peu de confusion ici. Il ne faut pas mélanger interpolation et approximation polynomiale.

                      A partir d'un nuage de 'n' points, on peut trouver un unique polynôme de degré 'n' passant par TOUS les points. C'est ce que l'on appelle l'interpolation polynomiale. Comme l'a signalé akhenathon, si l'on y prend pas gare lorsque le nombre de points (et donc le degré du polynôme) devient important il y a apparition du phénomène de Runge qui peut être très gênant.

                      Une solution consiste à subdiviser l'intervalle d'étude et à réaliser des interpolations polynomiales locales sur chaque subdivision. On parle alors d'interpolation spline. L'interpolation est "spline cubique" lorsque chaque subdivision est interpolée à l'aide d'un polynôme de degré 3. La subdivision contient alors 3 points. On a alors une très belle courbe bien lisse (adieu le phénomène de Runge). Cependant ce n'est pas très utile lorsque l'on souhaite extrapoler une tendance/un modèle car on a autant de modèles que de subdivisions...

                      Lorsque l'on analyse des mesures entachées d'erreurs et que l'on souhaite établir une courbe de tendance à partir du nuage de points de ces mesures, on est dans le domaine de l'approximation polynomiale. On a toujours 'n' points mais cette fois-ci on recherche un polynôme de degré 'q' < 'n' qui "minimise l'erreur" par rapport aux 'n' points. C'est ce que fait Excel.

                      Lorsque le polynome est de degré 'q' = 1 on parle de "régression linéaire". Le modèle est alors une simple droite d'équation y = ax + b.

                      Lorsque le polynome est de degré 'q' > 1 on parle de "régression polynomiale"/"régression multi-linéaire".
                      Voir wikipedia!
                      Ce n'est pas plus compliqué que 3 multiplications et une inversion de matrices :)

                      Concrètement, l'erreur est donnée par l'estimateur des moindres carrés : la somme des carrés des erreurs en chaque point. En minimisant cette estimateur, on obtient : le polynôme (de degré 'q') de meilleure approximation au sens des moindres carrés.

                      Une fois que le programme qui réalise tout ça est écrit, il ne reste plus qu'à choisir l'ordre du polynôme d'approximation pour chaque ensemble de mesures.

                      J'ai vérifié la formule donnée sur wikipedia avec un petit programme, ça marche plutôt pas mal :
                      Image utilisateur
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Inkamath on GitHub - Interpréteur d'expressions mathématiques. Reprise du développement en cours.

                      Réalisation d'une courbe de tendance polynomiale d'ordre 3

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                      • Editeur
                      • Markdown