[Résolu] Problème 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
-
par maf » 23 Avr 2009, 11:56
Bonjour à tous,
J'ai écris quelques commandes dans un fichier matlab (.m) pour me faciliter la tâche avec les calculs.
Mais je dois itérer sur ces valeurs et je n'arrive pas à écrire convenablement la boucle.
Voici le code pour la première étape qui fonctionne correctement :
Am = 200;
V = 1;
massivete = Am/V
alpha_c = 25;
epsi_res = 0.4;
rho_a = 7850;
phi = 1;
t=30;
theta_g = 20+345*log10(8*t+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 = 2
delta_theta_a_t = (massivete/(ca*rho_a))*hnetd*delta_t
Suite de quoi, je dois augmenter delta_t de 2 (pour qu'il prenne des valeurs paires jusqu'à 1800) et en même temps (à la même étape), theta_a doit être augmenté de delta_theta_a_t.
Comment faire ???
Merci d'avance
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 23 Avr 2009, 12:14
salut,
je comprends pe mal mais si c'est en même temps, alors ca veut dire qu'on prends Delta inchangé : soit :
- Code: Tout sélectionner
delta_t = 2;
delta_theta_a_t = (massivete/(ca*rho_a))*hnetd*delta_t;
% Mise a jour de delta_t et delta_theta_a_t
delta_theta_a_t = delta_theta_a_t+delta_t;
delta_t=delta_t+2;
la vie est une fête

-
maf
- Membre Rationnel
- Messages: 911
- Enregistré le: 08 Jan 2007, 17:57
-
par maf » 23 Avr 2009, 12:19
à la 2ème étape : delta_t doit valoir 4 (4 secondes)
et en même temps à la deuxième étape, le theta_a a été augmenté de delta_theta_a_t avant de recommencer les calculs des autres champs modifiés.
à la 3ème étape : delta_t doit valoir 6 et en meme temps theta_a doit valoir theta_a + delta_theta_a_t (1) + delta_theta_a_t (2)
où (1) est le delta_theta_a_t renvoyé la première fois, (2) la deuxième fois ... etc ...
-
maf
- Membre Rationnel
- Messages: 911
- Enregistré le: 08 Jan 2007, 17:57
-
par maf » 23 Avr 2009, 12:21
Mais je n'aimerais pas que l'un se modifie avant l'autre mais bien en même temps car dans l'un implique l'autre dans les formules !
Normalement on faisait soit une boucle en while ou en for ... sauf que là ... je n'arrive pas du tout à voir comment l'écrire ... parce que j'aimerais que toutes les valeurs me soient renvoyées sur toutes les étapes sachant que delta t doit arriver à 3600 secondes (donc 1800 étapes)
Et je n'ai pas envie de le faire dans un fichier excel et de recopier 1800 fois les formules
Ce qui change dans "la base" à chaque étape se sont les valeurs de :
theta_a et delta_t
-
fatal_error
- Membre Légendaire
- Messages: 6610
- Enregistré le: 22 Nov 2007, 12:00
-
par fatal_error » 23 Avr 2009, 12:49
Personnellement, je comprends rien a ton probleme.
le theta_a a été augmenté de delta_theta_a_t
je ne lis que theta_a=20
à la 2ème étape
Je ne vois qu'une seule etape. Lorsque tu parcours ton .m, une fois a la fin, c'est finito.
un fichier excel et de recopier 1800 fois les formules
Faut-il comprendre par la que tu veux les valeurs de delta_t et delta_theta_a_t correspondantes?
Si tel est le cas, c'est trs simple.
Tu fais une fonction. Si l'affichage ne te suffit pas, tu peux retourner un vecteur.
- Code: Tout sélectionner
function [a,b]=nom_fonction(arg1,arg2,condBoucle)
delta_t=2;
sommeDelta_theta_a_t = 0;
indiceCourant = 1; % pour parcourir le vecteur de retour
%eventuellement tu peux declarer le vecteur avant pour loptimisation % memoire
%ton initialisation
% initialisation finie
while delta_t<1800
% ton stuff
sommeDelta_theta_a_t = sommeDelta_theta_a_t+theta_a;
delta_t=delta_2+2;
a(i)=delta_t; % vecteur des Delta_t qu'on retourne
b(i)=sommeDelta_theta_a_t; %vecteur des delta_theta_a_t qu'on retourne
i=i+1;
end
la vie est une fête

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