<?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=Mbecares</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=Mbecares"/>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/wiki/Especial:Contribuciones/Mbecares"/>
		<updated>2026-04-29T17:25:35Z</updated>
		<subtitle>Contribuciones del usuario</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Estudio_de_implantaci%C3%B3n_de_una_central_el%C3%A9ctrica_termosolar_en_Andaluc%C3%ADa_oriental&amp;diff=46187</id>
		<title>Estudio de implantación de una central eléctrica termosolar en Andalucía oriental</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Estudio_de_implantaci%C3%B3n_de_una_central_el%C3%A9ctrica_termosolar_en_Andaluc%C3%ADa_oriental&amp;diff=46187"/>
				<updated>2021-05-27T18:32:45Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Conclusiones */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoSIG | Estudio de implantación de una central eléctrica termosolar en Andalucía oriental | Manuel Bécares Martín&amp;lt;br /&amp;gt;Ignacio Cepeda Bajo&amp;lt;br /&amp;gt;Helena Sánchez Ramos| [[:Categoría:SIGAIC_20/21|Curso 20/21]] }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El objetivo del trabajo es obtener la localización más favorable de una nueva central termosolar en la zona occidental de Andalucía, en base a la elevada radiación solar recibida en este área y la existencia de precedentes favorables. &lt;br /&gt;
&lt;br /&gt;
Para ello, se realiza un análisis multicriterio, comenzando con la elaboración de un mapa de radiación interpolando los datos de estaciones meteorológicas y se pondera de 0 a 1. En segunda instancia, se crea un mapa de pendientes a partir de los MDT de las provincias seleccionadas y se excluyen aquellas zonas con pendientes superiores a un cierto valor. Seguidamente, se crean una serie de zonas de influencia de cercanía a cauces fluviales y líneas eléctricas. A continuación, se excluyen tanto las zonas ambientalmente protegidas como las cercanías a los núcleos de población.&lt;br /&gt;
&lt;br /&gt;
Tras la obtención de estos mapas temáticos, se realiza una intersección de los datos obtenidos, ponderando los valores de cercanía a cauces y líneas y de radiación solar y eliminando aquellas zonas inadmisibles para la situación de la central.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
La obtención de energía eléctrica ha sido un reto para la humanidad desde el descubrimiento de la electricidad.&lt;br /&gt;
Las últimas tendencias en esta línea son la obtención de energías renovables independientes de los recursos finitos existentes en el planeta. Por ello, los últimos años se han hecho numerosas inversiones para potenciar este tipo de energías incidiendo en las centrales hidroeléctricas, centrales solares o centrales termosolares, así como aerogeneradores.&lt;br /&gt;
&lt;br /&gt;
En esta línea, las centrales termosolares están ganando mucha importancia, sobre todo en la península Ibérica donde incide una considerable cantidad de radiación solar. El funcionamiento de estas centrales consiste en el aprovechamiento térmico de la energía solar para transferirla y almacenarla en un medio portador de calor como es el agua. Además, es necesario concentrar la radiación solar para que se puedan alcanzar temperaturas elevadas y obtener así un rendimiento aceptable en el ciclo termodinámico. La captación y concentración de los rayos solares se hace por medio de espejos con orientación automática que apuntan a una torre central donde se calienta el fluido. El conjunto de la superficie reflectante y su dispositivo de orientación se denomina heliostato.&lt;br /&gt;
&lt;br /&gt;
Así, el trabajo presente se centra en establecer una ubicación favorable para una central termosolar en Andalucía. Para ello, hemos realizado una búsqueda de la radiación solar en la zona obteniendo la siguiente figura:&lt;br /&gt;
[[Archivo:SIG_Becares_1.png|600x400px|marco|centro|Radiación global de Andalucía. Mediana diaria anual en kWh/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Este mapa carece de precisión y no será utilizado para el estudio detallado, pero permite hacer una pequeña aproximación sobre la zona en la que nos centraremos. En este caso, estudiaremos la ubicación de la planta en la zona oriental de Andalucía por ser una zona de gran radiación solar. Es cierto que en la zona oriental existe más radiación, pero seleccionamos dicha zona para fomentar el desarrollo en Almería y Granada, ya que son zonas menos desarrolladas que Cádiz, Sevilla y Huelva.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
La metodología seguida para el estudio de una ubicación óptima para el desarrollo de la central eléctrica se basa en la realización de un análisis multicriterio. Este proceso analítico permite realizar una comparativa entre diversas ubicaciones a partir del estudio de diferentes variables o características del territorio, estableciendo dos tipos de variable:&lt;br /&gt;
* '''Características del territorio que influyen sobre la producción y/o el coste de la instalación:''' para estas se establecerán variables continuas normalizadas entre 0 y 1, otorgando un valor a cada punto del terreno en función de su idoneidad (1) o no (0) para la actividad de producción termosolar.&lt;br /&gt;
* '''Características del territorio que muestran la compatibilidad con la instalación de la central:''' estas variables tendrán un valor singular de 0 (incompatible) o 1 (compatible) que multiplicarán a la variable normalizada global para excluir aquellas zonas que no pueden acoger la instalación eléctrica.&lt;br /&gt;
&lt;br /&gt;
En el estudio de ubicación de una central termosolar, se han considerado como parámetros más importantes para su implantación:&lt;br /&gt;
	&lt;br /&gt;
* '''Radiación solar directa media:''' el potencial de generación eléctrica depende fundamentalmente de esta variable, puesto que es la que mide la energía solar que los espejos de la central son capaces de reflejar hacia la torre o núcleo. Los datos empleados serán los obtenidos de la base de datos de la radiación solar de Andalucía de la Agencia Andaluza de la Energía, que recoge las mediciones y las coordenadas de las estaciones meteorológicas de la Red de Información Agroclimática de Andalucía, la cual está compuesta por 94 estaciones repartidas por el territorio andaluz.&lt;br /&gt;
* '''Pendiente del terreno:''' con el fin de maximizar la incidencia del Sol y facilitar la orientación de los espejos que conforman el sistema hacia la torre, se limitará los terrenos válidos para la implantación a aquellos con una pendiente menor al 3%. Para su obtención, se empleará como datos de partida del modelo digital del terreno MDT25 del Instituto Geográfico Nacional (IGN).	&lt;br /&gt;
* '''Distancia a líneas eléctricas:''' al ser una central que genera una gran potencia eléctrica, es importante que se ubique en proximidades de las grandes líneas de distribución repartidas por el territorio nacional, pues se evitará la realización de nuevas grandes líneas, que tendrán gran impacto en el coste de construcción de la central. Esta información se obtendrá de la base topográfica BTN25 del IGN.&lt;br /&gt;
* '''Distancia a cauces fluviales:''' el agua es fundamental en este tipo de centrales: tanto como fluido empleado para almacenar la energía térmica generada con la radiación solar, como fluido que se evapora y que se encarga de mover el generador que producirá la energía eléctrica. Por estos motivos, resultan interesantes cauces importantes con un caudal de agua estable a lo largo del año de agua, así como localizaciones cercanas a estos con el fin de reducir el coste de construcción de las conducciones que llevan el agua hasta la central. Esta información se obtendrá también de la base topográfica BTN25 del IGN, filtrándose los ríos de categoría 1, 2 y 3 recogidos en la variable tipo_tramo, con los valores 4001, 4002 y 4003.&lt;br /&gt;
*'''Espacios protegidos:''' el gran impacto que producen estas centrales sobre el paisaje, la fauna y la flora, podría afectar de forma irreversible a las áreas protegidas, por lo que estas se excluirán del análisis de ubicaciones. Las capas vectoriales que recogen los espacios protegidos incluidos en la Red Natura 2000 se ha obtenido del Banco de Datos de la Naturaleza del Ministerio para la Transición Ecológica y el Reto Demográfico (MITECO).&lt;br /&gt;
* '''Núcleos urbanos:''' la importancia de localizar las centrales alejadas de los núcleos urbanos se debe a su importante impacto visual sobre estos, así como por el coste más elevado que tendrá los terrenos próximos a los núcleos, frente a terrenos más alejados con un coste más reducido. Esta información se obtendrá de la capa de Núcleos de población incluida en la Información Geográfica de Referencia del IGN.&lt;br /&gt;
*'''Usos del suelo:''' es importante conocer los usos del suelo para excluir aquellos cuya actividad o edificación sería incompatible con la implantación de la central. La capa de usos del suelo empleada es la de la base de datos de ocupación del suelo en España del programa SIOSE del IGN.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG_Becares_2.jpeg|1000px|centro]]&lt;br /&gt;
&lt;br /&gt;
Una vez obtenidas las variables normalizadas para cada uno de estos parámetros, se establecerá un peso de relevancia a cada una de las variables continuas estudiadas en relación a su importancia en el proyecto. Posteriormente se aplicarán los multiplicadores de compatibilidad, que anularán el valor de la variable normalizada en aquellos puntos incompatibles con la instalación de la central. La expresión matemática que regirá el proceso es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n=M_{pend}·M_{usos}·M_{EP}·(p_1·n_{rad}+p_2·n_{elect}+p_3·n_{rios}+p_4·n_{núcleos})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;p_i&amp;lt;/math&amp;gt;	pesos de las variables continuas&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{rad}&amp;lt;/math&amp;gt;	variable normalizada de la radiación solar &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{elect}&amp;lt;/math&amp;gt;	variable normalizada de la distancia a las líneas eléctricas&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{rios}&amp;lt;/math&amp;gt;	variable normalizada de la distancia a los cursos fluviales&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{núcleos}&amp;lt;/math&amp;gt;	variable normalizada de la proximidad a los núcleos urbanos&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{EP}&amp;lt;/math&amp;gt;	multiplicador de espacios protegidos&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{usos}&amp;lt;/math&amp;gt;	multiplicador de usos del suelo&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{pend}&amp;lt;/math&amp;gt;	multiplicador de pendiente del terreno&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desde el punto de vista de aplicación SIG, esta metodología se desarrollará generando capas ráster para cada una de las variables y de los multiplicadores. Para obtener estas capas, en el caso de factores dependientes de la distancia a entidades como núcleos urbanos, líneas eléctricas o cauces fluviales (capas vectoriales), se empleará la herramienta buffer para establecer áreas de influencia en torno a los elementos poligonales en función de los rangos de distancia para los diferentes valores de las variables Ni. Una vez generada una capa vectorial con regiones poligonales, para las que se crea una variable numérica que recoja su valor de la variable normalizada para esa característica, se procederá a rasterizar la capa mediante GRASS generando un ráster con elementos cuadrados de 150 metros de lado.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de la radiación, se parte de una serie de valores numéricos los cuales se recogen en una tabla de Excel. Así mismo, se generará una capa de puntos con la posición de las estaciones de medición de radiación solar. Se procederá a la unión de la capa vectorial de puntos con la tabla a través del atributo NUM que otorga un valor numérico entero a cada estación, que sirve como identificador de las estaciones. Con la capa de puntos con los valores de radiación enlazados, se realiza una Interpolación IDW, la cual se basa en la distancia inversa ponderada (IDW), distancia matemática (determinista) que asume que los valores más cercanos están más relacionados que otros con su función o variable. Con este procedimiento, se obtiene un ráster que recoge un valor de la radiación para cada elemento de una cuadricula de lado 150 metros. Este ráster se reclasificará con un archivo .txt que recogerá las reglas de la reclasificación para la obtención del ráster con valores de la variable normalizada. Su estructura será la siguiente:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
0 thru 17 = 7&lt;br /&gt;
17 thru 18.5 = 8&lt;br /&gt;
18.5 thru 20 = 9&lt;br /&gt;
* = 10&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Debido a las características de la función, se obtendrá un ráster entre 0 y 10, por lo que este ráster a la hora de obtener la variable global normalizada, deberá dividirse sus valores por 10 para que la variable sea normalizada entre 0 y 1.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el caso de los multiplicadores, para el caso de las pendientes, se parte del modelo digital del terreno MDT25 del IGN para el área de estudio. Combinando las hojas incluidas en el área, se crea un mapa de pendientes, que conforma un ráster con el valor de la pendiente en tanto por ciento. Este ráster se reclasificará asignando un valor 1 a las celdas con un valor menor o igual al 3%, y un valor 0 para el resto de las celdas.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de los usos del suelo, se partirá de la capa vectorial del SIOSE. Se creará una variable que asignará valor 1 para los suelos con usos agrícolas y sin aprovechamiento económico, o un valor 0 para el resto de los usos. Se rasterizará esta capa en base a esta variable generada.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de las zonas protegidas, se partirá de las capas vectoriales de la Red Natura 2000, las cuales se disolverán para generar una capa que incluya las áreas protegidas independientemente de su figura de protección. Realizando operaciones de diferencia, se generará una capa vectorial con una nueva variable en la que las áreas protegidas tengan un valor 0 y las que no poseen protección un valor igual a 1. Finalmente se procederá a rasterizar la capa.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las diferentes capas ráster obtenidos, se procederá a realizar la operación algebraica antes definida para el análisis multicriterio. Para ello se empleará la Calculadora de Mapas incluida en GRASS, importando previamente los ráster a esta aplicación incluida en QGIS. El diagrama que se deberá programar para obtener el resultado numérico de la expresión matemática será el siguiente:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG_Becares_12.png|marco|centro|Diagrama a programar en la calculadora de mapas]]&lt;br /&gt;
&lt;br /&gt;
Tras realizar esta operación, se obtendrá una capa ráster final que recoge el valor de la variable general normalizada entre 0 y 1 para capa punto del territorio estudiado, donde 0 es un lugar imposible para la implantación, y 1 es el lugar óptimo para la implantación.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
Una vez efectuado el proceso descrito en el anterior epígrafe, se obtienen los siguientes resultados:&lt;br /&gt;
&lt;br /&gt;
=== Radiación solar directa media diaria===&lt;br /&gt;
El potencial de generación de electricidad en estas centrales está relacionado directamente con esta variable que mide la energía que los espejos de la central son capaces de reflejar hacia la torre. Como ya se ha mencionado con anterioridad, la radiación es el parámetro dominante con una ponderación de 0,5. En cuanto a los valores asignados para cada nivel de radiación, se recogen en la siguiente tabla:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Radiación|| &amp;gt;20 || 18.5-20 || 17-18.5 || ≤17&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1|| 0.8|| 0.6|| 0.4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 3.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 4.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Líneas eléctricas ===&lt;br /&gt;
Para la implantación de una central eléctrica, un parámetro relevante a estudiar debe ser la distancia a las grandes infraestructuras de red ya construidas para así poder minimizar el coste derivado de la construcción de dichas líneas. Por ello, se le asigna una ponderación global de 0,2 para el cálculo de la ubicación óptima de la central.&lt;br /&gt;
&lt;br /&gt;
Por otra parte, se establecen los siguientes valores en función de la distancia a las líneas eléctricas:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Radiación|| ≤1 || 1-2 || 2-3|| 3-4 || 4-5 || &amp;gt;5&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1|| 0.8|| 0.6|| 0.4 || 0.2 ||0.1&lt;br /&gt;
|}&lt;br /&gt;
[[Archivo:SIG Becares 5.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Red hidrográfica ===&lt;br /&gt;
En este tipo de centrales son necesarios grandes caudales de agua, por lo que, con el fin de minimizar los costes de construcción, se intentará localizar una ubicación próxima a un cauce de un río para evitar la construcción de grandes tuberías.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ponderación para este criterio es la misma que la establecida para las líneas eléctricas y los valores asignados en función de las distancias son los siguientes:&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Distancia(km)|| ≤1 || 1-2 || 2-3 || &amp;gt;3&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1 || 0.7 || 0.3|| 0.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 6.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Núcleos urbanos===&lt;br /&gt;
La ubicación de una central eléctrica muy próxima a núcleos urbanos podría tener impactos negativos de tipo socioeconómico o paisajístico, además de suponer un mayor coste del terreno. Por ello, en los valores asignados en la tabla priman las localizaciones más lejanas a dichos núcleos. La ponderación total de este factor sobre el total es de 0,1 dada su menor importancia con respecto a los dos anteriores.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Distancia (km)|| ≤0.75 || 0.75-1.5 || &amp;gt;1.5&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 0 || 0.6 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 7.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Espacios protegidos===&lt;br /&gt;
Es inmediato deducir el carácter eliminatorio de este aspecto dada la imposibilidad de construir una central termosolar en un espacio protegido. Por lo que esta variable se introducirá como un factor multiplicador a la ponderación ya realizada, teniendo un valor de 1 (puede construirse) si nos encontramos fuera de una zona protegida, y de 0 (ubicación no permitida) en caso contrario.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 8.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Usos del suelo ===&lt;br /&gt;
Los usos del suelo es un factor determinante para la implantación de la central pues existen zonas con ciertos usos del suelo en los que no se puede construir por diversas razones. En los usos residencial, dotacional, comercial, cultural o zonas de agua, por ejemplo, resulta casi inmediato establecer que no sería posible la construcción de dicha central ya que son actividades asociadas al área urbana y uno de los objetivos es alejarse de estos núcleos para minimizar el impacto. Por otro lado, descartaremos el uso forestal porque requeriría deforestar la parcela para colocar la edificación. Así como también descartaremos las zonas mineras porque el terreno puede estar demasiado deformado y habría que realizar grandes labores de nivelación. En adición, cabe justificar el descarte del uso industrial ya que hace referencia a zonas edificadas con naves y requeriría hacer expropiaciones y demoliciones que pueden ser costosas en términos económicos y temporales.&lt;br /&gt;
&lt;br /&gt;
Por todo lo expuesto anteriormente, este factor actúa como multiplicador, de forma que solo permite la construcción de la central eléctrica en los usos del suelo que se han definido con un 1. Para todos los demás, el valor multiplicador será 0 e imposibilitaría la realización de la obra. Estos usos del suelo definidos como permitidos para la implantación (valor de 1) han sido los usos agrícolas, áreas abandonadas y zonas sin aprovechamiento económico.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 10.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Topografía ===&lt;br /&gt;
Ocurre algo similar que en el caso de las zonas protegidas o usos del suelo, pero en este el motivo es funcional. Para que la incidencia de los rayos del sol se máxima no debe haber un exceso de pendiente ya que se perdería la mayoría de la energía derivada del ángulo de incidencia de los rayos solares. Para la corrección de este aspecto se requeriría un coste de construcción muy elevado que haría inviable la construcción de la misma. Así, en zonas cuya pendiente sea igual o superior al 3% el factor multiplicador valdrá 0 y, en caso contrario (pendiente inferior al 3%) valdrá 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 9.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Resultado final ===&lt;br /&gt;
Tras la realización de los mapas anteriores procedemos a realizar la ponderación ya mencionada durante el proceso quedando de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n=M_{pend}·M_{usos}·M_{ZP}·(0,5·n_{rad}+0,2·n_{elect}+0,2·n_{rios}+0,1·n_{núcleos})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo la siguiente cartografía:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 11.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
Según el resultado obtenido en el proceso antes descrito, se han seleccionado 3 posibles ubicaciones, cuyas características son próximas a las idóneas. Las principales características serían las siguientes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  !! Radiación (MJ/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) !! Red eléctrica !! Cauces de ríos !! Núcleos urbanos&lt;br /&gt;
|-&lt;br /&gt;
| Solución 1|| 20.404 || 1000-2000 m || 1000 m || &amp;gt; 1500 m&lt;br /&gt;
|-&lt;br /&gt;
| Solución 2 || 20.308 || &amp;lt;1000 m || 1000 m || &amp;gt; 1500 m&lt;br /&gt;
|-&lt;br /&gt;
| Solución 3 || 20.834 || &amp;lt;1000 m || 1000 m|| 750-1500 m&lt;br /&gt;
|}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dichas ubicaciones se corresponderían en la cartografía anterior con aquellas zonas marcadas en tonos más verdes. Situando dichas soluciones en el mapa, este quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 13.jpeg|1200px|centro]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En esta cartografía, se puede destacar el nivel de significancia que adquiere la consideración de los criterios de zonas protegidas, pendientes y usos del suelo, pues imposibilita la construcción de nuestra central termosolar en gran parte del territorio estudiado.&lt;br /&gt;
&lt;br /&gt;
Sin embargo, pese a todas las restricciones impuestas se han encontrado 3 soluciones óptimas, de las cuales, una de ellas es idónea según los criterios determinados, ya que posee un valor normalizado de 1. Dicha ubicación corresponde a la Solución 2, la cual posee una radiación de 20,308 megajulios por metro cuadrado, una distancia a la red eléctrica y a cauces de los ríos menores a un kilómetro y una lejanía de más de kilómetro y medio del núcleo urbano más próximo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;br /&gt;
[[Categoría:SIGAIC_20/21]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Estudio_de_implantaci%C3%B3n_de_una_central_el%C3%A9ctrica_termosolar_en_Andaluc%C3%ADa_oriental&amp;diff=46186</id>
		<title>Estudio de implantación de una central eléctrica termosolar en Andalucía oriental</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Estudio_de_implantaci%C3%B3n_de_una_central_el%C3%A9ctrica_termosolar_en_Andaluc%C3%ADa_oriental&amp;diff=46186"/>
				<updated>2021-05-27T18:31:45Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Resultados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoSIG | Estudio de implantación de una central eléctrica termosolar en Andalucía oriental | Manuel Bécares Martín&amp;lt;br /&amp;gt;Ignacio Cepeda Bajo&amp;lt;br /&amp;gt;Helena Sánchez Ramos| [[:Categoría:SIGAIC_20/21|Curso 20/21]] }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El objetivo del trabajo es obtener la localización más favorable de una nueva central termosolar en la zona occidental de Andalucía, en base a la elevada radiación solar recibida en este área y la existencia de precedentes favorables. &lt;br /&gt;
&lt;br /&gt;
Para ello, se realiza un análisis multicriterio, comenzando con la elaboración de un mapa de radiación interpolando los datos de estaciones meteorológicas y se pondera de 0 a 1. En segunda instancia, se crea un mapa de pendientes a partir de los MDT de las provincias seleccionadas y se excluyen aquellas zonas con pendientes superiores a un cierto valor. Seguidamente, se crean una serie de zonas de influencia de cercanía a cauces fluviales y líneas eléctricas. A continuación, se excluyen tanto las zonas ambientalmente protegidas como las cercanías a los núcleos de población.&lt;br /&gt;
&lt;br /&gt;
Tras la obtención de estos mapas temáticos, se realiza una intersección de los datos obtenidos, ponderando los valores de cercanía a cauces y líneas y de radiación solar y eliminando aquellas zonas inadmisibles para la situación de la central.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
La obtención de energía eléctrica ha sido un reto para la humanidad desde el descubrimiento de la electricidad.&lt;br /&gt;
Las últimas tendencias en esta línea son la obtención de energías renovables independientes de los recursos finitos existentes en el planeta. Por ello, los últimos años se han hecho numerosas inversiones para potenciar este tipo de energías incidiendo en las centrales hidroeléctricas, centrales solares o centrales termosolares, así como aerogeneradores.&lt;br /&gt;
&lt;br /&gt;
En esta línea, las centrales termosolares están ganando mucha importancia, sobre todo en la península Ibérica donde incide una considerable cantidad de radiación solar. El funcionamiento de estas centrales consiste en el aprovechamiento térmico de la energía solar para transferirla y almacenarla en un medio portador de calor como es el agua. Además, es necesario concentrar la radiación solar para que se puedan alcanzar temperaturas elevadas y obtener así un rendimiento aceptable en el ciclo termodinámico. La captación y concentración de los rayos solares se hace por medio de espejos con orientación automática que apuntan a una torre central donde se calienta el fluido. El conjunto de la superficie reflectante y su dispositivo de orientación se denomina heliostato.&lt;br /&gt;
&lt;br /&gt;
Así, el trabajo presente se centra en establecer una ubicación favorable para una central termosolar en Andalucía. Para ello, hemos realizado una búsqueda de la radiación solar en la zona obteniendo la siguiente figura:&lt;br /&gt;
[[Archivo:SIG_Becares_1.png|600x400px|marco|centro|Radiación global de Andalucía. Mediana diaria anual en kWh/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Este mapa carece de precisión y no será utilizado para el estudio detallado, pero permite hacer una pequeña aproximación sobre la zona en la que nos centraremos. En este caso, estudiaremos la ubicación de la planta en la zona oriental de Andalucía por ser una zona de gran radiación solar. Es cierto que en la zona oriental existe más radiación, pero seleccionamos dicha zona para fomentar el desarrollo en Almería y Granada, ya que son zonas menos desarrolladas que Cádiz, Sevilla y Huelva.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
La metodología seguida para el estudio de una ubicación óptima para el desarrollo de la central eléctrica se basa en la realización de un análisis multicriterio. Este proceso analítico permite realizar una comparativa entre diversas ubicaciones a partir del estudio de diferentes variables o características del territorio, estableciendo dos tipos de variable:&lt;br /&gt;
* '''Características del territorio que influyen sobre la producción y/o el coste de la instalación:''' para estas se establecerán variables continuas normalizadas entre 0 y 1, otorgando un valor a cada punto del terreno en función de su idoneidad (1) o no (0) para la actividad de producción termosolar.&lt;br /&gt;
* '''Características del territorio que muestran la compatibilidad con la instalación de la central:''' estas variables tendrán un valor singular de 0 (incompatible) o 1 (compatible) que multiplicarán a la variable normalizada global para excluir aquellas zonas que no pueden acoger la instalación eléctrica.&lt;br /&gt;
&lt;br /&gt;
En el estudio de ubicación de una central termosolar, se han considerado como parámetros más importantes para su implantación:&lt;br /&gt;
	&lt;br /&gt;
* '''Radiación solar directa media:''' el potencial de generación eléctrica depende fundamentalmente de esta variable, puesto que es la que mide la energía solar que los espejos de la central son capaces de reflejar hacia la torre o núcleo. Los datos empleados serán los obtenidos de la base de datos de la radiación solar de Andalucía de la Agencia Andaluza de la Energía, que recoge las mediciones y las coordenadas de las estaciones meteorológicas de la Red de Información Agroclimática de Andalucía, la cual está compuesta por 94 estaciones repartidas por el territorio andaluz.&lt;br /&gt;
* '''Pendiente del terreno:''' con el fin de maximizar la incidencia del Sol y facilitar la orientación de los espejos que conforman el sistema hacia la torre, se limitará los terrenos válidos para la implantación a aquellos con una pendiente menor al 3%. Para su obtención, se empleará como datos de partida del modelo digital del terreno MDT25 del Instituto Geográfico Nacional (IGN).	&lt;br /&gt;
* '''Distancia a líneas eléctricas:''' al ser una central que genera una gran potencia eléctrica, es importante que se ubique en proximidades de las grandes líneas de distribución repartidas por el territorio nacional, pues se evitará la realización de nuevas grandes líneas, que tendrán gran impacto en el coste de construcción de la central. Esta información se obtendrá de la base topográfica BTN25 del IGN.&lt;br /&gt;
* '''Distancia a cauces fluviales:''' el agua es fundamental en este tipo de centrales: tanto como fluido empleado para almacenar la energía térmica generada con la radiación solar, como fluido que se evapora y que se encarga de mover el generador que producirá la energía eléctrica. Por estos motivos, resultan interesantes cauces importantes con un caudal de agua estable a lo largo del año de agua, así como localizaciones cercanas a estos con el fin de reducir el coste de construcción de las conducciones que llevan el agua hasta la central. Esta información se obtendrá también de la base topográfica BTN25 del IGN, filtrándose los ríos de categoría 1, 2 y 3 recogidos en la variable tipo_tramo, con los valores 4001, 4002 y 4003.&lt;br /&gt;
*'''Espacios protegidos:''' el gran impacto que producen estas centrales sobre el paisaje, la fauna y la flora, podría afectar de forma irreversible a las áreas protegidas, por lo que estas se excluirán del análisis de ubicaciones. Las capas vectoriales que recogen los espacios protegidos incluidos en la Red Natura 2000 se ha obtenido del Banco de Datos de la Naturaleza del Ministerio para la Transición Ecológica y el Reto Demográfico (MITECO).&lt;br /&gt;
* '''Núcleos urbanos:''' la importancia de localizar las centrales alejadas de los núcleos urbanos se debe a su importante impacto visual sobre estos, así como por el coste más elevado que tendrá los terrenos próximos a los núcleos, frente a terrenos más alejados con un coste más reducido. Esta información se obtendrá de la capa de Núcleos de población incluida en la Información Geográfica de Referencia del IGN.&lt;br /&gt;
*'''Usos del suelo:''' es importante conocer los usos del suelo para excluir aquellos cuya actividad o edificación sería incompatible con la implantación de la central. La capa de usos del suelo empleada es la de la base de datos de ocupación del suelo en España del programa SIOSE del IGN.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG_Becares_2.jpeg|1000px|centro]]&lt;br /&gt;
&lt;br /&gt;
Una vez obtenidas las variables normalizadas para cada uno de estos parámetros, se establecerá un peso de relevancia a cada una de las variables continuas estudiadas en relación a su importancia en el proyecto. Posteriormente se aplicarán los multiplicadores de compatibilidad, que anularán el valor de la variable normalizada en aquellos puntos incompatibles con la instalación de la central. La expresión matemática que regirá el proceso es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n=M_{pend}·M_{usos}·M_{EP}·(p_1·n_{rad}+p_2·n_{elect}+p_3·n_{rios}+p_4·n_{núcleos})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;p_i&amp;lt;/math&amp;gt;	pesos de las variables continuas&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{rad}&amp;lt;/math&amp;gt;	variable normalizada de la radiación solar &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{elect}&amp;lt;/math&amp;gt;	variable normalizada de la distancia a las líneas eléctricas&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{rios}&amp;lt;/math&amp;gt;	variable normalizada de la distancia a los cursos fluviales&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{núcleos}&amp;lt;/math&amp;gt;	variable normalizada de la proximidad a los núcleos urbanos&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{EP}&amp;lt;/math&amp;gt;	multiplicador de espacios protegidos&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{usos}&amp;lt;/math&amp;gt;	multiplicador de usos del suelo&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{pend}&amp;lt;/math&amp;gt;	multiplicador de pendiente del terreno&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desde el punto de vista de aplicación SIG, esta metodología se desarrollará generando capas ráster para cada una de las variables y de los multiplicadores. Para obtener estas capas, en el caso de factores dependientes de la distancia a entidades como núcleos urbanos, líneas eléctricas o cauces fluviales (capas vectoriales), se empleará la herramienta buffer para establecer áreas de influencia en torno a los elementos poligonales en función de los rangos de distancia para los diferentes valores de las variables Ni. Una vez generada una capa vectorial con regiones poligonales, para las que se crea una variable numérica que recoja su valor de la variable normalizada para esa característica, se procederá a rasterizar la capa mediante GRASS generando un ráster con elementos cuadrados de 150 metros de lado.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de la radiación, se parte de una serie de valores numéricos los cuales se recogen en una tabla de Excel. Así mismo, se generará una capa de puntos con la posición de las estaciones de medición de radiación solar. Se procederá a la unión de la capa vectorial de puntos con la tabla a través del atributo NUM que otorga un valor numérico entero a cada estación, que sirve como identificador de las estaciones. Con la capa de puntos con los valores de radiación enlazados, se realiza una Interpolación IDW, la cual se basa en la distancia inversa ponderada (IDW), distancia matemática (determinista) que asume que los valores más cercanos están más relacionados que otros con su función o variable. Con este procedimiento, se obtiene un ráster que recoge un valor de la radiación para cada elemento de una cuadricula de lado 150 metros. Este ráster se reclasificará con un archivo .txt que recogerá las reglas de la reclasificación para la obtención del ráster con valores de la variable normalizada. Su estructura será la siguiente:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
0 thru 17 = 7&lt;br /&gt;
17 thru 18.5 = 8&lt;br /&gt;
18.5 thru 20 = 9&lt;br /&gt;
* = 10&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Debido a las características de la función, se obtendrá un ráster entre 0 y 10, por lo que este ráster a la hora de obtener la variable global normalizada, deberá dividirse sus valores por 10 para que la variable sea normalizada entre 0 y 1.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el caso de los multiplicadores, para el caso de las pendientes, se parte del modelo digital del terreno MDT25 del IGN para el área de estudio. Combinando las hojas incluidas en el área, se crea un mapa de pendientes, que conforma un ráster con el valor de la pendiente en tanto por ciento. Este ráster se reclasificará asignando un valor 1 a las celdas con un valor menor o igual al 3%, y un valor 0 para el resto de las celdas.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de los usos del suelo, se partirá de la capa vectorial del SIOSE. Se creará una variable que asignará valor 1 para los suelos con usos agrícolas y sin aprovechamiento económico, o un valor 0 para el resto de los usos. Se rasterizará esta capa en base a esta variable generada.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de las zonas protegidas, se partirá de las capas vectoriales de la Red Natura 2000, las cuales se disolverán para generar una capa que incluya las áreas protegidas independientemente de su figura de protección. Realizando operaciones de diferencia, se generará una capa vectorial con una nueva variable en la que las áreas protegidas tengan un valor 0 y las que no poseen protección un valor igual a 1. Finalmente se procederá a rasterizar la capa.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las diferentes capas ráster obtenidos, se procederá a realizar la operación algebraica antes definida para el análisis multicriterio. Para ello se empleará la Calculadora de Mapas incluida en GRASS, importando previamente los ráster a esta aplicación incluida en QGIS. El diagrama que se deberá programar para obtener el resultado numérico de la expresión matemática será el siguiente:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG_Becares_12.png|marco|centro|Diagrama a programar en la calculadora de mapas]]&lt;br /&gt;
&lt;br /&gt;
Tras realizar esta operación, se obtendrá una capa ráster final que recoge el valor de la variable general normalizada entre 0 y 1 para capa punto del territorio estudiado, donde 0 es un lugar imposible para la implantación, y 1 es el lugar óptimo para la implantación.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
Una vez efectuado el proceso descrito en el anterior epígrafe, se obtienen los siguientes resultados:&lt;br /&gt;
&lt;br /&gt;
=== Radiación solar directa media diaria===&lt;br /&gt;
El potencial de generación de electricidad en estas centrales está relacionado directamente con esta variable que mide la energía que los espejos de la central son capaces de reflejar hacia la torre. Como ya se ha mencionado con anterioridad, la radiación es el parámetro dominante con una ponderación de 0,5. En cuanto a los valores asignados para cada nivel de radiación, se recogen en la siguiente tabla:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Radiación|| &amp;gt;20 || 18.5-20 || 17-18.5 || ≤17&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1|| 0.8|| 0.6|| 0.4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 3.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 4.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Líneas eléctricas ===&lt;br /&gt;
Para la implantación de una central eléctrica, un parámetro relevante a estudiar debe ser la distancia a las grandes infraestructuras de red ya construidas para así poder minimizar el coste derivado de la construcción de dichas líneas. Por ello, se le asigna una ponderación global de 0,2 para el cálculo de la ubicación óptima de la central.&lt;br /&gt;
&lt;br /&gt;
Por otra parte, se establecen los siguientes valores en función de la distancia a las líneas eléctricas:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Radiación|| ≤1 || 1-2 || 2-3|| 3-4 || 4-5 || &amp;gt;5&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1|| 0.8|| 0.6|| 0.4 || 0.2 ||0.1&lt;br /&gt;
|}&lt;br /&gt;
[[Archivo:SIG Becares 5.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Red hidrográfica ===&lt;br /&gt;
En este tipo de centrales son necesarios grandes caudales de agua, por lo que, con el fin de minimizar los costes de construcción, se intentará localizar una ubicación próxima a un cauce de un río para evitar la construcción de grandes tuberías.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ponderación para este criterio es la misma que la establecida para las líneas eléctricas y los valores asignados en función de las distancias son los siguientes:&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Distancia(km)|| ≤1 || 1-2 || 2-3 || &amp;gt;3&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1 || 0.7 || 0.3|| 0.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 6.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Núcleos urbanos===&lt;br /&gt;
La ubicación de una central eléctrica muy próxima a núcleos urbanos podría tener impactos negativos de tipo socioeconómico o paisajístico, además de suponer un mayor coste del terreno. Por ello, en los valores asignados en la tabla priman las localizaciones más lejanas a dichos núcleos. La ponderación total de este factor sobre el total es de 0,1 dada su menor importancia con respecto a los dos anteriores.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Distancia (km)|| ≤0.75 || 0.75-1.5 || &amp;gt;1.5&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 0 || 0.6 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 7.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Espacios protegidos===&lt;br /&gt;
Es inmediato deducir el carácter eliminatorio de este aspecto dada la imposibilidad de construir una central termosolar en un espacio protegido. Por lo que esta variable se introducirá como un factor multiplicador a la ponderación ya realizada, teniendo un valor de 1 (puede construirse) si nos encontramos fuera de una zona protegida, y de 0 (ubicación no permitida) en caso contrario.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 8.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Usos del suelo ===&lt;br /&gt;
Los usos del suelo es un factor determinante para la implantación de la central pues existen zonas con ciertos usos del suelo en los que no se puede construir por diversas razones. En los usos residencial, dotacional, comercial, cultural o zonas de agua, por ejemplo, resulta casi inmediato establecer que no sería posible la construcción de dicha central ya que son actividades asociadas al área urbana y uno de los objetivos es alejarse de estos núcleos para minimizar el impacto. Por otro lado, descartaremos el uso forestal porque requeriría deforestar la parcela para colocar la edificación. Así como también descartaremos las zonas mineras porque el terreno puede estar demasiado deformado y habría que realizar grandes labores de nivelación. En adición, cabe justificar el descarte del uso industrial ya que hace referencia a zonas edificadas con naves y requeriría hacer expropiaciones y demoliciones que pueden ser costosas en términos económicos y temporales.&lt;br /&gt;
&lt;br /&gt;
Por todo lo expuesto anteriormente, este factor actúa como multiplicador, de forma que solo permite la construcción de la central eléctrica en los usos del suelo que se han definido con un 1. Para todos los demás, el valor multiplicador será 0 e imposibilitaría la realización de la obra. Estos usos del suelo definidos como permitidos para la implantación (valor de 1) han sido los usos agrícolas, áreas abandonadas y zonas sin aprovechamiento económico.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 10.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Topografía ===&lt;br /&gt;
Ocurre algo similar que en el caso de las zonas protegidas o usos del suelo, pero en este el motivo es funcional. Para que la incidencia de los rayos del sol se máxima no debe haber un exceso de pendiente ya que se perdería la mayoría de la energía derivada del ángulo de incidencia de los rayos solares. Para la corrección de este aspecto se requeriría un coste de construcción muy elevado que haría inviable la construcción de la misma. Así, en zonas cuya pendiente sea igual o superior al 3% el factor multiplicador valdrá 0 y, en caso contrario (pendiente inferior al 3%) valdrá 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 9.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Resultado final ===&lt;br /&gt;
Tras la realización de los mapas anteriores procedemos a realizar la ponderación ya mencionada durante el proceso quedando de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n=M_{pend}·M_{usos}·M_{ZP}·(0,5·n_{rad}+0,2·n_{elect}+0,2·n_{rios}+0,1·n_{núcleos})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo la siguiente cartografía:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 11.jpeg|1000px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
Según el resultado obtenido en el proceso antes descrito, se han seleccionado 3 posibles ubicaciones, cuyas características son próximas a las idóneas. Las principales características serían las siguientes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  !! Radiación (MJ/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) !! Red eléctrica !! Cauces de ríos !! Núcleos urbanos&lt;br /&gt;
|-&lt;br /&gt;
| Solución 1|| 20.404 || 1000-2000 m || 1000 m || &amp;gt; 1500 m&lt;br /&gt;
|-&lt;br /&gt;
| Solución 2 || 20.308 || &amp;lt;1000 m || 1000 m || &amp;gt; 1500 m&lt;br /&gt;
|-&lt;br /&gt;
| Solución 3 || 20.834 || &amp;lt;1000 m || 1000 m|| 750-1500 m&lt;br /&gt;
|}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dichas ubicaciones se corresponderían en la cartografía anterior con aquellas zonas marcadas en tonos más verdes. Situando dichas soluciones en el mapa, este quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 13.jpeg|800px|centro]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En esta cartografía, se puede destacar el nivel de significancia que adquiere la consideración de los criterios de zonas protegidas, pendientes y usos del suelo, pues imposibilita la construcción de nuestra central termosolar en gran parte del territorio estudiado.&lt;br /&gt;
&lt;br /&gt;
Sin embargo, pese a todas las restricciones impuestas se han encontrado 3 soluciones óptimas, de las cuales, una de ellas es idónea según los criterios determinados, ya que posee un valor normalizado de 1. Dicha ubicación corresponde a la Solución 2, la cual posee una radiación de 20,308 megajulios por metro cuadrado, una distancia a la red eléctrica y a cauces de los ríos menores a un kilómetro y una lejanía de más de kilómetro y medio del núcleo urbano más próximo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;br /&gt;
[[Categoría:SIGAIC_20/21]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Estudio_de_implantaci%C3%B3n_de_una_central_el%C3%A9ctrica_termosolar_en_Andaluc%C3%ADa_oriental&amp;diff=46185</id>
		<title>Estudio de implantación de una central eléctrica termosolar en Andalucía oriental</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Estudio_de_implantaci%C3%B3n_de_una_central_el%C3%A9ctrica_termosolar_en_Andaluc%C3%ADa_oriental&amp;diff=46185"/>
				<updated>2021-05-27T18:30:34Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Metodología */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoSIG | Estudio de implantación de una central eléctrica termosolar en Andalucía oriental | Manuel Bécares Martín&amp;lt;br /&amp;gt;Ignacio Cepeda Bajo&amp;lt;br /&amp;gt;Helena Sánchez Ramos| [[:Categoría:SIGAIC_20/21|Curso 20/21]] }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El objetivo del trabajo es obtener la localización más favorable de una nueva central termosolar en la zona occidental de Andalucía, en base a la elevada radiación solar recibida en este área y la existencia de precedentes favorables. &lt;br /&gt;
&lt;br /&gt;
Para ello, se realiza un análisis multicriterio, comenzando con la elaboración de un mapa de radiación interpolando los datos de estaciones meteorológicas y se pondera de 0 a 1. En segunda instancia, se crea un mapa de pendientes a partir de los MDT de las provincias seleccionadas y se excluyen aquellas zonas con pendientes superiores a un cierto valor. Seguidamente, se crean una serie de zonas de influencia de cercanía a cauces fluviales y líneas eléctricas. A continuación, se excluyen tanto las zonas ambientalmente protegidas como las cercanías a los núcleos de población.&lt;br /&gt;
&lt;br /&gt;
Tras la obtención de estos mapas temáticos, se realiza una intersección de los datos obtenidos, ponderando los valores de cercanía a cauces y líneas y de radiación solar y eliminando aquellas zonas inadmisibles para la situación de la central.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
La obtención de energía eléctrica ha sido un reto para la humanidad desde el descubrimiento de la electricidad.&lt;br /&gt;
Las últimas tendencias en esta línea son la obtención de energías renovables independientes de los recursos finitos existentes en el planeta. Por ello, los últimos años se han hecho numerosas inversiones para potenciar este tipo de energías incidiendo en las centrales hidroeléctricas, centrales solares o centrales termosolares, así como aerogeneradores.&lt;br /&gt;
&lt;br /&gt;
En esta línea, las centrales termosolares están ganando mucha importancia, sobre todo en la península Ibérica donde incide una considerable cantidad de radiación solar. El funcionamiento de estas centrales consiste en el aprovechamiento térmico de la energía solar para transferirla y almacenarla en un medio portador de calor como es el agua. Además, es necesario concentrar la radiación solar para que se puedan alcanzar temperaturas elevadas y obtener así un rendimiento aceptable en el ciclo termodinámico. La captación y concentración de los rayos solares se hace por medio de espejos con orientación automática que apuntan a una torre central donde se calienta el fluido. El conjunto de la superficie reflectante y su dispositivo de orientación se denomina heliostato.&lt;br /&gt;
&lt;br /&gt;
Así, el trabajo presente se centra en establecer una ubicación favorable para una central termosolar en Andalucía. Para ello, hemos realizado una búsqueda de la radiación solar en la zona obteniendo la siguiente figura:&lt;br /&gt;
[[Archivo:SIG_Becares_1.png|600x400px|marco|centro|Radiación global de Andalucía. Mediana diaria anual en kWh/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Este mapa carece de precisión y no será utilizado para el estudio detallado, pero permite hacer una pequeña aproximación sobre la zona en la que nos centraremos. En este caso, estudiaremos la ubicación de la planta en la zona oriental de Andalucía por ser una zona de gran radiación solar. Es cierto que en la zona oriental existe más radiación, pero seleccionamos dicha zona para fomentar el desarrollo en Almería y Granada, ya que son zonas menos desarrolladas que Cádiz, Sevilla y Huelva.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
La metodología seguida para el estudio de una ubicación óptima para el desarrollo de la central eléctrica se basa en la realización de un análisis multicriterio. Este proceso analítico permite realizar una comparativa entre diversas ubicaciones a partir del estudio de diferentes variables o características del territorio, estableciendo dos tipos de variable:&lt;br /&gt;
* '''Características del territorio que influyen sobre la producción y/o el coste de la instalación:''' para estas se establecerán variables continuas normalizadas entre 0 y 1, otorgando un valor a cada punto del terreno en función de su idoneidad (1) o no (0) para la actividad de producción termosolar.&lt;br /&gt;
* '''Características del territorio que muestran la compatibilidad con la instalación de la central:''' estas variables tendrán un valor singular de 0 (incompatible) o 1 (compatible) que multiplicarán a la variable normalizada global para excluir aquellas zonas que no pueden acoger la instalación eléctrica.&lt;br /&gt;
&lt;br /&gt;
En el estudio de ubicación de una central termosolar, se han considerado como parámetros más importantes para su implantación:&lt;br /&gt;
	&lt;br /&gt;
* '''Radiación solar directa media:''' el potencial de generación eléctrica depende fundamentalmente de esta variable, puesto que es la que mide la energía solar que los espejos de la central son capaces de reflejar hacia la torre o núcleo. Los datos empleados serán los obtenidos de la base de datos de la radiación solar de Andalucía de la Agencia Andaluza de la Energía, que recoge las mediciones y las coordenadas de las estaciones meteorológicas de la Red de Información Agroclimática de Andalucía, la cual está compuesta por 94 estaciones repartidas por el territorio andaluz.&lt;br /&gt;
* '''Pendiente del terreno:''' con el fin de maximizar la incidencia del Sol y facilitar la orientación de los espejos que conforman el sistema hacia la torre, se limitará los terrenos válidos para la implantación a aquellos con una pendiente menor al 3%. Para su obtención, se empleará como datos de partida del modelo digital del terreno MDT25 del Instituto Geográfico Nacional (IGN).	&lt;br /&gt;
* '''Distancia a líneas eléctricas:''' al ser una central que genera una gran potencia eléctrica, es importante que se ubique en proximidades de las grandes líneas de distribución repartidas por el territorio nacional, pues se evitará la realización de nuevas grandes líneas, que tendrán gran impacto en el coste de construcción de la central. Esta información se obtendrá de la base topográfica BTN25 del IGN.&lt;br /&gt;
* '''Distancia a cauces fluviales:''' el agua es fundamental en este tipo de centrales: tanto como fluido empleado para almacenar la energía térmica generada con la radiación solar, como fluido que se evapora y que se encarga de mover el generador que producirá la energía eléctrica. Por estos motivos, resultan interesantes cauces importantes con un caudal de agua estable a lo largo del año de agua, así como localizaciones cercanas a estos con el fin de reducir el coste de construcción de las conducciones que llevan el agua hasta la central. Esta información se obtendrá también de la base topográfica BTN25 del IGN, filtrándose los ríos de categoría 1, 2 y 3 recogidos en la variable tipo_tramo, con los valores 4001, 4002 y 4003.&lt;br /&gt;
*'''Espacios protegidos:''' el gran impacto que producen estas centrales sobre el paisaje, la fauna y la flora, podría afectar de forma irreversible a las áreas protegidas, por lo que estas se excluirán del análisis de ubicaciones. Las capas vectoriales que recogen los espacios protegidos incluidos en la Red Natura 2000 se ha obtenido del Banco de Datos de la Naturaleza del Ministerio para la Transición Ecológica y el Reto Demográfico (MITECO).&lt;br /&gt;
* '''Núcleos urbanos:''' la importancia de localizar las centrales alejadas de los núcleos urbanos se debe a su importante impacto visual sobre estos, así como por el coste más elevado que tendrá los terrenos próximos a los núcleos, frente a terrenos más alejados con un coste más reducido. Esta información se obtendrá de la capa de Núcleos de población incluida en la Información Geográfica de Referencia del IGN.&lt;br /&gt;
*'''Usos del suelo:''' es importante conocer los usos del suelo para excluir aquellos cuya actividad o edificación sería incompatible con la implantación de la central. La capa de usos del suelo empleada es la de la base de datos de ocupación del suelo en España del programa SIOSE del IGN.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG_Becares_2.jpeg|1000px|centro]]&lt;br /&gt;
&lt;br /&gt;
Una vez obtenidas las variables normalizadas para cada uno de estos parámetros, se establecerá un peso de relevancia a cada una de las variables continuas estudiadas en relación a su importancia en el proyecto. Posteriormente se aplicarán los multiplicadores de compatibilidad, que anularán el valor de la variable normalizada en aquellos puntos incompatibles con la instalación de la central. La expresión matemática que regirá el proceso es la siguiente:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n=M_{pend}·M_{usos}·M_{EP}·(p_1·n_{rad}+p_2·n_{elect}+p_3·n_{rios}+p_4·n_{núcleos})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;p_i&amp;lt;/math&amp;gt;	pesos de las variables continuas&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{rad}&amp;lt;/math&amp;gt;	variable normalizada de la radiación solar &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{elect}&amp;lt;/math&amp;gt;	variable normalizada de la distancia a las líneas eléctricas&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{rios}&amp;lt;/math&amp;gt;	variable normalizada de la distancia a los cursos fluviales&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{núcleos}&amp;lt;/math&amp;gt;	variable normalizada de la proximidad a los núcleos urbanos&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{EP}&amp;lt;/math&amp;gt;	multiplicador de espacios protegidos&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{usos}&amp;lt;/math&amp;gt;	multiplicador de usos del suelo&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{pend}&amp;lt;/math&amp;gt;	multiplicador de pendiente del terreno&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desde el punto de vista de aplicación SIG, esta metodología se desarrollará generando capas ráster para cada una de las variables y de los multiplicadores. Para obtener estas capas, en el caso de factores dependientes de la distancia a entidades como núcleos urbanos, líneas eléctricas o cauces fluviales (capas vectoriales), se empleará la herramienta buffer para establecer áreas de influencia en torno a los elementos poligonales en función de los rangos de distancia para los diferentes valores de las variables Ni. Una vez generada una capa vectorial con regiones poligonales, para las que se crea una variable numérica que recoja su valor de la variable normalizada para esa característica, se procederá a rasterizar la capa mediante GRASS generando un ráster con elementos cuadrados de 150 metros de lado.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de la radiación, se parte de una serie de valores numéricos los cuales se recogen en una tabla de Excel. Así mismo, se generará una capa de puntos con la posición de las estaciones de medición de radiación solar. Se procederá a la unión de la capa vectorial de puntos con la tabla a través del atributo NUM que otorga un valor numérico entero a cada estación, que sirve como identificador de las estaciones. Con la capa de puntos con los valores de radiación enlazados, se realiza una Interpolación IDW, la cual se basa en la distancia inversa ponderada (IDW), distancia matemática (determinista) que asume que los valores más cercanos están más relacionados que otros con su función o variable. Con este procedimiento, se obtiene un ráster que recoge un valor de la radiación para cada elemento de una cuadricula de lado 150 metros. Este ráster se reclasificará con un archivo .txt que recogerá las reglas de la reclasificación para la obtención del ráster con valores de la variable normalizada. Su estructura será la siguiente:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
0 thru 17 = 7&lt;br /&gt;
17 thru 18.5 = 8&lt;br /&gt;
18.5 thru 20 = 9&lt;br /&gt;
* = 10&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Debido a las características de la función, se obtendrá un ráster entre 0 y 10, por lo que este ráster a la hora de obtener la variable global normalizada, deberá dividirse sus valores por 10 para que la variable sea normalizada entre 0 y 1.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el caso de los multiplicadores, para el caso de las pendientes, se parte del modelo digital del terreno MDT25 del IGN para el área de estudio. Combinando las hojas incluidas en el área, se crea un mapa de pendientes, que conforma un ráster con el valor de la pendiente en tanto por ciento. Este ráster se reclasificará asignando un valor 1 a las celdas con un valor menor o igual al 3%, y un valor 0 para el resto de las celdas.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de los usos del suelo, se partirá de la capa vectorial del SIOSE. Se creará una variable que asignará valor 1 para los suelos con usos agrícolas y sin aprovechamiento económico, o un valor 0 para el resto de los usos. Se rasterizará esta capa en base a esta variable generada.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de las zonas protegidas, se partirá de las capas vectoriales de la Red Natura 2000, las cuales se disolverán para generar una capa que incluya las áreas protegidas independientemente de su figura de protección. Realizando operaciones de diferencia, se generará una capa vectorial con una nueva variable en la que las áreas protegidas tengan un valor 0 y las que no poseen protección un valor igual a 1. Finalmente se procederá a rasterizar la capa.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las diferentes capas ráster obtenidos, se procederá a realizar la operación algebraica antes definida para el análisis multicriterio. Para ello se empleará la Calculadora de Mapas incluida en GRASS, importando previamente los ráster a esta aplicación incluida en QGIS. El diagrama que se deberá programar para obtener el resultado numérico de la expresión matemática será el siguiente:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG_Becares_12.png|marco|centro|Diagrama a programar en la calculadora de mapas]]&lt;br /&gt;
&lt;br /&gt;
Tras realizar esta operación, se obtendrá una capa ráster final que recoge el valor de la variable general normalizada entre 0 y 1 para capa punto del territorio estudiado, donde 0 es un lugar imposible para la implantación, y 1 es el lugar óptimo para la implantación.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
Una vez efectuado el proceso descrito en el anterior epígrafe, se obtienen los siguientes resultados:&lt;br /&gt;
&lt;br /&gt;
=== Radiación solar directa media diaria===&lt;br /&gt;
El potencial de generación de electricidad en estas centrales está relacionado directamente con esta variable que mide la energía que los espejos de la central son capaces de reflejar hacia la torre. Como ya se ha mencionado con anterioridad, la radiación es el parámetro dominante con una ponderación de 0,5. En cuanto a los valores asignados para cada nivel de radiación, se recogen en la siguiente tabla:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Radiación|| &amp;gt;20 || 18.5-20 || 17-18.5 || ≤17&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1|| 0.8|| 0.6|| 0.4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 3.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 4.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Líneas eléctricas ===&lt;br /&gt;
Para la implantación de una central eléctrica, un parámetro relevante a estudiar debe ser la distancia a las grandes infraestructuras de red ya construidas para así poder minimizar el coste derivado de la construcción de dichas líneas. Por ello, se le asigna una ponderación global de 0,2 para el cálculo de la ubicación óptima de la central.&lt;br /&gt;
&lt;br /&gt;
Por otra parte, se establecen los siguientes valores en función de la distancia a las líneas eléctricas:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Radiación|| ≤1 || 1-2 || 2-3|| 3-4 || 4-5 || &amp;gt;5&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1|| 0.8|| 0.6|| 0.4 || 0.2 ||0.1&lt;br /&gt;
|}&lt;br /&gt;
[[Archivo:SIG Becares 5.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Red hidrográfica ===&lt;br /&gt;
En este tipo de centrales son necesarios grandes caudales de agua, por lo que, con el fin de minimizar los costes de construcción, se intentará localizar una ubicación próxima a un cauce de un río para evitar la construcción de grandes tuberías.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ponderación para este criterio es la misma que la establecida para las líneas eléctricas y los valores asignados en función de las distancias son los siguientes:&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Distancia(km)|| ≤1 || 1-2 || 2-3 || &amp;gt;3&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1 || 0.7 || 0.3|| 0.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 6.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Núcleos urbanos===&lt;br /&gt;
La ubicación de una central eléctrica muy próxima a núcleos urbanos podría tener impactos negativos de tipo socioeconómico o paisajístico, además de suponer un mayor coste del terreno. Por ello, en los valores asignados en la tabla priman las localizaciones más lejanas a dichos núcleos. La ponderación total de este factor sobre el total es de 0,1 dada su menor importancia con respecto a los dos anteriores.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Distancia (km)|| ≤0.75 || 0.75-1.5 || &amp;gt;1.5&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 0 || 0.6 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 7.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Espacios protegidos===&lt;br /&gt;
Es inmediato deducir el carácter eliminatorio de este aspecto dada la imposibilidad de construir una central termosolar en un espacio protegido. Por lo que esta variable se introducirá como un factor multiplicador a la ponderación ya realizada, teniendo un valor de 1 (puede construirse) si nos encontramos fuera de una zona protegida, y de 0 (ubicación no permitida) en caso contrario.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 8.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Usos del suelo ===&lt;br /&gt;
Los usos del suelo es un factor determinante para la implantación de la central pues existen zonas con ciertos usos del suelo en los que no se puede construir por diversas razones. En los usos residencial, dotacional, comercial, cultural o zonas de agua, por ejemplo, resulta casi inmediato establecer que no sería posible la construcción de dicha central ya que son actividades asociadas al área urbana y uno de los objetivos es alejarse de estos núcleos para minimizar el impacto. Por otro lado, descartaremos el uso forestal porque requeriría deforestar la parcela para colocar la edificación. Así como también descartaremos las zonas mineras porque el terreno puede estar demasiado deformado y habría que realizar grandes labores de nivelación. En adición, cabe justificar el descarte del uso industrial ya que hace referencia a zonas edificadas con naves y requeriría hacer expropiaciones y demoliciones que pueden ser costosas en términos económicos y temporales.&lt;br /&gt;
&lt;br /&gt;
Por todo lo expuesto anteriormente, este factor actúa como multiplicador, de forma que solo permite la construcción de la central eléctrica en los usos del suelo que se han definido con un 1. Para todos los demás, el valor multiplicador será 0 e imposibilitaría la realización de la obra. Estos usos del suelo definidos como permitidos para la implantación (valor de 1) han sido los usos agrícolas, áreas abandonadas y zonas sin aprovechamiento económico.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 10.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Topografía ===&lt;br /&gt;
Ocurre algo similar que en el caso de las zonas protegidas o usos del suelo, pero en este el motivo es funcional. Para que la incidencia de los rayos del sol se máxima no debe haber un exceso de pendiente ya que se perdería la mayoría de la energía derivada del ángulo de incidencia de los rayos solares. Para la corrección de este aspecto se requeriría un coste de construcción muy elevado que haría inviable la construcción de la misma. Así, en zonas cuya pendiente sea igual o superior al 3% el factor multiplicador valdrá 0 y, en caso contrario (pendiente inferior al 3%) valdrá 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 9.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Resultado final ===&lt;br /&gt;
Tras la realización de los mapas anteriores procedemos a realizar la ponderación ya mencionada durante el proceso quedando de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n=M_{pend}·M_{usos}·M_{ZP}·(0,5·n_{rad}+0,2·n_{elect}+0,2·n_{rios}+0,1·n_{núcleos})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo la siguiente cartografía:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 11.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
Según el resultado obtenido en el proceso antes descrito, se han seleccionado 3 posibles ubicaciones, cuyas características son próximas a las idóneas. Las principales características serían las siguientes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  !! Radiación (MJ/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) !! Red eléctrica !! Cauces de ríos !! Núcleos urbanos&lt;br /&gt;
|-&lt;br /&gt;
| Solución 1|| 20.404 || 1000-2000 m || 1000 m || &amp;gt; 1500 m&lt;br /&gt;
|-&lt;br /&gt;
| Solución 2 || 20.308 || &amp;lt;1000 m || 1000 m || &amp;gt; 1500 m&lt;br /&gt;
|-&lt;br /&gt;
| Solución 3 || 20.834 || &amp;lt;1000 m || 1000 m|| 750-1500 m&lt;br /&gt;
|}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dichas ubicaciones se corresponderían en la cartografía anterior con aquellas zonas marcadas en tonos más verdes. Situando dichas soluciones en el mapa, este quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 13.jpeg|800px|centro]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En esta cartografía, se puede destacar el nivel de significancia que adquiere la consideración de los criterios de zonas protegidas, pendientes y usos del suelo, pues imposibilita la construcción de nuestra central termosolar en gran parte del territorio estudiado.&lt;br /&gt;
&lt;br /&gt;
Sin embargo, pese a todas las restricciones impuestas se han encontrado 3 soluciones óptimas, de las cuales, una de ellas es idónea según los criterios determinados, ya que posee un valor normalizado de 1. Dicha ubicación corresponde a la Solución 2, la cual posee una radiación de 20,308 megajulios por metro cuadrado, una distancia a la red eléctrica y a cauces de los ríos menores a un kilómetro y una lejanía de más de kilómetro y medio del núcleo urbano más próximo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;br /&gt;
[[Categoría:SIGAIC_20/21]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Estudio_de_implantaci%C3%B3n_de_una_central_el%C3%A9ctrica_termosolar_en_Andaluc%C3%ADa_oriental&amp;diff=46184</id>
		<title>Estudio de implantación de una central eléctrica termosolar en Andalucía oriental</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Estudio_de_implantaci%C3%B3n_de_una_central_el%C3%A9ctrica_termosolar_en_Andaluc%C3%ADa_oriental&amp;diff=46184"/>
				<updated>2021-05-27T18:23:54Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Resultados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoSIG | Estudio de implantación de una central eléctrica termosolar en Andalucía oriental | Manuel Bécares Martín&amp;lt;br /&amp;gt;Ignacio Cepeda Bajo&amp;lt;br /&amp;gt;Helena Sánchez Ramos| [[:Categoría:SIGAIC_20/21|Curso 20/21]] }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El objetivo del trabajo es obtener la localización más favorable de una nueva central termosolar en la zona occidental de Andalucía, en base a la elevada radiación solar recibida en este área y la existencia de precedentes favorables. &lt;br /&gt;
&lt;br /&gt;
Para ello, se realiza un análisis multicriterio, comenzando con la elaboración de un mapa de radiación interpolando los datos de estaciones meteorológicas y se pondera de 0 a 1. En segunda instancia, se crea un mapa de pendientes a partir de los MDT de las provincias seleccionadas y se excluyen aquellas zonas con pendientes superiores a un cierto valor. Seguidamente, se crean una serie de zonas de influencia de cercanía a cauces fluviales y líneas eléctricas. A continuación, se excluyen tanto las zonas ambientalmente protegidas como las cercanías a los núcleos de población.&lt;br /&gt;
&lt;br /&gt;
Tras la obtención de estos mapas temáticos, se realiza una intersección de los datos obtenidos, ponderando los valores de cercanía a cauces y líneas y de radiación solar y eliminando aquellas zonas inadmisibles para la situación de la central.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
La obtención de energía eléctrica ha sido un reto para la humanidad desde el descubrimiento de la electricidad.&lt;br /&gt;
Las últimas tendencias en esta línea son la obtención de energías renovables independientes de los recursos finitos existentes en el planeta. Por ello, los últimos años se han hecho numerosas inversiones para potenciar este tipo de energías incidiendo en las centrales hidroeléctricas, centrales solares o centrales termosolares, así como aerogeneradores.&lt;br /&gt;
&lt;br /&gt;
En esta línea, las centrales termosolares están ganando mucha importancia, sobre todo en la península Ibérica donde incide una considerable cantidad de radiación solar. El funcionamiento de estas centrales consiste en el aprovechamiento térmico de la energía solar para transferirla y almacenarla en un medio portador de calor como es el agua. Además, es necesario concentrar la radiación solar para que se puedan alcanzar temperaturas elevadas y obtener así un rendimiento aceptable en el ciclo termodinámico. La captación y concentración de los rayos solares se hace por medio de espejos con orientación automática que apuntan a una torre central donde se calienta el fluido. El conjunto de la superficie reflectante y su dispositivo de orientación se denomina heliostato.&lt;br /&gt;
&lt;br /&gt;
Así, el trabajo presente se centra en establecer una ubicación favorable para una central termosolar en Andalucía. Para ello, hemos realizado una búsqueda de la radiación solar en la zona obteniendo la siguiente figura:&lt;br /&gt;
[[Archivo:SIG_Becares_1.png|600x400px|marco|centro|Radiación global de Andalucía. Mediana diaria anual en kWh/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Este mapa carece de precisión y no será utilizado para el estudio detallado, pero permite hacer una pequeña aproximación sobre la zona en la que nos centraremos. En este caso, estudiaremos la ubicación de la planta en la zona oriental de Andalucía por ser una zona de gran radiación solar. Es cierto que en la zona oriental existe más radiación, pero seleccionamos dicha zona para fomentar el desarrollo en Almería y Granada, ya que son zonas menos desarrolladas que Cádiz, Sevilla y Huelva.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
La metodología seguida para el estudio de una ubicación óptima para el desarrollo de la central eléctrica se basa en la realización de un análisis multicriterio. Este proceso analítico permite realizar una comparativa entre diversas ubicaciones a partir del estudio de diferentes variables o características del territorio, estableciendo dos tipos de variable:&lt;br /&gt;
* '''Características del territorio que influyen sobre la producción y/o el coste de la instalación:''' para estas se establecerán variables continuas normalizadas entre 0 y 1, otorgando un valor a cada punto del terreno en función de su idoneidad (1) o no (0) para la actividad de producción termosolar.&lt;br /&gt;
* '''Características del territorio que muestran la compatibilidad con la instalación de la central:''' estas variables tendrán un valor singular de 0 (incompatible) o 1 (compatible) que multiplicarán a la variable normalizada global para excluir aquellas zonas que no pueden acoger la instalación eléctrica.&lt;br /&gt;
&lt;br /&gt;
En el estudio de ubicación de una central termosolar, se han considerado como parámetros más importantes para su implantación:&lt;br /&gt;
	&lt;br /&gt;
* '''Radiación solar directa media:''' el potencial de generación eléctrica depende fundamentalmente de esta variable, puesto que es la que mide la energía solar que los espejos de la central son capaces de reflejar hacia la torre o núcleo. Los datos empleados serán los obtenidos de la base de datos de la radiación solar de Andalucía de la Agencia Andaluza de la Energía, que recoge las mediciones y las coordenadas de las estaciones meteorológicas de la Red de Información Agroclimática de Andalucía, la cual está compuesta por 94 estaciones repartidas por el territorio andaluz.&lt;br /&gt;
* '''Pendiente del terreno:''' con el fin de maximizar la incidencia del Sol y facilitar la orientación de los espejos que conforman el sistema hacia la torre, se limitará los terrenos válidos para la implantación a aquellos con una pendiente menor al 3%. Para su obtención, se empleará como datos de partida del modelo digital del terreno MDT25 del Instituto Geográfico Nacional (IGN).	&lt;br /&gt;
* '''Distancia a líneas eléctricas:''' al ser una central que genera una gran potencia eléctrica, es importante que se ubique en proximidades de las grandes líneas de distribución repartidas por el territorio nacional, pues se evitará la realización de nuevas grandes líneas, que tendrán gran impacto en el coste de construcción de la central. Esta información se obtendrá de la base topográfica BTN25 del IGN.&lt;br /&gt;
* '''Distancia a cauces fluviales:''' el agua es fundamental en este tipo de centrales: tanto como fluido empleado para almacenar la energía térmica generada con la radiación solar, como fluido que se evapora y que se encarga de mover el generador que producirá la energía eléctrica. Por estos motivos, resultan interesantes cauces importantes con un caudal de agua estable a lo largo del año de agua, así como localizaciones cercanas a estos con el fin de reducir el coste de construcción de las conducciones que llevan el agua hasta la central. Esta información se obtendrá también de la base topográfica BTN25 del IGN, filtrándose los ríos de categoría 1, 2 y 3 recogidos en la variable tipo_tramo, con los valores 4001, 4002 y 4003.&lt;br /&gt;
*'''Espacios protegidos:''' el gran impacto que producen estas centrales sobre el paisaje, la fauna y la flora, podría afectar de forma irreversible a las áreas protegidas, por lo que estas se excluirán del análisis de ubicaciones. Las capas vectoriales que recogen los espacios protegidos incluidos en la Red Natura 2000 se ha obtenido del Banco de Datos de la Naturaleza del Ministerio para la Transición Ecológica y el Reto Demográfico (MITECO).&lt;br /&gt;
* '''Núcleos urbanos:''' la importancia de localizar las centrales alejadas de los núcleos urbanos se debe a su importante impacto visual sobre estos, así como por el coste más elevado que tendrá los terrenos próximos a los núcleos, frente a terrenos más alejados con un coste más reducido. Esta información se obtendrá de la capa de Núcleos de población incluida en la Información Geográfica de Referencia del IGN.&lt;br /&gt;
*'''Usos del suelo:''' es importante conocer los usos del suelo para excluir aquellos cuya actividad o edificación sería incompatible con la implantación de la central. La capa de usos del suelo empleada es la de la base de datos de ocupación del suelo en España del programa SIOSE del IGN.&lt;br /&gt;
&lt;br /&gt;
Una vez obtenidas las variables normalizadas para cada uno de estos parámetros, se establecerá un peso de relevancia a cada una de las variables continuas estudiadas en relación a su importancia en el proyecto. Posteriormente se aplicarán los multiplicadores de compatibilidad, que anularán el valor de la variable normalizada en aquellos puntos incompatibles con la instalación de la central. La expresión matemática que regirá el proceso es la siguiente:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n=M_{pend}·M_{usos}·M_{EP}·(p_1·n_{rad}+p_2·n_{elect}+p_3·n_{rios}+p_4·n_{núcleos})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
donde:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;p_i&amp;lt;/math&amp;gt;	pesos de las variables continuas&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{rad}&amp;lt;/math&amp;gt;	variable normalizada de la radiación solar &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{elect}&amp;lt;/math&amp;gt;	variable normalizada de la distancia a las líneas eléctricas&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{rios}&amp;lt;/math&amp;gt;	variable normalizada de la distancia a los cursos fluviales&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{núcleos}&amp;lt;/math&amp;gt;	variable normalizada de la proximidad a los núcleos urbanos&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{EP}&amp;lt;/math&amp;gt;	multiplicador de espacios protegidos&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{usos}&amp;lt;/math&amp;gt;	multiplicador de usos del suelo&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{pend}&amp;lt;/math&amp;gt;	multiplicador de pendiente del terreno&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desde el punto de vista de aplicación SIG, esta metodología se desarrollará generando capas ráster para cada una de las variables y de los multiplicadores. Para obtener estas capas, en el caso de factores dependientes de la distancia a entidades como núcleos urbanos, líneas eléctricas o cauces fluviales (capas vectoriales), se empleará la herramienta buffer para establecer áreas de influencia en torno a los elementos poligonales en función de los rangos de distancia para los diferentes valores de las variables Ni. Una vez generada una capa vectorial con regiones poligonales, para las que se crea una variable numérica que recoja su valor de la variable normalizada para esa característica, se procederá a rasterizar la capa mediante GRASS generando un ráster con elementos cuadrados de 150 metros de lado.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de la radiación, se parte de una serie de valores numéricos los cuales se recogen en una tabla de Excel. Así mismo, se generará una capa de puntos con la posición de las estaciones de medición de radiación solar. Se procederá a la unión de la capa vectorial de puntos con la tabla a través del atributo NUM que otorga un valor numérico entero a cada estación, que sirve como identificador de las estaciones. Con la capa de puntos con los valores de radiación enlazados, se realiza una Interpolación IDW, la cual se basa en la distancia inversa ponderada (IDW), distancia matemática (determinista) que asume que los valores más cercanos están más relacionados que otros con su función o variable. Con este procedimiento, se obtiene un ráster que recoge un valor de la radiación para cada elemento de una cuadricula de lado 150 metros. Este ráster se reclasificará con un archivo .txt que recogerá las reglas de la reclasificación para la obtención del ráster con valores de la variable normalizada. Su estructura será la siguiente:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
0 thru 17 = 7&lt;br /&gt;
17 thru 18.5 = 8&lt;br /&gt;
18.5 thru 20 = 9&lt;br /&gt;
* = 10&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Debido a las características de la función, se obtendrá un ráster entre 0 y 10, por lo que este ráster a la hora de obtener la variable global normalizada, deberá dividirse sus valores por 10 para que la variable sea normalizada entre 0 y 1.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el caso de los multiplicadores, para el caso de las pendientes, se parte del modelo digital del terreno MDT25 del IGN para el área de estudio. Combinando las hojas incluidas en el área, se crea un mapa de pendientes, que conforma un ráster con el valor de la pendiente en tanto por ciento. Este ráster se reclasificará asignando un valor 1 a las celdas con un valor menor o igual al 3%, y un valor 0 para el resto de las celdas.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de los usos del suelo, se partirá de la capa vectorial del SIOSE. Se creará una variable que asignará valor 1 para los suelos con usos agrícolas y sin aprovechamiento económico, o un valor 0 para el resto de los usos. Se rasterizará esta capa en base a esta variable generada.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de las zonas protegidas, se partirá de las capas vectoriales de la Red Natura 2000, las cuales se disolverán para generar una capa que incluya las áreas protegidas independientemente de su figura de protección. Realizando operaciones de diferencia, se generará una capa vectorial con una nueva variable en la que las áreas protegidas tengan un valor 0 y las que no poseen protección un valor igual a 1. Finalmente se procederá a rasterizar la capa.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las diferentes capas ráster obtenidos, se procederá a realizar la operación algebraica antes definida para el análisis multicriterio. Para ello se empleará la Calculadora de Mapas incluida en GRASS, importando previamente los ráster a esta aplicación incluida en QGIS. El diagrama que se deberá programar para obtener el resultado numérico de la expresión matemática será el siguiente:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG_Becares_12.png|marco|centro|Diagrama a programar en la calculadora de mapas]]&lt;br /&gt;
&lt;br /&gt;
Tras realizar esta operación, se obtendrá una capa ráster final que recoge el valor de la variable general normalizada entre 0 y 1 para capa punto del territorio estudiado, donde 0 es un lugar imposible para la implantación, y 1 es el lugar óptimo para la implantación.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
Una vez efectuado el proceso descrito en el anterior epígrafe, se obtienen los siguientes resultados:&lt;br /&gt;
&lt;br /&gt;
=== Radiación solar directa media diaria===&lt;br /&gt;
El potencial de generación de electricidad en estas centrales está relacionado directamente con esta variable que mide la energía que los espejos de la central son capaces de reflejar hacia la torre. Como ya se ha mencionado con anterioridad, la radiación es el parámetro dominante con una ponderación de 0,5. En cuanto a los valores asignados para cada nivel de radiación, se recogen en la siguiente tabla:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Radiación|| &amp;gt;20 || 18.5-20 || 17-18.5 || ≤17&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1|| 0.8|| 0.6|| 0.4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 3.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 4.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Líneas eléctricas ===&lt;br /&gt;
Para la implantación de una central eléctrica, un parámetro relevante a estudiar debe ser la distancia a las grandes infraestructuras de red ya construidas para así poder minimizar el coste derivado de la construcción de dichas líneas. Por ello, se le asigna una ponderación global de 0,2 para el cálculo de la ubicación óptima de la central.&lt;br /&gt;
&lt;br /&gt;
Por otra parte, se establecen los siguientes valores en función de la distancia a las líneas eléctricas:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Radiación|| ≤1 || 1-2 || 2-3|| 3-4 || 4-5 || &amp;gt;5&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1|| 0.8|| 0.6|| 0.4 || 0.2 ||0.1&lt;br /&gt;
|}&lt;br /&gt;
[[Archivo:SIG Becares 5.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Red hidrográfica ===&lt;br /&gt;
En este tipo de centrales son necesarios grandes caudales de agua, por lo que, con el fin de minimizar los costes de construcción, se intentará localizar una ubicación próxima a un cauce de un río para evitar la construcción de grandes tuberías.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ponderación para este criterio es la misma que la establecida para las líneas eléctricas y los valores asignados en función de las distancias son los siguientes:&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Distancia(km)|| ≤1 || 1-2 || 2-3 || &amp;gt;3&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1 || 0.7 || 0.3|| 0.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 6.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Núcleos urbanos===&lt;br /&gt;
La ubicación de una central eléctrica muy próxima a núcleos urbanos podría tener impactos negativos de tipo socioeconómico o paisajístico, además de suponer un mayor coste del terreno. Por ello, en los valores asignados en la tabla priman las localizaciones más lejanas a dichos núcleos. La ponderación total de este factor sobre el total es de 0,1 dada su menor importancia con respecto a los dos anteriores.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Distancia (km)|| ≤0.75 || 0.75-1.5 || &amp;gt;1.5&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 0 || 0.6 || 1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 7.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Espacios protegidos===&lt;br /&gt;
Es inmediato deducir el carácter eliminatorio de este aspecto dada la imposibilidad de construir una central termosolar en un espacio protegido. Por lo que esta variable se introducirá como un factor multiplicador a la ponderación ya realizada, teniendo un valor de 1 (puede construirse) si nos encontramos fuera de una zona protegida, y de 0 (ubicación no permitida) en caso contrario.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 8.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Usos del suelo ===&lt;br /&gt;
Los usos del suelo es un factor determinante para la implantación de la central pues existen zonas con ciertos usos del suelo en los que no se puede construir por diversas razones. En los usos residencial, dotacional, comercial, cultural o zonas de agua, por ejemplo, resulta casi inmediato establecer que no sería posible la construcción de dicha central ya que son actividades asociadas al área urbana y uno de los objetivos es alejarse de estos núcleos para minimizar el impacto. Por otro lado, descartaremos el uso forestal porque requeriría deforestar la parcela para colocar la edificación. Así como también descartaremos las zonas mineras porque el terreno puede estar demasiado deformado y habría que realizar grandes labores de nivelación. En adición, cabe justificar el descarte del uso industrial ya que hace referencia a zonas edificadas con naves y requeriría hacer expropiaciones y demoliciones que pueden ser costosas en términos económicos y temporales.&lt;br /&gt;
&lt;br /&gt;
Por todo lo expuesto anteriormente, este factor actúa como multiplicador, de forma que solo permite la construcción de la central eléctrica en los usos del suelo que se han definido con un 1. Para todos los demás, el valor multiplicador será 0 e imposibilitaría la realización de la obra. Estos usos del suelo definidos como permitidos para la implantación (valor de 1) han sido los usos agrícolas, áreas abandonadas y zonas sin aprovechamiento económico.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 10.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Topografía ===&lt;br /&gt;
Ocurre algo similar que en el caso de las zonas protegidas o usos del suelo, pero en este el motivo es funcional. Para que la incidencia de los rayos del sol se máxima no debe haber un exceso de pendiente ya que se perdería la mayoría de la energía derivada del ángulo de incidencia de los rayos solares. Para la corrección de este aspecto se requeriría un coste de construcción muy elevado que haría inviable la construcción de la misma. Así, en zonas cuya pendiente sea igual o superior al 3% el factor multiplicador valdrá 0 y, en caso contrario (pendiente inferior al 3%) valdrá 1.&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 9.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Resultado final ===&lt;br /&gt;
Tras la realización de los mapas anteriores procedemos a realizar la ponderación ya mencionada durante el proceso quedando de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n=M_{pend}·M_{usos}·M_{ZP}·(0,5·n_{rad}+0,2·n_{elect}+0,2·n_{rios}+0,1·n_{núcleos})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo la siguiente cartografía:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 11.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
Según el resultado obtenido en el proceso antes descrito, se han seleccionado 3 posibles ubicaciones, cuyas características son próximas a las idóneas. Las principales características serían las siguientes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  !! Radiación (MJ/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) !! Red eléctrica !! Cauces de ríos !! Núcleos urbanos&lt;br /&gt;
|-&lt;br /&gt;
| Solución 1|| 20.404 || 1000-2000 m || 1000 m || &amp;gt; 1500 m&lt;br /&gt;
|-&lt;br /&gt;
| Solución 2 || 20.308 || &amp;lt;1000 m || 1000 m || &amp;gt; 1500 m&lt;br /&gt;
|-&lt;br /&gt;
| Solución 3 || 20.834 || &amp;lt;1000 m || 1000 m|| 750-1500 m&lt;br /&gt;
|}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dichas ubicaciones se corresponderían en la cartografía anterior con aquellas zonas marcadas en tonos más verdes. Situando dichas soluciones en el mapa, este quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 13.jpeg|800px|centro]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En esta cartografía, se puede destacar el nivel de significancia que adquiere la consideración de los criterios de zonas protegidas, pendientes y usos del suelo, pues imposibilita la construcción de nuestra central termosolar en gran parte del territorio estudiado.&lt;br /&gt;
&lt;br /&gt;
Sin embargo, pese a todas las restricciones impuestas se han encontrado 3 soluciones óptimas, de las cuales, una de ellas es idónea según los criterios determinados, ya que posee un valor normalizado de 1. Dicha ubicación corresponde a la Solución 2, la cual posee una radiación de 20,308 megajulios por metro cuadrado, una distancia a la red eléctrica y a cauces de los ríos menores a un kilómetro y una lejanía de más de kilómetro y medio del núcleo urbano más próximo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;br /&gt;
[[Categoría:SIGAIC_20/21]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Estudio_de_implantaci%C3%B3n_de_una_central_el%C3%A9ctrica_termosolar_en_Andaluc%C3%ADa_oriental&amp;diff=46183</id>
		<title>Estudio de implantación de una central eléctrica termosolar en Andalucía oriental</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Estudio_de_implantaci%C3%B3n_de_una_central_el%C3%A9ctrica_termosolar_en_Andaluc%C3%ADa_oriental&amp;diff=46183"/>
				<updated>2021-05-27T18:19:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;br /&gt;
{{ TrabajoSIG | Estudio de implantación de una central eléctrica termosolar en Andalucía oriental | Manuel Bécares Martín&amp;lt;br /&amp;gt;Ignacio Cepeda Bajo&amp;lt;br /&amp;gt;Helena Sánchez Ramos| [[:Categoría:SIGAIC_20/21|Curso 20/21]] }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
El objetivo del trabajo es obtener la localización más favorable de una nueva central termosolar en la zona occidental de Andalucía, en base a la elevada radiación solar recibida en este área y la existencia de precedentes favorables. &lt;br /&gt;
&lt;br /&gt;
Para ello, se realiza un análisis multicriterio, comenzando con la elaboración de un mapa de radiación interpolando los datos de estaciones meteorológicas y se pondera de 0 a 1. En segunda instancia, se crea un mapa de pendientes a partir de los MDT de las provincias seleccionadas y se excluyen aquellas zonas con pendientes superiores a un cierto valor. Seguidamente, se crean una serie de zonas de influencia de cercanía a cauces fluviales y líneas eléctricas. A continuación, se excluyen tanto las zonas ambientalmente protegidas como las cercanías a los núcleos de población.&lt;br /&gt;
&lt;br /&gt;
Tras la obtención de estos mapas temáticos, se realiza una intersección de los datos obtenidos, ponderando los valores de cercanía a cauces y líneas y de radiación solar y eliminando aquellas zonas inadmisibles para la situación de la central.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Introducción ==&lt;br /&gt;
La obtención de energía eléctrica ha sido un reto para la humanidad desde el descubrimiento de la electricidad.&lt;br /&gt;
Las últimas tendencias en esta línea son la obtención de energías renovables independientes de los recursos finitos existentes en el planeta. Por ello, los últimos años se han hecho numerosas inversiones para potenciar este tipo de energías incidiendo en las centrales hidroeléctricas, centrales solares o centrales termosolares, así como aerogeneradores.&lt;br /&gt;
&lt;br /&gt;
En esta línea, las centrales termosolares están ganando mucha importancia, sobre todo en la península Ibérica donde incide una considerable cantidad de radiación solar. El funcionamiento de estas centrales consiste en el aprovechamiento térmico de la energía solar para transferirla y almacenarla en un medio portador de calor como es el agua. Además, es necesario concentrar la radiación solar para que se puedan alcanzar temperaturas elevadas y obtener así un rendimiento aceptable en el ciclo termodinámico. La captación y concentración de los rayos solares se hace por medio de espejos con orientación automática que apuntan a una torre central donde se calienta el fluido. El conjunto de la superficie reflectante y su dispositivo de orientación se denomina heliostato.&lt;br /&gt;
&lt;br /&gt;
Así, el trabajo presente se centra en establecer una ubicación favorable para una central termosolar en Andalucía. Para ello, hemos realizado una búsqueda de la radiación solar en la zona obteniendo la siguiente figura:&lt;br /&gt;
[[Archivo:SIG_Becares_1.png|600x400px|marco|centro|Radiación global de Andalucía. Mediana diaria anual en kWh/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;]]&lt;br /&gt;
&lt;br /&gt;
Este mapa carece de precisión y no será utilizado para el estudio detallado, pero permite hacer una pequeña aproximación sobre la zona en la que nos centraremos. En este caso, estudiaremos la ubicación de la planta en la zona oriental de Andalucía por ser una zona de gran radiación solar. Es cierto que en la zona oriental existe más radiación, pero seleccionamos dicha zona para fomentar el desarrollo en Almería y Granada, ya que son zonas menos desarrolladas que Cádiz, Sevilla y Huelva.&lt;br /&gt;
&lt;br /&gt;
== Metodología ==&lt;br /&gt;
La metodología seguida para el estudio de una ubicación óptima para el desarrollo de la central eléctrica se basa en la realización de un análisis multicriterio. Este proceso analítico permite realizar una comparativa entre diversas ubicaciones a partir del estudio de diferentes variables o características del territorio, estableciendo dos tipos de variable:&lt;br /&gt;
* '''Características del territorio que influyen sobre la producción y/o el coste de la instalación:''' para estas se establecerán variables continuas normalizadas entre 0 y 1, otorgando un valor a cada punto del terreno en función de su idoneidad (1) o no (0) para la actividad de producción termosolar.&lt;br /&gt;
* '''Características del territorio que muestran la compatibilidad con la instalación de la central:''' estas variables tendrán un valor singular de 0 (incompatible) o 1 (compatible) que multiplicarán a la variable normalizada global para excluir aquellas zonas que no pueden acoger la instalación eléctrica.&lt;br /&gt;
&lt;br /&gt;
En el estudio de ubicación de una central termosolar, se han considerado como parámetros más importantes para su implantación:&lt;br /&gt;
	&lt;br /&gt;
* '''Radiación solar directa media:''' el potencial de generación eléctrica depende fundamentalmente de esta variable, puesto que es la que mide la energía solar que los espejos de la central son capaces de reflejar hacia la torre o núcleo. Los datos empleados serán los obtenidos de la base de datos de la radiación solar de Andalucía de la Agencia Andaluza de la Energía, que recoge las mediciones y las coordenadas de las estaciones meteorológicas de la Red de Información Agroclimática de Andalucía, la cual está compuesta por 94 estaciones repartidas por el territorio andaluz.&lt;br /&gt;
* '''Pendiente del terreno:''' con el fin de maximizar la incidencia del Sol y facilitar la orientación de los espejos que conforman el sistema hacia la torre, se limitará los terrenos válidos para la implantación a aquellos con una pendiente menor al 3%. Para su obtención, se empleará como datos de partida del modelo digital del terreno MDT25 del Instituto Geográfico Nacional (IGN).	&lt;br /&gt;
* '''Distancia a líneas eléctricas:''' al ser una central que genera una gran potencia eléctrica, es importante que se ubique en proximidades de las grandes líneas de distribución repartidas por el territorio nacional, pues se evitará la realización de nuevas grandes líneas, que tendrán gran impacto en el coste de construcción de la central. Esta información se obtendrá de la base topográfica BTN25 del IGN.&lt;br /&gt;
* '''Distancia a cauces fluviales:''' el agua es fundamental en este tipo de centrales: tanto como fluido empleado para almacenar la energía térmica generada con la radiación solar, como fluido que se evapora y que se encarga de mover el generador que producirá la energía eléctrica. Por estos motivos, resultan interesantes cauces importantes con un caudal de agua estable a lo largo del año de agua, así como localizaciones cercanas a estos con el fin de reducir el coste de construcción de las conducciones que llevan el agua hasta la central. Esta información se obtendrá también de la base topográfica BTN25 del IGN, filtrándose los ríos de categoría 1, 2 y 3 recogidos en la variable tipo_tramo, con los valores 4001, 4002 y 4003.&lt;br /&gt;
*'''Espacios protegidos:''' el gran impacto que producen estas centrales sobre el paisaje, la fauna y la flora, podría afectar de forma irreversible a las áreas protegidas, por lo que estas se excluirán del análisis de ubicaciones. Las capas vectoriales que recogen los espacios protegidos incluidos en la Red Natura 2000 se ha obtenido del Banco de Datos de la Naturaleza del Ministerio para la Transición Ecológica y el Reto Demográfico (MITECO).&lt;br /&gt;
* '''Núcleos urbanos:''' la importancia de localizar las centrales alejadas de los núcleos urbanos se debe a su importante impacto visual sobre estos, así como por el coste más elevado que tendrá los terrenos próximos a los núcleos, frente a terrenos más alejados con un coste más reducido. Esta información se obtendrá de la capa de Núcleos de población incluida en la Información Geográfica de Referencia del IGN.&lt;br /&gt;
*'''Usos del suelo:''' es importante conocer los usos del suelo para excluir aquellos cuya actividad o edificación sería incompatible con la implantación de la central. La capa de usos del suelo empleada es la de la base de datos de ocupación del suelo en España del programa SIOSE del IGN.&lt;br /&gt;
&lt;br /&gt;
Una vez obtenidas las variables normalizadas para cada uno de estos parámetros, se establecerá un peso de relevancia a cada una de las variables continuas estudiadas en relación a su importancia en el proyecto. Posteriormente se aplicarán los multiplicadores de compatibilidad, que anularán el valor de la variable normalizada en aquellos puntos incompatibles con la instalación de la central. La expresión matemática que regirá el proceso es la siguiente:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n=M_{pend}·M_{usos}·M_{EP}·(p_1·n_{rad}+p_2·n_{elect}+p_3·n_{rios}+p_4·n_{núcleos})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
donde:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;p_i&amp;lt;/math&amp;gt;	pesos de las variables continuas&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{rad}&amp;lt;/math&amp;gt;	variable normalizada de la radiación solar &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{elect}&amp;lt;/math&amp;gt;	variable normalizada de la distancia a las líneas eléctricas&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{rios}&amp;lt;/math&amp;gt;	variable normalizada de la distancia a los cursos fluviales&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n_{núcleos}&amp;lt;/math&amp;gt;	variable normalizada de la proximidad a los núcleos urbanos&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{EP}&amp;lt;/math&amp;gt;	multiplicador de espacios protegidos&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{usos}&amp;lt;/math&amp;gt;	multiplicador de usos del suelo&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;M_{pend}&amp;lt;/math&amp;gt;	multiplicador de pendiente del terreno&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Desde el punto de vista de aplicación SIG, esta metodología se desarrollará generando capas ráster para cada una de las variables y de los multiplicadores. Para obtener estas capas, en el caso de factores dependientes de la distancia a entidades como núcleos urbanos, líneas eléctricas o cauces fluviales (capas vectoriales), se empleará la herramienta buffer para establecer áreas de influencia en torno a los elementos poligonales en función de los rangos de distancia para los diferentes valores de las variables Ni. Una vez generada una capa vectorial con regiones poligonales, para las que se crea una variable numérica que recoja su valor de la variable normalizada para esa característica, se procederá a rasterizar la capa mediante GRASS generando un ráster con elementos cuadrados de 150 metros de lado.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de la radiación, se parte de una serie de valores numéricos los cuales se recogen en una tabla de Excel. Así mismo, se generará una capa de puntos con la posición de las estaciones de medición de radiación solar. Se procederá a la unión de la capa vectorial de puntos con la tabla a través del atributo NUM que otorga un valor numérico entero a cada estación, que sirve como identificador de las estaciones. Con la capa de puntos con los valores de radiación enlazados, se realiza una Interpolación IDW, la cual se basa en la distancia inversa ponderada (IDW), distancia matemática (determinista) que asume que los valores más cercanos están más relacionados que otros con su función o variable. Con este procedimiento, se obtiene un ráster que recoge un valor de la radiación para cada elemento de una cuadricula de lado 150 metros. Este ráster se reclasificará con un archivo .txt que recogerá las reglas de la reclasificación para la obtención del ráster con valores de la variable normalizada. Su estructura será la siguiente:&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
&lt;br /&gt;
0 thru 17 = 7&lt;br /&gt;
17 thru 18.5 = 8&lt;br /&gt;
18.5 thru 20 = 9&lt;br /&gt;
* = 10&lt;br /&gt;
end&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Debido a las características de la función, se obtendrá un ráster entre 0 y 10, por lo que este ráster a la hora de obtener la variable global normalizada, deberá dividirse sus valores por 10 para que la variable sea normalizada entre 0 y 1.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En el caso de los multiplicadores, para el caso de las pendientes, se parte del modelo digital del terreno MDT25 del IGN para el área de estudio. Combinando las hojas incluidas en el área, se crea un mapa de pendientes, que conforma un ráster con el valor de la pendiente en tanto por ciento. Este ráster se reclasificará asignando un valor 1 a las celdas con un valor menor o igual al 3%, y un valor 0 para el resto de las celdas.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de los usos del suelo, se partirá de la capa vectorial del SIOSE. Se creará una variable que asignará valor 1 para los suelos con usos agrícolas y sin aprovechamiento económico, o un valor 0 para el resto de los usos. Se rasterizará esta capa en base a esta variable generada.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para el caso de las zonas protegidas, se partirá de las capas vectoriales de la Red Natura 2000, las cuales se disolverán para generar una capa que incluya las áreas protegidas independientemente de su figura de protección. Realizando operaciones de diferencia, se generará una capa vectorial con una nueva variable en la que las áreas protegidas tengan un valor 0 y las que no poseen protección un valor igual a 1. Finalmente se procederá a rasterizar la capa.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con las diferentes capas ráster obtenidos, se procederá a realizar la operación algebraica antes definida para el análisis multicriterio. Para ello se empleará la Calculadora de Mapas incluida en GRASS, importando previamente los ráster a esta aplicación incluida en QGIS. El diagrama que se deberá programar para obtener el resultado numérico de la expresión matemática será el siguiente:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG_Becares_12.png|marco|centro|Diagrama a programar en la calculadora de mapas]]&lt;br /&gt;
&lt;br /&gt;
Tras realizar esta operación, se obtendrá una capa ráster final que recoge el valor de la variable general normalizada entre 0 y 1 para capa punto del territorio estudiado, donde 0 es un lugar imposible para la implantación, y 1 es el lugar óptimo para la implantación.&lt;br /&gt;
&lt;br /&gt;
== Resultados ==&lt;br /&gt;
Una vez efectuado el proceso descrito en el anterior epígrafe, se obtienen los siguientes resultados:&lt;br /&gt;
&lt;br /&gt;
=== Radiación solar directa media diaria===&lt;br /&gt;
El potencial de generación de electricidad en estas centrales está relacionado directamente con esta variable que mide la energía que los espejos de la central son capaces de reflejar hacia la torre. Como ya se ha mencionado con anterioridad, la radiación es el parámetro dominante con una ponderación de 0,5. En cuanto a los valores asignados para cada nivel de radiación, se recogen en la siguiente tabla:&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Radiación|| &amp;gt;20 || 18.5-20 || 17-18.5 || ≤17&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1|| 0.8|| 0.6|| 0.4&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 3.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
[[Archivo:SIG Becares 4.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Líneas eléctricas ===&lt;br /&gt;
Para la implantación de una central eléctrica, un parámetro relevante a estudiar debe ser la distancia a las grandes infraestructuras de red ya construidas para así poder minimizar el coste derivado de la construcción de dichas líneas. Por ello, se le asigna una ponderación global de 0,2 para el cálculo de la ubicación óptima de la central.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por otra parte, se establecen los siguientes valores en función de la distancia a las líneas eléctricas:&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Radiación|| ≤1 || 1-2 || 2-3|| 3-4 || 4-5 || &amp;gt;5&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1|| 0.8|| 0.6|| 0.4 || 0.2 ||0.1&lt;br /&gt;
|}&lt;br /&gt;
[[Archivo:SIG Becares 5.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Red hidrográfica ===&lt;br /&gt;
En este tipo de centrales son necesarios grandes caudales de agua, por lo que, con el fin de minimizar los costes de construcción, se intentará localizar una ubicación próxima a un cauce de un río para evitar la construcción de grandes tuberías.&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La ponderación para este criterio es la misma que la establecida para las líneas eléctricas y los valores asignados en función de las distancias son los siguientes:&amp;lt;br /&amp;gt;&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Distancia(km)|| ≤1 || 1-2 || 2-3 || &amp;gt;3&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 1 || 0.7 || 0.3|| 0.1&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 6.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Núcleos urbanos===&lt;br /&gt;
La ubicación de una central eléctrica muy próxima a núcleos urbanos podría tener impactos negativos de tipo socioeconómico o paisajístico, además de suponer un mayor coste del terreno. Por ello, en los valores asignados en la tabla priman las localizaciones más lejanas a dichos núcleos. La ponderación total de este factor sobre el total es de 0,1 dada su menor importancia con respecto a los dos anteriores.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| Distancia (km)|| ≤0.75 || 0.75-1.5 || &amp;gt;1.5&lt;br /&gt;
|-&lt;br /&gt;
| Valor asignado || 0 || 0.6 || 1&lt;br /&gt;
|}&lt;br /&gt;
[[Archivo:SIG Becares 7.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
=== Espacios protegidos===&lt;br /&gt;
Es inmediato deducir el carácter eliminatorio de este aspecto dada la imposibilidad de construir una central termosolar en un espacio protegido. Por lo que esta variable se introducirá como un factor multiplicador a la ponderación ya realizada, teniendo un valor de 1 (puede construirse) si nos encontramos fuera de una zona protegida, y de 0 (ubicación no permitida) en caso contrario.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:SIG Becares 8.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
=== Usos del suelo===&lt;br /&gt;
Los usos del suelo es un factor determinante para la implantación de la central pues existen zonas con ciertos usos del suelo en los que no se puede construir por diversas razones. En los usos residencial, dotacional, comercial, cultural o zonas de agua, por ejemplo, resulta casi inmediato establecer que no sería posible la construcción de dicha central ya que son actividades asociadas al área urbana y uno de los objetivos es alejarse de estos núcleos para minimizar el impacto. Por otro lado, descartaremos el uso forestal porque requeriría deforestar la parcela para colocar la edificación. Así como también descartaremos las zonas mineras porque el terreno puede estar demasiado deformado y habría que realizar grandes labores de nivelación. En adición, cabe justificar el descarte del uso industrial ya que hace referencia a zonas edificadas con naves y requeriría hacer expropiaciones y demoliciones que pueden ser costosas en términos económicos y temporales. &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Por todo lo expuesto anteriormente, este factor actúa como multiplicador, de forma que solo permite la construcción de la central eléctrica en los usos del suelo que se han definido con un 1. Para todos los demás, el valor multiplicador será 0 e imposibilitaría la realización de la obra. Estos usos del suelo definidos como permitidos para la implantación (valor de 1) han sido los usos agrícolas, áreas abandonadas y zonas sin aprovechamiento económico.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:SIG Becares 9.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Topografía ===&lt;br /&gt;
Ocurre algo similar que en el caso de las zonas protegidas o usos del suelo, pero en este el motivo es funcional. Para que la incidencia de los rayos del sol se máxima no debe haber un exceso de pendiente ya que se perdería la mayoría de la energía derivada del ángulo de incidencia de los rayos solares. Para la corrección de este aspecto se requeriría un coste de construcción muy elevado que haría inviable la construcción de la misma. Así, en zonas cuya pendiente sea igual o superior al 3% el factor multiplicador valdrá 0 y, en caso contrario (pendiente inferior al 3%) valdrá 1.&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:SIG Becares 10.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
=== Resultado final ===&lt;br /&gt;
Tras la realización de los mapas anteriores procedemos a realizar la ponderación ya mencionada durante el proceso quedando de la siguiente forma:&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;n=M_{pend}·M_{usos}·M_{ZP}·(0,5·n_{rad}+0,2·n_{elect}+0,2·n_{rios}+0,1·n_{núcleos})&amp;lt;/math&amp;gt;&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Obteniendo la siguiente cartografía:&amp;lt;br /&amp;gt;&lt;br /&gt;
[[Archivo:SIG Becares 11.jpeg|800px|sinmarco|centro]]&lt;br /&gt;
&lt;br /&gt;
== Conclusiones ==&lt;br /&gt;
Según el resultado obtenido en el proceso antes descrito, se han seleccionado 3 posibles ubicaciones, cuyas características son próximas a las idóneas. Las principales características serían las siguientes:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  !! Radiación (MJ/m&amp;lt;sup&amp;gt;2&amp;lt;/sup&amp;gt;) !! Red eléctrica !! Cauces de ríos !! Núcleos urbanos&lt;br /&gt;
|-&lt;br /&gt;
| Solución 1|| 20.404 || 1000-2000 m || 1000 m || &amp;gt; 1500 m&lt;br /&gt;
|-&lt;br /&gt;
| Solución 2 || 20.308 || &amp;lt;1000 m || 1000 m || &amp;gt; 1500 m&lt;br /&gt;
|-&lt;br /&gt;
| Solución 3 || 20.834 || &amp;lt;1000 m || 1000 m|| 750-1500 m&lt;br /&gt;
|}&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dichas ubicaciones se corresponderían en la cartografía anterior con aquellas zonas marcadas en tonos más verdes. Situando dichas soluciones en el mapa, este quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:SIG Becares 13.jpeg|800px|centro]]&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
En esta cartografía, se puede destacar el nivel de significancia que adquiere la consideración de los criterios de zonas protegidas, pendientes y usos del suelo, pues imposibilita la construcción de nuestra central termosolar en gran parte del territorio estudiado.&lt;br /&gt;
&lt;br /&gt;
Sin embargo, pese a todas las restricciones impuestas se han encontrado 3 soluciones óptimas, de las cuales, una de ellas es idónea según los criterios determinados, ya que posee un valor normalizado de 1. Dicha ubicación corresponde a la Solución 2, la cual posee una radiación de 20,308 megajulios por metro cuadrado, una distancia a la red eléctrica y a cauces de los ríos menores a un kilómetro y una lejanía de más de kilómetro y medio del núcleo urbano más próximo.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Sistemas de Información Geográfica Aplicados a la Ingeniería Civil]]&lt;br /&gt;
[[Categoría:SIGAIC_20/21]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39480</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39480"/>
				<updated>2017-04-28T21:57:28Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Modificación en las condiciones de contorno */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt;, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal &amp;lt;math&amp;gt;∆t = ∆x/4&amp;lt;/math&amp;gt; es mayor que el valor límite que determina si un método explícito es estable o no (&amp;lt;math&amp;gt;∆t = 0.5 \cdot (∆x)^2&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen. Respecto al resto del gráfico se deducen los mismos resultados que en el apartado 2.1.1 del método del trapecio.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta valores del eje de la concentración del orden de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Al comparar el error entre los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo. Pero según transcurre el tiempo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito, no podemos observar el error en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de &amp;lt;math&amp;gt;10^{139}&amp;lt;/math&amp;gt; hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que se comentó con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La única diferencia está en el orden de magnitud que esta vez es de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud &amp;lt;math&amp;gt;10^{139}&amp;lt;/math&amp;gt; al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
El punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt; se corresponde con el primer punto despues del salto con concentración inicial 4. Al permitir el flujo de la misma, será la primera sección en liberar el mayor gradiente de concentración, estabilizándose a medida que avanza el tiempo y aumenta la concentración en el intervalo de &amp;lt;math&amp;gt; x\in\ [0,4]&amp;lt;/math&amp;gt; hasta alcanzar el equilibrio.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Esta gráfica representa la concentración en cada punto del tubo. Cada recta corresponde a un valor de tiempo determinado. Podemos observar que los intervalos &amp;lt;math&amp;gt;(2,4)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;(4,6)&amp;lt;/math&amp;gt;, que son los más cercanos al punto medio del tubo sufren en los segundos iniciales su mayor variación de concetración. Mientras que en los intervalos &amp;lt;math&amp;gt;(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;(6,8)&amp;lt;/math&amp;gt; correspondientes a los extremos, se puede observar una pérdida más lineal a lo largo del tiempo. Se observa cómo la solución se aproxima al estado estacionario con el tiempo. &lt;br /&gt;
&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración &amp;lt;math&amp;gt;u = 3&amp;lt;/math&amp;gt; como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo &amp;lt;math&amp;gt;[2,85-3,15]&amp;lt;/math&amp;gt;. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos alcanzan valores dentro del intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos el valor dentro del intervalo pedido para el extremo del tubo.&lt;br /&gt;
&lt;br /&gt;
Pidiendo a MATLAB el tiempo en que se produce este elemento con el comando &amp;lt;math&amp;gt;t(364)&amp;lt;/math&amp;gt; obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si &amp;lt;math&amp;gt;∆x&amp;lt;/math&amp;gt; se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un &amp;lt;math&amp;gt;∆x&amp;lt;/math&amp;gt; suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;br /&gt;
&lt;br /&gt;
== Instalación de un limpiador ==&lt;br /&gt;
Se coloca un limpiador en el extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt; después de 1 segundo. Debido a esto, la concentración en el tubo disminuye progresivamente hasta que se elimina completamente. Por lo que la solución en el estado estacionario es 0. &lt;br /&gt;
&lt;br /&gt;
La instalación del limpiador se corresponde con un valor fijo en el tiempo en el extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, matemáticamente se traduce en una condición Dirichlett en dicho extremo.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u(0,t) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado8limpiador.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Se puede observar que a partir de 1 segundo (momento en el cual se coloca el limpiador) la concentración del contaminante en el tubo disminuye progresivamente hasta desaparecer. Para tiempo elevado (estado estacionario) la concentración se mantiene nula. La concentración en el extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt; se mantiene en 0, mientras la del extremo &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt; disminuye progresivamente.&lt;br /&gt;
&lt;br /&gt;
El código empleado para obtener la gráfica ha sido:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 100; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca1 = @(t) t*0; % t&amp;lt;1&lt;br /&gt;
ca2 = @(t) t*0; % t&amp;gt;=1&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
xint = x(2:end);&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K para t&amp;lt;1&lt;br /&gt;
K1=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K1(1,2) = -2;&lt;br /&gt;
K1(end,end-1) = -2;&lt;br /&gt;
K1 = K1*(D/incrX^2);&lt;br /&gt;
% Matriz K para t&amp;gt;=1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(end,end-1) = -2;&lt;br /&gt;
K2 = K2*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
% Inicializacion de la matriz de soluciones&lt;br /&gt;
pos = round((length(t)-1)/tM);&lt;br /&gt;
sol1 = zeros(N+1,pos);&lt;br /&gt;
sol2 = zeros(N,M+1-pos);&lt;br /&gt;
sol1(:,1)= U0;&lt;br /&gt;
% Método de Euler implicito&lt;br /&gt;
for i=1:pos-1&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca1(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca1(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol1(:,i+1) = (eye(size(K1))+incrT*K1)\(sol1(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
U02 = sol1(2:N+1,pos);&lt;br /&gt;
sol2(:,1) = U02;&lt;br /&gt;
Gi = [];&lt;br /&gt;
Gi2 = [];&lt;br /&gt;
for i=1:M+1-pos&lt;br /&gt;
    Gi = g(xint,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)+D*ca2(t(i))/incrX^2;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(xint,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)+D*ca2(t(i+1))/incrX^2;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol2(:,i+1) = (eye(size(K2))+incrT*K2)\(sol2(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Composicion de la matriz de soluciones&lt;br /&gt;
M1 = [zeros(1,M+1-pos);sol2(:,2:end)];&lt;br /&gt;
sol = [sol1,M1];&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Error del 5% ===&lt;br /&gt;
Vamos a suponer que el error es respecto a la concetración máxima en el extremo &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt; (que es 4). Con esta hipótesis debemos buscar el tiempo que tarda la concentración en ser menor que 0,2 (5% de la concentración máxima). Siguiendo el razonamiento en el subapartado 5.1 se deduce que se alcanza la situación estacionaria en la posición 2122 del vector tiempo (para 200 segundos). Este tiempo es 79.5425 segundos.&lt;br /&gt;
&lt;br /&gt;
== Modificación en las condiciones de contorno ==&lt;br /&gt;
Supondremos una ligera modificación en el problema respecto a las condiciones de contorno.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-u_{xx}=0\\u_x(0,t)=-4\\u_x(8,t)=0\\u(x,0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La otra condición es de tipo Neumann en cero &amp;lt;math&amp;gt;F(t)= -Du_x(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt;u_x(0,t)=-4&amp;lt;0&amp;lt;/math&amp;gt; y además &amp;lt;math&amp;gt;D=1&amp;gt;0&amp;lt;/math&amp;gt;, debe verificarse que &amp;lt;math&amp;gt;F(t)=4&amp;gt;0&amp;lt;/math&amp;gt;. Entonces, cogiendo un &amp;lt;math&amp;gt;∆x&amp;gt;0&amp;lt;/math&amp;gt; e infinitesimal obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)-u(0,t)&amp;lt;0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)&amp;lt;u(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lo que indica que en la sección del extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt; hay más contaminante que en la infinitesimalmente siguiente, por lo que el flujo irá hacia la derecha de forma que entra un flujo constante en todo t igual a &amp;lt;math&amp;gt;F = 4&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 10; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0-4;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(end,end-1) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9corregido.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interpretación física ===&lt;br /&gt;
&lt;br /&gt;
En el extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt; está siendo introducido contaminante con flujo igual a 4, constante en el tiempo. Como consecuencia, la concentración en el tubo no hace más que aumentar.&lt;br /&gt;
&lt;br /&gt;
En la gráfica se puede observar que en la primera mitad del tubo (de concentración 2) la concentración aumenta rápidamente y luego se estabiliza a una pendiente constante. Esto es debido a que inicialmente, hay un flujo entrante desde la membrana &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt; y otro de la sección &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt; procedente de la otra mitad por tener concentración inicial mayor (igual a 4). Ese segundo flujo es la razón por la que observamos un ligero descenso de la concentración para luego aumentar con pendiente constante.&lt;br /&gt;
&lt;br /&gt;
Después de un tiempo podemos observar que la concentración del tubo crece con la misma pendiente (la que nos da el flujo igual a 4).&lt;br /&gt;
Aplicando el código con 30 segundos se puede apreciar que las pendientes son paralelas.&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9paralelo.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferenciales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39479</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39479"/>
				<updated>2017-04-28T21:53:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Instalación de un limpiador */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt;, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal &amp;lt;math&amp;gt;∆t = ∆x/4&amp;lt;/math&amp;gt; es mayor que el valor límite que determina si un método explícito es estable o no (&amp;lt;math&amp;gt;∆t = 0.5 \cdot (∆x)^2&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen. Respecto al resto del gráfico se deducen los mismos resultados que en el apartado 2.1.1 del método del trapecio.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta valores del eje de la concentración del orden de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Al comparar el error entre los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo. Pero según transcurre el tiempo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito, no podemos observar el error en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de &amp;lt;math&amp;gt;10^{139}&amp;lt;/math&amp;gt; hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que se comentó con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La única diferencia está en el orden de magnitud que esta vez es de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud &amp;lt;math&amp;gt;10^{139}&amp;lt;/math&amp;gt; al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
El punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt; se corresponde con el primer punto despues del salto con concentración inicial 4. Al permitir el flujo de la misma, será la primera sección en liberar el mayor gradiente de concentración, estabilizándose a medida que avanza el tiempo y aumenta la concentración en el intervalo de &amp;lt;math&amp;gt; x\in\ [0,4]&amp;lt;/math&amp;gt; hasta alcanzar el equilibrio.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Esta gráfica representa la concentración en cada punto del tubo. Cada recta corresponde a un valor de tiempo determinado. Podemos observar que los intervalos &amp;lt;math&amp;gt;(2,4)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;(4,6)&amp;lt;/math&amp;gt;, que son los más cercanos al punto medio del tubo sufren en los segundos iniciales su mayor variación de concetración. Mientras que en los intervalos &amp;lt;math&amp;gt;(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;(6,8)&amp;lt;/math&amp;gt; correspondientes a los extremos, se puede observar una pérdida más lineal a lo largo del tiempo. Se observa cómo la solución se aproxima al estado estacionario con el tiempo. &lt;br /&gt;
&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración &amp;lt;math&amp;gt;u = 3&amp;lt;/math&amp;gt; como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo &amp;lt;math&amp;gt;[2,85-3,15]&amp;lt;/math&amp;gt;. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos alcanzan valores dentro del intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos el valor dentro del intervalo pedido para el extremo del tubo.&lt;br /&gt;
&lt;br /&gt;
Pidiendo a MATLAB el tiempo en que se produce este elemento con el comando &amp;lt;math&amp;gt;t(364)&amp;lt;/math&amp;gt; obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si &amp;lt;math&amp;gt;∆x&amp;lt;/math&amp;gt; se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un &amp;lt;math&amp;gt;∆x&amp;lt;/math&amp;gt; suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;br /&gt;
&lt;br /&gt;
== Instalación de un limpiador ==&lt;br /&gt;
Se coloca un limpiador en el extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt; después de 1 segundo. Debido a esto, la concentración en el tubo disminuye progresivamente hasta que se elimina completamente. Por lo que la solución en el estado estacionario es 0. &lt;br /&gt;
&lt;br /&gt;
La instalación del limpiador se corresponde con un valor fijo en el tiempo en el extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, matemáticamente se traduce en una condición Dirichlett en dicho extremo.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u(0,t) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado8limpiador.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Se puede observar que a partir de 1 segundo (momento en el cual se coloca el limpiador) la concentración del contaminante en el tubo disminuye progresivamente hasta desaparecer. Para tiempo elevado (estado estacionario) la concentración se mantiene nula. La concentración en el extremo &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt; se mantiene en 0, mientras la del extremo &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt; disminuye progresivamente.&lt;br /&gt;
&lt;br /&gt;
El código empleado para obtener la gráfica ha sido:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 100; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca1 = @(t) t*0; % t&amp;lt;1&lt;br /&gt;
ca2 = @(t) t*0; % t&amp;gt;=1&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
xint = x(2:end);&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K para t&amp;lt;1&lt;br /&gt;
K1=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K1(1,2) = -2;&lt;br /&gt;
K1(end,end-1) = -2;&lt;br /&gt;
K1 = K1*(D/incrX^2);&lt;br /&gt;
% Matriz K para t&amp;gt;=1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(end,end-1) = -2;&lt;br /&gt;
K2 = K2*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
% Inicializacion de la matriz de soluciones&lt;br /&gt;
pos = round((length(t)-1)/tM);&lt;br /&gt;
sol1 = zeros(N+1,pos);&lt;br /&gt;
sol2 = zeros(N,M+1-pos);&lt;br /&gt;
sol1(:,1)= U0;&lt;br /&gt;
% Método de Euler implicito&lt;br /&gt;
for i=1:pos-1&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca1(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca1(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol1(:,i+1) = (eye(size(K1))+incrT*K1)\(sol1(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
U02 = sol1(2:N+1,pos);&lt;br /&gt;
sol2(:,1) = U02;&lt;br /&gt;
Gi = [];&lt;br /&gt;
Gi2 = [];&lt;br /&gt;
for i=1:M+1-pos&lt;br /&gt;
    Gi = g(xint,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)+D*ca2(t(i))/incrX^2;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(xint,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)+D*ca2(t(i+1))/incrX^2;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol2(:,i+1) = (eye(size(K2))+incrT*K2)\(sol2(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Composicion de la matriz de soluciones&lt;br /&gt;
M1 = [zeros(1,M+1-pos);sol2(:,2:end)];&lt;br /&gt;
sol = [sol1,M1];&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Error del 5% ===&lt;br /&gt;
Vamos a suponer que el error es respecto a la concetración máxima en el extremo &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt; (que es 4). Con esta hipótesis debemos buscar el tiempo que tarda la concentración en ser menor que 0,2 (5% de la concentración máxima). Siguiendo el razonamiento en el subapartado 5.1 se deduce que se alcanza la situación estacionaria en la posición 2122 del vector tiempo (para 200 segundos). Este tiempo es 79.5425 segundos.&lt;br /&gt;
&lt;br /&gt;
== Modificación en las condiciones de contorno ==&lt;br /&gt;
Supondremos una ligera modificación en el problema respecto a las condiciones de contorno.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-u_{xx}=0\\u_x(0,t)=-4\\u_x(8,t)=0\\u(x,0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La otra condición es de tipo Neumann en cero &amp;lt;math&amp;gt;F(t)= -Du_x(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt;u_x(0,t)=-4&amp;lt;0&amp;lt;/math&amp;gt; y además &amp;lt;math&amp;gt;D=1&amp;gt;0&amp;lt;/math&amp;gt;, debe verificarse que &amp;lt;math&amp;gt;F(t)=4&amp;gt;0&amp;lt;/math&amp;gt;. Entonces, cogiendo un &amp;lt;math&amp;gt;∆x&amp;gt;0&amp;lt;/math&amp;gt; e infinitesimal obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)-u(0,t)&amp;lt;0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)&amp;lt;u(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lo que indica que en el extremo x=0 hay más contaminante en el infinitesimalmente siguiente, por lo que el flujo irá hacia la derecha de forma que entra un flujo constante en todo t igual a F = 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 10; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0-4;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(end,end-1) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9corregido.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interpretación física ===&lt;br /&gt;
&lt;br /&gt;
En el extremo x=0 está siendo introducido contaminante con flujo igual a 4, constante en el tiempo. Como consecuencia, la concentración en el tubo no hace más que aumentar.&lt;br /&gt;
&lt;br /&gt;
En la gráfica se puede observar que en la primera mitad del tubo (de concentración 2) la concentracion aumenta rapidamente y luego se estabiliza a una pendiente constante. Esto es debido a que inicialmente, hay un flujo entrante desde la membrana x=0 y otro de la sección x=4 procedente de la otra mitad por tener concentración inicial mayor (igual a 4). Ese segundo flujo es la razón por la que observamos un ligero descenso de la concentración para luego aumentar con pendiente constante.&lt;br /&gt;
&lt;br /&gt;
Después de un tiempo podemos observar que la concentración del tubo crece con la misma pendiente (la que nos da el flujo = 4).&lt;br /&gt;
Aplicando el código con 30 segundos se puede apreciar que las pendientes son paralelas.&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9paralelo.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferenciales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39478</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39478"/>
				<updated>2017-04-28T21:50:46Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Estado estacionario */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt;, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal &amp;lt;math&amp;gt;∆t = ∆x/4&amp;lt;/math&amp;gt; es mayor que el valor límite que determina si un método explícito es estable o no (&amp;lt;math&amp;gt;∆t = 0.5 \cdot (∆x)^2&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen. Respecto al resto del gráfico se deducen los mismos resultados que en el apartado 2.1.1 del método del trapecio.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta valores del eje de la concentración del orden de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Al comparar el error entre los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo. Pero según transcurre el tiempo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito, no podemos observar el error en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de &amp;lt;math&amp;gt;10^{139}&amp;lt;/math&amp;gt; hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que se comentó con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La única diferencia está en el orden de magnitud que esta vez es de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud &amp;lt;math&amp;gt;10^{139}&amp;lt;/math&amp;gt; al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
El punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt; se corresponde con el primer punto despues del salto con concentración inicial 4. Al permitir el flujo de la misma, será la primera sección en liberar el mayor gradiente de concentración, estabilizándose a medida que avanza el tiempo y aumenta la concentración en el intervalo de &amp;lt;math&amp;gt; x\in\ [0,4]&amp;lt;/math&amp;gt; hasta alcanzar el equilibrio.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Esta gráfica representa la concentración en cada punto del tubo. Cada recta corresponde a un valor de tiempo determinado. Podemos observar que los intervalos &amp;lt;math&amp;gt;(2,4)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;(4,6)&amp;lt;/math&amp;gt;, que son los más cercanos al punto medio del tubo sufren en los segundos iniciales su mayor variación de concetración. Mientras que en los intervalos &amp;lt;math&amp;gt;(0,2)&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;(6,8)&amp;lt;/math&amp;gt; correspondientes a los extremos, se puede observar una pérdida más lineal a lo largo del tiempo. Se observa cómo la solución se aproxima al estado estacionario con el tiempo. &lt;br /&gt;
&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración &amp;lt;math&amp;gt;u = 3&amp;lt;/math&amp;gt; como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo &amp;lt;math&amp;gt;[2,85-3,15]&amp;lt;/math&amp;gt;. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos alcanzan valores dentro del intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos el valor dentro del intervalo pedido para el extremo del tubo.&lt;br /&gt;
&lt;br /&gt;
Pidiendo a MATLAB el tiempo en que se produce este elemento con el comando &amp;lt;math&amp;gt;t(364)&amp;lt;/math&amp;gt; obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si &amp;lt;math&amp;gt;∆x&amp;lt;/math&amp;gt; se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un &amp;lt;math&amp;gt;∆x&amp;lt;/math&amp;gt; suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;br /&gt;
&lt;br /&gt;
== Instalación de un limpiador ==&lt;br /&gt;
Se coloca un limpiador en el extremo x=0 después de 1 segundo. Debido a esto, la concentración en el tubo disminuye progresivamente hasta que se elimina completamente. Por lo que la solución en el estado estacionario es 0. &lt;br /&gt;
&lt;br /&gt;
La instalación del limpiador se corresponde con un valor fijo en el tiempo en el extremo x=0, matemáticamente se traduce en una condición Dirichlett en dicho extremo.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u(0,t) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado8limpiador.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Se puede observar que a partir de 1 sg (momento en el cual se coloca el limpiador) la concentración del contaminante en el tubo disminuye progresivamente hasta desaparecer. Para tiempo elevado (estado estacionario) la concentración se mantiene nula. La concentración en el extremo x=0 se mantiene en 0, mientras la del extremo x=8 disminuye progresivamente.&lt;br /&gt;
&lt;br /&gt;
El código empleado para obtener la gráfica ha sido:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 100; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca1 = @(t) t*0; % t&amp;lt;1&lt;br /&gt;
ca2 = @(t) t*0; % t&amp;gt;=1&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
xint = x(2:end);&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K para t&amp;lt;1&lt;br /&gt;
K1=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K1(1,2) = -2;&lt;br /&gt;
K1(end,end-1) = -2;&lt;br /&gt;
K1 = K1*(D/incrX^2);&lt;br /&gt;
% Matriz K para t&amp;gt;=1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(end,end-1) = -2;&lt;br /&gt;
K2 = K2*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
% Inicializacion de la matriz de soluciones&lt;br /&gt;
pos = round((length(t)-1)/tM);&lt;br /&gt;
sol1 = zeros(N+1,pos);&lt;br /&gt;
sol2 = zeros(N,M+1-pos);&lt;br /&gt;
sol1(:,1)= U0;&lt;br /&gt;
% Método de Euler implicito&lt;br /&gt;
for i=1:pos-1&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca1(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca1(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol1(:,i+1) = (eye(size(K1))+incrT*K1)\(sol1(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
U02 = sol1(2:N+1,pos);&lt;br /&gt;
sol2(:,1) = U02;&lt;br /&gt;
Gi = [];&lt;br /&gt;
Gi2 = [];&lt;br /&gt;
for i=1:M+1-pos&lt;br /&gt;
    Gi = g(xint,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)+D*ca2(t(i))/incrX^2;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(xint,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)+D*ca2(t(i+1))/incrX^2;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol2(:,i+1) = (eye(size(K2))+incrT*K2)\(sol2(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Composicion de la matriz de soluciones&lt;br /&gt;
M1 = [zeros(1,M+1-pos);sol2(:,2:end)];&lt;br /&gt;
sol = [sol1,M1];&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Error del 5% ===&lt;br /&gt;
Vamos a suponer que el error es respecto a la concetración máxima en el extremo x=8 (que es 4). Con esta hipótesis debemos buscar el tiempo que tarda la concentración en ser menor que 0,2 (5% de la concentración máxima). Siguiendo el razonamiento en el subapartado 5.1 se deduce se alcanza la situación estacionaria en la posición 2122 del vector tiempo (para 200 segundos). Este tiempo es 79.5425 segundos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modificación en las condiciones de contorno ==&lt;br /&gt;
Supondremos una ligera modificación en el problema respecto a las condiciones de contorno.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-u_{xx}=0\\u_x(0,t)=-4\\u_x(8,t)=0\\u(x,0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La otra condición es de tipo Neumann en cero &amp;lt;math&amp;gt;F(t)= -Du_x(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt;u_x(0,t)=-4&amp;lt;0&amp;lt;/math&amp;gt; y además &amp;lt;math&amp;gt;D=1&amp;gt;0&amp;lt;/math&amp;gt;, debe verificarse que &amp;lt;math&amp;gt;F(t)=4&amp;gt;0&amp;lt;/math&amp;gt;. Entonces, cogiendo un &amp;lt;math&amp;gt;∆x&amp;gt;0&amp;lt;/math&amp;gt; e infinitesimal obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)-u(0,t)&amp;lt;0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)&amp;lt;u(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lo que indica que en el extremo x=0 hay más contaminante en el infinitesimalmente siguiente, por lo que el flujo irá hacia la derecha de forma que entra un flujo constante en todo t igual a F = 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 10; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0-4;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(end,end-1) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9corregido.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interpretación física ===&lt;br /&gt;
&lt;br /&gt;
En el extremo x=0 está siendo introducido contaminante con flujo igual a 4, constante en el tiempo. Como consecuencia, la concentración en el tubo no hace más que aumentar.&lt;br /&gt;
&lt;br /&gt;
En la gráfica se puede observar que en la primera mitad del tubo (de concentración 2) la concentracion aumenta rapidamente y luego se estabiliza a una pendiente constante. Esto es debido a que inicialmente, hay un flujo entrante desde la membrana x=0 y otro de la sección x=4 procedente de la otra mitad por tener concentración inicial mayor (igual a 4). Ese segundo flujo es la razón por la que observamos un ligero descenso de la concentración para luego aumentar con pendiente constante.&lt;br /&gt;
&lt;br /&gt;
Después de un tiempo podemos observar que la concentración del tubo crece con la misma pendiente (la que nos da el flujo = 4).&lt;br /&gt;
Aplicando el código con 30 segundos se puede apreciar que las pendientes son paralelas.&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9paralelo.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferenciales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39477</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39477"/>
				<updated>2017-04-28T21:47:26Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Evolución de la concentración en el punto medio de la tubería */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt;, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal &amp;lt;math&amp;gt;∆t = ∆x/4&amp;lt;/math&amp;gt; es mayor que el valor límite que determina si un método explícito es estable o no (&amp;lt;math&amp;gt;∆t = 0.5 \cdot (∆x)^2&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen. Respecto al resto del gráfico se deducen los mismos resultados que en el apartado 2.1.1 del método del trapecio.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta valores del eje de la concentración del orden de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Al comparar el error entre los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo. Pero según transcurre el tiempo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito, no podemos observar el error en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de &amp;lt;math&amp;gt;10^{139}&amp;lt;/math&amp;gt; hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que se comentó con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La única diferencia está en el orden de magnitud que esta vez es de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud &amp;lt;math&amp;gt;10^{139}&amp;lt;/math&amp;gt; al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
El punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt; se corresponde con el primer punto despues del salto con concentración inicial 4. Al permitir el flujo de la misma, será la primera sección en liberar el mayor gradiente de concentración, estabilizándose a medida que avanza el tiempo y aumenta la concentración en el intervalo de &amp;lt;math&amp;gt; x\in\ [0,4]&amp;lt;/math&amp;gt; hasta alcanzar el equilibrio.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Esta gráfica representa la concentración en cada punto del tubo. Cada recta corresponde a un valor de tiempo determinado. Podemos observar que los intervalos (2,4) y (4,6), que son los más cercanos al punto medio del tubo sufren en los segundos iniciales su mayor variación de concetración. Mientras que en los intervalos (0,2) y (6,8) correspondientes a los extremos, se puede observar una pérdida más lineal a lo largo del tiempo. Se observa cómo la solución se aproxima al estado estacionario con el tiempo. &lt;br /&gt;
&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración u = 3 como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo [2,85-3,15]. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos alcanzan valores dentro del intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos el valor dentro del intervalo pedido para el extremo del tubo.&lt;br /&gt;
&lt;br /&gt;
Pidiendo a matlab el tiempo en que se produce este elemento con el comando t(364) obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si ∆x se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un ∆x suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;br /&gt;
&lt;br /&gt;
== Instalación de un limpiador ==&lt;br /&gt;
Se coloca un limpiador en el extremo x=0 después de 1 segundo. Debido a esto, la concentración en el tubo disminuye progresivamente hasta que se elimina completamente. Por lo que la solución en el estado estacionario es 0. &lt;br /&gt;
&lt;br /&gt;
La instalación del limpiador se corresponde con un valor fijo en el tiempo en el extremo x=0, matemáticamente se traduce en una condición Dirichlett en dicho extremo.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u(0,t) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado8limpiador.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Se puede observar que a partir de 1 sg (momento en el cual se coloca el limpiador) la concentración del contaminante en el tubo disminuye progresivamente hasta desaparecer. Para tiempo elevado (estado estacionario) la concentración se mantiene nula. La concentración en el extremo x=0 se mantiene en 0, mientras la del extremo x=8 disminuye progresivamente.&lt;br /&gt;
&lt;br /&gt;
El código empleado para obtener la gráfica ha sido:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 100; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca1 = @(t) t*0; % t&amp;lt;1&lt;br /&gt;
ca2 = @(t) t*0; % t&amp;gt;=1&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
xint = x(2:end);&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K para t&amp;lt;1&lt;br /&gt;
K1=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K1(1,2) = -2;&lt;br /&gt;
K1(end,end-1) = -2;&lt;br /&gt;
K1 = K1*(D/incrX^2);&lt;br /&gt;
% Matriz K para t&amp;gt;=1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(end,end-1) = -2;&lt;br /&gt;
K2 = K2*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
% Inicializacion de la matriz de soluciones&lt;br /&gt;
pos = round((length(t)-1)/tM);&lt;br /&gt;
sol1 = zeros(N+1,pos);&lt;br /&gt;
sol2 = zeros(N,M+1-pos);&lt;br /&gt;
sol1(:,1)= U0;&lt;br /&gt;
% Método de Euler implicito&lt;br /&gt;
for i=1:pos-1&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca1(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca1(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol1(:,i+1) = (eye(size(K1))+incrT*K1)\(sol1(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
U02 = sol1(2:N+1,pos);&lt;br /&gt;
sol2(:,1) = U02;&lt;br /&gt;
Gi = [];&lt;br /&gt;
Gi2 = [];&lt;br /&gt;
for i=1:M+1-pos&lt;br /&gt;
    Gi = g(xint,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)+D*ca2(t(i))/incrX^2;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(xint,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)+D*ca2(t(i+1))/incrX^2;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol2(:,i+1) = (eye(size(K2))+incrT*K2)\(sol2(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Composicion de la matriz de soluciones&lt;br /&gt;
M1 = [zeros(1,M+1-pos);sol2(:,2:end)];&lt;br /&gt;
sol = [sol1,M1];&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Error del 5% ===&lt;br /&gt;
Vamos a suponer que el error es respecto a la concetración máxima en el extremo x=8 (que es 4). Con esta hipótesis debemos buscar el tiempo que tarda la concentración en ser menor que 0,2 (5% de la concentración máxima). Siguiendo el razonamiento en el subapartado 5.1 se deduce se alcanza la situación estacionaria en la posición 2122 del vector tiempo (para 200 segundos). Este tiempo es 79.5425 segundos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modificación en las condiciones de contorno ==&lt;br /&gt;
Supondremos una ligera modificación en el problema respecto a las condiciones de contorno.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-u_{xx}=0\\u_x(0,t)=-4\\u_x(8,t)=0\\u(x,0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La otra condición es de tipo Neumann en cero &amp;lt;math&amp;gt;F(t)= -Du_x(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt;u_x(0,t)=-4&amp;lt;0&amp;lt;/math&amp;gt; y además &amp;lt;math&amp;gt;D=1&amp;gt;0&amp;lt;/math&amp;gt;, debe verificarse que &amp;lt;math&amp;gt;F(t)=4&amp;gt;0&amp;lt;/math&amp;gt;. Entonces, cogiendo un &amp;lt;math&amp;gt;∆x&amp;gt;0&amp;lt;/math&amp;gt; e infinitesimal obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)-u(0,t)&amp;lt;0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)&amp;lt;u(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lo que indica que en el extremo x=0 hay más contaminante en el infinitesimalmente siguiente, por lo que el flujo irá hacia la derecha de forma que entra un flujo constante en todo t igual a F = 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 10; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0-4;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(end,end-1) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9corregido.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interpretación física ===&lt;br /&gt;
&lt;br /&gt;
En el extremo x=0 está siendo introducido contaminante con flujo igual a 4, constante en el tiempo. Como consecuencia, la concentración en el tubo no hace más que aumentar.&lt;br /&gt;
&lt;br /&gt;
En la gráfica se puede observar que en la primera mitad del tubo (de concentración 2) la concentracion aumenta rapidamente y luego se estabiliza a una pendiente constante. Esto es debido a que inicialmente, hay un flujo entrante desde la membrana x=0 y otro de la sección x=4 procedente de la otra mitad por tener concentración inicial mayor (igual a 4). Ese segundo flujo es la razón por la que observamos un ligero descenso de la concentración para luego aumentar con pendiente constante.&lt;br /&gt;
&lt;br /&gt;
Después de un tiempo podemos observar que la concentración del tubo crece con la misma pendiente (la que nos da el flujo = 4).&lt;br /&gt;
Aplicando el código con 30 segundos se puede apreciar que las pendientes son paralelas.&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9paralelo.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferenciales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39475</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39475"/>
				<updated>2017-04-28T21:41:28Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Comparativa de métodos empleados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt;, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal &amp;lt;math&amp;gt;∆t = ∆x/4&amp;lt;/math&amp;gt; es mayor que el valor límite que determina si un método explícito es estable o no (&amp;lt;math&amp;gt;∆t = 0.5 \cdot (∆x)^2&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen. Respecto al resto del gráfico se deducen los mismos resultados que en el apartado 2.1.1 del método del trapecio.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta valores del eje de la concentración del orden de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Al comparar el error entre los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo. Pero según transcurre el tiempo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito, no podemos observar el error en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de &amp;lt;math&amp;gt;10^{139}&amp;lt;/math&amp;gt; hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que se comentó con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La única diferencia está en el orden de magnitud que esta vez es de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud &amp;lt;math&amp;gt;10^{139}&amp;lt;/math&amp;gt; al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
El punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt; se corresponde con el primer punto despues del salto con concentración inicial 4. Al permitir el flujo de la misma, será la primera sección en liberar el mayor gradiente de concentración, estabilizándose a medida que avanza el tiempo y aumenta la concentración en el intervalo de x = [0,4] hasta alcanzar el equilibrio.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Esta gráfica representa la concentración en cada punto del tubo. Cada recta corresponde a un valor de tiempo determinado. Podemos observar que los intervalos (2,4) y (4,6), que son los más cercanos al punto medio del tubo sufren en los segundos iniciales su mayor variación de concetración. Mientras que en los intervalos (0,2) y (6,8) correspondientes a los extremos, se puede observar una pérdida más lineal a lo largo del tiempo. Se observa cómo la solución se aproxima al estado estacionario con el tiempo. &lt;br /&gt;
&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración u = 3 como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo [2,85-3,15]. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos alcanzan valores dentro del intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos el valor dentro del intervalo pedido para el extremo del tubo.&lt;br /&gt;
&lt;br /&gt;
Pidiendo a matlab el tiempo en que se produce este elemento con el comando t(364) obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si ∆x se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un ∆x suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;br /&gt;
&lt;br /&gt;
== Instalación de un limpiador ==&lt;br /&gt;
Se coloca un limpiador en el extremo x=0 después de 1 segundo. Debido a esto, la concentración en el tubo disminuye progresivamente hasta que se elimina completamente. Por lo que la solución en el estado estacionario es 0. &lt;br /&gt;
&lt;br /&gt;
La instalación del limpiador se corresponde con un valor fijo en el tiempo en el extremo x=0, matemáticamente se traduce en una condición Dirichlett en dicho extremo.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u(0,t) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado8limpiador.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Se puede observar que a partir de 1 sg (momento en el cual se coloca el limpiador) la concentración del contaminante en el tubo disminuye progresivamente hasta desaparecer. Para tiempo elevado (estado estacionario) la concentración se mantiene nula. La concentración en el extremo x=0 se mantiene en 0, mientras la del extremo x=8 disminuye progresivamente.&lt;br /&gt;
&lt;br /&gt;
El código empleado para obtener la gráfica ha sido:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 100; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca1 = @(t) t*0; % t&amp;lt;1&lt;br /&gt;
ca2 = @(t) t*0; % t&amp;gt;=1&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
xint = x(2:end);&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K para t&amp;lt;1&lt;br /&gt;
K1=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K1(1,2) = -2;&lt;br /&gt;
K1(end,end-1) = -2;&lt;br /&gt;
K1 = K1*(D/incrX^2);&lt;br /&gt;
% Matriz K para t&amp;gt;=1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(end,end-1) = -2;&lt;br /&gt;
K2 = K2*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
% Inicializacion de la matriz de soluciones&lt;br /&gt;
pos = round((length(t)-1)/tM);&lt;br /&gt;
sol1 = zeros(N+1,pos);&lt;br /&gt;
sol2 = zeros(N,M+1-pos);&lt;br /&gt;
sol1(:,1)= U0;&lt;br /&gt;
% Método de Euler implicito&lt;br /&gt;
for i=1:pos-1&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca1(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca1(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol1(:,i+1) = (eye(size(K1))+incrT*K1)\(sol1(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
U02 = sol1(2:N+1,pos);&lt;br /&gt;
sol2(:,1) = U02;&lt;br /&gt;
Gi = [];&lt;br /&gt;
Gi2 = [];&lt;br /&gt;
for i=1:M+1-pos&lt;br /&gt;
    Gi = g(xint,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)+D*ca2(t(i))/incrX^2;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(xint,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)+D*ca2(t(i+1))/incrX^2;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol2(:,i+1) = (eye(size(K2))+incrT*K2)\(sol2(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Composicion de la matriz de soluciones&lt;br /&gt;
M1 = [zeros(1,M+1-pos);sol2(:,2:end)];&lt;br /&gt;
sol = [sol1,M1];&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Error del 5% ===&lt;br /&gt;
Vamos a suponer que el error es respecto a la concetración máxima en el extremo x=8 (que es 4). Con esta hipótesis debemos buscar el tiempo que tarda la concentración en ser menor que 0,2 (5% de la concentración máxima). Siguiendo el razonamiento en el subapartado 5.1 se deduce se alcanza la situación estacionaria en la posición 2122 del vector tiempo (para 200 segundos). Este tiempo es 79.5425 segundos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modificación en las condiciones de contorno ==&lt;br /&gt;
Supondremos una ligera modificación en el problema respecto a las condiciones de contorno.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-u_{xx}=0\\u_x(0,t)=-4\\u_x(8,t)=0\\u(x,0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La otra condición es de tipo Neumann en cero &amp;lt;math&amp;gt;F(t)= -Du_x(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt;u_x(0,t)=-4&amp;lt;0&amp;lt;/math&amp;gt; y además &amp;lt;math&amp;gt;D=1&amp;gt;0&amp;lt;/math&amp;gt;, debe verificarse que &amp;lt;math&amp;gt;F(t)=4&amp;gt;0&amp;lt;/math&amp;gt;. Entonces, cogiendo un &amp;lt;math&amp;gt;∆x&amp;gt;0&amp;lt;/math&amp;gt; e infinitesimal obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)-u(0,t)&amp;lt;0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)&amp;lt;u(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lo que indica que en el extremo x=0 hay más contaminante en el infinitesimalmente siguiente, por lo que el flujo irá hacia la derecha de forma que entra un flujo constante en todo t igual a F = 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 10; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0-4;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(end,end-1) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9corregido.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interpretación física ===&lt;br /&gt;
&lt;br /&gt;
En el extremo x=0 está siendo introducido contaminante con flujo igual a 4, constante en el tiempo. Como consecuencia, la concentración en el tubo no hace más que aumentar.&lt;br /&gt;
&lt;br /&gt;
En la gráfica se puede observar que en la primera mitad del tubo (de concentración 2) la concentracion aumenta rapidamente y luego se estabiliza a una pendiente constante. Esto es debido a que inicialmente, hay un flujo entrante desde la membrana x=0 y otro de la sección x=4 procedente de la otra mitad por tener concentración inicial mayor (igual a 4). Ese segundo flujo es la razón por la que observamos un ligero descenso de la concentración para luego aumentar con pendiente constante.&lt;br /&gt;
&lt;br /&gt;
Después de un tiempo podemos observar que la concentración del tubo crece con la misma pendiente (la que nos da el flujo = 4).&lt;br /&gt;
Aplicando el código con 30 segundos se puede apreciar que las pendientes son paralelas.&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9paralelo.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferenciales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39472</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39472"/>
				<updated>2017-04-28T21:34:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Resolución por el método de Heun */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt;, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal &amp;lt;math&amp;gt;∆t = ∆x/4&amp;lt;/math&amp;gt; es mayor que el valor límite que determina si un método explícito es estable o no (&amp;lt;math&amp;gt;∆t = 0.5 \cdot (∆x)^2&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen. Respecto al resto del gráfico se deducen los mismos resultados que en el apartado 2.1.1 del método del trapecio.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta valores del eje de la concentración del orden de &amp;lt;math&amp;gt;10^{226}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Al comparar el error entre los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo. Pero según transcurre el tiempo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito, no podemos observar el error en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de 10^139 hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que comentamos con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La unica diferencia está en el orden de magnitud que esta vez es de 10^226, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud 10^139 al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
El punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt; se corresponde con el primer punto despues del salto con concentración inicial 4. Al permitir el flujo de la misma, será la primera sección en liberar el mayor gradiente de concentración, estabilizándose a medida que avanza el tiempo y aumenta la concentración en el intervalo de x = [0,4] hasta alcanzar el equilibrio.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Esta gráfica representa la concentración en cada punto del tubo. Cada recta corresponde a un valor de tiempo determinado. Podemos observar que los intervalos (2,4) y (4,6), que son los más cercanos al punto medio del tubo sufren en los segundos iniciales su mayor variación de concetración. Mientras que en los intervalos (0,2) y (6,8) correspondientes a los extremos, se puede observar una pérdida más lineal a lo largo del tiempo. Se observa cómo la solución se aproxima al estado estacionario con el tiempo. &lt;br /&gt;
&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración u = 3 como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo [2,85-3,15]. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos alcanzan valores dentro del intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos el valor dentro del intervalo pedido para el extremo del tubo.&lt;br /&gt;
&lt;br /&gt;
Pidiendo a matlab el tiempo en que se produce este elemento con el comando t(364) obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si ∆x se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un ∆x suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;br /&gt;
&lt;br /&gt;
== Instalación de un limpiador ==&lt;br /&gt;
Se coloca un limpiador en el extremo x=0 después de 1 segundo. Debido a esto, la concentración en el tubo disminuye progresivamente hasta que se elimina completamente. Por lo que la solución en el estado estacionario es 0. &lt;br /&gt;
&lt;br /&gt;
La instalación del limpiador se corresponde con un valor fijo en el tiempo en el extremo x=0, matemáticamente se traduce en una condición Dirichlett en dicho extremo.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u(0,t) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado8limpiador.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Se puede observar que a partir de 1 sg (momento en el cual se coloca el limpiador) la concentración del contaminante en el tubo disminuye progresivamente hasta desaparecer. Para tiempo elevado (estado estacionario) la concentración se mantiene nula. La concentración en el extremo x=0 se mantiene en 0, mientras la del extremo x=8 disminuye progresivamente.&lt;br /&gt;
&lt;br /&gt;
El código empleado para obtener la gráfica ha sido:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 100; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca1 = @(t) t*0; % t&amp;lt;1&lt;br /&gt;
ca2 = @(t) t*0; % t&amp;gt;=1&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
xint = x(2:end);&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K para t&amp;lt;1&lt;br /&gt;
K1=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K1(1,2) = -2;&lt;br /&gt;
K1(end,end-1) = -2;&lt;br /&gt;
K1 = K1*(D/incrX^2);&lt;br /&gt;
% Matriz K para t&amp;gt;=1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(end,end-1) = -2;&lt;br /&gt;
K2 = K2*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
% Inicializacion de la matriz de soluciones&lt;br /&gt;
pos = round((length(t)-1)/tM);&lt;br /&gt;
sol1 = zeros(N+1,pos);&lt;br /&gt;
sol2 = zeros(N,M+1-pos);&lt;br /&gt;
sol1(:,1)= U0;&lt;br /&gt;
% Método de Euler implicito&lt;br /&gt;
for i=1:pos-1&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca1(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca1(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol1(:,i+1) = (eye(size(K1))+incrT*K1)\(sol1(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
U02 = sol1(2:N+1,pos);&lt;br /&gt;
sol2(:,1) = U02;&lt;br /&gt;
Gi = [];&lt;br /&gt;
Gi2 = [];&lt;br /&gt;
for i=1:M+1-pos&lt;br /&gt;
    Gi = g(xint,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)+D*ca2(t(i))/incrX^2;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(xint,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)+D*ca2(t(i+1))/incrX^2;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol2(:,i+1) = (eye(size(K2))+incrT*K2)\(sol2(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Composicion de la matriz de soluciones&lt;br /&gt;
M1 = [zeros(1,M+1-pos);sol2(:,2:end)];&lt;br /&gt;
sol = [sol1,M1];&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Error del 5% ===&lt;br /&gt;
Vamos a suponer que el error es respecto a la concetración máxima en el extremo x=8 (que es 4). Con esta hipótesis debemos buscar el tiempo que tarda la concentración en ser menor que 0,2 (5% de la concentración máxima). Siguiendo el razonamiento en el subapartado 5.1 se deduce se alcanza la situación estacionaria en la posición 2122 del vector tiempo (para 200 segundos). Este tiempo es 79.5425 segundos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modificación en las condiciones de contorno ==&lt;br /&gt;
Supondremos una ligera modificación en el problema respecto a las condiciones de contorno.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-u_{xx}=0\\u_x(0,t)=-4\\u_x(8,t)=0\\u(x,0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La otra condición es de tipo Neumann en cero &amp;lt;math&amp;gt;F(t)= -Du_x(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt;u_x(0,t)=-4&amp;lt;0&amp;lt;/math&amp;gt; y además &amp;lt;math&amp;gt;D=1&amp;gt;0&amp;lt;/math&amp;gt;, debe verificarse que &amp;lt;math&amp;gt;F(t)=4&amp;gt;0&amp;lt;/math&amp;gt;. Entonces, cogiendo un &amp;lt;math&amp;gt;∆x&amp;gt;0&amp;lt;/math&amp;gt; e infinitesimal obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)-u(0,t)&amp;lt;0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)&amp;lt;u(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lo que indica que en el extremo x=0 hay más contaminante en el infinitesimalmente siguiente, por lo que el flujo irá hacia la derecha de forma que entra un flujo constante en todo t igual a F = 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 10; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0-4;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(end,end-1) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9corregido.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interpretación física ===&lt;br /&gt;
&lt;br /&gt;
En el extremo x=0 está siendo introducido contaminante con flujo igual a 4, constante en el tiempo. Como consecuencia, la concentración en el tubo no hace más que aumentar.&lt;br /&gt;
&lt;br /&gt;
En la gráfica se puede observar que en la primera mitad del tubo (de concentración 2) la concentracion aumenta rapidamente y luego se estabiliza a una pendiente constante. Esto es debido a que inicialmente, hay un flujo entrante desde la membrana x=0 y otro de la sección x=4 procedente de la otra mitad por tener concentración inicial mayor (igual a 4). Ese segundo flujo es la razón por la que observamos un ligero descenso de la concentración para luego aumentar con pendiente constante.&lt;br /&gt;
&lt;br /&gt;
Después de un tiempo podemos observar que la concentración del tubo crece con la misma pendiente (la que nos da el flujo = 4).&lt;br /&gt;
Aplicando el código con 30 segundos se puede apreciar que las pendientes son paralelas.&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9paralelo.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferenciales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39471</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39471"/>
				<updated>2017-04-28T21:30:08Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Resolución por el método del trapecio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt;, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal &amp;lt;math&amp;gt;∆t = ∆x/4&amp;lt;/math&amp;gt; es mayor que el valor límite que determina si un método explícito es estable o no (&amp;lt;math&amp;gt;∆t = 0.5 \cdot (∆x)^2&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen. Respecto al resto del gráfico se deducen los mismos resultados que en el apartado 2.1.1 del método del trapecio.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta el eje de la concentración en 10^226&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Al comparar el error entre los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo. Pero según transcurre el tiempo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito, no podemos observar el error en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de 10^139 hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que comentamos con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La unica diferencia está en el orden de magnitud que esta vez es de 10^226, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud 10^139 al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
El punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt; se corresponde con el primer punto despues del salto con concentración inicial 4. Al permitir el flujo de la misma, será la primera sección en liberar el mayor gradiente de concentración, estabilizándose a medida que avanza el tiempo y aumenta la concentración en el intervalo de x = [0,4] hasta alcanzar el equilibrio.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Esta gráfica representa la concentración en cada punto del tubo. Cada recta corresponde a un valor de tiempo determinado. Podemos observar que los intervalos (2,4) y (4,6), que son los más cercanos al punto medio del tubo sufren en los segundos iniciales su mayor variación de concetración. Mientras que en los intervalos (0,2) y (6,8) correspondientes a los extremos, se puede observar una pérdida más lineal a lo largo del tiempo. Se observa cómo la solución se aproxima al estado estacionario con el tiempo. &lt;br /&gt;
&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración u = 3 como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo [2,85-3,15]. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos alcanzan valores dentro del intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos el valor dentro del intervalo pedido para el extremo del tubo.&lt;br /&gt;
&lt;br /&gt;
Pidiendo a matlab el tiempo en que se produce este elemento con el comando t(364) obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si ∆x se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un ∆x suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;br /&gt;
&lt;br /&gt;
== Instalación de un limpiador ==&lt;br /&gt;
Se coloca un limpiador en el extremo x=0 después de 1 segundo. Debido a esto, la concentración en el tubo disminuye progresivamente hasta que se elimina completamente. Por lo que la solución en el estado estacionario es 0. &lt;br /&gt;
&lt;br /&gt;
La instalación del limpiador se corresponde con un valor fijo en el tiempo en el extremo x=0, matemáticamente se traduce en una condición Dirichlett en dicho extremo.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u(0,t) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado8limpiador.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Se puede observar que a partir de 1 sg (momento en el cual se coloca el limpiador) la concentración del contaminante en el tubo disminuye progresivamente hasta desaparecer. Para tiempo elevado (estado estacionario) la concentración se mantiene nula. La concentración en el extremo x=0 se mantiene en 0, mientras la del extremo x=8 disminuye progresivamente.&lt;br /&gt;
&lt;br /&gt;
El código empleado para obtener la gráfica ha sido:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 100; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca1 = @(t) t*0; % t&amp;lt;1&lt;br /&gt;
ca2 = @(t) t*0; % t&amp;gt;=1&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
xint = x(2:end);&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K para t&amp;lt;1&lt;br /&gt;
K1=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K1(1,2) = -2;&lt;br /&gt;
K1(end,end-1) = -2;&lt;br /&gt;
K1 = K1*(D/incrX^2);&lt;br /&gt;
% Matriz K para t&amp;gt;=1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(end,end-1) = -2;&lt;br /&gt;
K2 = K2*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
% Inicializacion de la matriz de soluciones&lt;br /&gt;
pos = round((length(t)-1)/tM);&lt;br /&gt;
sol1 = zeros(N+1,pos);&lt;br /&gt;
sol2 = zeros(N,M+1-pos);&lt;br /&gt;
sol1(:,1)= U0;&lt;br /&gt;
% Método de Euler implicito&lt;br /&gt;
for i=1:pos-1&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca1(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca1(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol1(:,i+1) = (eye(size(K1))+incrT*K1)\(sol1(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
U02 = sol1(2:N+1,pos);&lt;br /&gt;
sol2(:,1) = U02;&lt;br /&gt;
Gi = [];&lt;br /&gt;
Gi2 = [];&lt;br /&gt;
for i=1:M+1-pos&lt;br /&gt;
    Gi = g(xint,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)+D*ca2(t(i))/incrX^2;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(xint,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)+D*ca2(t(i+1))/incrX^2;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol2(:,i+1) = (eye(size(K2))+incrT*K2)\(sol2(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Composicion de la matriz de soluciones&lt;br /&gt;
M1 = [zeros(1,M+1-pos);sol2(:,2:end)];&lt;br /&gt;
sol = [sol1,M1];&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Error del 5% ===&lt;br /&gt;
Vamos a suponer que el error es respecto a la concetración máxima en el extremo x=8 (que es 4). Con esta hipótesis debemos buscar el tiempo que tarda la concentración en ser menor que 0,2 (5% de la concentración máxima). Siguiendo el razonamiento en el subapartado 5.1 se deduce se alcanza la situación estacionaria en la posición 2122 del vector tiempo (para 200 segundos). Este tiempo es 79.5425 segundos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modificación en las condiciones de contorno ==&lt;br /&gt;
Supondremos una ligera modificación en el problema respecto a las condiciones de contorno.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-u_{xx}=0\\u_x(0,t)=-4\\u_x(8,t)=0\\u(x,0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La otra condición es de tipo Neumann en cero &amp;lt;math&amp;gt;F(t)= -Du_x(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt;u_x(0,t)=-4&amp;lt;0&amp;lt;/math&amp;gt; y además &amp;lt;math&amp;gt;D=1&amp;gt;0&amp;lt;/math&amp;gt;, debe verificarse que &amp;lt;math&amp;gt;F(t)=4&amp;gt;0&amp;lt;/math&amp;gt;. Entonces, cogiendo un &amp;lt;math&amp;gt;∆x&amp;gt;0&amp;lt;/math&amp;gt; e infinitesimal obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)-u(0,t)&amp;lt;0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)&amp;lt;u(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lo que indica que en el extremo x=0 hay más contaminante en el infinitesimalmente siguiente, por lo que el flujo irá hacia la derecha de forma que entra un flujo constante en todo t igual a F = 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 10; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0-4;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(end,end-1) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9corregido.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interpretación física ===&lt;br /&gt;
&lt;br /&gt;
En el extremo x=0 está siendo introducido contaminante con flujo igual a 4, constante en el tiempo. Como consecuencia, la concentración en el tubo no hace más que aumentar.&lt;br /&gt;
&lt;br /&gt;
En la gráfica se puede observar que en la primera mitad del tubo (de concentración 2) la concentracion aumenta rapidamente y luego se estabiliza a una pendiente constante. Esto es debido a que inicialmente, hay un flujo entrante desde la membrana x=0 y otro de la sección x=4 procedente de la otra mitad por tener concentración inicial mayor (igual a 4). Ese segundo flujo es la razón por la que observamos un ligero descenso de la concentración para luego aumentar con pendiente constante.&lt;br /&gt;
&lt;br /&gt;
Después de un tiempo podemos observar que la concentración del tubo crece con la misma pendiente (la que nos da el flujo = 4).&lt;br /&gt;
Aplicando el código con 30 segundos se puede apreciar que las pendientes son paralelas.&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9paralelo.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferenciales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39470</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39470"/>
				<updated>2017-04-28T21:28:04Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Resolución por el método de Euler explícito */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal &amp;lt;math&amp;gt;∆t = ∆x/4&amp;lt;/math&amp;gt; es mayor que el valor límite que determina si un método explícito es estable o no (&amp;lt;math&amp;gt;∆t = 0.5 \cdot (∆x)^2&amp;lt;/math&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen. Respecto al resto del gráfico se deducen los mismos resultados que en el apartado 2.1.1 del método del trapecio.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta el eje de la concentración en 10^226&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Al comparar el error entre los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo. Pero según transcurre el tiempo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito, no podemos observar el error en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de 10^139 hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que comentamos con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La unica diferencia está en el orden de magnitud que esta vez es de 10^226, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud 10^139 al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
El punto &amp;lt;math&amp;gt;x=4&amp;lt;/math&amp;gt; se corresponde con el primer punto despues del salto con concentración inicial 4. Al permitir el flujo de la misma, será la primera sección en liberar el mayor gradiente de concentración, estabilizándose a medida que avanza el tiempo y aumenta la concentración en el intervalo de x = [0,4] hasta alcanzar el equilibrio.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Esta gráfica representa la concentración en cada punto del tubo. Cada recta corresponde a un valor de tiempo determinado. Podemos observar que los intervalos (2,4) y (4,6), que son los más cercanos al punto medio del tubo sufren en los segundos iniciales su mayor variación de concetración. Mientras que en los intervalos (0,2) y (6,8) correspondientes a los extremos, se puede observar una pérdida más lineal a lo largo del tiempo. Se observa cómo la solución se aproxima al estado estacionario con el tiempo. &lt;br /&gt;
&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración u = 3 como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo [2,85-3,15]. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos alcanzan valores dentro del intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos el valor dentro del intervalo pedido para el extremo del tubo.&lt;br /&gt;
&lt;br /&gt;
Pidiendo a matlab el tiempo en que se produce este elemento con el comando t(364) obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si ∆x se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un ∆x suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;br /&gt;
&lt;br /&gt;
== Instalación de un limpiador ==&lt;br /&gt;
Se coloca un limpiador en el extremo x=0 después de 1 segundo. Debido a esto, la concentración en el tubo disminuye progresivamente hasta que se elimina completamente. Por lo que la solución en el estado estacionario es 0. &lt;br /&gt;
&lt;br /&gt;
La instalación del limpiador se corresponde con un valor fijo en el tiempo en el extremo x=0, matemáticamente se traduce en una condición Dirichlett en dicho extremo.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u(0,t) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado8limpiador.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Se puede observar que a partir de 1 sg (momento en el cual se coloca el limpiador) la concentración del contaminante en el tubo disminuye progresivamente hasta desaparecer. Para tiempo elevado (estado estacionario) la concentración se mantiene nula. La concentración en el extremo x=0 se mantiene en 0, mientras la del extremo x=8 disminuye progresivamente.&lt;br /&gt;
&lt;br /&gt;
El código empleado para obtener la gráfica ha sido:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 100; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca1 = @(t) t*0; % t&amp;lt;1&lt;br /&gt;
ca2 = @(t) t*0; % t&amp;gt;=1&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
xint = x(2:end);&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K para t&amp;lt;1&lt;br /&gt;
K1=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K1(1,2) = -2;&lt;br /&gt;
K1(end,end-1) = -2;&lt;br /&gt;
K1 = K1*(D/incrX^2);&lt;br /&gt;
% Matriz K para t&amp;gt;=1&lt;br /&gt;
K2=2*diag(ones(1,N))-diag(ones(1,N-1),1)-diag(ones(1,N-1),-1);&lt;br /&gt;
K2(end,end-1) = -2;&lt;br /&gt;
K2 = K2*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
% Inicializacion de la matriz de soluciones&lt;br /&gt;
pos = round((length(t)-1)/tM);&lt;br /&gt;
sol1 = zeros(N+1,pos);&lt;br /&gt;
sol2 = zeros(N,M+1-pos);&lt;br /&gt;
sol1(:,1)= U0;&lt;br /&gt;
% Método de Euler implicito&lt;br /&gt;
for i=1:pos-1&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca1(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca1(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol1(:,i+1) = (eye(size(K1))+incrT*K1)\(sol1(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
U02 = sol1(2:N+1,pos);&lt;br /&gt;
sol2(:,1) = U02;&lt;br /&gt;
Gi = [];&lt;br /&gt;
Gi2 = [];&lt;br /&gt;
for i=1:M+1-pos&lt;br /&gt;
    Gi = g(xint,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)+D*ca2(t(i))/incrX^2;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(xint,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)+D*ca2(t(i+1))/incrX^2;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol2(:,i+1) = (eye(size(K2))+incrT*K2)\(sol2(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Composicion de la matriz de soluciones&lt;br /&gt;
M1 = [zeros(1,M+1-pos);sol2(:,2:end)];&lt;br /&gt;
sol = [sol1,M1];&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
=== Error del 5% ===&lt;br /&gt;
Vamos a suponer que el error es respecto a la concetración máxima en el extremo x=8 (que es 4). Con esta hipótesis debemos buscar el tiempo que tarda la concentración en ser menor que 0,2 (5% de la concentración máxima). Siguiendo el razonamiento en el subapartado 5.1 se deduce se alcanza la situación estacionaria en la posición 2122 del vector tiempo (para 200 segundos). Este tiempo es 79.5425 segundos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modificación en las condiciones de contorno ==&lt;br /&gt;
Supondremos una ligera modificación en el problema respecto a las condiciones de contorno.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-u_{xx}=0\\u_x(0,t)=-4\\u_x(8,t)=0\\u(x,0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La otra condición es de tipo Neumann en cero &amp;lt;math&amp;gt;F(t)= -Du_x(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt;u_x(0,t)=-4&amp;lt;0&amp;lt;/math&amp;gt; y además &amp;lt;math&amp;gt;D=1&amp;gt;0&amp;lt;/math&amp;gt;, debe verificarse que &amp;lt;math&amp;gt;F(t)=4&amp;gt;0&amp;lt;/math&amp;gt;. Entonces, cogiendo un &amp;lt;math&amp;gt;∆x&amp;gt;0&amp;lt;/math&amp;gt; e infinitesimal obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)-u(0,t)&amp;lt;0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)&amp;lt;u(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lo que indica que en el extremo x=0 hay más contaminante en el infinitesimalmente siguiente, por lo que el flujo irá hacia la derecha de forma que entra un flujo constante en todo t igual a F = 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 10; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0-4;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(end,end-1) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9corregido.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Interpretación física ===&lt;br /&gt;
&lt;br /&gt;
En el extremo x=0 está siendo introducido contaminante con flujo igual a 4, constante en el tiempo. Como consecuencia, la concentración en el tubo no hace más que aumentar.&lt;br /&gt;
&lt;br /&gt;
En la gráfica se puede observar que en la primera mitad del tubo (de concentración 2) la concentracion aumenta rapidamente y luego se estabiliza a una pendiente constante. Esto es debido a que inicialmente, hay un flujo entrante desde la membrana x=0 y otro de la sección x=4 procedente de la otra mitad por tener concentración inicial mayor (igual a 4). Ese segundo flujo es la razón por la que observamos un ligero descenso de la concentración para luego aumentar con pendiente constante.&lt;br /&gt;
&lt;br /&gt;
Después de un tiempo podemos observar que la concentración del tubo crece con la misma pendiente (la que nos da el flujo = 4).&lt;br /&gt;
Aplicando el código con 30 segundos se puede apreciar que las pendientes son paralelas.&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9paralelo.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Categoría:Ecuaciones Diferenciales]]&lt;br /&gt;
[[Categoría:ED16/17]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39429</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39429"/>
				<updated>2017-04-28T18:20:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Tiempo en alcanzar la solución estacionaria */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta el eje de la concentración en 10^226&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito no podemos observar el en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de 10^139 hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que comentamos con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La unica diferencia está en el orden de magnitud que esta vez es de 10^226, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud 10^139 al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u{x}(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Se observa cómo la solución se aproxima al estado estacionario con el tiempo.&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración u = 3 como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%, que corresponderá a 0,15. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo [2,85-3,15]. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo de la barra en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos llegan a entrar en el intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos el valor dentro del intervalo pedido para el extremo del tubo.&lt;br /&gt;
&lt;br /&gt;
Pidiendo a matlab el tiempo en que se produce este elemento con el comando t(364) obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si ∆x se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un ∆x suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;br /&gt;
&lt;br /&gt;
== Modificación en las condiciones de contorno ==&lt;br /&gt;
Supondremos una ligera modificación en el problema respecto a las condiciones de contorno.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-u_{xx}=0\\u_x(0,t)=-4\\u_x(8,t)=0\\u(x,0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La otra condición es de tipo Neumann en cero &amp;lt;math&amp;gt;F(t)= -Du_x(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt;u_x(0,t)=-4&amp;lt;0&amp;lt;/math&amp;gt; y además &amp;lt;math&amp;gt;D=1&amp;gt;0&amp;lt;/math&amp;gt;, debe verificarse que &amp;lt;math&amp;gt;F(t)=4&amp;gt;0&amp;lt;/math&amp;gt;. Entonces, cogiendo un &amp;lt;math&amp;gt;∆x&amp;gt;0&amp;lt;/math&amp;gt; e infinitesimal obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)-u(0,t)&amp;lt;0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)&amp;lt;u(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lo que indica que en el extremo x=0 hay más contaminante en el infinitesimalmente siguiente, por lo que el flujo irá hacia la derecha de forma que entra un flujo constante en todo t igual a F = 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 10; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0-4;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(end,end-1) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9corregido.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interpretación física ==&lt;br /&gt;
&lt;br /&gt;
En el extremo x=0 está siendo introducido contaminante con flujo igual a 4, constante en el tiempo. Como consecuencia, la concentración en el tubo no hace más que aumentar.&lt;br /&gt;
&lt;br /&gt;
En la gráfica se puede observar que en la primera mitad del tubo (de concentración 2) la concentracion aumenta rapidamente y luego se estabiliza a una pendiente constante. Esto es debido a que inicialmente, hay un flujo entrante desde la membrana x=0 y otro de la sección x=4 procedente de la otra mitad por tener concentración inicial mayor (igual a 4). Ese segundo flujo es la razón por la que observamos un ligero descenso de la concentración para luego aumentar con pendiente constante.&lt;br /&gt;
&lt;br /&gt;
Después de un tiempo podemos observar que la concentración del tubo crece con la misma pendiente (la que nos da el flujo = 4).&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9paralelo.png|1200px|center]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39428</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39428"/>
				<updated>2017-04-28T18:17:04Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Tiempo en alcanzar la solución estacionaria */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta el eje de la concentración en 10^226&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito no podemos observar el en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de 10^139 hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que comentamos con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La unica diferencia está en el orden de magnitud que esta vez es de 10^226, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud 10^139 al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u{x}(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Se observa cómo la solución se aproxima al estado estacionario con el tiempo.&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración u = 3 como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%, que corresponderá a 0,15. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo [2,85-3,15]. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo de la barra en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos llegan a entrar en el intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos el valor dentro del intervalo pedido para el extremo del tubo.&lt;br /&gt;
&lt;br /&gt;
 Pidiendo a matlab el tiempo en que se produce este elemento con el comando t(364) obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si ∆x se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un ∆x suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Modificación en las condiciones de contorno ==&lt;br /&gt;
Supondremos una ligera modificación en el problema respecto a las condiciones de contorno.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\left\{\begin{matrix}\\u_t-u_{xx}=0\\u_x(0,t)=-4\\u_x(8,t)=0\\u(x,0)=u_0\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La otra condición es de tipo Neumann en cero &amp;lt;math&amp;gt;F(t)= -Du_x(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con &amp;lt;math&amp;gt;u_x(0,t)=-4&amp;lt;0&amp;lt;/math&amp;gt; y además &amp;lt;math&amp;gt;D=1&amp;gt;0&amp;lt;/math&amp;gt;, debe verificarse que &amp;lt;math&amp;gt;F(t)=4&amp;gt;0&amp;lt;/math&amp;gt;. Entonces, cogiendo un &amp;lt;math&amp;gt;∆x&amp;gt;0&amp;lt;/math&amp;gt; e infinitesimal obtenemos:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)-u(0,t)&amp;lt;0&amp;lt;/math&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u(0+∆x,t)&amp;lt;u(0,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
lo que indica que en el extremo x=0 hay más contaminante en el infinitesimalmente siguiente, por lo que el flujo irá hacia la derecha de forma que entra un flujo constante en todo t igual a F = 4&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 10; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0-4;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(end,end-1) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i));&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9corregido.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Interpretación física ==&lt;br /&gt;
&lt;br /&gt;
En el extremo x=0 está siendo introducido contaminante con flujo igual a 4, constante en el tiempo. Como consecuencia, la concentración en el tubo no hace más que aumentar.&lt;br /&gt;
&lt;br /&gt;
En la gráfica se puede observar que en la primera mitad del tubo (de concentración 2) la concentracion aumenta rapidamente y luego se estabiliza a una pendiente constante. Esto es debido a que inicialmente, hay un flujo entrante desde la membrana x=0 y otro de la sección x=4 procedente de la otra mitad por tener concentración inicial mayor (igual a 4). Ese segundo flujo es la razón por la que observamos un ligero descenso de la concentración para luego aumentar con pendiente constante.&lt;br /&gt;
&lt;br /&gt;
Después de un tiempo podemos observar que la concentración del tubo crece con la misma pendiente (la que nos da el flujo = 4).&lt;br /&gt;
&lt;br /&gt;
[[archivo:apartado9paralelo.png|1200px|center]]&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39426</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39426"/>
				<updated>2017-04-28T18:13:16Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Tiempo en alcanzar la solución estacionaria */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta el eje de la concentración en 10^226&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito no podemos observar el en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de 10^139 hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que comentamos con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La unica diferencia está en el orden de magnitud que esta vez es de 10^226, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud 10^139 al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u{x}(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Se observa cómo la solución se aproxima al estado estacionario con el tiempo.&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración u = 3 como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%, que corresponderá a 0,15. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo [2,85-3,15]. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo de la barra en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos llegan a entrar en el intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos los valores dentro del intervalo pedido. Pidiendo a matlab el tiempo en que se produce este elemento con el comando t(364) obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La solución cambia ligeramente si ∆x se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un ∆x suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39425</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39425"/>
				<updated>2017-04-28T18:12:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Tiempo en alcanzar la solución estacionaria */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta el eje de la concentración en 10^226&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito no podemos observar el en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de 10^139 hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que comentamos con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La unica diferencia está en el orden de magnitud que esta vez es de 10^226, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud 10^139 al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u{x}(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Se observa cómo la solución se aproxima al estado estacionario con el tiempo.&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración u = 3 como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%, que corresponderá a 0,15. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo [2,85-3,15]. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo de la barra en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos llegan a entrar en el intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos los valores dentro del intervalo pedido. Pidiendo a matlab el tiempo en que se produce este elemento con el comando t(364) obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. &lt;br /&gt;
La solución cambia ligeramente si ∆x se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un ∆x suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39423</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39423"/>
				<updated>2017-04-28T18:10:13Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta el eje de la concentración en 10^226&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito no podemos observar el en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de 10^139 hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que comentamos con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La unica diferencia está en el orden de magnitud que esta vez es de 10^226, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud 10^139 al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u{x}(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Se observa cómo la solución se aproxima al estado estacionario con el tiempo.&lt;br /&gt;
===Tiempo en alcanzar la solución estacionaria===&lt;br /&gt;
El estado estacionario es el valor de concentración u = 3 como podemos comprobar en el gráfico y obteniendo los valores en cualquier punto de x para un valor de tiempo alto. Para encontrar el tiempo en que se alcanza este valor consideramos un error del 5%, que corresponderá a 0,15. Por tanto buscaremos el tiempo a partir del cual todos los puntos de la barra tienen su concentración comprendida en el intervalo [2,85-3,15]. Ayudándonos por la matriz solución y sabiendo que los extremos de la barra corresponden a los valores máximo y mínimo de la barra en todo instante (ver gráfico), tendiendo ambos asintóticamente al 3 desde los valores 2 y 4, basta con comprobar cuando los valores en los extremos llegan a entrar en el intervalo. Dado que 3 es el valor medio entre los valores iniciales en ambos extremos 2 y 4, la aproximación se produce de forma simétrica y en el punto de columna 364 de la matriz solución encontramos los valores dentro del intervalo pedido. Pidiendo a matlab el tiempo en que se produce este elemento con el comando t(364) obtenemos el valor de tiempo 13.77233 segundos, que es el tiempo que tarda en alcanzar el estado estacionario con error del 5%. La solución cambia ligeramente si ∆x se divide entre diez ya que la aproximación al resultado real será mejor. Pero la variación es muy pequeña dado que ya teníamos un ∆x suficientemente pequeño para la resolución. Lo encontramos en la columna 3695 y nos da un valor de 13.8523 segundos.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39420</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39420"/>
				<updated>2017-04-28T17:50:00Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Resolución por el método de Heun */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como en el caso del método de Euler explícito, este método es también inestable, pero con unos picos de mayor magnitud ya que el gráfico muesta el eje de la concentración en 10^226&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito no podemos observar el en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de 10^139 hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que comentamos con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La unica diferencia está en el orden de magnitud que esta vez es de 10^226, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud 10^139 al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u{x}(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Se observa cómo la solución se aproxima al estado estacionario con el tiempo.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39418</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39418"/>
				<updated>2017-04-28T17:35:24Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Comparativa de métodos empleados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| En cambio, en la comparativa del método del trapecio con el de Euler explícito no podemos observar el en los primeros instantes porque crece a medida que avanzamos en el tiempo, como se puede observar en el corte por el tiempo de 7 segundos, hasta valores muy altos, especialmente en el centro del tubo. Este orden de magnitud de 10^139 hace que no se observe en el gráfico el error en tiempos pequeños, que también existe. Esto se explica por la inestabilidad del método de Euler explícito que comentamos con anterioridad. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| La comparativa entre el método del trapecio y de Heun es muy similar a la anterior dado que el método de Heun también resultaba inestable. La unica diferencia está en el orden de magnitud que esta vez es de 10^226, mucho más alto que el método anterior. Además el error es más constante a lo largo del tubo que en la comparativa del trapecio con Euler explícito, es decir, hay menos diferencia entre el error en el punto medio y los extremos del tubo. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Este último gráfico muestra la comparativa entre los dos métodos de Euler. El método implícito es el más exacto que hemos obtenido hasta ahora y se compara con el método explícito que resultó inestable. Por tanto se muestra una gráfica similar a las anteriores con un error de orden de magnitud 10^139 al igual que en la segunda comparación. La similitud entre la segunda comparación y la última corrobora el error entre el método del trapecio y de Euler implícito que obtuvimos al principio y que mostraba un error despreciable a medida que el tiempo avanzaba. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, el contaminante se distribuye homogéneamente en el tubo a un valor de 3. Esto se puede apreciar en las gráficas de los métodos del trapecio y de Euler implícito. Las ecuaciones que debe satisfacer este estado estacionario son: &lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La función de la solución será :&amp;lt;math&amp;gt;u{x}(x,t)=3&amp;lt;/math&amp;gt; para tiempos grandes.&lt;br /&gt;
&lt;br /&gt;
Para ver la evolución de la concentración respecto al tiempo y la aproximación al estado estacionario, hemos calculado la diferencia entre la solución estacionaria y la solución en los puntos 0,1,2 y 10. &lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clc,clear all&lt;br /&gt;
%Datos&lt;br /&gt;
L=8; %Longitud de varilla&lt;br /&gt;
T=100; %Tiempo (usamos un valor alto, así nos aseguramos de alcanzar el estado estacionario)&lt;br /&gt;
D=1; %dato drl enunciado&lt;br /&gt;
%DISCRETIZACION TEMPORAL Y ESPACIAL&lt;br /&gt;
%Espacial&lt;br /&gt;
dx=0.15; % Paso en espacio&lt;br /&gt;
N=round(L/dx); %Número de subintervalos&lt;br /&gt;
x=linspace(0,L,N+1); % Vector de espacio&lt;br /&gt;
%Temporal&lt;br /&gt;
dt=dx/4; % Paso en tiempo&lt;br /&gt;
M=round(T/dt);%tiempo inicial t=0&lt;br /&gt;
t=linspace(0,T,M+1);&lt;br /&gt;
%t=0:dt:T; % Vector de tiempos&lt;br /&gt;
% Matriz de coeficientes. Aproximacion de -q*u_xx&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2)=-2;&lt;br /&gt;
K(N+1,N)=-2;&lt;br /&gt;
K=D*K/dx^2;&lt;br /&gt;
% Calculamos u0 condición inicial (datos del enunciado)&lt;br /&gt;
u0=[2*ones(1,round(N*4/8)),4*ones(1,round(N*4/8))]';&lt;br /&gt;
sol(1,:)=u0'; &lt;br /&gt;
U=u0;&lt;br /&gt;
%Aplicamos método del trapecio&lt;br /&gt;
for j=1:length(t)-1&lt;br /&gt;
U=(eye(N+1)+(dt*K)/2)\((eye(N+1)-(K*dt)/2)*U);&lt;br /&gt;
sol(j+1,:)= U'; &lt;br /&gt;
end&lt;br /&gt;
%una vez aplicada la iteración obtenemos la solucion estacionario a partir&lt;br /&gt;
%de la matriz de las soluciones&lt;br /&gt;
se=sol(length(t),:); %Solucion estacionaria&lt;br /&gt;
s0=sol(1,:); %Solución inicial (t=0)&lt;br /&gt;
pos1=round((1-0)/dt+1);&lt;br /&gt;
s1=sol(pos1,:);&lt;br /&gt;
pos2=round((2-0)/dt+1);&lt;br /&gt;
s2=sol(pos2,:);&lt;br /&gt;
pos10=round((10-0)/dt+1);&lt;br /&gt;
s10=sol(pos10,:);&lt;br /&gt;
&lt;br /&gt;
%Ya hemos obtenido las soluciones de la matriz de soluciones, el siguiente&lt;br /&gt;
%paso es us análisis gráfico&lt;br /&gt;
hold on&lt;br /&gt;
plot(x,se,'-r');&lt;br /&gt;
plot(x,s0,'-c');&lt;br /&gt;
plot(x,s1,'-g');&lt;br /&gt;
plot(x,s2,'-y');&lt;br /&gt;
plot(x,s10,'-b');&lt;br /&gt;
legend('u(Estacionaria)','u(Inicial (t=0))','u(1 segundo)','u(2 segundos)','u(10 segundos)');&lt;br /&gt;
xlabel('Posición en la varilla')&lt;br /&gt;
ylabel('Concentracion')&lt;br /&gt;
hold off&lt;br /&gt;
&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:apartado6puntos.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
Se observa cómo la solución se aproxima al estado estacionario con el tiempo.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39412</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39412"/>
				<updated>2017-04-28T17:12:56Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Resolución por el método de Euler implícito */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la nueva resolución por el método de Euler implícito se observa con respecto a la resolución por el método del trapecio que es más exacta en los primeros instantes del tiempo. En estos existía una serie de picos en la concentración en puntos cercanos al medio del tubo que ahora desaparecen.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler explícito, al ser el método explícito por el tamaño de paso tomado e aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, la solución en régimen transitorio puede ser despreciada y el tiempo es elevado (tiende a infinito) queda la ecuación:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39411</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39411"/>
				<updated>2017-04-28T16:49:44Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Evolución de la concentración en el punto medio de la tubería */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler explícito, al ser el método explícito por el tamaño de paso tomado e aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, la solución en régimen transitorio puede ser despreciada y el tiempo es elevado (tiende a infinito) queda la ecuación:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_pmedio1.png&amp;diff=39410</id>
		<title>Archivo:Grafico pmedio1.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_pmedio1.png&amp;diff=39410"/>
				<updated>2017-04-28T16:47:55Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_masatotal1.png&amp;diff=39409</id>
		<title>Archivo:Grafico masatotal1.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_masatotal1.png&amp;diff=39409"/>
				<updated>2017-04-28T16:38:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39408</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39408"/>
				<updated>2017-04-28T16:25:29Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Comparativa de métodos empleados */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrT/2*K)\(soltrap(:,i)+incrT/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrT*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrT*K)\(soleulerimp(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del Euler implicito y Euler explicito&lt;br /&gt;
error4 = abs(soleulerimp-soleuler);&lt;br /&gt;
figure(4)&lt;br /&gt;
mesh(Mt,Mx,error4), shading flat;&lt;br /&gt;
title('Error entre los métodos de Euler implícito y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler explícito, al ser el método explícito por el tamaño de paso tomado e aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_eulerimp_euler1.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;br /&gt;
&lt;br /&gt;
==Estado estacionario ==&lt;br /&gt;
Para tiempos grandes, la solución en régimen transitorio puede ser despreciada y el tiempo es elevado (tiende a infinito) queda la ecuación:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix} u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_eulerimp_euler1.png&amp;diff=39407</id>
		<title>Archivo:Grafico error eulerimp euler1.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_eulerimp_euler1.png&amp;diff=39407"/>
				<updated>2017-04-28T16:24:08Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_eulerimp_euler.png&amp;diff=39406</id>
		<title>Archivo:Grafico error eulerimp euler.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_eulerimp_euler.png&amp;diff=39406"/>
				<updated>2017-04-28T16:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_heun1.png&amp;diff=39405</id>
		<title>Archivo:Grafico error trapecio heun1.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_heun1.png&amp;diff=39405"/>
				<updated>2017-04-28T16:14:10Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_euler1.png&amp;diff=39404</id>
		<title>Archivo:Grafico error trapecio euler1.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_euler1.png&amp;diff=39404"/>
				<updated>2017-04-28T16:10:15Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_eulerimp1.png&amp;diff=39403</id>
		<title>Archivo:Grafico error trapecio eulerimp1.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_eulerimp1.png&amp;diff=39403"/>
				<updated>2017-04-28T16:01:21Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39397</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39397"/>
				<updated>2017-04-28T15:32:59Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Conservación de la masa */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrX/2*K)\(soltrap(:,i)+incrX/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrX*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrX*K)\(soleulerimp(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler explícito, al ser el método explícito por el tamaño de paso tomado e aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_euler.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal1.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39395</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39395"/>
				<updated>2017-04-28T15:29:50Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Resolución numérica del problema */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT/2*K)\(sol(:,i)+incrT/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrT*K)\(sol(:,i)+incrT*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrX/2*K)\(soltrap(:,i)+incrX/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrX*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrX*K)\(soleulerimp(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler explícito, al ser el método explícito por el tamaño de paso tomado e aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_euler.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_eulerimplicito1bis.png&amp;diff=39394</id>
		<title>Archivo:Grafico eulerimplicito1bis.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_eulerimplicito1bis.png&amp;diff=39394"/>
				<updated>2017-04-28T15:25:32Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_euler1bis.png&amp;diff=39388</id>
		<title>Archivo:Grafico euler1bis.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_euler1bis.png&amp;diff=39388"/>
				<updated>2017-04-28T15:20:45Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39371</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39371"/>
				<updated>2017-04-28T15:05:30Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Resolución por el método de Euler explícito */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método del trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX/2*K)\(sol(:,i)+incrX/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrX*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1bis.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrX/2*K)\(soltrap(:,i)+incrX/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrX*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrX*K)\(soleulerimp(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler explícito, al ser el método explícito por el tamaño de paso tomado e aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_euler.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_trapecio1bis.png&amp;diff=39369</id>
		<title>Archivo:Grafico trapecio1bis.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_trapecio1bis.png&amp;diff=39369"/>
				<updated>2017-04-28T15:04:31Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39359</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39359"/>
				<updated>2017-04-28T14:09:52Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: /* Resolución por el método del trapecio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método del trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX/2*K)\(sol(:,i)+incrX/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
En la gráfica correspondiente se puede observar un doble análisis, en función de la proximidad al punto medio del tubo, podemos observar como el punto x=4, supone el limite entre ambos lados, lo que supone que los puntos mas cercamos a él, van a sufrir una variación con un mayor gradiente, lo cuál tiene su lógica física, ya que son los primeros puntos en sufrir la variación y tienen que aumentar lo suficientemente rápido para transmitir ésta variación a los puntos siguientes, hasta los llamados puntos frontera. El otro análisis que se puede hacer, es en función del tiempo, en el que se observa que la gráfica se acerca al principio de forma muy rápida, y se va estabilizando poco a poco hasta que de forma casi tangencial alcanza el valor limite que coincide con el valor medio, que corresponde a su vez a la posición de equilibrio de concentración de contaminante entre ambas mitades del tubo, es decir, que todas las secciones del tubo tengan el mismo valor de concentración. La variación en el gradiente será mayor, contra mayor es la diferencia de concentración de contaminante entre los puntos &amp;lt;math&amp;gt;x=0&amp;lt;/math&amp;gt;, y &amp;lt;math&amp;gt;x=8&amp;lt;/math&amp;gt;, al igual que contra más se aproximan ambas mitades al valor medio, es cuando varía de forma más lenta. El valor se alcanzará cuándo la masa total de contaminante contenido en el tubo, se distribuya de manera constante a lo largo del mismo.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrX*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrX/2*K)\(soltrap(:,i)+incrX/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrX*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrX*K)\(soleulerimp(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler explícito, al ser el método explícito por el tamaño de paso tomado e aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_euler.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39346</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39346"/>
				<updated>2017-04-28T13:34:51Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud del tubo, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método del trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX/2*K)\(sol(:,i)+incrX/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrX*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * ∆x^2).&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrX/2*K)\(soltrap(:,i)+incrX/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrX*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrX*K)\(soleulerimp(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler explícito, al ser el método explícito por el tamaño de paso tomado e aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_euler.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto del tubo con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39344</id>
		<title>Difusión de una sustancia contaminante (Grupo 6)</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Difusi%C3%B3n_de_una_sustancia_contaminante_(Grupo_6)&amp;diff=39344"/>
				<updated>2017-04-28T13:28:45Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{ TrabajoED | Difusión de una sustancia contaminante. Grupo B-6 | [[:Categoría:Ecuaciones Diferenciales|Ecuaciones Diferenciales]]|[[:Categoría:ED16/17|Curso 2016-17]] | Daniel Pacheco Sánchez 917 &amp;lt;br/&amp;gt; Oscar Lázaro González 993 &amp;lt;br/&amp;gt; Alonso Herranz Hudson 1043 &amp;lt;br/&amp;gt; Manuel Bécares Martín 1077 &amp;lt;br/&amp;gt; Pablo Morales Santón 1177 &amp;lt;br/&amp;gt; Dariusz Adam Pabian 1187 }}&lt;br /&gt;
&lt;br /&gt;
El estudio del presente trabajo es el análisis matemático de fenómeno de difusión de una sustancia contaminante a lo largo de un tubo y conceptos relacionados con el mismo, como el empleo de limpiadores.&lt;br /&gt;
&lt;br /&gt;
== Interpretación del fenómeno físico y planteamiento del problema matemático ==&lt;br /&gt;
El fenómeno físico de la difusión de sustancias se rige por las '''leyes de Fick''', que reciben su nombre de Adolf Fick, quien las derivó en 1855. Estas leyes determinan que cuando se da una situación en la que existe una variación de concentración de una sustancia se produce un flujo de partículas que tiende a provocar que la disolución se homogeneice hasta una situación con concentración uniforme a lo largo de todo el medio. La '''primera ley de Fick''' establece que el flujo de difusión del contaminante &amp;lt;math&amp;gt;F&amp;lt;/math&amp;gt; es proporcional a la variación de concentración &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;, suponiendo un estado estacionario:&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;lt;big&amp;gt;&amp;lt;math&amp;gt;F=-D\cdot\frac{\partial u}{\partial x}&amp;lt;/math&amp;gt;&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
donde &amp;lt;math&amp;gt;D&amp;lt;/math&amp;gt; es el coeficiente de difusión medido en &amp;lt;math&amp;gt;\frac{m^2}{s}&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El caso a estudiar es el de un tubo largo en el cual se encuentra una solución compuesta por dos sustancias de las cuales una de ella es un contaminante. Como ya hemos mencionado para enunciar la ley de Fick, denominaremos &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt; a la concentración de contaminante en cada posición del tubo, medida en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;. La longitud del tubo &amp;lt;math&amp;gt;L&amp;lt;/math&amp;gt; será de 8 metros y ocupará el intervalo &amp;lt;math&amp;gt;x \in (0,L)&amp;lt;/math&amp;gt; (se orienta el tubo según el eje x) y su sección transversal será constante a lo largo de toda su longitud. Se supone que la concentración es la misma en cualquier punto de la sección transversal del tubo. Por tanto, la concentración dependerá únicamente de dos variables:&amp;amp;nbsp;&amp;lt;math&amp;gt;u = u(x,t)&amp;lt;/math&amp;gt;. En los extremos se ha colocado un aislante que impide que se produzca flujo hacia el exterior del tubo (por tanto este será nulo). &lt;br /&gt;
&lt;br /&gt;
Se define el flujo de contaminante &amp;lt;math&amp;gt;F(x,t)&amp;lt;/math&amp;gt; como la cantidad del mismo que atraviesa una sección transversal por unidad de tiempo y área, medido en número de moles. Dado que la tubería no permite el flujo a través de su pared y sus extremos están también aislados, el flujo solo se producirá en la dirección &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; y dentro de la longitud de la tubería.&lt;br /&gt;
&lt;br /&gt;
Para la obtención de la ecuación que define el proceso de difusión del contaminante tomaremos como leyes físicas que rigen el proceso: el ''principio de conservación de la masa'' y la ''primera ley de Fick'', ya enunciada.&lt;br /&gt;
&lt;br /&gt;
El '''principio de conservación de la masa''' nos permite determinar que ''la variación de la cantidad de contaminante por unidad de tiempo en un volumen infinitesimal de tubo es igual a la suma del flujo de contaminante a través de los extremos del volumen por unidad de tiempo, mas la concentración de contaminante que se genera o se pierde en el interior del volumen por unidad de tiempo''. Esta última pérdida o ganancia se supondrá igual a cero en el caso estudiado.&lt;br /&gt;
&lt;br /&gt;
Para expresarlo matemáticamente, se calcula primeramente cual es la cantidad de sustancia contaminante en un volumen infinitesimal:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Tubo infinitesimo.png|650px|center]]&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Cantidad de contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;donde:&amp;amp;nbsp;&amp;lt;math&amp;gt;A&amp;lt;/math&amp;gt;&amp;amp;nbsp;es la sección del tubo medida en &amp;lt;math&amp;gt;m^2&amp;lt;/math&amp;gt;&amp;amp;nbsp;y&amp;amp;nbsp;&amp;lt;math&amp;gt;u(x,t)&amp;lt;/math&amp;gt;&amp;amp;nbsp;esla concentración del contaminante en &amp;lt;math&amp;gt;\frac{mol}{m^3}&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
&lt;br /&gt;
&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;&amp;amp;nbsp;Si derivamos respecto respecto al tiempo: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx &amp;lt;/math&amp;gt;&amp;amp;nbsp;,&amp;amp;nbsp;que representa la variación de la cantidad de contaminante respecto del tiempo multiplicado por el volumen.&lt;br /&gt;
&lt;br /&gt;
Suponemos &amp;lt;math&amp;gt; Δx &amp;gt; 0 &amp;lt;/math&amp;gt; y que la concentración del contaminante en un instante &amp;lt;math&amp;gt; t &amp;lt;/math&amp;gt; es menor en &amp;lt;math&amp;gt; x+Δx &amp;lt;/math&amp;gt; que en &amp;lt;math&amp;gt; x &amp;lt;/math&amp;gt;, lo que implica que &amp;lt;math&amp;gt; u(x+Δx,t) - u(x,t) &amp;lt; 0 &amp;lt;/math&amp;gt;, y al ser &amp;lt;math&amp;gt; Δx &amp;lt;/math&amp;gt; muy pequeño, se tiene que &amp;lt;math&amp;gt;u_x(x,t)&amp;lt;0&amp;lt;/math&amp;gt; y el flujo de difusión es positivo según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
El flujo de sustancia contaminante en el volumen considerado será:&amp;amp;nbsp;&amp;lt;math&amp;gt; F(x,t) \cdot A - F(x+Δx,t) \cdot A ± f(x,t)&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dado que no se produce una pérdida o ganancia en la concentración del contaminante:&amp;amp;nbsp;&amp;lt;math&amp;gt;f(x,t) = 0&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Por tanto, según el principio de conservación de la masa: &amp;amp;nbsp;&amp;lt;math&amp;gt; A \cdot u_t(x,t) \cdot Δx = F(x,t) \cdot A - F(x+Δx,t) \cdot A&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dividiendo por &amp;lt;math&amp;gt;Δx&amp;lt;/math&amp;gt; y haciendo que tienda a 0:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)= \frac {F(x,t)-F(x+Δx, t)}{Δx}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;math&amp;gt;u_t(x,t)= -F_x(x,t)&amp;lt;/math&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la primera ley de Fick:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)=-\frac{\partial }{\partial x}(-D \cdot u_x(x,t)) = D \cdot u_{xx}(x,t) &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Se obtiene la ecuación diferencial que rige la difusión de la sustancia contaminante a lo largo del tubo:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;u_t(x,t)- D \cdot u_{xx}(x,t)= 0 &amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Problema propuesto ==&lt;br /&gt;
La ecuación diferencial tiene infinitas soluciones. Para obtener una única solución, se necesitan dos condiciones de frontera y una condición inicial. En el problema que se nos proporciona, tenemos las siguientes condiciones:&lt;br /&gt;
&lt;br /&gt;
* Dado que los extremos están aislados del exterior, no permiten que se produzca flujo a través de ellos, por tanto:&amp;amp;nbsp; &amp;lt;math&amp;gt;u_x(0,t) = u_x(8,t) = 0&amp;lt;/math&amp;gt;&amp;amp;nbsp;.&lt;br /&gt;
* En el instante inicial se verifican las siguientes concentraciones:&amp;amp;nbsp; &amp;lt;math&amp;gt;&lt;br /&gt;
u(x,0)=u_0=\left\{\begin{matrix}2, x≤4\\4, x&amp;gt; 4\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Entonces, el problema a resolver será el siguiente:&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Resolución numérica del problema ===&lt;br /&gt;
Para resolver el problema planteado, se empleará el '''método numérico de diferencias finitas''', el cual busca expresar el problema continuo de partida como un sistema de ecuaciones diferenciales de primer orden.&lt;br /&gt;
&lt;br /&gt;
Para ello, se consideran las siguientes aproximaciones de las derivadas espaciales en x: &lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(x,t)\simeq\frac{u(x_{n+1},t)-u(x_{n-1},t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{xx}(x,t)\simeq\frac{u(x_{n-1},t)-2u(x_n,t)+u(x_{n+1},t)}{h^2}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando la ecuación diferencial de nuestro sistema en los nodos interiores de la longitud de la barra, obtenemos un sistema de &amp;lt;math&amp;gt;N-1&amp;lt;/math&amp;gt; (&amp;lt;math&amp;gt;N&amp;lt;/math&amp;gt; número de subintervalos de la variable &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt;) ecuaciones del tipo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{t}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Para las condiciones de contorno, se aplica la aproximación de la primera derivada de &amp;lt;math&amp;gt;u&amp;lt;/math&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{-u_{-1}(t)+2u_{0}(t)-u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u_{x}(0,t) = 0 = \frac{u_{1}(t)-u_{-1}(t)}{2h}&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Despejando &amp;lt;math&amp;gt;u_{-1}&amp;lt;/math&amp;gt; en la segunda ecuación y sustituyendo en la primera, se obtiene la ecuación relativa al extremo izquierdo del tubo:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Aplicando el mismo procedimiento a la condición en el  otro extremo del tubo, se obtiene su ecuación asociada:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Con estas ecuaciones, tenemos el siguiente sistema de &amp;lt;math&amp;gt;N+1&amp;lt;/math&amp;gt; ecuaciones:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{cases}u'_{0}(t) + \frac{2u_{0}(t)-2u_{1}(t)}{h^2}=0\\u'_{n}(x,t) + \frac{-u(x_{n-1},t)+2u(x_n,t)-u(x_{n+1},t)}{h^2}=0\\u'_{N+1}(t) + \frac{2u_{N+1}(t)-2u_{N}(t)}{h^2}=0\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El cual se puede simplificar como:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\begin{cases}&lt;br /&gt;
U'(t)+KU(t)=F(t)=0\\&lt;br /&gt;
U(0)=U^0&lt;br /&gt;
\end{cases}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Y este puede resolverse por métodos como: Euler explícito, Euler implícito, trapecio o Heun.&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método del trapecio ====&lt;br /&gt;
Para la resolución por los diferentes métodos, se emplearán las siguientes condiciones:&amp;amp;nbsp;&amp;lt;math&amp;gt;\triangle t= \triangle x/4&amp;lt;/math&amp;gt; en &amp;lt;math&amp;gt;t\in\ [0,5]&amp;lt;/math&amp;gt;, con &amp;lt;math&amp;gt;\triangle x=0.1&amp;lt;/math&amp;gt;, aplicadas al sistema ya planteado:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;&lt;br /&gt;
(P)\left\{\begin{matrix}u_t-u_{xx}=0 ,x\in\ (0,8), t&amp;gt;0\\u_x(0,t)=0, t&amp;gt;0\\u_x(8,t)=0, t&amp;gt;0\\u(x,0)=u_0, x\in\ (0,8)\end{matrix}\right.&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método del trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX/2*K)\(sol(:,i)+incrX/2*(Gi2-K*sol(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_trapecio1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Euler explícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler explicito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrX*(-K*sol(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_euler1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
Como podemos observar en el gráfico, el resultado obtenido por el método de Euler muestra su inestabilidad. Esta situación se debe a que el tamaño de paso temporal ∆t = ∆x/4 es mayor que el valor límite que determina si un método explícito es estable o no (∆t = 0.5 * H^2).&lt;br /&gt;
==== Resolución por el método de Euler implícito ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_eulerimplicito1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
==== Resolución por el método de Heun ====&lt;br /&gt;
El código MATLAB empleado para su resolución es el siguiente:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Heun&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*sol(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(sol(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    sol(:,i+1) = sol(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,sol)&lt;br /&gt;
title('Distribución de las concentraciones de contaminante en el tubo en función del tiempo');&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
Con el cual se obtiene la siguiente gráfica en la que se representan la concentración de contaminante en función del espacio y del tiempo:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_heun1b.png|1200px|center]]&lt;br /&gt;
&lt;br /&gt;
=== Comparativa de métodos empleados ===&lt;br /&gt;
A continuación se analizan los errores como medio para comparar los diferentes métodos. Los gráficos de errores obtenidos para realizar la comparativa se han obtenido con el siguiente código MATLAB:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 7; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
soltrap = zeros(N+1,M+1); soleuler = zeros(N+1,M+1); soleulerimp = zeros(N+1,M+1); solheun = zeros(N+1,M+1);&lt;br /&gt;
soltrap(:,1)= U0; soleuler(:,1)= U0; soleulerimp(:,1)= U0; solheun(:,1)= U0;&lt;br /&gt;
% Método de trapecio&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1));  % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soltrap(:,i+1) = (eye(size(K))+incrX/2*K)\(soltrap(:,i)+incrX/2*(Gi2-K*soltrap(:,i)+Gi));&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    soleuler(:,i+1) = soleuler(:,i)+incrX*(-K*soleuler(:,i)+Gi);&lt;br /&gt;
end&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    soleulerimp(:,i+1) = (eye(size(K))+incrX*K)\(soleulerimp(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
% Método de Heun&lt;br /&gt;
clear Gi Gi2&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi1 = g(x,t(i)); % Gi1 es el vector G en t(i)&lt;br /&gt;
    Gi1(1) = Gi1(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi1(end) = Gi1(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i)+incrT); %Gi2 es el vector G en t(i)+k&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i)+incrT)/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i)+incrT)/incrX;&lt;br /&gt;
    K1 = -K*solheun(:,i)+Gi1;&lt;br /&gt;
    K2 = -K*(solheun(:,i)+K1*incrT)+Gi2;&lt;br /&gt;
    solheun(:,i+1) = solheun(:,i)+incrT/2*(K1+K2);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica comparativa&lt;br /&gt;
[Mt,Mx]= meshgrid(t,x);&lt;br /&gt;
% Error entre método del trapecio y Euler implicito&lt;br /&gt;
error1 = abs(soltrap-soleulerimp);&lt;br /&gt;
figure(1)&lt;br /&gt;
mesh(Mt,Mx,error1), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler implícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Euler explícito&lt;br /&gt;
error2 = abs(soltrap-soleuler);&lt;br /&gt;
figure(2)&lt;br /&gt;
mesh(Mt,Mx,error2), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Euler explícito')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
% Error entre método del trapecio y Heun&lt;br /&gt;
error3 = abs(soltrap-solheun);&lt;br /&gt;
figure(3)&lt;br /&gt;
mesh(Mt,Mx,error3), shading flat;&lt;br /&gt;
title('Error entre los métodos del trapecio y Heun')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Coordenada x (m)'); zlabel('Error')&lt;br /&gt;
colorbar&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_eulerimp.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler explícito, al ser el método explícito por el tamaño de paso tomado e aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_euler.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
| Respecto a los métodos del trapecio y Euler implícito, se aprecia que difieren en pequeña magnitud en los primeros instantes de tiempo, pero según el tiempo va creciendo, los métodos convergen y su error disminuye a prácticamente 0. || [[Archivo:Grafico_error_trapecio_heun.png|800px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Conservación de la masa ==&lt;br /&gt;
Para demostrar el cumplimiento del '''principio de conservación de la masa''' a lo largo del tiempo, basta con integrar la ecuación diferencial de nuestro problema inicial en &amp;lt;math&amp;gt;x\in(0,L)&amp;lt;/math&amp;gt; con &amp;lt;math&amp;gt;L=8m&amp;lt;/math&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx=\displaystyle\int_{0}^{L}u_{xx}(x,t)\,dx=u_x(x,t)|_0^L=0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La resolución de la segunda integral es inmediata pues equivale a la diferencia entre el valor de las condiciones frontera en &amp;lt;math&amp;gt;L=0&amp;lt;/math&amp;gt; y &amp;lt;math&amp;gt;L=8&amp;lt;/math&amp;gt;, las cuales son nulas.&lt;br /&gt;
&lt;br /&gt;
La primera integral representa la cantidad total de contaminante en el tubo. Por tanto, la expresión quedaría de la siguiente forma:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;math&amp;gt;\frac{d}{dt}\displaystyle\int_{0}^{L}u(x,t)\,dx = \frac{d}{dt}(M_{total}) = 0&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Lo que implica que &amp;lt;math&amp;gt;M_{total}&amp;lt;/math&amp;gt; será constante para &amp;lt;math&amp;gt;t&amp;gt;0&amp;lt;/math&amp;gt;, con lo que queda demostrada la conservación de la masa.&lt;br /&gt;
&lt;br /&gt;
Para obtener el valor de la cantidad total de contaminante, empleamos la resolución de la integral por el método del trapecio, el cual viene implementado en MATLAB con la función &amp;quot;trapz&amp;quot;:&lt;br /&gt;
&lt;br /&gt;
{{matlab| codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Calculo de la primera integral de la expresión de la conservación de la masa&lt;br /&gt;
integral = zeros(1,length(t));&lt;br /&gt;
for i=1:length(t)&lt;br /&gt;
    f=sol(:,i);&lt;br /&gt;
    integral(i)=trapz(x,f);&lt;br /&gt;
end&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,integral)&lt;br /&gt;
title('Evolución de la cantidad de contaminante con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Cantidad de contaminante (mol)');&lt;br /&gt;
disp(integral)&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_masatotal.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Con el código MATLAB, se obtiene la anterior gráfica en la que se representan la cantidad de contaminante en función del tiempo y se puede apreciar que el valor de la cantidad de contaminante permanece constante a lo largo del tiempo, tal y como se ha demostrado analíticamente en el comienzo del epígrafe.&lt;br /&gt;
&lt;br /&gt;
== Evolución de la concentración en el punto medio de la tubería ==&lt;br /&gt;
A continuación se analiza la evolución de la concentración de el punto medio de la tubería a través del siguiente código MATLAB. Como detalle a destacar, dado que el número de subintervalos para la aproximación numérica que se ha utilizado es 53 y, en consecuencia, el número de nodos a calcular será 54, para conocer la concentración en el punto medio tomaremos la media de las concentraciones de los nodos 27 y 28:&lt;br /&gt;
&lt;br /&gt;
{{matlab|codigo=&lt;br /&gt;
clear, close all&lt;br /&gt;
&lt;br /&gt;
%% Datos del problema&lt;br /&gt;
a = 0; %Extremo derecho del tubo&lt;br /&gt;
b = 8; %Extremo izquierdo del tubo&lt;br /&gt;
t0 = 0; &lt;br /&gt;
tM = 12; %Tiempo estudiado&lt;br /&gt;
D = 1;&lt;br /&gt;
%% Funciones&lt;br /&gt;
% g : función del término independiente (x vector, t escalar)&lt;br /&gt;
g = @(x,t) x*0;&lt;br /&gt;
% ca : funcion f(t) de la condicion de contorno en x=a (t vector)&lt;br /&gt;
ca = @(t) t*0;&lt;br /&gt;
% cb : funcion f(t) de la condicion de contorno en x=b (t vector)&lt;br /&gt;
cb = @(t) t*0;&lt;br /&gt;
% u0 : forma analitica f(x) funcion valor inicial (x vector)&lt;br /&gt;
u0 = @(x) (2.*(x&amp;lt;=4))+(4.*(x&amp;gt;4));&lt;br /&gt;
%% Discretización del vector de espacio&lt;br /&gt;
incrX = 0.15;&lt;br /&gt;
N = round((b-a)/incrX);&lt;br /&gt;
x = linspace(a,b,N+1);&lt;br /&gt;
x = x';&lt;br /&gt;
%% Planteamiento del sistema a resolver U' = -K*U + G&lt;br /&gt;
% Matriz K&lt;br /&gt;
K=2*diag(ones(1,N+1))-diag(ones(1,N),1)-diag(ones(1,N),-1);&lt;br /&gt;
K(1,2) = -2;&lt;br /&gt;
K(N+1,N) = -2;&lt;br /&gt;
K = K*(D/incrX^2);&lt;br /&gt;
% Condición inicial&lt;br /&gt;
U0 = u0(x);&lt;br /&gt;
%% Resolucion del sistema como PVI&lt;br /&gt;
% Discretización del vector de tiempos&lt;br /&gt;
incrT = incrX/4;&lt;br /&gt;
M = round((tM-t0)/incrT);&lt;br /&gt;
t = linspace(t0,tM,M+1);&lt;br /&gt;
%Inicializacion de la matriz de soluciones&lt;br /&gt;
sol = zeros(N+1,M+1);&lt;br /&gt;
sol(:,1)= U0;&lt;br /&gt;
% Método de Euler implícito&lt;br /&gt;
for i=1:M&lt;br /&gt;
    Gi = g(x,t(i)); % Gi es el término independiente de la ecuación en el elemento n de la iteración (nulo en este caso)&lt;br /&gt;
    Gi(1) = Gi(1)-2*D*ca(t(i))/incrX;&lt;br /&gt;
    Gi(end) = Gi(end)+2*D*cb(t(i))/incrX;&lt;br /&gt;
    Gi2 = g(x,t(i+1)); % Gi2 es el término independiente de la ecuación en el elemento n+1 de la iteración (nulo en este caso)&lt;br /&gt;
    Gi2(1) = Gi2(1)-2*D*ca(t(i+1))/incrX;&lt;br /&gt;
    Gi2(end) = Gi2(end)+2*D*cb(t(i+1))/incrX;&lt;br /&gt;
    sol(:,i+1) = (eye(size(K))+incrX*K)\(sol(:,i)+incrX*Gi2);&lt;br /&gt;
end&lt;br /&gt;
%% Obtención de la concentración a lo largo del tiempo del punto medio&lt;br /&gt;
% N = 53 =&amp;gt; nodos = 54 =&amp;gt; Para el punto medio hacemos media de los elementos 27 y 28&lt;br /&gt;
Cpmedio = (sol(round(1+N/2),:)+sol(round(1+N/2+1),:))/2;&lt;br /&gt;
%% Representacion grafica&lt;br /&gt;
plot(t,Cpmedio)&lt;br /&gt;
title('Evolución de la concentración de contaminante en el punto medio con el tiempo')&lt;br /&gt;
xlabel('Tiempo (s)'); ylabel('Concentración (mol/(m^2*s))');&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
El gráfico que se obtiene con dicho código es el siguiente:&lt;br /&gt;
&lt;br /&gt;
[[Archivo:Grafico_pmedio.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
Al ser el último punto de la barra con concentración igual a 4, ya que los siguientes según el eje &amp;lt;math&amp;gt;x&amp;lt;/math&amp;gt; son puntos con concentración igual a 2, la concentración en este punto bajará rápidamente ya que es el primer punto que tiene que compensar la diferencia de concentraciones.&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_euler.png&amp;diff=39289</id>
		<title>Archivo:Grafico error trapecio euler.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_euler.png&amp;diff=39289"/>
				<updated>2017-04-28T11:20:12Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_heun.png&amp;diff=39287</id>
		<title>Archivo:Grafico error trapecio heun.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_heun.png&amp;diff=39287"/>
				<updated>2017-04-28T11:19:09Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_eulerimp.png&amp;diff=39270</id>
		<title>Archivo:Grafico error trapecio eulerimp.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_error_trapecio_eulerimp.png&amp;diff=39270"/>
				<updated>2017-04-28T10:14:16Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_pmedio.png&amp;diff=39206</id>
		<title>Archivo:Grafico pmedio.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_pmedio.png&amp;diff=39206"/>
				<updated>2017-04-28T08:33:08Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_heun1b.png&amp;diff=39184</id>
		<title>Archivo:Grafico heun1b.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_heun1b.png&amp;diff=39184"/>
				<updated>2017-04-28T08:06:18Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_eulerimplicito1b.png&amp;diff=39183</id>
		<title>Archivo:Grafico eulerimplicito1b.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_eulerimplicito1b.png&amp;diff=39183"/>
				<updated>2017-04-28T08:05:58Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_euler1b.png&amp;diff=39182</id>
		<title>Archivo:Grafico euler1b.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_euler1b.png&amp;diff=39182"/>
				<updated>2017-04-28T08:05:40Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_masatotal.png&amp;diff=39081</id>
		<title>Archivo:Grafico masatotal.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_masatotal.png&amp;diff=39081"/>
				<updated>2017-04-27T16:33:05Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_trapecio1b.png&amp;diff=39072</id>
		<title>Archivo:Grafico trapecio1b.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_trapecio1b.png&amp;diff=39072"/>
				<updated>2017-04-27T15:44:43Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_heun1.png&amp;diff=39070</id>
		<title>Archivo:Grafico heun1.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_heun1.png&amp;diff=39070"/>
				<updated>2017-04-27T15:03:08Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	<entry>
		<id>https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_eulerimplicito1.png&amp;diff=39069</id>
		<title>Archivo:Grafico eulerimplicito1.png</title>
		<link rel="alternate" type="text/html" href="https://mat.caminos.upm.es/w/index.php?title=Archivo:Grafico_eulerimplicito1.png&amp;diff=39069"/>
				<updated>2017-04-27T14:57:10Z</updated>
		
		<summary type="html">&lt;p&gt;Mbecares: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Mbecares</name></author>	</entry>

	</feed>