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 :

Demander à l'utilisateur d'entrer fonction


Sujet :

MATLAB

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut Demander à l'utilisateur d'entrer fonction
    Bonjour,

    Permettez moi de solliciter votre aide.

    Je suis en train de créer un programme sous Matlab 7.10.0 et je me demandais s'il était possible de créer un fichier fonction demandant à l'utilisateur d'entrer n'importe qu'elle fonction de 2 variables du genre f(x,y). J'aimerais aussi vérifier que ce dernier entre bien une fonction de 2 variables, pas plus, pas moins. J'ai essayé avec la commande input, mais je n'y arrive pas car il accepte tout ce que je rentre même quand ce n'est pas une fonction!!

    J'ai pensé à d'abord demander à l'utilisateur d'entrer les deux variables de sa fonction et ensuite entrer la fonction. Ainsi je connais les deux variables que je pourrais par la suite utiliser pour le reste du programme par exemple pour vérifier clairement l'entré de la fonction afin d'éviter que l'utilisateur ne rentre n'importe quoi!

    Une fois ceci fait, j'aimerais savoir s'il est possible à ce moment là, connaissant les deux variables de la fonction ainsi que la fonction, de demander à matlab de dérivé cette fonction par rapport à chacune des deux variables? En gros lui demander de faire des dérivés partielles de la fonction! J'ai chercher un peu et je sais que ça peut se faire, mais seulement avec les récents update de matlab. Cependant je suis contraint d'utiliser matlab7.10.0 (R2010a) pour résoudre mon problème!

    Je vous serais très reconnaissant de bien vouloir m'aider.

    Cordiale salutations,
    jeanpierre691

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Ce que tu cherches à faire s'appelle du calcul symbolique.
    Sous MATLAB, il te faut la Symbolic Math Toolbox

    Pour le contrôle de la saisie par l'utilisateur, il n'y a pas vraiment de méthode robuste à 100%.

    On peut vérifier que la chaine de caractères saisie ne contient uniquement que les caractères pouvant être contenus dans une fonction ([0...9],+,-,*,/,(,),exp,log,abs...) tout en fixant le nom des deux variables (x,y). Mais cela ne relèvera les erreurs comme "x+)-(-+-y"

    On peut ensuite essayer d’évaluer la fonction saisie à l'aide de la fonction INLINE pour des couples de valeurs (x,y) arbitraire. Mais on ne sait rien sur le domaine de définition de la fonction.

    La dernière vérification consiste à tester la dérivabilité de la fonction avec la Symbolic Math Toolbox

    Il faut enfin toujours afficher clairement la fonction d'entrée avec les résultats pour que l'utilisateur puisse vérifier sa saisie.

  3. #3
    Nouveau candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Avril 2012
    Messages : 2
    Par défaut
    Bonjour,

    Parfait, c'est ce que j'avais vu aussi en fouillant un peu sur le net. Cependant je réalise un devoir dans lequel il m'est interdit d'utiliser syms et autre. En gros il faut entrer une fonction et après faire des itérations sur la fonction et sa dérivée. J'ai donc crée un fichier fonction dans lequel j'entre ma fonction, un dans lequel j'entre sa dérivée et enfin un dernier pour faire les itérations et autres calculs demandé. Le programme marche très bien, mais je voulais juste savoir s'il m'est possible de rendre mon programme plus performant en amenant l'utilisateur à entrer une fonction sans passé par le fichier fonction que j'ai crée. Apparemment c'est impossible.

    Sinon j'aurais une autre question. Est t'il possible d'empêcher mon programme de retourner des valeurs lorsqu'il est confronté à une erreur? C'est à dire, je dois par exemple calculé l'inverse d'une matrice, donc je vérifie d'abord si le det est nul, s'il est nul, j'affiche un message avec fprintf. Cependant étant donné que mon fichier fonction à une sortie V, je suis obligé d'écrire un message dans la sortie, comme par exemple : V='Erreur', pour que je n'ai pas d'erreur de matlab me disant : Output argument "R" (and maybe others) not assigned during call to 'dossier dans lequel j'ai enregistré le programme'. Donc est t'il possible de demander à matlab d'ignorer la sortie une fois que le message d'erreur dans le fprintf est affiché?

    Merci pour la présente réponse et j'espère la future.
    jeanpierre691

  4. #4
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    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 317
    Par défaut
    Citation Envoyé par jeanpierre691 Voir le message
    Apparemment c'est impossible.
    Ce n'est pas impossible.
    C'est simplement difficile d'arriver à une solution robuste.
    Il faut faire des concessions, contraindre l'utilisateur à un formalisme précis, et faire de nombreux tests.

    Citation Envoyé par jeanpierre691 Voir le message
    est t'il possible de demander à matlab d'ignorer la sortie une fois que le message d'erreur dans le fprintf est affiché?
    Il faut utiliser ERROR à la place de FPRINTF.

Discussions similaires

  1. Réponses: 2
    Dernier message: 30/04/2013, 13h23
  2. Réponses: 16
    Dernier message: 04/01/2011, 21h13
  3. demander à l'utilisateur de remplir les champs d'un objet.
    Par gregory.bts dans le forum Langage
    Réponses: 10
    Dernier message: 10/10/2006, 18h39
  4. [Tableaux] demande de code pour une fonction.php
    Par carmen256 dans le forum Langage
    Réponses: 4
    Dernier message: 21/01/2006, 17h22
  5. [VBA-E] récupérer des infos que l'on demande à l'utilisateur
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 14/12/2005, 10h14

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