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 :

Quel est le type d'équations et comment calculer ses coefficients ?


Sujet :

Mathématiques

  1. #1
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut Quel est le type d'équations et comment calculer ses coefficients ?
    Bonjour,

    je dois développer une application permettant de déterminer l'équation y = f(x) à partir d'une multitude de mesures.
    Pour une même valeur de Y, j'ai 5 valeurs de X. J'ai en moyenne 10 valeurs de Y différentes.
    Voici quelques précisions sur le type de valeurs:
    Si X tend vers 0, Y tend vers 100.
    Plus X augmente, plus Y diminue.
    Il n'est pas possible d'avoir des valeurs de X et Y négatives.

    J'ai tracé sous Excel un graphe "nuage de points" afin d'y ajouter une courbe de tendance.
    Voici l'impression d'écran: Image
    Excel me détermine une courbe de tendance du type y=aln(x)+b.
    Hors je ne suis pas convaincu que ce soit correct car si l'on observe la courbe de tendance, on s'aperçoit qu'elle possède des valeurs négatives. Hors comme je le précisais précédemment, il n'est pas possible d'avoir des valeurs négatives.

    Sauriez-vous me dire quel est le type de l'équation et l'algorithme me permettant de la déterminer à partir des mesures dont je dispose ?

    En vous remerciant par avance,
    Cordialement,
    Zoax

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    ça ressemble à une courbe d'amortissement....

    y = a exp(-b x)


    Eventuellement déterminer a et b par moindres carrés...

  3. #3
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    il suffit de déterminer b, car a=100.
    Affiche le log(y) pour voir si tes points sont (quasi)-alignés.

    Sinon, tu peux ajouter un point fictif pour x très grand et y=0, puis refaire la procédure Excel.

  4. #4
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonsoir,

    et merci pour vos réponses:

    Citation Envoyé par souviron34
    ça ressemble à une courbe d'amortissement....
    y = a exp(-b x)
    Eventuellement déterminer a et b par moindres carrés...
    j'ai essayé avec Excel et il détermine l'équation Y = 70,564 * Exp(-0,1142 * X) avec un coefficient de régression R2 = 0,8268.
    La courbe dessinée est assez éloignée de la courbe du nuage de points.

    Sinon, tu peux ajouter un point fictif pour x très grand et y=0, puis refaire la procédure Excel.
    J'ai essayé sous Excel. Lorsque je veux ajouter une courbe de tendance, il ne me propose plus que le polynome ou la moyenne mobile.

    Je ne sais pas trop comment faire.
    Auriez-vous une idée ?

    Merci d'avance,
    Zoax

  5. #5
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonsoir,

    affiche le logarithme de y pour voir (ou essaye directement une régression sur le logarithme).

  6. #6
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    affiche le logarithme de y pour voir (ou essaye directement une régression sur le logarithme).
    Si je comprends bien ta proposition, tu me suggères de tracer sous Excel un graphique "Nuage de points" en prenant non pas les valeurs Y mais les valeurs Log(Y) ?
    Est-ce bien ça ?

    Merci d'avance,
    Cordialement,
    Zoax

  7. #7
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    oui c'est bien cela. Si la distribution de tes points est exponentielle,
    y=aexp(-bx),
    alors log(y) = log(a)-bx, c'est-à-dire que le logarithme de y doit te donner une droite.
    Bien sûr, vu qu'il peut y avoir une incertitude dans les mesures, tes points ne seront sûrement pas parfaitement alignés.

    Si ça ne ressemble pas du tout à une droite, poste le graphique pour voir s'il y a une généralisation évidente (en élevant x à une puissance par exemple).

  8. #8
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonsoir,

    et merci pour la réponse.
    J'ai tracé sous Excel une courbe "Nuage de points" avec en abscisses X et en ordonnées Log(Y).
    J'obtiens le résultat suivant: Image
    J'ai ensuite ajouté une courbe de tendance de type polynomial d'ordre 6 et le résultat semble correct. Le coefficient de régression calculé par Excel est égal à 1.

    Qu'en pensez-vous ?
    Merci d'avance,
    Cordialement,
    Zoax

  9. #9
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonjour,

    ça semble être une bonne approximation de log(y) mais il faut vérifier que c'est encore vrai pour y en affichant l'exponentielle de ton polynôme.
    Sinon, si tu veux forcer y=100 quand x=0, il faut ajouter le point (0,log(100)) avant de calculer le polynôme avec Excel.

  10. #10
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    j'ai vérifié le polynôme en calculant les valeurs de Log(Y) à partir du polynôme et des valeurs X. Le résultat trouvé est différent des valeurs calculées Log(Y).
    Je ne comprends pas. Je m'attendais à ce que le polynôme calculé par Excel soit bon mais on ne retrouve pas les mêmes valeurs.
    J'ai joint les 2 graphes: Image
    le premier montre les valeurs Log(Y) en fonction de X et le second montre les valeurs de Log(Y) calculées à partir du polynôme.
    Enfin le 3ème montre Y = Exp(F(X)), où F(X) représente le polynôme. Evidemment les résultats sont complètement différent.
    Comment puis-je faire ?

    Sinon, si tu veux forcer y=100 quand x=0, il faut ajouter le point (0,log(100)) avant de calculer le polynôme avec Excel.
    En fait c'est Y = 0 quand X = 100. Du coup je ne peux pas calculer LOG(Y).

    Merci d'avance,
    Zoax

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    J'avoue mon incompréhension de ton incompréhension...

    Dans ton premier graphe, tu as bien une courbe exponentielle décroissante (ou logaritmique), telle que Excel te l'a donnée...

    Quand tu dis :

    Citation Envoyé par zoaax Voir le message
    Hors je ne suis pas convaincu que ce soit correct car si l'on observe la courbe de tendance, on s'aperçoit qu'elle possède des valeurs négatives. Hors comme je le précisais précédemment, il n'est pas possible d'avoir des valeurs négatives.
    Citation Envoyé par zoaax Voir le message
    En fait c'est Y = 0 quand X = 100. Du coup je ne peux pas calculer LOG(Y).
    Tu n'as pas compris..

    si y = -7 log(x) + 32

    ce n'est pas calculable pour X = 0

    Les valeurs négatives sont parfaitement logiques, puisque tu as un facteur négatif à log(x)...

    L'équation donnée par Excel est tout à fait corecte...

  12. #12
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    et merci pour la réponse.
    Citation Envoyé par souviron34
    J'avoue mon incompréhension de ton incompréhension...
    Oui effectivement j'ai un peu de mal

    Citation Envoyé par souviron34
    Tu n'as pas compris..
    si y = -7 log(x) + 32
    ce n'est pas calculable pour X = 0
    Ce que je voulais dire c'est que si Y=0 pour X=100 et vu que la courbe y = -7 log(x) + 32 ne passe pas par le pont (100,0), je me demandais si la courbe de tendance était bien du type logarithmique mais si vous me dites que oui, je le crois.

    Citation Envoyé par zoaax
    En fait c'est Y = 0 quand X = 100. Du coup je ne peux pas calculer LOG(Y)
    Ce que je voulais dire par là, c'était suite à la réponse d'Aleph69 qui me proposait de calculer Log(Y), si Y = 0, je ne peux pas calculer Log(Y).

    Donc en conclusion, vous me confirmez qu'il s'agit bien d'une équation du type y = a exp(-b x) et que je peux déterminer a et b par les moindres carrés ?

    Merci d'avance,
    Cordialement,
    Zoax

  13. #13
    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
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Sauriez-vous me dire quel est le type de l'équation et l'algorithme me permettant de la déterminer à partir des mesures dont je dispose ?
    Il n'existe aucun algorithme permettant de déterminer le type de l'équation, ou plutôt de la fonction y=f(x), parce que c'est à toi de le choisir arbitrairement.
    Tu peux donc essayer plusieurs types de fonctions (polynômes, exponentielles, logarithmiques, etc.). Pour chaque type, tu détermineras ensuite les coefficients de ta fonction qui te donnera la moins mauvaise approximation.
    Jean-Marc Blanc

  14. #14
    Membre expérimenté
    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
    Points : 1 455
    Points
    1 455
    Par défaut
    Il est impossible de déterminer une équation avec si peu d'informations.
    En particulier le dernier point affiché est à y=0. Que se passe-t-il au delà ? Peut-il y avoir des points au delà, sont-ils à zero ou bien faut-il interpoler sur un support borné ?
    Citation Envoyé par Aleph69 Voir le message
    Sinon, tu peux ajouter un point fictif ...
    Surtout pas !

  15. #15
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    et merci pour vos réponses.
    Citation Envoyé par FR119492
    Il n'existe aucun algorithme permettant de déterminer le type de l'équation, ou plutôt de la fonction y=f(x), parce que c'est à toi de le choisir arbitrairement.
    Tu peux donc essayer plusieurs types de fonctions (polynômes, exponentielles, logarithmiques, etc.)
    Je ne savais pas trop à quel type de fonction ressemble la courbe de tendance. D'après souviron34, la courbe ressemble à y = a exp(-b x).
    J'ai effectivement essayé avec Excel et celles qui collent le mieux sont les fonctions y = a ln(x) + b et y = a exp(-b x).

    Citation Envoyé par FR119492
    Pour chaque type, tu détermineras ensuite les coefficients de ta fonction qui te donnera la moins mauvaise approximation.
    Avec la méthodes des moindres carrés ? Ou tout dépend du type de courbe ?

    Citation Envoyé par Nebulix
    En particulier le dernier point affiché est à y=0. Que se passe-t-il au delà ? Peut-il y avoir des points au delà, sont-ils à zero ou bien faut-il interpoler sur un support borné ?
    L'unité de valeur de l'axe X est en %. Ainsi, il n'y a pas de valeurs au-dessus de X=100. J'ai constaté qu'à peu près, Y=0 pour X compris entre 75 et 100.

    Il est impossible de déterminer une équation avec si peu d'informations.
    De combien d'informations dois-je disposer à peu près ?

    Merci d'avance,
    Cordialement,
    Zoax

  16. #16
    Membre expérimenté
    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
    Points : 1 455
    Points
    1 455
    Par défaut
    Citation Envoyé par zoaax Voir le message
    L'unité de valeur de l'axe X est en %. Ainsi, il n'y a pas de valeurs au-dessus de X=100. J'ai constaté qu'à peu près, Y=0 pour X compris entre 75 et 100.
    Précisions effectivement utiles !

    De combien d'informations dois-je disposer à peu près ?
    Je crains que celà ne soit pas quantifiable.
    La meilleure source d'information est de connaitre le processus qui conduit à ces données, sinon on est limité au pur empirisme.
    Dans ce second cas, la moins mauvaise solution est d'essayer ce qu'on peut, mais il faut avoir un nombre de points suffisants. Dans ton cas, il semble que la variation entre les derniers points soit linéaire mais les points sont trop espacés pour vraiment vérifier.
    Je te suggère d'essayer sur [0..75]
    y=a*exp(-x/x0)+b*(75-x)
    et 0 au delà.

  17. #17
    Membre expérimenté
    Homme Profil pro
    Chercheur
    Inscrit en
    Mars 2010
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 218
    Points : 1 685
    Points
    1 685
    Par défaut
    Bonsoir,

    En fait c'est Y = 0 quand X = 100. Du coup je ne peux pas calculer LOG(Y).
    Forcément si l'énoncé de départ n'est pas le bon, ça marche beaucoup moins bien! La courbe exponentielle proposée est incorrecte du seul fait de cette information. Si tu veux approcher par une exponentielle, il faut un modèle du type y=a*exp(-1/(x-100)) ou tout autre modèle qui permet d'avoir Y=0 quand X = 100. Ca peut se faire aussi avec un polynôme s'écrivant sous la forme factorisée y=a*(x-100)*P où P est un polynôme à calculer. Tu peux aussi combiner les deux approches : y=a*(x-100)*exp(...).

  18. #18
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonjour,

    et merci pour la réponse.
    Forcément si l'énoncé de départ n'est pas le bon, ça marche beaucoup moins bien!
    Oui désolé, je me suis trompé.

    La courbe exponentielle proposée est incorrecte du seul fait de cette information
    Et la courbe logarithmique non plus du coup ?

    Si tu veux approcher par une exponentielle, il faut un modèle du type y=a*exp(-1/(x-100)) ou tout autre modèle qui permet d'avoir Y=0 quand X = 100. Ca peut se faire aussi avec un polynôme s'écrivant sous la forme factorisée y=a*(x-100)*P où P est un polynôme à calculer. Tu peux aussi combiner les deux approches : y=a*(x-100)*exp(...).
    Quel algorithme j'utilise pour déterminer les coefficients ?

    Merci d'avance,
    Zoax

  19. #19
    Membre actif
    Inscrit en
    Avril 2006
    Messages
    346
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 346
    Points : 252
    Points
    252
    Par défaut
    Bonsoir,

    je suis finalement parti du principe qu'il s'agissait d'une courbe dont l'équation est du type y = aln(x) + b.
    Ainsi en représentant sur un graphe y en fonction de ln(x), j'obtiens une droite. J'ai ensuite déterminé les coefficients a et b en utilisant la méthode des moindres carrés.

    Merci pour votre aide.
    Zoax

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. quel est le type d'un menu déroulant <select>?
    Par Henry9 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 27/08/2007, 18h22
  2. quel est le type pour une image?
    Par kitiara999 dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 06/12/2006, 19h07
  3. [Conception] quel est le type de variable a choisir?
    Par King_T dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/05/2006, 01h27
  4. Quel est le type retourné ?
    Par Rupella dans le forum C
    Réponses: 4
    Dernier message: 30/11/2005, 15h01
  5. [langage] "@$" Quel est ce type de variable?
    Par YanK dans le forum Langage
    Réponses: 4
    Dernier message: 21/04/2005, 19h07

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