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 solve


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Points : 34
    Points
    34
    Par défaut Fonction solve
    Bonjour à tous,

    J'écris donc en ce moment un programme en langage matlab, et j'aurais besoin de résoudre une équation. Pour cela j'utilise actuellement la fonction "fzero", or un problème majeur inhérent à cette dernière est qu'elle nécessite de connaitre à l'avance autour de quelle valeur on cherche notre zéro, ce qui n'est pas mon cas ici !!
    Je pensais donc passer à la fionction "solve", or avec celle-là, le problème vient du fait que j'utilise des paramètres dans mon équation, et les solutions qui apparaissent sont des solutions avec les paramètres, soit avec leur expression littérale et non numérique ! Comment pourrais-je garder mes paramètres tout en leur assignant une valeur pour les calculs. En gros, pour être clair rien ne vaut un petit exemple :

    Si j'écris cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    syms x ;
    a=sym(2);
    b=double(a);
    solve('b*x + 1')
    Matlab me renvoie :

    ans =
    
    -1/b
    Or, vous l'aurez maintenant compris, j'attendais -1/2...!!!!!!

    Si quelqu'un avait une solution pour un (voire les deux) de mes problèmes...!

    Merci par avance.

  2. #2
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Bonjour,

    il faut utiliser la fonction subs, avec ton exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    solve(subs('b*x + 1','b',double(a)))
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    Avant tout, merci beaucoup pour la réponse, en effet cela fonctionne très bien !
    En revanche, j'obtiens plusieurs solutions, or je ne voudrais garder que les solutions réelles et positives. Pour cela j'impose donc ma solution comme telle :

    Or, le paramètre semble bien fonctionner alors que le non. J'ai l'impression que cela est dû au fait que la fonction que je résous comprend des fonctions trigos, car quand je fais la même simulation avec de "simples" fonctions (style polynomiales) le paramètre est bien pris en compte...???!!

    Merci par avance.

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Nulle part dans la doc il est indiqué que l'on peut passer plusieurs paramètres (réel, positif,...) à syms.

    De plus :
    est équivalent à :
    et d'après la doc :
    sym('x', 'positive') creates the symbolic variable x and assumes that x is real and positive.
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Points : 34
    Points
    34
    Par défaut
    En effet, implique bien réel et positif à la fois...!
    En revanche, je ne m'explique toujours pas pourquoi ce n'est pas pris en compte avec des fonctions trigos...?

    Merci encore.

  6. #6
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Aurais-tu un exemple?
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Points : 34
    Points
    34
    Par défaut
    Oui biensur, mais ce n'est rien d'exceptionnel. En gros, en imposant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    x = sym('x','positive')
    et en prenant comme fonction :

    j'obtiens 2 solutions, positive et négative.
    Alors qu'avec la fonction :

    j'ai bien la solution négative filtrée...

  8. #8
    Modérateur

    Homme Profil pro
    Ingénieur en calculs scientifiques
    Inscrit en
    Août 2007
    Messages
    4 639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Ingénieur en calculs scientifiques

    Informations forums :
    Inscription : Août 2007
    Messages : 4 639
    Points : 7 614
    Points
    7 614
    Par défaut
    Effectivement, et je ne vois pas comment faire à part tester le signe des solutions...
    Pour une bonne utilisation des balises code c'est ici!
    Petit guide du voyageur MATLABien : Le forum La faq Les tutoriels Les sources


    La nature est un livre écrit en langage mathématique. Galilée.

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Novembre 2008
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Novembre 2008
    Messages : 115
    Points : 34
    Points
    34
    Par défaut
    Bonjour,

    En effet, c'est ce que j'avais fais en attendant une meilleure solution...

    Encore Merci

Discussions similaires

  1. Problème fonction 'solve'
    Par clem3900 dans le forum MATLAB
    Réponses: 6
    Dernier message: 24/05/2013, 22h14
  2. comment inserer un parametre dans la fonction 'solve'
    Par best_joker dans le forum MATLAB
    Réponses: 1
    Dernier message: 04/08/2011, 15h10
  3. Réponses: 2
    Dernier message: 07/04/2011, 15h41
  4. [Débutant] les algorithmes utilisés par la fonction solve
    Par rafrouf2010 dans le forum MATLAB
    Réponses: 3
    Dernier message: 18/02/2011, 14h47
  5. fonction solve au cours d'une boucle
    Par chabacano dans le forum MATLAB
    Réponses: 1
    Dernier message: 24/06/2009, 14h35

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