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.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  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)
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  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!
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  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.
    Si vous cherchez des réponses sur ce forum il faudra avant tout expliquer clairement votre problème et exposer la démarche que vous avez entreprise pour le résoudre. Fournissez une base de travail et de réflexion à vos interlocuteurs!

  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 882
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Isère (Rhône Alpes)

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 1 882
    Points : 3 432
    Points
    3 432
    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