Вы находитесь на странице: 1из 101

UNIVERSIDAD NACIONAL AUTNOMA

DE MXICO

FACULTAD DE CIENCIAS

Resolucin de Ecuaciones Diferenciales Parciales


Mediante el Mtodo de Diferencias Finitas y su
Paralelizacin

T E S I S

QUE PARA OBTENER EL TTULO DE:


Matemtico
P R E S E N T A:

Omar Jonathan Mendoza Bernal

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:

Al director, Dr. Antonio Carrillo por su paciencia y apoyo.

A los sinodales, por sus comentarios.

A mis padres Raquel Bernal Salazar y Jorge Gregorio Mendoza Jasso, sin ellos nada hubiera sido
posible.

A mis hermanos Alberto y Too.


ndice general

1. Introduccin 5
1.1. Ecuaciones Diferenciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

1.2. Ecuaciones Diferenciales Parciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

1.3. Problemas Bien Planteados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7

1.4. Ecuacin de Laplace, Calor y Onda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.5. Mtodos de Discretizacin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.6. Mtodos de Solucin de Sistemas de Ecuaciones . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.7. Necesidad del Cmputo Paralelo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.8. Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

2. Mtodo de Diferencias Finitas 19


2.1. Diferencias Finitas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

2.2. Aproximacin a la Primera Derivada . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

2.3. Aproximacin a las Derivadas en 1D, 2D y 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

2.4. Estencil para Problemas en 3D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.5. Condiciones de frontera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.6. Procedimiento General del Mtodo de Diferencias Finitas . . . . . . . . . . . . . . . . . . . . 26

2.6.1. Problema en una dimensin con Condiciones de Frontera Dirichlet . . . . . . . . . . . 27

2.6.2. Problema en una dimensin con Condiciones de Frontera Neumann . . . . . . . . . . . 28

2.6.3. Problema en una dimensin con Condiciones de Frontera Robin . . . . . . . . . . . . . 29

2.7. a(x) no constante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.8. Discretizacin del tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.8.1. Ecuaciones Con Primera Derivada Temporal (Esquema Theta) . . . . . . . . . . . . . 31

2.8.2. Ecuaciones Con Segunda Derivada Temporal . . . . . . . . . . . . . . . . . . . . . . . 32

2.8.3. Upwind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.9. Consistencia, estabilidad, convergencia y error del Mtodo de Diferencias Finitas . . . . . . . 34

2.9.1. Error Global . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34

2.9.2. Error Local de Truncamiento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.10. Estabilidad de Mtodos con Paso de Tiempo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

2.10.1. Anlisis de von Neumann Simplicado para mtodos con Paso de Tiempo . . . . . . . 36

3. Resolucin de Grandes Sistemas de Ecuaciones 38


3.1. Estructura ptima para el uso de Matrices . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.2. Mtodos de Resolucin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.2.1. Descomposicin LU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

3.2.2. Descomposicin Cholesky . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

3
NDICE GENERAL 4

3.2.3. Factorizacin LU de Sistemas Tridiagonales . . . . . . . . . . . . . . . . . . . . . . . . 41

3.2.4. Mtodo del Gradiente Conjugado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

3.2.5. GMRES . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

4. Implementacin Computacional 45
4.1. Scilab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

4.2. MatLab (Octave) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

4.3. C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

4.4. Biblioteca gmm++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

4.5. Mtodo de Descomposicin de Dominio de Subestructuracin . . . . . . . . . . . . . . . . . . 49

5. Aplicaciones y Pruebas 52
5.1. Ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.1.1. Ecuacin de Poisson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

5.1.2. Ejemplos de Adveccin-Difusin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

5.1.3. Ecuacin de Calor o Difusin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

5.1.4. Ecuacin de Onda en 1D . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

5.1.5. Ecuacin de Adveccin con Upwind . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

5.1.6. Ecuacin de Helmholtz . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65

5.2. Mtodo de Descomposicin de Dominio de Schur o Subestructuracin . . . . . . . . . . . . . 66

6. Comentarios Finales y Conclusiones 68


6.1. Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

6.2. Trabajo Futuro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

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. Ecuacin de Adveccin con upwind en python 91


D.1. Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

D.2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91

E. Ecuacin de Helmholtz 95
E.1. Ejemplo Numrico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95

F. Grcos en MatLab 99
Captulo 1

Introduccin

1.1. Ecuaciones Diferenciales

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 teora de Ecuaciones Diferenciales se ha convertido en uno de los campos de estudio ms importantes en


matemticas, debido a su frecuente aplicacin en diferentes campos de la fsica, ingeniera y otras ciencias,
vase [11]. Muchas de la leyes de la naturaleza se describen en trminos de ecuaciones diferenciales ordinarias
(EDO, ecuaciones que involucran las derivadas de una funcin de una sola variable) o bien, de ecuaciones
diferenciales parciales (EDP, donde las ecuaciones contienen ecuaciones parciales de funciones de varias
variables). Histricamente, la teora de EDO y EDP result del estudio de ciertas ecuaciones encontradas en
la fsica.

Entre las EDP ms representativas se encuentran:

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].

1.2. Ecuaciones Diferenciales Parciales

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

F (x1 , x2 , . . . , ux1 , ux2 , ..., ux1 x1 , ux1 x2 , ...) = 0 (1.2.1)

donde uxi representa la derivada parcial de u con respecto a la variable independiente xi .

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

Algunos ejemplos de ecuaciones diferenciales parciales son:

Ecuacin Linealidad

Ecuacin de Laplace u = 0 Lineal


Ecuacin de Poisson u = f Lineal
Ecuacin de onda utt = c2 u Lineal
Ecuacin de calor ut = cu Lineal
Ecuacin de Korteweg-de Vries ut + uux + cuxxx = 0 Cuasi-Lineal

Ecuacin eikonal (ux )2 + (uy )2 + (uz )2 = c2 F No-lineal

EDP Lineales de Segundo Orden

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.

Denicin. Sea V un espacio vectorial sobre un campo K y sea

A:V V

un operador de V . Un elemento v V se llama eigenvector o vector propio de A si existe K tal que


Av = v . v 6= 0, entonces est determinado de forma nica. En este caso se dice que es un eigenvalor
Si
o valor propio de A correspondiente a v . Tambin se dice que v es un eigenvector con el eigenvalor .

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.

Algunos ejemplos de EDP segn el tipo:

Ecuacin Tipo

Ecuacin de Laplace u = 0 Elptica


Ecuacin de Poisson u = f Elptica
Ecuacin de calor ut + u = f Parablica
Ecuacin de onda utt + u = f Hiperblica

1.3. Problemas Bien Planteados

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

Problema de valores en la frontera


Para el laplaciano consideremos el dominio Rn con frontera . Entonces el caso ms general de un
problema con valores en la frontera es: dadas las funciones f y g (f denida en y g en )

u = f
u
+ u = g
n

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

y cuando =0 se obtiene el problema de Neumann


u = f
u = g
n

Problema de valores en la frontera con condicin inicial


Para formular este tipo de problemas, se considera el dominio [0, T ] con T > 0, donde [0, T ] es un
intervalo en la recta real y, generalmente es el tiempo.

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

para todo x . Vase[5, 6, 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

junto con sus condiciones iniciales.

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.

1.4. Ecuacin de Laplace, Calor y Onda

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

entonces tenemos que

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

el cual dene el laplaciano en coordenadas polares.

Si u es una funcin armnica y radial, entonces se cumplir que

1
urr + ur = 0
r

es decir (rur )r = 0. De esto se tiene que una solucin radial en R2 tendr la forma

u (r, ) = c1 log (r) + c2

a la cual se le llama solucin radial fundamental, vase [9, 5].

Coordenadas Esfricas
Para las coordenadas esfricas consideramos
p
r = x2 + y 2 + z 2
x = rcossin
y = rsensen
z = rcos

tendramos que el operador laplaciano corresponde a

1 1
r2 ur + 2

u = (u sen)
r r r sen
1
+ u
r sen2
2

si buscramos las funciones armnicas invariantes bajo rotaciones(radiales), tendramos

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

u(x, t) = X(x)T (t) (1.4.1)

entonces

ut (x, t) = X(x)T 0 (t)


uxx (x, t) = X 00 (x)T (t)

sustituyendo en 1.4.1 tenemos que

X(x)T 0 (t) = kX 00 (t)T (t)

si dividimos por kX(x)T (t)


T 0 (t) X 00 (x)
= (1.4.2)
kT (t) X(x)

Observemos que si derivamos con respecto al tiempo tenemos que

X 00 (x)
= 0
X(x)

lo que implica que 1.4.2 es constante, entonces

T 0 (t) X 00 (x)
= = (1.4.3)
kT (t) X(x)

a la cual se le conoce como contante de separacin, vase [5, 15].

De 1.4.3 obtenemos un par de ecuaciones diferenciales ordinarias

X 00 (x) + X(x) = 0
T 0 (t) + kT (t) = 0

adems de tener las condiciones de frontera

u(0, t) = X(0)T (t) = 0


u(L, t) = X(L)T (t) = 0
CAPTULO 1. INTRODUCCIN 12

esto implica que X(0) = X(L) = 0.


Se resuelve

X 00 (x) + X(x) = 0 (1.4.4)

con las condiciones de frontera X(0) = X(L) = 0.

Si = 0, entonces X 00 (x) = 0, lo que implica que

X(x) = ax + b

aplicando las condiciones

X(0) = b = 0
X(L) = aL = 0

entonces a=0 y X(x) = 0.

Si < 0, se dene una variable 2 = , entonces se resuelve

X 00 (x) 2 X(x) = 0

y la solucin es

X(x) = aex + bex

de donde tenemos que

X(0) = a + b
a = b

entonces

X(x) = aex aex


e ex
 x 
= 2a
2
= 2asenh(x)

Ahora si x = L, para L 6= 0

X(L) = 2asenh(L) = 0

lo que implica que a=0 y

X(x) = 0

Por ltimo, si > 0, se dene 2 = y entonces

X 00 (x) +X(x) = 0

donde la solucin general es

X(x) = acos(ax) + bsen(ax)

aplicando las condiciones de frontera

X(0) = a = 0
X(L) = bsen(L) = 0
CAPTULO 1. INTRODUCCIN 13

de donde si b=0 entonces X(x) = 0, por tanto b 6= 0 y

sen(L) = 0

y esto pasa cuando n L = n para n = 1, 2, . . ., por tanto

n = n2
n2 2
=
L

son los eigenvalores asociados a la ecuacin diferencial 1.4.4. Y sus eigenfunciones

 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

obtenemos como solucin

n2 2
kt
Tn (t) = e L2

para n = 1, 2, . . .
Entonces sea

un (x, t) = bn Xn (x)Tn (t)


2 2
 n  n kt
= bn sen x e L2
L

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

por ltimo debemos encontrar las bn que

 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

para n = 1, 2, . . . por lo que la solucin a la ecuacin diferencial parcial es

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

Para ms detalles se puede consultar [9, 8, 5, 6].


CAPTULO 1. INTRODUCCIN 14

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

ut + cux = h (x + ct) (1.4.5)

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)

Consideremos ahora el problema de valores iniciales


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

(x) = f (x) + g (x)


0 (x) = f 0 (x) + g 0 (x)

y derivando con respecto a t y evaluando luego en t=0 obtenemos

(x) = cf 0 (x) cg 0 (x)

A partir de este par de ecuaciones, obtenemos que


 
0 1 0 (x)
f (x) = (x) +
2 c
 
1 (x)
g 0 (x) = 0
(x)
2 c

integrando se obtiene que



1 1 x
f (x) = (x) + (s) ds + A
2 2c 0

1 1 x
g (x) = (x) (s) ds + B
2 2c 0

Como f +g = entonces A+B =0 y por lo tanto, al evaluar g (x ct) obtenemos


f (x + ct) y

1 1 x+ct 1 1 xct
u (x, t) = (x + ct) + (s) ds + (x ct) (s) ds
2 2c 0 2 2c 0

1 1 x+ct
= ( (x + ct) + (x ct)) + (s) ds (1.4.7)
2 2 xct
CAPTULO 1. INTRODUCCIN 15

a la expresin 1.4.7 se le conoce como frmula de D'Alambert. Vase [9, 8, 5, 6].

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.

1.5. Mtodos de Discretizacin

En la bsqueda de una descripcin cualitativa de un determinado fenmeno, por lo general se plantea un


sistema de ecuaciones diferenciales ordinarias o parciales, vlidas para cierto dominio y donde se imponen
sobre este, una serie de condiciones en la frontera y de condiciones iniciales. Despus de esto, el modelo
matemtico se considera completo, y es aqu donde aparece la mayor dicultad, dado que solamente en la
forma ms simple de la ecuacin, con fronteras geomtricas triviales puede ser resuelta en forma exacta con
los mtodos matemticos que disponemos.

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]

Mtodo de Diferencias Finitas

Mtodo de Volumen Finito

Mtodo de Elemento Finito

Mtodo de Volumen Finito


El mtodo de Volumen Finito, vase [2], divide el dominio de estudio en un nmero de volmenes de control
que no se traslapan, de manera que hay un volumen rodeando a cada punto de la malla. Las integrales de
volumen de la ecuacin diferencial parcial que contienen la divergencia son transformadas a integrales de
supercie, usando el teorema de la divergencia o de Gauss. Estos trminos entonces son evaluados como ujos
en la supercie en cada volumen nito. Que el ujo de entrada en el volumen sea igual al ujo de salida,
hacen que este mtodo sea conservativo. Una ventaja del mtodo es que se puede formular fcilmente en
mallas no estructuradas. El mtodo de volumen nito es muy usado para problemas de dinmica de uidos.

Mtodo de Elemento Finito


El mtodo de elemento nito, vase [1], es otra tcnica numrica para aproximar la solucin de ecuaciones
diferenciales parciales. El dominio se divide en subdominios que no se traslapan, a los cuales se les denomina
elementos nitos. Se usan mtodos variacionales (clculo variacional) para minimizar una funcin de error
y producir una solucin estable. El mtodo se puede aplicar a la mayora de los problemas de ciencia e
ingeniera.

Mtodo de Diferencias Finitas


La tcnica fundamental para los clculos numricos en diferencias nitas se basa en aproximar f (x) mediante
un polinomio cerca de x = x0 , vase[12]. Una de las aproximaciones clsicas es mediante la serie de Taylor, la
cual tambin nos permite, aparte de la aproximacin de las derivadas, el clculo del error en la aproximacin
mediante su frmula del residuo.
CAPTULO 1. INTRODUCCIN 16

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

u (x0 + x, y0 ) 2u (x0 , y0 ) + (x0 x, y0 )


2 u (x0 , y0 )
(x)2
u (x0 , y0 + y) 2u (x0 , y0 ) + (x0 , y0 y)
+
(y)2

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.

1.6. Mtodos de Solucin de Sistemas de Ecuaciones

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:

Descomposicin LU, vase seccin 3.2.1

Descomposicin de Cholesky, vase seccin 3.2.2

Descomposicin LU para matrices tridiagonales, vase seccin 3.2.3

Iterativos:

Gradiente Conjugado(CGM, Conjugate Gradient Method), vase seccin 3.2.4

GMRES(Generalized Minimal Residual), vase seccin 3.2.5

Dependiendo de las caractersticas de la matriz A, se usa un tipo de mtodo, por ejemplo, si:

Matriz es simtrica: Cholesky, CGM

Matriz no simtrica: LU, GMRES


CAPTULO 1. INTRODUCCIN 17

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.

1.7. Necesidad del Cmputo Paralelo.

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.

OpenMP (www.openmp.or g) permite la programacin multiproceso de memoria compartida. Se compone de


un conjunto de directvas de compilador, funciones de la propia biblioteca y variables de entorno. Se basa en
el modelo fork-join, donde una tarea muy pesada se divide en hilos de procesamiento para despus juntar
o recolectar los resultados y al nal unirlos, vase [23].

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:

Describir el mtodo numrico de diferencias nitas

Desarrollar la metodologa de diferencias nitas para ecuaciones diferenciales parciales: Elpticas, Pa-
rablicas e Hiperblicas

Describir el estencil general para ecuaciones diferenciales parciales en tres dimensiones

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 ejemplos la solucin numrica y su implementacin computacional para resolver


ecuaciones parciales en una, dos y tres dimensiones

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

Mtodo de Diferencias Finitas


En este captulo se presenta una introduccin gener al Mtodo de Diferencias Finitas (vase [12, 17]) para
aproximar la solucin de ecuaciones diferenciales. El marco terico se plantea en forma general, aplicable a
la solucin de problemas especcos. Los tipos de problemas que se resolvern son los que generan ecuaciones
diferenciales parciales (ya sean elpticas, parablicas o hiperblicas) para las distintas condiciones de frontera
(Dirichlet, Neumann y Robin).

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.

2.1. Diferencias Finitas

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.

2.2. Aproximacin a la Primera Derivada

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

Considerando la ecuacin 2.1.1 y sea h>0

0 h2 00
f (x + h) = f (x) hf (x) + f ()
2!

de sta ecuacin se obtiene la siguiente expresin para la aproximacin de la primera derivada

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

siendo Op (h) el error de truncamiento, denido como

h2 00
Op (h) = f ()
2!

Diferencias Regresivas

Considerando nuevamente la ecuacin 2.1.1

0 h2 00
f (x h) = f (x) hf (x) + f ()
2!
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 21

as la aproximacin a la primera derivada es

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

lm Oc (h2 ) < lm Op (h) = lm Or (h)


h0 h0 h0

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.

2.3. Aproximacin a las Derivadas en 1D, 2D y 3D

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.

Derivada de Orden Uno en Una Dimensin

Partiendo del desarrollo de la serie de Taylor 2.1.1 se tiene que

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

restando las ecuaciones anteriores obtenemos

h3 000
f (x + h) f (x h) = 2hf 0 (x) + f (p ) + f 000 (r )

3!

de donde esta ltima expresin da lugar a la aproximacin de la primera derivada

f (x + h) f (x h)
f 0 (x) (2.3.1)
2h

Derivada de Orden Dos en Una Dimensin

Partiendo del desarrollo de la serie de Taylor 2.1.1 se tiene que

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!

sumando ste par de ecuaciones para obtener la aproximacin a la segunda derivada

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

Derivada de Orden Uno en Dos Dimensiones

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

Si ahora se mantiene x ja se obtiene lo siguiente

f f (x, y + h2 ) f (x, y h2 )

y 2h2

Derivada de Orden Dos en Dos Dimensiones

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

Si ahora se mantiene x ja se obtiene lo siguiente

2f f (x, y h2 ) 2f (x, y) + f (x, y + h2 )



y 2 h22
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 23

Derivada de Orden Uno en Tres Dimensiones

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

Si ahora se mantienen x, z jas

f f (x, y + h2 , z) f (x, y h2 , z)

y 2h2

Si ahora se mantienen x, y jas

f f (x, y, z + h3 ) f (x, y, z h3 )

y 2h3

Derivada de Orden Dos en Tres Dimensiones

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

Ahora se mantienen jas x, z

2f f (x, y h2 , z) 2f (x, y, z) + f (x, y + h2 , z)



y 2 h22

y por ltimo se mantiene jas x, y

2f f (x, y, z h3 ) 2f (x, y, z) + f (x, y, z + h3 )



z 2 h23

2.4. Estencil para Problemas en 3D

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.

Para crear la malla se divide el dominio de la ecuacin diferencial R3 en Nx , Ny y Nz nodos homoge-


neamente espaciados por cada dimensin. Usando lo desarrollado en diferencias nitas para las parciales en
tres dimensiones, tenemos que para el n-simo nodo xi = (xi , yj , zk ) (g 2.4.1) se tiene que
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 24

Figura 2.4.1: Nodos

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

y para las segundas parciales

2f f (xi h1 , yj , zk ) 2f (xi , yj , zk ) + f (xi + h1 , yj , zk )


(xi .yj , zk )
x2 h21
fi1,j,k 2fi,j,k + fi+1,j,k

h21
fn1 2fn + fn+1

h21
2f f (xi , yj h2 , zk ) 2f (xi , yj , zk ) + f (xi , yj + h2 , zk )
(xi .yj , zk )
y 2 h22
fi,j1,k 2fi,j,k + fi,j+1,k

h22
fnNx 2fn + fn+Nx

h22
2f f (xi , yj , zk h3 ) 2f (xi , yj , zk ) + f (xi , yj , zk + h3 )
(xi .yj , zk )
z 2 h23
fi,j,k1 2fi,j,k + fi,j,k+1

h23
fnNx Ny 2fn + fn+Nx Ny

h23

donde h1 , h2 , h3 son las distancias entre nodos en los ejes x, y, z respectivamente.

2.5. Condiciones de frontera

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.

Neumann. En la condicin de frontera tipo Neumann, lo que se conoce es la derivada de u (x, t) a lo


u
largo de la frontera , es decir, . La condicin debe representarse como una diferencia nita aadiendo
n
puntos cticios a la malla en la frontera. Estos valores aadidos, no tienen ningn signicado fsico pues se
encuentran por fuera del dominio del problema.

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.

Una primera aproximacin es representar la condicin como una diferencia progresiva

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=a y

un1 2un + un+1


= fn
h2
un1 2un + 2hg2 + un1
= fn
h2
un1 un fn g2
= +
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.

Como referencia vase [25] captulo 4.

2.6. Procedimiento General del Mtodo de Diferencias Finitas

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

Figura 2.6.1: Numeracin de nodos para una malla de dos dimensiones

2.6.1. Problema en una dimensin con Condiciones de Frontera Dirichlet


Considremos la ecuacin
auxx + b (x) ux + c (x) u = f (x) (2.6.1)

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

ui1 2ui + ui+1


uxx =
h2
ui+1 ui1
ux =
2h
con lo que la ecuacin 2.6.1 se convierte en
   
ui1 2ui + ui+1 ui+1 ui1
ai + bi + ci ui = fi
h2 2h

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

el cual se puede escribir en forma de una matriz y un vector\


h i
c1 h2 2a1 a1 + b12h f1 ha12 2hb1
u

u1
b2 h b2 h
c2 h2 2a2

a2 2 a2 +
1 u2 f 2

2
=

.. .. .. . .
h2 .. .

. . . .
b(n1) h
h i
2 u(n1) a b
a(n1) 2 c1 h 2a1 f(n1) (n1)
h2
(n1)
+ 2h u

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

2.6.2. Problema en una dimensin con Condiciones de Frontera Neumann


Considremos la ecuacin
auxx + b (x) ux + c (x) u = f (x)
en = [, ] y condiciones de frontera
 
du
= cte = u
dx
 
du
= cte = u
dx

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

ui1 2ui + ui+1


uxx =
h2
ui+1 ui1
ux =
2h
con lo que la ecuacin 2.6.1 se convierte en
   
ui1 2ui + ui+1 ui+1 ui1
ai + bi + ci ui = fi
h2 2h

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

de donde se obtiene el sistema de ecuaciones

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

en forma de matriz vector\fr

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

2.6.3. Problema en una dimensin con Condiciones de Frontera Robin


Considremos la ecuacin
auxx + b (x) ux + c (x) u = f (x)

en = [, ] y condiciones de frontera

u () = u
 
du
= cte = u
dx

Escribiendo la frontera Neumann de la siguiente manera

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

ui1 2ui + ui+1


uxx =
h2
ui+1 ui1
ux =
2h
CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 30

con lo que la ecuacin 2.6.1 se convierte en


   
ui1 2ui + ui+1 ui+1 ui1
ai + bi + ci ui = fi
h2 2h
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
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 + + u3 = f2
h2 2h h2 h2 2h
     
a3 b3 2a3 a3 b3
u2 + c3 u3 + 2 + u4 = f3
h2 2h h2 h 2h
. . .
. . .
. . .
u(n1) un fn u
= +
h2 2 h
en forma de matriz vector
h i
b1 h a1 b1
c1 h2 2a1 a1 +

2 u1
f1 h2
2h u
b2 h
a2 c2 h2 2a2 a2 + b22h

2 u2 f2
1 a3 b32h c2 h2 2a3 b3 h
a3 + 2 u3 =

f3

h2

.. .. ..

.
. . . .

.

1 1 u n fn u
2 + h

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

2.7. a(x) no constante

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

sustituyendo 2.7.1 y 2.7.2 en 2.7.3

 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

2.8. Discretizacin del tiempo

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.

2.8.1. Ecuaciones Con Primera Derivada Temporal (Esquema Theta)


Para la solucin de ecuaciones diferenciales con derivada temporal (ut ), se emplean diferentes esquemas en
diferencias nitas para la discretizacin del tiempo. Estos esquemas se conocen de manera general como
esquemas theta (), vase [19]
Pn
Si se dene la ecuacin diferencial parcial general de segundo orden como en 1.2.2
Pn Lu = i,j=1 aij uxi xj +
i=1 bi uxi + cu, entonces la ecuacin parablica tiene la forma

ut = Lu
= auxx + buyy + cuzz + dux + euy + f uz + gu + h

entonces, el esquema est dado por

ut = (1 ) (Lu)j + (Lu)j+1

Diferentes casos del esquema theta :

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.

Entonces, si tenemos la ecuacin

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

para el tiempo, donde k = t y

" j j j j+1 j+1 j+1


#
a ui1 2ui + ui+1 ui1 2ui + ui+1
auxx +
2 h1 2 h1 2
" j j j j+1 j+1 j+1
#
b uin1 2ui + ui+n1 uin1 2ui + ui+n1
buyy +
2 h2 2 h2 2

" j j j j+1 j+1 j+1


#
c uin1n2 2ui + ui+n1n2 uin1n2 2ui + ui+n1n2
cuzz +
2 h3 2 h23

" j j j+1 j+1


#
d ui+1 ui1 ui+1 ui1
dux +
2 2h1 2h1

" j j j+1 j+1


#
e ui+n1 uin1 ui+n1 uin1
euy +
2 2h2 2h2

uji+n1n2 ujin1n2 uj+1 uj+1


" #
f
f uz + i+n1n2 in1n2
2 2h3 2h3

adems de guji y hji para el espacio.

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.

2.8.2. Ecuaciones Con Segunda Derivada Temporal


En las ecuaciones diferenciales parciales donde se requiera segunda derivada temporal (por ejemplo, la ecua-
cin de onda), esta se aproxima por diferencias centradas en el tiempo

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

uji1 2uji + uji+1


" #
auxx a
h1 2

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.

En la ecuacin 2.8.1 para calcular uj+1


i ui1 , ui , ui+1 en los dos intantes inmediatos
es necesario conocer
1 0 1
anteriores tj , tj1 . En particular para calcular ui es necesario conocer ui y ui . Entonces si u(x, 0) = u0 es
du
la condicin inicial y
dt = u1 (x, 0) es la condicin inicial de la primer derivada temporal, se tiene que

u1i = 2u0i u1 2
i + k Lu
0

donde tomamos

u0i = u0 (xi )
u1i u1
i
= u1 (xi )
2k
sustituyendo

u1i = u0 (xi ) + ku1 (xi ) + k 2 Lu0

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

El esquema upwind ms sencillo posible est dado por



uji uji1
!

a a0


uj+1 uji h

i
=
uji+1 uji
!
k
a a<0


h

Entonces, s a0 se tiene que

 
ak j ak
uj+1
i = ui1 + 1 uji
h h

en caso de que a<0  


ak ak j
uj+1
i = 1+ uji u
h h i+1
En forma matricial se escribe como
uj+1 = Auj

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.

2.9. Consistencia, estabilidad, convergencia y error del Mtodo de Dife-


rencias Finitas

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]

2.9.1. Error Global


Sea U = [U1 , U2 , . . . , Un ]T el vector solucin obtenido al utilizar el mtodo de diferencias nitas, y u =
[u (x1 ) , u (x2 ) , . . . , u (xn )] las solucin exacta en los puntos de la malla. El vector de error global se dene
como E = U u. Lo que se desea es que el valor mximo sea pequeo. Usualmente se utilizan distintas
normas para encontrar el error:

La norma innito kEk = maxi |ei |.


P
La norma-1 la que se dene como kEk1 = i hi |ei |
P 2
1
La norma-2 la cual se dene como kEk2 = i hi |ei |
2

La norma innito es en general la ms apropiada para calcular los errores relativos a la discretizacin.

Denicin. Un mtodo de diferencias nitas se dice que es convergente si lmh0 kEk = 0


CAPTULO 2. MTODO DE DIFERENCIAS FINITAS 35

2.9.2. Error Local de Truncamiento


 
d
Sea P un operador diferencial, por ejemplo
dx

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.

Denicin. El esquema de diferencias nitas es consistente si

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.

Lema. Lema de Hadamard

Si A es una matriz de diagonal estrictamente dominante, entonces A es invertible.

Denicin. Un mtodo de diferencias nitas para la ecuacin elptica es estable si A es invertible y

1
A C

para toda h < h0 , donde C y h0 son constantes.

El siguiente teorema es importante para demostrar la convergencia de los mtodos de diferencias nitas.

Teorema. (Teorema de Equivalencia de Lax-Richtmyer) Un mtodo de diferencias nitas consistente y


estable es convergente.

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

2.10. Estabilidad de Mtodos con Paso de Tiempo

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:

Esquema discreto = transformada discreta de Fourier =crecimiento del factor g () = stabilidad si


|g () | 1

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

para todo , 0 < h h0 y 0 < t t0 . Si g (, t, h) es independiente de h y t, la condicin para la


estabilidad es
|g()| 1

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 sustituye ukj = eijh

Se expresa uk+1
j = g()eijh

Se resuelve g() y se determina si |g()| 1

Ejemplo de Estabilidad del Esquema Crank-Nicolson


Tomemos el ejemplo de la ecuacin de Calor en una dimensin

ut = 2 uxx

la ecuacin discretizada quedara como

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:

Sustituimos ukj = eijh y uk+1


j = g()eijh
h i h i
g()eijh eijh = ei(j1)h 2eijh + ei(j+1)h + g()ei(j1)h 2g()eijh + g()ei(j+1)h

dividiendo entre eijh


h i h i
g() 1 = eih 2 + eih + g() eih 2 + eih

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 ]

dado que ei es la exponencial compleja, tenemos

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.

Para la ecuacin de onda


utt = c2 uxx

siguiendo el mismo procedimiento se tiene que el mtodo es estable s

h
c
t
Captulo 3

Resolucin de Grandes Sistemas de


Ecuaciones
En el captulo anterior se desarroll un mtodo para transformar un problema de ecuaciones diferenciales
parciales en un sistema algebraico de ecuaciones

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.

3.1. Estructura ptima para el uso de Matrices

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.

Compressed Row Storage(CSR)


El esquema Compressed Row Storage es un formato de almacenamiento de datos, el cual no hace ninguna
suposicin sobre la dispersin de los elementos de la matriz, y no alamacena ningn elemento innecesario.
Sin embargo no es el ms eciente, y se necesita una direccin indirecta para cada operacin en un porducto
matriz-vector.

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.

Por ejemplo, consideremos la matriz no simtrica A denida como

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.

Figura 3.1.1: Ejemplo del formato CSR

Compressed Diagonal Storage (CDS)


Si la matriz A es bandada con ancho de banda constante de rengln a rengln, se puede tomar ventaja de sta
estructura mediante un esquema de almacenamiento que guarda las subdiagonales de la matriz en locaciones
consecutivas. ste esquema es til para discretizaciones que surgen de elemento nito o diferencias nitas,
donde se usa una numeracin estandar.

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

Usando el formato CDS, se puede almacenar la matriz A en otra matriz de (p : q) n = 3 6 usando el


mapeo val (i, j) = ai,i+j
As, los renglones de val(:, :) de la matriz son:

val(:, 1) = 0 3 7 8 9 2

val(:, 0) = 10 9 8 7 9 1

val(:, +1) = 3 6 7 5 13 0

Ntese que los dos ceros no existen en la matriz original.

3.2. Mtodos de Resolucin

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:

Descomposicin LU para matrices tanto simtricas como no-simtricas.

Descomposicin de Cholesky para matrices simtricas.

Descomposicin LU para matrices tridiagonales.


En ambos casos la matriza A es modicada y en la factorizacin LU el tamao de la banda crece a 2q + 1
si q es el tamao de la banda de A.

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

Entonces el problema Ax = b lo podemos escribir como LU x = b y se reduce a la solucin sucesiva de los


sistemas triangulares

Ly = b
Ux = y

Una vez obtenida la factorizacin, obtenemos la solucin haciendo

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.

3.2.2. Descomposicin Cholesky


Cuando la matriz A es simtrica y denida positiva (xt Ax > 0), podemos obtener la descomposicin LU = A.
t T t t
As A = LDU y A = LDL y como A = A entonces U = L y donde D = diag(U ) es la diagonal con
t
entradas positivas. Entonces el problema original se escribe como LL x = b, y la solucin se reduce a resolver
los sistemas:

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

3.2.3. Factorizacin LU de Sistemas Tridiagonales


El siguiente algoritmo (factorizacin de Crout) factoriza la matriz A de nn cuya matriz es tridiagonal.
Consecuencia de ello, ofrece una importante ventaja computacional a la hora de resolver el sistema pues slo
requiere (5n 4) multiplicaciones/divisiones y (3n 3) sumas/restas, ya que toma ventaja la tridiagonalidad
de la matriz.
CAPTULO 3. RESOLUCIN DE GRANDES SISTEMAS DE ECUACIONES 42

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.

Un mtodo iterativo para resolver el sistema algebraico

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 . . .

La convergencia a la solucin la garantiza el siguiente teorema

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

3.2.4. Mtodo del Gradiente Conjugado


Existen un conjunto de mtodos comnmente utilizados en la resolucin de grandes sistemas lineales, entre
los cuales el mtodo del gradiente conjugado es de los ms populares para resolver el sistema de ecuaciones
Ax = b, donde x es el vector incgnita, b es un vector conocido y A es una matriz cuadrada, simtrica
t t
(A = A ) y positiva-denida (x Ax > 0).

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

Demostracin. Dado f (x) = 12 xt Ax xt b + c tenemos que el gradiente de f (x) es

1 1
f (x) = xt A + Ax b
2 2

al ser A simtrica
f (x) = Ax b

El gradiente de f, utilizando la demostracin de la proposicin anterior est dado por

f (x) = Ax b

ahora si x es solucin, entonces es un punto crtico de f (mnimo o mximo) y al ser A positiva-denida, se


garantiza que al hacer f (x) = 0 el vector x sea un mnimo. Por tanto

0 = Ax b = Ax = b

Sea x0 un punto de partida, se tiene

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.

Supongamos que se ha encontrado x, y lo denotamos como x1 , se puede plantear para k 0, obteniendo as


el mtodo del gradiente

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

la solucin aproximada ser xn+1 .


CAPTULO 3. RESOLUCIN DE GRANDES SISTEMAS DE ECUACIONES 44

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

donde Hn = (hij )1in+1,1jn , la solucin aproximada ser xn = x0 + Vn 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.

Inicialmente desarrollado por INRIA (Institut National de Recherche en Informatique et Automatique),


actualmente est a cargo de un consorcio de universidades, empresas y centro de investigacin.

Declarar vectores y matrices es tan secillo como escribir

b = zeros (5 ,1); // vector de tamao 5


A = zeros (5 ,5) // matriz de tamao 5 x5
b(1) = 2; // asignacin en la posicin 1
b(3) = 41;
A( 1 , 1 ) = 3 2 ; // asignacin en la posicin (1 ,1)
A( 3 , 4 ) = 5 ;
SP = s p a r s e (A ) ; // SP es la matriz donde se guardan los valores no cero de A

45
CAPTULO 4. IMPLEMENTACIN COMPUTACIONAL 46

Multiplicar matrices por vectores

A_ = A b ; // multiplicacin m a t r i z v e c t o r

Solucin de sistemas de ecuaciones Ax = b


// Ax = b
x = i n v (A) b ; // usando directamente la inversa
[ L ,U] = l u (A) // factorizacin LU
C = c h o l (A) // factorizacin cholesky
x = p c g (A, b ) // gradiente conjugado

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.

4.2. MatLab (Octave)

MatLab (http://www.mathworks.com/products/matlab/ ) es un entorno para cmputo cientco no libre, su-


mamente usado en el mundo. Ofrece un lenguaje de programacin de alto nivel. Contiene enorme cantidad
de funciones ya predenidas que el desarrollador puede utilizar al instante. Una de las ventajas de MatLab
es su enorme capacidad de ser ampliado y adecuarlo a las necesidades del usuario mediante los llamados tool-
boxes, que entre otras cosas ofrecen la capacidad de realizar: procesamiento de imgenes, anlisis de datos,
optimizacin, etc.

b = zeros (5 ,1); // vector de tamao 5


A = zeros (5 ,5) // matriz de tamao 5 x5
b(1) = 2; // asignacin en la posicin 1
b(3) = 41;
A( 1 , 1 ) = 3 2 ; // asignacin en la posicin (1 ,1)
A( 3 , 4 ) = 5 ;
SP = s p a r s e (A ) ; // SP es la matriz donde se guardan los valores no cero de A

Multiplicar matrices por vectores

A_ = A b ; // multiplicacin m a t r i z v e c t o r

Solucin de sistemas de ecuaciones Ax = b


// Ax = b
x = i n v (A) b ; // usando directamente la inversa
[ L ,U] = l u (A) // factorizacin LU
C = c h o l (A) // factorizacin cholesky
x = p c g (A, b ) // gradiente conjugado

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.

Por otra parte, Octave(http://www.gnu.org/software/octave/ ) se considera el clon libre de MatLab y se


desarrolla para ser una opcin viable para sustituir MatLab en el ambiente cientco. Octave ofrece la misma
sintaxis de MatLab y la compatibilidad de los programas desarrollados en el.
CAPTULO 4. IMPLEMENTACIN COMPUTACIONAL 47

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.

Programacin Orientada a Objetos


El modelo de objetos no es slo una forma de programar sino que brinda los cimientos para poder desarrollar
todo tipo de soluciones bajo sus principios. Muchas de las premisas de este paradigma han sido obtenidas de
las ingenierias. La principal razn que hace atractivo a este modelo es la capacidad que tiene para combatir
la complejidad inherente y disminuir los riesgos en el desarrollo. Otros paradigmas tambin tienen sus xitos
en estos puntos pero el modelo de objetos no se resiente tanto en proyectos de gran alcance. La escalabilidad
no lo afecta de forma profunda como a otros paradigmas.

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.

El objeto como base


Lgicamente, la orientacin a objetos presenta muchas caractersticas comunes a otros tipos de prcticas. Lo
que la distingue es el nfasis en denir y caracterizar de forma clara los componentes del sistema, dotndolo
de sus capacidades. En el objeto se unen los datos y los algoritmos y es as en como el objeto se transforma
en la pieza fundamental de esta estructura.

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.

Programacin Orientada a Objetos


Para concluir, si se quiere denir qu es la programacin orientada a objetos se puede tomar la denicin
de un famoso ingeniero de software llamado Grady Booch: La programacin orientada a objetos es un
mtodo de implementacin en el que los programas se organizan como colecciones cooperativas de objetos,
cada uno de los cuales representa una instancia de alguna clase, y cuyas clases son, todas ellas, miembros
de una jerarqua de clases unidad mediante relaciones de herencia, vase [22]

4.4. Biblioteca gmm++

La biblioteca gmm++ (http://download.gna.org/getfem/html/homepage/gmm/ ) provee algunos tipos bsicos


de matrices (densas y dispersas) y vectores, as como, operaciones genricas (suma, resta, multiplicacin, etc.)
para operar con estas. Adems contiene resolvedores para sistemas de ecuaciones tales como el gradiente
conjujado, gmres, LU, QR, etc.

La instalacin en sistemas basados en debian es

~#a p t i t u d e install libgmm++d e v

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

Gmm++ provee tipos de vectores y matrices densas


CAPTULO 4. IMPLEMENTACIN COMPUTACIONAL 49

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 )

4.5. Mtodo de Descomposicin de Dominio de Subestructuracin

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).

Figura 4.5.1: Dominios

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

donde la matriz A es invertible, entonces

D CA1 B v = b CA1 a


y
u = A1 (a Bv)

De esta manera se ha transformado el sistema Mx = w en otro equivalente

Nv = g

pero con menor cantidad de grados de libertad, donde

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

est denido por


1
Si = A I
i Ai AII
i AI
i

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

Notese que la dimensin del sistema Su = b es mucho menor


1queIla del sistema original sin descomposicin
de dominio Ax = b. Adems del
clculo de Ai Ai
I II
Ai Ai est desacoplado para cada subdominio
i = 1, 2, . . . , E . Por ello es prctico implementar su solucin en equipos con memoria compartida o dispersa,
ya que slo estn acoplados por los valores en la frontera interior, que es un vector de dimensin pequea
que es fcil pasar entre los procesos que corren en un mismo procesador o mltiples cores.
Captulo 5

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.

5.1.1. Ecuacin de Poisson


La ecuacin de Poisson
u = f

es el caso general de la ecuacin de Laplace.

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

2u ui1 2ui + ui+1


=
x2 h21
2u uin 2ui + ui+n
=
y 2 h22

por tanto la representacin en diferencias nitas de la ecuacin de laplace queda como

ui1 2ui + ui+1 uin 2ui + ui+n


+ = fi
h21 h22

52
CAPTULO 5. APLICACIONES Y PRUEBAS 53

agrupando los trminos se obtiene

 
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)

con la condicin de frontera Dirichlet y Neumann

u (0) = 1
u (0.5) =

respectivamente.

Figura 5.1.1: Solucin de la ecuacin de Poisson con condiciones Dirichlet y Neumann

El anlisis de la particin de la malla contra el error en norma innito

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]

u = 2n2 2 sen (nx) sen (ny)

con condiciones de frontera g = 0.


Cabe sealar que existe la solucin analtica para este problema y es u (x, y) = sen (nx) sen (ny). Se toma
para el ejemplo el valor de n = 4. La grca de la solucin se muestra a continuacin.

Figura 5.1.3: Solucin de la ecuacin de Poisson

El anlisis de la particin de la malla contra el error en norma innito

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.

5.1.2. Ejemplos de Adveccin-Difusin


Los siguientes tres ejemplos no tienen solucin analtica, sin embargo, los resultados son conformes a la
literatura, por ejemplo, vase [14]
CAPTULO 5. APLICACIONES Y PRUEBAS 55

Ejemplo
Para el primer ejemplo, la ecuacin utilizada es

vu + b u = 0

con = [0, 1] [0, 1], con las condiciones de frontera


(
0 (x, y) 1
u (x, y) =
1 (x, y) 2

con b = (1, 3) y v = 0.01. Se utiliz una discretizacin de 512 512 nodos.

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.

Figura 5.1.5: Solucin del ejemplo

Ejemplo
Para este segundo ejemplo la ecuacin a resolver es

vu + b u + cu = 0
CAPTULO 5. APLICACIONES Y PRUEBAS 56

con = [1, 1] [1, 1], con las condiciones de frontera


y = 1 0 < x < 1

u (x, y) = 1 y = 1 0<x1

x=1 1 y 1

u (x, y) = 0 para otro caso

el coeciente advectivo b = (y, x), el valor de c = 104 y v = 0.01. Se utiliz una discretizacin de 256 256
nodos.

Desarrollando la ecuacin se tiene que

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

Figura 5.1.6: Solucin del ejemplo

Ejemplo
Para el tercer ejemplo la ecuacin a resolver es

vu + b u + cu = 0

con = [1, 1] [1, 1], con las condiciones de frontera

(
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

128 128 nodos.


CAPTULO 5. APLICACIONES Y PRUEBAS 57

Desarrollando la ecuacin se tiene que

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

Figura 5.1.7: Solucin del ejemplo

5.1.3. Ecuacin de Calor o Difusin


La ecuacin diferencial parcial parablica que se resolver es la de calor o difusin

ut = uxx

con 0<x<l y t>0 sujeta a las condiciones

u(0, t) = u(l, t) = 0
u(x, 0) = f (x)

entonces, comenzando con la discretizacin del tiempo, se tiene que

uj+1
i uji
ut
k

donde k es la particin del tiempo t en intervalos. La parte espacial se obtiene como

" j j j j+1 j+1 j+1


#
ui1 2ui + ui+1 ui1 2ui + ui+1
uxx +
2 h2 h2

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

con condicin inicial


u (x, 0) = sen (x)

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.8: Solucin de la ecuacin de calor

El anlisis de la ecuacin de calor se da en la grca loglog


CAPTULO 5. APLICACIONES Y PRUEBAS 59

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

con condicin inicial


u (x, 0) = sen (x) sen (2y)

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.

La solucin al problema se muestra en las siguientes grcas para algunos tiempos


CAPTULO 5. APLICACIONES Y PRUEBAS 60

Figura 5.1.11: Solucin de la ecuacin de calor. Condicin inicial.

Figura 5.1.12: Solucin de la ecuacin de calor.


CAPTULO 5. APLICACIONES Y PRUEBAS 61

Figura 5.1.13: Solucin de la ecuacin de calor. Tiempo nal.

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.

5.1.4. Ecuacin de Onda en 1D


La ecuacin diferencial parcial que se resolver es la ecuacin de onda, que es el ejemplo de una ecuacin
hiperblica. La ecuacin de onda esta dada como

utt = uxx

para 0<x<l y t > 0, sujeta a las condiciones

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

por tanto, se tiene que el estencil para resolver esta ecuacin es

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

con condiciones iniciales

u (x, 0) = sen (x)


ut (x, 0) = 0

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.

La solucin al problema se muestra en la siguiente grca para algunos tiempos

Figura 5.1.14: Solucin de la ecuacin de onda

El anlisis de la ecuacin de onda, mediante la grca loglog es el siguiente


CAPTULO 5. APLICACIONES Y PRUEBAS 63

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.

5.1.5. Ecuacin de Adveccin con Upwind


La ecuacin de adveccin
ut + aux = 0
se resolver utilizando el esquema upwind.

S a0 el estencil es
 
ak j ak
uj+1
i = ui1 + 1 uji
h h

en el caso que a<0 se tiene que  


ak ak j
uj+1
i = 1+ uji u
h h i+1
donde k = t es el paso del tiempo y h = x es la longitud de los intervalos.

Ejemplo
Tomemos la ecuacin
ut + 2ux = 0
CAPTULO 5. APLICACIONES Y PRUEBAS 64

en el dominio = [2, 8] y condicin inicial

2
u (x, 0) = e((x0.2) )

Esta ecuacin tiene la solucin analtica u (x, t) = u (x at, 0).


El problema se corri en 401 nodos a un paso de tiempo dt = 0.012 por 360 pasos de tiempo. El factor para
adt
que converja debe de cumplir = h < 1, se noto en este tipo de problemas que debe de ser muy cercano
a 1 para conseguir la mejor aproximacin.

Figura 5.1.17: Solucin de la ecuacin de adveccin utilizando el esquema upwind

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.

5.1.6. Ecuacin de Helmholtz12


+ k 2 u = 0 nombrada as por Hermann von Helmholtz, describe la propagacin

La ecuacin de Helmlholtz
de ondas y la solucin de dicha ecuacin es requerida para resolver problemas que se presentan en aeroacustica,
dispersin de ondas, problemas en geofsica etc.

En una dimensin, el problema est dado por

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.

Sustituyendo uxx por su representacin en diferencias nitas

ui1 2ui + ui+1


uxx
h2

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

en el dominio = [0, 1] y condiciones de frontera

u (0) = 1
u0 (1) = iku (1)

Dirichlet y Neumann respectivamente.

1
Basado en el trabajo [21]
2
Ms detalles en el apndice D
CAPTULO 5. APLICACIONES Y PRUEBAS 66

Figura 5.1.20: Solucin de la ecuacin de Helmholtz

El anlisis de los resultados, se muestran en la grca loglog

Figura 5.1.21: Grca loglog de la ecuacin de Helmholtz

5.2. Mtodo de Descomposicin de Dominio de Schur o Subestructuracin

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.

En particular se considera el problema con = [1, 1] [1, 1], donde

f = 2n2 2 sen (nx) sen (ny)


g = 0
CAPTULO 5. APLICACIONES Y PRUEBAS 67

cuya solucin analtica est dada por

u (x, y) = sen (nx) sen (ny)


Por ejemplo para n = 4, la solucin est dada por la ecuacin u (x, y) = sen (4x) sen (4y), cuya grca es

Figura 5.2.1: Solucin de la ecuacin de Poisson

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

31 33 y 150 150 7315s 4016s 2619s 1941s 1541s 1298s


31 33 y 200 200 ND 16037s 4916s 3166s 2688s 2295s
31 33 y 250 250 ND ND 26587s 8716s 6388s ND

En donde si usamos las mtricas de aceleracin y eciencia relativas (vese pendice A) obtenemos los
siguientes resultados

Subdominio Aceleracin(Speed Up) Aceleracin Esperada Eciencia

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

Comentarios Finales y Conclusiones


Los modelos matemticos de muchos sistemas de inters en Ciencias e Ingenieras, incluyendo una gran
cantidad de sistemas importantes de Ciencias de la Tierra conducen a una gran variedad de ecuaciones
diferenciales parciales, cuyos mtodos de resolucin estn basados en el procesamiento de sistemas algebraicos
de gran escala. Adems, la increble expansin experimentada por el hardware computacional existente,
ha hecho posible el efectivo tratamiento de problemas de un cada vez mayor incremento de diversidad y
complejidad que poseen las aplicaciones Cientcas y de Ingenieras.

Los mtodos de aproximacin analtica a la solucin de Ecuaciones Diferenciales Parciales, proporcionan


frecuentemente informacin til acerca del comportamiento de la solucin en valores crticos de la variable
dependiente, pero tienden a ser ms dciles de aplicar que los mtodos numricos. Entre las consideraciones
que justican el uso de los mtodos numricos para solucionar ecuaciones diferenciales parciales se encuentran:

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.

Los logros de este trabajo se pueden enumerar como:

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.

6.2. Trabajo Futuro

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.

Un trabajo futuro puede abarcar:

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:

La ecuacin de onda no lineal ut + uux = 0.


La ecuacin eikonal (ux ) + (uy )2 + (uz )2 = c2 F ,
2
la cual es una ecuacin que se encuentra en los
problemas de propagacin de ondas.

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.

Trabajar en la denicin del problema en mallas no estructuradas.

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.

Dado lo anterior, Flynn clasica los sistemas en cuatro categoras:

Single Instruction stream, Single Data stream (SISD)


Los sistemas de este tipo se caracterizan por tener un nico ujo de instrucciones sobre un nico ujo de
datos, es decir, se ejecuta una instruccin detrs de otra. Este es el concepto de arquitectura serie de Von
Neumann donde, en cualquier momento, slo se ejecuta una nica instruccin, un ejemplo de estos sistemas
son las mquinas secuenciales convencionales.

Single Instruction stream, Multiple Data stream (SIMD)


Estos sis-temas tienen un nico ujo de instrucciones que operan sobre mltiples ujos de datos. El pro-
cesamiento es sncrono, la ejecucin de las instrucciones sigue siendo secuencial como en el caso anterior,
todos los elementos realizan una misma instruccin pero sobre una gran cantidad de datos. Por este motivo
existir concurrencia de operacin, es decir, esta clasicacin es el origen de la mquina paralela. El funcio-
namiento de este tipo de sistemas es el siguiente. La unidad de control manda una misma instruccin a todas
las unidades de proceso (ALUs). Las unidades de proceso operan sobre datos diferentes pero con la misma
instruccin recibida.

70
APNDICE A. CMPUTO PARALELO 71

Multiple Instruction stream, Single Data stream (MISD)


Sistemas con mltiples instrucciones que operan sobre un nico ujo de datos.

Multiple Instruction stream, Multiple Data stream (MIMD)


Sistemas con un ujo de mltiples instrucciones que operan sobre mltiples datos. Estos sistemas empezaron
a utilizarse antes de la dcada de los 80s. Son sistemas con memoria compartida que permiten ejecutar varios
procesos simultneamente (sistema multiprocesador).

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:

Sistemas multiprocesador (fuertemente acoplados)

Sistemas multicomputadoras (dbilmente acoplados)

Equipo Paralelo de Memoria Compartida


Un multiprocesador o multicore puede verse como una computadora paralela compuesta por varios cores
interconectados que comparten un mismo sistema de memoria. Los sistemas multiprocesadores o multicores
son arquitecturas MIMD(Multiple Instruction Stream, Multiple Data Stream) con memoria compartida.
Tienen un nico espacio de direcciones para todos los procesadores y los mecanismos de comunicacin se
basan en el paso de mensajes desde el punto de vista del programador. Dado que los procesadores comparten
diferentes mdulos de memoria, pudiendo acceder a un mismo mdulo varios cores, a los multiprocesadores
tambin se les llama sistemas de memoria compartida.

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.

Equipo Paralelo de Memoria Distribuida


Los sistemas multicomputadoras se pueden ver como una computadora paralela en el cual cada core tiene
su propia memoria local. En estos sistemas la memoria se encuentra distribuida y no compartida como en
los sistemas multiprocesador. Los procesadores se comunican a travs de paso de mensajes, ya que stos slo
tienen acceso directo a su memoria local y no a las memorias del resto de los procesadores.
APNDICE A. CMPUTO PARALELO 72

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.

Equipo Paralelo de Memoria Compartida-Distribuida


La tendencia actual en las mquinas paralelas es de aprovechar las facilidades de programacin que ofrecen
los ambientes de memoria compartida y la escalabilidad de las ambientes de memoria distribuida. En este
modelo se conectan entre si mdulos de multiprocesadores, pero se mantiene la visin global de la memoria a
pesar de que es distribuida. El desarrollo de sistemas operativos y compiladores del dominio pblico (Linux
y software GNU), estndares para el pase de mensajes (MPI), conexin universal a perifricos (PCI), etc.
han hecho posible tomar ventaja de los econmicos recursos computacionales de produccin masiva (CPU,
discos, redes). La principal desventaja que presenta a los proveedores de multicomputadoras es que deben
satisfacer una amplia gama de usuarios, es decir, deben ser generales. Esto aumenta los costos de diseos
y produccin de equipos, as como los costos de desarrollo de software que va con ellos: sistema operativo,
compiladores y aplicaciones. Todos estos costos deben ser aadidos cuando se hace una venta. Por supuesto
alguien que slo necesita procesadores y un mecanismo de pase de mensajes no debera pagar por todos estos
aadidos que nunca usar.

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.

Remplazar un componente defectuoso en un cluster es relativamente trivial comparado con hacerlo en


un multiprocesador, permitiendo una mayor disponibilidad de clusters cuidadosamente diseados.

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.

Muchas aplicaciones importantes disponibles en multiprocesadores y optimizadas para ciertas arqui-


tecturas, no lo estn en clusters.

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.

Factor de Aceleracin(Speed Up)


Se dene como el cociente del tiempo que se tarda en completar el cmputo de la tarea usando un slo core
entre el tiempo que necesita para realizarlo en p procesadores trabajando en paralelo

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)

usando la ley de Amdahl

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

Mtodo de Descomposicin de Dominio de


Subestructuracin1
La solucin numrica por los esquemas tradicionales de discretizacin tipo deiferencias nitas generan una
discretizacin del problema, la cual es usada para generar un sistema de ecuaciones Ax = b.
Esta nica matriz puede ser paralelizada mediante el uso de memoria compartida y/o distribuida. En la
memoria compartida, la mejor opcin es openmp, vase[23], en el caso de memoria distribuida se utiliza
mpi, vase [24]. Existen otras formas de realizar la paralelizacin, la ms eciente es la tcnica que se aplica
a la discretizacin del problema mediante el mtodo de descomposicin de dominio de subestructuracin,
esta genera una descomposicin del sistema lineal Ax = b en mltiples sistemas lineales (vase seccin 4.5)
acoplados entre si, slo por los nodos que comparten en la discretizacin de los subdominios.

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

entonces, aplicando el Teorema de Green



(v a u + cuv) dx = vf dx

Deniendo el operador bilineal


a (u, v) = (v a u + cuv) dx

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

y el lado derecho como



Fj = f j dxdy

E
X
= f j dxdy
e=1

Si se considera el problema dado en la ecuacin B.0.1 en el dominio , el cual es subdividido en E subdominios


i con i = 1, 2, . . . , E sin traslape, tambin conocida como malla gruesa TH , es decir

\ n
[
i j = i 6= j = i
i=1

y al conjunto
E
[
= i si i = i /
i=1

se le llama la frontera interior del dominio .

Figura B.0.1: Dominios

Un ejemplo de un dominio y su descomposicin en subdominios i y cada i a su vez descompuesto en


E subdominios. Sin prdida de generalidas se toma g =0 en , ntese que siempre es posible poner el
problema de la B.0.1 como uno de condiciones de frontera Dirichlet que se nuliquen mediante la adecuada
manipulacin del trmino del lado derecho de la ecuacin.
APNDICE B. MTODO DE DESCOMPOSICIN DE DOMINIO DE SUBESTRUCTURACIN 77

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

los cuales satisfacen [


B = BI B
y
[
B = BJ BM

el espacio generado por cada uno de los subconjuntos B y B es D


f , sin embargo, ntese la propiedad de
que los miembros de B tienen soporte local. Se denen las bases
n o
BI = wI1 , . . . , wINI
n o
1 N
BM = wM , . . . , wM
n o
BJ = wJ1 , . . . , wJN

de las funcionales lineales i en.


Entonces deniendo para toda = 1, . . . , K , la matriz N N
hD Ei
A wIi , wIj

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.

De forma similar se denen

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)

queda expresado como


1 1

AII uI1AI u1 bI1
.. .. .. .. ..
. + . . = .

.
E
AII uIE AE uE bIE
I

uI1 u1 b1
 . .. = ..
A1I . . . AE

.
I . + A . .
uIE uE bE

o de manera compacta Au = b, ntese que las matrices Ai , AiI , AiI y AiII son matrices bandadas.

Si ahora tratamos de obtener uI de la primera ecuacin del sistema B.0.2 se obtiene

uI = (AII )1 (bI AI u )

sustituyendo en la segunda ecuacin del mismo sistema se obtiene


 
A AI (AII )1 AI u = b AI (AII )1 bI (B.0.3)

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

de forma adicional se dene


1
bi = bi AiI AiII bIi

El sistema dado por B.0.3 se escribe como


Su = b (B.0.4)

y queda denido de manera virtual a partir de

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

los nodos globales versus los nodos locales.

El sistema lineal virtual obtenido de B.0.4 se resuelve (dependiendo de si es o no simtrico) ecientemente


usando el mtodo de Gradiente Conjugado o alguna variante de GMRES, para ello no es necesario construir
APNDICE B. MTODO DE DESCOMPOSICIN DE DOMINIO DE SUBESTRUCTURACIN 79

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

con este resultado intermedio se debe calcular

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

completando la secuencia de operaciones necesarias para obtener Si yi .


APNDICE B. MTODO DE DESCOMPOSICIN DE DOMINIO DE SUBESTRUCTURACIN 80

Observacin 2. En el caso del clculo

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

multiplicando por AiII se obtiene


1
AiII y1 = AiII 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

y para nalizar, se obtiene


bi = bi y2

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

multiplicando por AiII a la ltima expresin se obtiene

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.

Para ms detalle, vase [14].


Apndice C

Crank-Nicolson 1D Para la Ecuacin de


Calor Scilab, C++ y MatLab
En este apndice se mostrar cmo resolver una ecuacin diferencial parcial en una dimensin con el esquema
de Crank-Nicolson, por ejemplo, la ecuacin de calor.

Consideremos el siguiente problema, que consiste en la ecuacin

ut = uxx

con = [0, 1], sujeta a las condiciones

u(0, t) = u(1, t) = 0

u(x, 0) = sen(x)

El cdigo del ejemplo, en C++, Scilab y MatLab puede obtenerse de la pgina:

http://mmc2.geosica.unam.mx/omb.

C.1. Scilab

El siguiente programa para el entorno SciLab (http://www.scilab.org/ ) es el encargado de resolver el problema


de la ecuacin de calor por diferencias nitas. Scilab es un software de cmputo numrico libre, el cual incluye
un lenguaje de programacin de alto nivel para poder crear scripts que se ejecutan en el entorno. Scilab es
multiplataforma (*nix, mac, windows) y posee cientos de funciones matemticas ya denidas, listas para
poder ser usadas por el desarrollador.

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

MatLab (http://www.mathworks.com/products/matlab/ ) es un entorno para cmputo cientco no libre, su-


mamente usado en el mundo. Ofrece un lenguaje de programacin de alto nivel. Contiene enorme cantidad
de funciones ya predenidas que el desarrollador puede utilizar al instante. Una de las ventajas de MatLab
es su enorme capacidad de ser ampliado y adecuarlo a las necesidades del usuario mediante los llamados tool-
boxes, que entre otras cosas ofrecen la capacidad de realizar: procesamiento de imgenes, anlisis de datos,
optimizacin, etc. La opcin de software libre de MatLab es Octave (http://www.gnu.org/software/octave/).
A continuacin se muestra el programa para resolver la ecuacin de calor en el entorno, mediante el uso de
su lenguaje de programacin.

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

Ecuacin de Adveccin con upwind en


python

D.1. Python

Python (www.python.org ) es un lenguaje moderno y multiparadigma de aprendizaje fcil y rpido por su


sintaxis clara y sencilla, se trata de un lenguaje interpretado de tipado dinmico. NumPy (Numerical Python,
www.numpy.org ) es una biblioteca open source para computo cientco. NumPy permite trabajar con vectores
y matrices de una manera ms natural. La biblioteca contiene una basta cantidad de funciones matemticas
tiles, incluyendo funciones de lgebra lineal, transformadas de Fourier, generadores de nmeros aleatorios,
etc. Matplotlib (www.matplotlib.org ) es una biblioteca de generacin de grcos para python, produce tales
grcos a partir de listas de python o vectores y matrices denidos en numpy.

D.2. Ejemplo

Tomemos la ecuacin
ut + 2ux = 0

en el dominio = [2, 8] y condicin inicial

2
u (x, 0) = e((x0.2) )

Esta ecuacin tiene la solucin analtica u (x, t) = u (x at, 0).


El problema se corri en 401 nodos a un paso de tiempo dt = 0.012 por 360 pasos de tiempo. El factor para
adt
que converja debe de cumplir = h < 1, se noto en este tipo de problemas que debe de ser muy cercano
a 1 para conseguir la mejor aproximacin.

# coding : u t f 8
"""
@a uth or : omar jonathan mendoza bernal

Upwind scheme for


u_t + a ( x ) u_x = 0

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

from math import exp


from scipy import sparse
import numpy as np
import matplotlib . pyplot as plt

# 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

# Particin del dominio


nNodos = 4 0 1
h = (b a ) / ( nNodos 1)

# Intervalo de tiempo
dt = 0 . 0 1 2

# creo el vector w donde se guradar la solucin para cada tiempo


# B matriz del lado derecho
w = np . z e r o s ( ( nNodos , 1 ) )
B = np . z e r o s ( ( nNodos , nNodos ) )
e s p a c i o = np . z e r o s ( ( nNodos , 1 ) )

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 " Espacio "


print espacio

print " Condicin Inicial"


APNDICE D. ECUACIN DE ADVECCIN CON UPWIND EN PYTHON 93

print w

mu = c o e f _ a dt / h

# Para una buena aproximacin


# mu d e b e ser muy cercano a 1
if mu <= 1 :
print "mu " , mu
print " Buena aproximacin "
else :
print "mu " , mu
print " Mala aproximacin "

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 ;

# se completa las matrices desde el renglon 2 hasta el m2


for i in xrange (1 , nNodos 1 ) :
B[ i , i ] = 1 + mu ;
B[ i , i +1] = mu ;

B [ nNodos 1 , nNodos 1] = 1 + mu

# para guardar la soulcin analitica


xx = np . z e r o s ( ( nNodos , 1 ) ) ;

iteraciones = 201

# Matriz sparse csr


Bs = s p a r s e . c s r _ m a t r i x (B ) ;

# Resolvemos el sistema iterativamente


for j in xrange (1 , iteraciones ):
t = j dt ;
w = Bs w ;

# Imprimir cada 20 iteraciones


if j %20 == 0 :
print "t " , t
print "w" , w
plt . plot ( espacio , w)

Grca de solucin del problema


APNDICE D. ECUACIN DE ADVECCIN CON UPWIND EN PYTHON 94

Figura D.2.1: Solucin de la ecuacin de adveccin


Apndice E

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.

La formulacin matemtica en un medio homogneo est dada por

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].

El desarrollo de aproximaciones numricas ecientes para la solucin de la ecuacin de Helmoltz con k


grandes, es un rea activa de la investigacin actual.

E.1. Ejemplo Numrico

Sea la ecuacin
uxx k 2 u = 0

en = (0, 1) y condiciones de frontera

u(0) = 1
u0 (1) = iku(1)

Discretizando la ecuacin, se obtiene


 
ui1 2ui + ui+1
k 2 ui = 0
h2
1
Con base en el trabajo [21]

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)

queda de la siguiente forma, s


u0 (b) + u(b) =

sustituyendo la derivada que aparece por su representacin en diferencia nita

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

sustituyendo los valores en E.1.1, es decir, = 1, = ik y = 0, por lo que se obtiene


   
1 1 ik f (1)
un1 + un =
h2 h 2 h 2

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

101 // p r i n t f (" z z ")


102 // d i s p ( z z )
103 // p r i n t f (" z z z ")
104 // d i s p ( z z z )

Figura E.1.1: Solucin de la ecuacin de Helmholtz


Apndice F

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:

x = im po rt dat a ( ' EspacioX . dat ' ) ;


y = im po rt dat a ( ' EspacioY . dat ' ) ;
z = i m p o r t d a t a ( ' Datos . dat ' ) ;

mesh ( x , y , z )
Este ejemplo es para una grca en 3D, donde

En 'x' se almacena los puntos de la particin del eje x

En 'y' se almacena los puntos de la particin del eje y

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

mesh(x,y,z) se encarga de generar la grca

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.

Вам также может понравиться