+ Répondre à la discussion
Affichage des résultats 1 à 7 sur 7
  1. #1
    Invité de passage
    Inscrit en
    février 2007
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 62
    Points : 3
    Points
    3

    Par défaut Résolution d'un systeme d'équations à 4 inconnues.

    Bonjour,
    Voila j'avais crée un petit programme pour me résoudre un systeme d'equations non linéaires à 2 inconnues par la méthode Newton-raphson. Maintenant je le passe à 4 équations et 4 inconnues, j'ai bien mis les derivées.

    Le probleme c'est qu'il me donne bien les bonnes valeurs de 2 premières inconnues (cacpx et caopx) par contre j'ai l'impression qu'il ne calcule pas les 2 autres inconnues. Pourriez vous m'éclairer pour savoir d'où vient l'erreur dans le programme?

    Merci beaucoup

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
     
    clear all
    Ue=3.020E4
    Ve=5.635E2
    Se=1.433E1
    Wsce=-1.25E1
    Wscd=-6.511E0
    Wso=-1.598E1
    Ud=4.874E4
    Vd=2.020E3
    Sd=2.745E1
    Sealcpx=3.094E1
    Sealopx=3.074E1
    Sdalcpx=-5.935E0
    Sdalopx=-1.082E1
    cacpx(1)=0.9
    caopx(1)=0.03
    alcpx(1)=0.03
    alopx(1)=0.03
    R=8.3146
    tol=1e-6
     
    P=1.5
    T=1175
        for i=2:10
     
     
    F1=Ue+P*Ve-Se*T+R*T*log((1-cacpx(i-1))/(1-caopx(i-1)))-(cacpx(i-1))^2*T*Wsce-2*(cacpx(i-1))^2*(1-cacpx(i-1))*T*(Wscd-Wsce)-(caopx(i-1))^2*(-Wso*T);
     
     
     
    F2=Ud+Vd*P-Sd*T+R*T*log(caopx(i-1)/cacpx(i-1))+(1-cacpx(i-1))^2*T*Wscd+2*(1-cacpx(i-1))^2*cacpx(i-1)*T*(Wsce-Wscd)+(1-caopx(i-1))^2*(-Wso*T);
     
     
    F3= alcpx(i-1)*(-Sealcpx*T)-alopx(i-1)*(-Sealopx*T);
     
    F4= -alcpx(i-1)*(-Sdalcpx*T)+alopx(i-1)*(-Sdalopx*T);
     
     
    dF1_cacpx=(-R*T)/(1-cacpx(i-1))-2*cacpx(i-1)*T*Wsce-4*cacpx(i-1)*(1-cacpx(i-1))*T*(Wscd-Wsce)+2*(cacpx(i-1))^2*T*(Wscd-Wsce);
     
    dF1_caopx=(R*T)/(1-caopx(i-1))-2*caopx(i-1)*(-Wso*T);
     
    dF1_alcpx=0
    dF1_alopx=0
     
    dF3_alcpx=(-Sealcpx)*T;
     
    dF3_alopx=Sealopx*T;
    dF3_cacpx=0
    dF3_caopx=0
     
     
    dF2_cacpx=(-R*T)/cacpx(i-1)-2*(1-cacpx(i-1))*T*Wscd+4*(1-cacpx(i-1))*cacpx(i-1)*T*(Wsce-Wscd)-2*(1-cacpx(i-1))^2*T*(Wsce-Wscd);
     
    dF2_caopx=(R*T)/caopx(i-1)-2*(1-caopx(i-1))*(-Wso*T);
     
    dF2_alcpx=0
    dF2_alopx=0
     
    dF4_alcpx=Sdalcpx*T;
     
    dF4_alopx=(-Sdalopx)*T;
     
    dF4_cacpx=0
     
    dF4_caopx=0
     
             		f=[F1,F2,F3,F4]
    df=[dF1_cacpx,dF1_caopx,dF1_alcpx,dF1_alopx;dF2_cacpx,dF2_caopx,dF2_alcpx,dF2_alopx;dF3_cacpx,dF3_caopx,dF3_alcpx,dF3_alopx;dF4_cacpx,dF4_caopx,dF4_alcpx,dF4_alopx]
     
    %dff=[dF1_cacpx,dF1_caopx,dF1_alcpx,dF1_alopx;dF2_cacpx,dF2_caopx,dF2_alcpx,dF2_alopx;dF3_cacpx,dF3_caopx,dF3_alcpx,dF3_alopx;dF4_cacpx,dF4_caopx,dF4_alcpx,dF4_alopx]
     
     
     
     
    %J=inv([dF1_cacpx,dF1_caopx;dF1_alcpx,dF1_alopx;dF2_cacpx,dF2_caopx;dF2_alcpx,dF2_alopx]);
     
     J=inv([dF1_cacpx,dF1_caopx,dF1_alcpx,dF1_alopx;dF2_cacpx,dF2_caopx,dF2_alcpx,dF2_alopx;dF3_cacpx,dF3_caopx,dF3_alcpx,dF3_alopx;dF4_cacpx,dF4_caopx,dF4_alcpx,dF4_alopx]);
    % %les solutions
     
     xy=[cacpx(i-1) caopx(i-1) alcpx(i-1) alopx(i-1)]'-J*[F1,F2,F3,F4]';
     
     cacpx(i)=xy(1)
     caopx(i)=xy(2)
     alcpx(i)=xy(3)
     alopx(i)=xy(4)
     
    donnees=[cacpx;caopx;alcpx;alopx]'
     
    end

    Merci

  2. #2
    Membre Expert

    Profil pro
    Inscrit en
    décembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 966
    Points : 1 095
    Points
    1 095

    Par défaut

    Trop de mal a lire ton code des commentaires et de lignes de code plus courte sera pas mal .

    Sinon, J'ai cru voir des dérivées nulles ... fonctions constantes ?

  3. #3
    Invité de passage
    Inscrit en
    février 2007
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 62
    Points : 3
    Points
    3

    Par défaut

    bé disons que c'est pas evident à la reduire

    Enfin je vais aller directement là où ça coince

    Ces 2 équations à 2 inconnues, je n'arrive pas à les resoudre par la méthode newton-raphson

    j'ai :

    x1(-Sealcpx*T)-x2(-Sealopx*T)=0
    -x1(-Sdalcpx*T)+x2(-Sdalopx*T)=0

    Sealcpx=3.094E1
    Sealopx=3.074E1
    Sdalcpx=-5.935E0
    Sdalopx=-1.082E1
    T=1175

    Donc voila je suis un peu perdue.

    MErci

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    décembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 966
    Points : 1 095
    Points
    1 095

    Par défaut

    Bon, le T et les (-) a simplifier ...

    Sinon, ton système est linaire :

    Code :
    1
    2
    3
    M = [Sealcpx  Sealopx ; Sdalcpx Sdalopx];
     
    X = M/[0 0];
    ++

  5. #5
    Invité de passage
    Inscrit en
    février 2007
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 62
    Points : 3
    Points
    3

    Par défaut

    Bé non ça ne marche toujours pas j'obtiens X= 0 0

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    décembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Âge : 31
    Localisation : France

    Informations forums :
    Inscription : décembre 2007
    Messages : 966
    Points : 1 095
    Points
    1 095

    Par défaut

    Si ta matrice est inversible c'est normale de n'avoir que la solution triviale [0 0].

    L'algèbre ne va pas s'arranger pour te trouver une solution non nulle parce que tu le veux.

    T'es sur de ton système ?

  7. #7
    Invité de passage
    Inscrit en
    février 2007
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : février 2007
    Messages : 62
    Points : 3
    Points
    3

    Par défaut

    Bé normalement les vraies équations sont

    F1+F3
    F2+F4

    dans le code que j'ai mis ..et j'aimerais les compositions cacpx, caopx, alcpx et alopx. Le soucis c'est que ça marche bien que pour les 2 premières.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •