Matlab - Demander à l'utilisateur d'entrer fonction.
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Matlab - Demander à l'utilisateur d'entrer fonction.



  1. #1
    invite1e3347dc

    Question Matlab - 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
    invite1e3347dc

    Re : Matlab - Demander à l'utilisateur d'entrer fonction.

    Bonjour,

    Personne pour m'aider? J'aurais vraiment besoin d'aide, même celle la plus minime m'aidera beaucoup.

    Merci,
    jeanpierre691

  3. #3
    invite501e8040

    Re : Matlab - Demander à l'utilisateur d'entrer fonction.

    Pour les dérivées partielles de ce que j’ai vu sur google il faut faire appel à la "Symblic Math Toolbox", il faut aller dans l’aide de Matlab et voir si elle est installée et ensuite lire l’aide. De mémoire on déclare des variables symboliques avec syms a b x y z ... et ensuite on peut construire les fonctions et faire plein de choses avec: dériver, simplifier, tester pour des valeurs précises,...

    Concernant la première question, c’est beaucoup plus délicat car il faut imposer à l’utilisateur de rentrer une fonction correcte de seulement 2 variables. A moins de concevoir un parseur spécifique je ne vois pas comment faire, on pourrait laisser Matlab tester l’instruction mais c’est dangereux et pourrait ne pas terminer. Utiliser les expression régulières ne permettrait pas forcement d’avoir une fonction correcte. Faut soit faire confiance à l’utilisateur, soit le forcer à utiliser la syntaxe que l’on veut (interface graphique permettant de construire la fonction, ou bien si c’est juste un polynôme on peut demander une série de 3 chiffres pour le coeff et les degrés des 2 variables, ...)
    Gérer les entrées des utilisateurs c’est toujours difficile.

    Maintenant il faudrait plutôt poser ces questions dans un forum d’info ou de Matlab car ce n’est pas vraiment des Maths.

  4. #4
    invite1e3347dc

    Re : Matlab - Demander à l'utilisateur d'entrer fonction.

    En fait l'option avec le syms, je la connais déjà. Comme j'ai dit, en faisant des recherches sur le net, j'ai trouvé une solution, mais seulement pour les version récentes de Matlab et c'est la solution dont vous me parlez.

    Je suis venu posez ma question ici car j'ai remarqué qu'il y avait bien des questions concernant Matlab sur ce forum, en l’occurrence ici. J'espérais donc avoir de l'aide en venant poser ma question ici. Je vais alors essayer avec d'autres forum voir.

    Merci,
    jeanpierre691

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

    Re : Matlab - Demander à l'utilisateur d'entrer fonction.

    En fait l'option avec le syms, je la connais déjà. Comme j'ai dit, en faisant des recherches sur le net, j'ai trouvé une solution, mais seulement pour les version récentes de Matlab et c'est la solution dont vous me parlez.
    Il fallait le dire que c'était avec le syms, par contre ça vient de la "Symblic Math Toolbox" et si ce n'est pas installé avec votre Matlab alors vous ne pourrez en effet pas l'utiliser, mais ça n'a rien à voir avec la version de Matlab, c'est une sorte de module supplémentaire.

  7. #6
    invite6c250b59

    Re : Matlab - Demander à l'utilisateur d'entrer fonction.

    Citation Envoyé par jeanpierre691 Voir le message
    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!!
    Une solution serait de demander à l'utilisateur un nom de *.m contenant la fonction d'intérêt. Après tu l'ouvres en texte, tu vérifies qu'à la première ligne le nombre de variable correspond à ce que tu veux, et voilà. Un petit exemple délicieusement auto-référentiel ci-dessous.

    Citation Envoyé par code
    fid=fopen('fgetl.m');
    while 1
    tline = fgetl(fid);
    if ~ischar(tline), break, end
    disp(tline)
    end
    fclose(fid);
    Citation Envoyé par output
    function tline = fgetl(fid)
    %FGETL Read line from file, discard newline character.
    % TLINE = FGETL(FID) returns the next line of a file associated with file
    % identifier FID as a MATLAB string. The line terminator is NOT
    % included. Use FGETS to get the next line with the line terminator
    % INCLUDED. If just an end-of-file is encountered, -1 is returned.
    %
    % If an error occurs while reading from the file, FGETL returns an empty
    % string. Use FERROR to determine the nature of the error.
    %
    % MATLAB reads characters using the encoding scheme associated with the
    % file. See FOPEN for more information.
    %
    % FGETL is intended for use with files that contain newline characters.
    % Given a file with no newline characters, FGETL may take a long time to
    % execute.
    %
    % Example
    % fid=fopen('fgetl.m');
    % while 1
    % tline = fgetl(fid);
    % if ~ischar(tline), break, end
    % disp(tline)
    % end
    % fclose(fid);
    %
    % See also FGETS, FOPEN, FERROR.
    % Copyright 1984-2007 The MathWorks, Inc.
    % $Revision: 5.15.4.7 $ $Date: 2007/12/06 13:29:57 $
    %
    try
    [tline,lt] = fgets(fid);
    tline = tline(1:end-length(lt));
    if isempty(tline)
    tline = '';
    end
    catch exception
    if nargin ~= 1
    error (nargchk(1,1,nargin,'struct'))
    end
    throw(exception);
    end

Discussions similaires

  1. Fonction de transfert - MATLAB
    Par invite7e6024b8 dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 08/12/2010, 20h25
  2. Créer une interface entre l'utilisateur et matlab
    Par invitede8302a1 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 13/04/2010, 16h39
  3. Comment insérer une fonction Matlab dans les paramètres d'entrée d'une autre fonction ??
    Par inviteac36b108 dans le forum Mathématiques du supérieur
    Réponses: 3
    Dernier message: 04/01/2010, 08h16
  4. mex fonction matlab/c
    Par invite8ff54149 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 18/05/2006, 14h48
  5. [Matlab] Fonction Filter
    Par inviteaf2e78df dans le forum Logiciel - Software - Open Source
    Réponses: 0
    Dernier message: 07/04/2006, 11h46