M´etodo de Diferencias Finitas para la Soluci´on de...

24
etodo de Diferencias Finitas para la Soluci´ on de Ecuaciones en Derivadas Parciales Jhon Jairo Ram´ ırez R. Carlos Andr´ es Vanegas G. Andr´ es Mauricio Villegas R. Universidad Eafit, Medell´ ın, Colombia 1. Introducci´ on La teor´ ıa de Ecuaciones en Derivadas Parciales (EDP) se ha convertido en uno de los campos de estudio m´ as importantes en matem´ aticas, debido a su frecuente aplicaci´ on en diferentes ´ areas de la f´ ısica, ingenier´ ıa y otras ciencias. Entre las EDP m´ as representativas se encuentran la Ecuaci´ on de Laplace, la Ecuaci´ on de Onda y la Ecuaci´ on de Calor. La Ecuaci´ on de Laplace modela la distribuci´ on de temperatura en estado estacionario para una regi´ on. Si u(x, y, z) representa la temperatura en un punto (x, y, z) en la regi´ on, la distribuci´ on se obtiene al solucionar la ecuaci´ on 2 u =0 Esta ecuaci´ on aparece en muchos otros problemas de la f´ ısica como: Potenciales Electrost´ aticos, Potenciales en Hidrodin´ amica y Potenciales Arm´ onicos en la Teor´ ıa de la Elasticidad. La Ecuaci´ on de Calor constituye una herramienta de gran utilidad para dar soluci´ on a problemas de flujo de calor en cuerpos determinados. Si u(x,y,z,t) es la temperatura en el punto (x, y, z), en un instante t, la ecuaci´ on es u t = k2 u Esta ecuaci´ on aparece tambi´ en en una gran variedad de problemas de la ısica matem´ atica: por ejemplo, la concentraci´ on de material en difusi´ on, la propagaci´ on de olas en canales de gran longitud, y la transmisi´ on en cables el´ ectricos [4]. En la termodin´ amica, la ecuaci´ on de calor puede ser aplicada en tres situaciones: cuerpos s´ olidos (tres dimensiones), placas (dos dimensiones), y barras (una dimensi´ on). La Ecuaci´ on de Onda surge al describir fen´ omenos relativos a la propagaci´ on de ondas en un medio continuo. Los estudios de ondas ac´ usticas, ondas de agua, 1

Transcript of M´etodo de Diferencias Finitas para la Soluci´on de...

Metodo de Diferencias Finitas para la Solucion de

Ecuaciones en Derivadas Parciales

Jhon Jairo Ramırez R.Carlos Andres Vanegas G.

Andres Mauricio Villegas R.Universidad Eafit, Medellın, Colombia

1. Introduccion

La teorıa de Ecuaciones en Derivadas Parciales (EDP) se ha convertido enuno de los campos de estudio mas importantes en matematicas, debido a sufrecuente aplicacion en diferentes areas de la fısica, ingenierıa y otras ciencias.Entre las EDP mas representativas se encuentran la Ecuacion de Laplace, laEcuacion de Onda y la Ecuacion de Calor.

La Ecuacion de Laplace modela la distribucion de temperatura en estadoestacionario para una region. Si u(x, y, z) representa la temperatura en un punto(x, y, z) en la region, la distribucion se obtiene al solucionar la ecuacion

∇2u = 0

Esta ecuacion aparece en muchos otros problemas de la fısica como: PotencialesElectrostaticos, Potenciales en Hidrodinamica y Potenciales Armonicos en laTeorıa de la Elasticidad.

La Ecuacion de Calor constituye una herramienta de gran utilidad para darsolucion a problemas de flujo de calor en cuerpos determinados. Si u(x, y, z, t)es la temperatura en el punto (x, y, z), en un instante t, la ecuacion es

ut = k∇2u

Esta ecuacion aparece tambien en una gran variedad de problemas de lafısica matematica: por ejemplo, la concentracion de material en difusion, lapropagacion de olas en canales de gran longitud, y la transmision en cableselectricos [4]. En la termodinamica, la ecuacion de calor puede ser aplicada entres situaciones: cuerpos solidos (tres dimensiones), placas (dos dimensiones), ybarras (una dimension).

La Ecuacion de Onda surge al describir fenomenos relativos a la propagacionde ondas en un medio continuo. Los estudios de ondas acusticas, ondas de agua,

1

ondas electromagneticas y vibraciones mecanicas estan basados en esta ecuacion[5]. Si u(x, y, t) representa la altura del punto (x, y) en el instante t, la ecuaciones

utt = c2(uxx + uyy)

La deduccion desde la fısica de las tres ecuaciones puede ser consultada en[4]. Las soluciones de estas tres ecuaciones pueden calcularse mediante metodosanalıticos o aproximarse mediante metodos numericos. Es el proposito de esteproyecto ilustrar el metodo numerico de diferencias finitas para el calculo dela solucion de las Ecuaciones de Calor y de Onda para el caso unidimensional,y comparar los resultados obtenidos mediante este metodo con los resultadosanalıticos, para un caso particular.

2. Planteamiento del Problema

La ecuacion de calor unidimensional ut = kuxx aplicarıa, por ejemplo, parael caso de una barra metalica larga y delgada, con aislamiento, ya que la tempe-ratura de cualquier seccion transversal serıa constante, debido a que el tiempoque tarda la temperatura en equilibrarse en distancias cortas se asume comodespreciable.

En este caso, si asumimos que la barra tiene una longitud l, una temperaturainicial f(x), y que los extremos se mantienen a temperatura cero, la distribucionde temperatura en la barra esta dada por la solucion del problema de valoresiniciales y en la frontera:

ut = kuxx 0 < x < l t > 0 (1)u(0, t) = 0 (2)u(l, t) = 0 (3)

u(x, 0) = f(x) 0 ≤ x ≤ l (4)

Este problema puede resolverse por medio del metodo analıtico de separacionde variables, que se explica en [4]. La solucion es:

u(x, t) =∞∑

n=1

[2l

∫ l

0

f(τ) sinnπτ

ldτ

]e(

nπl )2

kt sinnπx

l

En el caso de la Ecuacion de Onda, se supondra que la ecuacion representael movimiento de una cuerda elastica de longitud a sujeta por los extremos,eligiendo el eje x para representar la posicion original de la cuerda. Se suponeque dicha cuerda se pone en movimiento mediante alguna fuerza externa, deforma que empieza a vibrar en el plano horizontal, donde u = u(x, t) representael desplazamiento vertical en el punto x y en el instante t, siendo la ecuacionque verifica tal desplazamiento

2

∂2u

∂t2= c2 ∂2u

∂x2, 0 < x < a y 0 < t < b

Para obtener una solucion unica de esta ecuacion es preciso anadir tambienunas condiciones iniciales y de contorno apropiadas, que representaran distintostipos de fenomenos oscilatorios. Las condiciones de contorno deben reflejar quelos extremos de la cuerda son fijos, por lo que seran de la forma

u(0, t) = 0 = u(a, t) 0 < t < b

Como en la ecuacion de onda aparece una derivada de segundo orden respectoa t, hay que imponer dos condiciones iniciales respecto a ella. Estas puedenconsistir en fijar la posicion y la velocidad inicial de los puntos de la cuerda,expresandose

u(x, 0) = f(x) 0 ≤ x ≤ a

ut (x, 0) = g(x) 0 < x < a

Con el metodo de separacıon de variables se obtiene la siguiente solucion analıticaa la ecuacion de onda

u(x, t) =∞∑

n=1

(An cos

nπc

at + Bn sin

nπc

at)

sinnπx

a

dondeAn =

2a

∫ a

0

f(x) sinnπx

adx

y

Bn =2

nπc

∫ a

0

g(x) sinnπx

adx

3. Justificacion del uso de Metodos Numericosen la Solucion de EDP

Los metodos de aproximacion analıtica a la solucion de EDP, proporcionanfrecuentemente informacion util acerca del comportamiento de la solucion envalores crıticos de la variable dependiente, pero tienden a ser mas difıciles deaplicar que los metodos numericos. Entre las consideraciones que justifican eluso de metodos numericos para solucionar ciertos tipos de ecuaciones diferen-ciales ordinarias y en derivadas parciales se encuentran: 1) Los datos de losproblemas reales presentan siempre errores de medicion, y el trabajo aritmeticopara la solucion esta limitado a un numero finito de cifras significativas queresultan en errores de redondeo. Por lo tanto, incluso los metodos analıticosproporcionan resultados que son aproximaciones numericas; 2) La evaluacion

3

numerica de las soluciones analıticas es a menudo una tarea laboriosa y com-putacionalmente ineficiente, mientras que los metodos numericos generalmenteproporcionan soluciones numericas adecuadas, de manera mas simple y eficiente[6]. De los metodos de aproximacion numerica disponibles para resolver ecua-ciones diferenciales, los mas utilizados son el metodo de diferencias finitas y elmetodo de elementos finitos. En este proyecto solo se trabajo con el metodo dediferencias finitas.

4. Metodo de Diferencias Finitas

Sı u es una funcion de x con derivadas finitas y continuas, entonces por elteorema de Taylor se tiene que:

u(x + h) = u(x) + hU ′(x) +12h2u′′(x) +

16h3u′′′(x) + . . . (5)

y

u(x− h) = u(x)− hU ′(x) +12h2u′′(x)− 1

6h3u′′′(x) + . . . (6)

Al sumar estas expansiones se obtiene:

u(x + h) + u(x− h) = 2u(x) + h2u′′(x) + o(h)4 (7)

donde o(h4) denota los terminos que contienen potencias de h de orden 4 omayor. Asumiendo que estos terminos son pequenos en relacion con las potenciasmenores de h, se sigue que:

u′′(x) ' 1h2{u(x + h)− 2u(x) + u(x− h)} (8)

con un error de orden h2. Al restar la ecuacion (6) de la ecuacion (5), y despreciarlos terminos de orden h3 se obtiene:

u′(x) ' 12h{u(x + h)− u(x− h)} (9)

con un error de orden h2.La ecuacion (9) aproxima la pendiente de la tangente en el punto (x, u(x))

mediante la pendiente de la recta que pasa por los puntos (x − h, u(x − h)) y(x+h, u(x+h)). Esta aproximacion se conoce como aproximacion por diferenciacentral. Tambien se puede aproximar la pendiente de la tangente en (x, u(x))por la pendiente de la recta que pasa por los puntos (x, u(x)) y (x+h, u(x+h)).,obteniendo la aproximacion por diferencias regresivas

u′(x) ' 1h{u(x)− u(x− h)} (10)

o por la pendiente de la recta que pasa por los puntos (x − h, u(x − h)) y(x, u(x))., obteniendo la aproximacion por diferencias progresivas

u′(x) ' 1h{u(x + h)− u(x)} (11)

4

Ahora, tomemos una funcion u de las variables x y t. Subdividamos el planox− t en un conjunto de rectangulos iguales de lados δx = h y δt = k mediantelıneas igualmente espaciadas y paralelas al eje t, definidas por xi = ih, i =0,±1,±2, . . . y lıneas igualmente espaciadas y paralelas al eje x definidas poryj = jk, j = 0,±1,±2, . . . ,. Denotemos el valor de u en un punto P (ih, jk) dela malla como:

uP = uih,jk = ui,j

Entonces, por la ecuacion (8)(∂2u

∂x2

)P

=(

∂2u

∂x2

)i,j

' u{(i + h)h, jk} − 2u{ih, jk}+ u{(i− 1)h, jk}h2

que equivale a (∂2u

∂x2

)i,j

' ui+1,j − 2ui,j + ui−1,j

h2(12)

De manera similar, (∂2u

∂t2

)i,j

' ui,j+1 − 2ui,j + ui,j−1

k2(13)

De las ecuaciones (10) y (11) se sigue que dos aproximaciones para δu/δt en Pson

∂u

∂t' ui,j+1 − ui,j

k2(diferencias progresivas) (14)

∂u

∂t' ui,j − ui,j−1

k2(diferencias regresivas) (15)

5. Soluciones propuestas al Problema

Para la Ecuacion de Calor se plantean tres variantes del metodo de diferen-cias finitas: Diferencias Progresivas, Diferencias Regresivas y Metodo de Crank-Nicolson. Para la Ecuacion de Onda se emplea un metodo iterativo generado apartir de diferencias finitas.

5.1. Diferencias Finitas para la Ecuacion de Calor

Consideremos el problema planteado en las ecuaciones (2)-(4). De las ecua-ciones (14) y (12) se sigue que una aproximacion por diferencias finitas a

∂u

∂t= α2 ∂2u

∂x2

esui,j+1 − ui,j

k= α2 ui+1,j − 2ui,j + ui−1,j

h2(16)

5

donde u es la solucion exacta a las ecuaciones aproximadas, xi = ih, (i =0, 1, 2,m − 1 . . .), ti = jk, (j = 0, 1, 2, . . .) y m = l/h. La ecuacion (16) puedeser reescrita como

ui,j+1 = λui−1,j + (1− 2λ)ui,j + λui+1,j (17)

donde λ = α2(k/h2). Dado que la condicion inicial u(x, 0) = f(x), para todo0 ≤ x ≤ l, implica que ui,0 = f(xi), para toda i = 0, 1, 2, . . . ,m, podemosusar estos valores en la ecuacion (17) para calcular el valor de ui,1 para todai = 1, 2, . . . ,m − 1. Las condiciones iniciales u(0, t) = 0 y u(l, t) = 0 implicanque u0,1 = um,1 = 0 y, por tanto, podemos determinar todos los elementos dela forma ui,1. Ya conocidas todas las aproximaciones ui,1 se pueden obtener,siguiendo un procedimiento semejante, los valores ui,2, ui,3, . . .

Si hacemos u(0) = (f(x1), f(x2), . . . , f(xm−1))t y u(j) = (u1j , u2j , . . . , um−1,j)t,para todo j = 1, 2, . . . , se puede plantear matricialmente este metodo de solucioncomo:

u(j) = Au(j−1) , para todo j = 1, 2, . . .

donde A es la siguiente matriz tridiagonal

A =

(1− 2λ) λ 0 . . . . . . . . . . . . . 0

λ (1− 2λ) λ. . .

...

0. . .

......

. . . 0...

. . . λ (1− 2λ) λ0 . . . . . . . . . . . . . 0 λ (1− 2λ)

w(j) se obtiene para w(j−1) por una multiplicacion simple de matrices. A

esto se le conoce con el nombre de metodo de diferencias progresivas. A pesarde la simplicidad para obtener soluciones, el metodo es inestable para λ > 1/2.Por tanto se propone un segundo metodo. Una discusion mas amplia sobre elproblema de estabilidad se presenta en [1].

Si en la ecuacion (16) reemplazamos el lado izquierdo por (15) se obtiene lasiguiente aproximacion en diferencias finitas a la ecuacion de calor

ui,j − ui,j−1

k= α2 ui+1,j − 2ui,j + ui−1,j

h2(18)

Que se puede reescribir como

(1 + 2λ)ui,j − λui+1,j − λui−1,j = ui,j−1 (19)

Aplicando el hecho de que wi,0 = f(xi) para toda i = 1, 2, . . . ,m− 1 y wm,j =w0,j = 0 para toda j = 1, 2, . . ., este metodo de diferencias tiene la repre-

6

sentacion matricial:

(1 + 2λ) −λ 0 . . . . . . . . . . . . . 0

−λ (1 + 2λ) −λ. . .

...

0. . .

......

. . . 0...

. . . −λ (1 + 2λ) −λ0 . . . . . . . . . . . . . 0 −λ (1 + 2λ)

w1,j

w2,j

...wm−1,j

=

w1,j−1

w2,j−1

...wm−1,j−1

(20)o Aw(j) = w(j+1) para toda j = 1, 2, . . .

Ası debemos resolver ahora un sistema lineal para obtener w(j) a partir dew(j−1). Este metodo se conoce como el metodo de diferencias regresivas, y esestable para cualquier λ.

Dado que λ > 0, la matriz A es definida positiva y estrictamente dominanteen forma diagonal, ademas de ser tridiagonal. Para resolver este sistema, pode-mos emplear la factorizacion LU de Crout para sistemas lineales tridiagonales.En este algoritmo suponemos, para propositos de detencion o paro, que se dauna cota para t [1].

Con el metodo de diferencias regresivas se soluciono el problema de estabi-lidad. Sin embargo, para evitar la falta de precision, generada por el error detruncamiento, se requiere que los intervalos de tiempo sean mucho mas pequenosque los de espacio (h >> k), y esto reduce su eficiencia. Por tanto, se hace nece-sario un metodo que permita tomar valores similares para h y k, y que ademassea estable para todo λ. Este metodo se puede obtener al promediar el metodode diferencias progresivas en el j-esimo paso en t,

ui,j+1 − ui,j

k= α2 ui+1,j − 2ui,j + ui−1,j

h2

y el metodo de diferencias regresivas en el (j + 1)-esimo paso en t

ui,j+1 − ui,j

k= α2 ui+1,j+1 − 2ui,j+1 + ui−1,j+1

h2

Entonces se tiene que una aproximacion por diferencias para la ecuacion de calores

ui,j+1 − ui,j

k=

α2

2

[ui+1,j − 2ui,j + ui−1,j

h2+

ui+1,j+1 − 2ui,j+1 + ui−1,j+1

h2

]que puede ser reescrito como

−λ

2ui−1,j+1 + (1 + λ)ui,j+1 −

λ

2ui+1,j+1 =

λ

2ui−1,j + (1− λ)ui,j +

λ

2ui+1,j

7

Al metodo generado por esta aproximacion se le llama metodo de Crank-Nicolson y esta representado de forma matricial como

Aw(j+1) = Bw(j) (21)

donde

A =

(1 + λ) −λ2 0 . . . . . . . . . . . . 0

−λ2 (1 + λ) −λ

2

. . ....

0. . .

......

. . . 0...

. . . −λ2 (1 + λ) −λ

2

0 . . . . . . . . . . . . 0 −λ2 (1 + λ)

y

B =

(1− λ) λ2 0 . . . . . . . . . . . . 0

λ2 (1− λ) λ

2

. . ....

0. . .

......

. . . 0...

. . . λ2 (1− λ) λ

2

0 . . . . . . . . . . . . 0 λ2 (1− λ)

Para obtener wj+1 a partir de wj+1, se debe resolver el sistema planteadoen (21).La matriz A es definida positiva, estrictamente dominante en formadiagonal y tridiagonal. Para resolver este sistema, se puede usar la factorizacionLU de Crout para sistemas lineales tridiagonales. Al igual que en el metodo dediferencias regresivas, en este algoritmo se supone, para propositos de detenciono paro, que se da una cota para t.

5.2. Diferencias Finitas para la Ecuacion de Onda

El dominio de la ecuacion diferencial parcial de onda esta dado por elrectangulo R = {(x, t) : 0 ≤ x ≤ a, 0 ≤ t ≤ b}, a partir del cual se inducira unaparticion, generando ası una malla que consta de n − 1 por m − 1 rectangulosde lados ∆x = h y ∆t = k.

Definido el tamano de la malla, se establece la siguiente notacion

u(x, t) = ui,j

u(x + h, t) = ui+1,j

u(x− h, t)) = ui−1,j

u(x, t + k)) = ui,j+1

u(x, t− k)) = ui,j−1

8

Se usara la ecuacion en diferencias para calcular los valores sucesivos que seaproximen a la solucion exacta, que en los puntos de la malla es u(xi, tj). Paracada j = 2, 3, ...,m se calculara

{ui,j ≈ u(xi, tj) : i = 1, 2, ..., n}.

Teniendo en cuenta la notacion establecida anteriormente, y las expresiones (12)y (13) se construye la ecuacion en diferencias

ui,j+1 − 2ui,j + ui,j−1

k2= c2 ui+1,j − 2ui,j + ui−1,j

h2(22)

Al hacer α =ck

hen (22), se obtiene

ui,j+1 − 2ui,j + ui,j−1 = α2(ui+1,j − 2ui,j + ui−1,j) (23)

Al resolver para ui,j+1, o sea, la aproximacion mas avanzada del paso del tiempo,y reordenar los terminos, se tiene

ui,j+1 = (2− 2α2)ui,j + α2(ui+1,j + ui−1,j)− ui,j−1 (24)

La ecuacion (24) es aplicable para i = 2, 3, ..., n − 1 y j = 2, 3, ...,m − 1. Estaexpresion sigiere que el (j + 1)-esimo paso de tiempo requiere de los j-esimo ylos (j − 1)-esimo pasos. Los valores del (j − 1)-esimo paso vienen dados por lascondiciones iniciales ui,1 = f(xi). sin embargo, los valores del j-esimo paso nose suelen proporcionar, por lo que se usa g(x) para conseguir los valores de estepaso.

Un algoritmo es estable si el error cometido en una etapa no se amplıa en lasetapas posteriores. para garantizar la estabilidad de este metodo es necesario

que α =ck

h≤ 1.

Se desarrolla el polinomio de taylor de orden uno para u(x, t) alrededor de(xi, 0).

u(xi, k) = u(xi, 0) + ut(xi, 0)k + O(k2) (25)

Se aplica el hecho de que u(xi, 0) = f(xi) = fi y ut(xi, 0) = g(xi) = gi en (22),para obtener aproximacioines numericas en el j-esimo paso (se sabe que t2 = k)

ui,2 = fi + kgi para i = 2, 3, . . . , n− 1 (26)

Ya que la formula (26) es una aproximacion lineal a los valores del j-esimo paso,el error de truncamiento introducido al usarla es significativo. Por lo tanto,para evitar que los valores ui,2 calculados con la formula (23) introduzcan en elproceso un error considerable, se debe elegir un tamano de paso k pequeno encomparacion con h.

En el caso de que f(x) sea dos veces derivable en el intervalo 0 ≤ x ≤ a, sepodrıa obtener una mejor aproximacion a ui,2. Se sabe que uxx(x, 0) = f ′′(x),igualdad que permite desarrollar la formula de Taylor de orden dos para obtener

9

una aproximacion mejorada de los valores del j-esimo paso. Si se toma comox = xi y t = 0 en la ecuacion diferencial parcial de onda, se obtiene

utt(xi, 0) = c2uxx(xi, 0) = c2f ′′(xi) = c2 fi+1 − 2fi + fi−1

h2+ O(h2) (27)

En la formula anterior se uso el hecho de que f ′′(xi) =fi+1 − 2fi + fi−1

h2, lo

cual podrıa ser sustentado en el desarrollo de la formula (7). Ahora se desarrollael polinomio de Taylor de grado dos

u(x, k) = u(x, 0) + ut(x, 0)k + 12utt(x, 0)k2 + O(k3) (28)

Al hacer x = xi en (28) y al aplicar las expresiones (26) y (27) en esta misma

u(xi, k) = fi + kgi +c2k2

2h2(fi+1 − 2fi + fi − 1) + O(h2)O(k2) + O(k3) (29)

Ya que α =ck

h, la formula (29) se puede simplificar, a fin de obtener aproxima-

ciones mejoradas para el j-esimo paso.

ui,2 = (1− α2)fi + kgi +α2

2(fi+1 + fi−1) para i = 2, 3, ..., n− 1. (30)

A partir de estos resultados, se puede desarrollar un algoritmo iterativo en el queun paso subsiguiente se resuelve a partir de los dos inmediatamente anteriores.

5.3. Algoritmos

A continuacion se presentan los pseudocodigos de las tres variantes del meto-do de Diferencias Finitas para la ecuacion de calor, y del metodo de DiferenciasFinitas para la ecuacion de onda. Se anexa a este trabajo la implementacion deestos pseudocodigos en MATLAB r©.

10

Algoritmo 1 Metodo de diferencias progresivasEntrada: extremo l; tiempo maximo T ; constante α; enteros m >= 3, n >= 1.Salida: aproximaciones ui,j a u(xi, tj) para toda i = 1, . . . ,m − 1 y j =

1, . . . , N .1: h = l/m, k = T/N , λ = α2k/h2, um, j = 0 Para j = 0, . . . , N , vm = 02: Para i = 1, . . . ,m− 1 Haga3: ui,0 = f(ih) (Calculo de valores iniciales)4: Fin5: Para j = 1, . . . , N Haga6: t = jk7: u1.j = (1− 2λ)v1 + λv2

8: Para i = 2, . . . ,m− 1 Haga9: ui,j = (1− 2λ)vi + λ(vi+1 + vi−1)

10: Fin11: Para i = 1, . . . ,m− 1 Haga12: vi = ui,j

13: Fin14: Fin15: Muestre u

Algoritmo 2 Metodo de las diferencias regresivasEntrada: extremo l; tiempo maximo T ; constante α; enteros m >= 3, n >= 1.Salida: aproximaciones ui,j a u(xi, tj) para toda i = 1, . . . ,m − 1 y j =

1, . . . , N .1: h = l/m; k = T/N ; λ = α2k/h2.2: Para i = 1, . . . ,m− 1 Haga3: ui,0 = f(ih) (Calculo de valores iniciales)4: Fin5: Li = 1+2λ, U1 = −λ/L1 (Los pasos 5-20 solucionan el sistema tridiagonal)6: Para i = 2, . . . ,m− 2 Haga7: Li = 1 + 2λ + λUi−1

8: Ui = −λ/Li

9: Fin10: lm−1 = 1 + 2λ + λUm−2

11: Para j = 1, . . . , N Haga12: t = jk, z1 = u1,j−1/L1

13: Para i = 2, . . . ,m− 1 Haga14: zi = (ui,j−1 + λzi−1)/Li

15: Fin16: um−1,j = zm−1

17: Para i = m− 2, . . . , 1 Haga18: ui,j = zi − Uiui+1,j

19: Fin20: Fin21: Muestre u

11

Algoritmo 3 Metodo de Crank-NicolsonEntrada: extremo l; tiempo maximo T ; constante α; enteros m >= 3, n >= 1.Salida: aproximaciones ui,j a u(xi, tj) para toda i = 1, . . . ,m − 1 y j =

1, . . . , N .1: h = l/m, k = T/N , λ = α2k/h2, um, j = 0 Para j = 0, . . . , N2: Para i = 1, . . . ,m− 1 Haga3: ui,0 = f(ih) (Calculo de valores iniciales)4: Fin5: Li = 1+λ, U1 = −λ/(2L1) (Los pasos 5-21 solucionan el sistema tridiagonal)6: Para i = 2, . . . ,m− 2 Haga7: Li = 1 + λ + λUi−1/28: Ui = −λ/(2Li)9: Fin

10: lm−1 = 1 + λ + λUm−2/211: Para j = 1, . . . , N Haga12: t = jk

13: z1 =[(1− λ)u1,j−1 +

λ

2u2,j−1

]/L1

14: Para i = 2, . . . ,m− 1 Haga

15: zi =[(1− λ)ui,j−1 +

λ

2(ui+1,j−1 + ui−1,j−1 + zi−1)

]16: Fin17: um−1,j = zm−1

18: Para i = m− 2, . . . , 1 Haga19: ui,j = zi − Uiui+1,j

20: Fin21: Fin22: Muestre u

Algoritmo 4 Metodo de diferencias finitas para la ecuacion de calorEntrada: u(x, 0) = f(x), ut(x, 0) = g(x), a, b, c, n, m.Salida: U , matriz con la solucion numerica.1: h = a/(n− 1),k = b/(m− 1),α = ck/h, Ui,j = 0 Para todo i, j2: Para i = 2, 3, . . . , n− 1 Haga3: Ui,1 = f(h(i− 1))

4: Ui,2 = (1− α2)f(h(i− 1)) + kg(h(i− 1)) +α2

2(f(hi) + f(h(i− 2)))

5: Fin6: Para j = 3, 4, . . . ,m Haga7: Para i = 2, 3, . . . , n− 1 Haga8: Ui,j = (2− 2α2)Ui,j−1 + α2(Ui−1,j−1 + Ui+1,j−1)− Ui,j−2

9: Fin10: Fin

12

6. Ejemplos

Se presentan dos ejemplos con el proposito de comparar los resultados analıticoscon los resultados obtenidos con el metodo de diferencias finitas.

6.1. Ejemplo Ecuacion de Calor

Presentamos los resultados de la ecuacion de calor para unas condicionesiniciales y de frontera determinadas, obtenidos mediante cuatro metodos dife-rentes: analıtico, diferencias progresivas, diferencias regresivas y Crank Nicolson.

Supongamos que se quiere determinar la distribucion de temperatura encualquier instante t de una barra de cobre (α ≈ 1) con l = 1, que presenta unafuncion de temperatura inicial dada por f(x) = sin(π ∗ x). Mediante un proce-dimiento matematico puede verificarse que la solucion analıtica a este problemaesta dada por

u(x, t) = e−π2t sin(πx)

Para calcular las soluciones utilizando los tres metodos numericos menciona-dos, se establecieron los valores de las constantes que intervienen en los algorit-mos que se presentaron anteriormente: m = 10, N = 100, T = 10, y se ejecutaronlas rutinas escritas en MATLAB para cada uno de los metodos. En las tablas sepresentan los valores de la distribucion de temperatura de la barra en t = 0,25,calculados por los metodos de diferencias regresivas, diferencias progresivas yCrank-Nicolson respectivamente.

Notese que el porcentaje de error en Crank-Nicolson es de 1.8 % mientrasque el de diferencias regresivas es de 14.2 %, y que el metodo de diferencias pro-gresivas no converge para el valor de lambda utilizado (λ = 1). Estos resultadosson coherentes con lo que se esperaba. En la tabla 2 se presentan los valorescalculados con el metodo de diferencias progresivas con λ = 0,1, que se obtuvoal disminuir diez veces el valor de k. Si recordamos que k es el paso para t,podemos ver que lo que se hizo fue refinar el calculo de los valores en el tiempo.

13

Diferencias Progresivas Error relativoxi u(xi, 0,25)× 10−2 upi,500 × 10−2 |up− u|/u× 10−2

0.0 0 00.1 2.621 2.658 1.4320.2 4.985 5.056 1.4320.3 6.861 6.959 1.4320.4 8.065 8.181 1.4320.5 8.480 8.602 1.4320.6 8.065 8.181 1.4320.7 6.861 6.959 1.4320.8 4.985 5.056 1.4320.9 2.621 2.658 1.4321.0 0 0

Tabla 1: Valores de la distribucion de temperatura de la barra en t = 0,25calculados por el metodo de sustitucion progresiva(h = 0,1, k = 0,0005, λ = 0,05

Diferencias Progresivas Error relativoxi u(xi, 0,33)× 10−2 upi,33 × 10−2 |up− u|/u× 10−2

0.0 0 00.1 1.190 -1.581 232.80.2 2.263 6.900 204.90.3 3.115 -4.025 229.20.4 3.662 0.980 199.80.5 3.850 -4.748 223.30.6 3.662 0.753 193.60.7 3.115 -3.657 217.40.8 2.263 6.531 188.60.9 1.190 -1.353 213.71.0 0 0

Tabla 2: Valores de la distribucion de temperatura de la barra en t = 0,33calculados por el metodo de sustitucion progresiva(h = 0,1, k = 0,01, λ =

14

Diferencias Regresivas Error relativoxi u(xi, 0,25)× 10−2 uri,25 × 10−2 |ur − u|/u× 10−2

0.0 0 00.1 2.621 2.993 14.190.2 4.985 5.692 14.180.3 6.861 7.835 14.200.4 8.065 9.210 14.200.5 8.480 9.684 14.200.6 8.065 9.210 14.200.7 6.861 7.835 14.200.8 4.985 5.692 14.180.9 2.621 2.993 14.191.0 0 0

Tabla 3: Valores de la distribucion de temperatura de la barra en t = 0,25calculados por el metodo de sustitucion regresiva (h = 0,1, k = 0,01, λ = 1)

Crank-Nicolson Error relativoxi u(xi, 0,25)× 10−2 uci,25 × 10−2 |uc− u|/u× 10−2

0.0 0 00.1 2.621 2.669 1.8440.2 4.985 5.077 1.8440.3 6.861 6.987 1.8440.4 8.065 8.214 1.8440.5 8.480 8.637 1.8440.6 8.065 8.214 1.8440.7 6.861 6.987 1.8440.8 4.985 5.077 1.8440.9 2.621 2.669 1.8441.0 0 0

Tabla 4: Valores de la distribucion de temperatura de la barra en t = 0,25calculados por el metodo de Crank-Nicolson(h = 0,1, k = 0,01, λ = 1)

15

xi ui,21 E0.0 0 00.1 0.3090169944 5.55e-0170.2 0.5877852523 2.22e-0160.3 0.8090169944 0.00000000.4 0.9510565163 3.33e-0160.5 1.0000000000 0.00000000.6 0.9510565163 1.11e-0160.7 0.8090169944 0.00000000.8 0.5877852523 0.00000000.9 0.3090169943 5.55e-0171.0 0 0

Tabla 5: Valores de la altura de la cuerda en t = 1 calculados por el metodo dediferencias finitas(h = 0,1, k = 0,05)

6.2. Ejemplo Ecuacion de Onda

Se ha dicho que el metodo descrito genera soluciones confiables cuandoα = ck/h ≤ 1. Una forma de evaluar el metodo es simplemente comparando, enun caso especifico, la solucion aproximada con la verdadera.

Considerese la ecuacion

∂2u

∂t2= 4

∂2u

∂x2, 0 < x < 1 y 0 < t < 1

con las condiciones de frontera

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

y con las condiciones iniciales

u(x, 0) = sen(πx), 0 ≤ x ≤ 1 y ut(x, 0) = 0, 0 ≤ x ≤ 1

La ecuacion de onda cuenta con procedimientos analıticos que permiten ha-llar su solucion, por lo que sera facil verificar que la solucion a este problemaes

u(x, t) = sen(πx)cos(2πt)

se emplea el algoritmo desarrollado en la seccion anterior con n = 11, m = 21,lo cual significa que h = 0,1, k = 0,05 y α = 1. En la tabla 5 se comparanlos resultados obtenidos con la solucion numerica y la analıtica para t = 1, yse muestra el error absoluto que nos indica el numero de cifras correctas halla-das con la aproximacion numerica. En el peor de los casos, se entrego dieciseisdecimales corectos.

16

7. Conclusion y Trabajo Posterior

Las Ecuaciones en Derivadas Parciales constituyen uno de los principalescampos de estudio en matematicas, debido a su creciente aplicacion en fısica,ingenierıa y otras ciencias. Se ha visto que por lo general la solucion de una EDPno es expresable en terminos de funciones elementales, lo que dificulta el calcu-lo de las soluciones analiticas. Por lo tanto es recomendable emplear metodosnumericos para resolver EDP cuando, para fines practicos, basta generar solu-ciones aproximadas, pero de manera eficiente. El Metodo de Diferencias Finitases una herramienta util para calcular aproximaciones a las soluciones de algunasEDP, en particular la Ecuacion de Calor y la Ecuacion de Onda.

Para el caso de la ecuacion de Calor se observo que generalmente el metodomas adecuado es el de Crank Nicolson, debido a que presento el menor errorrelativo para los ejemplos desarrollados, y a que su convergencia no depende delvalor de λ utilizado. En el caso de la ecuacion de Onda, el metodo de diferenciasfinitas desarrollado presenta convergencia siempre que α ≤ 1.

Como trabajo posterior para el tema aquı desarrollado, se propone la ex-pansion de las variantes del metodo de Diferencias Finitas al caso dos y tresdimensional para la ecuacion de calor, y dos dimensional para la ecuacion deonda. La implementacion del metodo para estos casos ampliarıa su aplicabilidada problemas como el flujo de calor en laminas y solidos, y la vibracion de unamembrana elastica. Por otra parte, se propone el uso del metodo de elementosfinitos como metodo alternativo que permita, entre otras cosas, aplicar las ecua-ciones de Calor y Onda a membranas y solidos con formas irregulares, como losque generalmente se encuentran en aplicaciones industriales.

Referencias

[1] Burden, R. and Faires, J. Analisis Numerico. Thomson Learning, Mexico,D.F. 2002

[2] Harrel, E. and Herod, J. Linear Methods of Applied Mathematics. 1996.Tomado de: http://www.mathphysics.com/pde/HEderiv.html

[3] Mathews, J. and Fink, K. Metodos numericos con Matlab. Prentice Hall.Madrid. 1999.

[4] Myint-U, T. Partial differential equations o mathematical physics. ElservierNorth-Holland, New York. 1978.

[5] Serway, R. and Beichner, FISICA para ciencias e ingenierıa I. Mc GrawHill. Mexico. 2001.

[6] Smith, G. Numerical Solution of Partial Differential Equations: Finite Dif-ference Methods. Oxford University Press, New York.1999.

17

Anexos (Codigos en Matlab)

Metodo de diferencias progresivas

%Metodo de diferencias progresivas%La matriz W contiene los resultados del metodo. Las columnas corresponden%a la variacion en el tiempo, y las filas a la variacion en x.clearclose allclc%Entrada de datosPreguntas={’Longitud de la barra: ’

’Limite de Tiempo’’Numero de particiones en el tiempo’’Numero de particiones en x’’Coeficiente alfa’’Funcion de temperatura inicial’};

Titulo = ’Entrada de Datos (Metodo de diferencias progresivas)’;Defecto = {’1’, ’0.40’ , ’40’ , ’10’ , ’1’ , ’sin(pi*x)’};datos=inputdlg(Preguntas, Titulo, 1, Defecto);L=str2num(datos{1});T=str2num(datos{2});N=str2num(datos{3});m=str2num(datos{4});alfa=str2num(datos{5});f=datos{6};%Incializacionh=L/m;k=T/N;lambda=alfa^2*k/h^2;v(m,1)=0;w(m,1)=0;W=[];x=sym(’x’);%Obtencion de la solucion%Obtencion de los resultadosfor(i=1:m-1)

x=i*h;v(i,1)=eval(f);

endW=[W;v’];for j=1:N

t=j*k;w(1,1)=((1-2*lambda)*v(1,1)+lambda*v(2,1));for i=2:m-1

w(i,1)=(1-2*lambda)*v(i,1)+lambda*(v(i+1,1)+v(i-1,1));

18

endv=w;W=[W;v’];

end%Graficacion de los resultadosnum_rows=size(W,1);zeros_col=zeros(num_rows,1);W=[zeros_col W];plot(W(1,:));limites=axis;maximo=limites(4);for(a=2:size(W,1))

plot(W(a,:))limites=[1 m+1 0 maximo];axis(limites);pause(0.01)

endtitle(’Temperatura vs. x’)ylabel(’u(x)’)xlabel(’x’)figuresurf(W)title(’Superficie de Distribucion de Temperatura’)ylabel(’t’)xlabel(’x’)zlabel(’u(x,t)’)shading interp

Metodo de diferencias regresivas

%Metodo de diferencias regresivas. W contiene la matriz con la solucion%La matriz W contiene los resultados del metodo. Las columnas corresponden%a la variacion en el tiempo, y las filas a la variacion en x.close allclear allclc%Entrada de datosPreguntas={’Longitud de la barra: ’

’Limite de Tiempo’’Numero de particiones en el tiempo’’Numero de particiones en x’’Coeficiente alfa’’Funcion de temperatura inicial’};

Titulo = ’Entrada de Datos (Metodo de diferencias progresivas)’;Defecto = {’1’, ’0.40’ , ’40’ , ’10’ , ’1’ , ’sin(pi*x)’};datos=inputdlg(Preguntas, Titulo, 1, Defecto);

19

l=str2num(datos{1});T=str2num(datos{2});N=str2num(datos{3});m=str2num(datos{4});alpha=str2num(datos{5});f=datos{6};x=sym(’x’);%Inicializacionh=l/m;k=T/N;lambda=((alpha^2)*k)/h^2;W=[];w=[];%Obtencion de la solucionfor(i=1:m-1)

x=i*h;w(1,i)=eval(f);

endW=[W;w];L=[];u=[];L(1)=1+2*lambda;u(1)=-lambda/L(1);for(i=2:m-2)

L(i)=1 + 2*lambda + lambda*u(i-1);u(i)=-lambda/L(i);

endL(m-1)=1 + 2*lambda + lambda*u(m-2);for(j=1:N)

t=j*k;z=[];z(1)=w(1)/L(1);for(i=2:m-1)

z(i)=(w(i) + lambda*z(i-1))/L(i);endw(m-1)=z(m-1);for(i=m-2:-1:1)

w(i)=z(i) - u(i)*w(i+1);endW=[W;w];

end%Grafica da la solucionnum_rows=size(W,1);zeros_col=zeros(num_rows,1);W=[zeros_col W zeros_col];plot(W(1,:));

20

limites=axis;maximo=limites(4);for(a=2:size(W,1))

plot(W(a,:))limites=[1 m+1 0 maximo];axis(limites);pause(0.01)

endtitle(’Temperatura vs. x’)ylabel(’u(x)’)xlabel(’x’)figuresurf(W)title(’Superficie de Distribucion de Temperatura’)ylabel(’t’)xlabel(’x’)zlabel(’u(x,t)’)shading interp

Metodo de Crank-Nicolson

%Metodo de crank-nicoloson%La matriz W contiene los resultados del metodo. Las columnas corresponden%a la variacion en el tiempo, y las filas a la variacion en x.clearclose allclc%Entrada de datosPreguntas={’Longitud de la barra: ’

’Limite de Tiempo’’Numero de particiones en el tiempo’’Numero de particiones en x’’Coeficiente alfa’’Funcion de temperatura inicial’};

Titulo = ’Entrada de Datos (Metodo de diferencias progresivas)’;Defecto = {’1’, ’0.40’ , ’40’ , ’10’ , ’1’ , ’sin(pi*x)’};datos=inputdlg(Preguntas, Titulo, 1, Defecto);L=str2num(datos{1});T=str2num(datos{2});N=str2num(datos{3});m=str2num(datos{4});alfa=str2num(datos{5});f=datos{6};%Incializacionh=L/m;k=T/N;

21

lambda=alfa^2*k/h^2;v(m,1)=0;W=[];x=sym(’x’);%Obtencion de los resultadosfor(i=1:m-1)

x=i*h;v(i,1)=eval(f);

end%v(1:m-1,1)=(subs(f,(1:m-1)*h))’;W=[W;v’];l(1,1)=1+lambda;u(1,1)=-lambda/(2*l(1,1));for i=2:m-2

l(i,1)=1+lambda+lambda*u(i-1,1)/2;u(i,1)=-lambda/(2*l(i,1));

endl(m-1,1)=1+lambda+lambda*u(m-2,1)/2;for j=1:N

t=j*k;z(1,1)=((1-lambda)*v(1,1)+lambda/2*v(2,1))/l(1,1);for i=2:m-1

z(i,1)=((1-lambda)*v(i,1)+lambda/2*(v(i+1,1)+v(i-1,1)+z(i-1,1)))/l(i,1);endv(m-1,1)=z(m-1,1);for i=m-2:-1:1

v(i,1)=z(i,1)-u(i,1)*v(i+1,1);endW=[W;v’];

end%Graficacion de la solucionnum_rows=size(W,1);zeros_col=zeros(num_rows,1);W=[zeros_col W];plot(W(1,:));limites=axismaximo=limites(4);for(a=2:size(W,1))

plot(W(a,:))limites=[1 m+1 0 maximo];axis(limites);pause(0.01)

endtitle(’Temperatura vs. x’)ylabel(’u(x)’)xlabel(’x’)

22

figuresurf(W)title(’Superficie de Distribucion de Temperatura’)ylabel(’t’)xlabel(’x’)zlabel(’u(x,t)’)shading interp

Metodo de diferencias finitas para la ecuacion de onda

function U = onda (f,g,a,b,c,n,m)%’sin(pi*x)+sin(2*pi*x)’,’0’,1,0.5,2,11,21%Datos% - f=u(x,0) se entra como una cadena de carcteres.% - g=ut(x,0) se ingresa como una cadena de caracteres.% - a y b son los extremos superiores de los intervalos [0,a] y [0,b]% - c es la constante de la ecuacion de onda.% - n y m es el numero de nodos en [0,a] y [0,b]%Resultado% - U es la matriz con los respectivos resultados.format long g;close all;h=a/(n-1);k=b/(m-1);alfa=c*k/h;alfa2=alfa^2;alfa22=(alfa2)/2;s1=1-alfa2;s2=2*s1;U=zeros(n,m);%se calculan las primeras filas (j-esimo y (j-1)-esimo paso)for i=2:n-1

x=h*(i-1);U(i,1)=eval(f); %f esta en funcion de xx=h*i;evaluar1=eval(f);x=h*(i-2);evaluar2=eval(f);x=h*(i-1);U(i,2)=s1*eval(f)+k*eval(g)+alfa22*(evaluar1+evaluar2);

end%Calculos de las otras filasfor j=3:m

for i=2:(n-1)U(i,j)=s2*U(i,j-1)+alfa2*(U(i-1,j-1)+U(i+1,j-1))-U(i,j-2);

end

23

endU=U’;figure(2),surf(U),title(’Grafica de U=f(x,t)’),xlabel(’x’),ylabel(’t’),zlabel(’u’)

24