Fit courbe
Répondre à la discussion
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 35

Fit courbe



  1. #1
    invite81027df7

    Fit courbe


    ------

    Bonjour,

    J'ai des données expérimentales et je souhaite faire un fit à l'aide d'une fonction théorique contenant 4 variables, voici comment je vois là chose :

    function y = f (a, x)
    y=a(1)*exp(-a(2)*1./sqrt(x).*exp(-a(3)*1./x))+a(4)

    fonction out=F(a)

    global xi yi

    out=sum((yi-f(a,xi)).^2);

    xi=[30.1 31.1 33 34.5 35.6 36.6 37.6 38.6 39.6 40.6 42.5 43.5 44.6 46.6 47.6 48.8 49.9 51.1 52.5 53.6 54.7 55.9 57.2 58.2 59.2 60.4 61.9 63]
    yi=[34 36.6 40.5 47.6 57.6 63.6 72.8 83.6 93.8 103 130.5 139.5 148.5 155 172 176 179 194.5 208.5 230 255 286.5 328 365 382 414 418 434]
    %yi=[6.6 length7.6 9.8 11.6 14 17.6 18.8 21.6 25 27 30 31.5 33 34.5 39 40.5 43 47 53.5 58.5 68 81 101 118 125 130 140 142] %

    a0=[0 0 0 0]

    asol=fminsearch('F',a0);

    Mais ça ne marche pas, comme je dois faire ?

    Merci d'avance.

    -----

  2. #2
    Dlzlogic

    Re : Fit courbe

    Bonjour,
    Votre question n'est pas très claire.
    Voila ce que j'ai compris :
    Vous avez une série de couples (X,Y) de valeurs observées.
    Vous cherchez à établir la fonction y = f(x).
    Vos avez une formule qui nécessite 4 paramètres, appelons-les A, B, C, D
    Mes questions :
    1- que représente la liste %yi[ ...]%
    2- vous voulez utiliser une fonction "qui fait tout toute seule", alors il n'y a qu'elle qui puisse vous répondre.
    3- vous connaissez la fonction f, parce qu'elle résulte d'analyse théorique ou parce qu'elle résulte d'observation intuitive ?
    4- connaissez-vous la méthode des moindres carrés ?
    5- la liste des couples (X,Y) a-t-elle une représentation monotone ou presque ?

  3. #3
    invite81027df7

    Re : Fit courbe

    les couples (x,y) sont des valeurs expérimentales , donc j'obtiens expérimentalement ma courbe y=fexpéri(x) et théoriquement j'ai obtenu une expression de cette courbe théorique représentée par une fonction y=fthéo(x) qui comporte A,B,C et D comme constantes dans sont expression. Je cherche donc ces constantes afin pour que fthéo soit la plus proche de fexpéri, c'est pour ça que je cherche à minimiser : sum (yi-fthéo(xi))^2 et cette minimisation me donnera les 4 constantes.

  4. #4
    Dlzlogic

    Re : Fit courbe

    Oui, bien sûr, mais vous ne répondez à aucune de mes questions.
    Vous apportez tout de même un petit complément : vous avez une fonction fthéo(), quelle est elle ?

  5. A voir en vidéo sur Futura
  6. #5
    invite81027df7

    Re : Fit courbe

    Elle est écrite dans mon code , A exp(B 1/sqrt(x) exp(C 1/x) ) +D

  7. #6
    Dlzlogic

    Re : Fit courbe

    Ben, oui, ça j'ai vu, mais une fonction théorique a des paramètre théoriques, donc numériques.
    En d'autres termes, d'où vient cette fonction ?
    Est-ce un exercice ou un problème réel ?
    Expliquez pourquoi vous voulez minimiser somme((yi-f(x))²) ?

  8. #7
    invite81027df7

    Re : Fit courbe

    Oui bien sur il y a des paramétres théoriques, mais là n'est pas le probléme , jecherche à faire un fit de la courbe expérimentale, je ne sais pas quoi vous dire d'autre c'est un fit quoi, comme quand on a des points expérimentaux qui donnent presque une droite et que l'on fait un fit pour déterminer les meilleurs a et b qui conviennent y=ax+b. Cette fonction je l'obtiens théoriquement, c'est un probléme réel. Pourquoi je souhaite minimiser cette quantité : ben la réponse est dans mon message précédent ... ?

  9. #8
    invite81027df7

    Re : Fit courbe

    La quantité somme (yi-f(xi))^2 dépend de A,B,C et D par l'intermédiaire de f et les (xi,yi) sont les points expérimentaux

  10. #9
    Dlzlogic

    Re : Fit courbe

    Vous employez le terme "fit", il n'apparait pas dans le dictionnaire, mais ça ne m'empêche pas de comprendre exactement ce que vous cherchez à faire.
    Dans tous les cas je ne donne pas de réponse sans avoir eu les réponses à mes questions.
    Pourquoi vous ne voulez pas dire les valeurs théoriques des paramètres ?
    Je sais bien que vous voulez minimiser la somme, mais vous ne voulez pas dire pourquoi?
    Que représente la liste des %y ?
    Si vous voulez que je vous aide, il faut participer un peu.
    PS : vous êtes sûr de na pas avoir oublié une paire de parenthèses ?
    Dernière modification par Dlzlogic ; 04/09/2012 à 18h45.

  11. #10
    invite81027df7

    Re : Fit courbe

    1) Je ne donne pas les valeurs théoriques des paramétres car : ils sont énorme (plein de valeurs caractérisant une transition atomique du potassium) et ce n'est pas utile ici pour mon probléme.
    2) Pourquoi je veux minimiser là somme : Mais le je l'ai dit dans un des messages précédents, cette somme caractérise l'écart entre la courbe exp et la fonction théo en fonction des 4 paramétres !
    3) La liste des yi je l'ai dit aussi c'est les couples (xi,yi) expérimentaux, là %yi est une autre liste pour une température différente.

  12. #11
    invite81027df7

    Re : Fit courbe

    N.B : Je viens de relire mon premier message et c'est vrai qu'il n'était pas trés explicite, ni clair ...désolé

  13. #12
    Dlzlogic

    Re : Fit courbe

    4 valeurs numériques, c'est pas vraiment énormes.
    Si tout se passe bien, une fonction est minimum, lorsque sa dérivée s'annule.
    Cette fonction est tout de même assez compliquée et ne sort manifestement pas d'un chapeau.
    Je trouve ça :
    Régression polynôme Y=A.X^4 + B.X^3 + C.X^2 + D.X + E
    nbpts=28 A = -0.00026 B = 0.05626 C = -4.14 D = 133 E = -1567
    Ecart-type (écart moyen quadratique) = 13.896
    Je doute que votre expression donne un résultat sensiblement meilleur.
    Donc, je repose mes 6 questions.

  14. #13
    invite81027df7

    Re : Fit courbe

    Comment ça vos 6 questions ? Il me semble que j'ai répondu à tout...
    4 valeurs numériques, c'est pas énormes : c'est vrai mais là n'est pas le probléme , je souhaite les déterminer expérimentalement.
    Ma régression je veux pas là faire avec un polynôme ... ça se fait trés bien et vite avec un polynome, une fonction native de matlab ou même excel fait ca directement. Je souhaite là faire avec la fonction que j'ai donné, c'est pour ça que j'ai posté un semblant de code qui je pense n'est pas loin de marcher. Vous ne m'avez pas du tout parlé du code que j'ai posté ?

  15. #14
    invite81027df7

    Re : Fit courbe

    Même si le fit avec ma fonction donne un résultat moins bien ce n'est pas un probléme, puisque justement je souhaite comparer ma théorie aux résultats exp.

  16. #15
    Dlzlogic

    Re : Fit courbe

    Vous voulez pas jouer le jeu, tant pis.
    function y = f (a, x)
    y=a(1)*exp(-a(2)*1./sqrt(x).*exp(-a(3)*1./x))+a(4)

    fonction out=F(a)

    global xi yi

    out=sum((yi-f(a,xi)).^2);

    xi=[30.1 31.1 33 34.5 35.6 36.6 37.6 38.6 39.6 40.6 42.5 43.5 44.6 46.6 47.6 48.8 49.9 51.1 52.5 53.6 54.7 55.9 57.2 58.2 59.2 60.4 61.9 63]
    yi=[34 36.6 40.5 47.6 57.6 63.6 72.8 83.6 93.8 103 130.5 139.5 148.5 155 172 176 179 194.5 208.5 230 255 286.5 328 365 382 414 418 434]
    %yi=[6.6 length7.6 9.8 11.6 14 17.6 18.8 21.6 25 27 30 31.5 33 34.5 39 40.5 43 47 53.5 58.5 68 81 101 118 125 130 140 142] %

    a0=[0 0 0 0]

    asol=fminsearch('F',a0);
    C'est ça que vous appelez votre code ?
    Si vous avez établi cette fonction, vous devez savoir pourquoi, vous devez avoir des valeurs.
    Je ne peux rien pour vous.

  17. #16
    invite81027df7

    Re : Fit courbe

    Je ne comprend pas ce que vous voulez ... ?

  18. #17
    Dlzlogic

    Re : Fit courbe

    Moi, je veux rien, j'essaye de vous aider.
    Reprenez les 5 questions de mon premier message, et la sixième qui traine je ne sais où et répondez-y.
    On verra après.

  19. #18
    lou_ibmix_xi

    Re : Fit courbe

    Bon, je n'ai lu que le 1er message, et passé en diagonale le dialogue de sourd, donc si je passe à côté de quelque chose, désolé.
    Sous OCTAVE (99% compatible avec MATLAB, mais libre et gratuit), il faut utiliser la fonction "leasqr" qui "fit" (@dlzlogic, c'est un terme ultra classique...) des données empiriques sur une fonction dont tu donnes la tronche générale en fonction des paramètres. Dans ton cas, ça ressemblerait à:
    Code:
    F = @ (x, a) a(1)*exp(-a(2)*1./sqrt(x).*exp(-a(3)*1./x))+a(4); % definition "en ligne" de la fonction
    b = [ .... ]; % 1ere approximation de tes parametres
    [y, b] = leasqr (xi, yi, b, F); % b contient les parametres determines, et y = F(xi, b)
    "help leasqr" t'en dira plus.
    Je ne crois pas que cette fonction soit dispo sous MATLAB, mais OCTAVE est gratos et dispo sous linux macOS, windows etc...

  20. #19
    Dlzlogic

    Re : Fit courbe

    Citation Envoyé par lou_ibmix_xi Voir le message
    Bon, je n'ai lu que le 1er message, et passé en diagonale le dialogue de sourd, donc si je passe à côté de quelque chose, désolé.
    Sous OCTAVE (99% compatible avec MATLAB, mais libre et gratuit), il faut utiliser la fonction "leasqr" qui "fit" (@dlzlogic, c'est un terme ultra classique...) des données empiriques sur une fonction dont tu donnes la tronche générale en fonction des paramètres.
    "help leasqr" t'en dira plus.
    Je ne crois pas que cette fonction soit dispo sous MATLAB, mais OCTAVE est gratos et dispo sous linux macOS, windows etc...
    Bonjour,
    Oui, c'est la première fois que je vois ce terme "fit".
    Concernant le fond du sujet, je suis de la vieille école, si on me demande de l'aide, je la donne, mais avec un minimum de participation. Le principe général est simple : il y a 2 solution, soit notre ami doit faire un TD, sait qu'il doit faire telle ou telle manip, mais s'en fiche du reste, soit il cherche réellement à comprendre, en ce cas, il faut au moins établir un début de dialogue.
    Si j'avais à réaliser une telle fonction (d'ailleurs l'idée n'est pas mauvaise, ça doit être amusant), je commencerais par imposer une valeur approchée.
    Autre réponse que j'aurais pu donner c'est de calculer (papier crayon) la valeur de S=somme(...), établir la relation qui minimise cette fonction. On arrive à un système de 4 équations, là on peut utiliser une fonction toute faite pour résoudre le système.
    En fait, il a choisi la dernière méthode : le faire faire par un machine et demander sur quel bouton il doit appuyer pour que ça marche. Je ne participe pas aux forum pour répondre à ce type de question.
    Ca m'intéresserait tout de même d'avoir une traduction de "fit". Je crois que ce terme est utilisé au bridge.

  21. #20
    PA5CAL

    Re : Fit courbe

    Bonjour
    Citation Envoyé par Dlzlogic Voir le message
    Ca m'intéresserait tout de même d'avoir une traduction de "fit". Je crois que ce terme est utilisé au bridge.
    En anglais « to fit » = aller bien, convenir ; et « to fit together » = s'emboîter.
    Dernière modification par PA5CAL ; 05/09/2012 à 11h57.

  22. #21
    Dlzlogic

    Re : Fit courbe

    Bonjour,
    Je viens justement refermer mon dictionnaire sur ce mot. C'est un article très long sut ua mot qui veut (presque) tout dire, tant que ça dérive de "bien".
    Quand je demandais une traduction, je me suis mal exprimé, je voulais dire "quel sens on lui donne quand on 'fit' des données".
    Bien-sur je sais bien qu'il s'agit d'ajustement de courbe, mais pourquoi pas utiliser "ajustement" ?

  23. #22
    PA5CAL

    Re : Fit courbe

    ... Parce que les outils qui font ces ajustements sont en langue anglo-américaine, et qu'en France on a une foutue manie d'éviter d'utiliser des mots français qui vont bien dès qu'on emploie des termes techniques.

  24. #23
    Dlzlogic

    Re : Fit courbe

    Citation Envoyé par PA5CAL Voir le message
    ... Parce que les outils qui font ces ajustements sont en langue anglo-américaine, et qu'en France on a une foutue manie d'éviter d'utiliser des mots français qui vont bien dès qu'on emploie des termes techniques.
    Je pense que dans le cas présent si notre ami questionneur avait utilisé le terme ajustement, il y aurait déjà eu un début compréhension de ce qu'il voulait ou devait faire.

  25. #24
    lou_ibmix_xi

    Re : Fit courbe

    Pour répondre à la "polémique" de l'utilisation du terme "fit". Je suis assez réactionnaire pour ce qui est de l'utilisation de la langue française lorsque l'on parle français: j'utilise dysfonctionnement à la place de bug, mémoire tampon à la place de buffer, etc... Malheureusement, mais peut-être paceque n'est pas directement mon domaine, j'avoue que pour décrire clairement et succinctement le concept de "trouver la fonction paramétrée qui colle au mieux à un jeu de donnés expérimentales", je n'ai pas d'autre choix sous la main que "fit", mais si vous avez un terme français, je suis prenneur...

  26. #25
    PA5CAL

    Re : Fit courbe

    Par chez moi on utilise le mot français « régression ».

  27. #26
    Dlzlogic

    Re : Fit courbe

    Je vais faire une petite digression hors sujet.
    J'utilise les régressions et ajustements (ça fait 2 termes synonymes) depuis le début des années 80. Les premières calculatrices programmables permettaient cela.
    Comme, c'est un outil utile, j'ai toujours prévu cela dans mes développements.
    A en croire ce qu'on lit sur les forum, on redécouvre cela depuis à peu près 5 ans. Il semble qu'on ne sache pas très bien ni pourquoi, ni comment, mais c'est comme ça.
    Ce que l'on voit utiliser se limite à des données à 2 variables, X et Y, par exemple le présent sujet.
    Il y a eu quelque temps une question où le problème se ramenait à un ajustement à 3 variables. J'ai pas vu beaucoup de réponses (c'était pas sur ce forum-ci).
    On peut étendre le problème à plusieurs variables. J'ai vu un peu de documentation, mais rien de vraiment passionnant.
    Donc, je me pose la question, parle-t-on des régressions parce qu'il faut bien mettre quelque-chose dans les programmes, ou pour une autre raison.
    Pardon pour le hors sujet.

  28. #27
    PA5CAL

    Re : Fit courbe

    Citation Envoyé par Dlzlogic Voir le message
    Donc, je me pose la question, parle-t-on des régressions parce qu'il faut bien mettre quelque-chose dans les programmes, ou pour une autre raison.
    Si par « programme » tu penses aux programmes scolaires, alors je ne saurais dire. Si tu parles des librairies logicielles ou des outils génériques, je dirais que ça pourrait avoir une utilité dans certains cas, et que ça ne mange pas de pain de pouvoir en disposer.

    Par contre, dans mon travail, j'ai été amené à implémenter des algorithmes de régression non linéaire à plusieurs milliers de variables, et c'était bien plus qu'utile, puisqu'ils constituaient le moteur de résolution d'outils logiciels qui répondaient le plus souvent à la principale problématique du métier de celui qui l'utilisait. Là, pour le coup, la nécessité absolue me semble être une bonne raison.
    Dernière modification par PA5CAL ; 05/09/2012 à 13h54.

  29. #28
    Dlzlogic

    Re : Fit courbe

    Oui, par "programme", j'entendais effectivement programme scolaire.
    Plusieurs milliers de variables, ça me parait beaucoup.
    Moi, je me suis limité à 16, je trouve que c'est déjà pas mal.
    Bien sûr, par variable j'entends les variables x tq
    Y = F(x1, x2, x3, ... xi, ... xn) ici n variables.

  30. #29
    invite81027df7

    Re : Fit courbe

    Bonjour,

    J'ai réussi à résoudre mon probléme hier soir. Non Dlzlogic je ne suis pas un éléve de 5iéme qui est entrain de demander qu'on lui fasse un exo de TD, il semblerai que cette suspicion soit assez récurrente sur ce forum, mais bon c'est compréhensible. J'ai trés bien compris ce que je voulais et les 3/4 des questions que vous me posiez sont "inutiles". Ma solution est trés proche du code Matlab que j'ai posté dans mon premier message avec quelques corrections semblablent à celles données par lou_ibmix_ix. Et effectivement pour que le programme donne un résultat correct il faut que l'initialisation (vecteur a0) soit relativement proche des valeurs attendues mais aussi afin que la convergence soit assez rapide.

  31. #30
    Dlzlogic

    Re : Fit courbe

    Oui, merci pour le retour.
    Il faut tout de même savoir que l'on ne répond pas de la même façon à un étudiant qui cherche quelqu'un pour faire son exo à sa place, un étudiant que cherche à comprendre et à progresser, et un professionnel qui a un problème à résoudre, mais se fiche pas mal des origines de la méthode.
    Tant que je ne connais pas le profil de mon interlocuteur, je suis incapable de répondre. Donc je pose des questions, ou alors je vais voir ailleurs.
    il semblerai que cette suspicion soit assez récurrente sur ce forum
    Ce n'est une suspicion, mais une attitude tout à fait normale.

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Fit d'une courbe C(V)
    Par invite39bf60c5 dans le forum Mathématiques du supérieur
    Réponses: 0
    Dernier message: 12/05/2011, 18h14
  2. Fit Gaussien 2D
    Par lignux dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 10/03/2011, 09h23
  3. GNUplot, fit
    Par invitebfc27f32 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 11/03/2010, 17h14
  4. [exo] fit d'une courbe avec une gaussienne sous Matlab
    Par invite6632c62e dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 16/06/2009, 20h59