Partage
  • Partager sur Facebook
  • Partager sur Twitter

Courbe de tendance en C++

Faire du excel en C++

    11 juin 2008 à 11:09:16

    Bonjour à toute la communauté des zéros et excusez moi d'avance si le post n'est pas parfait mais c'est mon premier. Il faut bien un début :p

    Voici mon problème:

    Sous excel j'ai une série de point (sur un graphique) où j'ai réalisé une courbe de tendance exponentielle de la forme y=a*exp(bx).
    Mon objectif serait d'effectuer un programme C++ capable de me donner l'équation y=a*exp(bx) de ma série de valeur (valeurs rentrer par l'utilisateur).

    Le reste du code C++ sera très trivial (enfin du point de vue mathématique) la plus grande difficulté étant ce que je vous ai demandé.

    Si vous avez des questions ou que vous vouliez plus de précission n'hésitez pas à me le demander.
    Je vous remercie d'avance.

    PS: si quelqu'un d'entre vous juge que le langage C++ n'est pas adapté pour ce travail qu'il n'hésite surtout pas à me conseiller un autre langage de programmation.

    • Partager sur Facebook
    • Partager sur Twitter
      11 juin 2008 à 11:14:34

      tu cherches quoi exactement ? a calculer a et b dans ton équation en fonction des points entrés, ou alors tracer le graphique ?
      • Partager sur Facebook
      • Partager sur Twitter

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

        11 juin 2008 à 11:18:06

        Oui en effet je n'ai pas précisé le résultat attendu.
        Je voudrais (et je pense que cela sera plus simple) avoir les valeurs a et b.

        Après si j'ai le temps, la patience et l'envie pourquoi pas un affichage graphique dans une jolie fenêtre avec Qt ^^
        • Partager sur Facebook
        • Partager sur Twitter
          11 juin 2008 à 11:21:47

          C'est plus un problème de math que de programmation, regarde déjà si il y a pas une bibliothèque mathématique qui peut te donner ce que tu cherche, sinon prend un crayon et une feuille et cherche a la main comment tu ferait pour avoir x -> aexp(bx) tres proche de f(x) sur un intervalle [c;d].
          • Partager sur Facebook
          • Partager sur Twitter
          FaQ : Fr | En 1 2 | C++11 | Template || Blog : Deloget | C++|Boost--Dev | C++Next | GotW || Installer Boost
            11 juin 2008 à 11:24:30

            oui, un probleme de maths. Précalcule tout ce que tu veux a la main, pose les formules, puis recopie dans une fonction...
            • Partager sur Facebook
            • Partager sur Twitter

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

              11 juin 2008 à 11:28:09

              Je sais déjà qu'il existe des bibliothèques capablent de résoudre ce problème tel que ROOT (utilisé par le CERN, oui je suis physicien ;) ) mais mon environnnemnt de travail ne me permet pas de l'utiliser. Problème relationnel etc...
              Après sur le plan mathématique, oui en effet cela peut être une piste de réflexion mais pas trivial du tout :-°
              • Partager sur Facebook
              • Partager sur Twitter
                11 juin 2008 à 11:29:40

                La méthode mathématique est la suivante:

                1) Calculer le log (ln) de toutes les valeurs de y.
                2) Utiliser l'algorithme des moindres carrés pour trouver des coefficients m et h tels que la droite mx + h soit la meilleure par rapport aux points ln(y).
                3) tu obitens alors tes coefficients a = exp(h) et b = m
                • Partager sur Facebook
                • Partager sur Twitter
                Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
                  11 juin 2008 à 11:32:36

                  Oui ca me semble très judicieux comme remarque. Bon je vais plancher sur le sujet et je vous tiens au courant de mon avancé et merci encore pour votre aide et votre rapidité!
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 juin 2008 à 12:02:23

                    de manière plus précise, il faut appliquer une régression linéaire sur la droite d'équation :

                    ln(y) = b*x + ln(a) ou d = b*x + p

                    Il y a un très bon article sur Wikipedia qui explique bien comment effectuer une régression linéaire :

                    http://fr.wikipedia.org/wiki/R%C3%A9gr [...] lin%C3%A9aire

                    tu obtiens ainsi les coefficients b et p sachant que a = exp(p).
                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 juin 2008 à 14:16:55

                      Merci à tous pour votre le problème commence à ce présicer. Cepandant je dois avouer que les math sont un peu loin derrière moi (et de toute façon mon niveau n'a jamais été excellent :p ).

                      Est-ce trop demandé que quelqu'un puisse me construire à un algorithme approprié à mon problème? Car la régression linéaire me parrait très obcure du point de vue mathématique.

                      En vous remerciant d'avance.

                      <information></information>EDIT: Bon j'avance de plus en plus de mon problème (grâce à vous les zéros ;) je viens de vérifier sous excel la méthode que vous m'avez conseiller : prendre l'équation la multiplier par un LN et retrouver les coeff.

                      Il ne me reste plus qu'un seul problème: trouver un algorithme pour effecuer une interpolation linéaire et là ... :-°
                      • Partager sur Facebook
                      • Partager sur Twitter

                      Courbe de tendance en C++

                      × 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