Está en la página 1de 5

Dame 5 puntos de f (x) y te dare una aproximacion de f 0(x)

Guillermo Campelo
Resumen
En este artculo muestro c
omo obtener una formula de 5 puntos y muestro resultados
obtenidos al aplicarla a 2 funciones.

1.

Introducci
on

C uando obtener la derivada de determinada funcion es muy laborioso o se quiere obtener la derivada de cierta funcion(que se desconoce) dado un dataset, se puede aproximar el valor de la(s) derivada(s) en un punto usando formulas de derivacion numerica. En este artculo voy a obtener una
formula centrada de 5 puntos para la derivada primera.
E n la seccion 2 voy la formula de 5 puntos de la derivada primera de una funcion. En la seccion 3
voy a obtener el error de esa aproximacion. En la seccion 4 muestro el codigo de una funcion escrita
en C/C++ que utiliza lo obtenido en la seccion 2 y 3 para obtener la aproximacion de f 0 (x0 ) y su
correspondiente
cota de error. En la seccion 5 aplique la anterior funcion a f (x) = x2 + sin 3x y a
R ezt
Ei(n, z) = 1 tn dt.

2.

C
alculo de f
ormula de 5 puntos de f 0(x0)

D esarrolle el polinomio de Taylor para la funcion evaluada en los puntos (x0 2h, x0 h, x0 +
h, x0 + 2h), obteniedo:
f (2) (x0 )h2 f (3) (x0 )h3 f (4) (x0 )h4
f (x0 + h) f (x0 ) + f (x0 )h +
+
+
2!
3!
4!
(2)
2
(3)
3
(4)
f (x0 )h
f (x0 )h
f (x0 )h4
f (x0 h) f (x0 ) f 0 (x0 )h +

+
2!
3!
4!
(2)
2
(3)
3
(4)
f (x0 )(2h)
f (x0 )(2h)
f (x0 )(2h)4
0
f (x0 + 2h) f (x0 ) + f (x0 )2h +
+
+
2!
3!
4!
(2)
2
(3)
3
(4)
f (x0 )(2h)
f (x0 )(2h)
f (x0 )(2h)4
f (x0 2h) f (x0 ) f 0 (x0 )2h +

+
2!
3!
4!
Luego, reste (2) a (1) y obtuve:
0

f (x0 + h) f (x0 h) 2f 0 (x0 )h + 2

f (3) (x0 )h3


3!

(1)
(2)
(3)
(4)

(5)

Hice lo mismo con (4) y (3), obteniendo:


f (x0 + 2h) f (x0 2h) 2f 0 (x0 )2h + 2

f (3) (x0 )(2h)3


3!

(6)

Finalmente 8 (5) (6):


8f (x0 + h) 8f (x0 h) f (x0 + 2h) + f (x0 2h) 12f 0 (x0 )h

(7)

Despejando f 0 (x0 ) de (7), obtuve la formula de 5 puntos:


f 0 (x0 )

8f (x0 + h) 8f (x0 h) f (x0 + 2h) + f (x0 2h)


12h

(8)

H ay que resaltar que son aproximaciones, debido a que no se tienen en cuenta los errores (ver
Calculando errores de aproximacion)

3.

Calculando errores de aproximaci


on

C alcule los errores correspondientes a las ecuaciones (1) ... (8) y obtuve:
(La ecuacion (9) es el error de la ecuacion (1) y as sucesivamente)
f (5) ()h5
, {x0 , x0 + h}
5!
f (5) ()h5

, {x0 h, x0 }
5!
f (5) ( )(2h)5
, {x0 , x0 + 2h}
5!
f (5) ()(2h)5

, {x0 2h, x0 }
5!
f (5) ()h5
2
, {x0 h, x0 + h}
5!
f (5) ()(2h)5
2
, {x0 2h, x0 + 2h}
5!
f (5) ()h5
48
, {x0 2h, x0 + 2h}
5!
f (5) ()h5
4
, {x0 2h, x0 + 2h}
5!
Resolv 4/5! para obtener la formula final del error:

f (5) ()h4
, {x0 2h, x0 + 2h}
30

(9)
(10)
(11)
(12)
(13)
(14)
(15)
(16)

(17)

4.

Utilizando la potencia de un lenguaje de programaci


on

C omo se puede ver en el prototipo, la funcion recibe un arreglo f con los valores de la funcion en
los puntos x0 2h, x0 h, x0 , x0 + h, x0 + 2h, una cota de error de la derivada quinta de la funcion
en (x0 2h, x0 + 2h), la separacion entre los puntos f y dos punteros donde dejar la aproximacion
de f 0 (x0 ) y la cota del error de esa aproximacion.

double
mi_dif5(double f[], double m5, double h, double * aprox, double * err)
{
double aux;
aux = f[0] - 8.0*f[1] + 8.0*f[3] - f[4];
aux = aux / ( 12.0 * h );
*aprox = aux;
*err = - m5 * pow(h,4.0) / 30.0;
return aux;
}

5.

Realizando los c
alculos

U tilice la funcion definida anteriormente para calcular f 0 (x) en los puntos 0.0 0.1 ... 2.0, siendo
f (x) = x2 R+ sin 3x. Los resultados se pueden ver en el cuadro 1. Hice lo mismo para la funcion
zt
Ei(n, z) = 1 e tn dt y los resultados se pueden ver en el cuadro 2.
Para los calculos en los primeros dos puntos se utilizo una formula progresiva y para los u
ltimos dos
puntos se utilizo una formula regresiva.

6.

Conclusiones

L a formula de 5 puntos nos provee un calculo rapido de la derivada de una funcion (sea o no
conocida) y con un error del orden (h4 ). As, de forma rapida, podemos saber la formade f 0 (x)
conociendo o no f (x).

x
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1
1.2
1.3
1.4
1.5
1.6
1.7
1.8
1.9
2.0

f (x)0
0
0.9153774864203949
2.875345448134937
2.464331767195677
1.886782881941173
1.2121549185553
0.5185757881455243
-0.1141337468717757
-0.6115902237516869
-0.9114919326151215
-0.9691841426421864
-0.7616479761832942
-0.2895566165436236
0.4227848254766379
1.329610414743336
2.367781526471448
3.462426831534436
4.533630329309471
5.503570006003199
0.2578601599613677
1.128107793147706

Cuadro 1: Calculo de f 0 (x) de la funcion f (x) = x2 + sin 3x.

x
0.0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1.0
1.1
1.2
1.3
1.4
1.5

Ei(2, x)
1.00000000000000
0.72254502219402
0.57420064424120
0.46911522517896
0.38936799848937
0.32664386232455
0.27618393418039
0.23494711352795
0.20085170128079
0.17240411434720
0.14849550677592
0.12828108870844
0.11110408769045
0.09644554783014
0.08388992634171
0.07310078653848

Ei0 (2, x)
4.000000000000001
3.083110253624664
-1.180671978841541
-0.9023000051209748
-0.7014618273120579
-0.5594203356840248
-0.4542147443035167
-0.373681762682875
-0.3105463050346084
-0.260152942682875
-0.21936382626645
-0.1859773218055833
-0.1583989554934916
-0.1354441571833001
0.4982803059218459
0.4423771661250657

Cuadro 2: Calculo de Ei0 (2, x) a partir de los valores de Ei(2, x) en los puntos {0.0 0.1 ... 1.5}.

También podría gustarte