Diferencia entre revisiones de «Modelo térmico de un edificio (GRUPO 3)»
De MateWiki
| Línea 1: | Línea 1: | ||
==Introducción y objetivo== | ==Introducción y objetivo== | ||
| − | |||
Vamos a desarrollar un modelo matemático que aproxime el comportamiento de la temperatura en un edificio con unos parámetros de aislamiento definidos y expuesto a una cierta temperatura ambiente exterior. | Vamos a desarrollar un modelo matemático que aproxime el comportamiento de la temperatura en un edificio con unos parámetros de aislamiento definidos y expuesto a una cierta temperatura ambiente exterior. | ||
Para modelizar este suceso utilizaremos la teoría de ecuaciones diferenciales y modelos numéricos resueltos mediante programas de código Matlab (Matlab R2016a y Octave UPM). | Para modelizar este suceso utilizaremos la teoría de ecuaciones diferenciales y modelos numéricos resueltos mediante programas de código Matlab (Matlab R2016a y Octave UPM). | ||
| + | ==Apartado 1== | ||
| + | {{matlab|codigo= | ||
| + | % TRABAJO APARTADO A | ||
| + | clear all, clc, close all | ||
| + | % Ecuación diferencial: T'(t)=1/3*(T0-T(t)); | ||
| + | % Solución exacta T(t)=(T0-M0)*exp(-1/3*t)+M0; | ||
| + | |||
| + | k=1/3; %Cte tiempo del edificio | ||
| + | M0=8; % Temperatura exterior | ||
| + | T0=14; | ||
| + | % Discretización | ||
| + | t0=0; | ||
| + | tN=24; | ||
| + | h= input('Dame el paso: h = '); | ||
| + | N=round((tN-t0)/h); | ||
| + | |||
| + | t=linspace(t0,tN,N+1); | ||
| + | y=zeros(size(t)); | ||
| + | |||
| + | % Solución | ||
| + | Tex=(T0-M0)*exp(-1/3*t)+M0; | ||
| + | figure | ||
| + | plot(t,Tex) | ||
| + | xlabel('Time') | ||
| + | ylabel('Temperature') | ||
| + | title('Temperature variation') | ||
| + | legend('exact ecuation') | ||
| + | % Cálculo numérico | ||
| + | T(1)=T0; %input('Valor inicial = '); | ||
| + | |||
| + | disp('--------') | ||
| + | disp('Si no hay valor de T o t en la EDO, poner:') | ||
| + | disp('0*T ó 0*t') | ||
| + | disp('-------') | ||
| + | |||
| + | fun=input('Introduce la función f(t,T) = ','s'); | ||
| + | f=inline(fun,'t','T'); | ||
| + | |||
| + | for k=1:N | ||
| + | T(k+1)=(T(k)+8*h/3)/(1+h/3); | ||
| + | end | ||
| + | figure | ||
| + | plot(t,T) | ||
| + | xlabel('Time') | ||
| + | ylabel('Temperature') | ||
| + | title('Temperature variation') | ||
| + | legend('Euler implicito EN INGLÉS') | ||
| + | |||
| + | % Estudio de los errores | ||
| + | format long; | ||
| + | err=abs(Tex-T); | ||
| + | maxi= max(err); | ||
| + | % fprintf('el error máximo es %') | ||
| + | |||
| + | pos=1:1:length(t); | ||
| + | % Tabl=[pos', t',T',Tex',err'] | ||
| + | }} | ||
| + | ==Apartado 2== | ||
| + | ==d.)== | ||
{{matlab|codigo= | {{matlab|codigo= | ||
clear, close all | clear, close all | ||
Revisión del 20:33 28 abr 2016
1 Introducción y objetivo
Vamos a desarrollar un modelo matemático que aproxime el comportamiento de la temperatura en un edificio con unos parámetros de aislamiento definidos y expuesto a una cierta temperatura ambiente exterior. Para modelizar este suceso utilizaremos la teoría de ecuaciones diferenciales y modelos numéricos resueltos mediante programas de código Matlab (Matlab R2016a y Octave UPM).
2 Apartado 1
% TRABAJO APARTADO A
clear all, clc, close all
% Ecuación diferencial: T'(t)=1/3*(T0-T(t));
% Solución exacta T(t)=(T0-M0)*exp(-1/3*t)+M0;
k=1/3; %Cte tiempo del edificio
M0=8; % Temperatura exterior
T0=14;
% Discretización
t0=0;
tN=24;
h= input('Dame el paso: h = ');
N=round((tN-t0)/h);
t=linspace(t0,tN,N+1);
y=zeros(size(t));
% Solución
Tex=(T0-M0)*exp(-1/3*t)+M0;
figure
plot(t,Tex)
xlabel('Time')
ylabel('Temperature')
title('Temperature variation')
legend('exact ecuation')
% Cálculo numérico
T(1)=T0; %input('Valor inicial = ');
disp('--------')
disp('Si no hay valor de T o t en la EDO, poner:')
disp('0*T ó 0*t')
disp('-------')
fun=input('Introduce la función f(t,T) = ','s');
f=inline(fun,'t','T');
for k=1:N
T(k+1)=(T(k)+8*h/3)/(1+h/3);
end
figure
plot(t,T)
xlabel('Time')
ylabel('Temperature')
title('Temperature variation')
legend('Euler implicito EN INGLÉS')
% Estudio de los errores
format long;
err=abs(Tex-T);
maxi= max(err);
% fprintf('el error máximo es %')
pos=1:1:length(t);
% Tabl=[pos', t',T',Tex',err']3 Apartado 2
4 d.)
clear, close all
%Introducimos los datos del problema
t0=0;
tN=24;
T0=13;
disp('introduce los pasos que desees tomar en forma de vector')
h=input('introduzca longitud de paso: ');
% Creamos un bucle que nos representa la solución para cada uno de los valores de h
for i=1:length(h)
h2=h(i);
%discretizamos la variable independiente
t=t0:h2:tN;
f=inline('1/3*(7-5*cos((pi/12)*t)-T)+3','t','T');
figure(i)
hold on
%definimos la función que modeliza la temperatura exterior
Text=7-5*cos((pi/12)*t);
subplot(2,1,1)
plot(t,Text,'b')
%generamos el vector TE que es el que contendra la solucion por Euler
TE=zeros(1,length(t));
%Euler
TE(1)=T0;
for j=1:length(t)-1;
TE(j+1)=TE(j)+h2*f(t(j),TE(j));
end
plot(t,TE,'r')
k=h(i);
%El título variará en función del paso que se utilice en cada iteración
title(['Método de Euler con paso ' num2str(k) ''])
xlabel('horas')
ylabel('ºC')
hold off
%metodo de Runge-Kutta
subplot(2,1,2)
plot(t,Text,'b')
TRK=zeros(1,length(t));
TRK(1)=T0;
for j=1:length(t)-1
K1=f(t(j),TRK(j));
K2=f(t(j)+h2/2,TRK(j)+(h2/2)*K1);
K3=f(t(j)+h2/2,TRK(j)+(h2/2)+K2);
K4=f(t(j)+h2,TRK(j)+h2*K3);
TRK(j+1)=TRK(j)+(h2/6)*(K1+2*K2+2*K3+K4);
end
plot(t,TRK,'r')
title(['Método de Runge Kutta orden 4 con paso ' num2str(k) ''])
xlabel('horas')
ylabel('ºC')
hold off
end