You are on page 1of 10

Captulo 2

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). En primer lugar un


lmite no puede calcularse de modo aproximado en un computador donde los n umeros
que se manejan son nitos. A pesar de todo es de esperar que si la funcion f(x) no se
comporta mal y h
0
es un n umero nito pero peque no se cumpla:
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) existe, entonces hay


alg un h
0
a partir del cual nuestra aproximacion dista menos de una cantidad del valor
real para la derivada. El problema es que esto solo es cierto con precision innita ya que
h
0
puede ser tan peque no que no pueda representarse en el ordenador o que la diferencia
f(x + h
0
) f(x) este seriamente afectada por el error de redondeo.
La ecuacion (2.1) es la forma mas sencilla de aproximar una derivada conocidas f(x)
y f(x+h
0
). El siguiente teorema nos proporciona informacion sobre la precision de esta
aproximacion.
Teorema. Sea f(x) C
1
(a, b) y existe f

(x) en (a, b), entonces se cumple que:


f

(x) =
f(x + h) f(x)
h

h
2
f

(z), x < z < x + h


Demostracion. Escribamos la aproximacion de Taylor para la funcion en un punto x+h:
f(x + h) = f(x) + hf

(x) +
h
2
2
f

(z), x < z < x + h


Reordenando la expresion anterior queda demostrado el teorema.
El teorema anterior nos indica que el error cometido al aproximar la derivada primera
por su formula de diferencia adelantada es una funcion lineal de h. Cuanto menor sea
h (o sea al tomar valores de f(x) mas cercanos) la derivada numerica sera mas precisa.
Este error se denomina error de truncacion o discretizaci on y puede acotarse facilmente,
obteniendose que: E
h
2
max
(x,x+h)
|f

(z)|. En realidad, para datos obtenidos a partir


de una tabla esta acotacion no es de gran utilidad directa ya que si no se conoce la
derivada primera menos a un se conocera la segunda pero al menos nos permite conocer
el orden de aproximacion de la formula.
Geometricamente el error O(h) procede del hecho de aproximar la derivada por la
pendiente de la cuerda que une los puntos f(x) y f(x + h), Por otro lado, si existe la
derivada deben existir las derivadas laterales y entonces
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 =

2 (el valor correcto es


f

2) = 1/3). Calculemos la derivada con la formula adelantada de dos puntos y


diferentes valores de h.
h = logspace(0,-14);
fp = (atan(sqrt(2)+h)-atan(sqrt(2)))./h;
error = abs(fp-1/3);
plot(log(h),log(error),Linewidth,4););
xlabel(log(h)); ylabel(log(e));
35 30 25 20 15 10 5 0
22
20
18
16
14
12
10
8
6
4
2
log(h)
lo
g
(
e
)
En la graca vemos como disminuyendo h el error se va reduciendo hasta llegar a
un cierto punto a partir del cual el error aumenta. Ademas, hasta el momento en que
el error empieza a crecer este vara como linealmente con h (O(h)). Al llegar a valores
24 Metodos Numericos
de h del orden de 10
8
se restan valores de f(x) (f
2
y f
1
) muy proximos y debido al
redondeo que realiza el ordenador esto se traduce en errores grandes, dando lugar al
fenomeno llamado anulacion catastroca. Vemos como a partir de este momento el
error vara aproximadamente como O(1/h), esto es, inversamente proporcional a h. Este
comportamiento es razonable ya que el error de redondeo afecta a las cantidades f
2
y
f
1
y por lo tanto el error acumulado debido al redondeo puede escribirse como:
f

(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 =

2 y comparar as su funcionamiento en un caso practico con


h = 0.1. encontramos los siguientes resultados
Puntos Dos Tres Tres Cinco Cinco
Tipo adelantada centrada adelantada centrada
Resultado 0.318220 0.333951 0.332202 0.333333 0.333327
Error 1.510
3
6.2 10
4
1.1 10
3
2.710
7
610
6
Se comprueba la mayor precision de las formulas de orden superior y, dentro de las
formulas del mismo n umero puntos, la mayor precision de las formulas centradas.
La funcion MATLAB dc que presentamos a continuacion calcula el valor de la de-
rivada primera de la tabla de valores de una funcion usando la formula de tres puntos
centrada en los puntos interiores y formulas de diferencias adelantada y retrasada en los
extremos del mismo.
26 Metodos Numericos
function df=dc(f,x)
%
% df=dc(f,x) Calcula la derivada de la funcion f en los puntos de x
%
% Variables de entrada
% f: Valores de la funcion que se desea derivar
% x: Puntos donde se desea obtener la derivada
%
% Variables de salida:
% df: vector con las derivadas en cada punto
%
M = length(x); df=zeros(1,M);
h=x(2)-x(1); ih=1/(2
*
h);
df(1)=(-f(3)+4
*
f(2)-3
*
f(1))
*
ih;
for i=2:M-1
df(i)=(f(i+1)-f(i-1))
*
ih;
end
df(M)=(f(M-2)-4
*
f(M-1)+3
*
f(M))
*
ih;
2.4 Derivadas de orden superior
El mismo procedimiento que se ha seguido al deducir formulas para calcular numerica-
mente las derivadas primeras puede usarse para construir derivadas de orden superior
partiendo del desarrollo de Taylor y eliminando las derivadas primeras. Consideremos
por ejemplo las expresiones:
f(x + h) = f(x) + hf

(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 =

2 (el valor correcto es 1/3). Utilizar


diferentes valores de h y estudiar los efectos de los errores de redondeo y de
truncacion.
2.9 Deducir una formula de cinco puntos que utilice los valores de la funcion en los
puntos x,x + h,x + 2h, x + 3h y x h para calcular f

(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

(4/5) sera mejor usar una formula adelantada o una centrada?


2.13 Deducir las formulas centrada y adelantada para la derivada tercera.
2.14 Al calcular la derivada segunda de una funcion, que formula tendra menor
inuencia del error de redondeo, la centrada de tres puntos o la centrada de
cinco puntos? Razonar la respuesta y comprobar la hipotesis con el ejemplo de
la funcion f(x) = e
x
. Comparar los errores de redondeo con los que aparecen
al calcular f

(x). Cuales son mayores?


2.15 Estudiar el efecto de los errores de truncacion y redondeo en la formula centrada
de cinco puntos para f

. Particularizar para f(x) = 1/(1 + x


2
) en x = 1.
2.16 Deducir el termino de error O(h
5
) en la formula de cinco puntos para f