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 :

Programme avec conditions de sortie à respecter


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Programme avec conditions de sortie à respecter
    Bonjour à tous,

    dans le cadre d'un projet je dois résoudre un système d'équation avec une condition de sortie à respecter.

    En fait dans une boucle while qui est conditionné par une conversion à atteindre, je rajoute deux if sur deux conditions à respecter: une condition de température de sortie à atteindre et une condition de pression qu'il ne faut pas atteindre.

    Voilà ce que j'ai codé:

    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
    conv_rate=0;Fas=Fae_inst;volume_cata1=0;delta_T=50;
    Fas_Ts_Conv_rate=[];L_dt_Ps=[];nombre_reacteurs=[];Ps1=Pe;L=1;B=0;Fas=Fae_inst;
     
    while conv_rate <0.95 % Choice of the diameter to reach a conversion rate of 0.95 
    Fae=Fas;Ps=Ps1;dt=L/rapport_H_dt;
    S=pi*dt^2/4;Uv0=Qv0/S;Re=Qm*dp/S/visco;x0=[Fae Te Ps];long=(0:pas_L:L);
    [z,x]=ode45('function_opt_T_P_dt_var',long,x0);
     
    %Solution Matrix cutting (je sors de mon vecteur solution les solutions de sorties pour FA, P et T)
    lgth=size(x);
    Fa1=x(:,1); Fas=x(lgth(1,1),1)
    T1=x(:,2);Ts=x(lgth(1,1),2)
    P1=x(:,3);Ps1=x(lgth(1,1),3)
    conv_rate=(Fae_inst-Fas)/Fae_inst;
     
    if(Ts>=Te-delta_T)
        L=L+0.1;%pour info il faut aggrandir la longueur pour augmenter Ts.
        Fas=Fae;Ps1=Ps;
    end
     
    if Ps1<p0
        Pe=Pe+1*10^5
        conv_rate=0;Fas=Fae_inst;volume_cata1=0;
    Fas_Ts_Conv_rate=[];L_dt_Ps=[];nombre_reacteurs=[];Ps1=Pe;L=1;B=0;Ts=Te;   
    end
     
    if(Ts<Te-delta_T)%pour l'affichage
    Ps2=Ps1/10^5;
    Fas_Ts_Conv_rate=[Fas_Ts_Conv_rate; Fas Ts conv_rate]
    L_dt_Ps=[L_dt_Ps; L dt Ps2]
    end
     
    end
    Ps2=Ps1/10^5;
    Fas_Ts_Conv_rate=[Fas_Ts_Conv_rate; Fas Ts conv_rate]
    L_dt_Ps=[L_dt_Ps; L dt Ps2]
    end
    end
    Fas_Ts_Conv_rate
    L_dt_Ps
    Or quand je lance j'obtiens:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Fas_Ts_Conv_rate =
     
       94.8212  662.1428    0.2149
       73.7872  678.7911    0.3890
       57.9821  696.4931    0.5199
       41.4597  694.0650    0.6567
       25.7384  696.7771    0.7869
       10.9332  699.8782    0.9095
       10.9332  731.7490    0.9541
    Donc ça veut dire que ma condition sur le Ts n'est pas respectée .. Sauriez-vous d'ou cela peut venir ?


    Merci d'avance.

    Laurie

  2. #2
    Membre régulier
    Inscrit en
    Décembre 2012
    Messages
    97
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 97
    Points : 87
    Points
    87
    Par défaut
    Bonjour,

    Si les deux conditions, portant respectivement sur Ts et sur Ps1, doivent toutes deux être respectées simultanément, la syntaxe serait plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    while conv_rate < 0.95 
     
        if (Ts < Te - delta_T) && (Ps1 < p0)
            % blabla
        elseif (Ts >= Te - delta_T) && (Ps1 < p0)
            % blabla
        end
     
    end
    Si la condition sur Ps1 doit être vérifiée après la condition sur Ts, ce serait alors :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    while conv_rate < 0.95 
     
        if (Ts >= Te - delta_T)
            % blabla
            if (Ps1 < p0)
                % blabla 
            end
        elseif (Ts < Te - delta_T)
        % blabla
        end
     
    end
    Tu définis deux fois la même chose ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    conv_rate=0;Fas=Fae_inst;volume_cata1=0;delta_T=50;
    Fas_Ts_Conv_rate=[];L_dt_Ps=[];nombre_reacteurs=[];Ps1=Pe;L=1;B=0;Fas=Fae_inst;
    Tu as également deux end inutiles en fin de code, un reliquat d'autre chose peut être.

Discussions similaires

  1. Boucle avec condition sur la sortie
    Par niafron71 dans le forum PL/SQL
    Réponses: 7
    Dernier message: 07/02/2013, 15h34
  2. problème avec condition " if " et "liste" pour programme
    Par hypnotief dans le forum Général Python
    Réponses: 10
    Dernier message: 22/03/2011, 21h49
  3. Macro avec conditions de sorties
    Par vivicente dans le forum VBA Access
    Réponses: 5
    Dernier message: 11/06/2008, 13h39
  4. Plusieurs sous-programmes ou un programme avec plein de conditions ?
    Par svagrim dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 09/07/2007, 19h26
  5. boucle avec condition d'arret changeante
    Par NicoH dans le forum Langage
    Réponses: 3
    Dernier message: 10/06/2003, 11h48

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