Advertisement
Guest User

Untitled

a guest
Jan 20th, 2020
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
MatLab 3.13 KB | None | 0 0
  1. function U = calcRefroidissement(T,u0,r,Uext,methode)
  2. % function U = calcRefroidissement(T,u0,r,Uext,methode)
  3. %-----------------------------------------------------------------------------
  4. % calcule la temperature u(t) [°C] du café dans une tasse, obéissant à
  5. % l'équation différentielle ordinaire:     du/dt = -r*[u(t)-uext(t)]   pour t>=0
  6. % avec la condition initiale:              u(0)=u0.
  7. % Le coefficient de la conductivité thermique de la paroi de tasse, r [1/s],
  8. % donne le taux d'échange de l'énergie thermique entre la tasse du café et l'extérieur.
  9. % La température extérieure uext(t) est donnée (et pas nécessairement constante).
  10. % On calcule u(t) résultant aux instants T = [t0,t1,t2,t3,...tn]', où t0=0
  11. % et t1,t2,... n'est pas nécessairement équidistant
  12. % La température extérieure uext(t) est donnée par ses valeurs aux
  13. % instants t ∈ T, données par le vecteur Uext = [uext(t0),uext(t1),...,uext(tn)]';
  14. % La résolution numérique de l'équation différentielle utilise une des
  15. % méthodes (methode) suivantes:
  16. %   "EulerExplicite": méthode d'Euler explicite (progressive) d'ordre
  17. %      de précision 1 en pas de temps dt,
  18. %   "Heun": méthode de Heun (d'Euler modifiée) d'ordre de orécision 2,
  19. %   "RungeKutta4": est la méthode de Runge-Kutta 4 (classique)
  20. %   "EulerImplicte": méthode d'Euler implicite (rétrograde) d'ordre 1 (la
  21. %      seule méthode implicite parmi les méthodes présentes)
  22. %*** paramètres:
  23. % T(n,:)        -in-    instants de temps T=[t0,t1,t2,...,tn]'
  24. % u0            -in-    température initiale du café en [°C]
  25. % r             -in-    coefficient d'échange thermique [1/s]
  26. % Uext(n,:)     -in-    Uext=[uext(t0),uext(t1),...]
  27. % methode       -in-    string avec la méthode de résolution de l'équation diff.
  28. % U(n,:)        -out-   la température du café aux instants T=[t0,t1,...,tn]'
  29. %-----------------------------------------------------------------------------
  30.  
  31. %*** init:
  32.   U = 0*T;
  33.   U(1) = u0;
  34.   n = length(T);
  35. %*** uext(t) est obtenue en interpolant les valeurs (T,Uext), si besoin:
  36.   uext = @(t) interp1(T,Uext,t,'pchip');
  37. %*** la forme générale d'un problème de Cauchy est du/dt = f(t,u) avec u(t0)=u0:
  38.   f = @(t,u) -r*(u-uext(t));
  39. %=== EXPRIMEZ f(t,u) ici ^^^^^^
  40.  
  41. %=== PROGRAMMEZ ICI le méthodes de résolution de l'équation différentielle:
  42.   switch (methode)
  43.   case "EulerExplicite",
  44.     for k=1:n-1
  45.       dt = T(k+1)-T(k);
  46.       U(k+1) = U(k)+dt*f(T(k),U(k));
  47.     end;
  48.   case "Heun",
  49.     for k=1:n-1
  50.       dt = T(k+1)-T(k);
  51.       p1 = f(T(k),U(k));
  52.       p2 = f(T(k+1),U(k)+dt*p1);
  53.       U(k+1) = U(k) + (dt/2)*(p1+p2);
  54.     end;
  55.     case "RungeKutta4",
  56.     for k=1:n-1
  57.       dt = T(k+1)-T(k);
  58.       p1 = f(T(k),U(k));
  59.       p2 = f(T(k) + dt/2, U(k)+(dt/2)*p1);
  60.       p3 = f(T(k) + dt/2, U(k)+(dt/2)*p2);
  61.       p4 = f(T(k) + dt, U(k)+ dt*p3);
  62.       U(k+1) = U(k) + (dt/6)*(p1+2*p2+2*p3+p4);
  63.     end;
  64.   case "EulerImplicite",
  65.     for k=1:n-1
  66.       dt = T(k+1)-T(k);
  67.       U(k+1) = (U(k)+dt*r*uext(T(k+1)))/(1+dt*r);
  68.     end;
  69.   otherwise,
  70.     error('cette méthode n´est pas implémentée');
  71.   end;
  72. %=== FIN DE SOLUTION
  73.   return;
  74. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement