Boucle Matlab
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Boucle Matlab



  1. #1
    Marjounette

    Boucle Matlab


    ------

    Bonjour,

    J'ai un une courbe de distribution de température à réaliser en transfert de chaleur. Dans mon programme Matlab, je dois trouver une valeur de température optimisé que je donne au début arbitraire. Voici le code:

    L=1.0; %length of the insulated warm-compost (m)
    H=1.5; %height of the insulated warm-compost (m)
    t=0.02; %plastic wall thickness (m)

    b_ins=0.05;

    T_compost=30+273;
    T1=10+273; %inside wall temperature (°C)
    T_outside=-20+273;

    k_PET=0.2; %thermal conductivity of the polyethylene terephtalate (PET)(W/m.K)
    k_PVC=0.14; %thermal conductivity of the polyvinylechloride (PVC) (W/m.K)

    A=4*L*H+L*L; %external area of the compost (m^2)
    V=L*L*H; %volume of the compost (m^3)

    k_ins=k_PVC;

    boltzman=5.67e-8;
    epsilon=0.95;

    h_conv=20;
    T4app=-10+273;

    while T4>T4app
    h_rad=boltzman*epsilon*((T4app ^4)-(T_outside^4))/(T4app-T_outside);
    U_4_ext=1/((1/h_conv)+(1/h_rad));
    Q_4_ext=U_4_ext*A*(T4app-T_outside);

    Q_1_4=Q_4_ext;
    U_1_4=1/((2*t/k_PET)+(b_ins/k_ins));
    T4=T1-(Q_1_4/(A*U_1_4));
    T4app=T4;
    end

    Donc voila je donne T4app a -10°C par exemple. Donc cette valeur je veux qu'elle soit prise dans mes formules dnas la boucle et obtenir une nouvelle valeur T4 (plus précise en théorie). Je veux donc ensuite comparer cette valeur à celle que j'ai approximé. Si T4-T4app<1 par exemple, alors je veux obtenir cette dernière valeur de T4. Sinon T4 = mon nouveau T4app et on recommence une boucle. etc

    Voilà j'espère que vous pourrez m'aider, merci.

    -----

  2. #2
    Marjounette

    Re : Boucle Matlab

    Le problème que j'ai, c'est que quand je veux faire tourner, il me dit que T4 n'est pas défini (normal T4 est dans l boucle), j'ai donc essayer de duppliquer le code pour faire un tour de boucle "manuellement" mais apres il rentre même plus dans la boucle. Je vois pas mon erreur...

  3. #3
    Zartan

    Re : Boucle Matlab

    Bonjour, je pense qu'une boucle do...while serait plus appropriée (si ça existe en matlab), au pire initialisez T4 avec n'importe quelle valeur > T4app

    par exemple:

    T4app=-10+273;
    T4=T4app+1;
    while T4>T4app

    mais le do ... while est plus rigoureux.

    Si ça ne rentre pas dans la boucle c'est que T4 <= T4app dès la première itération (les afficher?)


    A mon avis ce code est à corriger:
    T4=T1-(Q_1_4/(A*U_1_4));
    T4app=T4;
    Dernière modification par Zartan ; 05/11/2012 à 21h59.

  4. #4
    Marjounette

    Re : Boucle Matlab

    Do while n'existe pas dans matlab.

    Pourquoi devrais-je modifier ces 2 lignes?

    La première ligne correspond a la nouvelle temperature que j'obtiens avec celle approximée.

    La seconde c'est juste pour remplacer mon T4app par on T4 calculé pour refaire une boucle jusqu'a remplir la condition.

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

    Re : Boucle Matlab

    Citation Envoyé par Marjounette Voir le message
    Pourquoi devrais-je modifier ces 2 lignes?
    Parce que si T4app et T4 sont identiques comment à la prochaine itération on peut avoir la condition T4>T4app qui soit vraie ?

  7. #6
    Marjounette

    Re : Boucle Matlab

    Ok c'est bon je pense avoir trouvé avec ce code-ci:

    %-----------------1st loop to get a initial value of T4------------------%
    T4app=-19+273;
    h_rad=boltzman*epsilon*((T4app ^4)-(T_outside^4))/(T4app-T_outside);
    U_4_ext=1/((1/h_conv)+(1/h_rad));
    Q_4_ext=U_4_ext*A*(T4app-T_outside);

    Q_1_4=Q_4_ext;
    U_1_4=1/((2*t/k_PET)+(b_ins/k_ins));
    T4=T1-(Q_1_4/(A*U_1_4));
    T4-273

    %-----------------While loop to get the real value of T4------------------%
    while abs(T4-T4app)>0.5
    h_rad=boltzman*epsilon*((T4app ^4)-(T_outside^4))/(T4app-T_outside);
    U_4_ext=1/((1/h_conv)+(1/h_rad));
    Q_4_ext=U_4_ext*A*(T4app-T_outside);

    Q_1_4=Q_4_ext;
    U_1_4=1/((2*t/k_PET)+(b_ins/k_ins));
    T4=T1-(Q_1_4/(A*U_1_4));
    if T4>T4app
    T4app=T4app+0.1;
    else
    T4app=T4app-0.1;
    end
    end

Discussions similaires

  1. [Matlab] Boucle for - exception
    Par invitea1c5f17a dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 12/04/2012, 20h21
  2. Boucle for imbriquée Matlab
    Par invitec4757e8d dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 15/11/2011, 17h10
  3. matlab, boucle for
    Par aureo91 dans le forum Mathématiques du supérieur
    Réponses: 10
    Dernier message: 27/04/2010, 14h10
  4. Optimisation boucle Matlab.
    Par invite01e6eb40 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 13/04/2007, 11h50
  5. MATLAB-pb d'initialisation de boucle
    Par invite230d05f5 dans le forum Logiciel - Software - Open Source
    Réponses: 6
    Dernier message: 20/07/2005, 15h08