Subido por pemido67

Tema Metodos Numericos

Anuncio
CAPITULO
3
Métodos numéricos
La primera inclinación a la hora de resolver un problema es intentar obtener una solución
exacta. Sin embargo, en muchos casos no disponemos de las técnicas suficientes para
obtenerla o las existentes presentan mucha dificultad. De hecho podrı́amos preguntarnos
si nos bastarı́a con una solución lo suficientemente precisa, ¿para qué queremos saber la
longitud de una pared con precisión de milı́metros si con decı́metros nos basta?.
Es por ello que, en muchos casos, es interesante utilizar técnicas numéricas para obtener
una solución aproximada de ecuaciones, integrales, ecuaciones diferenciales, etc.
3.1 Método de Newton
El método de Newton o de la tangente, se trata de un algoritmo que nos permite aproximar las raı́ces de funciones, es decir, los valores de x en los que f (x) = 0, y que puede ser
utilizado para el cálculo de soluciones aproximadas de sistemas de ecuaciones.
3.1.1 Interpretación geométrica
La idea geométrica de este método consiste en escoger un valor de x, uno que creemos
que esté acerca de la solución, y utilizar la recta tangente a la función por dicho punto para
obtener una aproximación mejor.
41
3. Métodos numéricos
Imaginemos que queremos saber por donde corta la función f (x) = ex + x al eje x.
Tomamos una primera aproximación de la solución, por ejemplo x1 = 1. Trazamos la
tangente a la función por el punto (1, f (1)) y miramos por donde corta al eje x y obtenemos
una segunda aproximación x2 = 0
6
4
2
-2
1
-1
2
-2
Repetimos el proceso para x2 = 0. Tenemos que si trazamos la tangente a f por el
punto (0, f (0)) y calculamos por donde corta al eje x, en este caso obtenemos una tercera
aproximación x3 = −0.5.
6
4
2
-2
1
-1
2
-2
A medida que iteramos el proceso, siempre que la aproximación inicial sea adecuada,
nos acercanremos más al valor que estamos buscando.
De los métodos para buscar raı́ces de funciones, el método de Newton es el que más
rápido converge. Sin embargo hay que tener en cuenta que no siempre converge, esto
depende de la aproximación inicial que tomemos. Es por ello que es muy importante el
tomar una primera aproximación que no se aleje mucho de la solución. Por ejemplo, si
consideramos f (x) = x4 + 2x3 − x − 1 y comenzamos tomando x1 = 0 observamos que
no converge, que alternativamente obtenemos los valores 0 y −1.
42
3.1 Método de Newton
-2.0
-1.5
-1.0
1.0
1.0
0.5
0.5
0.5
-0.5
1.0
-2.0
-1.5
-1.0
0.5
-0.5
-0.5
-0.5
-1.0
-1.0
-1.5
-1.5
1.0
3.1.2 Resolución analı́tica
Supongamos que tenemos una función f y queremos resolver f (x) = 0. Como bien dijimos anteriormente, si tenemos una aproximación x1 de la solución, el método de Newton
busca una aproximación más precisa viendo por donde corta al eje x la tangente a f que
pasa por (x1 , f (x1 )). En otras palabras trata de resolver
f (x1 ) + f 0 (x1 )(x − x1 ) = 0.
De este modo, despejando de la ecuación anterior, tenemos que una segunda aproximación serı́a
x2 = x1 −
f (x1 )
.
f 0 (x1 )
Iterando este proceso, si hemos tomado una primera aproximación suficientemente cercana a la solución, obtendremos en cada iteración una aproximación más precisa de la
solución
xn = xn−1 −
f (xn−1 )
.
f 0 (xn−1 )
El error del método de Newton es un error cuadrático, es decir, si llamamos α a la
solución exacta |xn+1 − α| < (xn − α)2 . Es decir, el número de cifras decimales exactas
se duplica en cada iteración. Si tenemos una solución que tiene una precisión de décimas
(0.1) entonces la aproximación de la siguiente iteración tendrá una precisión de centésimas
(0.01) y la siguiente de diezmilésimas (0.0001).
43
3. Métodos numéricos
3.1.3 Localización de raices
Como hemos comentado anteriormente es importante tener cuidado con la primera aproximación que se toma para arrancar el algoritmo del método de Newton ya que de ello
dependerá (de cómo de buena sea esa aproximación) si el método convergerá o no a la
solución buscada.
El objetivo es determinar un intervalo [a, b], lo suficientemente pequeño, donde se anule
la función. La forma de determinarlo es empı́rica, es decir, tomando dos valores a y b, y
utilizar resultados matemáticos para estudiar si entre ellos se encuentra alguna raı́z y, en su
caso si esta es única.
Teorema 3.1 (Teorema de Bolzano). Supongamos que f es una función continua. Dado
un intervalo [a, b] si f (a)f (b) < 0 entonces existe c ∈ [a, b]tal que f (c) = 0
Gráficamente esto significa que si una función cambia de signo en a y en b, entonces
tiene que cortar al eje x. Por ejemplo, si consideramos la función f (x) = ex + x y los
puntos a = −1 y b = 0 tenemos que en a la función es negativa y en b es positiva, luego
en ese intervalo existe al menos una raı́z.
6
4
2
-2
1
-1
2
-2
El problema es que con el Teorema de Bolzano podemos asegurar que al menos hay una
solución pero no podemos afirmar que solo hay una solución. Para ello tendrı́amos que
ayudarnos del Teorema de Rolle.
Teorema 3.2 (Teorema de Rolle). Supongamos que f es una función continua y derivable.
Dado un intervalo [a, b] si f (a) = f (b) entonces existe c ∈ [a, b]tal que f 0 (c) = 0
En el siguiente ejemplo (f (x) = x4 + 2x3 − x − 1, a = −1 y b = 0) vemos cómo la
interpretación gráfica de este resultado.
44
3.1 Método de Newton
1.0
0.5
-2.0
-1.5
-1.0
0.5
-0.5
1.0
-0.5
-1.0
-1.5
Por lo tanto, para poder asegurar que en un intervalo [a, b] existe un único punto c en el
que la función corte al eje x es decir f (c) = 0 basta con ver que f (a)f (b) < 0 (Teorema
de Bolzano) y que la derivada es siempre o positiva o negativa en ese intervalo, ya que por
el Teorema de Rolle podemos asegurar que no hay dos puntos en ese intervalo en el que la
función tenga el mismo valor y, por tanto, tampoco en los que se corte al eje x.
3.1.4 Aplicación del método de Newton
El método de Newton es útil a la hora de encontrar soluciones a ecuaciones. Para ello, lo
único que hay que hacer es transformar a ecuación a la forma deseada (f (x) = 0) y aplicar
el método. Por ejemplo si queremos resolver
ex = −x
lo único que necesitamos es despejar para que uno de los términos de la igualdad se anule,
es decir considerar
ex + x = 0.
Entonces, es claro que para obtener una solución aproximada de ex = −x bastarı́a con
aplicar el método a la función f (x) = ex + x.
Esto también puede aplicarse a la resolución de sistemas de ecuaciones, para ello lo único
que habrı́a que hacer es transformar todas las ecuaciones en la forma f (x) = 0 y aplicar el
método de Newton adaptado para un sistema de ecuaciones.
En el siguiente cuadro se resumen las transformaciones que hay que hacer a la hora de
aplicar Newton a una ecuación o a un sistema de dos ecuaciones con dos incógnitas (para
n ecuaciones con n incógnitas únicamente hay que generalizar la transformación).
45
3. Métodos numéricos
Ecuación / Sistema
Transformación
f (x) = 0
f (x0 ) + f 0 (x0 )(x − x0 ) = 0
f (x, y) = 0
f (x0 , y0 ) +
df (x0 , y0 )
df (x0 , y0 )
(x − x0 ) +
(y − y0 ) = 0
dx
dy
g(x, y) = 0
g(x0 , y0 ) +
dg(x0 , y0 )
dg(x0 , y0 )
(x − x0 ) +
(y − y0 ) = 0
dx
dy
Básicamente, el método de Newton permite transformar, a partir de una solución aproximada, un problema no lineal a uno lineal, que puede ser resuelto sin ninguna dificultad,
cuya solución mejore la precisión de la solución aproximada del problema original que
habı́amos escogido anteriormente.
Buscar aproximaciones gráficamente
Aunque ya hemos visto cómo podemos intentar localizar raı́ces de forma analı́tica siempre
podemos tratar de representar gráficamente el problema para localizar visualmente la aproximación inicial. Sin embargo esto es sólo recomendable cuando se puede hacer utilizando
funcione elementales cuyas gráficas son conocidas. Por ejemplo, supongamos la ecuación
ex = −x. La idea es ver donde cortan las funciones ex y −x (es decir, donde son iguales).
6
4
2
-2
1
-1
2
-2
Podemos ver que la solución se encuentra en el intervalo [−1, 0].
En el caso de los sistemas de ecuaciones, lo ideal es representar implı́citamente la gráfica.
46
3.2 Polinomio de interpolación
Por ejemplo, si tenemos el siguiente sistema de ecuaciones
(x − 0.2)2 + (y − 0.2)2 = 1
(x + 0.2)2 + (y + 0.2)2 = 1
tenemos que las ecuaciones son dos circunferencias de radio 1 centradas en el (0.2, 0.2) y
en el (−0.2, −0.2) respectivamente.
1.0
0.5
-1.0
0.5
-0.5
1.0
-0.5
-1.0
De esta forma, podemos ver que una solución se encuentra [−1, −0.5] × [0.5, 1] (recordemos que esto significa que hay que escoger x0 en [−1, −0.5] e y0 en el [0.5, 1]) y otra en
[0.5, 1] × [−1, −0.5].
3.2 Polinomio de interpolación
Dados n puntos (x1 , y1 ), (x2 , y2 ) . . . (xn , yn ), el polinomio de interpolación de esos
puntos es el polinomio que pasa por todos ellos. A continuación se muestra el polinomio
de interpolación de los puntos (−1, 4), (0, 2), (1, 6) y (2, 4).
10
5
-2
1
-1
-5
47
2
3
3. Métodos numéricos
El polinomio de interpolación es muy util a la hora de calcular numéricamente la integral
o la derivada de una función. La idea es considerar el polinomio que mejor se ajusta a una
función para calcular de forma aproximada su integral o su derivada numérica de forma
más sencilla.
Dada una función hay varias formas de construir un polinomio de interpolación que se
ajuste a ella. La más sencilla de ellas es la fórmula de las diferencias divididas de Newton,
que nos ofrece un polinomio de orden n − 1. La idea principal es escoger varios puntos de
nuestra función y calcular el polinomio de interpolación que pasa por ellos.
Imaginemos que hemos tomado 4 puntos (x0 , y0 ), (x1 , y1 ), (x2 , y2 ) y (x3 , y3 ). Calculamos la siguiente tabla:
x
x0
y
y0
Orden 1
α1 =
x1
α2 =
y2 − y1
x2 − x1
y2
Orden 3
β1 − α1
x2 − x0
α3 =
β2 =
γ1 =
x3
y1 − y0
x1 − x0
y1
β1 =
x2
Orden 2
y3 − y2
x3 − x2
γ1 − β1
x3 − x1
β2 − α2
x3 − x0
y3
El polinomio de interpolación de grado 3 que obtenemos viene dado por
p(x) = y0 + α1 (x − x0 ) + α2 (x − x0 )(x − x1 ) + α3 (x − x0 )(x − x1 )(x − x2 ).
Hay que destacar que el polinomio de interpolación por regla general no se ajusta bien
a la función a medida que nos alejamos de los puntos escogidos de la función. La idea
es que escojamos los puntos dentro del intervalo que nos convenga (el intervalo en el que
estamos integrando o un intervalo en el que se encuentre el punto en el que queremos hallar
la derivada) y de forma que entre dos puntos la función no sufra variaciones muy grandes.
Para que el polinomio de interpolación se ajuste más uniformemente a la función en
el intervalo [a, b] que consideremos, escogeremos valores en la coordenada x igualmente
espaciados. En tal caso, si quisiéramos calcular el polinomio de interpolación de orden n,
48
3.2 Polinomio de interpolación
tomando
h=
b−a
,
n
los puntos a considerar serı́an (xi , yi ) = (a+ih, f (a+ih)) con 0 ≤ i ≤ n. Si consideramos
el ejemplo anterior quedarı́a tenemos que
x
x0
y
y0
x1
y1
Orden 1
y1 − y0
h
y2 − y1
h
x2
y2
x3
y3 − y1
h
y3
Orden 2
Orden 3
y2 − 2y1 + y0
2h2
y3 − 3y2 + 3y1 − y0
3h3
y3 − 2y2 + y1
2h2
Hagamos el siguiente ejemplo práctico
Ejemplo 3.1. Polinomio de interpolación de orden 4 para f (x) =
1
en [−2, 2]. En
x2 + 1
este caso los puntos serı́an
1
1
1
1
−2,
, −1,
, (0, 1), 1,
, 2,
5
2
2
5
y tendrı́amos que h =
2 − (−2)
= 1. Resolvemos la tabla
4
x
y
−2
1/5
−1
1/3
Orden 1
Orden 2
Orden 3
Orden 4
3/10
1/10
−1/5
1/2
0
−1/2
1
−1/2
1
1/2
1/10
−3/10
2
1/10
1/5
1/5
49
3. Métodos numéricos
El polinomio de interpolación es
1
3
1
1
1
+ (x + 2) + (x + 2)(x + 1) − (x + 2)(x + 1)x + (x + 2)(x + 1)x(x − 1)
5 10
10
5
10
Observemos gráficamente cómo se ajusta a la función original
2.5
2.0
1.5
1.0
0.5
-3
-2
1
-1
2
3
3.3 Integración numérica
Integrar una función en muchas ocasiones es un proceso complicado y, en muchos casos
no disponemos de las herramientas necesarias para calcularla. La integración numérica son
procedimientos de aproximación numérica que facilitan el cálculo de integrales definidas
en un intervalo.
Las reglas más conocidas son las del trapecio, Simpson I y Simpson II. La idea es aproximar la función a integrar en un intervalo [a, b] por un polinomio de interpolación, ya que
son sencillos de integrar, obteniendo ası́ una aproximación de la integral original.
3.3.1 Regla del trapecio simple
1.2
En este caso se trata de aproximar la
1.0
función mediante el polinomio de interpolación de grado 1 o lo que es lo mismo
0.8
una recta formando ası́ un trapecio. En este
0.6
caso, los valores de xi son los extremos
0.4
del intervalo, distanciados por h = b − a.
0.2
Llamando yi = f (xi ), tenemos que el poli-
-2
nomio de interpolación de orden 1 es
50
-1
0
1
2
3.3 Integración numérica
p(x) = y0 −
y1 − y0
(x − x0 )
h
obteniendo la regla del trapecio
b
Z
Z
x1
f (x)dx ≈
p(x)dx =
x0
a
h
(y0 + y1 ).
2
3.3.2 Regla de Simpson I simple
1.2
En este caso se trata de aproximar la
1.0
función mediante el polinomio de interpolación de grado 2. En este caso, los
0.8
valores de xi son los extremos y el punto
0.6
medio del intervalo, de forma que la distanb−a
cia que los separa es h =
. Tomando
2
yi = f (xi ) tenemos que el polinomio de
0.4
0.2
-2
0
-1
1
2
interpolación de orden 2 es
p(x) = y0 −
y1 − y0
y2 − 2y1 + y0
(x − x0 ) +
(x − x0 )(x − x1 )
h
2h2
se deduce la regla de Simpson I
Z
b
Z
x2
f (x)dx ≈
a
p(x)dx =
x0
h
(y0 + 4y1 + y2 ).
3
3.3.3 Regla de Simpson II simple
1.2
Simpson II funciona de forma similar a
1.0
las reglas anteriores. En este caso se aproxima la funciónpor un polinomio de inter-
0.8
polación de grado 3 tomando 4 puntos xi
0.6
igualmente espaciados por una distancia de
b−a
h=
. Si llamamos yi = f (xi ) y p(x)
3
al polinomio de interpolación, tenemos que
0.4
0.2
-2
la expresión en este caso viene dada por
51
-1
0
1
2
3. Métodos numéricos
Z
b
Z
x3
f (x)dx ≈
a
p(x)dx =
x0
3h
(y0 + 3y1 + 3y2 + y3 ).
8
3.3.4 Reglas del trapecio, Simpson I y Simpson II compuestas
A medida que incrementamos el grado del polinomio de interpolación el error que cometemos se reduce considerablemente. En el siguiente ejemplo, el error se reduce un 50% al
utilizar Simpson I y al utilizar Simpson II se reduce un 90% respecto a Simpson I.
-2
-1
1.2
1.2
1.2
1.0
1.0
1.0
0.8
0.8
0.8
0.6
0.6
0.6
0.4
0.4
0.4
0.2
0.2
0.2
0
1
2
-2
Trapecio: 1.21
-1
0
1
2
-2
Simpson I: 0.63
-1
0
1
2
Simpson II: 0.06
Siguiendo esa tendencia, podrı́amos buscar una regla utilizando un polinomio de un orden muy elevado para obtener una precisión mucho mayor, sin embargo el esfuerzo que
se requiere respecto con la mejora que se obtiene hace que sea más interesante utilizar reglas compuestas. Esto es, dividir el intervalo de integración en m partes, en nuestro caso
b−a
iguales a una distancia de d =
, aplicar en cada uno de ellos la misma regla (trapecio,
m
Simpson I o Simpson II) para aproximar el valor Pi de la integral en cada una de ellas y
sumar todos los resultados para obtener el total de forma que el valor de la integral es
I = P1 + P2 + · · · + Pm .
Recordemos como calcular en cada parte el valor aproximado de la integral utilizando
las diferentes reglas:
1.2
• Trapecio: En este caso cada parte no se
1.0
subdivide, por lo que el número total de
0.8
puntos es m y h = d. El valor en cada
0.6
parte viene dado por
Pi =
0.4
h
(yi−1 + yi ).
2
0.2
-2
52
-1
0
1
2
3.3 Integración numérica
1.2
• Simpson I: En este caso en cada parte
1.0
se toma también el punto medio, por lo
0.8
que el número total de puntos es 2m + 1
0.6
y h = d/2. El valor en cada parte viene
0.4
dado por
0.2
h
Pi = (y2i−2 + 4y2i−1 + y2i ).
3
-2
-1
0
1
2
0
1
2
1.2
• Simpson II: En este caso en cada parte
1.0
se toman dos puntos igualmente espa-
0.8
cioados, por lo que el número total de
0.6
puntos es 3m + 1 y h = d/3. El valor
0.4
en cada parte viene dado por
0.2
3h
Pi =
(y3i−3 +3y3i−2 +3y3i−1 +y3i ).
8
-2
-1
Veamos a continuación un ejemplo de cómo se resuelven este tipo de problemas.
Ejemplo 3.2. Calculemos la integral
Z
2
I=
−2
x2
1
dx
+1
dividiendo el intervalo de integración [−2, 2] en m = 4 partes. Si utilizamos la regla del
trapecio tenemos los siguientes puntos separados por h = 1:
x0
x1
x2
x3
x4
−2
−1
0
1
2
Calculamos el valor de la función “yi = f (xi )” en cada punto
y0 = 0.2,
y1 = 0.5,
Calculemos la aproximación Pi =
P1 =
P2 =
y2 = 1,
y3 = 0.5,
y4 = 0.2.
h
(yi−1 +yi ) de la integral en cada uno de esos trozos
2
1
(0.2 + 0.5) = 0.35
2
1
(0.5 + 1.0) = 0.75
2
P3 =
P4 =
53
1
(1.0 + 0.5) = 0.75
2
1
(0.5 + 0.2) = 0.35
2
3. Métodos numéricos
La aproximación es la suma de todos los trozos I ≈ 0.35 + 0.75 + 0.75 + 0.35 = 2.2.
Si observamos el ejemlo anterior, tenemos que estamos operando por 1/2 cuatro veces,
cuando podrı́amos sacarlo como factor común y operar al final. Esto ocurre en todos los
métodos, de forma que podemos ahorrar algunas operaciones. Volvamos a repetir el Ejemplo 3.2 utilizando Simpson I:
Ejemplo 3.3. Tenemos los siguientes puntos separados por h = 1/2:
x0
x1
x2
x3
−2 −1.5 −1 −0.5
x4
x5
x6
x7
x8
0
0.5
1
1.5
2
Calculamos el valor de la función “yi = f (xi )” en cada punto
y0 = y8 = 0.2,
y1 = y7 = 0.3,
y2 = y6 = 0.5,
y3 = y5 = 0.8,
y4 = 1.
Calculemos la ahora el valor Si = (y2i−2 + 4yi )
S1 = 0.2 + 4 · 0.3 + 0.5 = 1.9
S3 = 1.0 + 4 · 0.7 + 0.5 = 2.2
S2 = 0.5 + 4 · 0.7 + 1.0 = 2.2
S4 = 0.5 + 4 · 0.3 + 1.0 = 1.9
Tenemos entonces que I ≈
h
(S1 + S2 + S3 + S4 ) = 1.37.
3
Otra forma de expresar las reglas compuestas es unificar todos los términos en una única
suma. Para ello simplemente hay que tener en cuenta que hay valores, los que delimitan
cada parte, que se cuentan dos veces, exceptuando y0 e yn . De modo que podemos utilizar:
n−1
X
h
• Trapecio: I ≈
y0 + 2
yi + yn .
2
i=1
• Simpson I: I ≈
n−1
n−2
X
X
h
y0 + 4
yi + 2
yi + yn .
3
i=1,3,...
• Simpson II: I ≈
i=2,4,...
n−3
n−2
n−1
X
X
X
3h yi + yn .
y0 + 3
yi + 3
yi + 2
8
i=1,4,...
i=2,5,...
54
i=3,6,...
3.3 Integración numérica
La convergencia de estas reglas no es uniforme. Podemos asegurar que si incrementamos
suficientemente el número de divisiones el error se reducirá, pero en pequeñas variaciones
puede empeorar. Por ejemplo, si pasamos de 2 a 4 trozos podemos asegurar que el error no
va a aumentar. Sin embargo, si pasamos de 2 a 3 trozos no lo podemos asegurar.
-2
1.0
1.0
1.0
0.8
0.8
0.8
0.6
0.6
0.6
0.4
0.4
0.4
0.2
0.2
0.2
0
-1
1
2
-2
0
-1
Error: 0.035
1
2
-2
0
-1
Error: 0.076
1
2
Error: 0.035
Esto se debe a que cuando se divide en 4 trozos el intervalo estamos subdividiendo los
ya existentes. Sin embargo, al dividir en 3 trozos el intervalo la distribución de estos puede
empeorar a la anterior. De esta forma podemos asegurar que si incrementamos el número
de trozos el doble el resultados que obtendremos en no empeorará al anterior.
3.3.5 Método de Romberg
Es un método que utiliza el método de los trapecios varias veces cambiando el valor de
h para acelerar la convergencia. La idea básica es fijar un h inicial y realizar el método de
los trapecios para divisiones progresivas de h (es decir h, h/2, h/4, etc.) y calcular unas
aproximaciones de forma recursivamente según la siguiente tabla.
Aprox 1
Aprox 2
A1,1 = Th
A2,2 =
Aprox 3
4A1,2 − A1,1
3
A1,2 = Th/2
A3,4 =
A2,4 =
4A1,4 − A1,2
3
A1,4 = Th/4
A1,8 = Th/8
..
.
42 A2,4 − A2,2
42 − 1
···
A3,8 =
A2,8 =
42 A
2,8 − A2,4
42 − 1
4A1,8 − A1,4
3
..
.
..
.
55
···
3. Métodos numéricos
En términos generales, si realizamos el método de los trapecios n veces, tenemos que
h varı́a en la forma h/(2i ) para 0 ≤ i ≤ n − 1, teniendo una tabla con n columnas La
primera columna, está formada por A1,2i = Th/(2i ) que son los valores obtenidos al aplicar
el método de los trapecios dividiendo el intervalo de integración en partes de longitud
h/(2i ).
Por regla general, se tiene que
Ai+1,2j =
4i Ai,2j − Ai,2j−1
4i − 1
y pararemos cuando obtengamos el valor de An−1,2n−1 . Cuanto más pequeño sea el valor
de h más rápido convergerá el método.
Ejemplo 3.4. Si hacemos el método de Romberg para calcular
Z
2
−2
x2
1
dx
+1
comenzando con h = 1 y n = 4, tenemos que la tabla queda de la siguiente manera
Trapecio
2.2000
Aprox 1
Aprox 2
Aprox 3
2.2103
2.2077
2.2146
2.2143
2.2143
2.2126
2.2143
2.2143
2.2139
3.4 Resolución numérica de EDOs de primer orden
No existe un método general para resolver ecuaciones diferenciales. Hemos visto como
resolver algunos tipos de ecuaciones diferenciales de primer orden, pero hay muchos más
tipos. De hecho, no siempre existe un método para resolver una ecuación diferencial. Es
por ello que existen métodos se resolución numérica, cuyo objetivo es calcular valores
aproximados de la solución del problema de valores iniciales
0
y (x) = F (x, y(x))
y(x0 ) = y0
56
3.4 Resolución numérica de EDOs de primer orden
en un entorno de la condición inicial x0 . De modo que la poligonal definida por dichas
aproximaciones es una aproximación de la solución.
3.0
2.5
2.0
1.5
0.6
0.8
1.0
1.2
1.4
Los métodos de resolución numérica de ecuaciones diferenciales calculan aproximaciones
de y(x), a partir una ya conocida “y(x0 ) = y0 ”, para diferentes valores xi separados por
una distancia constante h, de forma que la precisión mejora cuando h disminuye.
Son métodos iterativos, es decir, cada nueva punto (xi+1 , yi+1 ) se calcula a partir de la
anterior (xi , yi ). Por tanto, yi+1 es menos preciso que yi , ya que el error se va acumulando.
Habitualmente, cuando se afronta un problema concreto, la estimación de y(x) se centra
en un intervalo determinado [a, b] con origen (o final) en x0 , de forma que
h=
b−a
.
n
En este apartado supondremos que nos alejamos de x0 positivamente ya que la idea de
los métodos que estudiaremos no difiere de cuando nos alejamos negativamente. En tal
caso, bastarı́a con aplicar −h en lugar de h en las fórmulas correspondientes.
3.4.1 Método de Euler
El método de Euler consiste en aproxi-
5.0
4.5
mar las soluciones utilizando la recta tan-
4.0
gente a la a la solución del problema de
3.5
3.0
valores iniciales
0
y (x) = F (x, y(x))
y(x0 ) = y0
2.5
2.0
0.6
57
0.8
1.0
1.2
1.4
1.6
1.8
2.0
3. Métodos numéricos
Supongamos tenemos un punto x1 separado a una distancia h de x0 , es decir, x1 =
x0 + h, y que queremos hallar una aproximación de y(x1 ). Como conocemos y0 = y(x0 )
e y 0 (x0 ) = F (x0 , y0 ) podemos construir la función de la recta que pasa por por el punto
(x0 , y0 ) con pendiente F (x0 , y0 ), es decir, la tangente a y(x) en x0 .
f (x) = y0 + F (x0 , y0 )(x − x0 ).
Calculamos y1 = f (x1 ) = y0 + F (x0 , y0 )(x1 − x0 ). Repitiendo el proceso podemos
calcular y2 e iterando hasta n habremos obtenido todas las aproximaciones. En general, la
aproximación i + 1 se calcula de la forma
yi+1 = yi + F (xi , yi )(xi+1 − xi ) = yi + hF (xi , yi ).
A continuación realizaremos un ejemplo práctico del método de Euler.
Ejemplo 3.5. Aproximar en el intervalo [1, 2] la solución del problema de valores iniciales
(
Por n = 10 puntos, es decir h =
y
2x
y(1) = 2
y0 =
2−1
= 0.1
10
2.8
y0 = 2
y1
y2
y3
2.6
x0
= y0 + h
= 2.1
2y0
x1
= y1 + h
= 2.1954
2y1
x2
= 2.2869
= y2 + h
2y2
..
.
2.4
2.2
2.0
1.0
1.2
1.4
1.6
1.8
2.0
3.4.2 Métodos de Runge-Kutta
Los métodos Runge-Kutta de órden n actúan de forma similar al método de Euler. Para
aproximar valor de yi+1 se utiliza una recta que pasa por (xi , yi ) con una pendiente
mi =
a1 k1 + a2 k2 + · · · + an kn
,
a1 + a2 + · · · + an
58
3.4 Resolución numérica de EDOs de primer orden
que es un promedio de n valores k1 , . . . , kn de y 0 (x) es decir, F (x, y), quedando una
expresión del tipo
yi+1 = yi + mi (xi+1 − xi ) = yi + mi h.
Para determinar los valores “k” y los pesos “a”, la idea en la que se basan los métodos
de Runge-Kutta clásicos es transformar el problema de resolver
0
y (x) = F (x, y(x))
y(x0 ) = y0
en el equivalente de
Z
y
x
Z
F (x, y(x))dx.
dy =
x0
y0
De este modo, tendrı́amos que podemos calcular una aproximación de la función a partir
de un valor anterior, es decir
Z
xi+1
F (x, y(x))dx
yi+1 = yi +
(3.1)
xi
El objetivo es utilizar métodos de integración numérica (Trapecio o Simpson I) para
calcular aproximaciones. Los métodos Runge-Kutta, utilizan aproximaciones iniciales de
y(x) obtenidas a partir del método de Euler de forman que permiten mejorar su precisión.
Runge-Kutta de segundo orden
En este caso, el valor de la integral (3.1) en el intervalo [xi , xi + h] se aproxima por el
método del trapecio, necesitando calcular los valores:
k1 = F (xi , yi )
y
k2 ≈ F xi + h, y(xi + h) .
El problema es que no conocemos el
Algoritmo RK2
valor y(xi + h) por lo que se aproxima por
k1 = F (xi , yi ),
el método de Euler:
k2 = F (xi + h, yi + hk1 ),
h
yi+1 = yi + (k1 + k2 )
2
y(xi + h) ≈ yi + hF (xi , yi ) = yi + hk1 .
De este modo podemos calcular k2 y aplicar el método del trapecio.
59
3. Métodos numéricos
Runge-Kutta de tercer orden
En este caso, el valor de la integral (3.1) en el intervalo [xi , xi + h] se aproxima por el
método de Simpson I, necesitando calcular los valores:
k1 = F (xi , yi ),
k2 ≈ F xi + h/2, y(xi + h/2)
y k3 ≈ F xi + h, y(xi + h) .
El problema nuevamente es que no conocemos y(xi + h/2) e y(xi + h). El primero se
calcula como en el apartado anterior
y(xi + h/2) ≈ yi +
h
h
F (xi , yi ) = yi + k1 .
2
2
El valor de y(xi + h) se puede aproximar utilizando Euler a partir del valor yi :
y(xi + h) ≈ yi + hF (xi , yi ) = yi + hk1 ,
o del valor y(xi + h/2) calculado anteriormente,
y(xi + h) ≈ yi +
h
h F xi + h/2, y(xi + h/2) = yi + k2 .
2
2
Lo que se hace es utilizar una comAlgoritmo RK3
binación optimizada de ambos valores, ob-
k1 = F (xi , yi ),
h
h k2 = F xi + , yi + k1 ,
2
2
k3 = F xi + h, yi + h(2k2 − k1 ) ,
h
yi+1 = yi + (k1 + 4k2 + k3 )
6
teniendo:
y(xi + h) ≈ yi + h(2k2 − k1 ).
De este modo podemos calcular k3 y aplicar el método de Simpson I.
Runge-Kutta de cuarto orden
Nuevamente, se utiliza la regla de Simpson I para calcular la integral (3.1) en el intervalo
[xi , xi + h]. La diferencia principal en este caso, se calculan los tres valores de F (x, y) necesarios para la regla de Sipson I utilizando el método de Euler con múltiples estimaciones
de la pendiente.
60
3.5 Álgebra matricial. Factorización LU
Tal y como se hacı́a en los apartados anteriores, tomando k1 = F (xi , yi ), calculamos
h
h
F (xi , yi ) = yi + k1 ,
2
2
y, utilizando este valor, calculamos el valor k2 ≈ F xi + h/2, y(xi + h/2) .
y(xi + h/2) ≈ yi +
Observemos que k2 aproxima a la pendiente de y(x) en el punto medio de [xi , xi + h],
por lo que podemos volver a aproximar y(xi + h/2) utilizando esta nueva pendiente, es
decir la pendiente de “llegada” y no la de “salida”
y(xi + h/2) ≈ yi +
h
k2 .
2
Utilizando este valor en calculamos otra aproximación
k3 ≈ F xi + h/2, y(xi + h/2) ,
de forma mejoramos la precisión haciendo una media de ambos valores,
k2 + k3
.
2
Por último, calculamos el valor y(xi +h)
Algoritmo RK4
a de xi por el método de Euler, utilizando
k1 = F (xi , yi ),
h
k2 = F xi + , yi +
2
h
k3 = F xi + , yi +
2
la última pendiente obtenida (k3 ),
y(xi + h) ≈ yi + hk3 .
Utilizando este valor, calculamos
h k1 ,
2 h
k2 ,
2 k4 = F xi + h, yi + hk3 ,
h
yi+1 = yi + (k1 + 2k2 + 2k3 + k4 )
6
k4 = F (xi + h, y(xi + h))
y se aplica el método de Simpson I.
3.5 Álgebra matricial. Factorización LU
En las secciones anteriores hemos visto como una serie de algoritmos nos permiten calcular áreas, soluciones de ecuaciones, etc. de forma aproximada y a bajo coste, es decir realizando un número, relativamente pequeño de operaciones sencillas. En el caso del
álgebra matricial, los métodos numéricos no suelen utilizarse para realizar aproximaciones,
61
3. Métodos numéricos
sino para reducir el número de operaciones. En este caso vamos a estudiar la factorización
LU (Lower Upper).
A la hora de trabajar en álgebra matricial, el uso de matrices triangulares presenta una
gran ventaja ya es muy sencillo realizar cálculos con ellas. Por ejemplo el determinante
o resolver un sistema de ecuaciones. La idea de la factorización LU es descomponer una
matriz A como el producto de dos matrices triangulares, una triangular inferior L y otra
triangular superior U . De modo que nos quede que
A = LU.
La idea básica para obtener L y U es la eliminación Gaussiana. En el algoritmo de
eliminación Gaussiana se permutan filas siempre que sea necesario. Sin embargo, para
hacer la factorización LU , hay que suponer que estas permutaciones no son necesarias, ya
que en tal caso mediante eliminación Gaussiana no conseguirı́amos obtener una matriz de
paso P triangular. Más adelante, cuando veamos las aplicaciones de la factorización LU
veremos como afectarı́a en el resultado si hubiese que realizar permutaciones.
Recordemos en qué consistı́a la eliminación Gaussiana. Esta trata de triangularizar una
matriz utilizando transformaciones elementales. Supongamos que tenemos la matriz


1 3 1
A= 2 4 3 
3 3 7
Si hacemos la eliminación Gaussiana sobre esa matriz y replicamos los cambios sobre la
identidad obtendrı́amos que


1 3 1 1 0 0
(A|I) =  2 4 3 0 1 0 
3 3 7 0 0 1
A la segunda fila, le restamos dos veces la primera y a la tercera tres veces la primera.
Es decir, hacemos F2 − 2F1 y F3 − 3F1 .

1
3 1
1 0 0
(U1 |P1 ) =  0 −2 1 −2 1 0 
0 −6 4 −3 0 1

62


1 0 0
E1 =  −2 1 0 
−3 0 1
3.5 Álgebra matricial. Factorización LU
Observemos que E1 son las transformaciones elementales que hay que hacer sobre A,
replicados en la identidad. Se cumple que E1 A = U1 .
Si continuamos haciendo eliminación Gaussiana, ahora hay que restar a la tercera fila
tres veces la segunda. Es decir, hacemos F3 − 3F2 .


1
3 1
1
0 0
1 0 
(U2 |P2 ) =  0 −2 1 −2
0
0 1
3 −3 1


1
0 0
1 0 
E2 =  0
0 −3 1
Observemos que E2 son las transformaciones elementales que hay que hacer sobre U1 ,
replicados en la identidad. Se cumple que E2 U1 = U2 . O lo que es lo mismo, si llamamos
U = U2 y P = P2 tenemos que
P A = E2 E1 A = U
A la matriz P se le llama Matriz de Paso, ya que permite transformar A en una triangular.
De hecho, la matriz de paso es la composición de cada uno de los cambios, esto es
P = E2 E1
Si llamamos entonces L = P −1 obtenemos que podemos factorizar A como A = LU .
Veamos que calcular la inversa de P es muy sencillo. Por las propiedades de las matrices
se tiene que
P −1 = (E2 E1 )−1 = E1−1 E2−1
y calcular E1−1 y E2−1 es muy sencillo, basta con cambiar de signo los elementos que hay
bajo la diagonal. Es decir

E1−1

1 0 0
= 2 1 0 
3 0 1

E2−1

1 0 0
=  0 1 0 .
0 3 1
Teniendo esto en cuenta, junto con que:
1. Los valores de las matrices Ei−1 son 1 en la diagonal y el resto 0 salvo (quizás) los
de la columna i.
2. Vamos a multiplicar las matrices Ei−1 conservando el orden de las columnas i.
63
3. Métodos numéricos
Podemos calcular L = E1−1 E2−1 como
L = 3I − E1 − E2 ,
donde I denota a la matriz identidad.
Sı́ntesis
Para obtener la descomposición LU de una matriz A, hay que hacer eliminaciones
Gaussianas. La matriz triangular superior que nos queda como resultado es la matriz
U . En cada uno de los pasos, guardamos como Ei a las tranformaciones elementales
que hay que hacer en ese paso (sobre la identidad). Entonces podemos calcular L como
L = nI − E1 − E2 − · · · − En−1 .
3.5.1 Aplicación en distemas de ecuaciones
Imaginemos que nos dan la descomposición LU de una matriz A, y queremos resolver
el sistema
Ax = b.
Esto es exactamente lo mismo que hacer LU x = b. En otras palabras, bastarı́a con hacer
U x = L−1 b. Si recordamos que L−1 = P básicamente serı́a hacer U x = P b. Observemos
que esto tiene sentido. Cuando se resueve un sistema haciendo Gauss, las trasnformaciones
se hacen tanto sobre los coeficientes como sobre el término independiente b. Por tanto
cuando se hace Gauss nos queda, en efecto, un sistema del tipo U x = P b.
Recordemos que estamos suponiendo que nos están dando tanto L como U , es decir que
no nos dicen P . Podrı́amos calcular la inversa, pero es preferible seguir transformando el
sistema para no tener que hacerla.
Si llamamos y = P b se tiene que P −1 y = b es decir que Ly = b. Por tanto resolver el
sistema Ax = b es equivalente a resolver el sistema
Ly = b
Ux = y
64
3.5 Álgebra matricial. Factorización LU
lo cual presenta muchas ventajas ya que basta con resolver el sistema Ly = b aplicando el
procedimiento de bajada para obtener y. Una vez obtenido y se resuelve U x = y aplicando
en este caso el procedimiento de subida.
En este caso, las permutaciones no influyen en el resultado, por lo que no es necesario
tenerlas en cuenta. En el caso de fuese necesario hacerlas, si tenemos una matriz A, la
transformarı́amos en otra A0 haciendo las permutaciones necesarias y, posteriormente calcuları́amos la descomposición LU de A0 .
3.5.2 Aplicación en cálculo de determinantes
Imaginemos que nos dan la descomposición LU de una matriz A, y queremos calcular
el determinante de A. Por las propiedades de los determinantes se tiene que
|A| = |L||U |.
Calcular el determinante de una matriz triangular es muy sencillo. Basta con calcular
su traza, es decir, multiplicar todos los elementos de la diagonal. Como los elementos de
la diagonal de L son siempre unos, se tiene que |L| = 1, es decir |A| = |U |. Como el
determinante de U viene dado por
u11 u12 · · · u1n
0 u22 · · · u2n
|U | = .
..
.. = u11 u22 · · · unn .
..
..
.
.
.
0
0 · · · unn
Luego |A| = u11 u22 · · · unn .
En este caso, las permutaciones sı́ influyen en el resultado, concretamente en el signo
del determinante. En el caso de fuese necesario hacerlas, si tenemos una matriz A, la
transformarı́amos en otra A0 haciendo las permutaciones necesarias y, posteriormente calcuları́amos la descomposición LU de A0 . De esta forma tendrı́amos que el determinante
de A es |A| = (−1)m (u11 u22 · · · unn ), siendo m el número de permutaciones que se han
necesitado para obtener la matriz A0 .
65
Descargar