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

MATLAB Discussion :

valeur limite d'une fonction


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Points : 26
    Points
    26
    Par défaut valeur limite d'une fonction
    Bonjour,
    J'ai une question et j'ai besoin svp de votre aide.
    J'ai une courbe et je veux déterminer les coordonnées du point ou la fonction atteint 95% de sa valeur finale ( la valeur ou la fonction devient constante).

    est ce que je peux implémenter par matlab un tel problème.
    pour être franche j'en ai aucune idée comment pourrais je faire ça.

    merci

  2. #2
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 107
    Points
    107
    Par défaut
    Salut,
    donc tu as un vecteur x et un vecteur y=f(x) qui tend vers une valeur contante.
    Tu peux peut-être procéder ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    l=find(y==0.95*y(end));
    Les coordonnées de ton point sont donc (x(l);y(l))

  3. #3
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Points : 26
    Points
    26
    Par défaut
    merci pour votre idée.
    est ce qu'on ne peut pas l'indiquer dans la figure: je trace f(x) et sur la même
    figure indiqué ce point.
    Est ce possible ça en matlab?

  4. #4
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 107
    Points
    107
    Par défaut
    Si, tu peux le faire, c'est même très facile.
    Tu m'as l'air de débuter en matlab, faudrait peut être que tu lises quelques tutoriels !!
    Je t'aide tout de même (même si ce n'est pas dans la politique du forum de 'pondre' les réponses!):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    plot(x,y,'b',x(l),y(l),'ro')
    La courbe apparaît en bleu et le point en rouge!!

  5. #5
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Points : 26
    Points
    26
    Par défaut
    merci beaucoup pour ton aide.
    je tout à fait débutante en matlab.
    mais ce n'est pas ce que je cherche, j'ai mal exprimé ma question:la fonction tend à atteindre une valeur constante, je veux limiter la zone sur laquelle ou elle va devenir constante par deux axes par exemple verticales ( je veux le faire grahiquement).

    merci une autre fois.

  6. #6
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Citation Envoyé par zizo08 Voir le message
    je veux le faire grahiquement
    Les images étant plus parlantes que les mots, si tu nous faisais justement une image de ce que tu veux obtenir ?
    Parce que personnellement je n'ai rien compris à ce que tu veux.

    Ton problème de départ (déterminer les coordonnées (x,y) telles que f(x,y)=95% de f(xfin,yfin)) est purement algorithmique.
    Règles du Forum

    Adepte de la maïeutique

  7. #7
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Points : 26
    Points
    26
    Par défaut
    vous avez raison.
    je veux déterminer le point algorithmiquement et en suite encadé la zone 'constatnte' qui commence à partir de ce point par de axes verticales.

    espérons que je viens d'exprimer cette fois ci bien momn problème.

  8. #8
    Expert éminent sénior
    Avatar de Caro-Line
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    9 458
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 9 458
    Points : 14 830
    Points
    14 830
    Par défaut
    Citation Envoyé par zizo08 Voir le message
    je veux déterminer le point algorithmiquement
    As-tu essayé la méthode de ricololo ?
    (bien qu'à mon avis il faille surement rajouter un petit epsilon car il se peut qu'on n'ait jamais exactement la valeur, voir la Pourquoi 0.3-0.2-0.1 est-il différent de 0 ? vers la fin)

    Citation Envoyé par zizo08 Voir le message
    et en suite encadé la zone 'constatnte' qui commence à partir de ce point par de axes verticales.
    Tu ne veux vraiment pas faire un dessin (même tout moche sous Paint), je t'assure que ce serait plus clair...
    De plus il doit y avoir un problème de vocabulaire car ta courbe est déjà dans des axes et tu ne peux pas avoir des axes dans des axes
    Règles du Forum

    Adepte de la maïeutique

  9. #9
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 107
    Points
    107
    Par défaut
    Tentative de solution à ton problème (pas sûr de l'avoir bien compris):
    si on considère la fonction f(x)=100*(1-exp(-x/10)) qui tend vers 100 en plus l'infini (et déjà bien avant!!):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    x=[0:.01:100];
    y=100*(1-exp(-x/10));
    l=find(y<.95001*y(end) & y>.94999*y(end));
    plot(x,y) % en bleu
    plot([x(l),x(l)],[0,y(l)],'r') % en rouge
    c'est ce dont tu as besoin? si c'est le cas, il existe surement une façon plus élégante de tracer cet 'axe' vertical!

  10. #10
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Points : 26
    Points
    26
    Par défaut
    merci beaucoup ricololo.
    c'est bon maintenent ça mrache.

    grand merci.
    bonne journée

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 880
    Points
    52 880
    Par défaut
    Citation Envoyé par ricololo Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    x=[0:.01:100];
    y=100*(1-exp(-x/10));
    l=find(y<.95001*y(end) & y>.94999*y(end));
    plot(x,y) % en bleu
    plot([x(l),x(l)],[0,y(l)],'r') % en rouge
    Et encore une fois, le FIND ne sert à rien ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    x=[0:.01:100];
    y=100*(1-exp(-x/10));
    l=y<.95001*y(end) & y>.94999*y(end);
    plot(x,y) % en bleu
    hold on
    plot([x(l),x(l)],[0,y(l)],'r') % en rouge
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  12. #12
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 107
    Points
    107
    Par défaut
    BONJOUR Mr Dut,
    excuse moi pour cette absurde FIND!

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 880
    Points
    52 880
    Par défaut
    Citation Envoyé par ricololo Voir le message
    Mr Dut,
    Mr Dut... c'est nouveau ça
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  14. #14
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 880
    Points
    52 880
    Par défaut
    Mr Dut est de retour... avec la fonction FIND

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    figure
    x=0:.01:100;
    y=100*(1-exp(-x/10));
    idx = find((y-95)>=0,1,'first');
    plot(x,y) % en bleu
    hold on
    plot([x(idx),x(idx)],[0,y(idx)],'r') % en rouge
    D'ailleurs si on compare les deux codes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >> y(idx)
     
    ans =
     
       95.0013
     
    >> y(l)
     
    ans =
     
       94.9963
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  15. #15
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup Mr.Dut.
    votre code est parfait.

    meri

  16. #16
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Points : 26
    Points
    26
    Par défaut
    bonjour,

    je vais poser une autre question dans le même context.
    si j'ai un vecteur x et je vais le dessiner plot(x), est ce que je peux utiliser la même stratégie pour obtenir sa valeur limite càd ja fais comme suit:*
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    a=0:12:840;
     
    idx = find((x-95)>=0,1,'first');
    %
    plot(a,x,'r')
    hold on
    plot([a(idx),a(idx)],[0,x(idx)],'r')
    merci

  17. #17
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    157
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 157
    Points : 107
    Points
    107
    Par défaut
    Salut,
    bien sûr! Ce qu'on t'as proposé avec des vaecteurs x et y, tu peux le faire avec des vecteurs a et x!!
    C'est bien ta question? sinon, j'ai mal compris.

  18. #18
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Points : 26
    Points
    26
    Par défaut

    même si x est construit à partir d'une boucle?
    je pose cette question parce que je n'ai pas eu le bon résultat que je cherche.
    si joit la figure de vecteur x dont je parle et je veux déterminer sa valeur limite.
    Nom : exemple.jpg
Affichages : 70
Taille : 16,1 Ko

    merci pour l'aide

  19. #19
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 302
    Points : 52 880
    Points
    52 880
    Par défaut
    Tu devrais vraiment lire ce tutoriel pour te familiariser avec les matrices : Introduction à la gestion des matrices
    Ingénieur indépendant en mécatronique - Conseil, conception et formation
    • Conception mécanique (Autodesk Fusion 360)
    • Impression 3D (Ultimaker)
    • Développement informatique (Python, MATLAB, C)
    • Programmation de microcontrôleur (Microchip PIC, ESP32, Raspberry Pi, Arduino…)

    « J'étais le meilleur ami que le vieux Jim avait au monde. Il fallait choisir. J'ai réfléchi un moment, puis je me suis dit : "Tant pis ! J'irai en enfer" » (Saint Huck)

  20. #20
    Nouveau membre du Club
    Inscrit en
    Octobre 2008
    Messages
    58
    Détails du profil
    Informations forums :
    Inscription : Octobre 2008
    Messages : 58
    Points : 26
    Points
    26
    Par défaut
    j'arrive à comprendre le problème.
    la valeur de idx est un réel et si je fais x(idx), le point ne s'affiche pas car idx doit être un entier ou une valeur logique.
    que dois je faire?

    merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 10
    Dernier message: 30/06/2006, 17h41
  2. [SQL] php et recuperation d'une valeur renvoyée par une fonction sql
    Par highman dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 21/06/2006, 15h42
  3. comment recuperer une valeur retournée d'une fonction javascript?
    Par megapacman dans le forum Général JavaScript
    Réponses: 11
    Dernier message: 13/06/2006, 14h53
  4. Réponses: 5
    Dernier message: 13/03/2006, 15h21
  5. valeur retournée d'une fonction
    Par jokos2000 dans le forum Oracle
    Réponses: 8
    Dernier message: 29/06/2005, 12h21

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