<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
		<id>https://mat.caminos.upm.es/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Antonio+Carrero+Mu%C3%B1oz</id>
		<title>MateWiki - Contribuciones del usuario [es]</title>
		<link rel="self" type="application/atom+xml" href="https://mat.caminos.upm.es/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Antonio+Carrero+Mu%C3%B1oz"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Antonio_Carrero_Mu%C3%B1oz"/>
		<updated>2026-04-23T09:26:48Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor._(Grupo_A8)&amp;diff=30367</id>
		<title>Ecuación del calor. (Grupo A8)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor._(Grupo_A8)&amp;diff=30367"/>
				<updated>2015-05-17T15:52:45Z</updated>
		
		<summary type="html">&lt;p&gt;Antonio Carrero Muñoz: /* Cambio de condiciones de contorno */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Ecuación del calor (Grupo A8)| [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED14/15|Curso 2014-15]] | Valentina Salazar; Antonio Carrero; José Francisco Aguilera }}&lt;br /&gt;
=Introducción y modelización del problema.=&lt;br /&gt;
En este artículo trataremos el comportamiento térmico de una varilla sometida a ciertas condiciones térmicas y físicas mediante diferentes métodos numéricos, daremos interpretación física a los resultados arrojados por estos métodos. Basaremos el estudio analítico y numérico necesario en la ecuación del calor propuesta por Jean-Baptiste Joseph Fourier en 1822.&lt;br /&gt;
&lt;br /&gt;
Para estudiar el problema consideraremos una varilla delgada, de sección constante y de un material homogéneo, de longitud &amp;lt;math&amp;gt;L=4&amp;lt;/math&amp;gt;. La situaremos en el intervalo &amp;lt;math&amp;gt;x\in{(0,4)}&amp;lt;/math&amp;gt; de la recta real. Para llevar acabo esta modelización tendremos que asumir unas ciertas hipótesis y simplificaciones:&lt;br /&gt;
&lt;br /&gt;
*Para el primer caso a plantear la varilla estará infinitamente aislada del entorno y por tanto no habrá flujo de calor sobre la superficie lateral de la misma.&lt;br /&gt;
*Al estar considerando el caso unidimensional de la ecuación del calor, asumiremos que al ser una varilla delgada la temperatura a lo largo de una sección ortogonal al eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; se mantiene constante en toda la sección.&lt;br /&gt;
*Consideraremos que el calor específico del material, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;, es constante y no depende de la temperatura, y por tanto la difusividad térmica,&amp;lt;math&amp;gt;\alpha=\frac{k}{c\rho}&amp;lt;/math&amp;gt; también lo será.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si damos un valor a las constantes &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt;, tal que &amp;lt;math&amp;gt;\alpha=2&amp;lt;/math&amp;gt;; y no hay fuentes ni sumideros de calor dentro de la varilla, la ecuación en derivadas parciales que tendrá que cumplir la distribución de temperaturas a lo largo de la misma es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)-2u_{xx}(x,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde:&lt;br /&gt;
*&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; nos define como evoluciona la temperatura a lo largo del eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&amp;lt;math&amp;gt;u_t(x,t)&amp;lt;/math&amp;gt; es la derivada de la temperatura con respecto del tiempo.&lt;br /&gt;
*&amp;lt;math&amp;gt;u_{xx}(x,t)&amp;lt;/math&amp;gt; es la segunda derivada de la temperatura con respecto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Junto con está ecuación en derivadas parciales consideraremos una serie de condiciones: iniciales y de contorno. Como condición inicial para está modelización propondremos::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(x,0)=e^{-6(x-2)^2}+5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x,0)&amp;lt;/math&amp;gt; no es otra cosa que la distribución de temperaturas inicial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A lo largo del artículo variaremos las condiciones de contorno para dar diferentes ejemplos, pero en el bloque de casos prácticos trabajaremos con las siguientes::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0,t)=5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éstas indican la temperatura (en este caso, otras pueden ser los flujos de calor o combinaciones de ambos) en cada uno de los extremos de la varilla.&lt;br /&gt;
&lt;br /&gt;
=Casos prácticos=&lt;br /&gt;
En los apartados que siguen estudiaremos a través del cálculo numérico el caso anteriormente expuesto e interpretaremos los resultados obtenidos mediante dicho análisis. El lenguaje usado en el que se implementarán estos modelos será código Matlab u Octave.&lt;br /&gt;
==Método de diferencias finitas o método de lineas==&lt;br /&gt;
Trataremos de reducir el sistema de ecuaciones a una sola variable en una discretización de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; valores (siendo &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; el tamaño de los subintervalos) haciendo la aproximación::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)=\frac{-U^{N-1}(t)+2U^N(t)-U^{N+1}(t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Así podemos aplicar uno de los diferentes métodos iterativos en la variable &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; que se muestran en los subapartados que siguen.&lt;br /&gt;
&lt;br /&gt;
===Método del trapecio===&lt;br /&gt;
Se trata de un método implícito, es decir que hay que despejar en la ecuación matricial que nos da la &amp;lt;math&amp;gt;U(t)&amp;lt;/math&amp;gt;. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo los siguientes gráficos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dftrap.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la temperatura apenas tarda en estabilizarse en el tiempo a lo largo de los puntos de la varilla, esto nos sugiere que una buena aproximación será la solución estacionaria de la ecuación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dftrappm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
La temperatura del punto medio descenderá hasta volverse casi asintótica hacia un valor aproximado de 2.625.&lt;br /&gt;
&lt;br /&gt;
===Método de Euler explícito===&lt;br /&gt;
A diferencia del método del trapecio, como su nombre indica, este método es explicito, lo que es una ventaja a la hora de implementar ya que nos ahorramos el despejar; pero sin embargo se trata de un método bastante inestable, y para que arroje soluciones lógicas hemos de disminuir el tamaño del paso temporal frente al espacial del orden de &amp;lt;math&amp;gt;dt=\frac{h^2}{4}&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;dt&amp;lt;/math&amp;gt; dichos pasos espacial y temporal respectivamente. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h^2/4; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I-dt*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M*sol(:,n)+dt*F;&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];&lt;br /&gt;
%dibujamos la solucion&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo los gráficos:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerexp.png|marco|centro|Evolución de la temperatura en la varila frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al igual que en el apartado anterior vemos que se estabiliza muy rápido. Debido al tener que disminuir bastante el tamaño del paso temporal hemos tenido que cambiar la función de Octave para representar este gráfico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerexppm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vemos que en esta implementación los cambios de temperatura en el punto medio son más ''continuos'', pero también acaba siendo asintótica en un valor aproximado de 2.625.&lt;br /&gt;
===Método de Euler implícito===&lt;br /&gt;
Es más fácil hacerlo converger que su homónimo explícito, pero tiene la desventaja de tener que despejar en la ecuación para implementarlo. A continuación se muestra el código que lo implementa en Matlab u Octave, dándonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+dt*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt*(F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obteniendo los siguientes gráficos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerimp.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Volvemos a ver que la estabilización de temperaturas en la varilla es bastante rápida.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerimppm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
Una vez más observamos un descenso asintótico hacia el valor de temperatura 2.625.&lt;br /&gt;
===Método de Runge-Kutta===&lt;br /&gt;
Se trata de un método explícito, por tanto necesitaremos aumentar el tamaño del paso una vez más hasta los mismos valores que para Euler explícito para asegurar su convergencia. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h^2/4; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I-dt.*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
   k1=-K*sol(:,n)+F;&lt;br /&gt;
   k2=-K*(sol(:,n)+k1*dt/2)+F;&lt;br /&gt;
   k3=-K*(sol(:,n)+k2*dt/2)+F;&lt;br /&gt;
   k4=-K*(sol(:,n)+k3*dt)+F;&lt;br /&gt;
   sol(:,n+1)=sol(:,n)+(dt/6)*(k1+2*k2+2*k3+k4);&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];&lt;br /&gt;
%dibujamos la solucion &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfrk.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
Al igual que en todos los métodos anteriores se produce la ya esperada estabilización de temperaturas en la varilla de manera bastante acelerada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfrkpm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
De nuevo aparece un descenso asintótico hasta el valor 2.625.&lt;br /&gt;
&lt;br /&gt;
==Método de Fourier==&lt;br /&gt;
Partiendo de una solución analítica previa obtenemos la solución en forma de sumatorio de infinitos términos, reduciendo este número de términos numéricamente calcularemos una solución aproximada. Los autovalores y autovectores obtenidos para este problema y con condiciones de contorno son::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_k=\frac{k^2\pi^2}{16}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\varphi_k(x)=sen(\frac{k\pi x}{4})&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;k=1,2,3,...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dados estos valores y la función de homogenización para las condiciones de contorno::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v(x,t)=5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mediante el siguiente código de Matlab implementamos el problema numéricamente, obteniendo así la gráfica en 3D de la solución para &amp;lt;math&amp;gt;k=20&amp;lt;/math&amp;gt; (por ser la más representativa y exacta),y la comparación de las gráficas en el plano de &amp;lt;math&amp;gt;t=0,5&amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt;k=1,3,5,10 y 20&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
N=100;&lt;br /&gt;
a=0; b=4;&lt;br /&gt;
h=(b-a)/N; x=0:h:4; % space discretization&lt;br /&gt;
ht=h; t=0:ht:5; % time discretization&lt;br /&gt;
[xx,tt]=meshgrid(x,t); % time discretization&lt;br /&gt;
f=(exp((-6)*(x-2).^2)); % Initial data&lt;br /&gt;
aprox=0; % Compute the approximation&lt;br /&gt;
q=1;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:)) % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=3;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'r') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=5;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'m') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=10;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'g') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=20;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'y') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,5-5/4*x,'k')&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(xx,tt,aprox2)&lt;br /&gt;
hold on}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo así:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:MF.png|marco|centro|Gráfico que muestra de la temperatura de la varilla frente a al tiempo a lo largo de sus diferentes posiciones.]]&lt;br /&gt;
&lt;br /&gt;
Se puede ver como a diferencia del método de lineas el error viene inducido por la aproximación mediante series de Fourier de la condición inicial. Por lo demás evoluciona de manera similar a los métodos aplicados anteriormente.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Archivo:MF20.png|marco|centro|Gráficas de las temperaturas a lo largo de la varilla con aproximaciones de diferentes índices del sumatorio en la solución. k=1(azul). k=3(rojo). k=5(magenta). k=10(verde). k=20(amarillo). solución estacionaria(negro)]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica anterior se puede apreciar el nivel de aproximación con relación al número de coeficientes que utilizamos de la serie. Vemos  como cuantos menos coeficientes usamos más nos acercamos incluso en tiempo cortos a la solución estacionaria, lo que nos indica que desciende el nivel de precisión de estas aproximaciones.&lt;br /&gt;
&lt;br /&gt;
=Cambio de condiciones de contorno=&lt;br /&gt;
Ahora manteniendo la ecuación que nos modelizaba el comportamiento térmico de la varilla, cambiamos las condiciones de contorno en los extremos. Las nuevas condiciones propuestas se pueden asimilar como el aislamiento térmico total del extremo izquierdo, lo que anula el flujo de calor en ese lado. Estas son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para implementarlo en sus nuevas condiciones usaremos el método de lineas con el método del trapecio. El código que implementa esta modelización en lenguaje Matlab y nos proporciona un gráfico de la temperatura frente a las variables espacial y temporal es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=0:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=zeros(length(t),1);&lt;br /&gt;
sol=[sol;UB'];&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Del cual obtenemos:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfneu.png|marco|centro|Progreso de la temperatura frente a tiempo y espacio con las nuevas condiciones.]]&lt;br /&gt;
&lt;br /&gt;
Como se puede ver en la imagen anterior la temperatura de los puntos interiores de la varilla va descendiendo lenta y progresivamente, a diferencia de en el caso anterior donde esta tendía a homogeneizarse.&lt;br /&gt;
&lt;br /&gt;
=Interpretaciones estacionarias=&lt;br /&gt;
Como hemos visto en los apartados anteriores de este artículo, las soluciones por norma general de esta ecuación tienden a volverse estacionarias en unos intervalos de tiempo bastante breves. Por ello en esta sección estudiaremos estas soluciones estacionarias y el error que se comete asumiéndolas como ciertas en tiempos relativamente cortos.&lt;br /&gt;
&lt;br /&gt;
Para calcular analiticamente estas soluciones estacionarias basta con considerar nulo el término en &amp;lt;math&amp;gt;u_t(x,t)&amp;lt;/math&amp;gt; de la ecuación en derivadas parciales, y resolver lo que ahora nos queda un problema de contorno con dichas condiciones y la ecuación diferencial ordinaria que nos queda de hacer la despreciación anterior.&lt;br /&gt;
&lt;br /&gt;
Tratando con las condiciones de contorno dadas inicialmente::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0,t)=5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analíticamente para estas condiciones la solución estacionaria hallada es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{est}(x)=5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mediante cálculo numérico y el siguiente código de Octave, conseguimos una gráfica de los diferentes valores de la temperatura en ciertos tiempos que tendrán que ir acercándose a la solución estacionaria, y un gráfico del error cometido si aproximásemos en estos tiempos el valor numérico aproximado de la temperatura por el estacionario calculado analíticamente. Además, nos aporta una tabla con en la primera fila el tiempo para el que se calcula el error respecto de la estacionaria y en las sucesivas filar los errores correspondientes.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=T/L*h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
%Posiciones&lt;br /&gt;
tiempos=[0,1,2,10];&lt;br /&gt;
posicion=tiempos/dt;&lt;br /&gt;
figure(2)&lt;br /&gt;
%dibujamos para ciertos tiempos&lt;br /&gt;
  for m=1:length(posicion)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(x,sol(:,posicion(m)+1),'m');&lt;br /&gt;
  end&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('temperaturas en cada t')&lt;br /&gt;
%Estacionaria&lt;br /&gt;
hold on&lt;br /&gt;
est=5*(1-x/4);&lt;br /&gt;
plot(x,est);&lt;br /&gt;
figure(3)&lt;br /&gt;
%errores&lt;br /&gt;
for p=1:length(posicion)&lt;br /&gt;
    error=sol(:,posicion(p)+1).-est';&lt;br /&gt;
    Error(:,p)=error;&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(x,error)&lt;br /&gt;
  end&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('error cometido')&lt;br /&gt;
[0,1,2,10;Error]}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo:&lt;br /&gt;
 &lt;br /&gt;
[[Archivo:Estacionaria1.png|marco|centro|Contraste de la gráfica de la estacionaria con las soluciones calculadas mediante numérico en diferentes tiempos.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar como se reduce el error a medida que aumentamos el tiempo de modelización cor respecto de la estacionaria.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Estacionaria2.png|marco|centro|Error cometido al aproximar en diferentes tiempos por la estacionaria.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen anterior se puede ver una comparativa del el error con respecto al eje x, donde se ve más claramente que arriba como se reduce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tablaerror.png|marco|centro|Tabla que nos muestra el error cometido en los diferentes tiempos.]]&lt;br /&gt;
&lt;br /&gt;
En los valores numéricos dispuestos en la enterior tabla ya se muestra con total seguridad como se reduce el error a medida que aumentamos el tiempo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si ahora por el contrario tratamos las condiciones propuestas en el apartado de cambio de condiciones de contorno, las cuales son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Analíticamente para estas condiciones la solución estacionaria hallada es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{est}(x)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que al principio nos puede chocar al ver la gráfica, ya que en las otras condiciones se llega al estado estacionario de manera mucho más rápida. Si consideramos como estado estacionario que la diferencia entre dos valores consecutivos sea menor de 0.05, mediante el siguiente programa do Octave podemos calcular este valor de tiempo:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=0:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=zeros(length(t),1);&lt;br /&gt;
sol=[sol;UB'];for i=1:length(t)&lt;br /&gt;
    er=abs(sol(:,i+1)-sol(:,i));&lt;br /&gt;
    a=max(er);&lt;br /&gt;
    if a&amp;lt;=0.05&lt;br /&gt;
    cont=i;&lt;br /&gt;
    tiempo=(cont-1)*dt;&lt;br /&gt;
    break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
tiempo}}&lt;br /&gt;
&lt;br /&gt;
El programa nos dice que el tiempo en el que se cumple esta condición es &amp;lt;math&amp;gt;t=0.7&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Intercambio de calor con el entorno. Varilla no aislada longitudinalmente=&lt;br /&gt;
Si ahora panteamos el intercambio de calor con el exterior, suponiendo que este ambiente se encuentra a una temperatura de 16ºC, la ecuación diferencial se ve afectada de manera que nos queda::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)-2u_{xx}(x,t)+u(x,t)-16=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Implementando numéricamente esta ecuación con las condiciones iniciales propuestas en el primer apartado de este artículo, mediante el método de lineas y el método del trapecio, mediante el siguiente código, obteniendo así la gráfica de la temperatura en cada punto de la varilla con respecto al tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=(2+h^2)*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1).+16;;&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo de este código:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasaire.png|marco|centro|Representación de la temperatura en cada punto de la varilla con respecto al tiempo]]&lt;br /&gt;
&lt;br /&gt;
Donde se ve como el exterior aporta calor a la varilla elevando sus temperaturas frente a las iniciales.&lt;br /&gt;
&lt;br /&gt;
Si considerásemos el caso estacionario, se puede calcular mediante la inclusión del siguiente fragmento de código en el anterior programa que modelizaba el fenómeno no estacionario. Además de darnos la situación de temperaturas estacionarias, nos da el tiempo en el que este se alcanza con un error relativo de &amp;lt;math&amp;gt;10^{-3}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%Estacionaria&lt;br /&gt;
figure(2)&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('temperatura')&lt;br /&gt;
c1=det([-11,1;-16,exp(-4)])/det([1,1;exp(4),exp(-4)]);&lt;br /&gt;
c2=det([1,-11;exp(4),-16])/det([1,1;exp(4),exp(-4)]);&lt;br /&gt;
est=c1*exp(x)+c2*exp(-x)+16;&lt;br /&gt;
plot(x,est);&lt;br /&gt;
hold on&lt;br /&gt;
for i=1:length(t)-1&lt;br /&gt;
    er=abs(sol(:,i+1)-sol(:,i));&lt;br /&gt;
    a=max(er);&lt;br /&gt;
    if a&amp;lt;=0.001&lt;br /&gt;
    cont=i;&lt;br /&gt;
    ti=(cont-1)*dt;&lt;br /&gt;
    break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
ti&lt;br /&gt;
cont}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La gráfica conseguida del código anterior es:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasaireest.png|marco|centro|Temperatura estacionaria de la varilla con respecto a la posición de cada punto de ella.]]&lt;br /&gt;
&lt;br /&gt;
El valor de tiempo obtenido es &amp;lt;math&amp;gt;t=5.9&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Cambio de condiciones de contorno==&lt;br /&gt;
Si cambiamos las condiciones de contorno de la ecuación por estas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=2&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=-2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Físicamente podrían interpretarse como la conexión de un deposito de fluido en el extremo derecho que obligara un flujo constante de calor en el mismo extremo, y que el extremo izquierdo estuviera posicionado sobre un objeto que le obligara a tener una temperatura constante.&lt;br /&gt;
&lt;br /&gt;
Si implementamos numéricamente este nuevo modelo propuesto mediante el siguiente código Matlab, obtenemos la representación de las temperaturas de la varilla frente al tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=(2+h^2)*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K(1,1)=K(1,1)-1;&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1).+16;;&lt;br /&gt;
F(1)=F(1)+2/h;&lt;br /&gt;
F(N)=F(N)+2/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=2*ones(1,length(t));&lt;br /&gt;
sol=[sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Logrando así la gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasneu111.png|marco|centro|Representación de las temperaturas de la varilla frente al tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar como la temperatura de los puntos de la varilla va aumentado debido al flujo entrante por el lado derecho de esta hasta que alcanza un estado estacionario.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED14/15]]&lt;br /&gt;
[[Categoría:Trabajos 2014-15]]&lt;/div&gt;</summary>
		<author><name>Antonio Carrero Muñoz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor._(Grupo_A8)&amp;diff=30353</id>
		<title>Ecuación del calor. (Grupo A8)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor._(Grupo_A8)&amp;diff=30353"/>
				<updated>2015-05-15T19:53:33Z</updated>
		
		<summary type="html">&lt;p&gt;Antonio Carrero Muñoz: /* Interpretaciones estacionarias */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Ecuación del calor (Grupo A8)| [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED14/15|Curso 2014-15]] | Valentina Salazar; Antonio Carrero; José Francisco Aguilera }}&lt;br /&gt;
=Introducción y modelización del problema.=&lt;br /&gt;
En este artículo trataremos el comportamiento térmico de una varilla sometida a ciertas condiciones térmicas y físicas mediante diferentes métodos numéricos, daremos interpretación física a los resultados arrojados por estos métodos. Basaremos el estudio analítico y numérico necesario en la ecuación del calor propuesta por Jean-Baptiste Joseph Fourier en 1822.&lt;br /&gt;
&lt;br /&gt;
Para estudiar el problema consideraremos una varilla delgada, de sección constante y de un material homogéneo, de longitud &amp;lt;math&amp;gt;L=4&amp;lt;/math&amp;gt;. La situaremos en el intervalo &amp;lt;math&amp;gt;x\in{(0,4)}&amp;lt;/math&amp;gt; de la recta real. Para llevar acabo esta modelización tendremos que asumir unas ciertas hipótesis y simplificaciones:&lt;br /&gt;
&lt;br /&gt;
*Para el primer caso a plantear la varilla estará infinitamente aislada del entorno y por tanto no habrá flujo de calor sobre la superficie lateral de la misma.&lt;br /&gt;
*Al estar considerando el caso unidimensional de la ecuación del calor, asumiremos que al ser una varilla delgada la temperatura a lo largo de una sección ortogonal al eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; se mantiene constante en toda la sección.&lt;br /&gt;
*Consideraremos que el calor específico del material, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;, es constante y no depende de la temperatura, y por tanto la difusividad térmica,&amp;lt;math&amp;gt;\alpha=\frac{k}{c\rho}&amp;lt;/math&amp;gt; también lo será.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si damos un valor a las constantes &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt;, tal que &amp;lt;math&amp;gt;\alpha=2&amp;lt;/math&amp;gt;; y no hay fuentes ni sumideros de calor dentro de la varilla, la ecuación en derivadas parciales que tendrá que cumplir la distribución de temperaturas a lo largo de la misma es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)-2u_{xx}(x,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde:&lt;br /&gt;
*&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; nos define como evoluciona la temperatura a lo largo del eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&amp;lt;math&amp;gt;u_t(x,t)&amp;lt;/math&amp;gt; es la derivada de la temperatura con respecto del tiempo.&lt;br /&gt;
*&amp;lt;math&amp;gt;u_{xx}(x,t)&amp;lt;/math&amp;gt; es la segunda derivada de la temperatura con respecto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Junto con está ecuación en derivadas parciales consideraremos una serie de condiciones: iniciales y de contorno. Como condición inicial para está modelización propondremos::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(x,0)=e^{-6(x-2)^2}+5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x,0)&amp;lt;/math&amp;gt; no es otra cosa que la distribución de temperaturas inicial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A lo largo del artículo variaremos las condiciones de contorno para dar diferentes ejemplos, pero en el bloque de casos prácticos trabajaremos con las siguientes::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0,t)=5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éstas indican la temperatura (en este caso, otras pueden ser los flujos de calor o combinaciones de ambos) en cada uno de los extremos de la varilla.&lt;br /&gt;
&lt;br /&gt;
=Casos prácticos=&lt;br /&gt;
En los apartados que siguen estudiaremos a través del cálculo numérico el caso anteriormente expuesto e interpretaremos los resultados obtenidos mediante dicho análisis. El lenguaje usado en el que se implementarán estos modelos será código Matlab u Octave.&lt;br /&gt;
==Método de diferencias finitas o método de lineas==&lt;br /&gt;
Trataremos de reducir el sistema de ecuaciones a una sola variable en una discretización de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; valores (siendo &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; el tamaño de los subintervalos) haciendo la aproximación::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)=\frac{-U^{N-1}(t)+2U^N(t)-U^{N+1}(t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Así podemos aplicar uno de los diferentes métodos iterativos en la variable &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; que se muestran en los subapartados que siguen.&lt;br /&gt;
&lt;br /&gt;
===Método del trapecio===&lt;br /&gt;
Se trata de un método implícito, es decir que hay que despejar en la ecuación matricial que nos da la &amp;lt;math&amp;gt;U(t)&amp;lt;/math&amp;gt;. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo los siguientes gráficos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dftrap.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la temperatura apenas tarda en estabilizarse en el tiempo a lo largo de los puntos de la varilla, esto nos sugiere que una buena aproximación será la solución estacionaria de la ecuación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dftrappm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
La temperatura del punto medio descenderá hasta volverse casi asintótica hacia un valor aproximado de 2.625.&lt;br /&gt;
&lt;br /&gt;
===Método de Euler explícito===&lt;br /&gt;
A diferencia del método del trapecio, como su nombre indica, este método es explicito, lo que es una ventaja a la hora de implementar ya que nos ahorramos el despejar; pero sin embargo se trata de un método bastante inestable, y para que arroje soluciones lógicas hemos de disminuir el tamaño del paso temporal frente al espacial del orden de &amp;lt;math&amp;gt;dt=\frac{h^2}{4}&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;dt&amp;lt;/math&amp;gt; dichos pasos espacial y temporal respectivamente. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h^2/4; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I-dt*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M*sol(:,n)+dt*F;&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];&lt;br /&gt;
%dibujamos la solucion&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo los gráficos:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerexp.png|marco|centro|Evolución de la temperatura en la varila frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al igual que en el apartado anterior vemos que se estabiliza muy rápido. Debido al tener que disminuir bastante el tamaño del paso temporal hemos tenido que cambiar la función de Octave para representar este gráfico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerexppm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vemos que en esta implementación los cambios de temperatura en el punto medio son más ''continuos'', pero también acaba siendo asintótica en un valor aproximado de 2.625.&lt;br /&gt;
===Método de Euler implícito===&lt;br /&gt;
Es más fácil hacerlo converger que su homónimo explícito, pero tiene la desventaja de tener que despejar en la ecuación para implementarlo. A continuación se muestra el código que lo implementa en Matlab u Octave, dándonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+dt*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt*(F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obteniendo los siguientes gráficos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerimp.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Volvemos a ver que la estabilización de temperaturas en la varilla es bastante rápida.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerimppm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
Una vez más observamos un descenso asintótico hacia el valor de temperatura 2.625.&lt;br /&gt;
===Método de Runge-Kutta===&lt;br /&gt;
Se trata de un método explícito, por tanto necesitaremos aumentar el tamaño del paso una vez más hasta los mismos valores que para Euler explícito para asegurar su convergencia. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h^2/4; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I-dt.*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
   k1=-K*sol(:,n)+F;&lt;br /&gt;
   k2=-K*(sol(:,n)+k1*dt/2)+F;&lt;br /&gt;
   k3=-K*(sol(:,n)+k2*dt/2)+F;&lt;br /&gt;
   k4=-K*(sol(:,n)+k3*dt)+F;&lt;br /&gt;
   sol(:,n+1)=sol(:,n)+(dt/6)*(k1+2*k2+2*k3+k4);&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];&lt;br /&gt;
%dibujamos la solucion &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfrk.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
Al igual que en todos los métodos anteriores se produce la ya esperada estabilización de temperaturas en la varilla de manera bastante acelerada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfrkpm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
De nuevo aparece un descenso asintótico hasta el valor 2.625.&lt;br /&gt;
&lt;br /&gt;
==Método de Fourier==&lt;br /&gt;
Partiendo de una solución analítica previa obtenemos la solución en forma de sumatorio de infinitos términos, reduciendo este número de términos numéricamente calcularemos una solución aproximada. Los autovalores y autovectores obtenidos para este problema y con condiciones de contorno son::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_k=\frac{k^2\pi^2}{16}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\varphi_k(x)=sen(\frac{k\pi x}{4})&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;k=1,2,3,...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dados estos valores y la función de homogenización para las condiciones de contorno::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v(x,t)=5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mediante el siguiente código de Matlab implementamos el problema numéricamente, obteniendo así la gráfica en 3D de la solución para &amp;lt;math&amp;gt;k=20&amp;lt;/math&amp;gt; (por ser la más representativa y exacta),y la comparación de las gráficas en el plano de &amp;lt;math&amp;gt;t=0,5&amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt;k=1,3,5,10 y 20&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
N=100;&lt;br /&gt;
a=0; b=4;&lt;br /&gt;
h=(b-a)/N; x=0:h:4; % space discretization&lt;br /&gt;
ht=h; t=0:ht:5; % time discretization&lt;br /&gt;
[xx,tt]=meshgrid(x,t); % time discretization&lt;br /&gt;
f=(exp((-6)*(x-2).^2)); % Initial data&lt;br /&gt;
aprox=0; % Compute the approximation&lt;br /&gt;
q=1;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:)) % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=3;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'r') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=5;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'m') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=10;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'g') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=20;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'y') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,5-5/4*x,'k')&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(xx,tt,aprox2)&lt;br /&gt;
hold on}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo así:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:MF.png|marco|centro|Gráfico que muestra de la temperatura de la varilla frente a al tiempo a lo largo de sus diferentes posiciones.]]&lt;br /&gt;
&lt;br /&gt;
Se puede ver como a diferencia del método de lineas el error viene inducido por la aproximación mediante series de Fourier de la condición inicial. Por lo demás evoluciona de manera similar a los métodos aplicados anteriormente.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Archivo:MF20.png|marco|centro|Gráficas de las temperaturas a lo largo de la varilla con aproximaciones de diferentes índices del sumatorio en la solución. k=1(azul). k=3(rojo). k=5(magenta). k=10(verde). k=20(amarillo). solución estacionaria(negro)]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica anterior se puede apreciar el nivel de aproximación con relación al número de coeficientes que utilizamos de la serie. Vemos  como cuantos menos coeficientes usamos más nos acercamos incluso en tiempo cortos a la solución estacionaria, lo que nos indica que desciende el nivel de precisión de estas aproximaciones.&lt;br /&gt;
&lt;br /&gt;
=Cambio de condiciones de contorno=&lt;br /&gt;
Ahora manteniendo la ecuación que nos modelizaba el comportamiento térmico de la varilla, cambiamos las condiciones de contorno en los extremos. Las nuevas condiciones propuestas se pueden asimilar como el aislamiento térmico total del extremo izquierdo, lo que anula el flujo de calor en ese lado. Estas son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para implementarlo en sus nuevas condiciones usaremos el método de lineas con el método del trapecio. El código que implementa esta modelización en lenguaje Matlab y nos proporciona un gráfico de la temperatura frente a las variables espacial y temporal es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=0:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=zeros(length(t),1);&lt;br /&gt;
sol=[sol;UB'];&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Del cual obtenemos:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfneu.png|marco|centro|Progreso de la temperatura frente a tiempo y espacio con las nuevas condiciones.]]&lt;br /&gt;
&lt;br /&gt;
Como se puede ver en la imagen anterior la temperatura de los puntos interiores de la varilla va descendiendo lenta y progresivamente, a diferencia de en el caso anterior donde esta tendía a homogeneizarse.&lt;br /&gt;
&lt;br /&gt;
=Interpretaciones estacionarias=&lt;br /&gt;
Como hemos visto en los apartados anteriores de este artículo, las soluciones por norma general de esta ecuación tienden a volverse estacionarias en unos intervalos de tiempo bastante breves. Por ello en esta sección estudiaremos estas soluciones estacionarias y el error que se comete asumiéndolas como ciertas en tiempos relativamente cortos.&lt;br /&gt;
&lt;br /&gt;
Para calcular analiticamente estas soluciones estacionarias basta con considerar nulo el término en &amp;lt;math&amp;gt;u_t(x,t)&amp;lt;/math&amp;gt; de la ecuación en derivadas parciales, y resolver lo que ahora nos queda un problema de contorno con dichas condiciones y la ecuación diferencial ordinaria que nos queda de hacer la despreciación anterior.&lt;br /&gt;
&lt;br /&gt;
Tratando con las condiciones de contorno dadas inicialmente::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0,t)=5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analíticamente para estas condiciones la solución estacionaria hallada es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{est}(x)=5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mediante cálculo numérico y el siguiente código de Octave, conseguimos una gráfica de los diferentes valores de la temperatura en ciertos tiempos que tendrán que ir acercándose a la solución estacionaria, y un gráfico del error cometido si aproximásemos en estos tiempos el valor numérico aproximado de la temperatura por el estacionario calculado analíticamente. Además, nos aporta una tabla con en la primera fila el tiempo para el que se calcula el error respecto de la estacionaria y en las sucesivas filar los errores correspondientes.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=T/L*h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
%Posiciones&lt;br /&gt;
tiempos=[0,1,2,10];&lt;br /&gt;
posicion=tiempos/dt;&lt;br /&gt;
figure(2)&lt;br /&gt;
%dibujamos para ciertos tiempos&lt;br /&gt;
  for m=1:length(posicion)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(x,sol(:,posicion(m)+1),'m');&lt;br /&gt;
  end&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('temperaturas en cada t')&lt;br /&gt;
%Estacionaria&lt;br /&gt;
hold on&lt;br /&gt;
est=5*(1-x/4);&lt;br /&gt;
plot(x,est);&lt;br /&gt;
figure(3)&lt;br /&gt;
%errores&lt;br /&gt;
for p=1:length(posicion)&lt;br /&gt;
    error=sol(:,posicion(p)+1).-est';&lt;br /&gt;
    Error(:,p)=error;&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(x,error)&lt;br /&gt;
  end&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('error cometido')&lt;br /&gt;
[0,1,2,10;Error]}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo:&lt;br /&gt;
 &lt;br /&gt;
[[Archivo:Estacionaria1.png|marco|centro|Contraste de la gráfica de la estacionaria con las soluciones calculadas mediante numérico en diferentes tiempos.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar como se reduce el error a medida que aumentamos el tiempo de modelización cor respecto de la estacionaria.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Estacionaria2.png|marco|centro|Error cometido al aproximar en diferentes tiempos por la estacionaria.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen anterior se puede ver una comparativa del el error con respecto al eje x, donde se ve más claramente que arriba como se reduce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tablaerror.png|marco|centro|Tabla que nos muestra el error cometido en los diferentes tiempos.]]&lt;br /&gt;
&lt;br /&gt;
En los valores numéricos dispuestos en la enterior tabla ya se muestra con total seguridad como se reduce el error a medida que aumentamos el tiempo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si ahora por el contrario tratamos las condiciones propuestas en el apartado de cambio de condiciones de contorno, las cuales son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Analíticamente para estas condiciones la solución estacionaria hallada es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{est}(x)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que al principio nos puede chocar al ver la gráfica, ya que en las otras condiciones se llega al estado estacionario de manera mucho más rápida. Si consideramos como estado estacionario que la diferencia entre dos valores consecutivos sea menor de 0.05, mediante el siguiente programa do Octave podemos calcular este valor de tiempo:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=0:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=zeros(length(t),1);&lt;br /&gt;
sol=[sol;UB'];for i=1:length(t)&lt;br /&gt;
    er=abs(sol(:,i+1)-sol(:,i));&lt;br /&gt;
    a=max(er);&lt;br /&gt;
    if a&amp;lt;=0.05&lt;br /&gt;
    cont=i;&lt;br /&gt;
    tiempo=(cont-1)*dt;&lt;br /&gt;
    break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
tiempo}}&lt;br /&gt;
&lt;br /&gt;
El programa nos dice que el tiempo en el que se cumple esta condición es &amp;lt;math&amp;gt;t=0.7&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Intercambio de calor con el entorno. Varilla no aislada longitudinalmente=&lt;br /&gt;
Si ahora panteamos el intercambio de calor con el exterior, suponiendo que este ambiente se encuentra a una temperatura de 16ºC, la ecuación diferencial se ve afectada de manera que nos queda::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)-2u_{xx}(x,t)+u(x,t)-16=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Implementando numéricamente esta ecuación con las condiciones iniciales propuestas en el primer apartado de este artículo, mediante el método de lineas y el método del trapecio, mediante el siguiente código, obteniendo así la gráfica de la temperatura en cada punto de la varilla con respecto al tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=(2+h^2)*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1).+16;;&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo de este código:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasaire.png|marco|centro|Representación de la temperatura en cada punto de la varilla con respecto al tiempo]]&lt;br /&gt;
&lt;br /&gt;
Donde se ve como el exterior aporta calor a la varilla elevando sus temperaturas frente a las iniciales.&lt;br /&gt;
&lt;br /&gt;
Si considerásemos el caso estacionario, se puede calcular mediante la inclusión del siguiente fragmento de código en el anterior programa que modelizaba el fenómeno no estacionario. Además de darnos la situación de temperaturas estacionarias, nos da el tiempo en el que este se alcanza con un error relativo de &amp;lt;math&amp;gt;10^{-3}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%Estacionaria&lt;br /&gt;
figure(2)&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('temperatura')&lt;br /&gt;
c1=det([-11,1;-16,exp(-4)])/det([1,1;exp(4),exp(-4)]);&lt;br /&gt;
c2=det([1,-11;exp(4),-16])/det([1,1;exp(4),exp(-4)]);&lt;br /&gt;
est=c1*exp(x)+c2*exp(-x)+16;&lt;br /&gt;
plot(x,est);&lt;br /&gt;
hold on&lt;br /&gt;
for i=1:length(t)-1&lt;br /&gt;
    er=abs(sol(:,i+1)-sol(:,i));&lt;br /&gt;
    a=max(er);&lt;br /&gt;
    if a&amp;lt;=0.001&lt;br /&gt;
    cont=i;&lt;br /&gt;
    ti=(cont-1)*dt;&lt;br /&gt;
    break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
ti&lt;br /&gt;
cont}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La gráfica conseguida del código anterior es:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasaireest.png|marco|centro|Temperatura estacionaria de la varilla con respecto a la posición de cada punto de ella.]]&lt;br /&gt;
&lt;br /&gt;
El valor de tiempo obtenido es &amp;lt;math&amp;gt;t=5.9&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Cambio de condiciones de contorno==&lt;br /&gt;
Si cambiamos las condiciones de contorno de la ecuación por estas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=2&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=-2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Físicamente podrían interpretarse como la conexión de un deposito de fluido en el extremo derecho que obligara un flujo constante de calor en el mismo extremo, y que el extremo derecho estuviera posicionado sobre un objeto que le obligara a tener una temperatura constante.&lt;br /&gt;
&lt;br /&gt;
Si implementamos numéricamente este nuevo modelo propuesto mediante el siguiente código Matlab, obtenemos la representación de las temperaturas de la varilla frente al tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=(2+h^2)*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K(1,1)=K(1,1)-1;&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1).+16;;&lt;br /&gt;
F(1)=F(1)+2/h;&lt;br /&gt;
F(N)=F(N)+2/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=2*ones(1,length(t));&lt;br /&gt;
sol=[sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Logrando así la gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasneu111.png|marco|centro|Representación de las temperaturas de la varilla frente al tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar como la temperatura de los puntos de la varilla va aumentado debido al flujo entrante por el lado izquierdo de esta hasta que alcanza un estado estacionario.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED14/15]]&lt;br /&gt;
[[Categoría:Trabajos 2014-15]]&lt;/div&gt;</summary>
		<author><name>Antonio Carrero Muñoz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor._(Grupo_A8)&amp;diff=30352</id>
		<title>Ecuación del calor. (Grupo A8)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor._(Grupo_A8)&amp;diff=30352"/>
				<updated>2015-05-15T19:24:23Z</updated>
		
		<summary type="html">&lt;p&gt;Antonio Carrero Muñoz: /* Método de Fourier */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Ecuación del calor (Grupo A8)| [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED14/15|Curso 2014-15]] | Valentina Salazar; Antonio Carrero; José Francisco Aguilera }}&lt;br /&gt;
=Introducción y modelización del problema.=&lt;br /&gt;
En este artículo trataremos el comportamiento térmico de una varilla sometida a ciertas condiciones térmicas y físicas mediante diferentes métodos numéricos, daremos interpretación física a los resultados arrojados por estos métodos. Basaremos el estudio analítico y numérico necesario en la ecuación del calor propuesta por Jean-Baptiste Joseph Fourier en 1822.&lt;br /&gt;
&lt;br /&gt;
Para estudiar el problema consideraremos una varilla delgada, de sección constante y de un material homogéneo, de longitud &amp;lt;math&amp;gt;L=4&amp;lt;/math&amp;gt;. La situaremos en el intervalo &amp;lt;math&amp;gt;x\in{(0,4)}&amp;lt;/math&amp;gt; de la recta real. Para llevar acabo esta modelización tendremos que asumir unas ciertas hipótesis y simplificaciones:&lt;br /&gt;
&lt;br /&gt;
*Para el primer caso a plantear la varilla estará infinitamente aislada del entorno y por tanto no habrá flujo de calor sobre la superficie lateral de la misma.&lt;br /&gt;
*Al estar considerando el caso unidimensional de la ecuación del calor, asumiremos que al ser una varilla delgada la temperatura a lo largo de una sección ortogonal al eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; se mantiene constante en toda la sección.&lt;br /&gt;
*Consideraremos que el calor específico del material, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;, es constante y no depende de la temperatura, y por tanto la difusividad térmica,&amp;lt;math&amp;gt;\alpha=\frac{k}{c\rho}&amp;lt;/math&amp;gt; también lo será.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si damos un valor a las constantes &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt;, tal que &amp;lt;math&amp;gt;\alpha=2&amp;lt;/math&amp;gt;; y no hay fuentes ni sumideros de calor dentro de la varilla, la ecuación en derivadas parciales que tendrá que cumplir la distribución de temperaturas a lo largo de la misma es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)-2u_{xx}(x,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde:&lt;br /&gt;
*&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; nos define como evoluciona la temperatura a lo largo del eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&amp;lt;math&amp;gt;u_t(x,t)&amp;lt;/math&amp;gt; es la derivada de la temperatura con respecto del tiempo.&lt;br /&gt;
*&amp;lt;math&amp;gt;u_{xx}(x,t)&amp;lt;/math&amp;gt; es la segunda derivada de la temperatura con respecto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Junto con está ecuación en derivadas parciales consideraremos una serie de condiciones: iniciales y de contorno. Como condición inicial para está modelización propondremos::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(x,0)=e^{-6(x-2)^2}+5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x,0)&amp;lt;/math&amp;gt; no es otra cosa que la distribución de temperaturas inicial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A lo largo del artículo variaremos las condiciones de contorno para dar diferentes ejemplos, pero en el bloque de casos prácticos trabajaremos con las siguientes::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0,t)=5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éstas indican la temperatura (en este caso, otras pueden ser los flujos de calor o combinaciones de ambos) en cada uno de los extremos de la varilla.&lt;br /&gt;
&lt;br /&gt;
=Casos prácticos=&lt;br /&gt;
En los apartados que siguen estudiaremos a través del cálculo numérico el caso anteriormente expuesto e interpretaremos los resultados obtenidos mediante dicho análisis. El lenguaje usado en el que se implementarán estos modelos será código Matlab u Octave.&lt;br /&gt;
==Método de diferencias finitas o método de lineas==&lt;br /&gt;
Trataremos de reducir el sistema de ecuaciones a una sola variable en una discretización de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; valores (siendo &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; el tamaño de los subintervalos) haciendo la aproximación::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)=\frac{-U^{N-1}(t)+2U^N(t)-U^{N+1}(t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Así podemos aplicar uno de los diferentes métodos iterativos en la variable &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; que se muestran en los subapartados que siguen.&lt;br /&gt;
&lt;br /&gt;
===Método del trapecio===&lt;br /&gt;
Se trata de un método implícito, es decir que hay que despejar en la ecuación matricial que nos da la &amp;lt;math&amp;gt;U(t)&amp;lt;/math&amp;gt;. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo los siguientes gráficos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dftrap.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la temperatura apenas tarda en estabilizarse en el tiempo a lo largo de los puntos de la varilla, esto nos sugiere que una buena aproximación será la solución estacionaria de la ecuación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dftrappm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
La temperatura del punto medio descenderá hasta volverse casi asintótica hacia un valor aproximado de 2.625.&lt;br /&gt;
&lt;br /&gt;
===Método de Euler explícito===&lt;br /&gt;
A diferencia del método del trapecio, como su nombre indica, este método es explicito, lo que es una ventaja a la hora de implementar ya que nos ahorramos el despejar; pero sin embargo se trata de un método bastante inestable, y para que arroje soluciones lógicas hemos de disminuir el tamaño del paso temporal frente al espacial del orden de &amp;lt;math&amp;gt;dt=\frac{h^2}{4}&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;dt&amp;lt;/math&amp;gt; dichos pasos espacial y temporal respectivamente. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h^2/4; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I-dt*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M*sol(:,n)+dt*F;&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];&lt;br /&gt;
%dibujamos la solucion&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo los gráficos:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerexp.png|marco|centro|Evolución de la temperatura en la varila frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al igual que en el apartado anterior vemos que se estabiliza muy rápido. Debido al tener que disminuir bastante el tamaño del paso temporal hemos tenido que cambiar la función de Octave para representar este gráfico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerexppm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vemos que en esta implementación los cambios de temperatura en el punto medio son más ''continuos'', pero también acaba siendo asintótica en un valor aproximado de 2.625.&lt;br /&gt;
===Método de Euler implícito===&lt;br /&gt;
Es más fácil hacerlo converger que su homónimo explícito, pero tiene la desventaja de tener que despejar en la ecuación para implementarlo. A continuación se muestra el código que lo implementa en Matlab u Octave, dándonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+dt*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt*(F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obteniendo los siguientes gráficos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerimp.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Volvemos a ver que la estabilización de temperaturas en la varilla es bastante rápida.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerimppm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
Una vez más observamos un descenso asintótico hacia el valor de temperatura 2.625.&lt;br /&gt;
===Método de Runge-Kutta===&lt;br /&gt;
Se trata de un método explícito, por tanto necesitaremos aumentar el tamaño del paso una vez más hasta los mismos valores que para Euler explícito para asegurar su convergencia. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h^2/4; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I-dt.*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
   k1=-K*sol(:,n)+F;&lt;br /&gt;
   k2=-K*(sol(:,n)+k1*dt/2)+F;&lt;br /&gt;
   k3=-K*(sol(:,n)+k2*dt/2)+F;&lt;br /&gt;
   k4=-K*(sol(:,n)+k3*dt)+F;&lt;br /&gt;
   sol(:,n+1)=sol(:,n)+(dt/6)*(k1+2*k2+2*k3+k4);&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];&lt;br /&gt;
%dibujamos la solucion &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfrk.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
Al igual que en todos los métodos anteriores se produce la ya esperada estabilización de temperaturas en la varilla de manera bastante acelerada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfrkpm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
De nuevo aparece un descenso asintótico hasta el valor 2.625.&lt;br /&gt;
&lt;br /&gt;
==Método de Fourier==&lt;br /&gt;
Partiendo de una solución analítica previa obtenemos la solución en forma de sumatorio de infinitos términos, reduciendo este número de términos numéricamente calcularemos una solución aproximada. Los autovalores y autovectores obtenidos para este problema y con condiciones de contorno son::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_k=\frac{k^2\pi^2}{16}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\varphi_k(x)=sen(\frac{k\pi x}{4})&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;k=1,2,3,...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dados estos valores y la función de homogenización para las condiciones de contorno::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v(x,t)=5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mediante el siguiente código de Matlab implementamos el problema numéricamente, obteniendo así la gráfica en 3D de la solución para &amp;lt;math&amp;gt;k=20&amp;lt;/math&amp;gt; (por ser la más representativa y exacta),y la comparación de las gráficas en el plano de &amp;lt;math&amp;gt;t=0,5&amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt;k=1,3,5,10 y 20&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
N=100;&lt;br /&gt;
a=0; b=4;&lt;br /&gt;
h=(b-a)/N; x=0:h:4; % space discretization&lt;br /&gt;
ht=h; t=0:ht:5; % time discretization&lt;br /&gt;
[xx,tt]=meshgrid(x,t); % time discretization&lt;br /&gt;
f=(exp((-6)*(x-2).^2)); % Initial data&lt;br /&gt;
aprox=0; % Compute the approximation&lt;br /&gt;
q=1;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:)) % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=3;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'r') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=5;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'m') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=10;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'g') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=20;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'y') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,5-5/4*x,'k')&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(xx,tt,aprox2)&lt;br /&gt;
hold on}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo así:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:MF.png|marco|centro|Gráfico que muestra de la temperatura de la varilla frente a al tiempo a lo largo de sus diferentes posiciones.]]&lt;br /&gt;
&lt;br /&gt;
Se puede ver como a diferencia del método de lineas el error viene inducido por la aproximación mediante series de Fourier de la condición inicial. Por lo demás evoluciona de manera similar a los métodos aplicados anteriormente.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Archivo:MF20.png|marco|centro|Gráficas de las temperaturas a lo largo de la varilla con aproximaciones de diferentes índices del sumatorio en la solución. k=1(azul). k=3(rojo). k=5(magenta). k=10(verde). k=20(amarillo). solución estacionaria(negro)]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica anterior se puede apreciar el nivel de aproximación con relación al número de coeficientes que utilizamos de la serie. Vemos  como cuantos menos coeficientes usamos más nos acercamos incluso en tiempo cortos a la solución estacionaria, lo que nos indica que desciende el nivel de precisión de estas aproximaciones.&lt;br /&gt;
&lt;br /&gt;
=Cambio de condiciones de contorno=&lt;br /&gt;
Ahora manteniendo la ecuación que nos modelizaba el comportamiento térmico de la varilla, cambiamos las condiciones de contorno en los extremos. Las nuevas condiciones propuestas se pueden asimilar como el aislamiento térmico total del extremo izquierdo, lo que anula el flujo de calor en ese lado. Estas son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para implementarlo en sus nuevas condiciones usaremos el método de lineas con el método del trapecio. El código que implementa esta modelización en lenguaje Matlab y nos proporciona un gráfico de la temperatura frente a las variables espacial y temporal es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=0:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=zeros(length(t),1);&lt;br /&gt;
sol=[sol;UB'];&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Del cual obtenemos:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfneu.png|marco|centro|Progreso de la temperatura frente a tiempo y espacio con las nuevas condiciones.]]&lt;br /&gt;
&lt;br /&gt;
Como se puede ver en la imagen anterior la temperatura de los puntos interiores de la varilla va descendiendo lenta y progresivamente, a diferencia de en el caso anterior donde esta tendía a homogeneizarse.&lt;br /&gt;
&lt;br /&gt;
=Interpretaciones estacionarias=&lt;br /&gt;
Como hemos visto en los apartados anteriores de este artículo, las soluciones por norma general de esta ecuación tienden a volverse estacionarias en unos intervalos de tiempo bastante breves. Por ello en esta sección estudiaremos estas soluciones estacionarias y el error que se comete asumiéndolas como ciertas en tiempos relativamente cortos.&lt;br /&gt;
&lt;br /&gt;
Para calcular analiticamente estas soluciones estacionarias basta con considerar nulo el término en &amp;lt;math&amp;gt;u_t(x,t)&amp;lt;/math&amp;gt; dela ecuación en derivadas parciales, y resolver lo que ahora nos queda un problema de contorno con dichas condiciones y la ecuación diferencial ordinaria que nos queda de hacer la despreciación anterior.&lt;br /&gt;
&lt;br /&gt;
Tratando con las condiciones de contorno dadas inicialmente::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0,t)=5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analíticamente para estas condiciones la solución estacionaria hallada es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{est}(x)=5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mediante cálculo numérico y el siguiente código de Octave, conseguimos una gráfica de los diferentes valores de la temperatura en ciertos tiempos que tendrán que ir acercándose a la solución estacionaria, y un gráfico del error cometido si aproximásemos en estos tiempos el valor numérico aproximado de la temperatura por el estacionario calculado analíticamente. Además, nos aporta una tabla con en la primera fila el tiempo para el que se calcula el error respecto de la estacionaria y en las sucesivas filar los errores correspondientes.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=T/L*h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
%Posiciones&lt;br /&gt;
tiempos=[0,1,2,10];&lt;br /&gt;
posicion=tiempos/dt;&lt;br /&gt;
figure(2)&lt;br /&gt;
%dibujamos para ciertos tiempos&lt;br /&gt;
  for m=1:length(posicion)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(x,sol(:,posicion(m)+1),'m');&lt;br /&gt;
  end&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('temperaturas en cada t')&lt;br /&gt;
%Estacionaria&lt;br /&gt;
hold on&lt;br /&gt;
est=5*(1-x/4);&lt;br /&gt;
plot(x,est);&lt;br /&gt;
figure(3)&lt;br /&gt;
%errores&lt;br /&gt;
for p=1:length(posicion)&lt;br /&gt;
    error=sol(:,posicion(p)+1).-est';&lt;br /&gt;
    Error(:,p)=error;&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(x,error)&lt;br /&gt;
  end&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('error cometido')&lt;br /&gt;
[0,1,2,10;Error]}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo:&lt;br /&gt;
 &lt;br /&gt;
[[Archivo:Estacionaria1.png|marco|centro|Contraste de la gráfica de la estacionaria con las soluciones calculadas mediante numérico en diferentes tiempos.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar como se reduce el error a medida que aumentamos el tiempo de modelización cor respecto de la estacionaria.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Estacionaria2.png|marco|centro|Error cometido al aproximar en diferentes tiempos por la estacionaria.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen anterior se puede ver una comparativa del el error con respecto al eje x, donde se ve más claramente que arriba como se reduce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tablaerror.png|marco|centro|Tabla que nos muestra el error cometido en los diferentes tiempos.]]&lt;br /&gt;
&lt;br /&gt;
En los valores numéricos dispuestos en la enterior tabla ya se muestra con total seguridad como se reduce el error a medida que aumentamos el tiempo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si ahora por el contrario tratamos las condiciones propuestas en el apartado de cambio de condiciones de contorno, las cuales son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Analíticamente para estas condiciones la solución estacionaria hallada es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{est}(x)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que al principio nos puede chocar al ver la gráfica, ya que en las otras condiciones se llega al estado estacionario de manera mucho más rápida. Si consideramos como estado estacionario que la diferencia entre dos valores consecutivos sea menor de 0.05, mediante el siguiente programa do Octave podemos calcular este valor de tiempo:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=0:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=zeros(length(t),1);&lt;br /&gt;
sol=[sol;UB'];for i=1:length(t)&lt;br /&gt;
    er=abs(sol(:,i+1)-sol(:,i));&lt;br /&gt;
    a=max(er);&lt;br /&gt;
    if a&amp;lt;=0.05&lt;br /&gt;
    cont=i;&lt;br /&gt;
    tiempo=(cont-1)*dt;&lt;br /&gt;
    break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
tiempo}}&lt;br /&gt;
&lt;br /&gt;
El programa nos dice que el tiempo en el que se cumple esta condición es &amp;lt;math&amp;gt;t=0.7&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Intercambio de calor con el entorno. Varilla no aislada longitudinalmente=&lt;br /&gt;
Si ahora panteamos el intercambio de calor con el exterior, suponiendo que este ambiente se encuentra a una temperatura de 16ºC, la ecuación diferencial se ve afectada de manera que nos queda::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)-2u_{xx}(x,t)+u(x,t)-16=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Implementando numéricamente esta ecuación con las condiciones iniciales propuestas en el primer apartado de este artículo, mediante el método de lineas y el método del trapecio, mediante el siguiente código, obteniendo así la gráfica de la temperatura en cada punto de la varilla con respecto al tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=(2+h^2)*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1).+16;;&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo de este código:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasaire.png|marco|centro|Representación de la temperatura en cada punto de la varilla con respecto al tiempo]]&lt;br /&gt;
&lt;br /&gt;
Donde se ve como el exterior aporta calor a la varilla elevando sus temperaturas frente a las iniciales.&lt;br /&gt;
&lt;br /&gt;
Si considerásemos el caso estacionario, se puede calcular mediante la inclusión del siguiente fragmento de código en el anterior programa que modelizaba el fenómeno no estacionario. Además de darnos la situación de temperaturas estacionarias, nos da el tiempo en el que este se alcanza con un error relativo de &amp;lt;math&amp;gt;10^{-3}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%Estacionaria&lt;br /&gt;
figure(2)&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('temperatura')&lt;br /&gt;
c1=det([-11,1;-16,exp(-4)])/det([1,1;exp(4),exp(-4)]);&lt;br /&gt;
c2=det([1,-11;exp(4),-16])/det([1,1;exp(4),exp(-4)]);&lt;br /&gt;
est=c1*exp(x)+c2*exp(-x)+16;&lt;br /&gt;
plot(x,est);&lt;br /&gt;
hold on&lt;br /&gt;
for i=1:length(t)-1&lt;br /&gt;
    er=abs(sol(:,i+1)-sol(:,i));&lt;br /&gt;
    a=max(er);&lt;br /&gt;
    if a&amp;lt;=0.001&lt;br /&gt;
    cont=i;&lt;br /&gt;
    ti=(cont-1)*dt;&lt;br /&gt;
    break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
ti&lt;br /&gt;
cont}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La gráfica conseguida del código anterior es:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasaireest.png|marco|centro|Temperatura estacionaria de la varilla con respecto a la posición de cada punto de ella.]]&lt;br /&gt;
&lt;br /&gt;
El valor de tiempo obtenido es &amp;lt;math&amp;gt;t=5.9&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Cambio de condiciones de contorno==&lt;br /&gt;
Si cambiamos las condiciones de contorno de la ecuación por estas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=2&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=-2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Físicamente podrían interpretarse como la conexión de un deposito de fluido en el extremo derecho que obligara un flujo constante de calor en el mismo extremo, y que el extremo derecho estuviera posicionado sobre un objeto que le obligara a tener una temperatura constante.&lt;br /&gt;
&lt;br /&gt;
Si implementamos numéricamente este nuevo modelo propuesto mediante el siguiente código Matlab, obtenemos la representación de las temperaturas de la varilla frente al tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=(2+h^2)*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K(1,1)=K(1,1)-1;&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1).+16;;&lt;br /&gt;
F(1)=F(1)+2/h;&lt;br /&gt;
F(N)=F(N)+2/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=2*ones(1,length(t));&lt;br /&gt;
sol=[sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Logrando así la gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasneu111.png|marco|centro|Representación de las temperaturas de la varilla frente al tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar como la temperatura de los puntos de la varilla va aumentado debido al flujo entrante por el lado izquierdo de esta hasta que alcanza un estado estacionario.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED14/15]]&lt;br /&gt;
[[Categoría:Trabajos 2014-15]]&lt;/div&gt;</summary>
		<author><name>Antonio Carrero Muñoz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor._(Grupo_A8)&amp;diff=30351</id>
		<title>Ecuación del calor. (Grupo A8)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor._(Grupo_A8)&amp;diff=30351"/>
				<updated>2015-05-15T19:23:55Z</updated>
		
		<summary type="html">&lt;p&gt;Antonio Carrero Muñoz: /* Método de Fourier */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Ecuación del calor (Grupo A8)| [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED14/15|Curso 2014-15]] | Valentina Salazar; Antonio Carrero; José Francisco Aguilera }}&lt;br /&gt;
=Introducción y modelización del problema.=&lt;br /&gt;
En este artículo trataremos el comportamiento térmico de una varilla sometida a ciertas condiciones térmicas y físicas mediante diferentes métodos numéricos, daremos interpretación física a los resultados arrojados por estos métodos. Basaremos el estudio analítico y numérico necesario en la ecuación del calor propuesta por Jean-Baptiste Joseph Fourier en 1822.&lt;br /&gt;
&lt;br /&gt;
Para estudiar el problema consideraremos una varilla delgada, de sección constante y de un material homogéneo, de longitud &amp;lt;math&amp;gt;L=4&amp;lt;/math&amp;gt;. La situaremos en el intervalo &amp;lt;math&amp;gt;x\in{(0,4)}&amp;lt;/math&amp;gt; de la recta real. Para llevar acabo esta modelización tendremos que asumir unas ciertas hipótesis y simplificaciones:&lt;br /&gt;
&lt;br /&gt;
*Para el primer caso a plantear la varilla estará infinitamente aislada del entorno y por tanto no habrá flujo de calor sobre la superficie lateral de la misma.&lt;br /&gt;
*Al estar considerando el caso unidimensional de la ecuación del calor, asumiremos que al ser una varilla delgada la temperatura a lo largo de una sección ortogonal al eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; se mantiene constante en toda la sección.&lt;br /&gt;
*Consideraremos que el calor específico del material, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;, es constante y no depende de la temperatura, y por tanto la difusividad térmica,&amp;lt;math&amp;gt;\alpha=\frac{k}{c\rho}&amp;lt;/math&amp;gt; también lo será.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si damos un valor a las constantes &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt;, tal que &amp;lt;math&amp;gt;\alpha=2&amp;lt;/math&amp;gt;; y no hay fuentes ni sumideros de calor dentro de la varilla, la ecuación en derivadas parciales que tendrá que cumplir la distribución de temperaturas a lo largo de la misma es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)-2u_{xx}(x,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde:&lt;br /&gt;
*&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; nos define como evoluciona la temperatura a lo largo del eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&amp;lt;math&amp;gt;u_t(x,t)&amp;lt;/math&amp;gt; es la derivada de la temperatura con respecto del tiempo.&lt;br /&gt;
*&amp;lt;math&amp;gt;u_{xx}(x,t)&amp;lt;/math&amp;gt; es la segunda derivada de la temperatura con respecto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Junto con está ecuación en derivadas parciales consideraremos una serie de condiciones: iniciales y de contorno. Como condición inicial para está modelización propondremos::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(x,0)=e^{-6(x-2)^2}+5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x,0)&amp;lt;/math&amp;gt; no es otra cosa que la distribución de temperaturas inicial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A lo largo del artículo variaremos las condiciones de contorno para dar diferentes ejemplos, pero en el bloque de casos prácticos trabajaremos con las siguientes::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0,t)=5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éstas indican la temperatura (en este caso, otras pueden ser los flujos de calor o combinaciones de ambos) en cada uno de los extremos de la varilla.&lt;br /&gt;
&lt;br /&gt;
=Casos prácticos=&lt;br /&gt;
En los apartados que siguen estudiaremos a través del cálculo numérico el caso anteriormente expuesto e interpretaremos los resultados obtenidos mediante dicho análisis. El lenguaje usado en el que se implementarán estos modelos será código Matlab u Octave.&lt;br /&gt;
==Método de diferencias finitas o método de lineas==&lt;br /&gt;
Trataremos de reducir el sistema de ecuaciones a una sola variable en una discretización de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; valores (siendo &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; el tamaño de los subintervalos) haciendo la aproximación::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)=\frac{-U^{N-1}(t)+2U^N(t)-U^{N+1}(t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Así podemos aplicar uno de los diferentes métodos iterativos en la variable &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; que se muestran en los subapartados que siguen.&lt;br /&gt;
&lt;br /&gt;
===Método del trapecio===&lt;br /&gt;
Se trata de un método implícito, es decir que hay que despejar en la ecuación matricial que nos da la &amp;lt;math&amp;gt;U(t)&amp;lt;/math&amp;gt;. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo los siguientes gráficos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dftrap.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la temperatura apenas tarda en estabilizarse en el tiempo a lo largo de los puntos de la varilla, esto nos sugiere que una buena aproximación será la solución estacionaria de la ecuación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dftrappm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
La temperatura del punto medio descenderá hasta volverse casi asintótica hacia un valor aproximado de 2.625.&lt;br /&gt;
&lt;br /&gt;
===Método de Euler explícito===&lt;br /&gt;
A diferencia del método del trapecio, como su nombre indica, este método es explicito, lo que es una ventaja a la hora de implementar ya que nos ahorramos el despejar; pero sin embargo se trata de un método bastante inestable, y para que arroje soluciones lógicas hemos de disminuir el tamaño del paso temporal frente al espacial del orden de &amp;lt;math&amp;gt;dt=\frac{h^2}{4}&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;dt&amp;lt;/math&amp;gt; dichos pasos espacial y temporal respectivamente. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h^2/4; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I-dt*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M*sol(:,n)+dt*F;&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];&lt;br /&gt;
%dibujamos la solucion&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo los gráficos:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerexp.png|marco|centro|Evolución de la temperatura en la varila frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al igual que en el apartado anterior vemos que se estabiliza muy rápido. Debido al tener que disminuir bastante el tamaño del paso temporal hemos tenido que cambiar la función de Octave para representar este gráfico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerexppm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vemos que en esta implementación los cambios de temperatura en el punto medio son más ''continuos'', pero también acaba siendo asintótica en un valor aproximado de 2.625.&lt;br /&gt;
===Método de Euler implícito===&lt;br /&gt;
Es más fácil hacerlo converger que su homónimo explícito, pero tiene la desventaja de tener que despejar en la ecuación para implementarlo. A continuación se muestra el código que lo implementa en Matlab u Octave, dándonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+dt*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt*(F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obteniendo los siguientes gráficos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerimp.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Volvemos a ver que la estabilización de temperaturas en la varilla es bastante rápida.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerimppm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
Una vez más observamos un descenso asintótico hacia el valor de temperatura 2.625.&lt;br /&gt;
===Método de Runge-Kutta===&lt;br /&gt;
Se trata de un método explícito, por tanto necesitaremos aumentar el tamaño del paso una vez más hasta los mismos valores que para Euler explícito para asegurar su convergencia. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h^2/4; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I-dt.*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
   k1=-K*sol(:,n)+F;&lt;br /&gt;
   k2=-K*(sol(:,n)+k1*dt/2)+F;&lt;br /&gt;
   k3=-K*(sol(:,n)+k2*dt/2)+F;&lt;br /&gt;
   k4=-K*(sol(:,n)+k3*dt)+F;&lt;br /&gt;
   sol(:,n+1)=sol(:,n)+(dt/6)*(k1+2*k2+2*k3+k4);&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];&lt;br /&gt;
%dibujamos la solucion &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfrk.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
Al igual que en todos los métodos anteriores se produce la ya esperada estabilización de temperaturas en la varilla de manera bastante acelerada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfrkpm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
De nuevo aparece un descenso asintótico hasta el valor 2.625.&lt;br /&gt;
&lt;br /&gt;
==Método de Fourier==&lt;br /&gt;
Partiendo de una solución analítica previa obtenemos la solución en forma de sumatorio de infinitos términos, reduciendo este número de términos numéricamente calcularemos una solución aproximada. Los autovalores y autovectores obtenidos para este problema y con condiciones de contorno son::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_k=\frac{k^2\pi^2}{16}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\varphi_k(x)=sen(\frac{k\pi x}{4})&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;k=1,2,3,...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dados estos valores y la función de homogenización para las condiciones de contorno::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v(x,t)=5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mediante el siguiente código de Matlab implementamos el problema numéricamente, obteniendo así la gráfica en 3D de la solución para &amp;lt;math&amp;gt;k=20&amp;lt;/math&amp;gt; (por ser la más representativa y exacta),y la comparaciónde las gráficas en el plano de &amp;lt;math&amp;gt;t=0,5&amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt;k=1,3,5,10 y 20&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
N=100;&lt;br /&gt;
a=0; b=4;&lt;br /&gt;
h=(b-a)/N; x=0:h:4; % space discretization&lt;br /&gt;
ht=h; t=0:ht:5; % time discretization&lt;br /&gt;
[xx,tt]=meshgrid(x,t); % time discretization&lt;br /&gt;
f=(exp((-6)*(x-2).^2)); % Initial data&lt;br /&gt;
aprox=0; % Compute the approximation&lt;br /&gt;
q=1;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:)) % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=3;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'r') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=5;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'m') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=10;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'g') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=20;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'y') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,5-5/4*x,'k')&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(xx,tt,aprox2)&lt;br /&gt;
hold on}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo así:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:MF.png|marco|centro|Gráfico que muestra de la temperatura de la varilla frente a al tiempo a lo largo de sus diferentes posiciones.]]&lt;br /&gt;
&lt;br /&gt;
Se puede ver como a diferencia del método de lineas el error viene inducido por la aproximación mediante series de Fourier de la condición inicial. Por lo demás evoluciona de manera similar a los métodos aplicados anteriormente.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Archivo:MF20.png|marco|centro|Gráficas de las temperaturas a lo largo de la varilla con aproximaciones de diferentes índices del sumatorio en la solución. k=1(azul). k=3(rojo). k=5(magenta). k=10(verde). k=20(amarillo). solución estacionaria(negro)]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica anterior se puede apreciar el nivel de aproximación con relación al número de coeficientes que utilizamos de la serie. Vemos  como cuantos menos coeficientes usamos más nos acercamos incluso en tiempo cortos a la solución estacionaria, lo que nos indica que desciende el nivel de precisión de estas aproximaciones.&lt;br /&gt;
&lt;br /&gt;
=Cambio de condiciones de contorno=&lt;br /&gt;
Ahora manteniendo la ecuación que nos modelizaba el comportamiento térmico de la varilla, cambiamos las condiciones de contorno en los extremos. Las nuevas condiciones propuestas se pueden asimilar como el aislamiento térmico total del extremo izquierdo, lo que anula el flujo de calor en ese lado. Estas son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para implementarlo en sus nuevas condiciones usaremos el método de lineas con el método del trapecio. El código que implementa esta modelización en lenguaje Matlab y nos proporciona un gráfico de la temperatura frente a las variables espacial y temporal es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=0:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=zeros(length(t),1);&lt;br /&gt;
sol=[sol;UB'];&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Del cual obtenemos:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfneu.png|marco|centro|Progreso de la temperatura frente a tiempo y espacio con las nuevas condiciones.]]&lt;br /&gt;
&lt;br /&gt;
Como se puede ver en la imagen anterior la temperatura de los puntos interiores de la varilla va descendiendo lenta y progresivamente, a diferencia de en el caso anterior donde esta tendía a homogeneizarse.&lt;br /&gt;
&lt;br /&gt;
=Interpretaciones estacionarias=&lt;br /&gt;
Como hemos visto en los apartados anteriores de este artículo, las soluciones por norma general de esta ecuación tienden a volverse estacionarias en unos intervalos de tiempo bastante breves. Por ello en esta sección estudiaremos estas soluciones estacionarias y el error que se comete asumiéndolas como ciertas en tiempos relativamente cortos.&lt;br /&gt;
&lt;br /&gt;
Para calcular analiticamente estas soluciones estacionarias basta con considerar nulo el término en &amp;lt;math&amp;gt;u_t(x,t)&amp;lt;/math&amp;gt; dela ecuación en derivadas parciales, y resolver lo que ahora nos queda un problema de contorno con dichas condiciones y la ecuación diferencial ordinaria que nos queda de hacer la despreciación anterior.&lt;br /&gt;
&lt;br /&gt;
Tratando con las condiciones de contorno dadas inicialmente::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0,t)=5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analíticamente para estas condiciones la solución estacionaria hallada es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{est}(x)=5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mediante cálculo numérico y el siguiente código de Octave, conseguimos una gráfica de los diferentes valores de la temperatura en ciertos tiempos que tendrán que ir acercándose a la solución estacionaria, y un gráfico del error cometido si aproximásemos en estos tiempos el valor numérico aproximado de la temperatura por el estacionario calculado analíticamente. Además, nos aporta una tabla con en la primera fila el tiempo para el que se calcula el error respecto de la estacionaria y en las sucesivas filar los errores correspondientes.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=T/L*h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
%Posiciones&lt;br /&gt;
tiempos=[0,1,2,10];&lt;br /&gt;
posicion=tiempos/dt;&lt;br /&gt;
figure(2)&lt;br /&gt;
%dibujamos para ciertos tiempos&lt;br /&gt;
  for m=1:length(posicion)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(x,sol(:,posicion(m)+1),'m');&lt;br /&gt;
  end&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('temperaturas en cada t')&lt;br /&gt;
%Estacionaria&lt;br /&gt;
hold on&lt;br /&gt;
est=5*(1-x/4);&lt;br /&gt;
plot(x,est);&lt;br /&gt;
figure(3)&lt;br /&gt;
%errores&lt;br /&gt;
for p=1:length(posicion)&lt;br /&gt;
    error=sol(:,posicion(p)+1).-est';&lt;br /&gt;
    Error(:,p)=error;&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(x,error)&lt;br /&gt;
  end&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('error cometido')&lt;br /&gt;
[0,1,2,10;Error]}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo:&lt;br /&gt;
 &lt;br /&gt;
[[Archivo:Estacionaria1.png|marco|centro|Contraste de la gráfica de la estacionaria con las soluciones calculadas mediante numérico en diferentes tiempos.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar como se reduce el error a medida que aumentamos el tiempo de modelización cor respecto de la estacionaria.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Estacionaria2.png|marco|centro|Error cometido al aproximar en diferentes tiempos por la estacionaria.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen anterior se puede ver una comparativa del el error con respecto al eje x, donde se ve más claramente que arriba como se reduce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tablaerror.png|marco|centro|Tabla que nos muestra el error cometido en los diferentes tiempos.]]&lt;br /&gt;
&lt;br /&gt;
En los valores numéricos dispuestos en la enterior tabla ya se muestra con total seguridad como se reduce el error a medida que aumentamos el tiempo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si ahora por el contrario tratamos las condiciones propuestas en el apartado de cambio de condiciones de contorno, las cuales son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Analíticamente para estas condiciones la solución estacionaria hallada es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{est}(x)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que al principio nos puede chocar al ver la gráfica, ya que en las otras condiciones se llega al estado estacionario de manera mucho más rápida. Si consideramos como estado estacionario que la diferencia entre dos valores consecutivos sea menor de 0.05, mediante el siguiente programa do Octave podemos calcular este valor de tiempo:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=0:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=zeros(length(t),1);&lt;br /&gt;
sol=[sol;UB'];for i=1:length(t)&lt;br /&gt;
    er=abs(sol(:,i+1)-sol(:,i));&lt;br /&gt;
    a=max(er);&lt;br /&gt;
    if a&amp;lt;=0.05&lt;br /&gt;
    cont=i;&lt;br /&gt;
    tiempo=(cont-1)*dt;&lt;br /&gt;
    break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
tiempo}}&lt;br /&gt;
&lt;br /&gt;
El programa nos dice que el tiempo en el que se cumple esta condición es &amp;lt;math&amp;gt;t=0.7&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Intercambio de calor con el entorno. Varilla no aislada longitudinalmente=&lt;br /&gt;
Si ahora panteamos el intercambio de calor con el exterior, suponiendo que este ambiente se encuentra a una temperatura de 16ºC, la ecuación diferencial se ve afectada de manera que nos queda::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)-2u_{xx}(x,t)+u(x,t)-16=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Implementando numéricamente esta ecuación con las condiciones iniciales propuestas en el primer apartado de este artículo, mediante el método de lineas y el método del trapecio, mediante el siguiente código, obteniendo así la gráfica de la temperatura en cada punto de la varilla con respecto al tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=(2+h^2)*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1).+16;;&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo de este código:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasaire.png|marco|centro|Representación de la temperatura en cada punto de la varilla con respecto al tiempo]]&lt;br /&gt;
&lt;br /&gt;
Donde se ve como el exterior aporta calor a la varilla elevando sus temperaturas frente a las iniciales.&lt;br /&gt;
&lt;br /&gt;
Si considerásemos el caso estacionario, se puede calcular mediante la inclusión del siguiente fragmento de código en el anterior programa que modelizaba el fenómeno no estacionario. Además de darnos la situación de temperaturas estacionarias, nos da el tiempo en el que este se alcanza con un error relativo de &amp;lt;math&amp;gt;10^{-3}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%Estacionaria&lt;br /&gt;
figure(2)&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('temperatura')&lt;br /&gt;
c1=det([-11,1;-16,exp(-4)])/det([1,1;exp(4),exp(-4)]);&lt;br /&gt;
c2=det([1,-11;exp(4),-16])/det([1,1;exp(4),exp(-4)]);&lt;br /&gt;
est=c1*exp(x)+c2*exp(-x)+16;&lt;br /&gt;
plot(x,est);&lt;br /&gt;
hold on&lt;br /&gt;
for i=1:length(t)-1&lt;br /&gt;
    er=abs(sol(:,i+1)-sol(:,i));&lt;br /&gt;
    a=max(er);&lt;br /&gt;
    if a&amp;lt;=0.001&lt;br /&gt;
    cont=i;&lt;br /&gt;
    ti=(cont-1)*dt;&lt;br /&gt;
    break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
ti&lt;br /&gt;
cont}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La gráfica conseguida del código anterior es:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasaireest.png|marco|centro|Temperatura estacionaria de la varilla con respecto a la posición de cada punto de ella.]]&lt;br /&gt;
&lt;br /&gt;
El valor de tiempo obtenido es &amp;lt;math&amp;gt;t=5.9&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Cambio de condiciones de contorno==&lt;br /&gt;
Si cambiamos las condiciones de contorno de la ecuación por estas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=2&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=-2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Físicamente podrían interpretarse como la conexión de un deposito de fluido en el extremo derecho que obligara un flujo constante de calor en el mismo extremo, y que el extremo derecho estuviera posicionado sobre un objeto que le obligara a tener una temperatura constante.&lt;br /&gt;
&lt;br /&gt;
Si implementamos numéricamente este nuevo modelo propuesto mediante el siguiente código Matlab, obtenemos la representación de las temperaturas de la varilla frente al tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=(2+h^2)*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K(1,1)=K(1,1)-1;&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1).+16;;&lt;br /&gt;
F(1)=F(1)+2/h;&lt;br /&gt;
F(N)=F(N)+2/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=2*ones(1,length(t));&lt;br /&gt;
sol=[sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Logrando así la gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasneu111.png|marco|centro|Representación de las temperaturas de la varilla frente al tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar como la temperatura de los puntos de la varilla va aumentado debido al flujo entrante por el lado izquierdo de esta hasta que alcanza un estado estacionario.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED14/15]]&lt;br /&gt;
[[Categoría:Trabajos 2014-15]]&lt;/div&gt;</summary>
		<author><name>Antonio Carrero Muñoz</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor._(Grupo_A8)&amp;diff=30350</id>
		<title>Ecuación del calor. (Grupo A8)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Ecuaci%C3%B3n_del_calor._(Grupo_A8)&amp;diff=30350"/>
				<updated>2015-05-15T19:21:55Z</updated>
		
		<summary type="html">&lt;p&gt;Antonio Carrero Muñoz: /* Introducción y modelización del problema. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED |Ecuación del calor (Grupo A8)| [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED14/15|Curso 2014-15]] | Valentina Salazar; Antonio Carrero; José Francisco Aguilera }}&lt;br /&gt;
=Introducción y modelización del problema.=&lt;br /&gt;
En este artículo trataremos el comportamiento térmico de una varilla sometida a ciertas condiciones térmicas y físicas mediante diferentes métodos numéricos, daremos interpretación física a los resultados arrojados por estos métodos. Basaremos el estudio analítico y numérico necesario en la ecuación del calor propuesta por Jean-Baptiste Joseph Fourier en 1822.&lt;br /&gt;
&lt;br /&gt;
Para estudiar el problema consideraremos una varilla delgada, de sección constante y de un material homogéneo, de longitud &amp;lt;math&amp;gt;L=4&amp;lt;/math&amp;gt;. La situaremos en el intervalo &amp;lt;math&amp;gt;x\in{(0,4)}&amp;lt;/math&amp;gt; de la recta real. Para llevar acabo esta modelización tendremos que asumir unas ciertas hipótesis y simplificaciones:&lt;br /&gt;
&lt;br /&gt;
*Para el primer caso a plantear la varilla estará infinitamente aislada del entorno y por tanto no habrá flujo de calor sobre la superficie lateral de la misma.&lt;br /&gt;
*Al estar considerando el caso unidimensional de la ecuación del calor, asumiremos que al ser una varilla delgada la temperatura a lo largo de una sección ortogonal al eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; se mantiene constante en toda la sección.&lt;br /&gt;
*Consideraremos que el calor específico del material, &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;, es constante y no depende de la temperatura, y por tanto la difusividad térmica,&amp;lt;math&amp;gt;\alpha=\frac{k}{c\rho}&amp;lt;/math&amp;gt; también lo será.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si damos un valor a las constantes &amp;lt;math&amp;gt;c&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;k&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;\rho&amp;lt;/math&amp;gt;, tal que &amp;lt;math&amp;gt;\alpha=2&amp;lt;/math&amp;gt;; y no hay fuentes ni sumideros de calor dentro de la varilla, la ecuación en derivadas parciales que tendrá que cumplir la distribución de temperaturas a lo largo de la misma es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)-2u_{xx}(x,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde:&lt;br /&gt;
*&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt; nos define como evoluciona la temperatura a lo largo del eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
*&amp;lt;math&amp;gt;u_t(x,t)&amp;lt;/math&amp;gt; es la derivada de la temperatura con respecto del tiempo.&lt;br /&gt;
*&amp;lt;math&amp;gt;u_{xx}(x,t)&amp;lt;/math&amp;gt; es la segunda derivada de la temperatura con respecto de &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Junto con está ecuación en derivadas parciales consideraremos una serie de condiciones: iniciales y de contorno. Como condición inicial para está modelización propondremos::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(x,0)=e^{-6(x-2)^2}+5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Donde &amp;lt;math&amp;gt;u(x,0)&amp;lt;/math&amp;gt; no es otra cosa que la distribución de temperaturas inicial.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A lo largo del artículo variaremos las condiciones de contorno para dar diferentes ejemplos, pero en el bloque de casos prácticos trabajaremos con las siguientes::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0,t)=5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Éstas indican la temperatura (en este caso, otras pueden ser los flujos de calor o combinaciones de ambos) en cada uno de los extremos de la varilla.&lt;br /&gt;
&lt;br /&gt;
=Casos prácticos=&lt;br /&gt;
En los apartados que siguen estudiaremos a través del cálculo numérico el caso anteriormente expuesto e interpretaremos los resultados obtenidos mediante dicho análisis. El lenguaje usado en el que se implementarán estos modelos será código Matlab u Octave.&lt;br /&gt;
==Método de diferencias finitas o método de lineas==&lt;br /&gt;
Trataremos de reducir el sistema de ecuaciones a una sola variable en una discretización de &amp;lt;math&amp;gt;n&amp;lt;/math&amp;gt; valores (siendo &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt; el tamaño de los subintervalos) haciendo la aproximación::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{xx}(x,t)=\frac{-U^{N-1}(t)+2U^N(t)-U^{N+1}(t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Así podemos aplicar uno de los diferentes métodos iterativos en la variable &amp;lt;math&amp;gt;t&amp;lt;/math&amp;gt; que se muestran en los subapartados que siguen.&lt;br /&gt;
&lt;br /&gt;
===Método del trapecio===&lt;br /&gt;
Se trata de un método implícito, es decir que hay que despejar en la ecuación matricial que nos da la &amp;lt;math&amp;gt;U(t)&amp;lt;/math&amp;gt;. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo los siguientes gráficos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dftrap.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
Como podemos ver la temperatura apenas tarda en estabilizarse en el tiempo a lo largo de los puntos de la varilla, esto nos sugiere que una buena aproximación será la solución estacionaria de la ecuación.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dftrappm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
La temperatura del punto medio descenderá hasta volverse casi asintótica hacia un valor aproximado de 2.625.&lt;br /&gt;
&lt;br /&gt;
===Método de Euler explícito===&lt;br /&gt;
A diferencia del método del trapecio, como su nombre indica, este método es explicito, lo que es una ventaja a la hora de implementar ya que nos ahorramos el despejar; pero sin embargo se trata de un método bastante inestable, y para que arroje soluciones lógicas hemos de disminuir el tamaño del paso temporal frente al espacial del orden de &amp;lt;math&amp;gt;dt=\frac{h^2}{4}&amp;lt;/math&amp;gt;, siendo &amp;lt;math&amp;gt;h&amp;lt;/math&amp;gt;, &amp;lt;math&amp;gt;dt&amp;lt;/math&amp;gt; dichos pasos espacial y temporal respectivamente. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h^2/4; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I-dt*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M*sol(:,n)+dt*F;&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];&lt;br /&gt;
%dibujamos la solucion&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo los gráficos:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerexp.png|marco|centro|Evolución de la temperatura en la varila frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Al igual que en el apartado anterior vemos que se estabiliza muy rápido. Debido al tener que disminuir bastante el tamaño del paso temporal hemos tenido que cambiar la función de Octave para representar este gráfico.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerexppm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Vemos que en esta implementación los cambios de temperatura en el punto medio son más ''continuos'', pero también acaba siendo asintótica en un valor aproximado de 2.625.&lt;br /&gt;
===Método de Euler implícito===&lt;br /&gt;
Es más fácil hacerlo converger que su homónimo explícito, pero tiene la desventaja de tener que despejar en la ecuación para implementarlo. A continuación se muestra el código que lo implementa en Matlab u Octave, dándonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+dt*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt*(F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Obteniendo los siguientes gráficos:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerimp.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Volvemos a ver que la estabilización de temperaturas en la varilla es bastante rápida.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfeulerimppm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
Una vez más observamos un descenso asintótico hacia el valor de temperatura 2.625.&lt;br /&gt;
===Método de Runge-Kutta===&lt;br /&gt;
Se trata de un método explícito, por tanto necesitaremos aumentar el tamaño del paso una vez más hasta los mismos valores que para Euler explícito para asegurar su convergencia. A continuación se muestra el código que lo implementa en Matlab u Octave, dandonos una gráfica en 3D del comportamiento de la temperatura frente al tiempo en la varilla y otro de la evolución temporal de temperaturas del punto medio de la misma.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h^2/4; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I-dt.*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
   k1=-K*sol(:,n)+F;&lt;br /&gt;
   k2=-K*(sol(:,n)+k1*dt/2)+F;&lt;br /&gt;
   k3=-K*(sol(:,n)+k2*dt/2)+F;&lt;br /&gt;
   k4=-K*(sol(:,n)+k3*dt)+F;&lt;br /&gt;
   sol(:,n+1)=sol(:,n)+(dt/6)*(k1+2*k2+2*k3+k4);&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];&lt;br /&gt;
%dibujamos la solucion &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('temperatura')&lt;br /&gt;
figure(2)&lt;br /&gt;
plot(t,sol(20,:))&lt;br /&gt;
xlabel('tiempo')&lt;br /&gt;
ylabel('temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo las siguientes gráficas:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfrk.png|marco|centro|Evolución de la temperatura en la varilla frente al tiempo y la posición de los puntos de la misma.]]&lt;br /&gt;
&lt;br /&gt;
Al igual que en todos los métodos anteriores se produce la ya esperada estabilización de temperaturas en la varilla de manera bastante acelerada.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfrkpm.png|marco|centro|Sucesivas temperaturas del punto medio frente al tiempo.]]&lt;br /&gt;
&lt;br /&gt;
De nuevo aparece un descenso asintótico hasta el valor 2.625.&lt;br /&gt;
&lt;br /&gt;
==Método de Fourier==&lt;br /&gt;
Partiendo de una solución analítica previa obtenemos la solución en forma de sumatorio de infinitos términos, reduciendo este número de términos numéricamente calcularemos una solución aproximada. Los autovalores y autovectores obtenidos para este problema y con condiciones de contorno son::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\mu_k=\frac{k^2\pi^2}{16}&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;\varphi_k(x)=sen(\frac{k\pi x}{4})&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;k=1,2,3,...&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Dados estos valores y la función de homogenización para las condiciones de contorno::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;v(x,t)=5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mediante el siguiente código de Matlab implementamos el problema numéricamente, obteniendo así la gráfica en 3D de la solución para &amp;lt;math&amp;gt;k=20&amp;lt;/math&amp;gt; (por ser la más representativa y exacta),y la comparaciónde las gráficas en el plano de &amp;lt;math&amp;gt;t=0,5&amp;lt;/math&amp;gt; para &amp;lt;math&amp;gt;k=1,3,5,10 y 20&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
N=100;&lt;br /&gt;
a=0; b=4;&lt;br /&gt;
h=(b-a)/N; x=0:h:4; % space discretization&lt;br /&gt;
ht=h; t=0:ht:5; % time discretization&lt;br /&gt;
[xx,tt]=meshgrid(x,t); % time discretization&lt;br /&gt;
f=(exp((-6)*(x-2).^2)); % Initial data&lt;br /&gt;
aprox=0; % Compute the approximation&lt;br /&gt;
q=1;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:)) % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=3;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'r') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=5;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'m') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=10;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'g') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
q=20;&lt;br /&gt;
for k=1:q&lt;br /&gt;
  autovalor=((k*pi)^2)/16; % eigenvalue&lt;br /&gt;
  autofuncion=sin(k*pi*x/4); % eigenfunction&lt;br /&gt;
  c(k)=(trapz(x,f.*autofuncion))/trapz(x,autofuncion.^2); % Fourier coef.&lt;br /&gt;
  aprox=aprox+c(k)*exp(-2*autovalor.*tt).*sin(k*pi*xx/4);&lt;br /&gt;
  end&lt;br /&gt;
aprox2=aprox+5-(5/4)*xx;&lt;br /&gt;
figure(1)&lt;br /&gt;
plot(x,aprox2(0.5/ht-0.5,:),'y') % Draw the approximation&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,5-5/4*x,'k')&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(xx,tt,aprox2)&lt;br /&gt;
hold on}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo así:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:MF.png|marco|centro|Gráfico que muestra de la temperatura de la varilla frente a al tiempo a lo largo de sus diferentes posiciones.]]&lt;br /&gt;
&lt;br /&gt;
Se puede ver como a diferencia del método de lineas el error viene inducido por la aproximación mediante series de Fourier de la condición inicial. Por lo demás evoluciona de manera similar a los métodos aplicados anteriormente.&lt;br /&gt;
&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
[[Archivo:MF20.png|marco|centro|Gráficas de las temperaturas a lo largo de la varilla con aproximaciones de diferentes índices del sumatorio en la solución. k=1(azul). k=3(rojo). k=5(magenta). k=10(verde). k=20(amarillo). solución estacionaria(negro)]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica anterior se puede apreciar el nivel de aproximación con relación al número de coeficientes que utilizamos de la serie. Vemos  como cuantos menos coeficientes usamos más nos acercamos incluso en tiempo cortos a la solución estacionaria, lo que nos indica que desciende el nivel de precisión de estas aproximaciones.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Cambio de condiciones de contorno=&lt;br /&gt;
Ahora manteniendo la ecuación que nos modelizaba el comportamiento térmico de la varilla, cambiamos las condiciones de contorno en los extremos. Las nuevas condiciones propuestas se pueden asimilar como el aislamiento térmico total del extremo izquierdo, lo que anula el flujo de calor en ese lado. Estas son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para implementarlo en sus nuevas condiciones usaremos el método de lineas con el método del trapecio. El código que implementa esta modelización en lenguaje Matlab y nos proporciona un gráfico de la temperatura frente a las variables espacial y temporal es:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=0:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=zeros(length(t),1);&lt;br /&gt;
sol=[sol;UB'];&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Del cual obtenemos:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Dfneu.png|marco|centro|Progreso de la temperatura frente a tiempo y espacio con las nuevas condiciones.]]&lt;br /&gt;
&lt;br /&gt;
Como se puede ver en la imagen anterior la temperatura de los puntos interiores de la varilla va descendiendo lenta y progresivamente, a diferencia de en el caso anterior donde esta tendía a homogeneizarse.&lt;br /&gt;
&lt;br /&gt;
=Interpretaciones estacionarias=&lt;br /&gt;
Como hemos visto en los apartados anteriores de este artículo, las soluciones por norma general de esta ecuación tienden a volverse estacionarias en unos intervalos de tiempo bastante breves. Por ello en esta sección estudiaremos estas soluciones estacionarias y el error que se comete asumiéndolas como ciertas en tiempos relativamente cortos.&lt;br /&gt;
&lt;br /&gt;
Para calcular analiticamente estas soluciones estacionarias basta con considerar nulo el término en &amp;lt;math&amp;gt;u_t(x,t)&amp;lt;/math&amp;gt; dela ecuación en derivadas parciales, y resolver lo que ahora nos queda un problema de contorno con dichas condiciones y la ecuación diferencial ordinaria que nos queda de hacer la despreciación anterior.&lt;br /&gt;
&lt;br /&gt;
Tratando con las condiciones de contorno dadas inicialmente::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0,t)=5&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Analíticamente para estas condiciones la solución estacionaria hallada es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{est}(x)=5-\frac{5}{4}x&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Mediante cálculo numérico y el siguiente código de Octave, conseguimos una gráfica de los diferentes valores de la temperatura en ciertos tiempos que tendrán que ir acercándose a la solución estacionaria, y un gráfico del error cometido si aproximásemos en estos tiempos el valor numérico aproximado de la temperatura por el estacionario calculado analíticamente. Además, nos aporta una tabla con en la primera fila el tiempo para el que se calcula el error respecto de la estacionaria y en las sucesivas filar los errores correspondientes.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=T/L*h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
%Posiciones&lt;br /&gt;
tiempos=[0,1,2,10];&lt;br /&gt;
posicion=tiempos/dt;&lt;br /&gt;
figure(2)&lt;br /&gt;
%dibujamos para ciertos tiempos&lt;br /&gt;
  for m=1:length(posicion)&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(x,sol(:,posicion(m)+1),'m');&lt;br /&gt;
  end&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('temperaturas en cada t')&lt;br /&gt;
%Estacionaria&lt;br /&gt;
hold on&lt;br /&gt;
est=5*(1-x/4);&lt;br /&gt;
plot(x,est);&lt;br /&gt;
figure(3)&lt;br /&gt;
%errores&lt;br /&gt;
for p=1:length(posicion)&lt;br /&gt;
    error=sol(:,posicion(p)+1).-est';&lt;br /&gt;
    Error(:,p)=error;&lt;br /&gt;
    hold on&lt;br /&gt;
    plot(x,error)&lt;br /&gt;
  end&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('error cometido')&lt;br /&gt;
[0,1,2,10;Error]}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo:&lt;br /&gt;
 &lt;br /&gt;
[[Archivo:Estacionaria1.png|marco|centro|Contraste de la gráfica de la estacionaria con las soluciones calculadas mediante numérico en diferentes tiempos.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar como se reduce el error a medida que aumentamos el tiempo de modelización cor respecto de la estacionaria.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Estacionaria2.png|marco|centro|Error cometido al aproximar en diferentes tiempos por la estacionaria.]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
En la imagen anterior se puede ver una comparativa del el error con respecto al eje x, donde se ve más claramente que arriba como se reduce.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tablaerror.png|marco|centro|Tabla que nos muestra el error cometido en los diferentes tiempos.]]&lt;br /&gt;
&lt;br /&gt;
En los valores numéricos dispuestos en la enterior tabla ya se muestra con total seguridad como se reduce el error a medida que aumentamos el tiempo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Si ahora por el contrario tratamos las condiciones propuestas en el apartado de cambio de condiciones de contorno, las cuales son:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=0&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Analíticamente para estas condiciones la solución estacionaria hallada es::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_{est}(x)=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que al principio nos puede chocar al ver la gráfica, ya que en las otras condiciones se llega al estado estacionario de manera mucho más rápida. Si consideramos como estado estacionario que la diferencia entre dos valores consecutivos sea menor de 0.05, mediante el siguiente programa do Octave podemos calcular este valor de tiempo:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=8;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=0:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K=(2/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1);&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=zeros(length(t),1);&lt;br /&gt;
sol=[sol;UB'];for i=1:length(t)&lt;br /&gt;
    er=abs(sol(:,i+1)-sol(:,i));&lt;br /&gt;
    a=max(er);&lt;br /&gt;
    if a&amp;lt;=0.05&lt;br /&gt;
    cont=i;&lt;br /&gt;
    tiempo=(cont-1)*dt;&lt;br /&gt;
    break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
tiempo}}&lt;br /&gt;
&lt;br /&gt;
El programa nos dice que el tiempo en el que se cumple esta condición es &amp;lt;math&amp;gt;t=0.7&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=Intercambio de calor con el entorno. Varilla no aislada longitudinalmente=&lt;br /&gt;
Si ahora panteamos el intercambio de calor con el exterior, suponiendo que este ambiente se encuentra a una temperatura de 16ºC, la ecuación diferencial se ve afectada de manera que nos queda::&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)-2u_{xx}(x,t)+u(x,t)-16=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Implementando numéricamente esta ecuación con las condiciones iniciales propuestas en el primer apartado de este artículo, mediante el método de lineas y el método del trapecio, mediante el siguiente código, obteniendo así la gráfica de la temperatura en cada punto de la varilla con respecto al tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L-h;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=(2+h^2)*diag(ones(1,N-1))-diag(ones(1,N-2),1)-diag(ones(1,N-2),-1);&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N-1,1).+16;;&lt;br /&gt;
F(1)=F(1)+2*5/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N-1);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UA=5*ones(1,length(t));&lt;br /&gt;
UB=0*ones(1,length(t));&lt;br /&gt;
sol=[UA;sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')}}&lt;br /&gt;
&lt;br /&gt;
Obteniendo de este código:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasaire.png|marco|centro|Representación de la temperatura en cada punto de la varilla con respecto al tiempo]]&lt;br /&gt;
&lt;br /&gt;
Donde se ve como el exterior aporta calor a la varilla elevando sus temperaturas frente a las iniciales.&lt;br /&gt;
&lt;br /&gt;
Si considerásemos el caso estacionario, se puede calcular mediante la inclusión del siguiente fragmento de código en el anterior programa que modelizaba el fenómeno no estacionario. Además de darnos la situación de temperaturas estacionarias, nos da el tiempo en el que este se alcanza con un error relativo de &amp;lt;math&amp;gt;10^{-3}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=%Estacionaria&lt;br /&gt;
figure(2)&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('temperatura')&lt;br /&gt;
c1=det([-11,1;-16,exp(-4)])/det([1,1;exp(4),exp(-4)]);&lt;br /&gt;
c2=det([1,-11;exp(4),-16])/det([1,1;exp(4),exp(-4)]);&lt;br /&gt;
est=c1*exp(x)+c2*exp(-x)+16;&lt;br /&gt;
plot(x,est);&lt;br /&gt;
hold on&lt;br /&gt;
for i=1:length(t)-1&lt;br /&gt;
    er=abs(sol(:,i+1)-sol(:,i));&lt;br /&gt;
    a=max(er);&lt;br /&gt;
    if a&amp;lt;=0.001&lt;br /&gt;
    cont=i;&lt;br /&gt;
    ti=(cont-1)*dt;&lt;br /&gt;
    break&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
ti&lt;br /&gt;
cont}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La gráfica conseguida del código anterior es:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasaireest.png|marco|centro|Temperatura estacionaria de la varilla con respecto a la posición de cada punto de ella.]]&lt;br /&gt;
&lt;br /&gt;
El valor de tiempo obtenido es &amp;lt;math&amp;gt;t=5.9&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
==Cambio de condiciones de contorno==&lt;br /&gt;
Si cambiamos las condiciones de contorno de la ecuación por estas:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_x(0,t)=2&amp;lt;/math&amp;gt;:&lt;br /&gt;
&amp;lt;math&amp;gt;u(4,t)=-2&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Físicamente podrían interpretarse como la conexión de un deposito de fluido en el extremo derecho que obligara un flujo constante de calor en el mismo extremo, y que el extremo derecho estuviera posicionado sobre un objeto que le obligara a tener una temperatura constante.&lt;br /&gt;
&lt;br /&gt;
Si implementamos numéricamente este nuevo modelo propuesto mediante el siguiente código Matlab, obtenemos la representación de las temperaturas de la varilla frente al tiempo.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=clear all&lt;br /&gt;
%datos del problema&lt;br /&gt;
L=4;&lt;br /&gt;
h=0.1;&lt;br /&gt;
T=10;&lt;br /&gt;
%discretizacion espacial&lt;br /&gt;
N=L/h;&lt;br /&gt;
%vector de puntos en el espacio&lt;br /&gt;
x=0:h:L;&lt;br /&gt;
xint=h:h:L;%nodos interiores&lt;br /&gt;
%aproximacion de -Uxx&lt;br /&gt;
K=(2+h^2)*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K(1,1)=K(1,1)-1;&lt;br /&gt;
K=(1/h^2)*K;&lt;br /&gt;
%calculamos F&lt;br /&gt;
F=zeros(N,1).+16;;&lt;br /&gt;
F(1)=F(1)+2/h;&lt;br /&gt;
F(N)=F(N)+2/h^2;&lt;br /&gt;
%calculamos U0&lt;br /&gt;
U0=((exp((-6)*(xint-2).^2))+(5-5/4.*xint))';&lt;br /&gt;
%discretizacion temporal&lt;br /&gt;
dt=h; %paso en el espacio&lt;br /&gt;
t=0:dt:T;%vector en tiempos&lt;br /&gt;
%metodo del trapecio&lt;br /&gt;
I=eye(N);&lt;br /&gt;
M=I+(dt./2)*K;&lt;br /&gt;
sol(:,1)=U0;&lt;br /&gt;
for n=1:length(t)-1&lt;br /&gt;
    sol(:,n+1)=M\(sol(:,n)+dt/2*(F)+dt/2*(-K*sol(:,n)+F));&lt;br /&gt;
end&lt;br /&gt;
UB=2*ones(1,length(t));&lt;br /&gt;
sol=[sol;UB];;&lt;br /&gt;
%dibujamos la solucion (apartado 3)&lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
 &lt;br /&gt;
[xx,tt]=meshgrid(x,t);&lt;br /&gt;
 &lt;br /&gt;
figure(1)&lt;br /&gt;
surf(xx,tt,sol')&lt;br /&gt;
xlabel('espacio')&lt;br /&gt;
ylabel('tiempo')&lt;br /&gt;
zlabel('Temperatura')&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Logrando así la gráfica:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Perdidasneu111.png|marco|centro|Representación de las temperaturas de la varilla frente al tiempo]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Se puede observar como la temperatura de los puntos de la varilla va aumentado debido al flujo entrante por el lado izquierdo de esta hasta que alcanza un estado estacionario.&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferentiales]]&lt;br /&gt;
[[Categoría:ED14/15]]&lt;br /&gt;
[[Categoría:Trabajos 2014-15]]&lt;/div&gt;</summary>
		<author><name>Antonio Carrero Muñoz</name></author>	</entry>

	</feed>