Está en la página 1de 5

En este documento utilizaremos Octave para la aproximación numérica de ecuaciones en derivadas parciales mediante el método de las diferencias

finitas. El método de las diferenciasfinitas consiste en reemplazar cada una de las derivadas parciales por aproximaciones mediante cocientes incremen- tales de orden uno o dos. Entre sus ventajas, se encuentra el tratarse de un método intuitivo y fácil de implementar. Entre sus inconvenientes, no es sencilla su generalización a dominios distintos de intervaloso, en general,

a cubos ndimensionales (n = 1, 2,

).

1. Diferencias finitas 1D

Consideremos el siguiente problema diferencial de orden 2: Calcular u : [a, b] R solución de

d 2 u(x)

dx 2

f (x) en [a, b],

u(a) = u a , u(b) = u b ,

=

(1)

(2)

donde tanto f como los datos de contorno, u a y u b son previamente co- nocidos. Bajo unas hipótesis mínimas de regularidad para f (bastaría f L 2 (a, b), pero para utilizar el método de las diferencias finitas supondremos que f es contínua), se sabe que el problema de contorno anterior tiene una única solución.

1.1. Aproximación mediante el método de diferencias finitas

Consideremos una partición del intervalo [a, b] en n + 1 subintervalos, todos ellos de longitud h = (b a)/(n + 1):

a = x 0 < x 1 < ··· < x n+1 = b.

Calcularemos, en cada uno de los puntos x i , una aproximación del va- lor de u(x i ), a la que llamaremos u i . Conocemos los valores u 0 y u n+1 (pues deben coincidir, respectivamente, con los datos u a y u b ), de forma

, u n . Para calcularlas,

que nuestras incógnitas son, exactamente, u 1 , u 2 ,

realizamos, en el sistema anterior, una aproximación de segundo orden 1 de

1 Que no es difícil de deducir, utilizando los desarrollos de Taylor de u en xh y en x+h. Se puede demostrar, de hecho, que si u C 4 ([a, b]), el esquema propuesto es consistente y convergente (de orden 2 en h).

1

la derivada segunda :

u (x) u(x h) 2u(x) + u(x + h)

h 2

.

Utilizando esta fórumula en (6) para los puntos x i (i = 1, nemos el siguiente sistema de ecuaciones:

u i1 2u i + u i+1

h 2

= f i ,

i = 1,

, n.

, n), obte-

siendo f i = f(x i ). Si las observamos cuidadosamente, concluiremos que forman un sistema lineal como el que sigue:

para la matriz

y los vectores

A =

1

h

2

u h =

2

1

0

0

0

u

u

u

.

.

.

n1

2

1

u

n

Au h = f,

1

2

1

.

.

.

.

.

.

y

0

1

2

.

.

.

f =

0

0

1

.

.

1

0

.

.

.

.

.

2

1

.

.

.

.

.

.

.

.

0

0

0

1

2

f 1 + u a /h 2

f

.

.

.

2

f

n1

f n + u b /h 2

 

(3)

,

(4)

(5)

La matriz A es tridiagonal y definida positiva, lo que dota al sitema lieal annterior de muy buenas propiedades de cara a su implementación y reso- lución, especialmente pensando en que n sea muy grande.

1.2. Resultados numéricos con Octave

Para construir el sistema (3), podemos utilizar la función “diag” (ver la ayuda de Octave). Se propone resolver la ecuación (6) para los siguientes parámetros:

2

[a, b ] = [0 , 1] a, b] = [0, 1]

[ a, b ] = [0 , 1] n h = 10 ; = 1 /

[ a, b ] = [0 , 1] n h = 10 ; = 1 /

n

h

= 10;

= 1/(n + 1);

Datos de contorno: u a = 0 ; u b = 1 ; u a = 0; u b = 1;

Segundo miembro: f ( x ) = π 2 sin( xπ/ 2) f (x) = π 2 sin(xπ/2)

4

Extensión: definir una función, diferencias_finitas_1d, que to- me como parámetros:

Los extremos del intervalo (a , b ) y el tamaño de la partición ( n ). a, b) y el tamaño de la partición (n).

Los datos de contorno (u a y u b ) y la función segundo miembro, f . u a y u b ) y la función segundo miembro, f .

La función debe devolver el vector solución, u.

2. Diferencias finitas 2D

2.1. Aproximación mediante el método de diferencias finitas

Consideremos un dominio rectangular, Ω = (a x , b x ) × (a y , b y ) R 2 . Planteamos el problema: Calcular u : Ω R solución de

2 u(x, y)

∂x 2

2 u(x, y)

∂y 2

=

f (x, y) en ,

(6)

u = g sobre

(7)

donde es la frontera de y tanto f (x, y) como g(x, y) son funciones conocidas, que supondremos continuas.

2.2. Aproximación mediante el método de diferencias finitas

Definiremos un mallado uniforme del rectángulo , a través de una partición de [a x , b x ] con talla h x = (b x a x )/(N x + 1) y de una partición de [a y , b y ] con talla h y = (b y a h )/(N y + 1). Estas particiones definen los puntos (x i , y j ) R 2 , donde

x i = i · h x , i = 0, 1,

y j = j · h y , j = 0, 1,

3

, N x + 1

, N y + 1

Calcularemos, en cada uno de los puntos (x i , y j ), una aproximación del valor de u(x i , y j ), a la que llamaremos u i,j . De forma similar al caso 1D, podemos aproximar cada una de las de- rivadas parciales. Sumándolas, obtendremos la siguiente aproximación del Laplaciano:

2 u(x, y)

∂x 2

+

2 u(x, y)

∂y 2

u(x h x , y) 2u(x, y) + u(x + h x , y)

h

2

x

+ u(x, y h y ) 2u(x, y) + u(x, y + h y )

h

2

y

Utilizando esta fórmula en los puntos (x i , y j ) de la malla, obtenemos el siguiente sistema de ecuaciones:

u i1,j 2u i,j + u i+1,j

h

2

x

u i,j1 2u i,j + u i,j+1

h

2

y

= f i,j ,

siendo f i,j = f(x i , y j ), i = 1,

Para transformar las ecuaciones anteriores en un sistema lineal, debe- mos escribir nuestras incógnitas, u i,j en forma de vector. Para ello, basta

realizar una simple renumeración de los índices, por ejemplo, podemos de- finir el vector:

, N x ,

i = 1,

, N y

u = [(u 1,1 , u 2,1 ,

,

u N x ,1 ), (u 1,2 , u 2,2 ,

,

u

N x ,2 ),

(u

1,N y , u 2,N y ,

,

u N x ,N y )

Si las observamos cuidadosamente, concluiremos que forman un siste- ma lineal, Au = b, donde la matriz viene dada por:

A =

1

h

2

a

b

0

.

.

.

c

0

0

b

a

b

.

0

c

.

.

0

b

a

.

.

.

0

.

.

.

0

0

b

.

b

.

.

.

.

.

4

.

.

.

.

a

b

.

.

.

.

.

.

.

.

c

0

0

b

a

.

.

.

0

c

0

b

.

0

.

.

.

.

.

.

.

.

.

.

.

.

.

b

.

0

0

0

a

,

siendo:

a =

b =

c

=

2

h

2

x

1

h

2

x

1

h

2

y

+

2

h

2

y

, c) está separado exactamente N x posiciones

desde la diagonal de la matriz. En cuanto al segundo miembro, incluirá a los valores f i,j = f(x i , y j ) (a través de una renumeración idéntica a la realizada para el vector u) y a los términos frontera (1/h x )g i,j y (1/h y )g i,j , en las posiciones adecuadas.

Para simplificar el problema, podemos asumir que la condición de con-

torno g, es nula salvo en el lado del rectángulo correspondiente a los puntos

El vector diagonal (c, c,

2

2

(x 0 , y 0 ), (x 1 , y 0 ),

, (x N x +1 , y 0 ).

En tal caso, debemos sumar a los N x primeros términos segundo miem- bro los valores:

1

2

h y

g i,0 ,

i = 1,

,

N

x

2.3. Resultados numéricos con Octave

Se propone resolver la ecuación (6) para los siguientes parámetros:

Ω = [0 , 1] 2

Ω = [0, 1] 2

x = N y = 10 ; N

x = N y = 10;

N

f = 0 , g = 1 en los puntos ( x 0 , y

f

= 0, g = 1 en los puntos (x 0 , y 0 ), (x 1 , y 0 ),

,

(x N x +1 , y 0 ).

5