Está en la página 1de 6

UNIVERSIDAD DE GUADALAJARA

CENTRO UNIVERSITARIO DE LOS VALLES

Ecuación de Calor

MARCOS FLORES HERNÁNDEZ

NOVIEMBRE 2017
Código en matlab para la ecuación de Calor
clear all;
clc;
syms x;

%%esta parte del código se puede activar para pedir los datos desde
%%consola pra el problema de la ecuación de calor
% f = input('Introduzca la condición inicial: ', 's');
%Condición inicial
% g = inline(f);
% a = input('Introduzca la condición de frontera u(a,t): ');
%Condición de frontera
% b = input('Introduzca la condición de frontera u(b,t): ');
%condición de frontera
% L = input('Introduzca la longitud de alambre (L): '); %Longitud del
alambre
% TM = input('Introduzca el valor máximo del tiempo: '); %Tiempo
máximo
% k = input('Introduzca el número de particiones en el tiempo (tamaño
de paso k): '); %Tamaño de paso del tiempo
% M = TM/k; %discretización del tiempo %numero de puntos en el
tiempo
% h = input('Introduzca el número de particiones en el espacio
(tamaño de paso h): '); %Tamaño de paso del espacio
% N = L/h; %discretización del espacio %número de puntos en el
espacio
% ccalor = input('Introduzca el valor de la constante de calor: ');
%constante de calor del material
% lambda=((ccalor^2)*k)/h^2; %parametro

%%esta parte del código contiene los datos de un problema particular


de
%%la ecuación de calor. De igual manera se pueden inhabilitar si se
%%desea ingresar los datos desde consola o simplemente se pueden
cambiar
%%los valores desde esta parte del código
f=sin(pi*x);
g=inline(f);
a=0;
b=0;
L=1;
TM=0.005;
k=0.0005;
M=TM/k;
h=0.1;
N=L/h;
ccalor=1;
lambda=(ccalor*ccalor*k)/(h*h);
x=0:h:L; %intervalo en x
tiempo=0:k:TM; %intervalo en t
%Temperatura inicial.
for i=1:N+1
u(i,1)=g(x(i));
end
%Temperatura en la frontera.
for j=1:M+1
u(1,j)=a;
u(N+1,j)=b;
end

%calculo de la solución
for j=1:M
for i=2:N
u(i,j+1)=(1-2*lambda)*u(i,j)+lambda*(u(i+1,j)+u(i-1,j));
end
end

%Solución aproximada
figure(1)
mesh(x,tiempo,u')
colorbar
title('Solución con diferencias finitas')
xlabel('t')
ylabel('x')
zlabel('u(x,t)')

%Gráfica de la solución real de la ecuación de calor


figure(2)
[X,T1]= meshgrid(0:h:L,0:k:TM);

sum = exp(-(pi^2).*T1).*sin(pi.*X);

surf(X,T1,sum)
colorbar
title('Solución exacta')
xlabel('t')
ylabel('x')
zlabel('u(x,t)')

%grafica conde se enpalman las dos soluciones


figure(3)
mesh(x,tiempo,u')
colorbar
hold on
[X,T1]= meshgrid(x,tiempo);

sum = exp(-(pi^2).*T1).*sin(pi.*X); %Serie de fourier

surf(X,T1,sum)
title('comparación de las soluciones')
xlabel('t')
ylabel('x')
zlabel('u(x,t)')
Este código aproxima la solución a la ecuación diferencial de Calor. Los resultados obtenidos 
mediante el programa son los siguientes  

Para la ecuación diferencial 

, , , 0 1, 0, 

Con las condiciones de frontera 

0. 0, 1, 0, 0 , 
,0 sin , 0 1. 
Encontrar la solución analítica de la ecuación y además utilizar un tamaño de paso h = 0.1 y k = 
0.0005 para aproximar la solución utilizando diferencias finitas. 
Obtenemos los siguientes resultados numéricos al problema de la ecuación de calor  

 
Y la solución analítica 

 
La cual podemos comparar con nuestra aproximación y obtenemos la siguiente gráfica  
 

 
En la cual podemos notar que las dos soluciones coinciden dado que no se notan borden ni partes 
de la superficie irregulares. Sin embargo se pueden notar cambios de color en a grafica debido a 
que la aproximación no nos da exactamente los valores analíticos pues son aproximaciones 

También podría gustarte