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 :

fonction local et fonction global


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 53
    Points : 36
    Points
    36
    Par défaut fonction local et fonction global
    bonjour ,
    voilà mon programme sous matlab qui me permet de trouver le zéro de la fonction (par ex) f(x)=x^3-2*x-5 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    function x=racine(a,b)
    % calcul la racine de f(x) définie ci-après sur [a,b]
    fa=f(a); fb=f(b); x=(a+b)/2;
    if (fa*fb>0) x=-Inf; return; end;
    while (b-a)>eps*x
      x=(a+b)/2; fx=f(x);
      if(sign(fx)==sign(fa))
       a=x; fa=fx;
      else
       b=x; fb=fx;
      end;
    end;
    % definition de f(x) (fonction locale)
    function y=f(x)
    y=x^3-2*x-5;
    ce programme je l'ai ecris sous forme d'un script ,maintenant je cherche à definir la fonction ailleurs du script.
    Alors est que c'est faisable sous matlab??
    Merci par avance

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 53
    Points : 36
    Points
    36
    Par défaut
    En d'autres termes je veux savoir comment je peux modifier d'instructions dans des m-file sans les ouvrir comme par ex changer les y=f(x) (dans le cas de mon programme) en cas de besoin sans aller chercher dans le script

  3. #3
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    bonjour
    ce programme je l'ai ecris sous forme d'un script
    Pas vraiment puisque tu lui as donné un nom de fonction donc tu l'as écrit comme une fonction (un script n'a pas d'arguments d'entrée ni de sortie).
    Si tu veux accéder à la définition de ta fonction f de n'importe où il faut que tu la définisses dans un fichier séparé auquel tu donneras le nom de ta fonction (autrement dit "f.m").
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    function y=f(x) % première fonction de ton fichier
    y=x^3-2*x-5;

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 53
    Points : 36
    Points
    36
    Par défaut
    pardon j'ai pas bien compris comment faire" je suis encore débutante avec matlab"

  5. #5
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    tu crées un nouveau fichier 'f.m' si f est le nom de ta fonction que tu enregistres dans ton répertoire courant ou dans un répertoire appartenant au path de Matlab.
    Dans ce fichier la ligne
    doit être la première ligne de code (c'est à dire la première ligne non commentée).
    ensuite tu l'appelles de n'importe quel fichier que tu exécutes
    edit : je ne suis pas sûr que c'est bien ce que tu veux mais du moins tu pourras modifier la fonction en modifiant seulement ce fichier. Sinon tu as toujours la solution de rentrer la fonction f(x) comme argument (une chaîne de caractère) et d'utiliser la fonction EVAL
    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    x=0:10;
    fonction='2*x';
    y=eval(fonction)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function x=racine(a,b,fonction)
    % calcul la racine de f(x) définie ci-après sur [a,b]
    fa=f(a,fonction); fb=f(b,fonction); x=(a+b)/2;
    if (fa*fb>0) x=-Inf; return; end;
    while (b-a)>eps*x
      x=(a+b)/2; fx=f(x,fonction);
      if(sign(fx)==sign(fa))
       a=x; fa=fx;
      else
       b=x; fb=fx;
      end;
    end;
    % definition de f(x) (fonction locale)
    function y=f(x,fonction)
    y=eval(fonction);
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fonction='x^3-2*x-5';
    racine(0,20,fonction)

  6. #6
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 53
    Points : 36
    Points
    36
    Par défaut
    Merciiiiiiiiiiiiiii c'est ça ce que je cherche exactement
    Mercii bien et bonne continuation ^^

  7. #7
    Membre éclairé Avatar de tubaas
    Homme Profil pro
    Acousticien
    Inscrit en
    Août 2009
    Messages
    641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Acousticien
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2009
    Messages : 641
    Points : 825
    Points
    825
    Par défaut
    salut
    en fait si tu te limites à la recherches de racines d'un polynômes mieux vaut utiliser la fonction polyval et prendre la suite de coefficients du polynôme (qui le représente totalement) comme argument.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    function x=racine(a,b,pol)
    % calcul la racine de f(x) définie ci-après sur [a,b]
    fa=f(a,pol); fb=f(b,pol); x=(a+b)/2;
    if (fa*fb>0) x=-Inf; return; end;
    while (b-a)>eps*x
      x=(a+b)/2; fx=f(x,pol);
      if(sign(fx)==sign(fa))
       a=x; fa=fx;
      else
       b=x; fb=fx;
      end;
    end;
    % definition de f(x) (fonction locale)
    function y=f(x,pol)
    y=polyval(pol,x);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    pol=[1 0 -2 -5];
    racine(0,4,pol)
    roots(pol)
    C'est plus propre car il est toujours risqué d'évaluer une entrée utilisateur. Ici tu peux éventuellement tester que le troisième argument est bien un vecteur.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Novembre 2010
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Novembre 2010
    Messages : 53
    Points : 36
    Points
    36
    Par défaut
    Merci pour l'intérêt que vous portez à mon sujet, bon je préfère travailler avec le premier code que vous m'avez proposé car ma fonction peut etre exponentielle ,polynomialle ...ou autre .

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

Discussions similaires

  1. portée globale/locale dans fonction
    Par senvedgi dans le forum Débuter
    Réponses: 15
    Dernier message: 17/09/2011, 21h02
  2. Portée des noms des arguments de fonctions : locale ou globale?
    Par amundsen dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/12/2008, 13h01
  3. fonction locale à une méthode d'une classe
    Par Sahara dans le forum C++
    Réponses: 2
    Dernier message: 26/11/2006, 14h31
  4. Definition d'une fonction locale
    Par franc82 dans le forum C++
    Réponses: 1
    Dernier message: 09/11/2006, 22h07
  5. Perdu la fonction local serveur
    Par Cambon dans le forum Installation
    Réponses: 3
    Dernier message: 11/11/2004, 20h34

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