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 :

Créer une fonction f(x) définit pour x réel, mais le logiciel croit que x doit être entier


Sujet :

MATLAB

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2015
    Messages : 25
    Points : 22
    Points
    22
    Par défaut Créer une fonction f(x) définit pour x réel, mais le logiciel croit que x doit être entier
    Bonjour,

    J'ai trois simples lignes de code qui ne fonctionnent pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x=linspace(0,1,100);
    f=r.*x.*(1-x);
    a=f(0.1)
    J'obtient ce message d'erreur :
    Attempted to access f(0.1); index must be a positive integer or logical.

    Error in Test (line 3)
    a=f(0.1)
    Il a l'air de croire que la fonction f(x) est définit pour x entier, alors qu'elle devrait être définit pour x réel appartenant à l'intervalle [0;1].

    Merci d'avance pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Bonjour,

    Ce n'est pas comme cela que l'on crée une fonction sur matlab. Je t'invite à faire un petit tour sur la FAQ au sujet de l'@ pour apprendre à créer une fonction.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2015
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    Ah ok merci. Alors ajouter @(x) fait effectivement marcher la fonction, mais malheuresement après il refuse de ploter la fonction:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    r=0.5;
    x=linspace(0,1,100);
    f = @(x) r.*x.*(1-x);
    a=f(0.1);
    plot(x,f)
    Il me retourne cette erreur :
    Error using plot
    Conversion to double from function_handle is not possible.

    Error in Test (line 5)
    plot(x,f)
    Je comprend même pas ce que ça veut dire.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    A ma connaissance, tu ne peux pas directement tracer une fonction comme tu essaies de le faire. Tu traces des points avec des coordonnées.

    voici ce que tu devrais à mon avis faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    r=0.5;
    x=linspace(0,1,100);
    f = @(x) r.*x.*(1-x);
    % a=f(0.1);
    monIntervalle = 0:0.01:1;
    mesValeurs = f(monIntervalle);
    plot(monIntervalle,mesValeurs)

  5. #5
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,
    Citation Envoyé par Gooby Voir le message
    A ma connaissance, tu ne peux pas directement tracer une fonction comme tu essaies de le faire.
    C'est possible avec fplot par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    r=0.5;
    f = @(x) r.*x.*(1-x);
    fplot(f,[0 1])
    Mais c'est mieux d'utiliser plot et de savoir exactement ce que l'on fait!

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Août 2014
    Messages
    1 295
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Août 2014
    Messages : 1 295
    Points : 2 385
    Points
    2 385
    Par défaut
    Merci magelan pour la précision! En réalité je me doutais que c'était possible, mais n'en ayant jamais eu l'utilité, je n'ai jamais cherché à le faire.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2015
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2015
    Messages : 25
    Points : 22
    Points
    22
    Par défaut
    Merci beaucoup pour vos réponses. Le problème est résolu.

  8. #8
    Modérateur
    Avatar de le fab
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2005
    Messages
    1 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 883
    Points : 3 431
    Points
    3 431
    Par défaut
    Citation Envoyé par magelan Voir le message
    Bonjour,

    C'est possible avec fplot par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    r=0.5;
    f = @(x) r.*x.*(1-x);
    fplot(f,[0 1])
    Mais c'est mieux d'utiliser plot et de savoir exactement ce que l'on fait!
    il y a également la fonction ezplot ("Easy-to-use function plotte")

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

Discussions similaires

  1. Créer une fonction pour le max de jours d'un mois..
    Par kim mading dans le forum WinDev
    Réponses: 4
    Dernier message: 05/10/2012, 13h51
  2. Réponses: 9
    Dernier message: 20/09/2008, 21h56
  3. Besoin d'aide pour créer une fonction
    Par xavxx58 dans le forum Prolog
    Réponses: 13
    Dernier message: 14/09/2008, 13h03
  4. Créer une fonction pour remplacer des caractères
    Par virtuadrack dans le forum C++
    Réponses: 4
    Dernier message: 11/09/2008, 14h52
  5. Créer une fonction pour un update avec phppgadmin
    Par Peewee766 dans le forum PostgreSQL
    Réponses: 0
    Dernier message: 19/06/2008, 11h56

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