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 :

[fzero] Erreur utilisation fonction


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut [fzero] Erreur utilisation fonction
    Bonjour à tous,
    je voudrais utliser la fonction [fzero] pour trouver la racine d'une certaine fonction, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    syms Ts lambda 
    % Constantes
    c = 3e8;
    h = 6.6262e-34;
    k = 1.38e-23;
    % 
    L = 1/(lambda^5*(exp(h*c/(lambda*k*Ts))-1));
    %
    dL = @(Ts) diff(L,'lambda');
    % 
    lambda = 600e-9;
    % 
    Ts =  fzero(dL, 5000);
    Dans un premier temps je veux calculer la dérivée partielle de L (fonction de lambda et de Ts) par rapport à la variable lambda. J'obtiens donc dL et je veux ensuite grâce à [fzero] calculer, pour une valeur de lambda de 600e-9 fixée, la racine de ma fonction en partant d'une valeur arbitraire 5000. Ma variable est donc Ts ici.A l'éxécution, l'erreur suivante apparait :
    ??? Undefined function or method 'isfinite' for input arguments of type 'sym'.
    
    Error in ==> fzero at 317
        elseif ~isfinite(fx) || ~isreal(fx)
    
    Error in ==> Untitled4 at 13
    Ts =  fzero(dL, 5000);
    
    J'ai eu beau chercher pendant de longues heures, et essayer d'utiliser des fonctions comme [eval] ou [subs] je ne vois pas où est mon erreur.

    Merci d'avance pour votre réponse

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Ton problème vient du fait que la fonction FSOLVE n'est pas faite pour des expressions symboliques mais pour des fonctions "normales".
    Si tu souhaites garder des expressions symboliques, tu peux regarder la fonction SOLVE, sinon tu peux créer (dans le même style que tu fait déjà) une fonction anonyme du style en évitant d'utiliser des variables symboliques.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonsoir Winjerome,
    je te remercie déjà pour m'avoir orienté dans ma recherche, néanmoins que ce soit par la première ou la deuxième méthode que tu me proposes j'obtiens toujours des erreurs, voici mon code :

    pour la transformation en fonction symbolique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    syms Ts lambda 
    % Constantes
    c = 3e8;
    h = 6.6262e-34;
    k = 1.38e-23;
    % 
    L = 1/(lambda^5*(exp(h*c/(lambda*k*Ts))-1));
    %
    dL =@(Ts,lambda)diff(L,'lambda');
    % 
    lambda = 600e-9;
    %
    Ts= fzero(dL,5000);
    j'obtiens toujours la même erreur
    ??? Undefined function or method 'isfinite' for input arguments of type 'sym'.
    
    Error in ==> fzero at 317
        elseif ~isfinite(fx) || ~isreal(fx)
    
    Error in ==> Untitled4 at 15
    Ts= fzero(dL,5000);
     
    et si j'utilise à la place solve :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    syms Ts lambda 
    % Constantes
    c = 3e8;
    h = 6.6262e-34;
    k = 1.38e-23;
    % 
    L = 1/(lambda^5*(exp(h*c/(lambda*k*Ts))-1));
    %
    dL =@(Ts)diff(L,'lambda');
    % 
    lambda = 600e-9;
    %
    Ts =  solve('dL=0');
    je n'ai pas d'erreurs mais dans la grille des variables (workspace) il n'y a aucune valeur attribuée à Ts, juste <1x1 sym>.
    Pourrais-tu m'expliquer?

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Esar001 Voir le message
    pour la transformation en fonction symbolique:
    Justement non PAS SYMBOLIQUE, tu peux t'aider si tu veux des variables symboliques pour avoir l'expression de la dérivée, mais la fonction passée à FSOLVE doit être numérique.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <s>syms Ts lambda </s>
    % Constantes
    c = 3e8;
    h = 6.6262e-34;
    k = 1.38e-23;
    % 
     
    dL = @(Ts,lambda) <expression de ta dérivée en fonction de c,h,k,Ts et lambda>;
     
    Ts= fzero(@(Ts) dL(Ts, 600e-9),5000);
    et si j'utilise à la place solve :
    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
    syms Ts lambda 
    % Constantes
    c = 3e8;
    h = 6.6262e-34;
    k = 1.38e-23;
    % 
    L = 1/(lambda^5*(exp(h*c/(lambda*k*Ts))-1));
    %
    dL = @(Ts)diff(L,'lambda');
    % 
    lambda = 600e-9;
    %
    Ts =  solve(subs(dL)); 
    % subs: pour substituer la valeur de lambda
    % Sans parenthèses: sinon tu résous seulement x = 0

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Ok, j'ai compris, merci beaucoup et bonne soirée

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

Discussions similaires

  1. [Débutant] [fzero] Erreur utilisation fonction
    Par rola123 dans le forum MATLAB
    Réponses: 9
    Dernier message: 23/12/2011, 12h15
  2. [Mail] erreur avec utilisation fonction mail
    Par taka10 dans le forum Langage
    Réponses: 7
    Dernier message: 12/07/2006, 16h19
  3. [Débutant] Aide utilisation fonctions :(
    Par trakiss dans le forum Débuter
    Réponses: 10
    Dernier message: 27/08/2004, 15h59
  4. Utilisation fonction définie dans un .Dll
    Par jeab. dans le forum Windows
    Réponses: 5
    Dernier message: 23/03/2004, 16h23
  5. [langage] erreurs utilisation tableaux 2 dimensions
    Par drosof dans le forum Langage
    Réponses: 11
    Dernier message: 01/07/2003, 11h44

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