Derivación e integración numéricas

Anuncio
Derivación e integración numéricas
Obtención de fórmulas de tipo interpolatorio
Para obtener fórmulas de derivación o integración numéricas a partir de la interpolación polinómica necesitamos
calcular, en primer lugar, el polinomio de interpolación y después la derivada correspondiente en un punto a o la
integral en un intervalo @a, bD. En lo que respecta a la derivación numérica, consideraremos distintos órdenes de
derivación. Los datos de interpolación para las fórmulas de derivación numérica serán lagrangianos y para la integración numérica serán lagrangianos y de tipo Hermite. El polinomio interpolador se obtiene, en todos los casos, con la
orden InterpolatingPolynomial.
ü Obtención de fórmulas de derivación numérica
En la derivación numérica, los nodos de la fórmula, es decir los puntos de interpolación de la función f , serán el punto
a y puntos a su derecha e izquierda, de la forma a - h, a + h, a + 2 h, etc. La primera fórmula que vamos a obtener es la
que utiliza los nodos a y a + h para la derivada primera.
Clear@a, h, f, x, datosD
datos = 88a, f@aD<, 8a + h, f@a + hD<<;
pol = Simplify@InterpolatingPolynomial@datos, xDD;
Simplify@∂x pol ê. x → aD
Observe cómo se ha expresado la derivada del polinomio respecto de su variable.
A continuación vamos a usar los nodos a - h, a y a + h para la derivada primera.
datos = 88a − h, f@a − hD<, 8a, f@aD<, 8a + h, f@a + hD<<;
pol = Simplify@InterpolatingPolynomial@datos, xDD;
Simplify@∂x pol ê. x → aD
Es una fórmula con sólo dos nodos (el coeficiente de f HaL vale cero). Por último, para la derivada primera, vamos a
obtener una fórmula (que no se suele usar) que utiliza los nodos a, a + h y a + 3 h.
datos = 88a, f@aD<, 8a + h, f@a + hD<, 8a + 3 h, f@a + 3 hD<<;
pol = Simplify@InterpolatingPolynomial@datos, xDD;
Simplify@∂x pol ê. x → aD
Ahora vamos a obtener una fórmula para la derivada segunda, concretamente la que usa cinco nodos simétricos,
a - 2 h, a - h, a, a + h y a + 2 h
datos = Table@8a + i h, f@a + i hD<, 8i, −2, 2<D;
pol = Simplify@InterpolatingPolynomial@datos, xDD;
Simplify@D@pol, 8x, 2<D ê. x → aD
De igual forma se obtendría cualquier otra fórmula. A continuación vamos a analizar el orden de precisión de la última
fórmula obtenida. Tenemos que ver hasta qué potencia del tipo xi es exacta. De antemano, para i = 0, 1, 2, 3 y 4 está
314
garantizada la exactitud por ser la fórmula de tipo interpolatorio. Al probar con i = 5 observamos que la fórmula da
como resultado 20 a3 , es decir el valor exacto de la derivada. Para i = 6 el valor proporcionado es 30 a4 - 8 h4 , diferente de 30 a4 . Luego el orden de precisión es 5.
f@x_D := x5
SimplifyA−
30 f@aD + f@a − 2 hD − 16 f@a − hD − 16 f@a + hD + f@a + 2 hD
12 h2
f@x_D := x6
SimplifyA−
30 f@aD + f@a − 2 hD − 16 f@a − hD − 16 f@a + hD + f@a + 2 hD
12 h2
E
E
ü Comportamiento del error en las fórmulas de derivación numérica
Como es conocido, aunque sea muy simple, toda fórmula de derivación numérica que se obtuvo en el desarrollo teórico
es convergente. Los errores tienden a cero cuando h tiende a cero. Sin embargo, en la computación aparecen otros
errores que pueden desaconsejar el uso de valores muy pequeños de h si se quiere una buena aproximación. Es lo que
ocurre con el eror de cancelación en las fórmulas de derivación numérica. Veámoslo. Vamos a dar el valor de las
HaL
para valores de h de la forma
derivadas numéricas de una función f en el punto a = 2, con la fórmula f Ha+hL−f
h
-j
h = 10 con j ¥ 1.Veremos que llega un momento en el que la derivada numérica deja de converger, con unas oscilaciones no controlables, para después pasar a valer cero, porque el numerador vale cero. Esto último ocurre cuando h es
tan pequeño que para el ordenador a + h = h.
f@z_D :=
z − 0.5
1 + z2
n = 20; a = 2.;
derivadasnumericas = TableA
f@a + 10−j D − f@aD
10−j
, 8j, n<E
El valor exacto de la derivada de f en 2 es
f '@2.D
errores = f '@aD − derivadasnumericas
Los redondeos (a seis cifras) de la derivada numérica para j = 6, 7, 8 coinciden con el valor exacto. Al principio, a
medida que h disminuye el error disminuye, después empieza un comportamiento extraño donde los errores pueden ser
muy grandes y finalmente la aproximación que da es cero. Puede cambiar el valor de a y comprobarlo para otros
valores y otras funciones. Por ejemplo el comportamiento del error en a = -1 se muestra a continuación:
a = −1.;
derivadasnumericas = TableA
f@a + 10−j D − f@aD
10−j
errores = f '@aD − derivadasnumericas
, 8j, n<E
El error mínimo en valor absoluto se alcanza cuando j = 8; después empieza a aumentar hasta j = 16. A partir de
j = 17, el error se hace constante porque la derivada numérica es cero. Cambiamos ahora a una fórmula de mayor
precisión y volvemos a calcular las derivadas numéricas y los errores.
derivadas2 = TableA
f '@aD − derivadas2
1 f@a + 10−j D − f@a − 10−j D
2
10−j
, 8j, n<E
315
El comportamiento es similar al de la primera fórmula, sólo que el error de truncamiento es menor. Se consiguen más
cifras exactas, once, sin que h tenga que disminuir tanto como antes. Ahora con j = 5 se han conseguido once cifras.
Antes el error mínimo se alcanzó con j = 8 y fueron ocho cifras. Nuevamente, si h es muy pequeño vuelven a aparecer
errores importantes, y finalmente da cero.
ü Integración numérica
Vamos a obtener las fórmulas del Trapecio y de Simpson.
Clear@a, b, fD
pol = Simplify@InterpolatingPolynomial@88a, f@aD<, 8b, f@bD<<, xDD;
SimplifyA‡ pol xE
b
a
datos = 98a, f@aD<, 9
E=, 8b, f@bD<=;
2
2
pol = Simplify@InterpolatingPolynomial@datos, xDD;
a+b
, fA
a+b
SimplifyA‡ pol xE
b
a
Un método alternativo, pero equivalente, consiste en imponer exactitud. Veámoslo para la fórmula de Simpson.
B = TableA‡ xi
b
x, 8i, 0, 2<E;
ia+b z
y , bi =, 8i, 0, 2<E;
A = TableA9ai , j
j
z
k 2 {
sol = Simplify@LinearSolve@A, BDD
a
i
SimplifyAsol.9f@aD, fA
a+b
2
E, f@bD=E
Por último, vamos a obtener la fórmula del trapecio corregida, es decir, la que usa como datos el valor de la función y
el de la derivada en cada extremo.
datos = 88a, 8f@aD, f '@aD<<, 8b, 8f@bD, f '@bD<<<;
pol = Simplify@InterpolatingPolynomial@datos, xDD;
SimplifyA‡ pol xE
b
a
ü Ejemplos de uso de fórmulas compuestas
ü Fórmula del rectángulo compuesta.
Vamos a aplicar varias fórmulas a la integración en @0, 2D de la función Hx3 − x + 2L x . Su valor exacto, en este caso,
se puede obtener con la orden Integrate[función, {variable, límite inferior, límite superior}]. En aprox1 guardamos la
aproximación obtenida con la fórmula del rectángulo derecha, en aprox2 guardamos el resultado del trapecio y en
aprox3 el de Simpson. En todos los casos el número de subintervalos es el mismo, n = 200.
Integrate@Hx3 − x + 2L
N@%D
x
, 8x, 0, 2<D
316
f@x_D := Hx3 − x + 2L x
a = 0.;
b = 2.;
n = 200;
b−a
h=
;
n
nod = Table@a + i h, 8i, 0, n<D;
aprox1 = h ‚ f@nodPi + 1TD
n
i=1
error1 = 3. + 3.
2.
− aprox1
ü Fórmulas compuestas basadas en las del trapecio y Simpson
n
i1
y
1
j
z
z
aprox2 = h j
j
j 2 f@nodP1TD + ‚ f@nodPiTD + 2 f@nodPn + 1TDz
z
i=2
k
{
error2 = 3. + 3.
aprox3 =
2.
− aprox2
n
n
y
i
h
z
j
z
hj
j
f@nodP1TD + 2 ‚ f@nodPiTD + 4 ‚ fAnodPiT + E + f@nodPn + 1TDz
z
j
2
6 k
i=2
i=1
{
1
error3 = 3. + 3.
2.
− aprox3
Observamos la gran precisión de la fórmula de Simpson, que es una de las más usadas en la práctica.
Mathematica y la integración numérica.
Mathematica tiene una orden de integración numérica, es NIntegrate, que nos da la respuesta con 6 dígitos, pero
podemos recuperar hasta la precisión interna estándar (unas 15 cifras) si lo pedimos a través de WorkingPrecision.
NIntegrate@Hx3 − x + 2L
x
, 8x, 0, 2<, WorkingPrecision → 20D
No debe confundir NIntegrate con Integrate. La primera lleva programada una integración numérica y puede aplicarla
a cualquier función definida y acotada en un intervalo @a, bD; sin embargo, la segunda requiere que la función tenga una
x
primitiva, a la que aplica la regla de Barrow. Intente integrar en el intervalo @1, 2D la función x usando ambas
órdenes.
Ejercicios
1.- Obtenga mediante interpolación en el espacio 2 una fórmula para aproximar f '' HaL del tipo combinación de
f Ha - hL, f HaL y f Ha + hL.
2.- Con la fórmula obtenida en el ejercicio 1, halle una tabla de aproximaciones y errores de f1'' H2.5L, siendo f1 HxL = xx ,
para h = 10-i , i = 1, ..., 5.
x +40
3.- Sea f2 HxL = ÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅÅ
è!!!!!ÅÅÅÅ
!! ÅÅÅÅÅ . Calcule una tabla que recoja las derivadas de f2 en xi = 1, 2, ..., 10, utilizando la primera
2
x+ 5 x +7
fórmula de derivación numérica obtenida al inicio de la práctica, con h = 10-3 , y muestre al mismo tiempo el error
317
cometido en cada punto. Repita el ejercicio con la segunda fórmula obtenida para la derivada primera y, finalmente,
para la obtenida en el ejercicio 1 (con respecto a la segunda derivada).
4.- Divida el intervalo @1, 2D en 100 partes iguales y aplique las fórmulas del rectángulo, Simpson y trapecio compuestas para aproximar la integral en dicho intervalo de f1 . Compare los resultados obtenidos con los que se calculan
mediante el comando NIntegrate.
5.- Repita el ejercico 4 para f2 .
6.- Sea f3 HxL = x15 ex en @0, 2D. Vamos a dividir el intervalo en 10 µ 2n subintervalos, es decir, 10, 20, 40, 80, ....y a
aplicar la fórmula de Simpson compuesta hasta que la diferencia entre dos aproximaciones consecutivas (por ejemplo,
podrían ser con 20 y 40 subintervalos) sea menor que 10-2 , dando en tal caso por buena la última aproximación
obtenida. Programe y calcule dicha aproximación. Compare el resultado con el obtenido mediante el comando NIntegrate y compare ambas aproximaciones con el valor exacto.
Descargar