Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
El siguiente modelo del clima de un invernadero se derivó de balances de energía del aire y
de la masa térmica. Las tasas de cambio de la temperatura del aire y masa térmica del invernadero se
modelan con las ecuaciones diferenciales:
donde es la temperatura del aire del invernadero (°C), es la temperatura de la masa térmica
del invernadero (°C), es la energía solar absorbida por el invernadero, es el flujo de calor por
infiltración y ventilación, es el flujo de calor por conducción y convección a través de la cubierta,
es el calor intercambiado entre la masa térmica y el aire interior del invernadero, es la energía
almacenada por la masa térmica durante el día, es la pérdida de calor de la masa térmica hacia la
capa profunda del suelo, es la capacidad de calor del invernadero y es la capacidad de calor de
la masa térmica. A continuación se presentan las ecuaciones auxiliares.
1. Realice un análisis de sensibilidad local del modelo. Incluya en su reporte las ecuaciones de
sensibilidad y un cuadro comparativo de las sensibilidades relativas de los parámetros.
clear all
clc
Primero declaramos los datos de las variables de entrada, leyendo los datos de los archivos de excel.
MatEntrada=xlsread("datosentrada.xlsx");
Aw=MatEntrada(:,1);
Io=MatEntrada(:,2);
To=MatEntrada(:,3);
Vo=MatEntrada(:,4);
MatInterior=xlsread("datosinterior.xlsx");
declaramos condiciones iniciales, tiempo de simulación y unimos en una matriz los vectores de tiempo
y valores de entrada.
Tg0=MatInterior(1,1);
Tm0=MatInterior(1,2);
Time=[60:60:60*60*24*4];
UT=[Time' Aw Io To Vo];
Considerando que las muchas variables son vectores y algunos dependen de la salida de los
integradores del simulink para calcular los valores de los elementos de las matrices y solo los
siguientes elementos de A depeden unicamente de parámetros nominales, asi que se declaran en este
Script.
A12=Umg/Cg;
A21=Umg/Cg;
A22=-((Umg+Uref)/Cm);
OptsSim = simset('Solver','ode45','RelTol',1e-8,'abstol',1e-10);
[T,XX,W] = sim('AnalisisSensibilidadSim',Time,OptsSim,UT);
Graficamos para comparar el comportamiento de Tg y Tm con los datos del excel llamado
"ClimaInterior.xls"
figure(1);
subplot(2,1,1);
plot(T,W(:,1),'r-',T,MatInterior(:,1),'b-')
title('Datos Tg del Modelo y del excel')
xlabel('Tiempo 4 Dias.')
ylabel('Tg')
legend('Simulación','Excel')
subplot(2,1,2);
plot(T,W(:,2),'r-',T,MatInterior(:,2),'b-')
title('Datos Tm del Modelo y del excel')
xlabel('Tiempo 4 Dias.')
ylabel('Tm')
legend('Simulación','Excel')
Graficas de sensibilidad de la temperatura del aire del invernadero (Tg) y temperatura de la masa
térmica del invernadero (Tm) respecto a los parámetros . Y uso
del comando trapz para determinar el área bajo la curva.
figure(2);
subplot(2,1,1);
plot(T,W(:,3),'r-')
title('Sensibilidad de Tg respecto a Mhug')
Vmhugtg=trapz(W(:,3));
subplot(2,1,2);
plot(T,W(:,4),'b-')
title('Sensibilidad de Tm respecto a Mhug')
Vmhugtm=trapz(W(:,4));
figure(3);
subplot(2,1,1);
plot(T,W(:,5),'r-')
title('Sensibilidad de Tg respecto a Mhum')
Vmhumtg=trapz(W(:,5));
subplot(2,1,2);
plot(T,W(:,6),'b-')
title('Sensibilidad de Tm respecto a Mhum')
Vmhumtm=trapz(W(:,6));
figure(4);
subplot(2,1,1);
plot(T,W(:,7),'r-')
title('Sensibilidad de Tg respecto a Cg')
Vcgtg=trapz(W(:,7));
subplot(2,1,2);
plot(T,W(:,8),'b-')
title('Sensibilidad de Tm respecto a Cg')
Vcgtm=trapz(W(:,8));
figure(5);
subplot(2,1,1);
plot(T,W(:,9),'r-')
title('Sensibilidad de Tg respecto a Cm')
Vcmtg=trapz(W(:,9));
subplot(2,1,2);
plot(T,W(:,10),'b-')
title('Sensibilidad de Tm respecto a Cm')
Vcmtm=trapz(W(:,10));
figure(6);
subplot(2,1,1);
plot(T,W(:,11),'r-')
title('Sensibilidad de Tg respecto a Cv')
Vcvtg=trapz(W(:,11));
subplot(2,1,2);
plot(T,W(:,12),'b-')
title('Sensibilidad de Tm respecto a Cv')
Vcvtm=trapz(W(:,12));
figure(7);
subplot(2,1,1);
plot(T,W(:,13),'r-')
title('Sensibilidad de Tg respecto a Fvo')
Vfvotg=trapz(W(:,13));
subplot(2,1,2);
plot(T,W(:,14),'b-')
title('Sensibilidad de Tm respecto a Fvo')
Vfvotm=trapz(W(:,14));
figure(8);
subplot(2,1,1);
plot(T,W(:,15),'r-')
title('Sensibilidad de Tg respecto a Tref')
Vtreftg=trapz(W(:,15));
subplot(2,1,2);
plot(T,W(:,16),'b-')
title('Sensibilidad de Tm respecto a Tref')
Vtreftm=trapz(W(:,16));
figure(9);
subplot(2,1,1);
plot(T,W(:,17),'r-')
title('Sensibilidad de Tg respecto a Uc')
Vuctg=trapz(W(:,17));
subplot(2,1,2);
plot(T,W(:,18),'b-')
title('Sensibilidad de Tm respecto a Uc')
Vuctm=trapz(W(:,18));
figure(10);
subplot(2,1,1);
plot(T,W(:,19),'r-')
title('Sensibilidad de Tg respecto a Umg')
Vumgtg=trapz(W(:,19));
subplot(2,1,2);
plot(T,W(:,20),'b-')
title('Sensibilidad de Tm respecto a Umg')
Vumgtm=trapz(W(:,20));
figure(11);
subplot(2,1,1);
plot(T,W(:,21),'r-')
title('Sensibilidad de Tg respecto a Uref')
Vureftg=trapz(W(:,21));
subplot(2,1,2);
plot(T,W(:,22),'b-')
title('Sensibilidad de Tm respecto a Uref')
Vureftm=trapz(W(:,22));
Con el área bajo la curva calculada para cada gráfica de sensibilidad, graficamos el valor de las áreas
que le corresponde a cada parámetro con el comando bar(), como se muestra a continuación.
figure(12)
x11=abs([Vmhugtg Vmhumtg Vcgtg Vcmtg Vcvtg Vfvotg Vtreftg ...
Vuctg Vumgtg Vureftg]);
x12=abs([Vmhugtm Vmhumtm Vcgtm Vcmtm Vcvtm Vfvotm Vtreftm ...
Vuctm Vumgtm Vureftm]);
parametroslabel={'Mhug','Mhum','Cg','Cm','Cv','Fvo','Tref','Uc','Umg','Uref'};
subplot(2,1,1)
bar(x11)
set(gca,'XTickLabel',parametroslabel);
title('Sensibilidad de Tg respecto a los parámetros.')
grid on
subplot(2,1,2);
bar(x12)
set(gca,'XTickLabel',parametroslabel);
title('Sensibilidad de Tm respecto a los parámetros.')
grid on
Creamos una tabla de indices de sensibilidad.
ParameterName={'Mhug';'Mhum';'Cg';'Cm';'Cv';'Fvo';'Tref';'Uc';'Umg';'Uref'};
Sensibilidad_Tg=x11';
Sensibilidad_Tm=x12';
Tabla_1=table(Sensibilidad_Tg,Sensibilidad_Tm,'RowNames',ParameterName)
options = optimset('MaxIter',250,'Display','Iter','MaxFunEvals',...
5000,'TolFun',1e-6);
[xmin,resnorm,residual,exitflag,output]=lsqnonlin(@evalFuncion,x0,...
lb,ub,options);
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Norm of First-order
Iteration Func-count f(x) step optimality
0 6 1.60785e+06 4e+05
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
1 12 209827 6.6278 2.1e+05
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
2 18 102134 1.16831 2.73e+04
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
3 24 100158 0.536016 8.46e+03
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
4 30 88934.2 4.05122 8.35e+04
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
5 36 86288.3 1.14362 4.28e+04
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
6 42 86287.4 0.000123183 5.6e+03
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
7 48 86264.6 0.0233846 21.6
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
8 54 86255.4 0.0267587 6.57
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
Tm0 =
22.06
9 60 86255.4 2.76829e-05 0.0153
lsqnonlin stopped because the final change in the sum of squares relative to
its initial value is less than the selected value of the function tolerance.
Param={'Valor'};
Mhug=xmin(1); Mhum=xmin(2); Cv=xmin(3); Tref=xmin(4); Uc=(5);
Tabla_2=table(Mhug,Mhum,Cv,Tref,Uc,'RowNames',Param)
OptsSim = simset('Solver','ode45','RelTol',1e-8,'abstol',1e-10);
[T2,XX,W3] = sim('AnalisisSensibilidadSim',Time,OptsSim,UT);
Nuevamente gráficamos los resultados obtenidos de la simulación para compararlos con los datos
medidos para observar los resultados de la calibración. Solo se gráfica la variable Tg, ya que solo se
tomo en cuenta los datos de esta variable para la función "evalFuncion" del lsqnonlin.
figure(15);
plot(T2,W3(:,1),'g--',T2,MatInterior(:,1),'b-',T,W(:,1),'--r')
title('Datos Tg del Modelo calibrado y del excel')
xlabel('Tiempo 4 Dias.')
ylabel('Tg')
legend('Simulación','Excel','M. Calibrado')
Claramente se puede observar en la gráfica que el modelo con los parámetros estimados por la
calibración, predice mejor el comportameinto de la temperatura del aire del invernadero (Tg).
END