Partage
  • Partager sur Facebook
  • Partager sur Twitter

Trouver l'équation d'une fonction via à des points

Trouver l'équation d'une fonction grâce à un nuage de point

Sujet résolu
    20 juin 2013 à 8:34:49

    Bonjour,

    Je souhaiterai savoir s'il est possible de trouver l'équation d'une fonction en fonction d'un nuage de point. J'ai fait un schéma (un peu barbare , je vous l'accord) sous paint :

    Si je connais les coordonnées de tous mes points, est ce que je peux en déduire une équation de fonction qui permettrai de tracer une courbe via tout ces points (si la courbe ne passe pas exactement par tous ces points ce n'est pas grave, ce qui compte pour moi c'est que l'allure général de la courbe, ressemble visuellement au nuage de point) ?

    Si cela est possible, est ce que quelqu'un pourrait me décrire la marche à suivre svp ?

    Merci d'avance et bonne journée.

    -
    Edité par Ashbay 20 juin 2013 à 8:45:49

    • Partager sur Facebook
    • Partager sur Twitter
      20 juin 2013 à 9:52:11

      Salut à toi,

      Pour tout nuage de point, tu n'as pas forcément une fonction qui passe par tous ces points : si tu as 2 points pour une même abscisse, ce n'est pas possible !

      Ensuite, si le nuage de point permet qu'une fonction passe par tous ces points, tu as alors une infinité de fonctions qui passent par chacun de ces points !

      La plus simple est de lier 2 points consécutifs (au sens visuel du terme) par un segment ce qui te donnera une fonction affine par morceau. Autrement, je te conseille de rechercher des méthodes d'interpolation si tu veux que ta fonction passe par tous tes points. Si jamais tes points correspondent à des mesures expérimentales, et donc qu'il est possible qu'il y ait des erreurs (bruit), je te conseille de regarder des méthodes de regression (non-linéaire vu la forme de tes points) !

      • Partager sur Facebook
      • Partager sur Twitter
      Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
      Anonyme
        20 juin 2013 à 9:55:51

        Salut, le plus simple est de faire ça informatiquement. Excel le fait très bien par exemple. Par contre, il faut connaître le "type de fonction" par lequel tu veux approximer ton nuage de point. Ceci nécessite d'avoir un modèle de la situation qui a conduit à l'obtention de ce nuage. Bon, là, vu la gueule du nuage, ça a tout l'air d'une exponentielle.

        • Partager sur Facebook
        • Partager sur Twitter
          20 juin 2013 à 11:06:13

          oowaka a écrit:

          La plus simple est de lier 2 points consécutifs (au sens visuel du terme) par un segment ce qui te donnera une fonction affine par morceau.

          Merci pour cette idée, c'est tout bête mais je n'y avais pas pensé. Je pense que c'est ce que je ferai si je ne trouve pas d'autres solutions.

          @dri1 a écrit:

          Excel le fait très bien par exemple. Par contre, il faut connaître le "type de fonction" par lequel tu veux approximer ton nuage de point. Ceci nécessite d'avoir un modèle de la situation qui a conduit à l'obtention de ce nuage.

          En gros je souhaiterai trouver une fonction qui évolue moins vite que la fonction affine, mais plus vite que la fonction logarithme népérien. Du coup ta solution avec excel pourrait peut-être m'aider; est ce que tu pourrais m'expliquer comment faire cela avec excel ?

          Merci pour votre aide.



          -
          Edité par Ashbay 20 juin 2013 à 11:51:18

          • Partager sur Facebook
          • Partager sur Twitter
            20 juin 2013 à 11:31:16

            Ashbay a écrit:

            oowaka a écrit:

            La plus simple est de lier 2 points consécutifs (au sens visuel du terme) par un segment ce qui te donnera une fonction affine par morceau.

            Merci pour cette idée, c'est tout bête mais je n'y avais pas pensé. Je pense que c'est ce que je ferai si je ne trouve pas d'autres solutions.

            Regarde aussi du côté des interpolations de Lagrange et de Hermite (pour les plus connues) ! ;)

            Ashbay a écrit:

            En gros je souhaiterai trouver une fonction qui évolue moins vite que la fonction affine, mais plus vite fonction logarithme népérien.

            Pas besoin de tout ça ! Tu as la fonction \(x\mapsto\sqrt x\) qui croit moins vite que \(x\mapsto x\), mais plus vite que \(x\mapsto\ln x\) ! Du moins, à partir d'un certain rang ! ;) Preveu : \(\dfrac{dx}{dx} = 1 \geqslant \dfrac{d\sqrt x}{dx} = \dfrac{1}{2\sqrt x} \geqslant \dfrac{d\ln x}{dx} = \dfrac{1}{x}\) pour \(x\geqslant 4\) !

            • Partager sur Facebook
            • Partager sur Twitter
            Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
              20 juin 2013 à 11:55:39

              Effectivement la fonction racine(x) me semble pas mal. Merci bien.

              -
              Edité par Ashbay 20 juin 2013 à 14:29:41

              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                20 juin 2013 à 12:02:49

                Je n'ai pas Excel sous la main, donc je peux pas te faire moi-même un topo, mais j'ai retrouvé ce tuto qui explique comment réaliser une régression sur des données. Même si ça ta sert pas ici, ça pourra t'être utile un jour. Pour ton exemple, un modèle logarithmique conviendrai à mon avis.

                • Partager sur Facebook
                • Partager sur Twitter
                  20 juin 2013 à 12:05:11

                  @dri1 a écrit:

                  Bon, là, vu la gueule du nuage, ça a tout l'air d'une exponentielle.

                  Par contre, je ne vois pas du tout ton exponentielle dedans... Fatigue de ma part ou de la tienne ?

                  • Partager sur Facebook
                  • Partager sur Twitter
                  Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                  Anonyme
                    20 juin 2013 à 12:07:35

                    Je pensais à une exponentielle du type \(y(x)=a(1-\exp (-bx))\) .

                    EDIT : en revoyant le graphique, je me dis qu'il faudrait avoir quelques points de plus pour voir si ce type de regression serait pertinent ou si \(y(x)=ax\^{1/b}\) que tu proposes serait mieux adapté.

                    -
                    Edité par Anonyme 20 juin 2013 à 12:12:01

                    • Partager sur Facebook
                    • Partager sur Twitter
                      20 juin 2013 à 14:18:50

                      C'est pour faire quoi ? 

                      Si par exemple tu dois t'en servir dans un code (alle le plus simple, en python), tu peux utiliser des librairies d'interpolation, surtout si tu es interesse par l'approximation de cette fonction sur un intervalle restreint. 

                      ex en python : 

                      from scipy.interpolate import interp1d

                      f = interp1d(mes_points_x, mes_points_y, kind = ordre_d_approximation)

                      Il existe souvent des bibliotheques pour faire ce genre de trucs, car c'est tres courant.

                      Je ne sais pas trop si ca aide, ca depend de ce que l'on veut faire.

                      ++

                      ps : desole je ne sais pas trop mettre du code (et j'ai pas trop le temps la)

                      • Partager sur Facebook
                      • Partager sur Twitter
                        20 juin 2013 à 14:39:00

                        Kargarde a écrit:

                        C'est pour faire quoi ?

                        C'est bien pour utiliser cette fonction dans du code.

                        Concrètement je suis entrain de faire un petit RPG, et je suis entrain de me demander de quelle manière je peux faire évoluer les attributs (point de vie, point de magie, etc..) de mon perso au fur et à mesure qu'il monte de niveau. Au début j'avais pensé à appliquer une fonction affine sur les attributs du personnage, mais cela le fait évoluer trop vite. Ensuite j'ai pensé à utiliser une fonction logarithmique, du coup le personnage évolue vite pour les premiers niveaux qu'il acquière, mais après ça reste trop "constant". Du coup comme le propose oowaka je vais utilise la fonction racine(x) qui me semble être un bon compromis.

                        • Partager sur Facebook
                        • Partager sur Twitter
                          20 juin 2013 à 14:57:09

                          Là, je t'ai proposé la fonction racine carrée, mais tu as toute la famille des fonctions racines qui fonctionneront, à savoir les fonctions \(x\mapsto a x\^b\) avec \(a>0\) et \(b\in]0,1[\) comme l'a proposé @dri1 ! Pour rappel, \(\sqrt x = x\^{0.5}\)

                          Je te conseille d'utiliser un logiciel qui te permet de tracer les graphes de fonctions pour visualiser leur comportement ! (par exemple, si tu veux juste utiliser ton navigateur web sans rien installer, il y a Wolfram Alpha) Comme ceci, tu pourras voir facilement l'intérêt de chacun des paramètres \(a\) et \(b\) !

                          -
                          Edité par oowaka 20 juin 2013 à 14:58:17

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Une réponse toute faite et gratuite à tes devoirs ? ==> ICI <==
                            20 juin 2013 à 15:16:05

                            oowaka a écrit:

                            Là, je t'ai proposé la fonction racine carrée, mais tu as toute la famille des fonctions racines qui fonctionneront, à savoir les fonctions \(x\mapsto a x^b\) avec \(a>0\) et \(b\in]0,1[\) comme l'a proposé @dri1 ! Pour rappel, \(\sqrt x = x^{0.5}\)

                            Je te conseille d'utiliser un logiciel qui te permet de tracer les graphes de fonctions pour visualiser leur comportement ! (par exemple, si tu veux juste utiliser ton navigateur web sans rien installer, il y a Wolfram Alpha) Comme ceci, tu pourras voir facilement l'intérêt de chacun des paramètres \(a\) et \(b\) !

                            C'est pile ce qu'il me fallait ;)

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Anonyme
                              20 juin 2013 à 17:57:43

                              Ou, si tu tient à obtenir une valeur la plus proche possible pour tes paramètres \(a\) et \(b\), tu peut employer des logiciels qui te permettent de le faire : Kaleidagraph, Origin ou GNUPLot le font (défaut, ils sont payants (dans les deux premiers cas) et pas simple à appréhender si c'est juste pour faire ça).
                              • Partager sur Facebook
                              • Partager sur Twitter
                                21 juin 2013 à 0:36:33

                                une regression par un polynome de type moindre carré ça marcherai bien aussi

                                (c'est ce qui est proposé dans le code python ci dessus en fait)

                                => si tu utilises matlab c'est la fonction "polyfit" 

                                -
                                Edité par membreComplexe12 21 juin 2013 à 0:39:21

                                • Partager sur Facebook
                                • Partager sur Twitter

                                Trouver l'équation d'une fonction via à des points

                                × 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