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 :

[solve] Résolution d'un système de deux équations


Sujet :

MATLAB

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut [solve] Résolution d'un système de deux équations
    Bonjour,

    je dois résoudre un système de 2 équations (X1 et X2) à 2 inconnues (R et t).
    Les équations ne sont pas très commodes et lorsque j'utilise la fonction :j'obtiens le message suivant :
    Warning: Warning, solutions may have been lost
    puis les résultats affichés sont loin d'être ceux que j'attends...

    Visiblement, Matlab dois "manquer de mémoire" et tronque des valeurs, ce qui me donne des résultats faux.
    Je ne sais pas trop comment résoudre ce problème.
    J'avais pensé utiliser la fonction fzero, mais cela implique de connaître où se situent les solutions et je ne sais pas l'utiliser avec un système, seulement avec une équation à une inconnue.

    Est-il possible d'utiliser une autre fonction de résolution de système ?
    Ou peut-être utiliser plus de précision dans les valeurs ?

    Merci d'avance

    Matlab 7.4.0.287 (R2007a)

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    Salut, tu peux utiliser une méthode numérique. Pour résoudre l'équation f(x)=0 où x est un vecteur de R^2 (x=(x1;x2)), utilise la méthode de Newton et toutes ses variantes.

  3. #3
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Salut,

    Tu peux nous poster tes deux équations?

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Voici les 2 équations :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    X1 =
     
    598459172153623/2374945115996160*pi-1/4*(1637500000000/273*t^2*R*(18/15625-12035612411181512153/72018011619328000000000000000000*R/t^3+(-2491596114225751/1208925819614629174706176+7802383612627838942311038999531524974685067173656264998622535560518887/33625946619946996896066769151862778492368248522481336320000000000000000000000000000000000000000000000000000000000000*R^4/t^12)*R^2/t^2)^(1/2)*(54459784665979693/2880720464773120000000000000/t^3)^(71/25+5388982421036481330682482662376010433/51865939976016628167831715840000000000000000000000000000*R^2/t^6+(-1314906976004109/576460752303423488+370816673790655729637/72018011619328000000000000000000*R/t^3-145327539147378968191217198930338201/103731879952033256335663431680000000000000000000000000000*R^2/t^6)*R/t)+4189214205075361/26388279066624000)/R*(700976274800963/4611686018427387904-47543392013400271989/144036023238656000000000000000000*R/t^3+5910975214708699665410119948329878257/51865939976016628167831715840000000000000000000000000000000*R^2/t^6+(269/20-9931106086422581923189586280125244302614927665228774727671750448507129/538015145919151950337068306429804455877891976359701381120000000000000000000000000000000000000000000000000000*R^4/t^12+768268220905111444642045323725885970696268735253998472449867711616476769362394983151634283596195860399105811649686808509084460611707421929/7236507430960159138002537883147695892287498964704148031336460737147158526674013993670006695302921745490887311360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000*R^8/t^24)*t^2/R^2)^(1/2)*(54459784665979693/2880720464773120000000000000/t^3)^(-143/50+145353165273499800617/72018011619328000000000000000*R/t^3-24168859520652881873269978654761755101/51865939976016628167831715840000000000000000000000000000*R^2/t^6+(-3176444784221283161893747348048820679/51865939976016628167831715840000000000000000000000000*R^2/t^6+18182104765841874964776682764409991119136453041654452933655897411040067/1345037864797879875842670766074511139694729940899253452800000000000000000000000000000000000000000000000000*R^4/t^12-4878621499956665561347657795538707354816420235941206935106533022273106582126843572092971888838896766563/6976165316107640652787016623812415820133010160793401687975328170575665795846845235200000000000000000000000000000000000000000000000000000000000000000000000000*R^6/t^18)*t/R)-(-6550000000000/273*t^2*R^2*(18/15625-12035612411181512153/72018011619328000000000000000000*R/t^3+(-2491596114225751/1208925819614629174706176+7802383612627838942311038999531524974685067173656264998622535560518887/33625946619946996896066769151862778492368248522481336320000000000000000000000000000000000000000000000000000000000000*R^4/t^12)*R^2/t^2)^(1/2)*(54459784665979693/2880720464773120000000000000/t^3)^(71/25+5388982421036481330682482662376010433/51865939976016628167831715840000000000000000000000000000*R^2/t^6+(-1314906976004109/576460752303423488+370816673790655729637/72018011619328000000000000000000*R/t^3-145327539147378968191217198930338201/103731879952033256335663431680000000000000000000000000000*R^2/t^6)*R/t)*(200030789078143412389/288072046477312000000000000000000/t^3-3656915423851393219995322577165449017/207463759904066512671326863360000000000000000000000000000000/t^6+4361054595430220456135594514690220666542632289390039/59764509885442146192643850359054002364088320000000000000000000000000000000000000000000/t^9+930503702839999/2189866660074853547892690386944*t*54459784665979693^(1/5)*2880720464773120000000000000^(4/5)/(1/t^3)^(4/5)/R)/(700976274800963/4611686018427387904-47543392013400271989/144036023238656000000000000000000*R/t^3+5910975214708699665410119948329878257/51865939976016628167831715840000000000000000000000000000000*R^2/t^6+(269/20-9931106086422581923189586280125244302614927665228774727671750448507129/538015145919151950337068306429804455877891976359701381120000000000000000000000000000000000000000000000000000*R^4/t^12+768268220905111444642045323725885970696268735253998472449867711616476769362394983151634283596195860399105811649686808509084460611707421929/7236507430960159138002537883147695892287498964704148031336460737147158526674013993670006695302921745490887311360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000*R^8/t^24)*t^2/R^2)^(1/2)/((54459784665979693/2880720464773120000000000000/t^3)^(-143/50+145353165273499800617/72018011619328000000000000000*R/t^3-24168859520652881873269978654761755101/51865939976016628167831715840000000000000000000000000000*R^2/t^6+(-3176444784221283161893747348048820679/51865939976016628167831715840000000000000000000000000*R^2/t^6+18182104765841874964776682764409991119136453041654452933655897411040067/1345037864797879875842670766074511139694729940899253452800000000000000000000000000000000000000000000000000*R^4/t^12-4878621499956665561347657795538707354816420235941206935106533022273106582126843572092971888838896766563/6976165316107640652787016623812415820133010160793401687975328170575665795846845235200000000000000000000000000000000000000000000000000000000000000000000000000*R^6/t^18)*t/R))+7779969237997099/26388279066624000)*(200030789078143412389/288072046477312000000000000000000/t^3-3656915423851393219995322577165449017/207463759904066512671326863360000000000000000000000000000000/t^6+4361054595430220456135594514690220666542632289390039/59764509885442146192643850359054002364088320000000000000000000000000000000000000000000/t^9+930503702839999/2189866660074853547892690386944*t*54459784665979693^(1/5)*2880720464773120000000000000^(4/5)/(1/t^3)^(4/5)/R)-(1637500000000/273*t^3*(13/500*R/t-3162509803996765/147573952589676412928*R^2/t^2)*(54459784665979693/2880720464773120000000000000/t^3)^(278/125+3085217946327923/2305843009213693952*R/t)-4189214205075361/52776558133248000)*(1/4/R*(700976274800963/4611686018427387904-47543392013400271989/144036023238656000000000000000000*R/t^3+5910975214708699665410119948329878257/51865939976016628167831715840000000000000000000000000000000*R^2/t^6+(269/20-9931106086422581923189586280125244302614927665228774727671750448507129/538015145919151950337068306429804455877891976359701381120000000000000000000000000000000000000000000000000000*R^4/t^12+768268220905111444642045323725885970696268735253998472449867711616476769362394983151634283596195860399105811649686808509084460611707421929/7236507430960159138002537883147695892287498964704148031336460737147158526674013993670006695302921745490887311360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000*R^8/t^24)*t^2/R^2)^(1/2)*(54459784665979693/2880720464773120000000000000/t^3)^(-143/50+145353165273499800617/72018011619328000000000000000*R/t^3-24168859520652881873269978654761755101/51865939976016628167831715840000000000000000000000000000*R^2/t^6+(-3176444784221283161893747348048820679/51865939976016628167831715840000000000000000000000000*R^2/t^6+18182104765841874964776682764409991119136453041654452933655897411040067/1345037864797879875842670766074511139694729940899253452800000000000000000000000000000000000000000000000000*R^4/t^12-4878621499956665561347657795538707354816420235941206935106533022273106582126843572092971888838896766563/6976165316107640652787016623812415820133010160793401687975328170575665795846845235200000000000000000000000000000000000000000000000000000000000000000000000000*R^6/t^18)*t/R)-54459784665979693/23045763718184960000000000000/t^3-18*t/R)^2/(1/4*t*(13/500*R/t-3162509803996765/147573952589676412928*R^2/t^2)*(54459784665979693/2880720464773120000000000000/t^3)^(278/125+3085217946327923/2305843009213693952*R/t)/R^2*(700976274800963/4611686018427387904-47543392013400271989/144036023238656000000000000000000*R/t^3+5910975214708699665410119948329878257/51865939976016628167831715840000000000000000000000000000000*R^2/t^6+(269/20-9931106086422581923189586280125244302614927665228774727671750448507129/538015145919151950337068306429804455877891976359701381120000000000000000000000000000000000000000000000000000*R^4/t^12+768268220905111444642045323725885970696268735253998472449867711616476769362394983151634283596195860399105811649686808509084460611707421929/7236507430960159138002537883147695892287498964704148031336460737147158526674013993670006695302921745490887311360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000*R^8/t^24)*t^2/R^2)^(1/2)*(54459784665979693/2880720464773120000000000000/t^3)^(-143/50+145353165273499800617/72018011619328000000000000000*R/t^3-24168859520652881873269978654761755101/51865939976016628167831715840000000000000000000000000000*R^2/t^6+(-3176444784221283161893747348048820679/51865939976016628167831715840000000000000000000000000*R^2/t^6+18182104765841874964776682764409991119136453041654452933655897411040067/1345037864797879875842670766074511139694729940899253452800000000000000000000000000000000000000000000000000*R^4/t^12-4878621499956665561347657795538707354816420235941206935106533022273106582126843572092971888838896766563/6976165316107640652787016623812415820133010160793401687975328170575665795846845235200000000000000000000000000000000000000000000000000000000000000000000000000*R^6/t^18)*t/R)/(18/15625-12035612411181512153/72018011619328000000000000000000*R/t^3+(-2491596114225751/1208925819614629174706176+7802383612627838942311038999531524974685067173656264998622535560518887/33625946619946996896066769151862778492368248522481336320000000000000000000000000000000000000000000000000000000000000*R^4/t^12)*R^2/t^2)^(1/2)/((54459784665979693/2880720464773120000000000000/t^3)^(71/25+5388982421036481330682482662376010433/51865939976016628167831715840000000000000000000000000000*R^2/t^6+(-1314906976004109/576460752303423488+370816673790655729637/72018011619328000000000000000000*R/t^3-145327539147378968191217198930338201/103731879952033256335663431680000000000000000000000000000*R^2/t^6)*R/t))-54459784665979693/23045763718184960000000000000/t^3-18*t/R)
     
     
     
    X2 =
     
    -3275000000000/273*t^2*R*(18/15625-12035612411181512153/72018011619328000000000000000000*R/t^3+(-2491596114225751/1208925819614629174706176+7802383612627838942311038999531524974685067173656264998622535560518887/33625946619946996896066769151862778492368248522481336320000000000000000000000000000000000000000000000000000000000000*R^4/t^12)*R^2/t^2)^(1/2)*(54459784665979693/2880720464773120000000000000/t^3)^(71/25+5388982421036481330682482662376010433/51865939976016628167831715840000000000000000000000000000*R^2/t^6+(-1314906976004109/576460752303423488+370816673790655729637/72018011619328000000000000000000*R/t^3-145327539147378968191217198930338201/103731879952033256335663431680000000000000000000000000000*R^2/t^6)*R/t)+1056558429015651/17592186044416/R*(700976274800963/4611686018427387904-47543392013400271989/144036023238656000000000000000000*R/t^3+5910975214708699665410119948329878257/51865939976016628167831715840000000000000000000000000000000*R^2/t^6+(269/20-9931106086422581923189586280125244302614927665228774727671750448507129/538015145919151950337068306429804455877891976359701381120000000000000000000000000000000000000000000000000000*R^4/t^12+768268220905111444642045323725885970696268735253998472449867711616476769362394983151634283596195860399105811649686808509084460611707421929/7236507430960159138002537883147695892287498964704148031336460737147158526674013993670006695302921745490887311360000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000*R^8/t^24)*t^2/R^2)^(1/2)*(54459784665979693/2880720464773120000000000000/t^3)^(-143/50+145353165273499800617/72018011619328000000000000000*R/t^3-24168859520652881873269978654761755101/51865939976016628167831715840000000000000000000000000000*R^2/t^6+(-3176444784221283161893747348048820679/51865939976016628167831715840000000000000000000000000*R^2/t^6+18182104765841874964776682764409991119136453041654452933655897411040067/1345037864797879875842670766074511139694729940899253452800000000000000000000000000000000000000000000000000*R^4/t^12-4878621499956665561347657795538707354816420235941206935106533022273106582126843572092971888838896766563/6976165316107640652787016623812415820133010160793401687975328170575665795846845235200000000000000000000000000000000000000000000000000000000000000000000000000*R^6/t^18)*t/R)

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    Salut, tes équations n'ont rien de bien compliqué. Utilise la méthode de Newton et c'est gagné. Le calcul de la jacobienne est facile.
    Mais je n'ai pas vu de signe "=" Où est ton second membre ?

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Il n'y a pas de signe "= " car il me semble que Matlab le met par defaut dans le solve.

    C'est à dire : solve(X1,X2) <=> solve(X1=0,X2=0).

    Du moins, c'est ce que j'avais compris dans la documentation.

    Sinon, pour la résolution vous avez raison, je vais utiliser Newton-Raphson.
    Merci beacoup

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bon ben j'ai essayé de résoudre le sytème avec la méthode de Newton-Raphson mais matlab n'a toujours pas assez de mémoire. Il me dit au bout d'une heure :
    ??? Out of memory


    Voici le code que j'ai tapé pour la méthode de Newton (qui marche avec des exemples plus simples)
    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
    17
    18
    19
    20
    21
    22
    function S=Newton(F1,F2)
     
    syms R t
     
    F=[F1;F2];
    v=[R,t];
    S=[0;0];
    J=jacobian(F,v);
    Jinv=inv(J);
    for i=1:2
        v=[S(1),S(2)];
        X1=subs(F1,R,v(1));
        X1=subs(X1,t,v(2));
        X2=subs(F2,R,v(1));
        X2=subs(X2,t,v(2));
        Ji=subs(Jinv,R,v(1));
        Ji=subs(Ji,t,v(2));
     
     
          S=S-Ji*[X1;X2];
    end
    S=S;
    Il est tapé à l'arrache mais il marche sur d'autres équations.

    Donc je n'arrive toujours pas à résoudre mon système !!!

    Peut-être que l'utilisation des variables en symboliques n'est pas une bonne chose ?

    Sinon, est-ce que quelqu'un aurait une autre idée (autre algo, logiciel...)

    Merci d'avance

  8. #8
    Membre éprouvé
    Avatar de rostomus
    Homme Profil pro
    Doctorant électronique et traitement du signal
    Inscrit en
    Décembre 2006
    Messages
    791
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Doctorant électronique et traitement du signal

    Informations forums :
    Inscription : Décembre 2006
    Messages : 791
    Points : 1 205
    Points
    1 205
    Par défaut
    Salut,

    Comment as-tu obtenu X1 et X2?
    Est ce que tu veux toujours une solution en "symbolique"?

  9. #9
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    1 298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 298
    Points : 886
    Points
    886
    Par défaut
    je ne suis pas un expert du calcul symbolique avec matlab. Mais je sais que Maple est fait pour faire du calcul symbolique.

    Selon moi : matlab : calcul numérique
    maple : calcul symbolique

    même si on peut faire de calcul numérique et symbolique avec ces deux logiciels, à chacun son point fort.

  10. #10
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    J'obtiens X1 et X2 en remplaçant dans 2 équations de départ toutes les variables qui dépendent de R et t pour obtenir 2 équations à 2 inconnues.

    Sinon je veux le résultat en numérique pas en symbolique. C'est juste que j'utilise une déclaration de mes variables R et t en symbolique. Mais je devrais obtenir des résultats numériques avec Newton (voir meme avec le "solve" de matlab). Donc maple n'est pas utile ici.

    Merci quand meme.

    En fait matlab n'arrive pas a inverser la matrice jacobienne dans mon algo de Newton car il ne dispose pas d'assez de mémoire pour stocker toutes ses données utiles à cette inversion.

    Donc j'ai toujours pas trouvé de solutions .................

  11. #11
    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
    Bjr,

    je sais pas si ça a un rapport avec ta difficulté à résoudre tes équations, mas des nombres longs comme d'ici dimanche, genre 12035612411181512153 c'est pas courant en alcul numérique. Tu aurais des problèmes d'arrondi que ça m'étonnerais pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >> x=12035612411181512153  ;
    >> y=x+1 ;
    >> y-x
     
    ans =
     
         0
    OL

Discussions similaires

  1. Réponses: 4
    Dernier message: 05/12/2013, 10h01
  2. [XL-2007] Résolution d'une système de trois équations à trois inconnues
    Par frisou65 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/08/2011, 08h20
  3. Réponses: 1
    Dernier message: 22/05/2008, 13h56
  4. Réponses: 1
    Dernier message: 13/12/2006, 12h01
  5. Résolution d'un système d'équations
    Par JeaJeanne dans le forum MATLAB
    Réponses: 1
    Dernier message: 04/12/2006, 10h08

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