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?
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?
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.
Tout à fait d'accord avec thtghgh. Et sinon, si tu veux arrêter l'exécution d'un programme, tu peux faire ctrl+c.
++
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
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:
le programme tourne normalement.
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
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:
Pour la partie imaginaire, c'est parce que tu utilises la variable "i".
Essaies d'utiliser "i" que pour des nombres imaginaires.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager