Professional Documents
Culture Documents
Derivacion numerica
Contenidos del captulo
2.1 Formulas de diferencias de dos puntos . . . . . . . . . . . . . 22
2.2 Inuencia de los errores de truncacion y de redondeo. . . . 23
2.3 Formulas de orden superior . . . . . . . . . . . . . . . . . . . 24
2.4 Derivadas de orden superior . . . . . . . . . . . . . . . . . . . 26
Consideremos una funcion f(x) de la cual se conoce un conjunto discreto de valores
(x
0
, f
0
), (x
1
, f
1
),...,(x
n
, f
n
). El problema que vamos a abordar es el de calcular la derivada
de la funcion en un punto x que en principio no tiene porque coincidir con alguno
de los que guran en los datos de que disponemos. La forma mas sencilla de resolver
el problema de la diferenciacion numerica consiste en estimar la derivada utilizando
formulas obtenidas mediante la aproximacion de Taylor, que se denominan formulas de
diferencias nitas.
Es importante tener en cuenta que el proceso de diferenciacion numerica es inestable.
Los errores que tengan los datos, por ejemplo los cometidos en la adquisicion de los
mismos o los debidos al redondeo aumentan en el proceso de diferenciacion como veremos
a lo largo de este captulo.
21
22 Metodos Numericos
2.1 Formulas de diferencias de dos puntos
Recordemos que la denicion de derivada implica el calculo de un lmite
f
(x) = lm
h0
f(x + h) f(x)
h
Este proceso de paso al lmite presenta distintos problemas para ser realizado en situa-
ciones practicas donde no se conozca la forma expcita de f
(x) = lm
h0
f(x + h) f(x)
h
f(x + h
0
) f(x)
h
0
Es mas, la misma denicion de la derivada implica que si f
(x) =
f(x + h) f(x)
h
h
2
f
(x) +
h
2
2
f
(x) = lm
h0
f(x) f(x h)
h
f(x) f(x h
0
)
h
0
.
Derivacion numerica 23
Un problema que presenta esta formula es que la precision de la misma es baja y
por lo tanto en situaciones donde solo dispongamos de un muestreo de baja precision de
f(x), como ocurre en ensayos, datos experimentales, etc., sera conveniente utilizar otras
formulas de derivacion mas precisas.
2.2 Inuencia de los errores de truncacion y de redondeo.
Recordemos que debido a la naturaleza discreta del computador los resultados numericos
no son exactos y que el error de redondeo esta siempre presente en los calculos. Por ello,
cuando calculamos derivadas numericamente el error en la solucion es la suma del error
de truncacion, que proviene de la formula de aproximacion, y el de redondeo, que es
debido al computador. Ambos errores pueden ser importantes e interesa minimizarlos
conjuntamente.
Sabemos que el error de truncacion puede reducirse disminuyendo h en la formula
(2.1), sin embargo, al disminuir h vamos restando valores de f(x) cada vez mas proximos
y esto se traduce en una mayor inuencia del error de redondeo. Por ello, la mejor
precision no se consigue con el valor de h mas peque no posible, sino con un valor que
sin producir una gran error de redondeo disminuya lo suciente el error de truncacion.
Vamos a estudiar este efecto en un ejemplo. Supongamos que queremos calcular
la derivada de la funcion f(x) = arctan x en el punto x =
(x)
(f
2
) (f
1
)
h
=
f
2
e
2
f
1
+ e
1
h
=
f
2
f
1
h
+
e
1
e
2
h
,
donde (x) es la representacion en el ordenador del n umero real x, que esta afectada del
error de redondeo que depende de la precision del computador en el que se realicen los
calculos (que determina el redondeo).
En resumen, para valores de h mayores que un cierto h
0
el error dominante es el de
truncacion y para valores menores el error dominante es el de redondeo.
El hecho de que el error de redondeo pueda tener una inuencia tan decisiva es lo
que produce que el proceso de diferenciacion numerica sea inestable. Esto es importante,
por ejemplo, cuando se quiere calcular derivadas de datos experimentales, que tienen
errores debidos a las medidas experimentales, ruidos, etc., la diferenciacion numerica
de estos datos puede producir resultados imprecisos. Como al calcular la derivada se
divide la diferencia de funciones por un valor de h generalmente peque no los errores se
ven multiplicados por un factor muy grande O(1/h). Por esto, la diferenciacion numerica
de datos experimentales debe realizarse con cuidado. Un medio de eliminar los errores de
estos datos es utilizar metodos de ltrado o suavizado antes de calcular numericamente
la derivada.
2.3 Formulas de orden superior
El error de truncacion de la formula de diferencia adelantada de dos puntos vara lineal-
mente con h, de manera que es necesario usar valores de h muy peque nos para reducir
sucientemente los errores de truncacion. Es posible deducir formulas para las derivadas
con errores de truncacion mas peque nos. Por ejemplo, tomemos
f(x + h) = f(x) + hf
(x) +
h
2
2!
f
(x) +
h
3
3!
f
(z
1
)
f(x h) = f(x) hf
(x) +
h
2
2!
f
(x)
h
3
3!
f
(z
2
)
donde z
1
(x, x + h) y z
2
(x h, x). Restando (2.1a) y (2.1a) obtenemos
f
(x) =
f(x + h) f(x h)
2h
h
2
12
(z
1
) + f
(z
2
)
que nos proporciona una siguiente aproximacion para la derivada con un termino de
error de truncacion que depende cuadraticamente de h. Usando el teorema del valor
intermedio f
(z) = (f
(z
1
) + f
(z
2
))/2, y entonces, si f es sucientemente derivable
E =
h
2
6
f
(z) = O(h
2
), z (x h, x + h)
Derivacion numerica 25
Usando los desarrollos de Taylor de f(x+h) y f(x+2h) se encuentra la llamada formula
de diferencia adelantada de tres puntos que es:
f
(x) =
3f(x) + 4f(x + h) f(x + 2h)
2h
h
2
3
f
(z).
Reemplazando h por h en (2.3) obtenemos una formula de diferencias retrasadas de
tres puntos
f
(x) =
3f(x) 4f(x h) + f(x 2h)
2h
h
2
3
f
(z)
De todas estas, la formula de diferencia centrada es la que tiene, en principio, menor
error de truncacion y la que requiere menos evaluaciones de la funcion, siendo por lo
tanto mas eciente desde el punto de vista computacional.
Utilizando el valor de la funcion en mas puntos se construyen formulas mas precisas
para las derivadas. Alguna de ellas se muestra en la tabla siguiente junto con las que
hemos deducido ya
Formulas para calcular derivadas primeras
f
(x) =
f(x + h) f(x)
h
+O(h)
f
(x) =
3f(x) + 4f(x + h) f(x + 2h)
2h
+O(h
2
)
f
(x) =
3f(x) 4f(x h) + f(x 2h)
2h
+O(h
2
)
f
(x) =
f(x 2h) 8f(x h) + 8f(x + h) f(x + 2h)
12h
+O(h
4
)
f
(x) =
25f(x) + 48f(x + h) 36f(x + 2h) + 16f(x + 3h) 3f(x + 4h)
12h
+O(h
4
)
Como ejemplo, si aplicamos estas formulas al problema de encontrar la derivada de
f(x) = arctan x en x =
(x) +
h
2
2!
f
(x) +
h
3
3!
f
(x) +
h
4
4!
f
(4)
(z
1
)
f(x h) = f(x) +hf
(x) +
h
2
2!
f
(x) +
h
3
3!
f
(x) +
h
4
4!
f
(4)
(z
2
)
Sumando las ecuaciones anteriores y despejando se encuentra que:
f
(x) =
f(x + h) 2f(x) + f(x h)
h
2
h
2
12
f
(4)
(z)
Procediendo de la misma forma es posible encontrar aproximaciones que usen diferentes
puntos y aproximaciones para derivadas de orden superior. La tabla siguiente presenta
algunas de las formulas mas comunes para calcular derivadas de orden superior.
Derivacion numerica 27
Formulas para calcular derivadas segundas
f
(x
0
) =
f
2
2f
1
+ f
0
h
2
+O(h)
f
(x
0
) =
f
1
2f
0
+ f
1
h
2
+O(h
2
)
f
(x
0
) =
f
3
+ 4f
2
5f
1
+ 2f
0
h
2
+O(h
2
)
f
(x
0
) =
f
2
+ 16f
1
30f
0
+ 16f
1
f
2
12h
2
+O(h
4
)
Formulas para calcular derivadas terceras
f
(iii)
(x
0
) =
f
3
3f
2
+ 3f
1
f
0
h
3
+O(h)
f
(iii)
(x
0
) =
f
2
2f
1
+ 2f
1
f
2
2h
3
+O(h
2
)
f
(iii)
(x
0
) =
f
3
8f
2
+ 13f
1
13f
1
+ 8f
2
f
3
8h
3
+O(h
4
)
Formulas para calcular derivadas cuartas
f
(iv)
(x
0
) =
f
4
4f
3
+ 6f
2
4f
1
+ f
0
h
4
+O(h)
f
(iv)
(x
0
) =
f
2
4f
1
+ 6f
0
4f
1
+ f
2
h
4
+O(h
2
)
f
(iv)
(x
0
) =
f
3
+ 12f
2
39f
1
+ 56f
0
39f
1
+ 12f
2
f
3
6h
4
+O(h
4
)
Ejercicios
2.1 Escribir una funcion MATLAB df(x) que admita como entradas una vector
de puntos x y los valores de una funcion f en los mismos y que calcule el
valor de la derivada primera en los mismos utilizando la formula de diferencia
adelantada. Para calcular el valor en el extremo superior debe usarse la formula
de diferencia retrasada.
2.2 Aplicar la formula de dos puntos adelantada al calculo de la derivada primera
de f(x) = sen x en x = 2.13432. Comprobar que al ir reduciendo h el error se
reduce de manera aproximadamente lineal con h.
28 Metodos Numericos
2.3 Repetir el ejercicio anterior comparando la precision de la formula de diferencia
adelantada con la retrasada. Aplicar tambien ambas formulas al calculo de la
derivada de la funcion g(x) = 1/(1 + e
x
) en x = 1/2.
2.4 Supongamos que se conoce el valor de la derivada mediante la formula de
diferencia adelantada para tres valores de h diferentes. Es posible estimar el
valor del h optimo? Es posible estimar el error que se comete en el calculo
en cada uno de los casos?. Aplicarlo al calculo de la derivada de la funcion
f(x) = sen x en x = 0.6 usando h = 0.1, h = 0.01 y h = 0.0000000001.
2.5 Calcular la derivada de la funcion f(x) = tan x en x = 3.14 usando h = 0.1 y
h = 0.01. Comparar el resultado con el valor exacto. Es buena la aproxima-
cion? Por que?.
2.6 Calcular cotas para el error de truncacion que se comete al aproximar las de-
rivadas de las funciones f(x) = 1/(1 + sen x) y g(x) = log(1 + 2x). Calcular
las cotas teniendo en cuenta el error de redondeo y comprobar que los errores
reales estan por debajo de lo permitido por la cota.
2.7 Construir una tabla de derivadas primeras de la funcion g(x) denida por la si-
guiente tabla en los puntos x
j
con la mayor precision posible mediante formulas
de tres puntos.
x g(x)
1.0 1.000000
1.2 0.997502
1.4 0.990025
1.8 0.960398
2.0 0.940678
2.8 Usando la formula de diferencia centrada calcular la derivada primera de la
funcion f(x) = arctan x en el punto x =
(x).
2.10 Se conocen los valores de la funcion de Bessel J
0
(x) en los puntos J
0
(0.0) =
1.00000000, J
0
(0.1) = 0.99750156, J
0
(0.2) = 0.99002497, J
0
(0.3) = 0.97762625,
J
0
(0.4) = 0.96039823 y J
0
(0.5) = 0.93846981. Construir una tabla de derivadas
en esos puntos con la mayor precision posible usando las formulas de tres puntos
mas apropiadas.
2.11 Calcular la derivada primera de la funcion f(x) = |x 2| cos x en x = 2 usando
las formulas de diferencias centradas y adelantadas. Comparar los resultados.
Derivacion numerica 29
2.12 Considerese la funcion
f(x) =
0, 1 < x <
4
5
e
x
2
,
4
5
< x < 1
Para calcular f