[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

[Résolu] Problème Matlab

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



Avatar de l’utilisateur
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

re

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

re

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

Avatar de l’utilisateur
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 :)

 

Retourner vers ✯✎ Supérieur

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 211 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