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 :

[Débutante] Problème de fonctionnement d'un script


Sujet :

MATLAB

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 26
    Points
    26
    Par défaut [Débutante] Problème de fonctionnement d'un script
    Bonjour,
    J'ai besoin d'un petit coup de main sous matlab

    J'ai recupéré un programme qu'une personne a faite il y a bien lontemps, cette derniere n'etant plus joignable, je n'ai que le script sur papier or il contient surement des erreurs puisqu'il ne tourne pas ce qui est problematique. Est ce que quelq'un pourrait m'aider à trouver les erreurs ?? merci d'avance

    le script :

    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
    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
    clear
    M=dlmread('W:/matlab/data.txt','\t');			
    j=size(M);
    m=dlmread('W:/matlab/data.txt');					
    X0=[100000 10000 1000 0 0 10 0 0 0 100000 10000 1000 m']';	
    e=dlmread('W:/matlab/error.txt');		
    E=[1E9;1E8;1E5;0;0;1000;0;0;0;1E9;1E8;1E5;e];				
    D=size(X0);								
    C0=eye(D(1));								
        for i=1:D(1)								
          C0(i,i)= E(i);							
            X=X0;											
            a=[j(1,2)];
     
            for h=1:50									
                p=[X(1)+X(12+1)*X(2)-X(12+a+1)*X(3)+8.314*X(12+a+1)*log((1-X(12+2*a+1))/(1-X(12+3*a+1)))+((X(12+2*a+1))^2)*(X(4)+X(12+1)*X(5)-X(6)*X(12+a+1))-((X(12+3*a+1))^2)*(X(7)+X(8)*X(12+1)-X(9)*X(12+a+1))];
        		    for b=14:a+12
       		            p=[p;X(1)+X(b)*X(2)-X(a+b)*X(3)+8.314*X(a+b)*log((1-X(2*a+b))/(1-X(3*a+b)))+((X(2*a+b))^2)*(X(4)+X(b)*X(5)-X(6)*X(a+b))-((X(3*a+b))^2)*(X(7)+X(8)*X(b)-X(9)*X(b+a))];
                	end
                P1=[1 X(13) -X(12+a+1) (X(12+2*a+1))^2 (X(12+2*a+1))^2*X(13) -(X(12+2*a+1))^2*X(12+a+1) -(X(12+3*a+1))^2 -(X(12+3*a+1))^2*X(13) (X(12+3*a+1))^2*X(12+a+1)];
     
                    for z=14:a+12
                         P1=[P1;1 X(z) -X(z+a) (X(z+2*a))^2 (X(z+2*a))^2*X(z) -(X(z+2*a))^2*X(z+a) -(X(z+3*a))^2 -(X(z+3*a))^2*X(z) (X(z+3*a))^2*X(z+a)];
                    end
       P2=zeros(a,3);   
       P3=eye(a);
       P4=eye(a);
       P5=eye(a);
       P6=eye(a);
         	       for y=1:a
                         P3(y,y)=X(2)+(X(12+y+2*a))^2*X(5)-(X(12+y+3*a))^2*X(8);
       		            P4(y,y)=-X(3)+8.314*log((1-X(2*a+12+y))/(1-X(3*a+12+y)))-X(6)*(X(2*a+12+y))^2+X(9)*(X(3*a+12+y))^2;
                       P5(y,y)=-8.314*X(12+a+y)/(1-X(2*a+12+y))+2*X(12+2*a+y)*(X(4)+X(12+y)*X(5)-X(12+a+y)*X(6));
                      P6(y,y)=8.314*X(12+a+y)/(1-X(3*a+12+y))-2*X(12+3*a+y)*(X(7)+X(8)*X(12+y)-X(12+a+y)*X(9));
                   end 
        P=[P1 P2 P3 P4 P5 P6];   
       f=[X(10)+X(12+1)*X(11)-X(a+12+1)*X(12)+8.314*X(12+a+1)*log(X(12+3*a+1)/X(12+2*a+1))-(1-X(12+2*a+1))^2*(X(4)+X(12+1)*X(5)-X(6)*X(12+1+a))+(1-X(12+3*a+1))^2*(X(7)+X(8)*X(12+1)-X(9)*X(12+a+1))];
            	for b=14:a+12
             	    f=[f;X(10)+X(b)*X(11)-X(a+b)*X(12)+8.314*X(a+b)*log(X(3*a+b)/X(2*a+b))-(1-X(2*a+b))^2*(X(4)+X(b)*X(5)-X(6)*X(a+b))+(1-X(3*a+b))^2*(X(7)+X(8)*X(b)-X(9)*X(b+a))];
                 end
       F2=[-(1-X(12+2*a+1))^2 -(1-X(12+2*a+1))^2*X(12+1) (1-X(12+1+2*a))^2*X(12+a+1) (1-X(12+3*a+1))^2 (1-X(12+3*a+1))^2*X(12+1) -(1-X(12+3*a+1))^2*X(12+a+1) 1 X(12+1) -X(12+a+1)];
     
              for z=14:a+12
                F2=[F2;-(1-X(z+2*a))^2 -(1-X(z+2*a))^2*X(z) (1-X(z+2*a))^2*X(z+a) (1-X(z+3*a)^2) (1-X(z+3*a))^2*X(z) -(1-X(z+3*a)^2)*X(z+a) 1 X(z) -X(z+a)];
              end
       F1=zeros(a,3);   
       F3=eye(a);
       F4=eye(a);
       F5=eye(a);
       F6=eye(a);
             	for y=1:a
                  F3(y,y)=X(11)-(1-X(12+y+2*a))^2*X(5)+(1-X(12+y+3*a))^2*X(8);
       		    F4(y,y)=-X(12)+8.314*log(X(3*a+12+y)/X(2*a+12+y))+X(6)*(1-X(2*a+12+y))^2-X(9)*(1-X(3*a+12+y))^2;
                 F5(y,y)=-8.314*X(12+a+y)/X(2*a+12+y)+2*(1-X(12+2*a+y))*(X(4)+X(12+y)*X(5)-X(12+a+y)*X(6));
                  F6(y,y)=8.314*X(12+a+y)/X(3*a+12+y)+2*(X(12+3*a+y)-1)*(X(7)+X(8)*X(12+y)-X(12+y+a)*X(9));
        	    end
      	F=[F1 F2 F3 F4 F5 F6];
       g=[p;f];  
       G=[P;F];    
       X=X0+C0*G'*inv(G*C0*G')*(G*(X-X0)-g);
       R=[X(1) X(2) X(3) X(4) X(5) X(6) X(7) X(8) X(9) X(10) X(11) X(12)]
     
        end
    C=C0-C0*G'*inv(G*C0*G')*G*C0;
    W=[C(1,1) C(1,2) C(1,3) C(1,4) C(1,5) C(1,6) C(1,7) C(1,8) C(1,9) C(1,10) C(1,11) C(1,12)];
            for v=2:12
                W=[W; C(v,1) C(v,2) C(v,3) C(v,4) C(v,5) C(v,6) C(v,7) C(v,8) C(v,9) C(v,10) C(v,11) C(v,12)];
            end
    D=[E(1) E(2) E(3) E(4) E(5) E(6) E(7) E(8) E(9) E(10) E(11) E(12)];
    Q=[D;R;W];
            for i=1:a
           ka(i)=[X(i+12)];
          kb(i)=[X(i+12+a)];
          kc(i)=[X(i+12+2*a)];
          kd(i)=[X(i+12+3*a)];
            end
    K=[ka;kb;kc;kd];
     
    dlmwrite('W:/matlab/reslt.txt',Q,'\t')
    dlmwrite('W:/matlab/rcomp.txt',K,'\t')
    je joins egalement le fichier data et error.txt
    Fichiers attachés Fichiers attachés

  2. #2
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Citation Envoyé par laroche1 Voir le message
    il ne tourne pas ce qui est problematique.
    Mais encore, quel(s) message(s) d'erreur MATLAB retourne-t-il à l'exécution de ce code ?

    Ce code est censé faire quoi ?

  3. #3
    Expert confirmé
    Avatar de tug83
    Homme Profil pro
    MATLAB Geek !
    Inscrit en
    Juin 2006
    Messages
    1 781
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Alpes de Haute Provence (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : MATLAB Geek !
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 1 781
    Points : 4 039
    Points
    4 039
    Par défaut
    Rien que cette ligne ne peut pas fonctionner:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    X0=[100000 10000 1000 0 0 10 0 0 0 100000 10000 1000 m']';
    vu que:

    whos m
    Name Size Bytes Class Attributes

    m 4x6 192 double

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 26
    Points
    26
    Par défaut
    Oups excusez moi
    C'est bien cette ligne qui aurait un soucis
    Ce code est censé calculer des données sous forme de matrice.
    Bref c 'est super compliqué de reprendre un truc qu'on a pas fait !!!!!
    Je vous joins comme aide de compréhension, ce qui est donné avec comme sorte de notice si ça peut vous aider (dedans ya le script tel qu'il est donné)
    J'ai également les fichiers résultat (en fait j'aimerais tester sur d'autres données d'entrée). Voila voila c'est ce que j'ai


    le message erreur :
    ??? Error using ==> horzcat
    All matrices on a row in the bracketed expression must have the
    same number of rows.

    Encore desolée
    Merci
    Fichiers attachés Fichiers attachés

  5. #5
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Mis à part te dire où se trouve l'erreur, je me demande comment on pourrait t'aider plus.

    Tu ne nous dis pas à quoi sert le code, ce que représente les données dans data.txt, ce qu'est censé représenter X0,...

    Donc pour l'instant, à part te dire de regarder la document ou de chercher dans ce forum à propos de la concaténation de matrice.... on ne peut malheureusement rien faire

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 26
    Points
    26
    Par défaut
    Bonjour,
    En fait j'avais mis le petit document (inv_prog.doc) pour vous aider car en fait tout doit être expliqué (en principe!!! meme moi je comprends pas tout ) ,la signification des fichiers dont le fichier data.txt ( P pour pression, T pour température, Ca pour calcium de opx (orthopyroxene) et cpx (clinopyroxene)

    Après dans XO ce sont des paramètres thermodynamiques
    deltaU : différence dans l'energie interne
    deltaV : volume
    delta S : entropie

    C'est un programmation d'inversion permettant de calculer des parametres thermodynamiques
    Voila j'espere vous avoir eclairci
    Fichiers attachés Fichiers attachés

  7. #7
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    En lisant en travers le document, essaie ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    m=dlmread('/data.txt');
    m=m.';
    X0=[100000;10000;1000;0;0;10;0;0;0;100000;10000;1000;m(:)];
    Est-ce que X0 est maintenant conforme à ce qu'il devrait être ?

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 26
    Points
    26
    Par défaut
    Apparemment X0 serait conforme au niveau taille mais maintenant c'est pour E que ça marche plus
    Il me met comme message d'erreur :
    ??? Error using ==> vertcat
    All rows in the bracketed expression must have the same
    number of columns.

    Error in ==> W:\matlab\code.m
    On line 14 ==> E=[1E9;1E8;1E5;0;0;1000;0;0;0;1E9;1E8;1E5;e];
    En fait si ça peut t'aider E represente les erreurs sur les données de XO c'est à dire sur deltaU.....

    pourquoi n'ai je pas ce programme en version informatique !!!!bhouuuu

  9. #9
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    C'est presque la même erreur.

    Dans le premier cas, tu avais un problème de concaténation horizontale et dans le second, tu as un problème de concaténation verticale.

    Concaténation horizontale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A=[1 2]
    B=[3 4]
     
    C=[A B]
    Concaténation verticale :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    A=[1;2]
    B=[3;4]
     
    C=[A;B]
    Prend le temps de chercher plus d'informations à ce sujet. Parce que faire fonctionner un programme c'est une chose, mais le comprendre c'est quand même bien mieux, non ?

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 26
    Points
    26
    Par défaut
    Je suis bien d'accord , surtout quand c'est pas toi qui fait le programme!!!, c'est pas évident de se mettre dans la tete de celui qui l'a crée .
    En revanche je suis pas assez calé pour faire les modifications, celui qui l'a crée apparemment est informaticien ....j'ai ne fait pas le poids....

    Enfin je vais chercher merci quand meme

  11. #11
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Citation Envoyé par laroche1 Voir le message
    j'ai ne fait pas le poids....
    Pas besoin d'être informaticien ici.
    Si tu as compris la "différence" entre les deux exemples que j'ai montré dans mon précédent message, tu sauras mettre en forme tes données en vecteur

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 26
    Points
    26
    Par défaut
    En fait dans XO , ça ne colle pas enfait , j'ai essayé ça a tourné mais ça n'a mis que des Nan.....donc c'est pas ça

    Je viens de voir que dans X0 je ne retrouve pas toutes mes données data.

    pour lui : X0 = line matrix of the prior parameters and data

    de plus dans m j'ai une colonne que de 0 ....ça vient de quoi??

  13. #13
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Citation Envoyé par laroche1 Voir le message
    de plus dans m j'ai une colonne que de 0 ....ça vient de quoi??
    D'un léger problème de lecture du fichier texte.
    Il suffit de supprimer la dernière colonne de m :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    m=dlmread('/data.txt');
    m(:,end)=[];

    Si tu veux tester si toutes les valeurs de la dernière colonne de m sont à 0 avant de la supprimer (ça évite de supprimer la ou on ne devrait pas le faire) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    m=dlmread('/data.txt');
    if all(m(:,end)==0)
       m(:,end)=[];   
    end

  14. #14
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 26
    Points
    26
    Par défaut
    merci le test a marché pour enlever la derniere colonne de 0
    Bon je vais retester pour le xo

    j'ai refait le truc

    est ce que c'est ça ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    E=dlmread('W:/matlab/error.txt','\t');
    e=dlmread('W:/matlab/error.txt');
    e=e.';
    E=[1E9;1E8;1E5;0;0;1000;0;0;0;1E9;1E8;1E5;e(:)]
    A+


    oups dslée pour la mise en forme

  15. #15
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 313
    Points : 52 939
    Points
    52 939
    Par défaut
    Citation Envoyé par laroche1 Voir le message
    est ce que c'est ça ??
    Je ne sais pas si les valeurs ont bien rangées dans le vecteurs, mais en tout cas, MATLAB ne renvoie pas d'erreur

  16. #16
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 26
    Points
    26
    Par défaut
    Matlab ne te retourne pas d'erreur?? t'as essayé de le lancer ?? je comprends plus rien... (c'est le froid ...)
    car moi j'ai un soucis plus loin dans le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     for b=14:a+12
       		            p=[p;X(1)+X(b)*X(2)-X(a+b)*X(3)+8.314*X(a+b)*log((1-X(2*a+b))/(1-X(3*a+b)))+((X(2*a+b))^2)*(X(4)+X(b)*X(5)-X(6)*X(a+b))-((X(3*a+b))^2)*(X(7)+X(8)*X(b)-X(9)*X(b+a))];
                	end

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2007
    Messages
    62
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 62
    Points : 26
    Points
    26
    Par défaut
    Bonjour après avoir rectifié les erreurs comme vous me l'aviez indiqué , j'ai une autre erreur qui apparait mais je ne vois pas le probleme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ??? Error using ==> *
    Inner matrix dimensions must agree.
     
    Error in ==> W:\matlab\code.m
    On line 77  ==>    X=X0+C0*G'*inv(G*C0*G')*(G*(X-X0)-g);
    Si vous pouviez m'aider encore une derniere fois ça serait gentil
    Merci


    code modifié

    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
    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
    92
    93
    94
    95
    96
    97
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    % Program for ideal orthopyroxene / symmetric clinopyroxene models
     
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     
    clear
    M=dlmread('W:/matlab/data.txt','\t');			
    j=size(M);
    m=dlmread('W:/matlab/data.txt');	
     
    if all(m(:,end)==0)
       m(:,end)=[];   
    end
    m=m.';
    X0=[100000;10000;1000;0;0;10;0;0;0;100000;10000;1000;m(:)]'
    %E=dlmread('W:/matlab/error.txt','\t');
    e=dlmread('W:/matlab/error.txt');
    e=e.';
    E=[1E9;1E8;1E5;0;0;1000;0;0;0;1E9;1E8;1E5;e(:)]
    D=size(X0);								
    C0=eye(D(1));								
        for i=1:D(1)								
          C0(i,i)= E(i);							
            X=X0;											
            a=[j(1,2)];
     
            for h=1:50									
                p=[X(1)+X(12+1)*X(2)-X(12+a+1)*X(3)+8.314*X(12+a+1)*log((1-X(12+2*a+1))/(1-X(12+3*a+1)))+((X(12+2*a+1))^2)*(X(4)+X(12+1)*X(5)-X(6)*X(12+a+1))-((X(12+3*a+1))^2)*(X(7)+X(8)*X(12+1)-X(9)*X(12+a+1))];
     
     
     
     
                for b=14:a+12
       		            p=[p;X(1)+X(b)*X(2)-X(a+b)*X(3)+8.314*X(a+b)*log((1-X(2*a+b))/(1-X(3*a+b)))+((X(2*a+b))^2)*(X(4)+X(b)*X(5)-X(6)*X(a+b))-((X(3*a+b))^2)*(X(7)+X(8)*X(b)-X(9)*X(b+a))];
                	end
                P1=[1 X(13) -X(12+a+1) (X(12+2*a+1))^2 (X(12+2*a+1))^2*X(13) -(X(12+2*a+1))^2*X(12+a+1) -(X(12+3*a+1))^2 -(X(12+3*a+1))^2*X(13) (X(12+3*a+1))^2*X(12+a+1)];
     
                    for z=14:a+12
                         P1=[P1;1 X(z) -X(z+a) (X(z+2*a))^2 (X(z+2*a))^2*X(z) -(X(z+2*a))^2*X(z+a) -(X(z+3*a))^2 -(X(z+3*a))^2*X(z) (X(z+3*a))^2*X(z+a)];
                    end
       P2=zeros(a,3);   
       P3=eye(a);
       P4=eye(a);
       P5=eye(a);
       P6=eye(a);
         	       for y=1:a
                         P3(y,y)=X(2)+(X(12+y+2*a))^2*X(5)-(X(12+y+3*a))^2*X(8);
       		            P4(y,y)=-X(3)+8.314*log((1-X(2*a+12+y))/(1-X(3*a+12+y)))-X(6)*(X(2*a+12+y))^2+X(9)*(X(3*a+12+y))^2;
                       P5(y,y)=-8.314*X(12+a+y)/(1-X(2*a+12+y))+2*X(12+2*a+y)*(X(4)+X(12+y)*X(5)-X(12+a+y)*X(6));
                      P6(y,y)=8.314*X(12+a+y)/(1-X(3*a+12+y))-2*X(12+3*a+y)*(X(7)+X(8)*X(12+y)-X(12+a+y)*X(9));
                   end 
        P=[P1 P2 P3 P4 P5 P6];   
       f=[X(10)+X(12+1)*X(11)-X(a+12+1)*X(12)+8.314*X(12+a+1)*log(X(12+3*a+1)/X(12+2*a+1))-(1-X(12+2*a+1))^2*(X(4)+X(12+1)*X(5)-X(6)*X(12+1+a))+(1-X(12+3*a+1))^2*(X(7)+X(8)*X(12+1)-X(9)*X(12+a+1))];
            	for b=14:a+12
             	    f=[f;X(10)+X(b)*X(11)-X(a+b)*X(12)+8.314*X(a+b)*log(X(3*a+b)/X(2*a+b))-(1-X(2*a+b))^2*(X(4)+X(b)*X(5)-X(6)*X(a+b))+(1-X(3*a+b))^2*(X(7)+X(8)*X(b)-X(9)*X(b+a))];
                 end
       F2=[-(1-X(12+2*a+1))^2 -(1-X(12+2*a+1))^2*X(12+1) (1-X(12+1+2*a))^2*X(12+a+1) (1-X(12+3*a+1))^2 (1-X(12+3*a+1))^2*X(12+1) -(1-X(12+3*a+1))^2*X(12+a+1) 1 X(12+1) -X(12+a+1)];
     
              for z=14:a+12
                F2=[F2;-(1-X(z+2*a))^2 -(1-X(z+2*a))^2*X(z) (1-X(z+2*a))^2*X(z+a) (1-X(z+3*a)^2) (1-X(z+3*a))^2*X(z) -(1-X(z+3*a)^2)*X(z+a) 1 X(z) -X(z+a)];
              end
       F1=zeros(a,3);   
       F3=eye(a);
       F4=eye(a);
       F5=eye(a);
       F6=eye(a);
             	for y=1:a
                  F3(y,y)=X(11)-(1-X(12+y+2*a))^2*X(5)+(1-X(12+y+3*a))^2*X(8);
       		    F4(y,y)=-X(12)+8.314*log(X(3*a+12+y)/X(2*a+12+y))+X(6)*(1-X(2*a+12+y))^2-X(9)*(1-X(3*a+12+y))^2;
                 F5(y,y)=-8.314*X(12+a+y)/X(2*a+12+y)+2*(1-X(12+2*a+y))*(X(4)+X(12+y)*X(5)-X(12+a+y)*X(6));
                  F6(y,y)=8.314*X(12+a+y)/X(3*a+12+y)+2*(X(12+3*a+y)-1)*(X(7)+X(8)*X(12+y)-X(12+y+a)*X(9));
        	    end
      	F=[F1 F2 F3 F4 F5 F6];
       g=[p;f];  
       G=[P;F];    
       X=X0+C0*G'*inv(G*C0*G')*(G*(X-X0)-g);
       R=[X(1) X(2) X(3) X(4) X(5) X(6) X(7) X(8) X(9) X(10) X(11) X(12)]
     
        end
    C=C0-C0*G'*inv(G*C0*G')*G*C0;
    W=[C(1,1) C(1,2) C(1,3) C(1,4) C(1,5) C(1,6) C(1,7) C(1,8) C(1,9) C(1,10) C(1,11) C(1,12)];
            for v=2:12
                W=[W; C(v,1) C(v,2) C(v,3) C(v,4) C(v,5) C(v,6) C(v,7) C(v,8) C(v,9) C(v,10) C(v,11) C(v,12)];
            end
    D=[E(1) E(2) E(3) E(4) E(5) E(6) E(7) E(8) E(9) E(10) E(11) E(12)];
    Q=[D;R;W];
            for i=1:a
           ka(i)=[X(i+12)];
          kb(i)=[X(i+12+a)];
          kc(i)=[X(i+12+2*a)];
          kd(i)=[X(i+12+3*a)];
            end
    K=[ka;kb;kc;kd];
    end
    dlmwrite('W:/matlab/reslt.txt',Q,'\t')
    dlmwrite('W:/matlab/rcomp.txt',K,'\t')

Discussions similaires

  1. débutante:problème dans un script de jeu,inventé
    Par labelgikaine dans le forum Général Python
    Réponses: 5
    Dernier message: 02/12/2013, 23h27
  2. Débutant : Problème de compréhension d'un script
    Par developman dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 12/04/2011, 22h20
  3. [Débutant] Problème script ressource tuto
    Par MaN@eDeN dans le forum Windows
    Réponses: 8
    Dernier message: 08/03/2006, 23h20
  4. [Débutant] Problème de Script
    Par FREMY dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 26/08/2005, 14h00
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

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