Práctica 6: Derivación numérica y extrapolación de Richardson.

Anuncio
Práctica 6: Derivación numérica y extrapolación de
Richardson.
1
Introducción
Recordemos que posiblemente la más sencilla de las fórmulas de derivación
numérica es la diferencia dividida
f 0 (x) =
f (x + h) − f (x)
+ e(x) ,
h
e(x) = −
f 00 (ξ)
h,
2
(1)
que es de primer orden (el error cometido es proporcional a h).
A su vez, la diferencia simétrica
f 0 (x) =
f (x + h) − f (x − h)
+ e(x) ,
2h
e(x) = −
f 000 (ξ) 2
h ,
6
(2)
es una fórmula de segundo orden (el error cometido es proporcional a h2 ).
Para aproximar la segunda derivada podemos usar
f 00 (x) =
f (x + h) − 2f (x) + f (x + h)
+ e(x) ,
h2
e(x) = −
f (IV ) (ξ)
,
12
(3)
que es también de segundo orden.
Sin embargo, recordemos que todas estas fórmulas sufren del problema
de cancelación cuando tomamos un paso h muy pequeño. Se ha visto en
teorı́a que el valor de h cercano al óptimo es el que satisface
|e(x)| =
2
,
h
(4)
donde es la cota del error absoluto en redondeo, que se puede coger igual
a un ulp.
2
Fórmulas de derivación numérica
Vamos a intentar reproducir algunos de los resultados numéricos que aparecen en el libro, y de paso estudiar experimentalmente las fórmulas anteriores.
Práctica de ordenador VI
2
Para ello tomemos como función de prueba alguna para la cual las derivadas
sean fáciles de calcular analı́ticamente. Por ejemplo, sea
f (t) = sen(t)
y el punto donde calcularemos la derivada, el x = π/3.2. Puesto que |f (x)| ≈
1, es razonable tomar en la fórmula (4) igual al épsilon de la máquina.
1. Usando la fórmula (4) estime el orden del valor óptimo de h para cada
una de las fórmulas (1)–(3).
2. Cree un script con el nombre derivada.m, que contenga las instrucciones para los siguientes pasos:
• Cree el vector h = 2−1 , 2−2 , . . . , 2−30 de los pasos que se utilizarán
para las fórmulas (1)–(3).
• Cree los vectores f1 y f2, que contengan la evaluación de f en
los elementos de x + h y x − h, respectivamente.
• Cree finalmente los vectores der1 y der2 que contengan las aproximación dada por las fórmulas (1) y (2), respectivamente.
• Usando el valor exacto de la derivada, calcular los vectores err1
y err2 del error absoluto cometido.
• Dibuje en escala logarı́tmica las gráficas de los errores como función del paso h. Puede emplear para ello la función loglog de
MATLAB.
• Haga lo mismo para la segunda derivada (3) y añádela a la gráfica
anterior.
• Agregue al gráfico la leyenda (función legend) en la esquina superior izquierda, que especifique a qué fórmula corresponde cada
gráfica (consulte la ayuda del MATLAB si lo precisa).
3. Interprete los resultados, ¿corroboran o no el orden del error teórico?
¿Cuál es el paso óptimo en cada caso? ¿Confirman el óptimo teórico
que hemos calculado en el paso 1?
3
Extrapolación de Richardson
Un paso del algoritmo de extrapolación de Richardson, aplicado a una función G(h), puede venir dado por la fórmula
G1 (h) =
2−k G(h) − G(h/2)
,
2−k − 1
donde k es el orden de convergencia esperado de la función G(h).
Andrei Martı́nez Finkelshtein
Práctica de ordenador VI
3
1. Considere los elementos del vector der1, calculado anteriormente, como valores de la función G(h) y aplı́quele el algoritmo de Richardson.
2. En una ventana diferente a la anterior (use el comando figure(2) del
MATLAB) dibuje en escala logarı́tmica las gráficas de los errores de
G y G1 como funciones del paso h.
3. Diga si considera que se ha logrado elevar el orden de convergencia a
2, tal como lo afirma el teorema de Richardson.
Andrei Martı́nez Finkelshtein
Descargar