15
Dpto. Ingeniería Aeroespacial Escuela de ingenieros aeroespaciales León a 30 de Enero de 2015 Calderón de Miguel, Víctor González Redondo, Diego Ejercicio 2.3 Método explicito para la ecuación del calor

Simulación Final

Embed Size (px)

DESCRIPTION

´ñplpñl-ñ

Citation preview

  • Dpto. Ingeniera Aeroespacial

    Escuela de ingenieros aeroespaciales

    Len a 30 de Enero de 2015

    Caldern de Miguel, Vctor

    Gonzlez Redondo, Diego

    Ejercicio 2.3

    Mtodo explicito para la ecuacin del calor

  • Ejercicio Simulacin 2.3

    - 2 -

    INDICE:

    1. Introduccin.

    2. Contextualizacin.

    3. Resolucin del problema.

    4. Conclusiones

    5. Bibliografa y Webgrafa.

  • Ejercicio Simulacin 2.3

    - 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.

  • Ejercicio Simulacin 2.3

    - 4 -

    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.

  • Ejercicio Simulacin 2.3

    - 5 -

    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,

  • Ejercicio Simulacin 2.3

    - 6 -

    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.

  • Ejercicio Simulacin 2.3

    - 7 -

  • Ejercicio Simulacin 2.3

    - 8 -

    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 ello seleccionamos columna o fila segn

    corresponda.

    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 2 porque no queremos

    cambiar las condiciones iniciales.

    for j=2:length(L) %Del mismo modo hacemos desde la

    "casilla" 2 hasta la longitud dada.

    A(i,j)=(1-2*r)*(A(i-1,j))+r*(A(i-1,j+1))+ r*(A(i-

    1,j-1)); %Stencil para mtodo explcito de la ecuacin del

    calor.

    end %Terminamos de rellenar la matriz--> hacen falta

    representar los puntos fantasma aadidos,

  • Ejercicio Simulacin 2.3

    - 9 -

    %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".

  • Ejercicio Simulacin 2.3

    - 10 -

    %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 ello seleccionamos columna o fila segn

    corresponda.

    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 2 porque no queremos

    cambiar las condiciones iniciales.

    for j=2:length(L) %Del mismo modo hacemos desde la

    "casilla" 2 hasta la longitud dada.

    A(i,j)=r*(A(i-1,j-1))+(1-2*r)*(A(i-1,j))+r*(A(i-

    1,j+1)); %Stencil para mtodo explcito de la ecuacin del

    calor.

    end %Terminamos de rellenar la matriz--> hacen falta

    representar los puntos fantasma aadidos,

    %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.

  • Ejercicio Simulacin 2.3

    - 11 -

    %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

  • Ejercicio Simulacin 2.3

    - 12 -

    %condiciones iniciales.

    A=zeros(length(T),length(L)+1);

    %Modificamos de la matriz los elementos correspondientes a las

    condiciones

    %iniciales, para ello seleccionamos columna o fila segn

    corresponda.

    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 2 porque no queremos

    cambiar las condiciones iniciales.

    for j=2:length(L) %Del mismo modo hacemos desde la

    "casilla" 2 hasta la longitud dada.

    A(i,j)=r*(A(i-1,j-1))+(1-2*r)*(A(i-1,j))+r*(A(i-

    1,j+1)); %Stencil para mtodo explcito de la ecuacin del

    calor.

    end %Terminamos de rellenar la matriz--> hacen falta

    representar los puntos fantasma aadidos,

    %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

  • Ejercicio Simulacin 2.3

    - 13 -

    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

  • Ejercicio Simulacin 2.3

    - 14 -

    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 la que horizontalmente estarn

    representados los valores desde 0 hasta L con el paso

    correspondiente.

    %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

  • Ejercicio Simulacin 2.3

    - 15 -

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

    subplot(1,6,4); %Corresponde al subgrfico del resultado real

    k=0.0125

    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