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 :

Equation contentant une somme parametrée sur un vecteur (=une série) [Débutant]


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Equation contentant une somme parametrée sur un vecteur (=une série)
    Bonjour bonjour,

    Tout d'abord merci beaucoup à tous ceux qui vont répondre

    J'ai ici une équation à résoudre pour sigma, que je n'arrive plus à simplifier, où les xi sont des données d'un vecteur x (taille 100, donc j'ai pas vraiment envie de réécrire la formule à la main), et n est donné :
    Nom : dev.JPG
Affichages : 254
Taille : 11,9 Ko


    J'ai tenté d'utiliser solve:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    solve('b+sum(x.*exp(-x/b))/sum(exp(-x/b))=2', 'b')
    --> not a valid expression.
    malheureusement, il me semble qu'écrire dans autre chose qu'une expression la division par un nombre inconnu est impossible...

    Je suppose donc que solve n'est pas habilité à faire ce genre de calculs ? Y a-t-il une autre solution?

    Merci! (encore )

    (ma version matlab: 2011)

  2. #2
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    62
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2013
    Messages : 62
    Points : 61
    Points
    61
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    syms b
    solve(b+(sum(x.*exp(-x/b))/sum(exp(-x/b)))==2, b)
    Je te renvoie sur le liens du site mathworks spécifiant les paramètres de la fonction solve.
    http://nl.mathworks.com/help/symbolic/solve.html


    Mehdi

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    ça ne fonctionne pas non plus!

    Je me suis mal exprimé, j'ai essayé tout, avec les syms ou avec des guillements autour de mes équations, dans tout les cas ça ne fonctionne pas. Matlab me renvoie "is not a valid expression or equation."


    Est-ce que ce que vous m'avez envoyé fonctionne chez vous? c'est peut être un problème qui a été corrigé pour matlab 2014 mais ça ne fonctionne pas dans matlab 2011...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonsoir,

    Déjà, vu que tu souhaites utiliser les valeurs de ton vecteur x, oublie les guillemets sinon le 'x' n'a rien à voir avec celui déjà défini.

    Ceci fait, quelle erreur obtiens-tu sans avec ce que t'a fourni procrastination ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    syms b
    solve(b+(sum(x.*exp(-x/b))/sum(exp(-x/b)))==2, b)
    As-tu aussi pensé à la résoudre numériquement avec fzero ?

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonsoir!

    bon à savoir, pour les guillemets

    Voici les erreurs avec la solution de procrastination, désolée de ne l'avoir pas bien écrit:
    ??? Error using ==> char
    Conversion to char from logical is not possible.
    
    Error in ==> solve>getEqns at 189
       vc = char(v);
    
    Error in ==> solve at 67
    [eqns,vars] = getEqns(varargin{:});
    


    Sinon sur ton conseil j'ai utilisé fzero (pas bête!), mais ça me pose problème aussi:
    - le fait de devoir mettre un guess c'est pas top, mais ça c'est un détail
    - j'ai une fonction contenant un log, et la résolution de cette fonction avec fzero marche une fois sur cinq :/
    Error using ==> fzero at 318
    Function value at starting guess must be finite
    and real.
    
    voici la fonction à résoudre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function y = muSol(mu, sample,n,beta)
        sum1=sum(exp(-sample/beta));
        y = -beta*log(sum1/n)-mu;
    end
     
    %appelée par:
     mu=fzero(@muSol, 10, [], sample,n,beta);
    où sample est un vecteur, et n et beta des constantes.
    Est-ce que tu saurais pourquoi ce problème?
    (Je comprends si tu n'a pas envie de te pencher là-dessus, autant essayer d'utiliser plutot solve si c'est possible!)


    Merci beaucoup de vos réponses!

  6. #6
    Invité
    Invité(e)
    Par défaut
    Il me semble que sur les versions plus anciennes de MATLAB, il fallait rentrer une expression symbolique que l'on supposait nulle, donc ton cas on aurait donc :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    solve(b+(sum(x.*exp(-x/b))/sum(exp(-x/b)))-2, b)
    Pour ce qui est de fzero, sum1=sum(exp(-sample/beta)); doit être évalué à nul (ou tout du moins trop petit pour le type double). Ton log donne donc -Inf qui donne alors cette erreur.

  7. #7
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Novembre 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2014
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Eh bien oui aha, c'était bien seulement ça le problème!
    maintenant, ça fonctionne

    et pour le -Inf, je vais faire avec..

    Merci beaucoup!

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

Discussions similaires

  1. Réaliser une somme comme sur un défilement excel
    Par avyperez dans le forum Langage SQL
    Réponses: 4
    Dernier message: 11/03/2014, 15h20
  2. Réponses: 3
    Dernier message: 14/02/2013, 09h12
  3. [XL-2003] faire une somme que sur les colonnes visibles
    Par mimilll dans le forum Excel
    Réponses: 21
    Dernier message: 27/08/2009, 12h10
  4. faire une somme recursive sur 1 colonne sur 2 dates consecutives et l'afficher
    Par 461219 dans le forum Adaptive Server Enterprise
    Réponses: 12
    Dernier message: 24/11/2008, 16h09
  5. Réponses: 6
    Dernier message: 21/05/2006, 20h37

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