Вы находитесь на странице: 1из 15

Escuela de ingenieros

aeroespaciales

Dpto. Ingeniera Aeroespacial

Ejercicio 2.3
Mtodo explicito para la ecuacin del calor

Len a 30 de Enero de 2015


Caldern de Miguel, Vctor
Gonzlez Redondo, Diego

Ejercicio Simulacin 2.3

INDICE:
1. Introduccin.
2. Contextualizacin.
3. Resolucin del problema.
4. Conclusiones
5. Bibliografa y Webgrafa.

-2-

Ejercicio Simulacin 2.3

1. Introduccin.
Nos encontramos ante el siguiente problema con condiciones iniciales.

1. Obtener la solucin formal del problema con separacin de variables. Utilizar


MATLAB para calcular los coeficientes de la serie formal.
2. Escribir en MATLAB un programa que aproxime la solucin del problema anterior
mediante el mtodo explcito de diferencias finitas para el paso espacial h=0,2 y
para pasos temporales k=0,01 , k=0,0125 y k=0,2 y que represente, en un mismo
grfico, las curvas solucin para los instantes t=r, t=2r, t=3r, t=4r donde r=k/h^2
(un grfico para cada valor de k), junto con la solucin verdadera

Truncada hasta el sumando n tal que

Este problema trata de la ecuacin del calor, la cual fue propuesta por Fourier en 1807, en su
memoria sobre la propagacin del calor en los cuerpos slidos.
Es un modelo matemtico, que trata de describir la evolucin de la temperatura de un cuerpo
slido, en funcin del tiempo y el espacio.

Nos encontramos ante un prototipo de ecuacin diferencial parablica, la cual se obtiene de


forma genrica mediante una ecuacin de derivadas parciales lineal de segundo orden
(EDP) con 2 variables independientes Y e X y una variable dependiente U, de tal forma
que tenemos:

donde A,B,C,...,G son funciones de x e y.


Cuando G(x,y) = 0, se dice que la ecuacin es homognea; en caso contrario se dice que es
no homognea. En nuestro caso, se trata de una ecuacin homognea.

-3-

Ejercicio Simulacin 2.3

De este modo obtenemos la ecuacin lineal del calor:

2. Contexutalizacin
En este apartado nos vamos a centrar en el mtodo utilizado para la resolucin del
ejercicio, el cual se ha realizado por separacin de variables.
A continuacin se muestra cmo resolver la ecuacin de una forma genrica, ms adelante,
la adaptaremos a nuestro caso particular del problema:
Este mtodo busca una solucin particular en forma de un producto de una funcin de x,
una funcin de y, como U(x,y)= X(x). Y(y)
En primer lugar vamos a convertir la ecuacin de derivadas parciales con 2 variables en 2
ecuaciones ordinarias del siguiente modo:

De este modo podremos operar ms fcilmente cada una de las ecuaciones ordinarias.
Nos encontramos ante un modelo de variacin de la temperatura u segn la posicin xy, en
un tiempo t, en una varilla de longitud L y de temperatura inicial f(x) que se extiende a lo
largo del eje xy cuyos extremos se mantienen a una temperatura constante de cero grados
en todo instante. En nuestro caso uno de los extremos estar a cero grados y el otro estar a
75 grados, por lo que la ecuacin mostrada a continuacin habr que adaptarla.
Hemos tenido en consideracin las siguientes hiptesis:

El flujo de calor se produce solamente en la direccin del eje x.

No se pierde calor a travs de la superficie lateral de la varilla.

No se genera calor en la varilla.

-4-

Ejercicio Simulacin 2.3

la varilla es homognea (densidad constante).

su calor especfico y su conductividad trmica son constantes.

Por lo que podemos decir que la temperatura u(x,t)de la varilla est dada por la solucin
del problema con condiciones iniciales y de contorno.
A continuacin se detallan los primeros pasos comunes a toda ecuacin homognea del
calor. En nuestro caso el valor de K ser 1.

Tiene una solucin de la forma :

Para determinar Xy T, primero se calculan las derivadas parciales de la funcin u

se sustituyen estas expresiones en la ecuacin resultando:

y separando las variables

Observamos ahora que las funciones del primer miembro dependen solamente de t
,mientras que las del segundo miembro dependen solamente de x e y, puesto que xy t son
variables independientes entre s, los dos cocientes deben ser iguales a alguna constante
Por tanto,

-5-

Ejercicio Simulacin 2.3

Una vez conseguidas las 2 ecuaciones, tendremos que resolverlas con las condiciones
iniciales dadas, es decir u(0,t)=0 y u(L, t)= 75. En la resolucin del ejercicio se muestra
como continuamos partiendo desde las ecuaciones halladas, hasta la solucin final.

3. Resolucin del problema


Para el primer apartado, nos hemos basado a partir de la obtencin de las ecuaciones
anteriores y hemos aplicado las condiciones de contorno dadas. Para la resolucin del
mismo, hemos optado por resolverlo a mano y escanearlo, dado que hay un gran nmero
de ecuaciones.
A continuacin se muestra la imagen con la resolucin hecha a mano para la obtencin
de la solucin formal del problema.

-6-

Ejercicio Simulacin 2.3

-7-

Ejercicio Simulacin 2.3

4. Para la resolucin del siguiente apartado, nos hemos guiado por los ejercicios hechos
en Excel, por lo que de igual modo hemos creado celdas ficticias (matriz de ceros) y
las hemos ido rellenando segn las condiciones iniciales o utilizando el Stencil
correspondiente segn corresponda.
A continuacin se muestra el cdigo utilizado para la creacin de las grficas de
MATLAB.
%EJERCICIO 2.3
clear all %Borra todo lo anterior para no tener error
h=0.2;%En primer lugar definimos el paso para la longitud de
la cuerda
L=0:h:5;%variacin de x de 0 a 5 con paso h
k=0.01;%Definimos la k con el valor del problema para el
calculo del tiempo
T=0:k:90;%Variacin del tiempo desde 0 hasta un nmero bastante
grande con paso k (para representar todo. Luego podremos
ajustarlo en funcin del r mximo
r=k/(h^2);
%Creamos una matriz de ceros con longitud T y L para poder
seleccionar las
%condiciones iniciales.
A=zeros(length(T),length(L)+1);
%Modificamos de la matriz los elementos correspondientes a las
condiciones
%iniciales, para
corresponda.

ello

seleccionamos

columna

fila

segn

A(:,1)=0; %Es matriz de zeros por lo que no es necesario.


A(1,:)=75; %Condicin inicial del extremo de la barra.
%Para rellenar el resto de la matriz voy a utilizar el Stencil
del mtodo
%explcito, explicado en las transparencias de clase.
for i=2:length(T)%Rellenamos desde
cambiar las condiciones iniciales.
for j=2:length(L) %Del mismo
"casilla" 2 hasta la longitud dada.

porque

modo

no

hacemos

queremos
desde

la

A(i,j)=(1-2*r)*(A(i-1,j))+r*(A(i-1,j+1))+
r*(A(i1,j-1)); %Stencil para mtodo explcito de la ecuacin del
calor.
end %Terminamos de rellenar la matriz-->
representar los puntos fantasma aadidos,

hacen

falta

-8-

Ejercicio Simulacin 2.3

%Para ello, la penltima columna ser igual a la de los


puntos
%fantasma, de tal modo que:
A(i,length(L)+1)=A(i,(length(L)-1));
end %Matriz terminada de escribir (igual que en excel
%Vamos a representar la funcin obtenida.
%Nos da el siguiente problema Vectors must be the same lengths.
por lo que
%hay que hacer otra matriz para representarla
F=zeros(length(T),length(L)); %Creamos una matriz Final para
representarla
for i=1:length(T)%Con los bucles la rellenamos con los datos
anteriormente obtenidos.
for j=1:(length(L))
F(i,j)=A(i,j);
end
end
subplot(1,3,1);%Nos piden que representemos en diferentes
grficas los valores de k por lo que realizaremos 3
%Representamos las grficas con colorines.
hold on; %para fijar los grficos y no sobreescribir uno tras
otro.
plot(L,F((fix((r/k))),:),'blue');
plot(L,F((fix(2*(r/k))),:),'yellow');%No se ve muy bien pero
no deja ms colores
plot(L,F((fix(3*(r/k))),:),'black');
plot(L,F((fix(4*(r/k))),:),'red');
title('0.01');
xlabel('Longitud');
ylabel('Temperatura');
legend('t=r','t=2r','t=3r','t=4r') %Leyenda del grafico
hold off;

%Realizamos exactamente los mismos pasos pero cambiando los


valores de k.
%Los comentarios sern los mismos dado que es "copy-paste".

-9-

Ejercicio Simulacin 2.3

%Tambin habr que cambiar el valor del sublpot a (1,3,2)

h=0.2;%En primer lugar definimos el paso para la longitud de


la cuerda
L=0:h:5;%variacin de x de 0 a 5 con paso h
k=0.0125;%CAMBIAMOS
T=0:k:500;%Variacin del tiempo desde 0 hasta un nmero
bastante grande con paso k (para representar todo. Luego
podremos ajustarlo en funcin del r mximo
r=k/(h^2);
%Creamos una matriz de ceros con longitud T y L para poder
seleccionar las
%condiciones iniciales.
A=zeros(length(T),length(L)+1);
%Modificamos de la matriz los elementos correspondientes a las
condiciones
%iniciales, para
corresponda.

ello

seleccionamos

columna

fila

segn

A(:,1)=0; %Es matriz de zeros por lo que no es necesario.


A(1,:)=75; %Condicin inicial del extremo de la barra.
%Para rellenar el resto de la matriz voy a utilizar el Stencil
del mtodo
%explcito, explicado en las transparencias de clase.
for i=2:length(T)%Rellenamos desde
cambiar las condiciones iniciales.
for j=2:length(L) %Del mismo
"casilla" 2 hasta la longitud dada.

porque

modo

no

hacemos

queremos
desde

la

A(i,j)=r*(A(i-1,j-1))+(1-2*r)*(A(i-1,j))+r*(A(i1,j+1)); %Stencil para mtodo explcito de la ecuacin del


calor.
end %Terminamos de rellenar la matriz-->
representar los puntos fantasma aadidos,

hacen

falta

%Para ello, la penltima columna ser igual a la de los


puntos
%fantasma, de tal modo que:
A(i,length(L)+1)=A(i,(length(L)-1));
end %Matriz terminada de escribir (igual que en excel
%Vamos a representar la funcin obtenida.

- 10 -

Ejercicio Simulacin 2.3

%Nos da el siguiente problema Vectors must be the same lengths.


por lo que
%hay que hacer otra matriz para representarla
F=zeros(length(T),length(L)); %Creamos una matriz Final para
representarla
for i=1:length(T)%Con los bucles la rellenamos con los datos
anteriormente obtenidos.
for j=1:(length(L))
F(i,j)=A(i,j);
end
end
subplot(1,3,2);%CAMBIAMOS
hold on; %para fijar los grficos y no sobreescribir uno tras
otro.
plot(L,F((fix((r/k))),:),'blue');
plot(L,F((fix(2*(r/k))),:),'yellow');%No se ve muy bien pero
no deja ms colores
plot(L,F((fix(3*(r/k))),:),'black');
plot(L,F((fix(4*(r/k))),:),'red');
title('0.0125');
xlabel('Longitud');
ylabel('Temperatura');
legend('r','2*r','3*r','4*r') %Leyenda del grafico
hold off;

%Ultima representacin con valores de k=0.2


h=0.2;%En primer lugar definimos el paso para la longitud de
la cuerda
L=0:h:5;%variacin de x de 0 a 5 con paso h
k=0.02;%CAMBIAMOS
T=0:k:500;%Variacin del tiempo desde 0 hasta un nmero
bastante grande con paso k (para representar todo. Luego
podremos ajustarlo en funcin del r mximo
r=k/(h^2);
%Creamos una matriz de ceros con longitud T y L para poder
seleccionar las

- 11 -

Ejercicio Simulacin 2.3

%condiciones iniciales.
A=zeros(length(T),length(L)+1);
%Modificamos de la matriz los elementos correspondientes a las
condiciones
%iniciales, para
corresponda.

ello

seleccionamos

columna

fila

segn

A(:,1)=0; %Es matriz de zeros por lo que no es necesario.


A(1,:)=75; %Condicin inicial del extremo de la barra.
%Para rellenar el resto de la matriz voy a utilizar el Stencil
del mtodo
%explcito, explicado en las transparencias de clase.
for i=2:length(T)%Rellenamos desde
cambiar las condiciones iniciales.
for j=2:length(L) %Del mismo
"casilla" 2 hasta la longitud dada.

porque

modo

no

hacemos

queremos
desde

la

A(i,j)=r*(A(i-1,j-1))+(1-2*r)*(A(i-1,j))+r*(A(i1,j+1)); %Stencil para mtodo explcito de la ecuacin del


calor.
end %Terminamos de rellenar la matriz-->
representar los puntos fantasma aadidos,

hacen

falta

%Para ello, la penltima columna ser igual a la de los


puntos
%fantasma, de tal modo que:
A(i,length(L)+1)=A(i,(length(L)-1));
end %Matriz terminada de escribir (igual que en excel
%Vamos a representar la funcin obtenida.
%Nos da el siguiente problema Vectors must be the same lengths.
por lo que
%hay que hacer otra matriz para representarla
F=zeros(length(T),length(L)); %Creamos una matriz Final para
representarla
for i=1:length(T)%Con los bucles la rellenamos con los datos
anteriormente obtenidos.
for j=1:(length(L))
F(i,j)=A(i,j);
end
end
subplot(1,3,3);%CAMBIAMOS

- 12 -

Ejercicio Simulacin 2.3

hold on; %para fijar los grficos y no sobreescribir uno tras


otro.
plot(L,F((fix((r/k))),:),'blue');
plot(L,F((fix(2*(r/k))),:),'yellow');%No se ve muy bien pero
no deja ms colores
plot(L,F((fix(3*(r/k))),:),'black');
plot(L,F((fix(4*(r/k))),:),'red');
title('0.02');
xlabel('Longitud');
ylabel('Temperatura');
legend('r','2*r','3*r','4*r') %Leyenda del grafico
hold off;
Como se ve, el cdigo est explicado para una mejor interpretacin dado que es difcil su
comprensin.
En el siguiente grfico se muestran exclusivamente las representaciones mediante el mtodo
explcito. A continuacin se realizar una modificacin y adicin de cdigo para la representacin
en otros sub-grficos las representaciones totales, llegando a crear un total de 6 sub-grficos.

REAL

- 13 -

Ejercicio Simulacin 2.3

Para hallar el grfico de la solucin verdadera necesitamos la solucin verdadera de la ecuacin del
calor. Una vez la tengamos, realizaremos una matriz de ceros igual que anteriormente donde
tendremos en cuenta la longitud y los tiempos.
Una vez la tengamos, simplemente tendremos que sustituir cada casilla por la solucin verdadera y
multiplicar por los valores correspondientes. Habra que realizar el siguiente cdigo con su k
correspondiente en cada uno de los 3 apartados (k=0,01 , k=0,0125 y k=0,2) y con h=0.2
El cdigo MATLAB utilizado para cada k correspondiente ser el siguiente:

B=zeros(length(T),length(L));
%Creamos una matriz B en
representados los valores
correspondiente.

la que horizontalmente estarn


desde 0 hasta L con el paso

%En este caso no hay que sumar 1 puesto que no tenemos puntos
fantasma y tampoco hay que aplicar problemas de contorno.
for i=1:length(T)
for j=1:length(L) %En este caso al no haber condiciones de
contorno empezamos desde la coordenada 1,1.
B(i,j)= u(L,T); %Frmula de la solucin verdadera.
end
end %Ya tendramos completa la matriz con los valores reales,
ahora hace falta representarla, para ello, igual que
anteriormente utilizaremos hold on y hold off.
hold on; %para fijar los grficos y no sobreescribir uno tras
otro.
plot(L,B((fix((r/k))),:),'blue');
plot(L,B((fix(2*(r/k))),:),'yellow');
plot(L,B((fix(3*(r/k))),:),'black');
plot(L,B((fix(4*(r/k))),:),'red');
title('SOLUCION REAL k correspondiente');
xlabel('Longitud');
ylabel('C');
legend('r','2*r','3*r','4*r') %Leyenda del grafico
hold off;
Cabe destacar que tendramos que cambiar los valores de todos los subplot, quedando del siguiente
modo:

subplot(1,6,1); %Este subplot ser el correspondiente a k=0.01


subplot(1,6,2); %Este subplot corresponde con el grfico real de
K=0.1

- 14 -

Ejercicio Simulacin 2.3

subplot(1,6,3); %Subplot que correspondera con el grfico k=0.0125


subplot(1,6,4);
k=0.0125

%Corresponde

al

subgrfico

del

resultado

real

subplot(1,6,5); %Subgrfico que corresponde a k=0.2


subplot(1,6,6); %Grfico que corresponde a la solucin real con
k=0.2.

BIBLIOGRAFA Y WEBGRAFA
-Advanced Engineering Mathematics Dennis G. Zill - Warren S. Wright.
-Apuntes de clase
http://148.204.64.201/paginas%20anexas/voz/articulos%20interesantes/coclea/matlab/mm
2-1.pdf
https://www.uam.es/personal_pdi/ciencias/pangulo/edpan/cap6.pdf
http://mygnet.net/codigos/matlab/graficacion/la_ecuacion_del_calor.3282
http://personal.us.es/niejimjim/tema08.pdf
https://www.uam.es/personal_pdi/ciencias/ireneo/libro.pdf
www.icmc.usp.br/CMS/Arquivos/.../BIBLIOTECA_113_RT_327.pdf
www.upv.es/mattel/asig/numerico2/edps/edp.pp
www.uv.es/qf/04007
https://www.uam.es/personal_pdi/ciencias/pangulo/edpan/cap3.pdf

- 15 -