Documente Academic
Documente Profesional
Documente Cultură
Filánder Sequeira-Chavarría1
Melvin Ramírez-Bogantes2
1
Escuela de Matemática, Universidad Nacional, Heredia, Costa Rica.
filander.sequeira.chavarria@una.cr Orcid: https://orcid.org/0000-0002-0593-3446
2
Escuela de Matemática, Instituto Tecnológico de Costa Rica, Cartago, Costa Rica.
meramirez@itcr.ac.cr Orcid: https://orcid.org/0000-0001-5516-0085
RESUMEN
ABSTRACT
RESUMO
El presente artículo nace como un mecanismo de difusión para los métodos numéricos
en la enseñanza superior para carreras de Ingeniería, Computación y Matemática. Su
principal contribución no es la teoría matemática y física que envuelve los métodos
numéricos para las Ecuaciones Diferenciales Parciales (EDP). Si no más bien, un
documento que recopila todos aquellos aspectos importantes sobre una eficiente y
clara implementación computacional de un método numérico de aproximación para
EDP. Se espera que lo detallado aquí pueda ser utilizado como apoyo en los cursos de
postgrado y por investigadores en sus respectivos trabajos. Es importante aclarar que,
si bien, lo presentado aquí puede ser hallado en la literatura, al menos por el
conocimiento de los autores, no se cuenta con un escrito que clarifique con gran
detalle las técnicas a emplear a la hora de aproximar la solución de EDP por medio del
método de diferencias finitas. Adicional a esto, no se cuenta con mucha bibliografía en
el idioma español, que describa la implementación computacional del método de
diferencias finitas.
En relación con la temática principal de este artículo, se resalta que el análisis y diseño
de métodos numéricos para EDP ha sido un área de gran investigación en las últimas
décadas, debido a que estas surgen de numerosos problemas de interés como la
Ingeniería y la Física (ver, por ejemplo, Haberman (1998), Carslow y Jaeger (1959), y sus
referencias). A pesar de lo enriquecedor que es la teoría matemática para la resolución
de EDP (ver, por ejemplo, Evans (2010)), lo cierto es que esta no es flexible a la hora de
cambiar datos en la ecuación diferencial, ni tampoco brinda, en la mayoría de los
casos, la solución explícita de estas. Es debido a ello que la aplicación de métodos
numéricos para obtener aproximaciones se convierte, no solo en una gran
herramienta, sino en general, en la única para poder resolver un problema que
involucre EDP. Aunque claro, llevar los problemas de la matemática a la computación,
provoca nuevos inconvenientes. En particular, la dificultad de realizar la
implementación de los métodos, lo cual será el punto principal de discusión en este
texto.
Para establecer una acotación de la zona en la que se enfoca este trabajo, se debe
tener en cuenta que la misma corresponde al uso del Método de Diferencias Finitas
(MDF) para una EDP parabólica, conocida como la ecuación de calor, dado que esta
modela el flujo de temperatura en una región que está bajo la influencia de una fuente
de calor. Esa delimitación es de suma importancia, no solo por la variedad de EDP que
se pueden abordar, sino por la cantidad de métodos numéricos existentes para una
misma EDP. Para dar un ejemplo de esto, además del enfoque por MDF, el cual
consiste en reemplazar cada operador diferencial dentro de la EDP por una estimación
puntual del mismo (ver, Ciarlet (1995), LeVeque (2007), Morton y Mayers (2005), Strikwerda (2004), Thomas
(1995
), y sus referencias); también es posible obtener una aproximación al reemplazar
el espacio vectorial donde se ubica la solución exacta por uno de dimensión finita, tal y
como ocurre con los Métodos de Elementos Finitos (MEF) (ver Ciarlet (2002)). La
diferencia más visual que se presenta entre los MDF y los MEF consiste en que los MEF
pueden aproximar la solución de la EDP en dominio con geometrías más complejas que
los MDF. A pesar de ello, cuando la EDP depende del tiempo (lo que es usual en los
problemas de aplicación), independientemente de si se utiliza MDF o MEF para las
variables espaciales, la dependencia del tiempo se discretiza por medio los MDF, dado
que los MEF requieren de una relación entre puntos vecinos que resulta inconveniente
para la derivada temporal. Esto se puede apreciar en investigaciones recientes como,
por ejemplo, en (Guzmán, Shu y Sequeira, 2017).
Por otro lado, basta realizar una búsqueda rápida en MathSciNet para notar que
muchas de las investigaciones actuales, que involucran resolver EDP, utilizan el
paquete computacional MATLAB® para sus implementaciones. La principal razón de
esto obedece a la potencia y facilidad que brinda este programa a la hora de emplear
métodos numéricos en un determinado problema. Sin embargo, ningún programa
computacional cuenta con todos los métodos numéricos que existen, sobre todo los
nuevos, por lo que se hace necesario que los interesados en resolver una EDP deban
programar, lo cual no es una tarea fácil, en la mayoría de los casos en. Por tal razón,
en este artículo se discuten los aspectos más relevantes a la hora de realizar una
eficiente implementación computacional. Estos aspectos se exponen en general para
cualquier lenguaje de programación, pero se ejemplificarán con ayuda de MATLAB®.
se concluye que
Con respecto al espacio, este esquema relaciona a cinco puntos de la malla para
estimar tal y como se muestra en la Figura 1. Mientras que, con respecto
al tiempo, se tiene una ecuación diferencial ordinaria, cuya solución será aproximada
por medio del método de Euler implícito (ver, por ejemplo, Strikwerda (2004)). La razón de
emplear un esquema implícito es para generar un método que sea incondicionalmente
estable cuando se avanza en cada paso de tiempo. Es decir, no hay condición CFL
(Courant-Friedrichs-Lewy) en este caso.
Figura 1 Los cinco puntos involucrados en la aproximación del laplaciano.
o bien,
De la aproximación por diferencias finitas (4), en conjunto con la condición inicial (5) y
la condición de borde (6), es posible apreciar que los puntos donde se conoce los
valores de u, así como aquellos donde no se conoce (valores a determinar o
incógnitas), son los ilustrados en la Figura 2.
Luego, para los puntos en los que se desea aproximar la solución (para un
tiempo fijo), se pueden ordenar las incógnitas, en el nivel de filas según la Figura 2,
en un vector columna en el nivel de bloques, de la forma:
Con ayuda del fragmento de código previo es posible ensamblar el vector , y, dada
la matriz , basta con resolver el sistema lineal , para obtener una
aproximación de la solución del problema (1) en el tiempo .
Evolución en el tiempo
Para validar este fragmento de código, basta con dar una función y
determinar la función para la cual es solución del problema (1). Para luego
verificar que la solución obtenida por el algoritmo anterior concuerda (bajo alguna
medida del error) con la solución exacta u dada inicialmente. Por ejemplo, entre varias
de las funciones u con las que se validó este algoritmo se cuenta con:
con la cual:
Métodos directos
donde L es una matriz triangular inferior con unos en su diagonal y U es una matriz
triangular superior, tales que A = LU. De esta forma, el sistema lineal Au = b, puede
ser resuelto mediante el comando:
Retorna una matriz triangular superior R, la cual satisface que A = R tR. Es decir,
determina la factorización de Cholesky, donde R:=Lt. Luego de esto, se puede proceder
de manera análoga a la de la factorización LU.
Métodos iterativos
Los métodos iterativos para resolver sistemas lineales, aproximan la solución de un
sistema , mediante el cálculo de algunos términos de una sucesión que
converge a la solución de este. En relación con los métodos directos, los cuales
obtienen la solución en una sola iteración, los iterativos son útiles para resolver
sistemas que involucran un gran número de variables (del orden de miles), dado que
estos no conllevan un alto costo computacional como los directos. Para poder iniciar un
método iterativo, se requiere de una aproximación inicial , usualmente definida
como el vector nulo, y entonces se calcula un conjunto de aproximaciones sucesivas
, para .
Donde, en el caso que L pueda ser creada y sea invertible, entonces se puede ejecutar
el método de Gradiente Conjugado Precondicionado con la factorización incompleta de
Cholesky de la siguiente manera:
Memoria requerida
Nótese que esta nueva versión realiza las mismas funciones que la anterior, pero
dejando el método de Cholesky como método de resolución por defecto. Además,
retorna la malla en espacio y no la solución en el último tiempo, sino que almacena la
solución del tiempo en la columna j de una matriz matU de orden . Esto
puede verse como “el guion a ser filmado”.
REFERENCIAS
Ciarlet, P. G. (2002). The finite Element Method for Elliptic Problems. Estados Unidos:
SIAM. doi: https://doi.org/10.1137/1.9780898719208 [ Links ]
Guzmán, J., Shu, C-W., y Sequeira, F. A. (2017). H(div) conforming and DG methods
for the incompressible Euler's equations. IMA Journal of Numerical Analysis, 37(4),
1733-1771. doi: https://doi.org/10.1093/imanum/drw054 [ Links ]
LeVeque, R. J. (2007). Finite Difference Methods for Ordinary and Partial Differential
Equations, Steady-State and Time-Dependent Problems. Estados Unidos: SIAM .
doi: https://doi.org/10.1137/1.9780898717839 [ Links ]
Quinn, M. J. (2003). Parallel Programming in C with MPI and OpenMP. Estados Unidos:
McGraw-Hill. [ Links ]
Saad, Y. (2003). Iterative Methods for Sparse Linear Systems. Segunda Edición.
Estados Unidos: SIAM . doi: https://doi.org/10.1137/1.9780898718003 [ Links ]