Mon programme matlab s'exécute mal et ne s'arrête plus!
Affichage des résultats 1 à 10 sur 10

Mon programme matlab s'exécute mal et ne s'arrête plus!



  1. #1
    halyins
    Invité

    Mon programme matlab s'exécute mal et ne s'arrête plus!


    ------

    salut à tous!
    J'ai écrit un programme matlab qui est sensé s'exécuter avec des nombres réels. malheureusement, ce programme s'exécute avec des nombres complexes et ne veut plus s'arrêter.ce problème me bloque et me tracasse énormément. Voudriez-vous bien m'aider, s'il vous plait?

    -----

  2. #2
    inviteabd566ec

    Re : Mon programme matlab s'exécute mal et ne s'arrête plus!

    Bonjour,

    si matlab passe à un moment en nombres complexes, c'est qu'il en a eu besoin à un moment de ton programme (racine de nombre négatifs, FFT ...). Donc la première chose serait de voir quelle étape génère ces nombres complexes.
    Après tu peux utiliser des fonctions comme abs, arg, real, imag pour récupérer que le module, l'argument, la partie réelle ou la partie imaginaire de tes nombres.

    Voila, sinon tu peux peut être poster ton code s'il est pas trop long, pour qu'on puisse voir un peu plus précisément où ça foire.

  3. #3
    invite29104ecc

    Re : Mon programme matlab s'exécute mal et ne s'arrête plus!

    Bonjour,

    Pourriez vous m'indiquer s'il est possible de se procurer matlab gratuitement?

    Merci, au revoir...

  4. #4
    invite24284b7c

    Re : Mon programme matlab s'exécute mal et ne s'arrête plus!

    Citation Envoyé par kenvz Voir le message
    Bonjour,

    Pourriez vous m'indiquer s'il est possible de se procurer matlab gratuitement?

    Merci, au revoir...
    Non, les licences sont très chères. Mais il existe une copie de Matlab, "Scilab" qui est libre et donc gratuite! téléchargeable sur leur site...

  5. A voir en vidéo sur Futura
  6. #5
    invite29104ecc

    Re : Mon programme matlab s'exécute mal et ne s'arrête plus!

    Merci! c'est exactement la même chose?

  7. #6
    invite24284b7c

    Re : Mon programme matlab s'exécute mal et ne s'arrête plus!

    Alors ça a été développé par un labo de l'inria en france. C'est pas le même nom pour les fonctions hein mais c'est pareil! en gros y'a des équivalents pour toutes les fonctions et les boites à outils (toolbox), équivalent de simulink aussi...

  8. #7
    halyins
    Invité

    Re : Mon programme matlab s'exécute mal et ne s'arrête plus!

    Citation Envoyé par kenvz Voir le message
    Bonjour,

    Pourriez vous m'indiquer s'il est possible de se procurer matlab gratuitement?

    Merci, au revoir...



    Salut et merci pour le conseil. 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.

    %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.47 7*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)<cal 2)),
    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.3 3),
    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

  9. #8
    halyins
    Invité

    Re : Mon programme matlab s'exécute mal et ne s'arrête plus!

    Citation Envoyé par Franzzzzzzzz Voir le message
    Bonjour,

    si matlab passe à un moment en nombres complexes, c'est qu'il en a eu besoin à un moment de ton programme (racine de nombre négatifs, FFT ...). Donc la première chose serait de voir quelle étape génère ces nombres complexes.
    Après tu peux utiliser des fonctions comme abs, arg, real, imag pour récupérer que le module, l'argument, la partie réelle ou la partie imaginaire de tes nombres.

    Voila, sinon tu peux peut être poster ton code s'il est pas trop long, pour qu'on puisse voir un peu plus précisément où ça foire.


    Salut et merci pour le conseil. 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.

    %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.47 7*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)<cal 2)),
    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.3 3),
    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

  10. #9
    inviteabd566ec

    Re : Mon programme matlab s'exécute mal et ne s'arrête plus!

    Bonjour,

    oui je ne vois pas trop ce qui peut faire des nombres complexes là dedans. Bon, matlab me signale quelques erreurs mais ça doit juste être du au copier-coller (un P_r(i) avec un espace entre le P et le _ , et d'autres espaces à certains endroits, rien de très grave). Essayes peut-être de remplacer les & par des && dans les if (normalement dans ton cas se serait plutôt des &&). Après si tu as toujours des problèmes, je te conseille de changer le nom de ton indice de boucle de i à ii, parce que i c'est le symbole de sqrt(-1), ce qui fait que si jamais tu as mal écrit une équation (un i qui sort d'une parenthèse sans y avoir été invité) tu peux te retrouver en complexe.
    Si ça marche toujours pas, tu peux mettre des conditions du type if ~isreal(variable), disp('probleme') ; end ; un peu partout et voir vraiment où arrivent les complexes, ou alors le faire en temps réel avec le debugger.

    Bon courage, tiens moi au courant si tu arrives à résoudre le problème, et aussi si tu n'y arrives pas !

  11. #10
    halyins
    Invité

    Re : Mon programme matlab s'exécute mal et ne s'arrête plus!

    Citation Envoyé par Franzzzzzzzz Voir le message
    Bonjour,

    oui je ne vois pas trop ce qui peut faire des nombres complexes là dedans. Bon, matlab me signale quelques erreurs mais ça doit juste être du au copier-coller (un P_r(i) avec un espace entre le P et le _ , et d'autres espaces à certains endroits, rien de très grave). Essayes peut-être de remplacer les & par des && dans les if (normalement dans ton cas se serait plutôt des &&). Après si tu as toujours des problèmes, je te conseille de changer le nom de ton indice de boucle de i à ii, parce que i c'est le symbole de sqrt(-1), ce qui fait que si jamais tu as mal écrit une équation (un i qui sort d'une parenthèse sans y avoir été invité) tu peux te retrouver en complexe.
    Si ça marche toujours pas, tu peux mettre des conditions du type if ~isreal(variable), disp('probleme') ; end ; un peu partout et voir vraiment où arrivent les complexes, ou alors le faire en temps réel avec le debugger.

    Bon courage, tiens moi au courant si tu arrives à résoudre le problème, et aussi si tu n'y arrives pas !


    Salut,

    J'ai remplacé le & par &&, mais matlab a signalé && comme une erreur. Je ne sais pas si c'est dû au fait que c'est la version 6.1.
    J'ai remplacé i par ii mais ce fut la même chose: c'est-à-dire que le programme s'exécute toujours avec des nombres complexes.
    Par rapport à la dernière alternative que tu m'as proposée, j'ai mis deif~isreal(h_fi(ii)), disp('problème'), mais le programme continue à s'exécuter sans s'arrêter.

    j'ai décidé de me séparer de ma série de commandes if en la remplaçant par les instructions que voici:



    %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


    et le programme tourne normalement.
    Je préfère pour le moment m'en tenir à cela pour le moment compte tenu de mon emploi du temps très chargé.
    MERCI BEAUCOUP POUR LA DISPONIBILITE ET L'AIDE REELLE QUE TU M'AS APPORTE, PORTE-TOI. JE TE RECONTACTERAI CERTAINEMENT!

Discussions similaires

  1. [Blanc] le programme de lavage s'exécute trop vite
    Par invited4808e09 dans le forum Dépannage
    Réponses: 2
    Dernier message: 16/03/2009, 09h49
  2. [Blanc] Mon lave vaisselle s'arrête en cours de programme (Whirlpool dwf 407)
    Par invite8d839d57 dans le forum Dépannage
    Réponses: 9
    Dernier message: 01/11/2008, 15h02
  3. [Blanc] Lave linge Brandt s'arrête en cours de programme voyants allumés
    Par invite37135c90 dans le forum Dépannage
    Réponses: 2
    Dernier message: 17/12/2007, 08h57
  4. mon LV bosch SGI560607 s'arrête en cour de programme
    Par inviteb134f7e0 dans le forum Dépannage
    Réponses: 9
    Dernier message: 05/06/2006, 10h02
  5. MaL s'arrête après remplissage
    Par invitee73dbb39 dans le forum Dépannage
    Réponses: 3
    Dernier message: 19/01/2006, 12h15