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 :

Mon programme Matlab tourne mal!


Sujet :

MATLAB

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Mon programme Matlab tourne mal!
    Salut à tous, J'ai écrit un programme matlab qui devrait travailler avec des nombres réels, mais malheureusement il tourne avec des nombres complexes et en veut plus s'arrêter. Voudriez-vous bien m'aider, s'il vous plait?

  2. #2
    Membre régulier Avatar de thtghgh
    Homme Profil pro
    Inscrit en
    Mai 2009
    Messages
    221
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 221
    Points : 88
    Points
    88
    Par défaut
    Oui on aimerait bien t'aider, mais pour cela tu devrais nous en dire un peu plus sur ton code et surtout nous le montrer.

  3. #3
    Membre confirmé
    Avatar de Dam2227
    Inscrit en
    Juin 2007
    Messages
    343
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juin 2007
    Messages : 343
    Points : 487
    Points
    487
    Par défaut
    Tout à fait d'accord avec thtghgh. Et sinon, si tu veux arrêter l'exécution d'un programme, tu peux faire ctrl+c.

    ++

  4. #4
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut Je ne suis pas au bout de mes peines
    Salut et merci pour le conseil. J’ai essayé d’arrêter le programme en cliquant sur Ctrl+C mais le programme ne s’est pas arrêté. Au fait, je pense que ton conseil va dans le sens de pouvoir m’aider à répérer là où le problème se pose. Je pense que je le sais : le problème a commencé lorsque j’ai introduit une suite de commandes conditionnelles « if ». Voici ces fameuses conditions ! En fait, je ne peux pas envoyer tout le code : cela fait 849 lignes.

    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
    %calcul du coefficient d'échange entre le fluide caloporteur et l'absorbeur
    t_m(i)=(1/4)*(t_ab(i)+3+t_efc+t_ab(i)+t_ab(i)), %température moyenne
    t_pa(i)=0.5*(t_ab(i)+3+t_ab(i)), %température de la paroi
     
    l_t=L_cap, %longueur des tubes de l'absorbeur
    %masse volumique du fluide caloporteur
    d2=t_m(i)^2, %pour faciliter le calcul de m_v_fc(i)
    d3=-0.0505*t_m(i), %pour faciliter le calcul de m_v_fc(i)
    m_v_fc(i)=1002.6-0.0038*d2+d3, 
    %viscosité du fluide caloporteur à la température moyenne
    mu_fc_m(i)=10^(-4)*(0.002*(t_m(i))^2-0.3389*t_m(i)+17.199),
    %viscosité du fluide caloporteur à la température de la paroi
    mu_fc_p(i)=10^(-4)*(0.002*(t_m(i))^2-0.3389*t_m(i)+17.199),
    R_e(i)=(m_v_fc(i)*u_fc*d_ieq)/mu_fc_m(i),    % calcul du nombre de Reynolds Re
    lanbda_fc(i)=-9.87*10^(-6)*(t_m(i))^2+2.238*10^(-3)*t_m(i)+0.05536, %conductivité du fluide caloporteur
    P_r(i)=(mu_fc_m(i)*c)/lanbda_fc(i),   %Calcul du nombre de Prandtl Pr
    %nombre de Grashof     
    G_r(i)=(0.0105*(t_m(i))^2+0.477*t_m(i)-0.0363)*10^9*(t_pa(i)-t_m(i))*((d_ieq)^3)*lanbda_fc(i)/(mu_fc_m(i)*c),
     
    ex=l_t/d_ieq,
            d1(i)=R_e(i)*P_r(i)*d_ieq/l_t,
    if ((R_e(i)<2300)&(d1(i)>10)),
       h_fi(i)=1.86*lanbda_fc(i)/(d_ieq)*(mu_fc_m(i)/mu_fc_p(i))^0.14*(d1)^0.33,    
      end
      if ((R_e(i)<2300)&(d1(i)>100)),
        h_fi(i)=(lanbda_fc(i)/(d_ieq))*d1(i)*log(1/(1-2.654/(P_r(i)^0.167 )*(d1(i))^0.5)),
      end
    cal1=(R_e(i))^2,
    cal2=10*(R_e(i))^2,
    if ((ex >50)&(cal1<G_r(i))&(G_r(i)<cal2)), 
    h_fi(i)=1.75*lanbda_fc(i)/(d_ieq)*(mu_fc_m(i)/mu_fc_p(i))^(0.14)*(R_e(i)*P_r(i)*d_ieq/l_t +0.012*(G_r(i)^(0.33)*R_e(i)*P_r(i)*d_ieq/l_t )^(1.33))^(0.33),
    end 
        if ((R_e(i)>4000)&(0.7<P_r(i))&(P_r(i)<700)&(ex >60)), 
     h_fi(i)=0.023*lanbda_fc(i)/d_ieq*R_e(i)^(0.8)*P_r(i)^(0.33),
        end
     if ((R_e(i)>4000)&(ex<60)), 
    h_fi(i)=0.023*lanbda_fc(i)/(d_ieq)*(1+l_t/(d_ieq))^(0.7)*R_e(i)^(0.8)*P_r(i)^(0.33),
     end

  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 318
    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 318
    Points : 52 958
    Points
    52 958
    Par défaut
    As-tu des boucles WHILE-END dans ton programme ?
    Si oui, es-tu sûr que la condition devient fausse à un moment donné pour pouvoir interrompre la boucle ?

    Sinon, as-tu essayé avec un jeu de données réduites ?
    Il se peut que ton programme soit (très) long à exécuter...

  6. #6
    Candidat au Club
    Inscrit en
    Juin 2009
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 4
    Points : 2
    Points
    2
    Par défaut je me suis séparé de ma série de commandes if
    Citation Envoyé par Dut Voir le message
    As-tu des boucles WHILE-END dans ton programme ?
    Si oui, es-tu sûr que la condition devient fausse à un moment donné pour pouvoir interrompre la boucle ?

    Sinon, as-tu essayé avec un jeu de données réduites ?
    Il se peut que ton programme soit (très) long à exécuter...

    Mon programme a effectivement des boucles while.
    Le problème est ailleurs puisque quand j'enlève la série de commandes if, le programme marche bien. Tenez, quand je remplace cette série de commandes if par l'instruction que voici:

    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
     
    %calcul du coefficient d'échange entre le fluide caloporteur et l'absorbeur
    t_m(i)=(1/4)*(t_ab(i)+3+t_efc+t_ab(i)+t_ab(i)), %température moyenne
    t_pa(i)=0.5*(t_ab(i)+3+t_ab(i)), %température de la paroi
     
    l_t=L_cap, %longueur des tubes de l'absorbeur
    %masse volumique du fluide caloporteur
    d2=t_m(i)^2, %pour faciliter le calcul de m_v_fc(i)
    d3=-0.0505*t_m(i), %pour faciliter le calcul de m_v_fc(i)
    m_v_fc(i)=1002.6-0.0038*d2+d3, 
    %viscosité du fluide caloporteur à la température moyenne
    mu_fc_m(i)=10^(-4)*(0.002*(t_m(i))^2-0.3389*t_m(i)+17.199),
    %viscosité du fluide caloporteur à la température de la paroi
    mu_fc_p(i)=10^(-4)*(0.002*(t_m(i))^2-0.3389*t_m(i)+17.199),
    R_e(i)=(m_v_fc(i)*u_fc*d_ieq)/mu_fc_m(i),	% calcul du nombre de Reynolds Re
    lanbda_fc(i)=-9.87*10^(-6)*(t_m(i))^2+2.238*10^(-3)*t_m(i)+0.05536, %conductivité du fluide caloporteur
    P_r(i)=(mu_fc_m(i)*c)/lanbda_fc(i),   %Calcul du nombre de Prandtl Pr
     
    h_fi(i)=0.023*lanbda_fc(i)/d_ieq*R_e(i)^(0.8)*P_r(i)^(0.4),%calcul du coefficient d'échange
    le programme tourne normalement.
    Je préfère pour le moment m'en tenir compte tenu de mon emploi du temps très chargé.
    MERCI A TOUS ET A TRES BIENTOT:

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    769
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 769
    Points : 726
    Points
    726
    Par défaut
    Pour la partie imaginaire, c'est parce que tu utilises la variable "i".

    Essaies d'utiliser "i" que pour des nombres imaginaires.

Discussions similaires

  1. mon programme tourne en boucle
    Par domxaline dans le forum Langage
    Réponses: 4
    Dernier message: 12/06/2009, 19h46
  2. Savoir sur quel os tourne mon programme
    Par clampin dans le forum Débuter
    Réponses: 4
    Dernier message: 13/09/2008, 01h28
  3. Mon programme tourne fou
    Par beegees dans le forum C++
    Réponses: 23
    Dernier message: 27/04/2008, 14h35
  4. Réponses: 12
    Dernier message: 03/04/2008, 14h19
  5. Réponses: 11
    Dernier message: 17/03/2003, 11h56

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