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 :

Résoudre un système d'équation


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 26
    Points
    26
    Par défaut Résoudre un système d'équation
    Bonjour,

    J'aimerais savoir si quelqu'un a une idée comment je pourrais résoudre ce système d'équation sur MATLAB:

    16x^4 + 16y^4 + z^4 = 16
    x^2 + y^2 + z^2 = 3
    x^3 - y = 0

    J'ai essayer quelque chose comme sa:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    solve('16*x^4+16*y^4+z^4-16','x^2+y^2+z^2-3','x^3-y')
    Sans succès!

    Pourriez vous m'indiquer un lien ou me donner une commande qui me permettrai de résoudre ce genre de problème svp.

    Merci d'avance et bonnes fetes de fin d'année

    Florian

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut
    Bonjour,


    Je n'ai pas la toolbox symbolic math, du coup je ne peux pas vous aider sur la fonction "solve" que je ne peux pas utiliser.

    Lorsque je rencontre ce genre d'équations à résoudre, j'essaie de réduire ces 3 équations à une seule (dans ce cas c'est possible, le plus simple est de substituer Y puis Z en fonction de X). Je trouve finalement un polynome de degré n (fonction de X dans mon cas). Il suffit alors d'utiliser la fonction roots pour en trouver les racines. On peut ensuite calculer les Y et Z correspondants pour chaque valeur de X non complexe retournée par roots .

  3. #3
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 68
    Points
    68
    Par défaut
    Il y a aussi la fonction fslove qui peut etre une option, à condition d'avoir la bonne toolbox:

    http://www.mathworks.com/help/toolbo...ug/fsolve.html

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    J'ai essayé comme ceci:

    fonction fun:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function Prog=sol(x,y,z)
    16*x^4+16*y^4+z^4-16 && x^2+y^2+z^2-3 && x^3-y;
    x
    y
    z
    end
    et j'execute sur la command window:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fh=@sol;
    fsolve(fh,0)
    Mais sa ne veut toujours pas me donner les valeurs de x,y et z...!

    Une idée de l'erreur?

    Merci

  5. #5
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    d'ou vient cette équation ?
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Bonsoir,

    c'est une équation que je dois resoudre jusqu'a demain minuit...

    J'en ai d'autres mais quand j'aurai réussi une je pourrai facilement trouver la solution des autres.

    Florian

  7. #7
    Rédacteur

    Homme Profil pro
    Comme retraité, des masses
    Inscrit en
    Avril 2007
    Messages
    2 978
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 83
    Localisation : Suisse

    Informations professionnelles :
    Activité : Comme retraité, des masses
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 2 978
    Points : 5 179
    Points
    5 179
    Par défaut
    Salut!
    Essaie la méthode de Newton-Raphson.
    Jean-Marc Blanc
    Calcul numérique de processus industriels
    Formation, conseil, développement

    Point n'est besoin d'espérer pour entreprendre, ni de réussir pour persévérer. (Guillaume le Taiseux)

  8. #8
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    si tu en a plusieurs sur le même modèle il faut mettre ton équation sous forme matricielle A * X = C puis résoudre en une seule ligne :
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  9. #9
    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,

    Citation Envoyé par cottingf Voir le message
    J'ai essayé comme ceci:

    fonction fun:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function Prog=sol(x,y,z)
    16*x^4+16*y^4+z^4-16 && x^2+y^2+z^2-3 && x^3-y;
    x
    y
    z
    end
    et j'execute sur la command window:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fh=@sol;
    fsolve(fh,0)
    Mais sa ne veut toujours pas me donner les valeurs de x,y et z...!

    Une idée de l'erreur?

    Merci
    Il faudrait peut-être regarde la doc pour comprendre la syntaxe attendue par fsolve... Il y a un exemple :
    First, write an M-file that computes F, the values of the equations at x.
    function F = myfun(x)
    F = [2*x(1) - x(2) - exp(-x(1));
    -x(1) + 2*x(2) - exp(-x(2))];



    Next, call an optimization routine.
    x0 = [-5; -5]; % Make a starting guess at the solution
    options=optimset('Display','iter'); % Option to display output
    [x,fval] = fsolve(@myfun,x0,options) % Call optimizer
    A noter que fsolve ne renvoie qu'une seule solution (si il la trouve) qui dépend de l'initialisation.

    Je suis d'accord avec la méthode de Luis Vieira da Silva (qui fonctionne avec ce système) et qui permet de trouver toutes les solutions (réelles et imaginaires).
    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.

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Merci pour la syntaxe!



    Si sa ne tenait qu'a moi je calculerai ce probleme sur papier et non avec matlab mais ce n'est pas se que l'on recherche ici!

    J'aimerais vraiment mettre ces valeurs et qu'il trouve les solutions! Se serai le pied...

    Florian

  11. #11
    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
    A la main, cela reviendrai a résoudre une equation polynomiale de degré eleve, ce serait pas evident...

    La fonction solve trouve aucune solution a ces équations?
    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.

  12. #12
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par ol9245 Voir le message
    si tu en a plusieurs sur le même modèle il faut mettre ton équation sous forme matricielle A * X = C puis résoudre en une seule ligne :
    C'est possible de mette le systeme sous cette forme matricielle que s'il est lineaire. C'est pas le cas ici je crois.

  13. #13
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Uren Voir le message
    C'est possible de mette le systeme sous cette forme matricielle que s'il est lineaire. C'est pas le cas ici je crois.
    si si, c'est linéaire.
    en algèbre, on oppose linéaire et différentiel.
    Ici, ce n'est pas un système différentiel. Il est donc linéaire.

    Je ne donne pas la solution parce qu'il s'agit manifestement d'un exo d'étudiant, mais elle est triviale (3 lignes de code Matlab).
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  14. #14
    Membre régulier
    Inscrit en
    Mai 2007
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 142
    Points : 94
    Points
    94
    Par défaut
    essaye de remplacer les équations 2 et 3 ds 1 et mettre w=x^2.
    comme ca tu peux utiliser fsolve ou autre pour résoudre l'eq :
    17*w^6 + 2*w^4 - 6*w^3 + 17*w - 13 = 0
    après trouver x, y et z tq :
    w^2 = x
    y = x^3
    z^2 = 3-x^2-x^6

  15. #15
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par ol9245 Voir le message
    si si, c'est linéaire.
    en algèbre, on oppose linéaire et différentiel.
    Ici, ce n'est pas un système différentiel. Il est donc linéaire.

    Je ne donne pas la solution parce qu'il s'agit manifestement d'un exo d'étudiant, mais elle est triviale (3 lignes de code Matlab).
    Dommage que tu ne veuilles pas donner la solution car j'aurais été curieux de savoir comment ramener ce probleme à A.X = B.

    Mes cours de maths sont déjà loin hélas et je ne me souviens pas de l'opposition linéaire/differentiel. Je crois que c'etait beaucoup plus pragmatique que ca, soit c'etait lineaire, soit c'etait non lineaire. Mais bon, je ne vois pas trop ce que tu entends par differentiel non plus. J'image que ca n'a rien à voir avec les equations differentielles vu qu'elles peuvent etre lineaires.

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2010
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2010
    Messages : 36
    Points : 26
    Points
    26
    Par défaut
    Ce n'est pas un système linéaire...!

    C'est encore écrit dans la consigne :

    "nichtlineare Gleichungssystem"

    Bref je n'ai toujours pas de solution


  17. #17
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  18. #18
    Membre du Club
    Inscrit en
    Octobre 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 63
    Points : 68
    Points
    68
    Par défaut
    Citation Envoyé par ol9245 Voir le message
    Mais ca te sert à quoi si t'arrives pas à ramener le probleme à AX = B?

    D'ailleurs, cottingf qui a l'enoncé, confirme que c'est pas linéaire comme systeme. Avec des carrés et des cubes, et meme plus, un peu partout, c'etait previsible.

  19. #19
    Membre éprouvé
    Avatar de ol9245
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2007
    Messages
    985
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Chercheur

    Informations forums :
    Inscription : Avril 2007
    Messages : 985
    Points : 1 158
    Points
    1 158
    Billets dans le blog
    1
    Par défaut
    En effet.
    Toutes mes excuses, je me suis mélangé les pinceaux
    ce n'est pas en effet un système linéaire au sens algébrique du terme et il n'a donc pas d'écriture matricielle. Désolé pour le plat de conneries de mes précédents posts.
    "La vraie grandeur se mesure par la liberté que vous donnez aux autres, et non par votre capacité à les contraindre de faire ce que vous voulez." Larry Wall, concepteur de Perl.

  20. #20
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    25
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2009
    Messages : 25
    Points : 29
    Points
    29
    Par défaut
    la méthode de nant44 est correcte, cela revient à mâcher le travail de matlab mais cela semble nécessaire dans ce cas.

    Citation Envoyé par nant44 Voir le message
    essaye de remplacer les équations 2 et 3 ds 1 et mettre w=x^2.
    comme ca tu peux utiliser fsolve ou autre pour résoudre l'eq :
    17*w^6 + 2*w^4 - 6*w^3 + 17*w - 13 = 0
    après trouver x, y et z tq :
    w^2 = x
    y = x^3
    z^2 = 3-x^2-x^6
    Par contre, une erreur s'est glissée dans le polynome final. Pour ma part, je trouve: 17*w^6 + 2*w^4 - 6*w^3 + 17*w^2 - 6*w - 7 = 0
    Cette equation se résout très bien avec la fonction roots. Et une fois w trouvé, on retrouve x,y et z
    Dans ce cas, il n'y a qu'une seule solution réelle positive pour w, ce qui donne deux solutions pour X (+/-)

Discussions similaires

  1. Résoudre un système d'équations
    Par nahouto dans le forum Mathématiques
    Réponses: 4
    Dernier message: 12/12/2009, 16h30
  2. résoudre un système d'équation
    Par niniii dans le forum MATLAB
    Réponses: 1
    Dernier message: 03/04/2009, 02h45
  3. Réponses: 6
    Dernier message: 08/12/2008, 15h31
  4. Réponses: 7
    Dernier message: 19/05/2008, 13h24
  5. Résoudre un système d'équations différentielles
    Par mostafaziad dans le forum MATLAB
    Réponses: 7
    Dernier message: 06/07/2007, 09h18

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