Problème graphique Matlab

Réponses à toutes vos questions après le Bac (Fac, Prépa, etc.)
maf
Membre Rationnel
Messages: 911
Enregistré le: 08 Jan 2007, 17:57

Problème graphique Matlab

par maf » 08 Mai 2009, 08:41

Bonjour à tous,

J'ai fait un bout de code sous Matlab qui me permet de calculer les t et theta_a correspondants au travers d'une boucle.

J'essaie de faire conservé à Matlab les résultats de chacune des 3600 étapes que comporte ma boucle sous forme de graphique mais une fois la boucle terminée, il me ferme le graphe ...

Pourriez-vous m'indiquer comment mieux faire ?

Code: Tout sélectionner
% Projet GC acier inoxydable, Marc-Antoine Fénart
% Initialisation des valeurs
Am = 1.56;
V = 0.024301;
massivete = Am/V
alpha_c = 25;
epsi_res = 0.4;
rho_a = 7800;
phi = 1;
t=0;
theta_g = 20+345*log10(8*t/60+1)
theta_a = 20;
hnetr = phi*epsi_res*5.67*10^(-8)*(((theta_g + 273)^(4))-((theta_a + 273)^(4)))
hnetc = alpha_c*(theta_g - theta_a)
hnetd = hnetr + hnetc
ca = 450+0.28*theta_a-2.91*10^(-4)*(theta_a)^(2)+1.34*10^(-7)*(theta_a)^(3)
delta_t = 1
delta_theta_a_t = (massivete/(ca*rho_a))*hnetd*delta_t
% Mise à jour des valeurs
for i = 1:3600;
  i=i;
  t=t+delta_t
  theta_g = 20+345*log10(8*t/60+1)
  theta_a = theta_a+delta_theta_a_t
  hnetr = phi*epsi_res*5.67*10^(-8)*(((theta_g + 273)^(4))-((theta_a + 273)^(4)))
  hnetc = alpha_c*(theta_g - theta_a)
  hnetd = hnetr + hnetc
  ca = 450+0.28*theta_a-2.91*10^(-4)*(theta_a)^(2)+1.34*10^(-7)*(theta_a)^(3)
  delta_theta_a_t = (massivete/(ca*rho_a))*hnetd*delta_t 
plot(t,theta_a)
end;



Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 08 Mai 2009, 09:19

salut,

es-tu réellement sur que ton plot est fermé?

Par ailleurs, c'est la premiere fois que je vois un plot avec deux scalaires.
Eventuellement tu peux pe tenter pour i= 1 a 1. Histoire de voir si tu as un plot (ce dont je doute, mais je peux me tromper).
la vie est une fête :)

Avatar de l’utilisateur
fatal_error
Membre Légendaire
Messages: 6610
Enregistré le: 22 Nov 2007, 12:00

par fatal_error » 08 Mai 2009, 10:02

Comme je m'ennuie par cette douce journée fériée, voici ton code a peu pres corrigé :

Code: Tout sélectionner
% Projet GC acier inoxydable, Marc-Antoine Fénart
% Initialisation des valeurs
Am            = 1.56;
V             = 0.024301;
massivete      = Am/V;

N            = 100;                        % Nombre de valeurs a calculer
delta_t         = 1;
t            = 0;                        % Temps initial
vTemps         = t:delta_t:(N+1)*delta_t;         % Vecteur du temps
alpha_c         = 25;
epsi_res      = 0.4;
rho_a         = 7800;
phi            = 1;
theta_g         = 20+345*log10(8*vTemps(1)/60+1);      
theta_a(1:N+1)   = 20;                        % Vecteur des temperatures aux instants t
hnetr         = phi*epsi_res*5.67*10^(-8)*(((theta_g + 273)^(4))-((theta_a(1) + 273)^(4)));
hnetc         = alpha_c*(theta_g - theta_a(1));
hnetd         = hnetr + hnetc;
ca            = 450+0.28*theta_a(1)-2.91*10^(-4)*(theta_a(1))^(2)+1.34*10^(-7)*(theta_a(1))^(3);
delta_theta_a_t = (massivete/(ca*rho_a))*hnetd*delta_t;


% Mise à jour des valeurs
% On commence la premiere mesure au temps 0 + delta_t (cf ton algo)
for i = 1:N
  t            = vTemps(i+1);
  theta_g       = 20+345*log10(8*t/60+1);
  theta_a(i+1)   = theta_a(i)+delta_theta_a_t;
  hnetr       = phi*epsi_res*5.67*10^(-8)*(((theta_g + 273)^(4))-((theta_a(i+1) + 273)^(4)));
  hnetc       = alpha_c*(theta_g - theta_a(i+1));
  hnetd       = hnetr + hnetc;
  ca          = 450+0.28*theta_a(i+1)-2.91*10^(-4)*(theta_a(i+1))^(2)+1.34*10^(-7)*(theta_a(i+1))^(3);
  delta_theta_a_t = (massivete/(ca*rho_a))*hnetd*delta_t;
end
plot(vTemps(2:N+1),theta_a(2:N+1));               % on ne trace pas l'instant initial. On pourrait.


Il faudrait que tu remplaces toutes les valeurs numériques par des variables, même constantes. ex : l'offset de temperature 273 ( degré kelvin de memoire) par offKelvin.
Ca parait inutile, mais si jamais, par le plus grand des hasards, tu as besoin de reutiliser ton code, tu seras content ;-).

Dans lalgo pseudo corrigé, si tu veux suivre le tracé des points, tu peux toutefois procéder avec l'instruction hold('on') qui te permet de tracer plusieurs courbes sur le même graphe.
Autrement dit, a chaque boucle, tu fais un plot(t,theta_a(i+1)); et tes points seront ajoutés sur le même graphe a chaque itération.
la vie est une fête :)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 231 invités

Tu pars déja ?



Fais toi aider gratuitement sur Maths-forum !

Créé un compte en 1 minute et pose ta question dans le forum ;-)
Inscription gratuite

Identification

Pas encore inscrit ?

Ou identifiez-vous :

Inscription gratuite