Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Enero-Junio, 2019
DOI: http://dx.doi.org/10.15359/ru.33-1.7 URL: www.revistas.una.ac.cr/uniciencia
Correo electrónico: revistauniciencia@una.cr
Resumen
En este artículo se describe en detalle un algoritmo para la eficiente implementación computacional del
método de diferencias finitas (MDF) en la ecuación de calor dependiente del tiempo, con condiciones de
frontera de Dirichlet no homogéneas, en dos dimensiones. Para validar el método presentado aquí se utiliza
el paquete computacional MATLAB®, sin embargo, los procesos se exponen independientes al lenguaje de
programación. Finalmente se presentan resultados numéricos que validan el algoritmo propuesto.
Palabras claves: ecuación de calor; método de diferencias finitas; implementación computacional;
MATLAB®
Abstract
In this paper we describe in detail an algorithm for the efficient computational implementation of the finite
difference method (FDM) in the two-dimensional time-dependent heat equation with non-homogeneous
Dirichlet boundary conditions. The MATLAB® software was used to validate the method mentioned here;
however, the processes are presented independently from the programming language. Finally, numerical
results are presented to validate the proposed algorithm.
Keywords: Heat equation; finite difference method; computational implementation; MATLAB®
Resumo
Neste artigo é descrito detalhadamente um algoritmo para a eficiente implementação computacional do
método de diferenças finitas (MDF) na equação de calor dependente do tempo, com condições de fronteira
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
de Dirichlet não homogêneas, em duas dimensões. Para validar o método apresentado aqui é utilizado
o pacote computacional MATLAB®, porém, os processos são expostos independentes da linguagem de
programação. Finalmente, são apresentados os resultados numéricos que validam o algoritmo proposto.
Palavras-chaves: Equação de calor; método de diferenças finitas; implementação computacional;
MATLAB®
E
l presente artículo nace como un me- de numerosos problemas de interés como
canismo de difusión para los métodos la Ingeniería y la Física (ver, por ejemplo,
numéricos en la enseñanza superior Haberman (1998), Carslow y Jaeger (1959),
para carreras de Ingeniería, Computación y y sus referencias). A pesar de lo enriquece-
Matemática. Su principal contribución no es dor que es la teoría matemática para la re-
la teoría matemática y física que envuelve solución de EDP (ver, por ejemplo, Evans
los métodos numéricos para las Ecuaciones (2010)), lo cierto es que esta no es flexible
Diferenciales Parciales (EDP). Si no más a la hora de cambiar datos en la ecuación
bien, un documento que recopila todos aque- diferencial, ni tampoco brinda, en la ma-
llos aspectos importantes sobre una eficiente yoría de los casos, la solución explícita de
y clara implementación computacional de estas. Es debido a ello que la aplicación de
un método numérico de aproximación para métodos numéricos para obtener aproxima-
EDP. Se espera que lo detallado aquí pueda ciones se convierte, no solo en una gran he-
ser utilizado como apoyo en los cursos de rramienta, sino en general, en la única para
postgrado y por investigadores en sus res- poder resolver un problema que involucre
pectivos trabajos. Es importante aclarar que, EDP. Aunque claro, llevar los problemas de
si bien, lo presentado aquí puede ser hallado la matemática a la computación, provoca
en la literatura, al menos por el conocimiento nuevos inconvenientes. En particular, la di-
de los autores, no se cuenta con un escrito ficultad de realizar la implementación de los
que clarifique con gran detalle las técnicas a métodos, lo cual será el punto principal de
emplear a la hora de aproximar la solución discusión en este texto.
de EDP por medio del método de diferencias Para establecer una acotación de la
finitas. Adicional a esto, no se cuenta con zona en la que se enfoca este trabajo, se
mucha bibliografía en el idioma español, que debe tener en cuenta que la misma corres-
describa la implementación computacional ponde al uso del Método de Diferencias
del método de diferencias finitas. Finitas (MDF) para una EDP parabólica,
En relación con la temática principal conocida como la ecuación de calor, dado
de este artículo, se resalta que el análisis y que esta modela el flujo de temperatura en
diseño de métodos numéricos para EDP ha una región que está bajo la influencia de
sido un área de gran investigación en las una fuente de calor. Esa delimitación es de
últimas décadas, debido a que estas surgen suma importancia, no solo por la variedad
de EDP que se pueden abordar, sino por la en resolver una EDP deban programar, lo
cantidad de métodos numéricos existentes cual no es una tarea fácil, en la mayoría de
para una misma EDP. Para dar un ejemplo los casos en. Por tal razón, en este artículo
de esto, además del enfoque por MDF, el se discuten los aspectos más relevantes a la
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
cual consiste en reemplazar cada operador hora de realizar una eficiente implementa-
diferencial dentro de la EDP por una estima- ción computacional. Estos aspectos se ex-
ción puntual del mismo (ver, Ciarlet (1995), ponen en general para cualquier lenguaje de
LeVeque (2007), Morton y Mayers (2005), programación, pero se ejemplificarán con
Strikwerda (2004), Thomas (1995), y sus ayuda de MATLAB®.
referencias); también es posible obtener Finalmente, respecto a la organización
una aproximación al reemplazar el espacio de este artículo, se inicia con el problema
vectorial donde se ubica la solución exacta modelo a desarrollar, el cual corresponde
por uno de dimensión finita, tal y como ocu- a la ecuación de calor en dos dimensiones
rre con los Métodos de Elementos Finitos con condiciones de Dirichlet no homogé-
(MEF) (ver Ciarlet (2002)). La diferencia neas y cuya solución depende del tiempo.
más visual que se presenta entre los MDF El dominio de definición de la ecuación será
y los MEF consiste en que los MEF pueden un rectángulo por lo que la aplicación del
aproximar la solución de la EDP en dominio método de diferencias finitas es idónea en
con geometrías más complejas que los MDF. este caso. Luego, se detalla cómo la apro-
A pesar de ello, cuando la EDP depende del ximación por esquemas de diferencias fini-
tiempo (lo que es usual en los problemas de tas en los operadores diferenciales permite
aplicación), independientemente de si se uti- obtener un sistema de ecuaciones lineales,
liza MDF o MEF para las variables espacia- cuya solución corresponde a la evaluación
les, la dependencia del tiempo se discretiza de esta buscada en ciertos puntos particula-
por medio los MDF, dado que los MEF re- res. Se precisa, además, la construcción (o
quieren de una relación entre puntos vecinos ensamblaje) eficiente de este sistema lineal
que resulta inconveniente para la derivada para poder implementar la misma en cual-
temporal. Esto se puede apreciar en inves- quier lenguaje de programación. En particu-
tigaciones recientes como, por ejemplo, en lar se presenta ese ensamblaje con ayuda de
(Guzmán, Shu y Sequeira, 2017). MATLAB®. Seguidamente, se consideran
Por otro lado, basta realizar una bús- aspectos sobre los métodos a utilizar para
queda rápida en MathSciNet para notar que resolver los sistemas lineales que se ge-
muchas de las investigaciones actuales, que neran en cada paso de tiempo. Al final, se
involucran resolver EDP, utilizan el paque- muestran algunos experimentos numéricos
te computacional MATLAB® para sus im- para validar las programaciones propuestas.
plementaciones. La principal razón de esto Es decir, se comprueba el funcionamiento
obedece a la potencia y facilidad que brinda correcto del código generado. Más aún, se
este programa a la hora de emplear métodos anexa un procedimiento, por medio de vi-
numéricos en un determinado problema. Sin deos, para visualizar el comportamiento de
embargo, ningún programa computacional la solución obtenida.
cuenta con todos los métodos numéricos
que existen, sobre todo los nuevos, por lo
que se hace necesario que los interesados
Método de diferencias finitas para se sigue de esta forma con el único fin de
la ecuación de calor simplificar los cálculos posteriores.
Por simplicidad en la descripción del Por otro lado, considere el punto (tn ,
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
modelo a trabajar, defina Ω como el cuadra- x𝑖 , yj) el cual al ser evaluado en la ecuación
do unitario en IR2, definido como: diferencial se obtiene que:
Ω∶=[0,1] × [0,1] = {(x,y) ∈ IR2 / 0 ≤ 𝑥 ≤ 1, 0 ≤ y ≤1} ut (tn ,xi ,yj) = uxx (tn ,xi ,yj) + uyy (tn , xi, yj) + f (tn ,xi ,yj),
{
así como := f (tn , 𝑥i , 𝑦j), en conjun-
𝑢t = ∆𝑢 + 𝑓, para (x, y)∈ Ω, 𝑡 ∈ ]0, 𝑇], to con el esquema de 5 puntos de esténcil
u (t, x, y) = g (t, x, y), para (x, y)∈ 𝜕Ω, 𝑡 ∈ [0, 𝑇] (1) para el laplaciano (ver, por ejemplo, Morton
u (0, x, y) = u0 (x, y), para (x, y)∈ Ω,
y Mayers (2005), Strikwerda (2004) o Le-
Veque (2007)):
donde ut:= corresponde a la de-
rivada temporal, ∆𝑢 := 𝑢xx+𝑢yy= + ∆u (tn , xi , yj) ≈ ( + – + + ),
es el operador del laplaciano, f = f (t, x, y) (2)
el término fuente y T > 0. El objetivo de
este escrito es hallar una aproximación para se concluye que
la solución del sistema (1), para lo cual se
emplea el método de diferencias finitas = ( + – + + )+
(ver, por ejemplo, Morton y Mayers (2005), (3)
Strikwerda (2004) o LeVeque (2007)). Más
precisamente, dado un entero M > 0, se con-
Con respecto al espacio, este esque-
sidera una partición uniforme del intervalo
ma relaciona a cinco puntos de la malla
[0, T], dada por:
para estimar ∆𝑢 (𝑡n, 𝑥i, 𝑦j ) tal y como se
tn:= nk, para todo n = 0,1,…, M, muestra en la Figura 1. Mientras que, con
respecto al tiempo, se tiene una ecuación
diferencial ordinaria, cuya solución será
donde k = ∆t = , se conoce como el aproximada por medio del método de Eu-
paso en tiempo. Seguidamente, dado un en- ler implícito (ver, por ejemplo, Strikwerda
tero N > 0, se construye una malla cartesia- (2004)). La razón de emplear un esquema
na (o cuadrícula) uniforme para Ω, la cual implícito es para generar un método que
consiste de (N + 2)2 puntos (𝑥𝑖, 𝑦j ) , donde sea incondicionalmente estable cuando se
𝑥𝑖:= 𝑖ℎ y 𝑦j := 𝑗ℎ, con 𝑖, 𝑗 = 0, 1,…, 𝑁+1 y avanza en cada paso de tiempo. Es decir,
h= es el paso en espacio. Es importan- no hay condición CFL (Courant-Friedri-
te aclarar que esta descomposición de Ω no chs-Lewy) en este caso.
tiene por qué se ser uniforme, sin embargo,
Figura 1. Los cinco puntos involucrados Por lo tanto, denotando μ:= , se cum-
en la aproximación del laplaciano. ple que:
– – + (4+μ) – – = +μ ,
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
(4)
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
para los puntos dados por la condición de
– +(4+μ) – – = + +𝑔
borde (6), teniendo en cuenta la relación pre-
sentada en la Figura 1. Para ello, nótese que: • Para j = N, de (4) se obtiene:
• Para i = 1, de (4) se obtiene: – – +(4+μ) – – = +
– – + (4+ μ) – – = +μ
– – +(4+μ) – – = +
–𝑔 – + (4+ μ) – – = + μU
+ (4+ μ) – – = + μU +𝑔 – – +(4+μ) – = + +
Y
, donde ,
(
h2f1Nn +𝑔0N
n
+ 𝑔n1, N+1
n :=
b[N]
h f2N +𝑔n2,N+1
2 n
( +µu[1] .
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
n–1
…
Para todo j =1, 2,…, N. De esta mane- n
h2fN-1,N +𝑔nN-1, N+1
h fNN +𝑔nN+1,N+𝑔nN,N+1
2 n
ra es posible encontrar el vector un ∈ IRN2,
, al resolver un sistema de ecuaciones linea-
les: Aun=bn , donde En resumen, es posible encontrar la
solución un en cada tiempo tn, con n = 1, 2,
( (
T –I 0 …
0 … , M, mediante la resolución de un sis-
A:= –I T –I
…
… … …
0 0 –I T
…
( (
4+µ –1 0 0
Ensamblaje de la matriz de coefi-
…
–1 4+µ –1
…
… … …
T:= 0 –1 4+µ 0
–1 cientes
…
0 0 –1 4+µ
…
( (
ensamblar el vector de la derecha bn en cada
bn:=
bn[1]
bn[2]
( bn[j] :=
h2f1jn+ 𝑔0jn
h2f2jn
( [j]
+µun–1 ,
tn, con n=1, 2,…, M, para luego resolver el
sistema lineal. En el caso particular del en-
…
b[N-1]
n
n
h2fN–1, j
bn[N] , donde 2 n 𝑔n
h fNj + N+1, j samble de A,es importante notar que:
(
(9)
A:=
T
0
0
T
… …
0 (
… …
+
…
T
… …
… …
0 0 T
…
( (
0 –I 0 …
0
(
–I 0 –I
…
…
h2f11n+𝑔01
n
+ 𝑔10
n
–I 0 0 = (I ⊗T)+(S ⊗I),
(
… …
… …
h f21 +𝑔20
2 n n –I
…
…
b :=
[j]
+µu [1]
0 0 –I 0
…
n ,
n–1
…
n
h2fN-1,1 +𝑔nN-10
h fN1 + 𝑔N+1,1+𝑔nN0
2 n n
(
% Matriz identidad
0
–1
–1
0
…
0 ( I = speye( N );
…
…
S:= 0 % Matriz T
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
–1 0
… …
–1 e = -1 * ones( N, 1 );
…
…
0 –1 0
…
T = spdiags( [e, -(4 + mu)*e, e],
(10) [-1, 0, 1], N, N );
% Matriz S
Aquí, el símbolo ⊗ corresponde al pro- S = spdiags( [e, e], [-1, 1], N,
ducto tensorial entre matrices, definido como: N );
(
% Matriz A
A = kron( I, T ) + kron( S, I );
b11c11
b11c21
b11c12
b11c22
…
…
b11c1q
b11c2q
…
…
…
…
b1nc11 b1nc12 b1nc1q
b1nc21 b1nc22 b1nc2q ( end
…
…
……
……
……
……
……
…
B ⊗ C=
…
derecha
… … …
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
w = y(N); % para j = N ximación de la solución del problema (1) en
for i = 1 : N el tiempo tn = nk .
z = x(i);
b(i) = h^2 * f(tn, z, v) +
g(tn, z, 0);
Evolución en el tiempo
b(k + i) = h^2 * f(tn, z, w) +
g(tn, z, 1); Ahora que se conoce cómo ensamblar
end el sistema lineal para cada n = 1, 2,…, M, ,
b(1) = b(1) + g(tn, 0, v); se debe generar el algoritmo principal que
b(N) = b(N) + g(tn, 1, v);
b(k+1) = b(k+1) + g(tn, 0, w);
recorre cada tiempo tn , desde n = 1 a n = M,
b(k+N) = b(k+N) + g(tn, 1, w); obteniendo estos sistemas, para luego pro-
k = N; % para j = 2, 3 ,..., N ceder a resolverlos, por medio de un método
-1 directo o uno iterativo. Para iniciar, consi-
for j = 2 : N-1 dere las descomposiciones del espacio y el
v = y(j);
for i = 1 : N
tiempo, respetivamente, de la forma:
b(k + i) = h^2 * f(tn, x(i),
v); % Malla uniforme para [0,1]x[0,1]
end h = 1 / ( N + 1 );
b(k+1) = b(k+1) + g(tn, 0, v); x = h : h : ( 1 - h );
k = k + N; y = x;
b(k) = b(k) + g(tn, 1, v); % Malla uniforme para [0,T]
end k = T / M;
b = b + mu * u; % contribución de t = k : k : T;
la solución anterior
end donde, se ignoran x0 = y0 = 0 xN+1 = yN+1
= 1 y t0 = 0, debido a que son valores para los
donde x y y representan los vectores cuales la solución es completamente conoci-
que almacenan la partición en el espacio, da, según la Figura 2. Por otro lado, es nece-
mientras que las funciones f y g, son imple- sario definir la solución inicial u=u0 para el
mentaciones respectivas de la fuente f y la tiempo t0= 0 la cual es dada por la condición
información de borde 𝑔, las cuales pueden inicial u0(x, y), tal y como se muestra en el
ser implementadas en MATLAB®, respecti- siguiente fragmento de código:
vamente, de la siguiente manera:
u = zeros( N^2, 1 );
function [ z ] = f( t, x, y ) for j = 1 : N
z = 0; % aquí el criterio de la for i = 1 : N
función u( (j-1)*N + i ) = u0( x(i),
return y(j) );
function [ z ] = g( t, x, y ) end
z = 0; % aquí el criterio de la end
función
end donde la rutina u0 se puede imple-
mentar de la forma:
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
Finalmente, basta con recorrer cada determinar la función f (t, x, y) para la cual
paso en tiempo tn, n = 1, 2,…M, ensamblan- u es solución del problema (1). Para luego
do el sistema lineal Aun = bn , y como se verificar que la solución obtenida por el
realiza en la siguiente rutina de MATLAB®: algoritmo anterior concuerda (bajo alguna
medida del error) con la solución exacta u
% Discretización de la ecuación de dada inicialmente. Por ejemplo, entre varias
calor de las funciones u con las que se validó este
% u_t = u_xx + u_yy + f, (x,y) en algoritmo se cuenta con:
[0,1]x[0,1]
% u = g(t, x, y), (x,y) en la u (t, x, y) : = sen (𝑡 + 𝜋 𝑥) sen (𝑡 + 𝜋 y),
frontera
% u = u_0(x, y), para t = 0
% donde t pertenece a [0,T] y N es el con la cual:
número de puntos en
% espacio, mientras que M es el número f (t, x, y) : = cos (t + 𝜋𝑥) sen (𝑡 + 𝜋y)
de puntos en tiempo. + sen (𝑡 + 𝜋𝑥) (cos (𝑡 + 𝜋y) + 2𝜋2 sen (𝑡
function [u] = HeatEquation2DScheme(
+ 𝜋y)),
T, N, M, f, g, u0 )
% Malla uniforme para [0,1]x[0,1] y claramente, g (t, x, y) = u (t, x, y),
h = 1 / (N + 1); mientras que u0 (x, y) = u (0, x, y). Los resul-
x = h : h : (1 - h); tados se pueden apreciar más adelante en la
y = x; sección de experimentos numéricos.
% Malla uniforme para [0,T]
k = T / M;
t = k : k : T; Resolución del sistema lineal
% Solución en el tiempo t = 0
u = zeros(N^2, 1); Según el análisis de las secciones
for j = 1 : N previas, con el fin de aproximar la solución
for i = 1 : N
u( (j-1)*N + i ) = u0( x(i), del problema (1), se debe resolver el siste-
y(j) ); ma lineal Aun=bn , en cada paso de tiempo
end tn , donde A ∈IRN2×N2 está definida en (7),
end mientras que b ∈ IRN2 está definido en (9).
% Obtener la matriz Luego de obtener dicho sistema, es necesario
mu = h^2 / k;
A = Laplacian2DMatrix( N, mu ); resolverlo por algún método directo o itera-
% Recorrer cada paso de tiempo tivo. En el fragmento de código anterior se
for n = 1 : M emplea la instrucción u = A \ b, corres-
b = Lapacian2DRhs( N, t(n), x, pondiente al método de Eliminación Gaus-
y, h, f, g, mu, u ); siana, el cual es un método directo poco
u = A \ b; % Resolver el
sistema lineal estable y poco eficiente. Aunque cabe men-
end cionar que la implementación de MATLAB®
end es de las más eficientes que existen, dado que
además realiza los cálculos en paralelo (ver,
por ejemplo, Hahn y Valentine (2016)).
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
estructura particular de la matriz de coefi- puede ser resuelto mediante el comando:
cientes y del hecho de que esta es invariante
en cada paso. Para mayor información so- u = U \ ( L \ b );
bre los métodos de resolución enunciados
aquí, se puede consultar literatura relacio- Luego, de manera similar, la instruc-
nada con álgebra lineal numérica, como, ción de MATLAB®:
por ejemplo: Datta (2010), Demmel (1997)
y Saad (2003). R = chol( A );
definida positiva, entonces es posible emple- una familia de vectores A-ortogonales y con
ar métodos iterativos clásicos como: Jacobi, ella se puede escribir la solución del sistema
Gauss-Seidel y SOR. En particular, el méto- como una combinación lineal de esta. En el
do de sobre-relajación o método SOR (Suc- caso de MATLAB®, este cuenta con coman-
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
cesive Over Relaxation) corresponde en una dos predefinidos para ejecutar el método
aceleración del método de Gauss-Seidel en de Gradiente Conjugado Precondicionado
el que, para definir la iteración, se considera (PCG, por sus siglas en inglés), de la forma:
w∈ IE, w ≠ 0, para el cual se resuelve el
sistema equivalente wAx = wb. Más preci- x = pcg(A, b, tol, iterMax);
samente, el método de SOR es un método
de punto fijo cuya iteración viene dada por: donde se desea resolver el sistema
Ax=b, por medio de una tolerancia relativa
xk+1=(L+ D)-1[b+(( ) D – U)xk], al primer residuo tol > 0, con un máximo
de iterMax iteraciones. El PCG se cono-
donde L es la parte triangular infe- ce como método precondicionado, dado que
rior de A, U la parte triangular superior y si se considera la siguiente descomposición
D la diagonal de A. Es importante tener en para A:
cuenta que según el Teorema de Ostrows-
ki-Reich, presente por ejemplo en Saad A=LLt + R, con R ≠ O,
(2003), la iteración de SOR converge siem-
pre que 0<w<2. Más aún, la matriz de coe- Entonces nótese que A ≈ LLt puede ser
ficientes generada por el método de diferen- usado como un precondicionador, donde LLt
cias finitas admite un parámetro w óptimo, se conoce como la factorización incompleta
denominado wopt, el cual viene dado por: de Cholesky, la cual no necesariamente exis-
te, pero en el caso de hacerlo, se espera que
2 esta ayude a mejorar el condicionamiento es-
wopt:=
1 A 2
1– [ρ(I– –––– pectral de la matriz del sistema Ax = b, al
4+µ )]
1+
considerar el nuevo sistema equivalente:
h 2
donde µ:= ––––
k
y ρ (•) corresponde al M-1Ax = M-1b, con M : = LLt.
radio espectral de una matriz, el cual en este
caso satisface que: Para obtener la factorización incom-
pleta de Cholesky en MATLAB®, se puede
4+µ 4+ µ
{|
λmín(A)
ρ:= (I– 1 A)= máx 1– ––––– ||
λmáx(A)
, 1– –––––
4+ µ
, |} utilizar la instrucción:
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
Memoria requerida procesos que requieren los métodos de re-
Considere el siguiente problema de solución, como, por ejemplo, la determina-
valores iniciales y contorno, para la ecua- ción de factorizaciones. Observe que Elimi-
ción de calor sobre el dominio Ω:=[0,1]2: nación Gaussiana fue el que menos tiempo
necesitó, dado que solo se requiere ensam-
{
ut=∆u, para (x, y) ∈ Ω, t ∈]0,1] { blar el sistema lineal para su ejecución. En
u(t, x, y) = 0, para (x, y) ∈ ∂Ω, t ∈ [0,1] la Tabla 3, se muestra el tiempo de ejecución
u(0, x, y) = xy (1–x)(1–y) para (x, y) ∈ Ω, exclusivo de la iteración que recorre cada
Es decir, se considera el problema mo- paso de tiempo, donde se resuelven los sis-
delo (1) con los datos: f (t, x, y) : = 0, g (t, x, temas lineales. Este es el tiempo más consi-
y) : = 0, u0 (x, y) : = xy (1 – x) (1 – y) y T : = 1. derable, dado que depende de la cantidad de
Ahora, se procede a determinar la me- puntos considerados para la aproximación de
moria requerida, así como el tiempo de eje- la solución. Luego, nótese de estos resulta-
cución del algoritmo final presentado en la dos, que el método más eficiente correspon-
sección anterior. Se considera N ∈{19, 99, de a la factorización de Cholesky, lo cual es
499} y M : = N + 1, así como cada uno de los consecuencia de que previo a esta iteración
métodos (directos e iterativos) de resolución ya se realizaron procedimientos que agilizan
de sistemas lineales descritos previamente. la resolución de los sistemas lineales. Más
En la Tabla 1, se determina el total de aún, es interesante observar que Eliminación
memoria creada por las implementaciones, Gaussiana y PCG poseen tiempos similares,
donde no es posible conocer con exactitud a pesar de que el primero se realiza en para-
la requerida por Eliminación Gaussiana lelo. Finalmente, en la Tabla 4, se resumen el
dado que no se puede acceder a la progra- tiempo total de ejecución, donde nuevamente
mación MATLAB® de este método. A pesar se aprecia que resolver los sistemas lineales
de ello, se aprecia, tal y como se esperaba, con la factorización de Cholesky resulta ser
que los métodos iterativos son los que me- el procedimiento más veloz, al menos, para
nos memoria requieren. Por ende, cuando la los tamaños de problemas considerados. A
cantidad de incógnitas sea significativamen- pesar de ello, es importante observar que el
te grande, los resultados en la Tabla 1 sugie- método PCG obtuvo un buen rendimiento, lo
ren utilizar métodos iterativos, para así no que sugiere que utilizar este método no solo
requerir más memoria que la utilizada para no requiere gran capacidad memoria compa-
almacenar el sistema lineal generado por el rado con los otros, sino que además es veloz.
método de diferencias finitas. En la Tabla
Tabla 1. Memoria requerida en megabytes (MB)
N M Eliminación Gaussiana Factorización LU Factorización Cholesky SOR PCG
19 20 0.0192 0.1241 0.1241 0.0379 0.0711
99 100 0.5227 15.3299 15.3299 1.0431 2.4909
499 500 13.2944 1909.2407 1909.2407 26.5774 72.7090
Nota: Fuente propia de la investigación.
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
99 100 0.00050 0.00465 0.00091 0.01066 0.00102
499 500 0.00506 1.97844 0.18130 3.60424 0.10279
Nota: Fuente propia de la investigación.
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
Debido a que el dominio en el
problema (1) está en IR2 , entonces la
solución, respecto al espacio, es una
función de tres variables. Sin embargo,
la solución depende además del tiempo,
por lo que en realidad sería una función
de cuatro variables y, por ende, se debe
graficar en IR4, lo cual resulta claro que
es visualmente imposible en este es-
crito, e incluso en la computadora. Por
tal razón, se considera realizar una pe-
lícula que muestre el comportamiento
de la solución en cada instante tn, para
Nota: fuente propia de la investigación.
n=0,1,…,M. Así, el objetivo de esta úl-
tima sección es mostrar cómo crear una
Finalmente, considerando N = 100 y película en MATLAB® que permita vi-
M = 1000, en la Gráfica 2 se muestra el in- sualizar la solución del problema (1).
cremento del error eh,n , para n = 0,1,…,M. Para ello, considere la siguiente modifi-
Observe cómo el error aumenta según se cación del algoritmo presentado en una
avanza en el paso en tiempo. sección previa:
t = k : k : T; N = 99;
% Solución en el tiempo t = 0 M = 300;
u = zeros(N^2, 1); T = 10;
for j = 1 : N % Determinar la solución aproximada
for i = 1 : N [matU, x, y] = HeatEquation2DSchemeMovie(
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
u( (j-1)*N + i ) = u0( x(i), T, N, M, @f, @g, @u0 );
y(j) ); % Crear película
end writerObj = VideoWriter('video.avi');
end open( writerObj );
matU = u; % Matriz donde la % Control de los ejes coordenados
columna j contiene axis tight
% la solución en el tiempo t_j set(gca, 'nextplot', 'replacechildren');
% Obtener la matriz set(gcf, 'Renderer', 'zbuffer');
mu = h^2 / k; % Fase de “filmación”
A = Laplacian2DMatrix( N, mu ); numframes = size(matU, 2);
% Factorización de Cholesky [X, Y] = meshgrid(x,y);
U = chol( A ); L = U'; for n = 1 : numframes
% Recorrer cada paso de tiempo uh = matU(:, n);
for n = 1 : M U = reshape(uh, N, N);
b = Lapacian2DRhs( N, t(n), x, Z = mesh(X, Y, U);
y, h, f, g, mu, u ); title(['Soluci\''on aproximada $t_{',
u = U \ ( L \ b ); % Resolver num2str(n-1), '}$'],...
el sistema lineal 'interpreter','latex')
matU = [ matU, u ]; % Almacenar xlabel('$x$','interpreter’,'latex')
la solución ylabel('$y$','interpreter','latex')
end zlabel('$t$','interpreter','latex')
end % Fin del programa currentframe = getframe;
writeVideo(writerObj, currentframe);
Nótese que esta nueva versión realiza end
close( writerObj );
las mismas funciones que la anterior, pero
dejando el método de Cholesky como mé- Con ayuda de este fragmento de códi-
todo de resolución por defecto. Además, re- go, se ejecuta el método y se crea la pelícu-
torna la malla en espacio y no la solución la para visualizar la solución obtenida. En
en el último tiempo, sino que almacena la efecto, considere en el problema (1) los va-
solución del tiempo tj en la columna j de lores: g(t, x, y):= 0, u0 (x, y):= x(1–x) y (1–y)
una matriz matU de orden N2 × (M+1). Esto y f(t, x, y):= cos(t+πx) sen(t+ πx)(cos(t+ πy)
puede verse como “el guion a ser filmado”. + 2 π2sen(t+ πy)).
Ahora, considere el siguiente conjun- En la Figura 4, se presentan algunas
to de instrucciones que permiten realizar la imágenes de la película que genera las ins-
creación de la película: trucciones previas.
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
Nota: Fuente propia de la investigación.
UNICIENCIA Vol. 33, N°. 1, pp. 83-100. Enero-Junio, 2019 • URL: www.revistas.una.ac.cr/uniciencia • Correo electrónico: revistauniciencia@una.cr
Aspectos computacionales del método de diferencias finitas para la ecuación de calor dependiente del
tiempo (Filánder Sequeira-Chavarría y otros) por Revista Uniciencia se encuentra bajo una Licencia
CreativeCommons Atribución-NoComercial-SinDerivadas 3.0 Unported.