Академический Документы
Профессиональный Документы
Культура Документы
DE MXICO
FACULTAD DE CIENCIAS
T E S I S
DIRECTOR DE TESIS:
Dr. Antonio Carrillo Ledesma
2016
2
Agradecimientos:
Quiero agradecer a todas las personas que hicieron posible que este trabajo llegara a su n:
A mis padres Raquel Bernal Salazar y Jorge Gregorio Mendoza Jasso, sin ellos nada hubiera sido
posible.
1. Introduccin 5
1.1. Ecuaciones Diferenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1.8. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.8.3. Upwind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.10.1. Anlisis de von Neumann Simplicado para mtodos con Paso de Tiempo . . . . . . . 36
3.2.1. Descomposicin LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3
NDICE GENERAL 4
3.2.5. GMRES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4. Implementacin Computacional 45
4.1. Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.3. C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
5. Aplicaciones y Pruebas 52
5.1. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
A. Cmputo Paralelo 70
B. Mtodo de Descomposicin de Dominio de Subestructuracin 75
C. Crank-Nicolson 1D Para la Ecuacin de Calor Scilab, C++ y MatLab 82
C.1. Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
C.2. C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
C.3. MatLab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
D.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
E. Ecuacin de Helmholtz 95
E.1. Ejemplo Numrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
F. Grcos en MatLab 99
Captulo 1
Introduccin
La comprensin de la naturaleza y sus fenmenos, necesita del auxilio de las Ecuaciones Diferenciales tanto
Ordinarias como Parciales, ya que estas constituyen una herramienta esencial para matemticos, fsicos e
ingenieros, vase[13], pues, sucede que las leyes fsicas que gobiernan los fenmenos de la naturaleza se
expresan habitualmente en forma de ecuaciones diferenciales, por lo que estas, en s, constituyen una expresin
cuantitativa de dichas leyes. La enorme importancia de las ecuaciones diferenciales (ordinarias y parciales)
para la ciencia, se debe principalmente al hecho de que la investigacin de muchos problemas puede reducirse
a la solucin de tales ecuaciones. Los clculos que requiere las trayectorias de proyectiles, la investigacin de
la estabilidad de aeronaves en vuelo o el curso de una reaccin qumica, las leyes de conservacin de la masa
y de la energa, modelacin de yacimientos petroleros, de acuferos etc. se expresan en forma de ecuaciones
diferenciales. Las ecuaciones del movimiento de los cuerpos (la segunda ley de Newton) es una ecuacin
diferencial, como lo es la propagacin de las ondas, la transmisin del calor, el movimiento de partculas
subatmicas, todo ello depende de la solucin de ecuaciones diferenciales.
La ecuacin de onda. Surge al describir fenmenos relativos a la propagacin de ondas en un medio con-
tinuo. Los estudios de ondas acsticas, ondas de agua, ondas electromagnticas y vibraciones mecnicas
estn basados en esta ecuacin.
La ecuacin de calor. Constituye una herramienta de gran utilidad para dar solucin a problemas de
ujo de calor. Esta ecuacin aparece tambin en una gran cantidad de problemas, por ejemplo: la
concentracin de material en difusin.
La ecuacin de Laplace. Esta ecuacin puede modelar la distribucin de tempertura en estado estaciona-
rio para una regin, adems, de que aparece en problemas de la fsica como: potenciales electroestticos,
potenciales de hidrodinmica, potenciales armnicos en teora de elasticidad.
Las ecuaciones diferenciales parciales se suelen clasicar en grupos, los cuales engloban las propiedades
u 2u
matemticas y fsicas cualitativamente similares. La ecuacin del calor
t = k x2 es un ejemplo de ecuacin
parablico. La ecuacin de onda 2u 2
diferencial parcial del tipo
t2
= c2 xu2 tipica a las ecuaciones del tipo
hiperblico . La ecuacin de Laplace
2u
x2
+ 2u
y 2
=0 es un ejemplo de ecuacin Elptica.
5
CAPTULO 1. INTRODUCCIN 6
La deduccin fsica de estas tres ecuaciones puede ser consultada en cualquier libro del tema, por ejemplo,
vase [6, 5]
Existen varios mtodos o tcnicas para obtener soluciones explcitas (analticas o semi-analticas) de algunas
ecuaciones de inters fsico, vase [11], sin embargo, muchas tienen soluciones con expresiones complicadas,
por ejemplo, que involucran series o alguna representacin integral. En muchas situaciones se necesitan
clculos numricos de las soluciones de las ecuaciones. En un anlisis de, por ejemplo, una solucin de una
ecuacin en series de Fourier, podemos imaginar calcular en una computadora los primeros cien trminos
de la serie, sin embargo, existen mtodos ms ecientes para obtener resultados numricos, especialmente
cuando se utiliza una computadora. vase [12].
Una ecuacin diferencial es una ecuacin en donde aparecen derivadas de una o ms funciones desconocidas.
Dependiendo del nmero de variables independientes respecto de las que se derive, las ecuaciones diferenciales
se clasican en ordinarias o parciales, vase[9, 5, 6]
Denicin. Una ecuacin diferencial parcial (EDP) para la funcin u = (x1 , x2 , . . . , xn ) con u : Rn R
es una relacin de la forma
Entonces se dice que F es una funcin que depende de las variables (x1, x2 , ..., xn ) y de una funcin (o variable
dependiente) u y de las derivadas de u.
Denicin. Una funcin es solucin de una EDP, si en alguna regin Rn del espacio de sus variables
independientes, la funcin y sus derivadas satisfacen a F, es decir, al sustituir la funcin solucin y sus
derivadas se obtiene una identidad.
El orden de una EDP es n si las derivadas de mayor orden que ocurren en F son de orden n. Una EDP es
lineal si F es lineal en la funcin incgnita y en sus derivadas, y la EDP es cuasi-lineal, si F es lineal en al
menos una de las derivadas de ms alto orden; de otra manera la EDP es no-lineal.
Denicin. Sea Rn el dominio de una funcin u, adems u C 2 (Rn ), entonces se dene el laplaciano
u como
n n
2
X X 2u
u = u = u = uxi xi =
i=1 i=1
x2i
Ecuacin Linealidad
Consideremos la EDP general de segundo orden para n variables denida en Rn en forma de un operador
diferencial
n
X n
X
Lu = aij uxi xj + bi uxi + cu (1.2.2)
i,j=1 i=1
CAPTULO 1. INTRODUCCIN 7
Si las funciones aij , bi y c no dependen de x Rn , se dice que la ecuacin diferencial parcial es de coecien-
tes constantes. Como uxi xj = uxj xi para cualquier funcin con segunda derivada continua, sin prdida de
Pn
generalidad podemos asumir la simetra de aij = aij . A la suma i,j=1 aij uxi xj se le conoce como la parte
principal de la EDP, la cual se puede escribir como
u
a11 a1n x1
. .. . .
. .
... ..
. . .
x1 xn
u
an1 ann
xn
por la igualdad de las derivadas cruzadas podemos decir que la matriz de la parte principal de la EDP ser
real y simtrica.
A:V V
Si A es una matriz cuadrada de nn con coecientes en K, entonces un eigenvector de A es, por denicin,
un eigenvector de la aplicacin lineal de Kn en si mismo representado pi esta matriz relativa a la base. As,
un eigenvector propio de X de A es un vector columna de Kn para el cual existe K tal que AX = X ,
vase [3].
Denicin. Sea A una matriz real simtrica de nn asociada a la parte principal de la EDP (
Pn
i,j=1 aij uxi xj ),
entonces
Si todos los eigenvalores de la matriz A son distintos de cero y adems del mismo signo, entonces se
dice que la ecuacin es del tipo Elptico.
Si uno y slo uno de los eigenvalores de la matriz A es igual a cero, entonces se dice la ecuacin es del
tipo Parablico.
Si todos los eigenvalores de la matriz A son distintos de cero y adems n1 de ellos tienen el mismo
signo, entonces se dice que la ecuacin es del tipo Hiperblico.
Ecuacin Tipo
En general, cada ecuacin diferencial parcial tiene varias soluciones, entonces para plantear problemas que
tengan solucin nica, es necesario complementar el planteamiento con condiciones de frontera adecuadas y
con condiciones iniciales. Un problema se considera bien planteado cuando este posee una solucin nica,
vase [11]
CAPTULO 1. INTRODUCCIN 8
donde y son funciones. Este tipo de fronteras son llamadas del tipo Robin. Los casos particulares para
sta condicin ocurren y han sido estudiados con mucha atencin. Si = 0, lo que se obtiene es el problema
de Dirichlet
(
u = f
u = g
u = f
u = g
n
Ecuacin de Calor
Para la ecuacin de calor, adems de las condiciones en la frontera, la solucin debe de satisfacer las condi-
ciones iniciales
u (x, 0) = u0 (x) x
las condiciones en la frontera son esencialmente las mismas que para el problema de valores en la frontera
que se consideraron en la ecuacin de Laplace. De esta manera, el problema ms general para el caso de
un problema en la frontera con condicin inicial para la ecuacin del calor consiste en, dadas las funciones
uo , f [0, T ] y g [0, T ] es
u
u = f (0, T )
t
u
+ u = g (0, T )
n
u (x, 0) = u0 (x) x
Ecuacin de Onda
Para la ecuacin de onda adems de las condiciones de frontera, la solucin debe de satisfacer las condiciones
iniciales
u (x, 0) = w (x)
u
(x, 0) = z (x)
t
CAPTULO 1. INTRODUCCIN 9
Las condiciones de frontera son de manera general idnticas a las de la ecuacin del calor. As, el problema
ms general del problema de valores en la frontera con condicin inicial para la ecuacin de onda consiste
de, dadas las funciones u0 , u0o , f y g , encontrar la funcin que cumpla
2
u u = f
(0, T )
t2
u + u = g
(0, T )
n
Condiciones de Frontera
Las condiciones de frontera o condiciones de contorno de una ecuacin diferencial ordinaria o parcial se suelen
clasicar en tres tipos:
Dirichlet, se especican los valores de la solucin que necesita la frontera del dominio.
Neumann, se le especican los valores de la derivada de una solucin tomada sobre la frontera.
Robin, es una combinacin de las anteriores, podemos tener una parte con condicin Dirichlet y otra
parte de la frontera con condicin Neumann.
Como se mencion, las ecuaciones de Laplace, calor y onda son los prototipos de ecuaciones elpticas, para-
blicas e hiperblicas respectivamente. En esta seccin se mostrar una manera de resolver estas ecuaciones
de manera analtica o semi-analtica, en captulo cinco se muestra la resolucin de estas ecuaciones en forma
numrica usando el mtodo de diferencias nitas, el cual se describe a detalle y se muestra su uso en el
presente trabajo.
Ecuacin de Laplace
La ecuacin de Laplace es el prototipo para una ecuacin diferencial parcial del tipo elptico. Para la ecuacin
de Laplace existe una terminologa especializada, pues las soluciones de u = 0 se les llama funciones arm-
nicas, vase [9, 5]. Las funciones armnicas aparecen en situaciones variadas, por ejemplo, en electrosttica,
en anlisis complejo y en el movimiento browniano.
Las funciones armnicas son invariantes bajo ciertas transformaciones rgidas, como rotaciones y traslaciones.
Si se denen las nuevas coordenadas X 0 = X + A entonces x u = x0 u, sin importar la dimensin de X .
Decimos que f (x) es radial si f (x) = f (|x|), es decir, si es constante en esferas concntricas. Para hallar las
funciones armnicas que son invariantes bajo rotaciones, o lo que es igual radiales, consideraremos los casos
para n = 2, 3.
Coordenadas Polares
Si se hace el cambio de coordenadas
0
x cos sen x
0 =
y sen cos y
se seguir cumpliendo que uxx + uyy = ux0 x0 + uy0 y0 . Usando coordenadas polares
x = rcos
y = rsen
CAPTULO 1. INTRODUCCIN 10
2 2
2
2 sencos
= cos 2 2
x2 r r r
2 2 sen2
sen sencos
+ + 2 +
r2 2 r r r
2 2
2
sencos
= sen2 2 2
y 2 r r r
cos2 2 cos2
sencos
+ + 2 +
r2 2 r r r
sumando obtenemos
2 1 1 2
= + +
r2 r r r 2
1
urr + ur = 0
r
es decir (rur )r = 0. De esto se tiene que una solucin radial en R2 tendr la forma
Coordenadas Esfricas
Para las coordenadas esfricas consideramos
p
r = x2 + y 2 + z 2
x = rcossin
y = rsensen
z = rcos
1 1
r2 ur + 2
u = (u sen)
r r r sen
1
+ u
r sen2
2
2
urr + ur = 0
r
por lo que
r2 ur
r
= 0
c1
entonces u= + c2 es solucin y se le llama solucin radial fundamental en R3 .
r
Ntese que en ambos casos la solucin radial fundamental tiene una singularidad en el origen, vase [9, 8, 5, 6].
CAPTULO 1. INTRODUCCIN 11
Ecuacin de Calor
La ecuacin del calor es el prototipo de ecuacin diferencial parcial del tipo parablico. Consideremos la
distribucin de la temperatura u(x, t) en una barra homognea de longitud L, con temperatura inicial f (x)
y con temperatura igual a cero en los extremos. Entonces la ecuacin que describe lo anterior es
ut = kuxx
0<x<L
t>0
con condiciones
u (0, t) = 0
u (L, t) = 0
u (x, 0) = f (x)
para t 0.
u(x, t) representa la temperatura del punto x en el instante t y k >0 es una constante proporcional a la
conductividad e inversavemnte proporcional a la densidad y al calor especco.
Tomemos
entonces
X 00 (x)
= 0
X(x)
T 0 (t) X 00 (x)
= = (1.4.3)
kT (t) X(x)
X 00 (x) + X(x) = 0
T 0 (t) + kT (t) = 0
X(x) = ax + b
X(0) = b = 0
X(L) = aL = 0
X 00 (x) 2 X(x) = 0
y la solucin es
X(0) = a + b
a = b
entonces
Ahora si x = L, para L 6= 0
X(L) = 2asenh(L) = 0
X(x) = 0
X 00 (x) +X(x) = 0
X(0) = a = 0
X(L) = bsen(L) = 0
CAPTULO 1. INTRODUCCIN 13
sen(L) = 0
n = n2
n2 2
=
L
n
Xn (x) = sen x
L
Entonces, sustituyendo n en la otra ecuacin diferencial que nos queda por resolver
T 0 (t) + n kT (t) = 0
n2 2
kt
Tn (t) = e L2
para n = 1, 2, . . .
Entonces sea
estas funciones satisfacen la ecuacin de calor con las condiciones iniciales y de frontera que se especicaron.
Por el principio de superposicin se tiene que
2 2
X n n kt
u (x, t) = = bn sen x e L2
L
n=1
n
f (x) = u (x, 0) = bn sen x
L
esta expresin es una representacin mediante series de Fourier de f (x) en trminos de senos, por tanto la
bn que buscamos se dene como
L
2 n
bn = f (x)sen x dx
L 0 L
2 2
L n n kt
2X n
u (x, t) = f (x)sen x dx e L2 sen x
L 0 L L
n=1
Ecuacin de Onda
La ecuacin de onda es el prototipo de ecuacin diferencial parcial del tipo hiperblico. La ecuacin en una
dimensin est dada por
utt = c2 uxx
que puede pensarse como el modelo matemtico de una cuerda vibrando, vase [8, 6]. Para resolver en este
caso se puede factorizar el operador, obteniendo
utt c2 uxx = (t cx ) (t + cx ) u
Sea v = ut + cux de modo que querramos resolver vt cvx = 0. La solucin general de esta ecuacin es
v (x, t) = h (x + ct) y habra que resolver
Sea w (x + t) = u (x + t) f (x + ct) donde u es solucin de 1.4.5. As se tiene que wt + cwx = 0, por lo que
w (x + t) = g (x ct) es la solucin general. Entonces la solucin general de la ecuacin de onda es
u (x, t) = f (x + ct) + g (x ct) (1.4.6)
utt
= c2 uxx x R, t R
u (x, 0) = (x) xR
ut (x, 0) = (x) xR
con y describiendo la posicin y velocidad inicial del sistema. Se puede suponer cierta regularidad en
estas funciones. Para hallar la solucin volvemos a 1.4.6 y notemos que
Desafortunadamente, mientras las ecuaciones diferenciales pueden describir gran variedad de problemas, slo
una pequea porcin de ellas pueden ser resueltas de manera exacta por funciones elementales (polinomios,
sen(x), cos(x), ex ) y sus combinaciones. Si la solucin analtica no la conocemos, lo que queremos entonces es
encontrar una aproximacin a su solucin. Una de las tcnicas para encontrar la aproximacin de la solucin
son los mtodos numricos para resolucin de ecuaciones diferenciales parciales, con los cuales se obtienen
aproximaciones numricas de la solucin en ciertos puntos del dominio de la ecuacin. Estos mtodos se les
llama Mtodos de Discretizacin.
La idea de estos mtodos consiste en aproximar las derivadas que aparecen en los problemas de ecuaciones
diferenciales de forma que se reduzca a resolver un sistema algebraico de ecuaciones que representa la solucin
de la ecuacin diferencial en algunos puntos. Una vez teniendo el sistema lineal Ax = b, se procede a resolver
dicho sistema, utilizando las tcnicas de lgebra lineal que nos ofrezcan mejor desempeo computacional.
Entre las diferentes formas de discretizacin posibles estn los siguientes mtodos, vase [8, 12, 4]
Al resolver ecuaciones parciales, se analizan funciones de dos o ms variables, por ejemplo, u (x, y), u (x, t)
y u (x, y, t). Algunas derivadas parciales (no todas) se pueden obtener de la misma forma como si fueran
u
funciones de una variable. Por ejemplo, para una funcin u (x, y), la derivada parcial
x es, en realidad, una
du
derivada ordinaria
dx si mantenemos a y ja.
2u 2u
Por ejemplo, en los problemas fsicos a menudo se necesita calcular el laplaciano u = 2 u = x2
+ y 2
.
Utilizando una frmula de diferencias centradas para la segunda derivada, obtenemos la forma del laplaciano
en diferencias nitas
Aqu el error es el mximo O((x2 )) y O((y 2 )). A menudo suele tomarse x = y y as se obtiene la
aproximacin estndar de diferencias nitas de cinco puntos para el laplaciano.
En esta forma de discretizacin es conveniente utilizar la notacin matricial para analizar la ecuacin di-
ferencial parcial. Una vez discretizada la ecuacin, lo que obtenemos es un sistema de ecuaciones Ax = b,
donde el tamao de la matriz y de los vectores depende del tipo de condiciones de frontera o de contorno
que se le hayan dado al problema y de la particin del dominio realizada.
El mtodo que se desarrolla en este trabajo es el Mtodo de Diferencias Finitas, el cual es uno de los mtodos
clsicos de solucin de ecuaciones diferenciales. Este mtodose detalla en el captulo dos de este trabajo.
Una vez la ecuacin discretizada, como resultado de aplicar el mtodo de diferencias nitas (tambin los
mtodos de volumen nito y elemento nito producen resultados similares), el problema de resolver la
ecuacin diferencial parcial de manera numrica se reduce a la solucin del sistema Ax = b. Donde la
matriz A es una matriz bandada(contiene muchos ceros) y dependiendo de la dimensin del problema puede
ser de tres, cinco o siete bandas.
Para resolver el sistema de ecuaciones Ax = b se cuenta con una gran variedad de mtodos, los cuales se
dividen en: Mtodos Directos y Mtodos Iterativos.
Los Mtodos Directos (Vase Captulo 3) proporcionan la solucin en un nmero jo de pasos y slo estn
sujetos a los errores del redondeo, estos mtodos de solucin se aplican a matrices densas. Los Mtodos
Iterativos (Vase Captulo 3) como su nombre lo destaca se realizan iteraciones para aproximar la solucin,
y son usadas para la solucin del sistema cuando la matriz es dispersa (sparse matrix).
Directos:
Iterativos:
Dependiendo de las caractersticas de la matriz A, se usa un tipo de mtodo, por ejemplo, si:
Otro factor para tomar en cuenta es que al ser la matriz bandada, se debe de encontrar una forma de
almacenar ptimamente en RAM a la matriz A, ya que podra agotar la memoria por su tamao, adems de
facilitar el clculo que involucran la solucin del sistema (bsicamente la multiplicacin de matriz-vector).
Estos esquemas de almacenamiento continuo en memoria para los elementos no cero de la matriz, requieren,
por parte del esquema, del conocimiento de la ubicacin de los valores dentro de la matriz original. Existen
varios mtodos para el almacenamiento de los datos , entre los cuales se encuentran, Compressed Row
Storage(CRS) y Compressed Diagonal Storage(CDS) (Vase la seccin 3.1) son los que nos interesan. Puede
darse el caso en que la matriz sea simtrica, lo cual reduce an ms el nmero de elementos a almacenar en
memoria, pues podemos almacenar solamente la mitad de los valores. En el caso de que los coecientes de
la ecuacin diferencial parcial sean constantes, los valores dentro de la banda son iguales y no es necesario
guardar todos los valores, solamente un representante de ellos.
El cmputo en paralelo surge de la necesidad de resolver problemas complejos en tiempos razonables, donde se
hace uso de las ventajas de memoria y velocidad de los procesadores y de la interconexin de varias mquinas
para la distribucin del clculo y del procesamiento de los datos. Para lograrlo existen principalmente dos
bibliotecas openMP y MPI.
MPI (www.open-mpi.org ) es una librera que dene una sintaxis y un grupo de funciones de paso de mensajes
para explotar los sistemas con mltiples procesadores. Message Passing Interface(MPI) es una tcnica de
programacin concurrente para la sincronizacin de procesos y permitir la exclusin mutua. Su principal
caracterstica es que no precisa de memoria compartida, por lo que es muy importante en programacin de
sistemas distribuidos. Los elementos principales que intervienen en el paso de mensajes son: el proceso que
enva una tarea y el que la recibe, vase [24].
Usando este tipo de cmputo se puede reducir el tiempo de ejecucin de la resolucin de la ecuacin de
forma considerable, ya que es posible mediante mltiples mtodos numricos que paralelizan la resolucin
del sistema algebraico asociado. Vase apndices A y B.
Resumiendo, al tratar de resolver numricamente una ecuacin diferencial parcial por diferencias nitas,
lo primero que hacemos es discretizar la ecuacin, una vez hecho esto, se trata de resolver el sistema de
ecuaciones Ax = b mediante el mtodo(directo o iterativo) ms conveniente utilizando tcnicas de cmputo
en paralelo y as, al nal se obtendr la solucin del problema.
1.8. Objetivos
Generales
Los objetivos generales de este trabajo son:
Desarrollar la metodologa para resolver ecuaciones diferenciales parciales mediante el mtodo numrico
de diferencias nitas
Desarrollar los algoritmos necesarios para resolver las ecuaciones diferenciales parciales en una, dos y
tres dimensiones
Implementar en una aplicacin computacional la solucin numrica del mtodo de diferencias nitas
Mostrar que la implementacin en paralelo de la metodologa estudiada puede ser eciente en equipos
masivamente paralelos
CAPTULO 1. INTRODUCCIN 18
Particulares
Los objetivos particulares del trabajo son:
Desarrollar la metodologa de diferencias nitas para ecuaciones diferenciales parciales: Elpticas, Pa-
rablicas e Hiperblicas
Implementar la solucin numrica del mtodo de diferencias nitas en lenguajes como C++ y paquetes
de uso generalizado como Scilab, Octave y MatLab
Mostrar mediante un ejemplo, que se puede obtener una paralelizacin de la metodologa desarrollada,
que tiene alta eciencia en equipos paralelos
Para poder cumplir con los objetivos planteados en este trabajo en el captulo dos y tres se desarrolla la
metodologa y los algoritmos para la solucin de ecuaciones diferenciales parciales. En el captulo cinco
se muestran las aplicaciones de esta metodologa, resolviendo problemas en espacio y tiempo, as como
un ejemplo de paralelizacin mediante descomposicin de dominio. Adems, los cdigos de los ejemplos se
colocaron en la pgina web http://mmc2.geosica.unam.mx/omb.
Captulo 2
El mtodo de diferencias nitas es un clsica aproximacin para encontrar la solucin numrica de las
ecuaciones diferenciales parciales. El mtodo consiste bsicamente en que las derivadas son reemplazadas por
aproximaciones en diferencias nitas, convirtiendo el problema de ecuaciones diferenciales en un problema
algebraico Ax = b resoluble por mtodos matriciales, vase [16].
Con la disponibilidad de poderosas computadoras, la aplicacin de mtodos numricos para resolver pro-
blemas de ciencia e ingeniera se ha convertido, en la prctica, algo normal en la comunidad cientca. Los
mtodos numricos orecen donde los trabajos prcticos/experimentales son lmitados. Cuando el trabajo
experimental es complicado, la teora de mtodos numricos auxilia en la solucin de los problemas y as se
puede obtener informacin valiosa. En ciencia, las soluciones numricas y experimentales son vistas como
complementarias una a otra. Es comn que la experimentacin valide o verique el mtodo numrico y as
poder extender este ltimo para resolver problemas ms complejos. Es comn encontrar que los mtodos
numricos son la base en la solucin de problemas de la ciencia, ms an, los avances en los mtodos ma-
temticos y en la capacidad computacional han hecho posible el resolver problemas de las ciencias sociales,
medicina, economa, etc.
El objetivo es aproximar la solucin de ecuaciones diferenciales, es decir, encontrar una funcin (o alguna
aproximacin discreta a esta funcin) que satisfaga la relacin de su(s) derivada(s) en alguna regin del
espacio y/o tiempo, con una serie de valores en su frontera. En general, resolver una EDP es complicado
y raramente se puede encontrar una solucin analtica que satisfaga el problema. El Mtodo de Diferencias
Finitas procede reemplazando las derivadas de la ecuacin con una aproximacin de una diferencia nita.
Con esto obtenemos un sistema de ecuaciones algebraicas a resolver, algo que es eciente resolverse utilizando
una computadora.
Aproximaciones polinmicas.
La tcnica para los clculos de diferencias nitas se basan en las aproximaciones polinmicas a f (x) cerca
de un punto x = x0 . Una aproximacin a f (x) se puede obtener mediante su recta tangente en x = x0
f (x) f (x0 ) + (x x0 ) f 0 (x0 )
una aproximacin lineal(h = x x0 ). Tambin podemos considerar una aproximacin cuadrtica a f (x)
f 00 (x 0)
f (x) f (x0 ) + hf 0 (x0 ) + h2
2!
19
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 20
Cada una de estas aproximaciones polinmicas es ms precisa a medida que aumenta el grado y si x est
sucientemente cerca de x0 .
Error de truncamiento
En las aproximaciones polinmicas se obtiene directamente una frmula del error a partir de la expresin
hn (n)
f (x) = f (x0 ) + hf 0 (x0 ) + . . . + f (x0 ) + Rn (2.1.1)
n!
conocida como serie de Taylor (vase[20]) con residuo. El error de truncamiento tiene una frmula similar
al termino n+1 de la serie, pero se evala en un punto intermedio, usualmente desconocido
hn+1 (n+1)
Rn = f (n+1 )
(n + 1)!
donde x0 < n+1 < x0 + x. Para que el resultado sea vlido, f (x) debe de tener n+1 derivadas continuas.
Existen distintas maneras de generar la aproximacin a la primera derivada, de las cuales nos interesa aquella
que ofrezca la mejor aproximacin posible con el menor esfuerzo computacional. Usando la serie de Taylor
2.1.1 podemos aproximar las derivadas de varias formas, a saber, por diferencias progresivas, diferencias
regresivas y diferencias centradas.
Diferencias Progresivas
0 h2 00
f (x + h) = f (x) hf (x) + f ()
2!
0 f (x + h) f (x) h2 00
f (x) = f ()
h 2!
0
en este caso la aproximacin a f (x) mediante diferencias progresivas es de primer orden, es decir, O(x).
Es comn escribir la ecuacin anterior como
0 f (x + h) f (x)
f (x) = Op (h)
h
h2 00
Op (h) = f ()
2!
Diferencias Regresivas
0 h2 00
f (x h) = f (x) hf (x) + f ()
2!
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 21
0 f (x) f (x h) h2 00
f (x) = f ()
h 2!
0
en este caso la aproximacin a f (x) mediante diferencias regresivas tambin es de primer orden O(h).
Entonces se puede escribir la derivada como
0 f (x) f (x h)
f (x) = Or (h)
h
h2 00
siendo una vez ms Or (h) = 2! f () el error de truncamiento.
Diferencias Centradas
Comparando las diferencias progresivas y regresivas observamos que el error de truncamiento es O (h), para
obtener una mejor aproximacin podemos calcular la media de esas aproximaciones.
h2 00 h3 000
f (x + h) = f (x) + hf 0 (x) + f (x) + f (p )
2! 3!
h2 h3 000
f (x h) = f (x) hf 0 (x) + f 00 (x) f (r )
2! 3!
restando las ecuaciones anteriores
h3 000
f (x + h) f (x h) = 2hf 0 (x) + f (p ) + f 000 (r )
3!
esta ltima expresin da lugar a la aproximacin de la primera derivada mediante diferencias centradas
f (x + h) f (x h)
f 0 (x) = + Oc (h2 )
2h
donde Oc (h2 ) es el error de truncamiento, el cual es de segundo orden. Haciendo una comparacin de los
errores de truncamiento de diferencias progresivas, diferencias regresivas y diferencias centradas tenemos que
por lo tanto, la mejor aproximacin a la primera derivada se logra con diferencias centradas.
Estas tres aproximaciones son consistentes, lo que signica que el error de truncamiento se anula cuando
h 0.
De manera anloga, se pueden obtener aproximaciones en diferencias nitas de derivadas de orden mayor. En
esta parte se desarrollar la manera de calcular la derivadas de orden uno y dos con diferencias centradas en
una, dos y tres dimensiones. Para encontrar la aproximacin en dos y tres dimensiones observemos que cada
una de las derivadas parciales es en realidad una derivada ordinaria si mantenemos jas las dems variables.
h2 00 h3 000
f (x + h) = f (x) + hf 0 (x) + f (x) + f (p )
2! 3!
h2 h3 000
f (x h) = f (x) hf 0 (x) + f 00 (x) f (r )
2! 3!
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 22
h3 000
f (x + h) f (x h) = 2hf 0 (x) + f (p ) + f 000 (r )
3!
f (x + h) f (x h)
f 0 (x) (2.3.1)
2h
h2 00 h3 h4
f (x + h) = f (x) + hf 0 (xi ) + f (x) + f 000 (x) + f iv (p )
2! 3! 4!
h 2 h 3 h4
f (x h) = f (x) hf 0 (x) + f 00 (x) f 000 (x) + f iv (r )
2! 3! 4!
f (x h) 2f (x) + f (x + h) h2 iv
f 00 (x) = f (p ) + f iv (r )
2
h 4!
as la aproximacin a la segunda derivada usando diferencias centradas, con error de truncamiento Oc (h2 ) es
f (x h) 2f (x) + f (x + h)
f 00 (x) (2.3.2)
h2
Utilizando 2.3.1 se obtendr la aproximacin a las derivadas parciales en dos variables x y y, lo cual se hace
manteniendo una de las variables ja. Sea f (x, y) C 1.
Si se mantiene y ja se tiene que
f f (x + h1 , y) f (x h1 , y)
x 2h1
f f (x, y + h2 ) f (x, y h2 )
y 2h2
Utilizando 2.3.2 se obtendr la aproximacin a las segundas derivadas parciales en dos variables x y y, lo
cual se hace manteniendo una de las variables ja. Sea f (x, y) C 2.
Si se mantiene y ja se tiene que
2f f (x h1 , y) 2f (x, y) + f (x + h1 , y)
x2 h21
Utilizando 2.3.1 se obtendr la aproximacin a las derivadas parciales en dos variables x, y, z , lo cual se hace
manteniendo una de las variables ja. Sea f (x, y) C 1.
Si se mantienen y, z jas se tiene que
f f (x + h1 , y, z) f (x h1 , y, z)
x 2h1
f f (x, y + h2 , z) f (x, y h2 , z)
y 2h2
f f (x, y, z + h3 ) f (x, y, z h3 )
y 2h3
Nuevamente usando 2.3.2 se obtendr la aproximacin a las segundas derivadas parciales en tres variables
x, y, z . Lo que se hace es mantener dos de las tres variables jas. Sea f (x, y, z) C 2 .
Si mantenemos y, z jas se tiene que
2f f (x h1 , y, z) 2f (x, y, z) + f (x + h1 , y, z)
x2 h21
El estencil para los problemas de una y dos dimensiones pueden obtenerse como caso particular del de tres
dimensiones, haciendo ceros los terminos que no deben de aparecer, por lo cual, trataremos en esta seccin
unicamente el estencil para un problema tridimensional.
f f (xi + h1 , yj , zk ) f (xi h1 , yj , zk )
(xi .yj , zk )
x 2h1
fi+1,j,k fi1,j,k
2h1
fn+1 fn1
2h1
f f (xi , yj + h2 , zk ) f (xi , yj h2 , zk )
(xi .yj , zk )
y 2h2
fi,j+1,k fi,j1,k
2h2
fn+Nx fnNx
2h2
f f (xi , yj , zk + h3 ) f (xi , yj , zk h3 )
(xi .yj , zk )
y 2h3
fi,j,k+1 fi,j,k1
2h3
fn+Nx Ny fnNx Ny
2h3
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 25
Dirichlet. Se especca el valor que la funcin u (x, t) toma en la frontera, es decir, es un valor conocido
en el nodo o nodos de la frontera, este valor pasa al lado derecho del sistema Ax = b. No se necesita hacer
ms manipulacin algebraica. Vase seccin 2.6.1.
Por ejemplo, para un problema unidimensional en un dominio = (a, b) y condicin de frontera Neumann
du1 du2
en los puntos x=a y x=b igual a
dn = g1 (x) y dn = g2 (x), al usar el mtodo del punto fantasma o
cticio, se aaden los puntos x1 = x0 h = ah y xn+1 = xn + h = b + h a la malla. Entonces ahora
se puede usar el mtodo de diferencias nitas centradas para resolver la ecuacin diferencial en todos los
puntos de la malla donde la solucin es desconocida. Se tiene entonces un sistema de n ecuaciones y n+2
incgnitas. Las ecuaciones adicionales para completar el sistema son las que corresponden a las condiciones
de frontera Neumann.
u1 u0 du1
=
h dn
un un1 du2
=
h dn
para las condiciones en a y b respectivamente. Sin embargo, la aproximacin a una derivada por diferencias
progresivas es de primer orden. Teniendo en cuenta que la aproximacin del mtodo de diferencias nitas que
se ha desarrollado es de segundo orden, necesitamos expresar tal condicin de frontera como una aproximacin
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 26
del mismo orden. Entonces, representando las derivadas como una diferencia nita centrada
u1 u1 du1
= = g1 (x)
2h dn
un+1 un1 du2
= = g2 (x)
2h dn
De las ecuaciones anteriores se tiene que u1 = u1 2hg1 y un+1 = un1 + 2hg2 . Colocando esto en la
discretizacin de diferencias nitas para los puntos x = a y x = b se tiene que
u1 2u0 + u1
= f0
h2
u1 2hg1 2u0 + u1
= f0
h2
u0 + u1 f0 g1
= +
h2 2 h
para el punto x = b.
Con lo cual se tiene una aproximacin de segundo orden para las fronteras tipo Neumann. Vase seccin
2.6.2.
Robin. Al ser una combinacin de las anteriores, se aplica la misma regla dependiendo de la condicin de
frontera en la que se encuentre el nodo. Vase seccin 2.6.3.
Dada la ecuacin diferencial parcial, para poder utilizar el Mtodo de Diferencias Finitas se debe de:
Generar una malla del dominio, es decir, un conjunto de puntos en los cuales se buscar la solucin
aproximada a la ecuacin diferencial parcial. Ver gura 2.6.1.
Sustituir las derivadas correspondientes con alguna de las frmulas de diferencias nitas centradas,
para obtener un sistema algebraico de ecuaciones Ax = b.
Resolver el sistema de ecuaciones para obtener la solucin aproximada en cada punto de la malla.
A continuacin de darn ejemplos de como proceder para resolver una ecuacin diferencial mediante el
mtodo de diferencias nitas en una dimensin, tomando en cuenta las distintas fronteras que puede tener
un problema, a saber, Dirichlet, Neumann y Robin.
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 27
en = [, ] y condiciones de frontera
u () = u
u () = u
Entonces, para poder empezar a usar el mtodo de diferencias nitas debemos de generar una malla, en este
caso, homognea del dominio = [, ]. Sea h = x = n
xi = + ih
con i = 0, 1, 2, . . . , n.
A continuacin, se sustituyen las derivadas de la ecuacin 2.6.1 con un representacin de la misma en
diferencias centradas, con lo que obtenemos
donde ai , bi , ci , fi son las evaluaciones en el nodo xi de a, b (x) , c (x) , f (x) respectivamente. Agrupando los
nodos, se obtiene el estencil
ai bi 2ai ai bi
ui1 + ci 2 ui + 2 + ui+1 = fi
h2 2h h h 2h
de donde se obtiene el sistema de ecuaciones
a1 b1 2a1 a1 b1
u + c1 u1 + 2 + u2 = f1
h2 2h h2 h 2h
a2 b2 2a2 a2 b2
u1 + c2 u2 + 2 + u3 = f2
h2 2h h2 h 2h
a3 b3 2a3 a3 b3
u2 + c3 u3 + 2 + u4 = f3
h2 2h h 2 h 2h
. . .
. . .
. . .
a(n1) b(n1) 2a(n1) a(n1) b(n1)
u(n2) + c(n1) u(n1) + + u = f(n1)
h2 2h h2 h2 2h
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 28
resolviendo el sistema de ecuaciones se obtiene la solucin aproximada en cada punto interior de la malla.
La solucin completa se obtiene al formar el vector
u u1 u2 . . . un1 u
para poder empezar a usar el mtodo de diferencias nitas, lo primero es presentar las condiciones de frontera
de la manera vista en seccin anterior (2.5).
De la condicin de frontera en x= tenemos que
u0 + u1 f0 u
= +
h2 2 h
en tanto que para x=
u(n1) un fn u
2
= +
h 2 h
Una vez teniendo las condiciones de frontera expresadas de esta forma, procedemos como anteriormente, es
1
decir, generamos la malla del dominio = [, ]. Sea h = x = n
xi = + ih
con i = 0, 1, 2, . . . , n.
A continuacin, se sustituyen las derivadas de la ecuacin 2.6.1 con un representacin de la misma en
diferencias centradas, con lo que obtenemos
donde ai , bi , ci , fi son las evaluaciones en el nodo xi de a (x) , b (x) , c (x) , f (x) respectivamente. Agrupando
los nodos, se obtiene el estencil
ai bi 2ai ai bi
ui1 + ci 2 ui + 2 + ui+1 = fi
h2 2h h h 2h
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 29
1 1 f0 u
2 u0 + 2 u1 = +
h h 2 h
a1 b1 2a1 a1 b1
u0 + c1 2 u1 + 2 + u2 = f1
h2 2h h h 2h
a2 b2 2a2 a2 b2
u1 + c2 2 u2 + 2 + u3 = f2
h2 2h h h 2h
a3 b3 2a3 a3 b3
2
u2 + c3 2 u3 + 2 + u4 = f3
h 2h h h 2h
. . .
. . .
. . .
1 1 fn u
2
u(n1) 2 un = +
h h 2 h
f0
+ uh
1 1 u0 2
a1 b1 h c1 h2 2a1 a1 + b12h u1 f1
2
1 a2 b22h c2 h2 2a2 a2 + b2 h
u2 f2
=
2
h2
.. .. . . .. .
.
. . . . .
fn u
1 1 un 2 + h
resolviendo el sistema de ecuaciones se obtiene la solucin aproximada en cada punto interior de la malla,
en forma de vector
u0 u1 u2 . . . un
en = [, ] y condiciones de frontera
u () = u
du
= cte = u
dx
u(n1) un fn u
= +
h2 2 h
podemos ya utilizar el mtodo de diferencias nitas para resolver la ecuacin. Entonces, generamos la malla
1
el dominio = [, ]. Sea h = x = n
xi = + ih
con i = 0, 1, 2, . . . , n.
A continuacin, se sustituyen las derivadas de la ecuacin 2.6.1 con un representacin de la misma en
diferencias centradas, con lo que obtenemos
resolviendo el sistema de ecuaciones se obtiene la solucin aproximada en cada punto interior de la malla.
La solucin completa se obtiene al formar el vector con la condicin de frontera en x=
u u1 u2 . . . un
Los ejemplos de la seccin anterior se toma una a(x) = constante. Para el caso en el que a(x) 6= constante,
0 00 0 00
considrese el dominio (x h1 , x) y (x, x + h1 ) donde h1 y h1 no son necesariamente iguales, entonces se
introduce el cociente de diferencias nitas para la primera derivada como
0
! !
u
h
0
h
0 u (x) u x h1
a x 1 a x 1 0 (2.7.1)
x 2 2 h1
y
! 00
1 u (x)
!
u
h
00
h
00 u x + h
a x+ 1 a x+ 1 00 (2.7.2)
x 2 2 h1
u
Aproximando a como una diferencia nita, se tiene que
x x
|0
( 00
! !)
u h1 u h1
a x+ a x
u
x 2 x 2
a ( 00
!
| 0 !) (2.7.3)
x x h h
x+ 1 x 1
2 2
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 31
00
0
u x + h1 u (x) u (x) u x h1
00
! 0
!
h1 h1
a x+ 00 a x 0
u
2 h1 2 h1
a 0 00
!
x x h1 + h1
2
u 0 00
sta aproximacin es de segundo orden a a en h1 , donde h1 = max{h1 , h1 }.
x x
Hasta ahora se ha visto como discretizar la parte espacial de las ecuaciones diferenciales parciales, lo cual
nos permite encontrar la solucin esttica de los problemas. Sin embargo para ecuaciones del tipo parablico
e hiperblico, las cuales dependen del tiempo, se necesita introducir una discretizacin en las derivadas
con respecto al tiempo. Al igual que con las discretizaciones espaciales, podemos utilizar algn esquema de
diferencias nitas en la discretizacin del tiempo.
ut = Lu
= auxx + buyy + cuzz + dux + euy + f uz + gu + h
ut = (1 ) (Lu)j + (Lu)j+1
Para =0 se obtiene un esquema de diferencias nitas hacia adelante en el tiempo, conocido como
esquema completamente explcito, ya que el paso n+1 se obtiene de los trminos del paso anterior n.
h2
Es un esquema sencillo, el cual es condicionalmente estable cuando k 2 donde h = x y k = t.
Para = 1 se obtiene el esquema de diferencias nitas hacia atrs en el tiempo, conocido como esquema
completamente implcito, el cual es incondicionalmente estable.
1
Para =
2 se obtiene un esquema de diferencias nitas centradas en el tiempo, conocido como esquema
Crank-Nicolson, este esquema tambin es incondicionalmente estable y es el ms usado por tal razn.
Entonces en el esquema de Crank-Nicolson se toman una diferencia progresiva para el tiempo y se promedian
las diferencias progresivas y regresivas en el tiempo para las derivadas espaciales.
ut = Lu
= auxx + buyy + cuzz + dux + euy + f uz + gu + h
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 32
donde los coecientes pueden depender de (x, y, z, t). Las discretizaciones correspondientes son
uj+1
i uji
ut
k
Entonces una vez que se sustituyen las derivadas por su forma en diferencias nitas lo que sigue es formar
el sistema Auj+1 = Buj + hj , esto se logra, colocando del lado izquierdo de la igualdad los trminos que
contengan el paso del tiempo correspondiente a j+1 y del lado derecho a los correspondientes trminos de
j.
uj+1
i 2uji + uj1
i
utt
k2
donde k = t es la particin del intervalo del tiempo. Mientras las dems derivadas parciales se sustituyen
por su aproximacin de diferencias nitas. Si
utt = Lu
= auxx + buyy + cuzz + dux + euy + f uz + hu + g
donde los coecientes pueden depender de (x, y, z, t), las discretizaciones correspondientes son
uj1
i 2uji + uj+1
i
utt
k2
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 33
para el tiempo y
uj 2uji + uji+n1
" #
buyy b in1
h2 2
uj 2uji + uji+n1n2
" #
cuzz c in1n2
h3 2
uj uji1
" #
dux d i+1
2h1
uj ujin1
" #
euy e i+n1
2h2
uji+n1n2 ujin1n2
" #
f uz f
2h3
O h2i
adems de hui y gi para el espacio. Al ser los errores de aproximacin de segundo orden en espacio
y en
2
tiempo O k , se espera que las discretizaciones sean k hi .
Entonces una vez que se sustituyen las derivadas por su forma en diferencias nitas lo que sigue es formar el
sistema uj+1 = 2uji uij1 + k 2 Buj , esto se logra, colocando del lado izquierdo de la igualdad los trminos
que contengan el paso del tiempo correspondiente a j +1 y del lado derecho a los correspondientes trminos
de j y j 1.
utt = Luj
uj1 2uji + j+1
ui
i
= Luj
k2
uj+1
i = 2uji uj1
i + k 2 Luj (2.8.1)
Los errores cometidos en la discretizacin son de orden cuadrtico, pues se ha utilizado la diferencia central
en tres puntos, tanto para el espacio como para el tiempo.
u1i = 2u0i u1 2
i + k Lu
0
donde tomamos
u0i = u0 (xi )
u1i u1
i
= u1 (xi )
2k
sustituyendo
lo cual permite calcular u1i a partir de las condiciones iniciales. Para el clculo de de uj+1
i con j > 0 se utiliza
la frmula 2.8.1 directamente.
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 34
2.8.3. Upwind
El esquema upwind (vase [8]), es un mtodo de resolucin especial para las ecuaciones hiperblicas, en
especial la ecuacin de adveccin, la cual esta dada por
ut + aux = 0
ak j ak
uj+1
i = ui1 + 1 uji
h h
por lo que para conocer el tiempo en j+1 hay que conocer el tiempo j y, si j = 0 entonces es u0 es la
condicin inicial del problema.
Cuando se usa algn mtodo de resolucin de ecuaciones diferenciales, se necesita conocer cuan exacta es la
aproximacin en comparacin con la solucin analtica (en caso de existir), vase [12, 17]
La norma innito es en general la ms apropiada para calcular los errores relativos a la discretizacin.
d2
00 d
Dado u = f (x), entonces P = , y Pu = f
dx dx2
d3 d2
d d
Si P = 3
+ a (x) 2
+ b (x) + c (x), entonces Pu = f est dada por u000 + a (x) u00 +
dx dx dx dx
b (x) u0 + c (x) u = f
Sea Ph el operador de diferencias nitas. Por ejemplo, para la ecuacin de segundo orden u00 (x) = f (x), el
operador diferencial ser
u (x h) 2u (x) + u (x + h)
Ph u (x) =
h2
Entonces, el error local de truncamiento se dene como
T (x) = P u Ph u
Entonces, por ejemplo, para la ecuacin diferencial u00 (x) = f (x) tenemos que
T (x) = P u Ph u
u (x h) 2u (x) + u (x + h)
= u00 (x)
h2
u (x h) 2u (x) + u (x + h)
= f (x)
h2
Ntese que el error local de truncamiento solo depende de la solucin del estencil de diferencias nitas y no
de la solucin global. Es una de estas razones por la cual se le llama error local. El error local de truncamiento
mide cuan bien la discretizacin de diferencias nitas aproxima a la ecuacin diferencial.
lm T (x) = lm (P u P uh ) = 0
h0 h0
La consistencia no garantiza que el mtodo de diferencias nitas trabaje. Se necesita otra condicin para
determinar cuando el mtodo converge o no converge. Tal condicin es la estabilidad del mtodo de diferencias
nitas.
1
A
C
El siguiente teorema es importante para demostrar la convergencia de los mtodos de diferencias nitas.
Usualmente es relativamente sencillo probar la consistencia, pero ms complicado o hasta a veces casi impo-
sible probar la estabilidad.
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 36
Para determinar la condicin de estabilidad de los mtodos con paso de tiempo, se utiliza el anlisis de
estabilidad de von Neumann, que puede describirse en los siguientes pasos:
2.10.1. Anlisis de von Neumann Simplicado para mtodos con Paso de Tiempo
U k+1 = f U k , U k+1
Asmase que se tiene un mtodo de paso temporal . Se tiene el siguiente teorema con
el cual se puede conocer la estabilidad del esquema de diferencias nitas.
Teorema. Sea = h . Un esquema de diferencias nitas con paso de tiempo (con coecientes constantes)
es estable existe una constante K (independiente de ,t, y h) y una malla con espacios h0 y t0 tal que
|g (, t, h) | 1 + Kt
Este teorema muesta que para determinar la estabilidad de un esquema de diferencias nitas, se necesita
considerar unicamente la amplicacin del factor g() = g(). Esta observacin es debida a von Neumann,
y es por esto, que este tipo de anlisis lleva su nombre.
Para establecer la estabilidad mediante el anlisis de von Neumann se siguen los siguientes pasos:
Se expresa uk+1
j = g()eijh
ut = 2 uxx
uk+1
j ukj h i
= ukj1 2ukj + ukj + uk+1
j1 2uk+1
j + uk+1
j
t
2 t
donde = 2h2
.
Por lo visto en la seccin anterior, para conocer la estabilidad hay que seguir una serie de pasos, entonces:
entonces h i h i
g() 1 eih 2 + eih = 1 + eih 2 + eih
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 37
y nalmente
1 + eih 2 + eih
g() =
1 [eih 2 + eih ]
ei = cos + isen
ei = cos isen
por lo que
1 + [2cos 2]
g () =
1 [2cos 2]
y as
1 + 2 [cos 1]
g () =
1 2 [cos 1]
dado que 1 cos 1.
Entonces si cos = 1
|g () | = 1
y s cos = 1
1 4
|g () | =
1 + 4
siempre es positivo, por tanto
1 4
|g () | = <1
1 + 4
entonces |g()| 1 para cualquier valor , t, h. Por lo que Crank-Nicolson es incondicionalmente estable.
h
c
t
Captulo 3
Ax = b
y as poder encontrar la solucin al problema planteado. Donde A es una matriz bandada, es decir, con-
tiene muchos elementos iguales a cero. Dependiendo de la dimnsin del problema, sta matriz puede ser
tridiagonal, pentadiagonal o heptadiagonal , para una, dos y tres dimensiones respectivamente.
En este captulo se estudian los diferentes mtodos para resolver el sistema de ecuaciones obtenido. Los
mtodos para resolver el sistema de ecuaciones Ax = b se agrupan en Mtodos Directos y Mtodos Iterativos.
La eleccin del mtodo especco para resolver el sistema depende de las propiedades particulares de la
matriz A. Los Mtodos Directos proporcionan la solucin en un nmero jo de pasos y slo estn sujetos a
los errores del redondeo, este tipo de mtodos son utilizados principalmente cuando la matriz es densa. En
los Mtodos Iterativos como su nombre lo destaca, se realizan iteraciones para aproximar la solucin y son
utilizados principalmente cuando la matriz es dispersa.
Cabe mencionar que la mayora del tiempo de cmputo necesario para resolver el problema de ecuaciones dife-
renciales parciales se consume en la solucin del sistema algebraico de ecuaciones asociado a la discretizacin,
por ello es importante elegir aquel mtodo que minimice el tiempo invertido en este proceso.
Parte importante en la resolucin de problemas con mtodos numricos es el resolver el sistema algebraico
Ax = b pero, tambin la forma de almacenar de manera ptima la matriz A en memoria (para problemas
reales stas matrices pueden llenar la memoria RAM de nuestro sistema) adems de facilitar los clculos que
involucra la resolucin del sistema. El sistema Ax = b puede ser resuelto ms ecientemente si los elementos
de A que son iguales a cero no son almacenados. Estos esquemas de almacenamiento continuo en memoria
para los elementos no cero de la matriz, requieren, por parte del esquema, del conocimiento de la ubicacin
de los valores dentro de la matriz original. Existen varios mtodos para el almacenamiento de los datos , en
sta parte se describiran Compressed Row Storage y Compressed Diagonal Storage.
38
CAPTULO 3. RESOLUCIN DE GRANDES SISTEMAS DE ECUACIONES 39
En el formato CSR se alojan los elementos no ceros del renglon en forma subsecuente. Si se supone que
aij de la matriz (val)
tenemos una matriz deispersa no simtrica, se crean tres vectores: uno para los elementos
col_ind, row_ptr). El vector val guarda los valores no ceros de la matriz.
y un par de vectores de enteros(
El vector col_ind guarda los indices de las columnas de los elementos de val. Esto es, s val(k) = aij
entonces col_ind(k) = j . El vector row_ptr almacena las locaciones del vector val donde empieza un
val(k) = aij entonces row_ptr (i) k < row_ptr (i + 1).
renglon, es decir, si Por convencin, se dene
row_ptr (n + 1) = nnz + 1, donde nnz es el nmero de valores distintos de cero en la matriz A. El ahorro
en el almacenamiento con sta aproximacin es considerable, ya que, en lugar de almacenar n2 valores, se
almacenan 2nnz + n + 1 valores.
0 2 0
10 0 0
3 9 0 0 0 3
0 7 8 7 0 0
A=
3
0 8 7 5 0
0 8 0 9 9 13
0 4 0 0 2 1
Entonces el formato CSR para la matriz es
val = 10 2 3 9 3 . . . 4 2 1
col_ind = 1 5 1 2 6 . . . 2 5 6
row_ptr = 1 3 6 9 13 17 20
Si la matriz A es simtrica, solo se almacena la porcin triangular superior(o inferior) de la matriz.
Entonces, decimos que la matriz A = (aij ) es bandada si existen dos nmeros constantes no negativos p, q
tal que aij 6= 0 slo si i p j i + q . En ste caso podemos almacenar la matriz A en un matriz
val = (1 : n, p : q).
Usualmente los esquemas de bandas almacenan algunos ceros, adems de que el formato CDS puede tambin
contener ceros que no corresponden del todo a la matriz A. Por ejemplo, si se considera una matriz A denida
como
10 3 0 0 0 0
3 9 6 0 0 0
0 7 8 7 0 0
A =
0 0 8 7 5 0
0 0 0 9 9 13
0 0 0 0 2 1
CAPTULO 3. RESOLUCIN DE GRANDES SISTEMAS DE ECUACIONES 40
Mtodos Directos
En esta seccin se mostrarn los algoritmos de resolucin directa de sistemas lineales ms comunes. El
problema a resolver es
Ax = b
donde A Mn (R) y x, b Rn . Por los resultados de lgebra lineal (vase [3]) este sistema de ecuaciones
tiene una nica solucin s det A 6= 0.
Como se mencion, en estos mtodos la solucin x se obtiene en un nmero jo de pasos y que slo estn
sujetos a los errores de redondeo. Entre los mtodos de ste tipo se encuentran:
3.2.1. Descomposicin LU
Si se puede efectuar la eliminacin gaussiana en el sistema Ax = b sin intercambios de renglones, entonces
se puede factorizar la matriz A en el producto de una matriz triangular inferior L y una matriz superior U
A = LU
donde
(1) (1) (1)
a11 a12 a1n
(2) .
.
0 a22 .
. .. .
U = .. .
. .
.. .. (n1)
. . an1,n
(n)
0 0 ann
1 0
.
.
m21 1 .
.. .
.
L = . 1 .
..
. 1 0
mm1 mn,n1 1
CAPTULO 3. RESOLUCIN DE GRANDES SISTEMAS DE ECUACIONES 41
(i)
aji
mji = (i)
aii
Ly = b
Ux = y
b1
y1 =
l11
y para toda i = 2, 3, . . . , n
i1
1 X
yi = bi lij yj
lii
j=1
una vez que obtenemos y se resuelve el sistema Ux = y por medio de la sustitucin hacia atrs usando
yn
xn =
unn
n
1 X
xi = yi uij xj
uii
j=i+1
n3
La descomposicin LU requiere
3 operaciones para una matriz densa, pero solo nq 2 de operaciones para
una matriz con ancho de banda q, lo cual lo hace muy econmico computacionalmente.
Ly = b
Lt x = y
Cuando se puede aplicar sta descomposicin, el costo de cmputo es mas reducido que en las anteriores, ya
n3
que requiere operaciones.
6
Se toma
l11 = A11
u12 = A12 /l11
para i = 2, . . . , n 1
li,i1 = Ai,i1
lii = Aii li,i1 ui1,i
ui,i+1 = Ai,i+1 /lii
por ltimo
ln,n1 = An,n1
lnn = Ann ln,n1 un1,n
Mtodos Iterativos
En estos mtodos se realizan iteraciones para aproximarse a la solucin x aprovechando las caractersticas
propias de la matriz A tratando de usar el menor nmero de pasos que en un mtodo directo.
Ax = b
comienza con una aproximacin inicial x0 x y genera una sucesin de vectores {xn }
a la solucin n=1 que
converge a x. Los mtodos iterativos convierten al sistema Ax = b en otro equivalente u = T u+c para alguna
0
matriz ja T y un vector c. Despus de seleccionar el vector x la sucesin de los vectores de la solucin
aproximada se genera calculando
xn = T xn1 + c n = 1, 2, 3 . . .
Teorema 1. Si kT k < 1, entonces el sistema lineal x = T x+c tiene una solucin nica x y las iteracionesxn
denidas para xn = T xn1 + c convergen hacia la solucin exacta x para cualquier aproximacin lineal x0 .
Entre los mtodos ms usados para el tipo de problemas tratados en ste trabajo estn: Conjugate Gradient
Method(CGM) para las matrices simtricas y Generalized Minimal Residual(GMRES) para matrices no
simtricas. Estos dos ltimos mtodos estn en el espacio de Krylov. Los mtodos minimizan en la k-sima
iteracin alguna medida de error sobre el espacio afn x0 + Kk donde x0 es la iteracin inicial y Kk es el
k-simo espacio de Krylov
DD EE
Kk = r0 , Ar0 , . . . , Ak1 r0
Proposicin. Si A es simtrica y positiva denida, los dos problemas siguientes son equivalentes
1
f (x) = xt Ax xt b + c mn (3.2.1)
2
Ax = b (3.2.2)
CAPTULO 3. RESOLUCIN DE GRANDES SISTEMAS DE ECUACIONES 43
1 1
f (x) = xt A + Ax b
2 2
al ser A simtrica
f (x) = Ax b
f (x) = Ax b
0 = Ax b = Ax = b
1
f (x) = f (x0 ) + hf (x0 ), x x0 i + (x x0 )t A(x x0 )
2
1
= f (x0 ) + kx x0 k kf (x0 )k cos + (x x0 )t A(x x0 )
2
donde es el ngulo entre f (x0 ) y (x x0 ). Como se busca f (x) sea mnimo, f (x0 ) y (x x0 ) deben de
tener la misma direccin y el mismo sentido.
xk+1 = xk tk vk
es decir, se busca una sucesin de vectores xk tal que f (xk+1 ) < f (xk ).
En el algoritmo del gradiente conjugado se toma a la matriz A como positiva denida, yAx = b. Tambin
como dato de entrada, el vector de bsqueda inicial x0 y se calcula r0 = b Ax0 , p0 = r0 , quedando el
mtodo numrico esquemticamente como
hpn , pn i
n =
hpn , Apn i
xn+1 = xn + n p n
rn+1 = rn n Apn
prueba de convergencia
rn+1 , rn+1
n=
hrn , rn i
pn+1 = rn+1 + n pn
nn+1
3.2.5. GMRES
Si la matriz generada por la discretizacin del mtodo de diferencias nitas no es simtrica, entonces una
opcin para resolver el sistema Ax = b es el mtodo GMRES (Generalized Minimal Residual).
1 2
v , v , . . . , vn
La idea bsica del mtodo consiste en construir una base ortonormal para el espacio de
Krylov Kn (A, v n ). Para hacer v n+1 ortogonal a Kn (A, v n ) se usa un algoritmo modicado del mtodo de
Gram-Schmidt para la generalizacin de la base ortonormal. Sea V la matriz donde la j-sima columna
corresponde al vector vj para j = 1, 2, . . . , n y seaH = (hij ) con 1 i, j n donde las entradas no
especicadas en el algoritmo son cero. Entonces la matriz H es una matriz superior de Hessenberg, es decir,
hij = 0 para j < i 1.
r0
El algoritmo GMRES recibe un vector inicial x0 y calcula r0 = b Ax0 , despus se toma 0 =
r0
, v 1 = 0
,
quedando el mtodo esquemticamente
para n = 1, 2, . . .
mientras n < 0{
w0n+1 = Av n
para l = 1, . . . , n {
= wln+1 , v l
hl,n
n+1
wl+1 = wln+1 hl,n v l
}
n+1
hn+1,n =
wn+1
n+1
wl+1
v n+1 =
hn+1,n
Calcular yn tal que n =
0 e1 Hn y n
Existen otros mtodos iterativos para la solucin del sistema Ax = b, como: Gauss-Seidel y Jacobi, Vase[7].
Sin embargo no alcanzan la eciencia del Gradiente Conjugado o de GMRES. Por ejemplo, para el sistema
4 3 0 x1 24
3 4 1 x2 = 30
0 1 4 x3 24
3
cuya solucin es el vector x = 4 ; el mtodo de Gauss-Seidel requiri de 50 iteraciones, Jacobi de
5
108 iteraciones, mientras que, el mtodo del Gradiente Conjugado slo requieri 3 iteraciones. Dadas estas
mtricas, se opt por incluir en este texto los mtodos iterativos ms ecientes para matrices simtricas y
no-simtricas, que son, Gradiente Conjugado y GMRES respectivamente.
Captulo 4
Implementacin Computacional
Para la implementacin computacional del mtodo de Diferencias Finitas se parte de la discretizacin desa-
rrollada en el captulo 2 la cual genera al menos un sistema algebraico, el cual puede ser resuelto por distintos
mtodos numricos como los vistos en el captulo 3, tomando en cuenta el almacenamiento de las matrices
en la RAM y la minimizacin de las operaciones involucradas en la resolucin del sistema algebraico.
As, en este captulo, se ven distintas formas de implementacin computacional en paquetes interpretados
como Scilab y MatLab(Octave), adems del lenguaje de programacin compilable C++ en conjuncin del
la librera GMM++; para que el usuario interesado en resolver problemas de ecuaciones diferenciales par-
ciales pueda optar por aquel que resuelva sus necesidades pero siempre tomando en cuenta la facilidad de
implementacin versus el rendimiento computacional.
El software presenta caractersticas particulares que hacen que su complejidad alcance niveles importantes.
A travs de los aos, los investigadores, ingenieros y desarolladoras han intentado minimizar esa dicultad
incorporando distintas ideas de otros mbitos al software. Entre los paradigmas de desarrollo actuales ms
destacados se encuentra el orientado a objetos.
Detrs de este paradigma se encuentran visiones de cmo se puede disminuir la complejidad y obtener
software de calidad. Incorpora una serie de tcnicas particulares y se tiene una visin de como se puede
enfocar el desarrollo. El paradigma orientado a objetos plantea que un sistema puede ser visto como objetos
que tienen ciertas caractersticas y que colaboran entre ellos para poder realizar una tarea.
4.1. Scilab
Scilab (http://www.scilab.org/) es un paquete se software libre para cmputo cientco, orientado al clculo
numrico, a las operaciones matriciales y especialmente a las aplicaciones cientcas y tcnicas.
Puede ser utilizado como una simple calculadora matricial, pero su inters principal radica en las cientos
de funciones de propsito general como especializadas que posee as como en sus posibilidades para la
visualizacin.
Scilab posee adems un lenguaje de programacin propio, muy parecido al lenguaje utilizado por Matlab, el
cual permite escribir programas para resolver problemas en concreto o nuevas funciones.
45
CAPTULO 4. IMPLEMENTACIN COMPUTACIONAL 46
A_ = A b ; // multiplicacin m a t r i z v e c t o r
gracar
plot2d (x , y) // grfica 2D
plot3d (x , y , z ) // superficie
como se puede notar, Scilab ofrece ventajas en el tiempo de desarrollo de programas o pruebas numricas, sin
embargo, una desventaja es que es ms lento en comparacin con lenguajes como c++. Hay que medir qu
nos importa ms, las horas trabajando en un lenguaje de programacin ms eciente o el rpido desarrollo
de la implementacin pero ms tardado en la ejecuacin del programa.
A_ = A b ; // multiplicacin m a t r i z v e c t o r
gracar
plot (x , y) // grfica 2D
mesh ( x , y , z ) // malla
surface (x , y , z ) // superficie
Como se puede ver, al igual que Scilab, MatLab ofrece un desarrollo rapido y sin complicaciones.
4.3. C++
C++ es uno de los lenguajes ms utilizados cuando se necesita eciencia en el uso de los recursos de la(s)
computadora(s). C++ se puede ver como la extensin del lenguaje C. C++ aade mecanismos modernos de
la programacin orientada a objetos, aunque, sin perder la forma estructural, por lo que se le considera a
C++ un lenguaje hbrido.
El modelo orientado a objetos presenta algunos elementos que son denominados fundamentales , vase [22]
Jerarqua
Abstraccin
Modularidad
Encapsulamiento
Si cualquiera de estos elementos no est presente, no podemos considerar al paradigma como modelo de
objetos.
Jerarqua
La jerarqua no es ms que la posibilidad de realizar un ordenamiento en niveles de lo que se desea representar.
De manera prctica, esa jerarqua se ve representada por la herencia, que puede ser de distintos tipos. Entre
las ms frecuentes se encuentran: la simple, la mltiple y la restrictiva. Todos los lenguajes orientados a
objetos brindan la posibilidad de heredar el comportamiento.
Abstraccin
Este trmino es quiz el ms simple de entender, pero el que ms problemas presenta a la hora de ser
puesto en prctica. La abstraccin es un proceso intelectual humano por el cual se es capaz de concentrarse
particularmente en las caractersticas que interesan para la solucin de una situacin. Al atacar un problema,
se intenta resolver mediante la aplicacin de pasos que se han utilizado anteriormente y se sabe que funcionan.
Al presentarse un caso nuevo, o que aparenta serlo, lo que se hace es obetener de l todas las similitudes
con casos anteriores y asu vez tratar de ver cules son las particularidades que pueden ser de inters. Este
proceso es especco de cada problema y de cada diseo, y en algunas ocasiones las caractersticas menos
pensadas son las relevantes para la solucin de la dicultad.
Modularidad
Este concepto no es propio de la orientacin a objetos, sino que es uno de los que ms se ha desarrollado
en la ingeniera de software. El objetivo nal es la divisin de un problema ms complejo en unidades ms
pequeas casi siempre sencillas. A su vez, la separacin en mdulos crea fronteras articiales que permiten que
los grupos desarrollen soluciones por separado integrandolas con mayor facilidad. Los mdulos interactan
entre ellos y pueden ser transportados a otros proyectos en caso de necesidad. La reutilizacin es uno de los
pilares del modelo orientado a objetos.
CAPTULO 4. IMPLEMENTACIN COMPUTACIONAL 48
Encapsulamiento
El encapsulamiento es el ocultamiento de la informacin de forma tal que slo est disponible para interactuar
con un objeto sin la necesidd de conocer cmo se comporta internamente. Este factor hace que los objetos
sean fcilmente reutilizables. Adems, junto con los conceptos anteriores, crea la estructura precisa para una
reduccin de la complejidad. Muchas veces el encapsulamiento se le relaciona con el trmino caja negra. Un
ejemplo sencillo ocurre cuando se es capaz de manejar algn tipo de artefacto sin saber exactamente qu es
lo que ocurre internamente. En tal caso, el ocultamiento de informacin facilita la interaccin.
Un objeto debe de poseer cualidades que lo denan en esencia, es decir, tendr propieades invariantes que
lo caracterizan a l y a su forma de actuar. Por ejemplo, no se puede imaginar un objeto automvil sin su
capacidad para desplazarse o un objeto perro sin su facultad de ladrar. Estas caractersticas forman parte
intrnseca del objeto y deben ser representadas en el modelo.
Matrices y Vectores
Para declarar matrices y vectores en esta biblioteca basta escribir
V e c t o r V( n )
M a t r i x M( n ,m)
la convencin es que cualquier tipo de vector o matriz puede ser inicializado con estos contructores. Acceder
a los valores del vector o matriz
a = V[ i ]
V[ i ] = b
a = M( i , j)
M( i , j) = b
s t d : : v e c t o r <T>
gmm : : d e n s e _ m a t r i x <T>
as como dispersas
s t d : : r s v e c t o r <T>
gmm : : c s r _ m a t r i x <T>
gmm : : c s c _ m a t r i x <T>
Donde el tipo csr representa el tipo compressed sparse row matrix mientras que csc al tipo compressed sparse
column matrix.
Resolvedores Iterativos
Gmm++ contiene una buena cantidad de resolvedores iterativos que podemos usar facilmente para resolver
los sistemas lineales que surgen de discretizar las ecuaciones diferenciales parciales. La lista de resolvedores
es la siguiente:
// The matrix
gmm : : row_matrix< s t d : : v e c t o r <d o u b l e > > A( 1 0 , 10);
// Right hand side
s t d : : v e c t o r <d o u b l e > B ( 1 0 ) ;
// Unknown
s t d : : v e c t o r <d o u b l e > X ( 1 0 ) ;
// Optional scalar product for cg
gmm : : i d e n t i t y _ m a t r i x PS ;
// Optional preconditioner
gmm : : i d e n t i t y _ m a t r i x PR ;
// Iteration object with the max residu
gmm : : i t e r a t i o n i t e r ( 1 0 E 9 ) ;
// restart parameter f o r GMRES
size_t restart = 50;
// Conjugate gradient
gmm : : c g (A, X, B, PS , PR, iter );
// BICGSTAB B i C o n j u g a t e Gradient Stabilized
gmm : : b i c g s t a b (A, X, B, PR, iter );
// GMRES g e n e r a l i z e d minimum residual
gmm : : g m r e s (A, X, B, PR, restart , iter )
// Q u a s i M i n i m a l Residual method
gmm : : qmr (A, X, B, PR, iter )
// unpreconditionned least s q u a r e CG
gmm : : l e a s t _ s q u a r e s _ c g (A, X, B, iter )
La descomposcin de dominio generalmente se reere a la separacin de una EDP o una aproximacin a ella
dentro de problemas acoplados sobre subdominios pequeos formando una particin del dominio original.
Esta descomposicin puede hacerse a nivel continuo, donde diferentes modelos fsicos, pueden ser usados
en diferentes regiones, o a nivel discreto, donde puede ser conveniente el empleo de diferentes mtodos de
aproximacin en diferentes regiones, o en la solucin del sistema algebraico asociado a la aproximacin de la
EDP.
Los mtodos de descomposicin de dominio (Domain Descomposition Methods, DDM) se basan en la supo-
sicin de
que dadoun dominio Rn , se puede particionar en E subdominios i con i = 1, 2, . . . , E tales
SE
que = i=1 i , entre los cuales puede existir o no un traslape Entonces, el problema es reformulado en
CAPTULO 4. IMPLEMENTACIN COMPUTACIONAL 50
trminos de cada subdominio (mediante el uso de algn mtodo de discretizacin, por ejemplo, diferencias
nitas) obteniendo una familia de subproblemas de tamao reducido e independientes entre s, y que estn
acoplados a travs de la solucin en la interfase de los subdominios.
De esta manera, se puede clasicar de forma burda a los mtodos de descomposcin de dominio , como aquellos
en que: existe traslape entre los subdominios y en los que no existe traslape. A la primera clase pertenece el
mtodo de Schwarz (en el cual el tamao del traslape es importante en la convergencia del mtodo) y a los
de segunda clase pertenecen los mtodos del tipo subestructuracin (en el cual los subdominios slo tienen
en comn a los nodos de interfase o frontera interior).
Por otra parte, dado un sistema lineal M x = w que proviene de la discretizacin de un mtodo tipo diferencias
nitas, elemento nito o volumen nito, siempre es posible reacomodarlo como
A B u a
=
C D v b
D CA1 B v = b CA1 a
y
u = A1 (a Bv)
Nv = g
D CA1 B
N =
g = b CA1 a
a esta descomposicin matricial se le conoce como la descompisicin de Schur. Por ello se han desarrollado
varios mtdos basados en esta descomposicin, el ms bsico de ellos es el mtodo de de descomposicin de
domino de subestructuracin. A partir de este, se han generado mltiples variantes usando precondicionadores
a priori, para acelerar la convergencia del sistema. Vase apndice B.
2
Sin perdida de generalidad, sea un dominio en R el cual es descompuesto en una malla gruesa de nm
dando un total de E subdominios; donde cada subdominio es descompuesto a su vez en p q elementos,
entonces es necesario resolver los nodos u de la frontera interior mediante la resolucin del sistema virtual
lineal asociado a mtodo del complemento de Schur, vese pendice B.
Su = b
CAPTULO 4. IMPLEMENTACIN COMPUTACIONAL 51
equivalente al sistema
E E
" #
X X
Si u = bi
i=1 i=1
y
1
bi = bi AI
i AII
i bIi
donde A I II I
i , Ai , Ai , Ai son las matrices de carga asociadas al los nodos de FronteraInterior-FronteraInterior,
FronteraInterior-Interiores, Interiores-Interiores, Interiores-FronteraInterior respectivamente de cada subdo-
minio (las cuales son matrices bandadas), mientras que bi y bIi son los vectores asociados al vector de carga
de la frontera interior e interiores respectivamente.
Una vez resuelto el sistema Su = b de los nodos de la frontera interior, se procede a resolver los nodos
interiores mediante la resolucin de
1
uI = AII bI AI
i i u
Aplicaciones y Pruebas
5.1. Ejemplos
Para ejemplicar el mtodo de diferencias nitas desarrollado, se mostrar cmo resolver algunas ecuaciones
clsicas como Poisson, el Calor, la Onda, de Adveccin. Usando lo desarrollado en el captulo dos, se pueden
resolver ecuaciones diferenciales parciales de segundo orden en espacio y tiempo.
Dada la ecuacin diferencial parcial, para poder utilizar el Mtodo de Diferencias Finitas se debe de:
Generar una malla del dominio, es decir, un conjunto de puntos en los cuales se buscar la solucin
aproximada a la ecuacin diferencial parcial.
Sustituir las derivadas correspondientes con alguna de las frmulas de diferencias nitas centradas,
para obtener un sistema algebraico de ecuaciones Ax = b.
Resolver el sistema de ecuaciones para obtener la solucin aproximada en cada punto de la malla.
Donde
2u 2u
+ 2 = f
x2 y
en = [a, b] [c, d]
con condiciones u (x, y) = g (x, y) en .
Entonces, segn el mtodo de diferencias nitas debemos de sustituir las derivadas por su expresin en
diferencia nita, por tanto
52
CAPTULO 5. APLICACIONES Y PRUEBAS 53
1 1 1 1 1 1
2 uin + 2 ui1 2 2
+ 2 ui + 2 ui+1 + 2 ui+n = fi
h2 h1 h h2 h1 h2
este ltimo resultado es el estncil para el i-simo nodo de la malla que se utiliza para aproximar la solucin de
O h21 + h22
la ecuacin de Poisson mediante el mtodo de diferencias nitas, con un error de truncamiento .
Ejemplo
Considrese la ecuacin de Poisson en el dominio = [0, 0.5]
u = 2 cos (x)
u (0) = 1
u (0.5) =
respectivamente.
Figura 5.1.2: Grca del anlisis del renamiento usando diferencias nitas de la ecuacin de Poisson, usando
el grco de log error vs. log h, en donde se muestra la regin de pendiente aproximada a -2 acorde a lo
tericamente esperado.
CAPTULO 5. APLICACIONES Y PRUEBAS 54
Ejemplo
Considrese la ecuacin de Poisson para el dominio = [1, 1] [1, 1]
Figura 5.1.4: Grca del anlisis del renamiento usando diferencias nitas de la ecuacin de Poisson, usando
el grco de log error vs. log h, en donde se muestra la regin de pendiente aproximada a -2 acorde a lo
tericamente esperado.
Ejemplo
Para el primer ejemplo, la ecuacin utilizada es
vu + b u = 0
Para poder resolver esta ecuacin (y las siguientes) en el programa desarrollado, se debe de hacer un poco
de lgebra, ya que el programa recibe trminos tipo auxx + buyy , es decir, dada
vu + b u = 0
0.01 (uxx + uyy ) + (1, 3) (ux , uy ) = 0
0.01uxx 0.01uyy + ux + 3uy = 0
de esta manera ya se puede introducir cada coeciente de la derivada parcial dentro del programa que resuelve
el problema.
Ejemplo
Para este segundo ejemplo la ecuacin a resolver es
vu + b u + cu = 0
CAPTULO 5. APLICACIONES Y PRUEBAS 56
y = 1 0 < x < 1
u (x, y) = 1 y = 1 0<x1
x=1 1 y 1
el coeciente advectivo b = (y, x), el valor de c = 104 y v = 0.01. Se utiliz una discretizacin de 256 256
nodos.
vu + b u + cu = 0
0.01 (uxx + uyy ) + (y, x) (ux , uy ) + 104 u = 0
0.01uxx 0.01uyy + yux xuy + 104 u = 0
Ejemplo
Para el tercer ejemplo la ecuacin a resolver es
vu + b u + cu = 0
(
x = 1 1 < y < 1
u (x, y) = 1
y=1 1 x 1
n
u (x, y) = 0 y = 1 1 x 1
1+y n
u (x, y) = x = 1 1 y 1
2
el coeciente advectivo b = 1+y
2 , 0 , el valor de c = 10
4 y v = 0.01. Se utiliz una discretizacin de
vu + b u + cu = 0
1+y
0.01 (uxx + uyy ) + , 0 (ux , uy ) + 104 u = 0
2
1+y
0.01uxx 0.01uyy + ux + 104 u = 0
2
ut = uxx
u(0, t) = u(l, t) = 0
u(x, 0) = f (x)
uj+1
i uji
ut
k
entonces
" j j j j+1 j+1 j+1
#
uj+1
i uji ui1 2ui + ui+1 ui1 2ui + ui+1
= +
k 2 h2 h2
CAPTULO 5. APLICACIONES Y PRUEBAS 58
ahora, como ya se sabe, basta agrupar los trminos j+1 del lado izquierdo de la igualdad y los trminos j
del lado derecho, para as obtener el sistema de ecuaciones que se resolver Au
j+1 = Buj en cada intervalo
de tiempo, obteniendo el estencil siguiente
1 j 1 j
2 uj+1 + + 2 uj+1 2 uj+1 = u + 2 uji + u
2h i1 k h i
2h i+1 2h2 i1 k h 2h2 i+1
Ejemplo
Considrese la ecuacin del calor en el dominio = [0, 1]
ut = u
y condiciones en la frontera
u (x, 0, t) = 0
u (x, 1, t) = 0
Se reolvi utilizando 21 nodos con dt = 0.025 con 21 pasos de tiempo, es decir, el tiempo nal fue de 0.5.
La solucin al problema se muestra en las siguientes grcas para algunos tiempos
Figura 5.1.9: Grca del anlisis del renamiento usando diferencias nitas de la ecuacin de calor, usando
el grco de log error vs. log h, en donde se muestra la regin de pendiente aproximada a -2 acorde a lo
tericamente esperado.
Figura 5.1.10: Grca del anlisis del renamiento usando diferencias nitas de la ecuacin de calor, usando
el grco de log error vs. log h, en donde se muestra la regin de pendiente aproximada a -2 acorde a lo
tericamente esperado.
Ejemplo
Se resolver la ecuacin de calor en dos dimensiones en el dominio = [0, 1] [0, 1]
ut = u
y condiciones en la frontera
u (x, 0, t) = 0
u (x, 1, t) = 0
u (0, y, t) = 0
u (1, y, t) = 0
El problema se corri con una malla de 21 21 nodos, un paso de tiempo de dt = 0.0025 durante 40 pasos
de tiempo.
Este ejemplo tiene solucin mediante series de Fourier, por lo tanto no se realiza el anlisis, ya que, Fourier
tambin es un mtodo aproximativo, sin embargo, la solucin coincide con lo reportado en la literatura.
utt = uxx
u(0, t) = u(l, t) = 0
u(x, 0) = f (x)
ux (x, 0) = g(x)
donde es una constante. Se comienza reemplazando las derivadas parciales por un cociente de diferencias
nitas
uj+1
i 2uji + uj1
i
utt
k2
uji1 2uji + uji+1
uxx
h2
k 2 j 2k 2 j k 2 j
uj+1
i = 2uji uij1 + ui1 u + 2 ui+1
h2 h2 i h
CAPTULO 5. APLICACIONES Y PRUEBAS 62
Ejemplo
Consideremos la ecuacin de onda en el dominio = [1, 1]
utt = 4uxx
y condiciones en la frontera
u (0, t) = 0
u (1, t) = 0
El problema se corrio en una malla de 1001 nodos y un paso de tiempo dt = 0.001 durante 500 pasos de
tiempo.
Figura 5.1.15: Grca del anlisis del renamiento usando diferencias nitas de la ecuacin de onda, usando
el grco de log error vs. log h, en donde se muestra la regin de pendiente aproximada a -2 acorde a lo
tericamente esperado.
Figura 5.1.16: Grca del anlisis del renamiento usando diferencias nitas de la ecuacin de onda, usando
el grco de log error vs. log h, en donde se muestra la regin de pendiente aproximada a -2 acorde a lo
tericamente esperado.
S a0 el estencil es
ak j ak
uj+1
i = ui1 + 1 uji
h h
Ejemplo
Tomemos la ecuacin
ut + 2ux = 0
CAPTULO 5. APLICACIONES Y PRUEBAS 64
2
u (x, 0) = e((x0.2) )
Figura 5.1.18: Grca del anlisis del renamiento usando diferencias nitas de la ecuacin de adveccin,
usando el grco de log error vs. log h, en donde se muestra la regin de pendiente aproximada a -2 acorde
a lo tericamente esperado.
CAPTULO 5. APLICACIONES Y PRUEBAS 65
Figura 5.1.19: Grca del anlisis del renamiento usando diferencias nitas de la ecuacin de adveccin,
usando el grco de log error vs. log h, en donde se muestra la regin de pendiente aproximada a -2 acorde
a lo tericamente esperado.
uxx + k 2 u = 0
donde k= c y es la frecuencia de la propagacin de la onda y c es la velocidad del sonido.
se obtiene
ui1 2ui + ui+1
+ k 2 ui = 0
h2
agrupando los nodos
1 2 2 1
2
ui1 + k 2 ui + 2 ui+1 = 0
h h h
donde h = x.
Ejemplo
Sea la ecuacin
uxx k 2 u = 0
u (0) = 1
u0 (1) = iku (1)
1
Basado en el trabajo [21]
2
Ms detalles en el apndice D
CAPTULO 5. APLICACIONES Y PRUEBAS 66
En el trabajo [14], se considera como modelo matemtico el problema de valor en la frontera (BVP) asociado
con la ecuacin de Poisson, con condiciones de frontera Dirichlet, denido en como:
2 u = f en
u = g en
este ejemplo, gobierna los modelos de muchos sistemas de la ingeniera y de la ciencia, entre ellos el ujo
de agua subterrnea a travs de un acufero isotrpico, homogneo bajo condiciones de equilibrio y es muy
usado en mltiples ramas de la fsica, por ejemplo, gobierna la ecuacin de la conduccin de calor en un
slido bajo condiciones de equilibrio.
Para las pruebas de rendimiento en las cuales se evala el desempeo de los programas realizados se usa
n = 1006, pero es posible hacerlo con nN ms grande.
Las pruebas realizadas se hicieron usando desde 32 hasta 1024 Cores en el cluster Kan Balam, para las
descomposiciones de 31 33 y 150 150, 31 33 y 200 200 y 31 33 y 250 250, con lo que se obtiene
los siguientes resultados
Subdominios 32 cores 64 cores 128 cores 256 cores 512 cores 1024 cores
En donde si usamos las mtricas de aceleracin y eciencia relativas (vese pendice A) obtenemos los
siguientes resultados
31 33 y 150 150 32
S1024 = 5.6 32 = 32
S1024 32 = 0.2
E1024
31 33 y 200 200 64
S1024 = 5.9 64 = 8
S1024 64 = 0.7
E1024
31 33 y 250 250 128
S1024 = 4.1 128 = 4
S1024 128 = 1.0
E1024
T (1)
Donde S es el factor de aceleracin, denido como S = T (p) , que es el cociente del tiempo que se tarda
en completar el cmputo utilizando un solo porcesador entre el tiempo que se necesita para realizarlo en p
T (1) s
procesadores trabajando en paralelo. La E se dene como factor de eciencia, y est dao por E= pT (p) = p,
el cual es el cociente del tiempo que se tarda en completar el cmputo usando un slo core del procesador
entre el nmero de procesadores multiplicado por el tiempoque necesita para realizarlo en p procesadores
trabajando en paralelo. E sera cercano a la unidad cuando el hardware se utiliza de manera eciente.
De esta ltima tabla, se desprende que los algoritmos desarrollados son altamente escalables en equipos
paralelos, ya que es posible obtener una alta eciencia al encontrar descomposiciones adecuadas al Hardware.
Que la eciencia sea igual a la unidad implica que el hardware se est usando de la manera ms eciente
posible.
Captulo 6
Los datos de los problemas reales presentan siempre errores de medicin, y el trabajo aritmtico para
la solucin est limitado a un nmero nito de cifras signicativas que resultan en errores de redondeo.
Por lo tanto, incluso los mtodos analticos proporcionan aproximaciones.
La evaluacin numrica de de las soluciones analticas es a menudo una tarea laboriosa y compu-
tacionalmente ineciente, mientras que los mtodos numricos generalmente proporcionan soluciones
numricas adecuadas.
es por ello que el uso de mtodos numricos como el Mtodo de Diferencias Finitas se han convertido en una
excelente herramienta para la resolucin de ecuaciones diferenciales parciales.
6.1. Conclusiones
A lo largo de este trabajo se desarroll de manera minuciosa el Mtodo de Diferencias Finitas en mallas
estructuradas, para poder aplicarlo a la resolucin de ecuaciones diferenciales parciales de segundo orden, en
una, dos y tres dimensiones espaciales, as como tambin en tiempo. Con esto es posible resolver una gran
variedad de ecuaciones parciales que aparecen en muchos problemas, como lo son: la ecuacin de Laplace,
la ecuacin de Poisson, la ecuacin del calor, la ecuacin de la onda, la ecuacin de adveccin, etc. La
programacin se realiz de manera general, de tal manera que el mismo programa pueda resolver distintos
casos de las ecuaciones de segundo grado, esto se logra simplemente cambiando los valores de los coecientes.
Desarroll de manera general, del mtodo de diferencias nitas para resolver ecuaciones diferenciales
parciales de segundo grado en una, dos y tres dimensiones con mallas estructuradas. En el captulo
dos, a partir de la serie de Taylor se muestra cmo encontrar las derivadas que sern sustituidas en las
ecuaciones diferenciales que se intentan resolver. Se muestra cmo se realiza el proceso en una, dos y
tres dimensiones, para la primera y segunda derivada.
68
CAPTULO 6. COMENTARIOS FINALES Y CONCLUSIONES 69
Desarroll los mtodos de diferencias nitas para resolver problemas con primera y segunda derivada.
En el captulo dos, en la seccin 2.6, se dan ejemplos de cmo resolver ecuaciones diferenciales parciales
con el mtodo de diferencias nitas. Se muestra cmo empezando de la ecuacin a resolver, se discretiza
y como se llega a obtener un sistema Ax = b, el cual al resolverlo se tiene la aproximacin numrica
de la ecuacin en cada punto de la malla, todo esto, con distintas condiciones de frontera (Dirichlet,
Neumann o Robin).
Desarroll los algoritmos para la solucin de ecuaciones diferenciales parciales en espacio y tiempo.
En el captulo dos, secciones 2.6 y 2.7 se muestran los algoritmos para poder resolver las ecuaciones
diferenciales parciales, tanto en espacio como en tiempo. Se muestra el esquema theta para ecuaciones
con una derivada temporal, como la ecuacin de calor. Tambin se desarrolla el algoritmo para resolver
ecuaciones con segunda derivada temporal, por ejemplo, para resolver la ecuacin de ondas. Por ltimo,
se describe y se muestra el esquema upwind, para resolver ecuaciones como la adveccin.
Desarroll de los programas para resolver las ecuaciones diferenciales parciales tanto en espacio como en
tiempo. Se desarrollaron los algoritmos mostrados en el captulo dos. Se desarrollaron en lenguaje C++
para una, dos y tres dimensiones, as como en los apndices se mostr la manera de la implementarlos
con scilab y matlab(octave). El cdigo se encuentra en la pgina http://mmc2.geosica.unam.mx/omb.
Los mtodos numricos para resolver ecuaciones diferenciales parciales son rpidos y conables dentro de
sus rangos de aplicacin, nos permiten tener una idea ms clara de la solucin de la ecuacin diferencial
en todo en dominio de inters y es relativamente sencilla su implementacin. Existen situaciones en las que
es preferible el uso de mtodos numricos an cuando existe una solucin analtica o semi-analtica, por
ejemplo, la ecuacin de calor tiene solucin en series de Fourier,sin embargo los mtodos numricos como el
de diferencias nitas son ms ecientes para estos casos. La mayor de parte de los problemas concretos son en
general, complejos, y donde los mtodos matemticos para solucionarlos no son sucientes para resolverlos.
En este trabajo se mostro cmo resolver ecuaciones diferenciales parciales lineales con el Mtodo de Dife-
rencias Finitas. As mismo, el mtodo puede ser aplicado para resolver ecuaciones diferenciales parciales no
lineales. Es posible tambin, adaptar la metodologa de este trabajo a otros mtodos numricos que resuelven
ecuaciones parciales, como: Volumen Finito y Elemento Finito.
Desarrollar el Mtodo de Diferencias Finitas para resolver Ecuaciones Parciales No-lineales. Una vez
que podemos resolver ecuaciones lineales de segundo grado, el esfuerzo se enfocara en el siguiente grupo
de ecuaciones, las no lineales. As como las lineales, las no lineales tambin aparecen en problemas de
ciencias e ingeniera, ejemplos de ste tipo de ecuaciones:
Desarrollar la misma metodologa con otros mtodos, como lo son: Elemento Finito y Volumen Finito.
Lo que se realizara, sera resolver ecuaciones diferenciales parciales, mostrando el cmo realizarlo
(dependiendo del mtodo), su deduccin matemtica y su implementacin computacional en una, dos
y tres dimensiones.
Utilizar metodologas ptimas para hacer la paralelizacin acorde al hardware disponible al usuario.
As se podra tener un grupo de herramientas para poder resolver gran cantidad de problemas, de los cuales
podemos escoger el que ofrezca mayores ventajas a nivel computacional o el que mejor se adapte al problema
a trabajar.
Apndice A
Cmputo Paralelo
Los sistemas de cmputo con procesamiento en paralelo surgen de la necesidad de resolver problemas com-
plejos en un tiempo ms o menos razonable, utilizando ventajas de memoria, velocidad de los procesadores,
formas de interconexin de estos y distribucin de la(s) tarea(s), a los que en su conjunto se denomina
arquitectura en paralelo. Se entiende por una arquitectura en paralelo a un conjunto de procesadores inter-
conectados que son capaces de cooperar en la solucin de un problema. As, para resolver un problema en
particular, se usa una o combinacin de mltiples arquitecturas (topologas), ya que cada una ofrece venta-
jas y desventajas que tienen que tomarse en cuenta antes de implementar la solucin del problema en una
arquitectura en particular, vase
Arquitecturas
Se explicarn las dos clasicaciones de computadoras ms conocidas de la actualidad. La primera es la
clasicacin de Flynn, en la cual se tienen en cuenta sistemas con uno o varios cores. La segunda, ms
moderna, slo se tienen en cuanto los sistemas con ms de un core.
Clasicacin de Flynn
Es una clasicacin clsica de aruitecturas de computadoras, en la cual se toman en cuenta uno o ms
procesadores.
Se basa en el ujo que siguen los datos dentro de la mquina y de las instrucciones sobre los datos. Se dene
como ujo de intrucciones al conjunto de instrucciones secuenciales que son ejecutadas por un nico core y
como ujo de datos al ujo secuencial de datos requeridos por el ujo de instrucciones.
70
APNDICE A. CMPUTO PARALELO 71
Cuando las unidades de proceso reciben datos de una memoria no compartida estos sistemas reciben el
nombre de MULTIPLE SISD (MSISD). En arquitecturas con varias unidades de control (MISD Y MIMD),
existe otro ni- vel superior con una unidad de control que se encarga de controlar todas las unidades de
control del sistema (ejemplo de estos sistemas son las mquinas paralelas actuales).
Computadoras Paralelas
La clasicacin moderna de computadoras paralelas hace alusin nica y exclusivamente a los sistemas
que tienen ms de un core (i.e mquinas paralelas). Existen dos tipos de sistemas teniendo en cuenta su
acoplamiento:
Los sistemas fuertemente acoplados. Son aquellos en los que los procesadores dependen unos de otros.
Los sistemas fuertemente acoplados se comunican a travs de una memoria comn.
Los sistemas dbilmente acoplados. Son aquellos en los que existe poca interaccin entre los diferentes
procesadores que forman el sistema.
Atendiendo sta y a otras caractersticas, la clasicacin moderna divide a los sistemas en dos tipos:
Para hacer uso de la memoria compartida por ms de un core, se requiere hacer uso de tcnicas de semforos
que mantienen la integridad de la memoria; esta arquitectura no puede crecer mucho en el nmero de
procesadores interconectados por la saturacin rpida del bus o del medio de interconexin. Dependiendo
de la forma en que los procesadores comparten la memoria, se clasican en sistemas multiprocesador UMA,
NUMA, COMA y Pipeline.
La transferencia de los datos se realiza a travs de la red de interconexin que conecta un subconjunto de
procesadores con otro subconjunto. La transferencia de unos procesadores a otros se realiza por mltiples
transferencias entre procesadores conectados dependiendo del establecimiento de dicha red.
Dado que la memoria est distribuida entre los diferentes elementos de proceso, estos sistemas reciben
el nombre de distribuidos. Por otra parte, estos sistemas son dbilmente acoplados, ya que los mdulos
funcionan de forma casi independiente unos de otros. Este tipo de memoria distribuida es de acceso lento
por ser peticiones a travs de la red, pero es una forma muy efectiva de tener acceso a un gran volumen de
memoria.
Los cluster se pueden clasicar en dos tipos segn sus caractersticas fsicas:
Cluster homogneo si todos los procesadores y/o nodos participantes en el equipo paralelo son iguales
en capacidad de cmputo (en la cual es permitido variar la cantidad de memoria o disco duro en cada
core).
Cluster heterogneo es aquel en que al menos uno de los procesadores y/o nodos participantes en el
equipo paralelo son de distinta capacidad de cmputo.
Los cluster pueden formarse de diversos equipos; los ms comunes son los de computadoras personales, pero
es creciente el uso de computadoras multiprocesador de ms de un core de memoria compartida interco-
nectados por red con los dems nodos del mismo tipo, incluso el uso de computadoras multiprocesador de
procesadores vectoriales Pipeline. Los cluster armados con la conguracin anterior tienen grandes ventajas
para procesamiento paralelo:
La reciente explosin en redes implica que la mayora de los componentes necesarios para construir un
cluster son vendidos en altos volmenes y por lo tanto son econmicos. Ahorros adicionales se pueden
obtener debido a que slo se necesitar una tarjeta de vdeo, un monitor y un teclado por cluster. El
mercado de los multiprocesadores es ms reducido y ms costoso.
Desventajas del uso de clusters de computadoras personales para proce- samiento paralelo:
Con raras excepciones, los equipos de redes generales producidos masivamente no estn diseados para
procesamiento paralelo y tpicamente su latencia es alta y los anchos de banda pequeos comparados
con multiprocesadores. Dado que los clusters explotan tecnologa que sea econmica, los enlaces en el
sistema no son velo- ces implicando que la comunicacin entre componentes debe pasar por un proceso
de protocolos de negociacin lentos, incrementando seriamente la latencia. En muchos y en el mejor de
los casos (debido a costos) se recurre a una red tipo Fast Ethernet restringimiento la escalabilidad del
cluster.
APNDICE A. CMPUTO PARALELO 73
Hay poco soporte de software para manejar un cluster como un sistema integrado.
Los procesadores no son tan ecientes como los procesadores usados en los multiprocesadores para
manejar mltiples usuarios y/o procesos. Esto hace que el rendimiento de los clusters se degrade con
relativamente pocos usuarios y/o procesos.
Tipos de Cluster
Bsicamente existen tres tipo de clusters, cada uno de ellos ofrece ventajas y desventajas, el tipo ms adecuado
para el cmputo cientco de alto rendimiento, pero existen aplicaciones cientcas que pueden usar ms de
un tipo al mismo tiempo.
Alta-disponibilidad (Fail-over o High-Availability): este tipo de cluster esta diseado para mantener
uno o varios servicios disponibles incluso a costa de rendimiento, ya que su funcin principal es que el
servicio jams tenga interrupciones como por ejemplo un servicio de bases de datos.
Alto-rendimiento (HPC o High Performance Computing): este tipo de cluster est diseado para obte-
ner el mximo rendimiento de la aplicacin utilizada incluso a costa de la disponibilidad del sistema, es
decir el cluster puede sufrir cadas, este tipo de conguracin est orientada a procesos que requieran
mucha capacidad de clculo.
Balanceo de Carga (Load-balancing): este tipo de cluster esta di- seado para balancear la carga de
trabajo entre varios servidores, lo que permite tener, por ejemplo, un servicio de clculo intensivo
multiusuarios que detecte tiempos muertos del proceso de un usuario para ejecutar en dichos tiempos
procesos de otros usuarios.
Mtricas de Desempeo
Las mtricas de desempeo del procesamiento de alguna tarea en paralelo es un factor importante para
medir la eciencia y consumo de recursos al resolver una tarea con un nmero determinado de procesadores
y recursos relacionados de la interconexin de stos.
Entre las mtricas para medir desempeo en las cuales como premisa se mantiene jo el tamao del problema,
destacan las siguientes: Factor de aceleracin, eciencia y fraccin serial. Cada una de ellas mide algo en
particular y slo la combinacin de estas dan un panorama general del desempeo del procesamiento en
paralelo de un problema en particular en una arquitectura determinada al ser comparada con otras.
T (1)
s = (A.0.1)
T (p)
en ambos casos se asume que se usar el mejor algoritmo tanto para un solo core como para p procesadores.
Esta mtrica en el caso ideal debera de aumentar de forma lineal al aumento del nmero de procesadores.
Eciencia
Se dene como el cociente del tiempo que se tarda en completar el cmputo de la tarea usando un solo core
entre el nmero de procesadores multiplicado por el tiempo que necesita para realizarlo en p procesadores
trabajando en paralelo
T (1) s
e = = (A.0.2)
pT (p) p
APNDICE A. CMPUTO PARALELO 74
Este valor ser cercano a la unidad cuando el hardware se est usando de manera eciente, en caso contrario
el hardware ser desaprovechado.
Fraccin Serial
Se dene como el cociente del tiempo que se tarda en completar el cmputo de la parte secuencial de una
tarea entre el tiempo que se tarda el completar el cmputo de la tarea usando un solo core
Ts
f = (A.0.3)
T (1)
Tp
T (p) = Ts + (A.0.4)
p
y rescribindola en trminos de factor de aceleracin, obtenemos la forma operativa del clculo de la fraccin
serial que adquiere la forma siguiente
1 1
s p
f = (A.0.5)
1
1
p
Esta mtrica permite ver las inconsistencias en el balance de cargas, ya que su valor debiera de tender a cero
en el caso ideal, por ello un incremento en el valor de f es un aviso de granularidad na con la correspondiente
sobrecarga en los procesos de comunicacin.
Apndice B
Sin prdida de generalidad se considerarn problemas con valor en la frontera (VBVP) de la forma
Lu = f
u = g (B.0.1)
donde
Lu = a u + cu
donde a es una matriz positiva denida y simtrica, con c > 0. Como caso particular del operador elptico de
2
orden 2 y para ejemplicar se toma un dominio R con fronteras poligonales, es decir, es un conjunto
abierto acotado y conexa tal que su frontera es la unin de un nmero nito de polgonos.
1
Si se multiplica la ecuacin a u + cu = f por v V = H0 () se obtiene
v ( a u + cu) = vf
y la funcional lineal
l (v) = hf, vi = vf dx
entonces se puede reescribir el problema en forma variacional, haciendo uso de la forma bilineal a (, ) y la
funcin lineal l ().
1
Este apndice est basado en el trabajo doctoral del Dr. Antonio Carrillo Ledesma [14].
75
APNDICE B. MTODO DE DESCOMPOSICIN DE DOMINIO DE SUBESTRUCTURACIN 76
Donde las funciones lineales denidas por tramos en E en este caso sern polinomios de orden uno en cada
(E)
variable de forma separada y cuya restriccin de i a E es i . Para simplicar los clculos, se supone que
1 0
la matriz a = a , entonces se tiene que la integral del lado izquierdo queda escrita como
0 1
(ai j + ci j ) dxdy = f j dxdy
donde
Kij = (ai j + ci j ) dxdy
E
X
aei ej + cei ej dxdy
=
e=1 e
E e e
i j ei ej
X
e e
a + + ci j dxdy
e x x y y
e=1
\ n
[
i j = i 6= j = i
i=1
y al conjunto
E
[
= i si i = i /
i=1
Primeramente sea D H01 () un espacio lineal de funciones de dimensin nita N, en el cual est denido
un producto interior denotado para cada u, v D por
u v = hu, vi
Considerando la existencia de los subconjuntos linealmente independientes
B D,
e BI D
fI , B D
f
B D
f , BJ D
g 1 , BM D2
g
que slo esta denida en cada subespacio (subdominio ). Entonces, la matriz virtual AII est dada por la
matriz diagonal de la forma
A1II
A2II
AII
..
.
AE
II
donde el resto de la matriz fuera de la diagonal son bloques es cero.
AI
i
wI , w
AI
i
w , wI
A [hw , w i]
S
para toda = 1, . . . , E , obserrvese que como B = BJ BM entonces
A = [hw , w i] = [hwJ
, wJ
i] + [hwM
, wM i]
T
tambin que AI = AI . Entonces las matrices virtuales AI , AI , y A quedaran denidas como
= A1I A2I . . . AE
AI I
1
AI
A2
I
AI = .
..
AE
I
" E #
X
i
A = A
i=1
APNDICE B. MTODO DE DESCOMPOSICIN DE DOMINIO DE SUBESTRUCTURACIN 78
hP i
E i
donde i=1 A es construida sumando las Ai segn el orden de los nodos globales versus los nodos
locales.
Tambin se considera al vector u = (u1 , . . . , uE ) el cual se escribe como u = (uI , u ) donde uI = (u1 , . . . , NI )
y u = (u1 , . . . , N ).
As, el sistema virtual
AII uI + AI u = bI
AI uI + A u = b (B.0.2)
o de manera compacta Au = b, ntese que las matrices Ai , AiI , AiI y AiII son matrices bandadas.
uI = (AII )1 (bI AI u )
en la cual los nodos interiores no guran en la ecuacin y todo queda en funcin de los nodos de la frontera
interior u .
A la matriz formada por A AI (AII )1 AI se le conoce como el complemento de Schur global y se le
denota como
S = A AI (AII )1 AI
En este caso, como se est planteando en trminos de subdominios i , con i = 1, . . . , E , entonces las matrices
Ai , AiI , AiI y i
AII quedan denidas de manera local, as que se procede a denir el complemento de Schur
local como
1
Si = Ai AiI AiII AiI
E E
" # " #
X X
Si u = bi (B.0.5)
i=1 i=1
hP i hP i
E E
donde i=1 Si y i=1 bi podran ser construidas sumando las Si y bi respectivamente segn el orden de
la matriz S con las contribuciones de cada Si correspondientes al subdominio i, lo que se hace es pasar a
cada subdominio el vector ui correspondiente a la i-sima iteracin del mtodo iterativo usado, para que
PE
en cada subdominio se evalu ei = Si ui
u localmente y con el resultado se forma el vector u
e = i=1 u
ei y
se continue con los dems pasos del mtodo. Esto es ideal para una implementacin en paralelo del mtodo
de Gradiente Conjugado o variante de GMRES.
Una vez resuelto el sistema B.0.5 en el que se ha encontrado la solucin para los nodos de la frontera interior
u , entonces se debe resolver localmente los uIi , correspondientes a los nodos interiores para cada subespacio
i , para poder realizar esto se emplea
1
uIi = AiII bIi AiI ui
para cada i = 1, . . . , E , quedando as resuelto el problema Au = b tanto en los nodos interiores uIi como en
los de la forntera interior U i correspondientes a cada subespacio i .
Observacion 1.
1
Las matrices locales Si y AiII no se construyen, ya que estas serian matrices densas
hy su construccin
i es computacionalmente costosa, y como slo interesa el producto Sy , o ms precisamente
PE
i=1 Si y , entonces si y es el vector correspondiente al subdominio i, se obtiene
1 i
ei = Ai AiI AiII
u AI yi
Para evaluar de forma eciente esta expresin, se realizan las siguientes operaciones equivalentes
x1 = Ai yi
i 1 i
i
x2 = AI AII AI yi
u
ei = x1 x2
la primera y tercera expresin no tienen ningn problema en su evaluacin, para la segunda expresin se
debe evaluar
x3 = AiI yi
1
x4 = AiII x3
1
pero al no contarse con AiII , entonces se multiplica la expresin por AiII obteniendo
1
AiII x4 = AiII AiII x3
simplicando
AiII x4 = x3
Esta ltima expresin puede ser resuelta usando Factorizacin LU, Gradiente Conjugado o alguna variante de
GMRES cada una de estas opciones tiene ventajas y desventajas computacionales que deben ser evaluadas
al momento de implementar el cdigo para un problema particular. Una vez obtenido x4 , se puede calcular
x2 = AiI x4
as
ei = x1 x2
u
1
bi = bi AiI AiII bIi
1
algo anlogo a lo anterior deber de hacerse, ya que de nuevo est involucrado AiII , por ello se debe
usar el siguiente procedimiento para evaluar de forma eciente esta expresin, realizando las operaciones
equivalentes
1
y1 = AiII bIi
simplicando
AiII y1 = bIi
donde esta ltima expresin puede ser resuelta usando Factorizacin LU, Gradiente Conjugado o alguna
variante de GMRES, luego se hace
y2 = AiI y1
Observacin 3. En la evaluacin de
1
uIi = AiII bIi AiI ui
1
est nuevamente involucrado el trmino AiII , por esto se usa el siguiente procedimiento para evaluar de
forma eciente esta expresin, realizando las operaciones equivalentes
x4 = bIi AiI ui
1
uIi = AiII x4
1
AiII uIi = AiII AiII x4
simplicando
AiII uIi = x4
donde esta ltima evalucin puede ser resuelta nuevamente usando Factorizacin LU, Cholesky, Gradiente
Conjugado o alguna variante de GMRES.
Como se indico en las ltimas observaciones, para resolver el sistema AiII x = b puede usar Factorizacin
LU, Factorizacin Cholesky, Gradiente Conjugado, alguna variante de GMRES o cualquier otro mtodo para
resolver sistemas lineales, pero deber de usarse aquel que proporcione la mayor velocidad en el clculo o
que consuma la menor cantidad de memoria (ambas condicionantes son mutuamente excluyentes), por ello
la decisin de que mtodo usar deber de tomarse al momento de tener que resolver un problema particular
en un equipo dado y bsicamente el condicionante es el tamao de la matriz AiII .
Para usar el mtodo de Factorizacin LU, se deber primeramente de factorizar la matriz bandada AiII en
una matriz LU , la cual es bandada pero incrementa el tamao de la banda a ms del doble, pero esta
operacin slo se deber de realizar una vez en cada subdominio, y para solucionar los diversos sistemas
lineales AiII x = b slo ser necesario evaluar los sistemas
Ly = b
Ux = y
APNDICE B. MTODO DE DESCOMPOSICIN DE DOMINIO DE SUBESTRUCTURACIN 81
Esto proporciona una manera eciente de evaluar el sistema lineal pero el consumo en memoria para un
problema particular puede ser excesivo.
Por ello, si el problema involucra una gran cantidad de nodos interiores y el equipo en el que se implantar la
ejecucin del programa tiene una cantidad de memoria limitada, es recomendable usar el mtodo de Gradiente
Conjugado o alguna variante de GMRES, este consume una cantidad de memoria adicional pequea, pero
puede consumir muchas iteraciones con el consecuente aumento de tiempo de cmputo para alcanzar la
precisin de la Factorizacin LU.
De esta forma, es posible adaptar el cdigo para tomar en cuenta desde la implementacin hasta al equipo
de cmputo al que se tenga acceso y poder sacar el mximo provecho al mtodo de subestructuracin en la
resolucin de problemas de gran envergadura.
ut = uxx
u(0, t) = u(1, t) = 0
u(x, 0) = sen(x)
http://mmc2.geosica.unam.mx/omb.
C.1. Scilab
1 // F a c u l t a d de C i e n c i a s
2 // U n i v e r s i d a d Nacional Autonoma de Mexico
3 // Mexico D. F .
4 //
5 // Autor : Omar Jonathan Mendoza Bernal
6 // Pgina : mmc2. g e o f i s i c a . unam . mx/omb
7 //
8 // Programa que forma p a r t e d e l t r a b a j o de T e s i s
9 // " R e s o l u c i n de Ecuaciones D i f e r e n c i a l e s P a r c i a l e s
10 // Mediante e l Mtodo de D i f e r e c i a s F i n i t a s y su P a r a l e l i z a c i n "
11 //
12 // Codigo l i b e r a d o b a j o l a l i c e n c i a GPL v e r . 2 . 0
13
14
15 // CrankN i c o l s o n
16 // Para una EDP de segundo orden
17 // u_t + a ( x ) u_xx + b ( x )u_x +c ( x ) u = f
18
19 // Dominio
82
APNDICE C. CRANK-NICOLSON 1D PARA LA ECUACIN DE CALOR SCILAB, C++ Y MATLAB83
20 // l 0 <x<l
21 // 0<t<T
22
23 // Condiciones de f r o n t e r a D i r i c h l e t
24 // u ( 0 , t ) = u ( l , t ) = c o n s t a n t e 0 < t < T cond de f r o n t e r a
25
26 // Condicin i n i c i a l
27 // u ( x , 0 ) = g ( x ) l 0 <= x <= l
28
29 // Datos de e n t r a d a
30 // i n t r e v a l o [ l0 , l ]
31 // e n t e r o m>=3
32 // e n t e r o N>=1
33
34 // S a l i d a
35 // a p r o x i m a c i o n e s w_ij a u ( x_i , t_j )
36
37
38 //
39 // Funciones de l o s c o e f i c i e n t e s
40 function y = a(x)
41 y = 1;
42 endfunction
43
44 function y = b ( x )
45 y = 0;
46 endfunction
47
48 function y = c ( x )
49 y = 0;
50 endfunction
51
52 function y = f ( x )
53 y = 0;
54 endfunction
55
56 //
57 // f u n c i n de l a c o n d i c i n i n i c i a l
58 function y = condicion_inicial (x)
59 y = sin ( x %pi ) ;
60 endfunction
61
62 // Condiciones de f r o n t e r a
63 // S l o D i r i c h l e t
64 cond_izq = 0 ;
65 cond_der = 0 ;
66
67
68 // Datos de e n t r a d a
69 l0 = 0;
70 l = 1 ; // i n t e r v a l o [ 0 , 1 ]
71 m = 1 1 ; // Numero de nodos
72 M = m 2 ; // Nodos i n t e r i o r e s
73
74 // D i v i s i n d e l e s p a c i o y d e l tiempo
75 h = ( l l 0 ) / (m 1);
76 k = 0 . 0 2 5 ; // Paso d e l tiempo
77 N = 2 1 ; // Numero de i t e r a c i o n e s
78
79 // Aw^( j +1) = Bw^ j + f ^ j
80 // c r e o e l v e c t o r w donde s e guradar l a s o l u c i n para cada tiempo
81 // A m a t r i z d e l l a d o i z q u i e r d o
82 // B m a t r i z d e l l a d o d e r e c h o
83 // B_prima para guardar e l r e s u l t a d o de Bw^ j
84 // f f que e s e l v e c t o r de l o s v a l o r e s de f en cada nodo
85 w = zeros (M, 1 ) ;
86 ff = zeros (M, 1 )
87 A = zeros (M,M) ;
88 B = zeros (M,M) ;
89 w_sol = zeros (m,m)
90
91 // Se c r e a e l e s p a c i o de l a s o l u c i n o m a l l a
92 espacio = zeros (m, 1 )
93 for i = 1 :m
94 xx = l 0 + ( i 1) h ;
95 e s p a c i o ( i ) = xx ;
APNDICE C. CRANK-NICOLSON 1D PARA LA ECUACIN DE CALOR SCILAB, C++ Y MATLAB84
96 end
97 disp ( e s p a c i o , " Espacio " )
98
99 // Condicin i n i c i a l
100 for i =1:M
101 w( i ) = c o n d i c i o n _ i n i c i a l ( e s p a c i o ( i + 1 ) ) ;
102 end
103
104 w_sol ( 1 ) = cond_izq ;
105 for kk = 1 :M
106 w_sol ( kk + 1 ) = w( kk ) ;
107 end
108 w_sol (m) = cond_der ;
109 plot ( e s p a c i o , w_sol ) ;
110
111 disp (w, " C o n d i c i o n e s i n i c i a l e s " )
112
113
114 // primer r e n g l o n de cada m a t r i z
115 A( 1 , 1 ) = 1/ k a ( l 0 + h ) / ( h h ) ;
116 A( 1 , 2 ) = a ( l 0 + h ) / ( 2 h h ) + b ( l 0 + h ) / ( 4 h ) ;
117
118 B( 1 , 1 ) = 1/ k + a ( l 0 + h ) / ( h h ) c ( l 0 + h ) ;
119 B( 1 , 2 ) = a ( l 0 + h ) / ( 2 h h ) b ( l 0 + h ) / ( 4 h ) ;
120
121 f f ( 1 ) = f ( l 0 + h ) cond_izq ;
122
123 // s e completa l a s m a t r i c e s d e s d e e l r e n g l o n 2 h a s t a e l m2
124 for i = 2 :M1
125 A( i , i 1) = a ( l 0 + i h ) / ( 2 h h ) b ( l 0 + i h ) / ( 4 h ) ;
126 A( i , i ) = 1/ k a ( l 0 + i h ) / ( h h ) ;
127 A( i , i +1) = a ( l 0 + i h ) / ( 2 h h ) + b ( l 0 + i h ) / ( 4 h ) ;
128
129 B( i , i 1) = a ( l 0 + i h ) / ( 2 h h ) + b ( l 0 + i h ) / ( 4 h ) ;
130 B( i , i ) = 1/ k + a ( l 0 + i h ) / ( h h ) c ( l 0 + i h ) ;
131 B( i , i +1) = a ( l 0 + i h ) / ( 2 h h ) b ( l 0 + i h ) / ( 4 h ) ;
132 end
133
134 // l t i m o r e n g l o n de cada m a t r i z
135 A(M,M 1) = a ( l h ) / ( 2 h h ) b ( l h ) / ( 4 h ) ;
136 A(M,M) = 1/ k a ( l h ) / ( h h ) ;
137
138 B(M,M 1) = a ( l h ) / ( 2 h h ) + b ( l h ) / ( 4 h ) ;
139 B(M,M) = 1/ k + a ( l h ) / ( h h ) c ( l h ) ;
140
141 f f (M) = f ( l h ) cond_der ;
142
143 // Resolvemos e l s i s t e m a i t e r a t i v a m e n t e
144 for j =1:N
145 t = j k ;
146 B_prima = B w + f f ;
147 w = inv
(A) B_prima ;
148 disp
( t , " tiempo " )
149 disp
(w, " S o l " )
150
151 w_sol ( 1 ) = cond_izq ;
152 for kk = 1 :M
153 w_sol ( kk + 1 ) = w( kk ) ;
154 end
155 w_sol (m) = cond_izq ;
156
157 plot ( e s p a c i o , w_sol ) ;
158 end
C.2. C++
El mismo problema, ahora utilizando el lenguaje C++ con la librera gmm++. C++ es uno de los lenguajes
ms utilizados cuando se necesita eciencia en el uso de los recursos de la(s) computadora(s). Gmm++ es una
biblioteca libre, la cual nos permite de una manera sencilla, crear y manipular vectores y matrices, as como,
ofrece los resolvedores de sistemas Ax = b ms comunes y ecientes. Adems de por su facilidad de uso, se opto
por utilizarla en este trabajo, y, a continuacin se muestra parte de su uso para resolver la ecuacin de calor.
APNDICE C. CRANK-NICOLSON 1D PARA LA ECUACIN DE CALOR SCILAB, C++ Y MATLAB85
La librera gmm++ puede ser descargada desde (http://download.gna.org/getfem/html/homepage/gmm/ ).
1 // F a c u l t a d de C i e n c i a s
2 // U n i v e r s i d a d Nacional Autonoma de Mexico
3 // Mexico D. F .
4 //
5 // Autor : Omar Jonathan Mendoza Bernal
6 // Pgina : mmc2. g e o f i s i c a . unam . mx/omb
7 //
8 // Programa que forma p a r t e d e l t r a b a j o de T e s i s
9 // " R e s o l u c i n de Ecuaciones D i f e r e n c i a l e s P a r c i a l e s
10 // Mediante e l Mtodo de D i f e r e c i a s F i n i t a s y su P a r a l e l i z a c i n "
11 //
12 // Codigo l i b e r a d o b a j o l a l i c e n c i a GPL v e r . 2 . 0
13
14 // CrankN i c o l s o n
15 // Para una EDP de segundo orden
16 // u_t + a ( x ) u_xx + b ( x )u_x +c ( x ) u = f
17
18 // Dominio
19 // l 0 <x<l
20 // 0<t<T
21
22 // Condiciones de f r o n t e r a D i r i c h l e t
23 // u ( 0 , t ) = u ( l , t ) = c o n s t a n t e 0 < t < T cond de f r o n t e r a
24
25 // Condicin i n i c i a l
26 // u ( x , 0 ) = g ( x ) l 0 <= x <= l
27
28 // Datos de e n t r a d a
29 // i n t r e v a l o [ l0 , l ]
30 // e n t e r o m>=3
31 // e n t e r o N>=1
32
33 // S a l i d a
34 // a p r o x i m a c i o n e s w_ij a u ( x_i , t_j )
35 #include <gmm/gmm. h>
36
37 #include <i o s t r e a m >
38 #include <cmath>
39
40 #define PI 3 . 1 4 1 5 9
41 #define SIMETRICA 1
42
43 //
44 // Funciones de l o s c o e f i c i e n t e s
45 double double
a( x) {
46 return 1;
47 }
48
49 double b ( double x) {
50 return 0 ;
51 }
52
53 double c ( double x) {
54 return 0 ;
55 }
56
57 double f ( double x) {
58 return 0 ;
59 }
60
61 // Condiciones de f r o n t e r a
62 double cond_izq () {
63 return 0 ;
64 }
65
66 double cond_der () {
67 return 0 ;
68 }
69
70 // Condicion i n i c i a l
71 double c o n d i c i o n _ i n i c i a l ( double x) {
72
73 double v a l = s i n ( x PI ) ;
74
75 return v a l ;
APNDICE C. CRANK-NICOLSON 1D PARA LA ECUACIN DE CALOR SCILAB, C++ Y MATLAB86
76 }
77
78 int main ( int argc , const char argv [ ] ) {
79
80 // I n t e r v a l o
81 const double l 0 = 0 ;
82 const double l = 1 ;
83
84 const int m = 1 1 ; // Numero de nodos
85 const int M = m 2 ; // Numero de nodos i n t e r i o r e s
86
87 // D i v i s i o n d e l e s p a c i o y tiempo
88 double h = ( l l 0 ) / (m 1 ) ;
89 double k = 0 . 0 1 ; // paso d e l tiempo
90 int N = 1 0 ; // Numero de i t e r a c i o n e s
91
92 // Aw^( j +1) = Bw^ j + f ^ j
93 // c r e o e l v e c t o r w donde s e guradar l a s o l u c i n para cada tiempo
94 // A m a t r i z d e l l a d o i z q u i e r d o
95 // B m a t r i z d e l l a d o d e r e c h o
96 // f f que e s e l v e c t o r de l o s v a l o r e s de f en cada nodo
97 gmm : : row_matrix< gmm : : r s v e c t o r < double
> > A(M, M) ;
98 gmm : : row_matrix< gmm : : r s v e c t o r < double
> > B(M, M) ;
99 std : : vector< double
> s o l (m) ; // Para l a s o l u c i n t o t a l d e l s i s t e m a ( con f r o n t e r a s )
100 std : : vector< double
> B_p(M) ;
101 std : : vector< double
> w(M) ;
102 std : : vector< double
> w2(M) ;
103 std : : vector< double
> f f (M) ;
104
105 // Contiene l a s coordenadas de l o s nodos i n t e r n o s
106 std : : vector< double
> e s p a c i o (M) ;
107
108 s t d : : c o u t << "h " << h << s t d : : e n d l ;
109 for ( int i = 0 ; i < M; i ++) {
110 double xx = l 0 + ( i +1) h ;
111 e s p a c i o [ i ] = xx ;
112 }
113
114 s t d : : c o u t << " E s p a c i o \n" << e s p a c i o << s t d : : e n d l ;
115
116 // Condiciones i n i c i a l e s
117 for int
( i = 0 ; i < M; i ++) {
118 w2 [ i ] = c o n d i c i o n _ i n i c i a l ( e s p a c i o [ i ] ) ;
119 }
120
121 s o l [ 0 ] = cond_izq ( ) ;
122 for ( int k = 0 ; k < M; k++)
123 s o l [ k+1] = w2 [ k ] ;
124 s o l [m 1] = cond_der ( ) ;
125
126 s t d : : c o u t << " C o n d i c i o n e s i n i c i a l e s \n" << s o l << s t d : : e n d l ;
127
128 // primer r e n g l o n de cada m a t r i z
129 A( 0 , 0 ) = 1/ k a ( l 0 + h ) / ( h h ) ;
130 A( 0 , 1 ) = a ( l 0 + h ) / ( 2 h h ) + b ( l 0 + h ) / ( 4 h ) ;
131
132 B( 0 , 0 ) = 1/ k + a ( l 0 + h ) / ( h h ) c ( l 0 + h ) ;
133 B( 0 , 1 ) = a ( l 0 + h ) / ( 2 h h ) b ( l 0 + h ) / ( 4 h ) ;
134
135 f f [ 0 ] = f ( l 0 + h ) cond_izq ( ) ;
136
137 // s e completa l a s m a t r i c e s d e s d e e l r e n g l o n 2 h a s t a e l m2
138 for int
( i = 1 ; i < M 1; i ++) {
139 A( i , i 1) = a ( l 0 + i h ) / ( 2 h h ) b ( l 0 + i h ) / ( 4 h ) ;
140 A( i , i ) = 1/ k a ( l 0 + i h ) / ( h h ) ;
141 A( i , i +1) = a ( l 0 + i h ) / ( 2 h h ) + b ( l 0 + i h ) / ( 4 h ) ;
142
143 B( i , i 1) = a ( l 0 + i h ) / ( 2 h h ) + b ( l 0 + i h ) / ( 4 h ) ;
144 B( i , i ) = 1/ k + a ( l 0 + i h ) / ( h h ) c ( l 0 + i h ) ;
145 B( i , i +1) = a ( l 0 + i h ) / ( 2 h h ) b ( l 0 + i h ) / ( 4 h ) ;
146 }
147
148 // l t i m o r e n g l o n de cada m a t r i z
149 A(M 1,M 2) = a ( l h ) / ( 2 h h ) b ( l h ) / ( 4 h ) ;
150 A(M 1,M 1) = 1/ k a ( l h ) / ( h h ) ;
151
APNDICE C. CRANK-NICOLSON 1D PARA LA ECUACIN DE CALOR SCILAB, C++ Y MATLAB87
152 B(M 1,M 2) = a ( l h ) / ( 2 h h ) + b ( l h ) / ( 4 h ) ;
153 B(M 1,M 1) = 1/ k + a ( l h ) / ( h h ) c ( l h ) ;
154
155 f f [M 1] = f ( l h ) cond_der ( ) ;
156
157 // Empieza l a i t e r a c i n de l a s o l u c i n
158 double t ;
159 for ( int i = 1 ; i < N; i ++) {
160 t = i k;
161
162 gmm : : mult (B, w2 , B_p ) ;
163 gmm : : add ( f f , B_p ) ;
164
165 if(SIMETRICA) {
166 gmm : : i d e n t i t y _ m a t r i x PS ; // O p t i o n a l s c a l a r p r o d u c t f o r cg
167 gmm : : i d e n t i t y _ m a t r i x PR; // O p t i o n a l p r e c o n d i t i o n e r
168 gmm : : i t e r a t i o n i t e r ( 1 0E 6); // I t e r a t i o n o b j e c t w i t h t h e max r e s i d u
169
170 gmm : : cg (A, w, B_p, PS , PR, i t e r ) ; // Conjugate g r a d i e n t
171
172 w2 = w;
173
174 s o l [ 0 ] = cond_izq ( ) ;
175 for ( int k = 0 ; k < M; k++)
176 s o l [ k+1] = w[ k ] ;
177 s o l [m 1] = cond_der ( ) ;
178
179 s t d : : c o u t << "Tiempo " << t << s t d : : e n d l ;
180 s t d : : c o u t << " S o l CGM\n"<< s o l << s t d : : e n d l ;
181
182 } else {
183 size_t r e s t a r t = 50; // r e s t a r t parameter f o r GMRES
184 gmm : : i t e r a t i o n i t e r ( 1 0E 6); // I t e r a t i o n o b j e c t w i t h t h e max r e s i d u
185 gmm : : i l u t _ p r e c o n d < gmm : : row_matrix< gmm : : r s v e c t o r < double > > > Pre (A, 1 0 , 1 e 4);
186 gmm : : mult (B, w2 , B_p ) ;
187 gmm : : add ( f f , B_p ) ;
188 gmm : : gmres (A, w, B_p, Pre , r e s t a r t , i t e r ) ; // e x e c u t e t h e GMRES a l g o r i t h m
189 w2 = w ;
190
191 s o l [ 0 ] = cond_izq ( ) ;
192 for ( int k = 0 ; k < M; k++)
193 s o l [ k+1] = w[ k ] ;
194 s o l [m 1] = cond_der ( ) ;
195
196 s t d : : c o u t << "Tiempo " << t << s t d : : e n d l ;
197 s t d : : c o u t << " S o l GMRES p r e c o d ILUT\n"<< s o l << s t d : : e n d l ;
198
199 }
200 }
201
202 return 0;
203 }
C.3. MatLab
1 % // F a c u l t a d de C i e n c i a s
2 % // U n i v e r s i d a d Nacional Autonoma de Mexico
3 % // Mexico D. F .
4 % //
5 % // Autor : Omar Jonathan Mendoza Bernal
6 % // Pgina : mmc2. g e o f i s i c a . unam . mx/omb
7 % //
APNDICE C. CRANK-NICOLSON 1D PARA LA ECUACIN DE CALOR SCILAB, C++ Y MATLAB88
8 % // Programa que forma p a r t e d e l t r a b a j o de T e s i s
9 % // " R e s o l u c i n de Ecuaciones D i f e r e n c i a l e s P a r c i a l e s
10 % // Mediante e l Mtodo de D i f e r e c i a s F i n i t a s y su P a r a l e l i z a c i n "
11 % //
12 % // Codigo l i b e r a d o b a j o l a l i c e n c i a GPL v e r . 2 . 0
13
14 % // CrankN i c o l s o n
15 % // Para una EDP de segundo orden
16 % // u_t + a ( x ) u_xx + b ( x )u_x +c ( x ) u = f
17 %
18 % // Dominio
19 % // l 0 <x<l
20 % // 0<t<T
21 %
22 % // Condiciones de f r o n t e r a D i r i c h l e t
23 % // u ( 0 , t ) = u ( l , t ) = c o n s t a n t e 0 < t < T cond de f r o n t e r a
24 %
25 % // Condicin i n i c i a l
26 % // u ( x , 0 ) = g ( x ) l 0 <= x <= l
27 %
28 % // Datos de e n t r a d a
29 % // i n t r e v a l o [ l0 , l ]
30 % // e n t e r o m>=3
31 % // e n t e r o N>=1
32 %
33 % // Salida
34 % // a p r o x i m a c i o n e s w_ij a u ( x_i , t_j )
35 %
36 %
37
38 function CN(m)
39 % // Condiciones de f r o n t e r a
40 % // S l o D i r i c h l e t
41 cond_izq = 0 ;
42 cond_der = 0 ;
43
44
45 % // Datos de e n t r a d a
46 l0 = 0;
47 l = 1 ; %// i n t e r v a l o [ 0 , 1 ]
48 %m = 1 1 ; %// Numero de nodos
49 M = m 2 ; %// Nodos i n t e r i o r e s
50
51 % // D i v i s i n d e l e s p a c i o y d e l tiempo
52 h = ( l l 0 ) / (m 1);
53 k = 0 . 0 2 5 ; %// Paso d e l tiempo
54 N = 2 1 ; %// Numero de i t e r a c i o n e s
55
56 % // Aw^( j +1) = Bw^ j + f ^ j
57 % // c r e o e l v e c t o r w donde s e guradar l a s o l u c i n para cada tiempo
58 % // A m a t r i z d e l l a d o i z q u i e r d o
59 % // B m a t r i z d e l l a d o d e r e c h o
60 % // f f que e s e l v e c t o r de l o s v a l o r e s de f en cada nodo
61 w = zeros(M, 1 ) ;
62 ff = zeros(M, 1 ) ;
63 A = zeros(M,M) ;
64 B = zeros(M,M) ;
65 w_sol = zeros (m,m) ;
66
67 % // Se c r e a e l e s p a c i o de l a s o l u c i n o m a l l a
68 espacio = zeros (M, 1 ) ;
69 for i = 1 :m
70 xx = l 0 + ( i 1) h ;
71 e s p a c i o ( i ) = xx ;
72 end
73 %d i s p ( e s p a c i o , ' Espacio ' )
74
75 % // Condicin i n i c i a l
76 for i =1:M
77 w( i ) = c o n d i c i o n _ i n i c i a l ( espacio ( i +1));
78 end
79
80 w_sol ( 1 ) = cond_izq ;
81 for kk = 1 :M
82 w_sol ( kk + 1 ) = w( kk ) ;
83 end
APNDICE C. CRANK-NICOLSON 1D PARA LA ECUACIN DE CALOR SCILAB, C++ Y MATLAB89
84 w_sol (m) = cond_der ;
85
86 plot ( e s p a c i o , w_sol ) ;
87 hold on
88
89 %d i s p (w, ' Condiciones i n i c i a l e s ' )
90
91
92 % // primer r e n g l o n de cada m a t r i z
93 A( 1 , 1 ) = 1/ k a ( l 0 + h ) / ( h h ) ;
94 A( 1 , 2 ) = a ( l 0 + h ) / ( 2 h h ) + b ( l 0 + h ) / ( 4 h ) ;
95
96 B( 1 , 1 ) = 1/ k + a ( l 0 + h ) / ( h h ) c ( l 0 + h ) ;
97 B( 1 , 2 ) = a ( l 0 + h ) / ( 2 h h ) b ( l 0 + h ) / ( 4 h ) ;
98
99 f f ( 1 ) = f ( l 0 + h ) cond_izq ;
100
101 % // s e completa l a s m a t r i c e s d e s d e e l r e n g l o n 2 h a s t a e l m2
102 for i = 2 :M1
103 A( i , i 1) = a ( l 0 + i h ) / ( 2 h h ) b ( l 0 + i h ) / ( 4 h ) ;
104 A( i , i ) = 1/ k a ( l 0 + i h ) / ( h h ) ;
105 A( i , i +1) = a ( l 0 + i h ) / ( 2 h h ) + b ( l 0 + i h ) / ( 4 h ) ;
106
107 B( i , i 1) = a ( l 0 + i h ) / ( 2 h h ) + b ( l 0 + i h ) / ( 4 h ) ;
108 B( i , i ) = 1/ k + a ( l 0 + i h ) / ( h h ) c ( l 0 + i h ) ;
109 B( i , i +1) = a ( l 0 + i h ) / ( 2 h h ) b ( l 0 + i h ) / ( 4 h ) ;
110 end
111
112 % // l t i m o r e n g l o n de cada m a t r i z
113 A(M,M 1) = a ( l h ) / ( 2 h h ) b ( l h ) / ( 4 h ) ;
114 A(M,M) = 1/ k a ( l h ) / ( h h ) ;
115
116 B(M,M 1) = a ( l h ) / ( 2 h h ) + b ( l h ) / ( 4 h ) ;
117 B(M,M) = 1/ k + a ( l h ) / ( h h ) c ( l h ) ;
118
119 f f (M) = f ( l h ) cond_der ;
120
121 % // muestro l a s m a t r i c e s
122 % // p r i n t f (" Matriz A\n " ) ;
123 % // d i s p (A) ;
124 % // p r i n t f (" Matriz B\n " ) ;
125 % // d i s p (B ) ;
126
127
128 % // B_prima para guardar e l r e s u l t a d o de Bw^ j
129 % // Resolvemos e l s i s t e m a i t e r a t i v a m e n t e
130 for j =1:N
131 t = j k ;
132 B_prima = B w + f f ;
133 w = inv (A) B_prima ;
134 %d i s p ( t , ' tiempo ' )
135 %d i s p (w, ' Sol ' )
136
137 w_sol ( 1 ) = cond_izq ;
138 for kk = 1 :M
139 w_sol ( kk + 1 ) = w( kk ) ;
140 end
141 w_sol (m) = cond_izq ;
142 %f i g u r e ( j ) ;
143 plot ( e s p a c i o , w_sol ) ;
144 hold on
145
146 end
147 return
148
149
150 % //
151 % // Funciones de l o s c o e f i c i e n t e s
152
153 function y = a ( x )
154 y = 1;
155 return
156
157 function y = b ( x )
158 y = 0;
159 return
APNDICE C. CRANK-NICOLSON 1D PARA LA ECUACIN DE CALOR SCILAB, C++ Y MATLAB90
160
161 function y = c ( x )
162 y = 0;
163 return
164
165 function y = f ( x )
166 y = 0;
167 return
168
169 function y = c o n d i c i o n _ i n i c i a l ( x )
170 y = sin ( x pi ) ;
171 return
Apndice D
D.1. Python
D.2. Ejemplo
Tomemos la ecuacin
ut + 2ux = 0
2
u (x, 0) = e((x0.2) )
# coding : u t f 8
"""
@a uth or : omar jonathan mendoza bernal
Ejemplo
u_t + a u_x = 0
Si u(x ,0) = f (x) es la condicin inicial
la solucin analitica es
u ( x , t ) = f ( xa t
"""
91
APNDICE D. ECUACIN DE ADVECCIN CON UPWIND EN PYTHON 92
# Ecuacin
# u_t + 2 u_x = 0
coef_a = 2
def condicion_inicial (x ):
"""
Condicin inicial de la ecuacin
"""
y = exp ( ( x 0.2)(x 0.02))
return y
def sol_analitica (x , t ):
"""
Solucin analtica de la ecuacin
"""
y = e x p ( ( x 2 t ) ( x 2 t ) )
return y
############
# Dominio
############
a = 2.0
b = 8.0
# Intervalo de tiempo
dt = 0 . 0 1 2
for i in x r a n g e ( nNodos ) :
xx_ = a + i h
espacio [ i ] = xx_
w[ i ] = c o n d i c i o n _ i n i c i a l ( xx_ )
print w
mu = c o e f _ a dt / h
if c o e f _ a >= 0 :
B[ 0 , 0 ] = 1 mu
for i in xrange (1 , nNodos ) :
B[ i , i 1] = mu
B[ i , i ] = 1 mu
else :
B[ 0 , 0 ] = 1 + mu ;
B[ 0 , 1 ] = mu ;
B [ nNodos 1 , nNodos 1] = 1 + mu
iteraciones = 201
Ecuacin de Helmholtz1
El estudio de los fenmenos de onda es importante en muchar reas de las ciencias y de las ingenierias. La
ecuacin de Helmlholtz nombrada as por Hermann von Helmholtz, surge del estudio de la propagacin de
ondas y la solucin de dicha ecuacin es requerida para resolver problemas que se presentan en aeroacstica,
dispersin de ondas, problemas en geofsica etc.
u + k 2 u = 0
con k= c y donde es la frecuencia de la propagacin de la onda y c es la velocidad del sonido.
Si bien ha habido un tremendo avance en las res de mtodos computacionales para resolver ecuaciones
diferenciales parciales, resolver la ecuacin lineal de Helmholtz con nmero de onda alto (k ) de manera
numrica es uno de las tareas ms complicadas para el cmputo cientco. A altos valores de k la ecuacin se
vuelve altamente oscilatoria. Por ejemplo, supngase que se tiene una malla con distancia entre nodos igual
a h, para aproximar el comportamiento oscilatorio de la ecuacin debe de pasar que kh sea pequeo, dado
que se requiere la solucin para k grandes, implica que h debe ser muy pequea. Simulaciones numricas y
estudios tericos han conrmado que aunque kh est ja y sea una buena aproximacin para cierto problema,
la aproximacin numrica se dispersa rapidamente conforme se va incrementando el valor de k . A esto se
le conoce como el efecto polucin (pollution eect). El pollution eect solo se ha eliminado para problemas
unidimensionales de la ecuacin, no as para problemas en dos y tres dimensiones. Ms an, para asegurar
una buena aproximacin numrica, es necesario forzar la condicin k 2 h < 1. Esto implica que el sistema de
3
ecuaciones es proporcional a k , vese[21].
Sea la ecuacin
uxx k 2 u = 0
u(0) = 1
u0 (1) = iku(1)
95
APNDICE E. ECUACIN DE HELMHOLTZ 96
agrupando trminos
1 2 2 1
2 ui1 + k ui + 2 ui+1 = 0
h h2 h
El manejo de la frontera Neumann
u0 (1) = iku(1)
un+1 un1
+ u(b) =
2h
despejando el trmino un+1
2h 2h
un+1 = un1 un +
sustituyendo el termino un+1 en
un1 2un + un+1
= fn
h2
se tiene que
1 1 fn
un1 + 2 un = (E.1.1)
h2 h h 2 h
que es la forma en que se trabajan las fronteras Neumann. La frontera del problema est dada por
u0 (1) = iku(1)
que es igual a
u0 (1) iku(1) = 0
y de esta manera queda representada la condicin de frontera Neumann en el lado derecho del dominio .
El siguiente programa desarrollado en Scilab implementa la solucin a la ecuacin de Helmholtz que se acaba
de discutir.
1 // F a c u l t a d de C i e n c i a s
2 // U n i v e r s i d a d Nacional Autonoma de Mexico
3 // Mexico D. F .
4 //
5 // Autores : Antonio C a r r i l l o y Omar Jonathan Mendoza Bernal
6 // Pgina : mmc2. g e o f i s i c a . unam . mx/omb
7 //
8 // Programa que forma p a r t e d e l t r a b a j o de T e s i s
9 // " R e s o l u c i n de Ecuaciones D i f e r e n c i a l e s P a r c i a l e s
10 // Mediante e l Mtodo de D i f e r e c i a s F i n i t a s y su P a r a l e l i z a c i n "
11 //
12 // Codigo l i b e r a d o b a j o l a l i c e n c i a GPL v e r . 2 . 0
13
14 // Ejemplo de una e c u a c i n d i f e r e n c i a l p a r c i a l en 1D
15 // Ecuacin de H e l m h o l t z
16 // Uxxk^2U=0
17 // 0<=U<=1
18 // U(0)=1 y Ux(1)= ikU ( 1 )
19
20
21 function y=LadoDerecho ( x )
22 y = 0.0;
23 endfunction
24
APNDICE E. ECUACIN DE HELMHOLTZ 97
25 function y=S o l u c i o n A n a l i t i c a ( x , k)
26 y = exp ( %i k x ) ;
27 endfunction
28
29
30 K = 100;
31 KK = KK;
32
33 a = 0; // I n i c i o dominio
34 c = 1; // Fin dominio
35 M = 601; // Particin
36 N = M 1; // Nodos i n t e r i o r e s
37 h = ( ca ) / (M 1); // Incremento en l a m a l l a
38 Y0 = 1 ; // Condicin D i r c h l e t i n i c i a l en e l i n i c i o d e l dominio
39 Y1 = %iK; // Condicin Neumann i n i c i a l en e l f i n d e l dominio
40 A = zeros(N,N ) ; // Matriz A
41 b = zeros(N ) ; // Vector b
42
43
44
45 R = 1/(h ^ 2 ) ;
46 P = 2 / ( h^2) KK;
47 Q = 1/(h ^ 2 ) ;
48
49
50 // Primer r e n g l o n de l a m a t r i z A y v e c t o r b
51 A( 1 , 1 ) = P ;
52 A( 1 , 2 ) = Q;
53 b ( 1 ) = LadoDerecho ( a)Y0 R; // Frontera d i r i c h l e t
54
55 // Renglones i n t e r m e d i o s de l a m a t r i z A y v e c t o r b
56 for i =2:N1
57 A( i , i 1) = R;
58 A( i , i ) = P ;
59 A( i , i +1) = Q;
60 b ( i ) = LadoDerecho ( a+h ( i 1 ) ) ;
61 end
62
63 // R e l g l o n f i n a l de l a m a t r i z A y v e c t o r b
64 A(N, N 1) = 1 / ( h ^ 2 ) ;
65 A(N,N) = 1/(h^2) + Y1/h ;
66 b (N) = LadoDerecho ( c ) / 2 ;
67
68
69
70 // R e s u l e v e e l s i s t e m a l i n e a l Ax=b
71 x= inv(A) b ;
72
73 ESC = 5 ;
74 xxx= zeros (MESC , 1 ) ;
75 z z z= zeros (MESC , 1 ) ;
76 for i =1:MESC
77 xxx ( i )=a+h/ESC ( i 1);
78 z z z ( i )= S o l u c i o n A n a l i t i c a ( xxx ( i ) ,K) ;
79 end
80
81 // Prepara l a g r a f i c a c i o n
82 xx= zeros (M, 1 ) ;
83 z z= zeros (M, 1 ) ;
84 for i =1:M
85 xx ( i )=a+h ( i 1);
86 z z ( i )= S o l u c i o n A n a l i t i c a ( xx ( i ) ,K) ;
87 end
88
89 yy= zeros (M, 1 ) ;
90 yy (1)=Y0 ; // Condicion i n i c i a l
91 for i =1:N
92 yy ( i +1)=x ( i ) ;
93 end
94
95 // G r a f i c a l a s o l u c i o n de l a Ecuacion D i f e r e n c i a l P a r c i a l en 1D
96 plot2d ( xx , yy )
97 // p l o t 2 d ( xxx , z z z )
98
99 // p r i n t f (" yy ")
100 // d i s p ( yy )
APNDICE E. ECUACIN DE HELMHOLTZ 98
Grcos en MatLab
Las grcas presentes en este trabajo, fueron realizadas en el entorno MatLab, para generarlas, los ms
sencillo es moverse al directorio donde se encuentran los datos y despes en la consola interactiva introducir
los siguientes comandos:
mesh ( x , y , z )
Este ejemplo es para una grca en 3D, donde
En 'z' el resultado de evaluar una funcin f (x, y) o en este caso la solucin del mtodo de diferencias
nitas en cada punto (x, y) de la malla
99
Bibliografa
[1] Carrillo Ledesma, Antonio, Aplicaciones del Cmputo en Paralelo a la modelacin de Sistemas Terres-
tres. Tesis de Maestra, Instituto de Geofsica, UNAM, 2006.
[2] De la Cruz Salas, Luis M. Mtodo de volumen nito para ujo en una fase.
[3] Lang, Serge, lgebra Lineal, Ed. Addison-Wesley Iberoamericana. Segunda Edicin, 1986.
[4] Braess, Dietrich, Finite Elements. Cambridge University Press, Tercera Edicin, 2007.
[5] Haberman, Richard, Ecuaciones en Derivadas Parciales con Series de Fourier y Problemas de Contorno,
Ed. Prentice-Hall, Tercera Edicin, 2003.
[6] Minzoni, Antonmaria, Apuntes de Ecuaciones en Derivadas Parciales, Serie FENOMEC-IIMAS, 2003.
[7] Burden, Richard, Anlisis Numrico. Ed. Thomson Learning, Sptima Edicin, 2002.
[8] Grossmann, Christian, et. al., Numerical Treatment of Partial Dierential Equations, Ed. Springer,
Univesitext.
[9] Evance, Lawrence, Partial Dierential Equations, American Mathematical Society, Graduate Studies
in Mathematics Volume 19.
[10] C. T. Kelley, Iterative Methods for Linear and Nonlinear Equations, SIAM, 1995.
[11] Herrera, Ismael, Mathematical Modeling in Science and Engineering: An Axiomatic Approach", Ed.
Wiley, 2012.
[12] Leveque, Randall, Finite Dierence Methods for Ordinary and Partial Dierential Equations, SIAM,
2007.
[13] Gurtin, Morton E. An introduction to Continuum Mechanics, Ed. Academic Press, 1981.
[14] Carrillo Ledesma, Antonio, Mtodos de Descomposicin de Dominio en el Espacio de Vectores Derivados
y su Implementacin Computacional en Paralelo. Tesis Doctoral, Instituto de Geofsica, UNAM, 2013.
[15] Braun, M. Ecuaciones diferenciales y sus aplicaciones, Grupo Editorial Iberoamrica, 1990.
[16] Yoysef Saad, Iterative Methods for Sparce Linear Systems, Second Edition, January 2000.
[17] A.R. Mitchell and D.F. Griths, The nite dierence method in Partial Dierential Equation, John
Wiley & Sons, 1980.
[18] Richard Shewchuk, An introduction to the Conjugate Gradient Method Without the Agonizing Pain,
School of Computer Science, Carnegie Mellon University, Agosto 1994.
[19] Daz Viera, Martn Alberto, Desarrollo del Mtodo de Colocacin Tretz-Herrera: Aplicaciones a Pro-
blemas a Transporte en las Geociencias. Tesis Doctoral, Instituto de Geofsica, UNAM, 2001.
[20] Lara Aparicio, Miguel, et. al., Clculo, Compaia Editorial Continental, Segunda Edicin, 1977.
100
BIBLIOGRAFA 101
[21] Yau Shu wong, et. al., Exact Finite Diference Schemes For Solving Helmholtz equation At Any Wave-
number, International Journal Of Numerical Analsis and Modeling, Series B, pginas 91-108, 2011.
[22] Booch, Grady, Anlisis y Diseo Orientado a Objetos, Pearson Educacin, 1996.
[23] Chapman, Barbara, et. al., Using OpenMP, Scientic and Engineering Computation Series, MIT Press,
2007.
[24] Groop, Using MPI. Portable Parallel Programming with the Message Passing Interface, MIT Press,
1999.
[25] Chen, Zhangxin et al, Computational Methods for Multiphase Flows in Porous Media, SIAM.