You are on page 1of 10

Capı́tulo 2

Derivación numérica

Contenidos del capı́tulo


2.1 Fórmulas de diferencias de dos puntos . . . . . . . . . . . . . 26
2.2 Influencia de los errores de truncación y de redondeo. . . . 27
2.3 Fórmulas de orden superior . . . . . . . . . . . . . . . . . . . 28
2.4 Derivadas de orden superior . . . . . . . . . . . . . . . . . . . 30

Consideremos una función f (x) de la cual se conoce un conjunto discreto de valores


(x0 , f0 ), (x1 , f1 ),...,(xn , fn ). El problema que vamos a abordar es el de calcular la derivada
de la función en un punto x que en principio no tiene porqué pertenecer a los datos de que
disponemos. La forma más sencilla de resolver el problema de la diferenciación numérica
consiste en estimar la derivada utilizando fórmulas obtenidas mediante la aproximación
de Taylor, que se denominan fórmulas de diferencias finitas.
Es importante tener en cuenta que el proceso de diferenciación numérica es inestable.
Los errores que tengan los datos, por ejemplo los cometidos en la adquisición de los
mismos o los debidos al redondeo aumentan en el proceso de diferenciación como veremos
a lo largo de éste capı́tulo.

25
Versión 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Derivación numérica 26

2.1 Fórmulas de diferencias de dos puntos


Recordemos que la definición de derivada implica el cálculo de un lı́mite
f (x + h) − f (x)
f ′ (x) = lı́m
h→0 h
Este proceso de paso al lı́mite no puede realizarse en situaciones prácticas donde no
se conozca la forma explı́cita de f ′ (x) dado que esta operación no puede calcularse de
modo aproximado en un computador donde los números que se manejan son finitos. Sin
embargo, es de esperar que si la función f (x) no se comporta mal y h0 es un número
finito pero pequeño se cumpla que
f (x + h) − f (x) f (x + h0 ) − f (x)
f ′ (x) = lı́m ≃
h→0 h h0
Es más, la misma definición de la derivada implica que si f ′ (x) existe, entonces hay
algún h0 a partir del cual nuestra aproximación dista menos de una cantidad δ del valor
real para la derivada. El problema es que esto sólo es cierto con precisión infinita ya que
h0 puede ser tan pequeño que no pueda representarse en el ordenador o que la diferencia
f (x + h0 ) − f (x) esté seriamente afectada por el error de redondeo.
La ecuación anterior nos proporciona la forma más sencilla de aproximar una deriva-
da conocidas f (x) y f (x + h0 ). El siguiente teorema nos proporciona información sobre
la precisión de esta aproximación.
Teorema. Sea f (x) ∈ C 1 (a, b) y existe f ′′ (x) en (a, b), entonces se cumple que:
f (x + h) − f (x) h ′′
f ′ (x) = − f (z), x < z < x + h
h 2
Demostración. Escribamos la aproximación de Taylor para la función en un punto x+h:
h2 ′′
f (x + h) = f (x) + hf ′ (x) +
f (z), x < z < x + h
2
Reordenando la expresión anterior queda demostrado el teorema.
El teorema anterior nos indica que el error cometido al aproximar la derivada primera
por su fórmula de diferencia adelantada es proporcional a h. Cuanto menor sea h (o sea
al tomar valores de f (x) más cercanos) la derivada numérica será más precisa. Este
error se denomina error de truncación o discretización y puede acotarse fácilmente,
obteniéndose que: E ≤ h2 máx(x,x+h) |f ′′ (z)|. En realidad, para datos obtenidos a partir
de una tabla esta acotación no es de gran utilidad directa ya que si no se conoce la
derivada primera menos aún se conocerá la segunda pero al menos nos permite conocer
el orden de aproximación de la fórmula.
Geométricamente, el error O(h) procede 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) − f (x − h) f (x) − f (x − h0 )
f ′ (x) = lı́m ≃ .
h→0 h h0
Un problema que presenta esta fórmula es que la precisión de la misma es muy baja
y en general cuando sea posible convendrá utilizar otras fórmulas de derivación más
precisas.

Versión 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Derivación numérica 27

2.2 Influencia de los errores de truncación y de redondeo.


Debido a la naturaleza finita del computador los resultados numéricos no son exactos y
el error de redondeo está siempre presente en los cálculos. Por ello, cuando calculamos
derivadas numéricamente el error en la solución es la suma del error de truncación, que
proviene de la fórmula de aproximación, y el de redondeo, que es debido al computador.
Ambos errores pueden ser importantes e interesa minimizarlos conjuntamente.
Sabemos que el error de truncación puede reducirse disminuyendo h, sin embargo, al
disminuir h vamos restando valores de f (x) cada vez más próximos y esto se traduce en
una mayor influencia del error de redondeo. Por ello, la mejor precisión no se consigue
con el valor de h más pequeño posible, sino con un valor que sin producir una gran error
de redondeo disminuya lo suficiente el error de truncación.
Vamos a estudiar este efecto en un ejemplo. Supongamos√que queremos calcular
la √ derivada de la función f (x) = arctan x en el punto x = 2 (el valor correcto es
f ′ ( 2) = 1/3). Calculemos la derivada con la fórmula 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)’);

−2

−4

−6

−8

−10
log(e)

−12

−14

−16

−18

−20

−22
−35 −30 −25 −20 −15 −10 −5 0
log(h)

En la gráfica vemos como disminuyendo h el error se va reduciendo hasta llegar a


un cierto punto a partir del cual el error aumenta. Además, hasta el momento en que
el error empieza a crecer éste varı́a como linealmente con h (O(h)). Al llegar a valores
de h del orden de 10−8 se restan valores de f (x) (f2 y f1 ) muy próximos y debido al
redondeo que realiza el ordenador esto se traduce en errores grandes, dando lugar al
fenómeno llamado “anulación catastrófica”. Vemos como a partir de este momento el
error varı́a aproximadamente como O(1/h), esto es, inversamente proporcional a h. Este

Versión 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Derivación numérica 28

comportamiento es razonable ya que el error de redondeo afecta a las cantidades f2 y


f1 y por lo tanto el error acumulado debido al redondeo puede escribirse como:
fl(f2 ) − fl(f1 ) f2 − e2 − f1 + e1 f2 − f1 e1 − e2
f ′ (x) ≃ = = + ,
h h h h
donde fl(x) es la representación en el ordenador del número real x, que está afectada del
error de redondeo que depende de la precisión del computador en el que se realicen los
cálculos (que determina el redondeo).
En resumen, para valores de h mayores que un cierto h0 el error dominante es el de
truncación y para valores menores el error dominante es el de redondeo.
El hecho de que el error de redondeo pueda tener una influencia tan decisiva es lo
que produce que el proceso de diferenciación numérica 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 diferenciación numérica
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ño los errores se
ven multiplicados por un factor muy grande O(1/h). Por esto, la diferenciación numérica
de datos experimentales debe realizarse con cuidado. Un medio de eliminar los errores de
estos datos es utilizar métodos de filtrado o suavizado antes de calcular numéricamente
la derivada.

2.3 Fórmulas de orden superior


El error de truncación de la fórmula de diferencia adelantada de dos puntos varı́a lineal-
mente con h, de manera que es necesario usar valores de h muy pequeños para reducir
suficientemente los errores de truncación. Es posible deducir fórmulas para las derivadas
con errores de truncación más pequeños. Por ejemplo, tomemos
h2 ′′ h3 ′′′
f (x + h) = f (x) + hf ′ (x) + f (x) + f (z1 )
2! 3!
h2 h3 ′′′
f (x − h) = f (x) − hf ′ (x) + f ′′ (x) − f (z2 )
2! 3!
donde z1 ∈ (x, x + h) y z2 ∈ (x − h, x). Restando (2.1a) y (2.1a) obtenemos
f (x + h) − f (x − h) h2  ′′′
f ′ (x) = f (z1 ) + f ′′′ (z2 )


2h 12
que nos proporciona una siguiente aproximación para la derivada con un término de
error de truncación que depende cuadráticamente de h. Usando el teorema del valor
intermedio f ′′′ (z) = (f ′′′ (z1 ) + f ′′′ (z2 ))/2, y entonces, si f es suficientemente derivable
h2 ′′′
E= f (z) = O(h2 ), z ∈ (x − h, x + h)
6
Usando los desarrollos de Taylor de f (x+ h) y f (x+ 2h) se encuentra la llamada fórmula
de diferencia adelantada de tres puntos que es:
−3f (x) + 4f (x + h) − f (x + 2h) h2 ′′′
f ′ (x) = − f (z).
2h 3

Versión 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Derivación numérica 29

Reemplazando h por −h en (2.3) obtenemos una fórmula de diferencias retrasadas de


tres puntos
3f (x) − 4f (x − h) + f (x − 2h) h2 ′′′
f ′ (x) = − f (z)
2h 3
De todas estas, la fórmula de diferencia centrada es la que tiene, en principio, menor
error de truncación y la que requiere menos evaluaciones de la función, siendo por lo
tanto más eficiente desde el punto de vista computacional.
Utilizando el valor de la función en más puntos se construyen fórmulas más precisas
para las derivadas. Alguna de ellas se muestra en la tabla siguiente junto con las que
hemos deducido ya

Fórmulas para calcular derivadas primeras

f (x + h) − f (x)
f ′ (x) = + O(h)
h
−3f (x) + 4f (x + h) − f (x + 2h)
f ′ (x) = + O(h2 )
2h
3f (x) − 4f (x − h) + f (x − 2h)
f ′ (x) = + O(h2 )
2h
f (x − 2h) − 8f (x − h) + 8f (x + h) − f (x + 2h)
f ′ (x) = + O(h4 )
12h
−25f (x) + 48f (x + h) − 36f (x + 2h) + 16f (x + 3h) − 3f (x + 4h)
f ′ (x) = + O(h4 )
12h

Como ejemplo, si aplicamos


√ estas fórmulas al problema de encontrar la derivada de
f (x) = arctan x en x = 2 y comparar ası́ su funcionamiento en un caso práctico 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.5×10−3 6.2 × 10−4 1.1 × 10−3 2.7×10−7 6×10−6

Se comprueba la mayor precisión de las fórmulas de orden superior y, dentro de las


fórmulas del mismo número puntos, la mayor precisión de las fórmulas centradas.
La función MATLAB dc que presentamos a continuación calcula el valor de la de-
rivada primera de la tabla de valores de una función usando la fórmula de tres puntos
centrada en los puntos interiores y fórmulas de diferencias adelantada y retrasada en los
extremos del mismo.

function df=dc(f,x)
%
% df=dc(f,x) Calcula la derivada de la funcion f en los puntos de x

Versión 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Derivación numérica 30

%
% 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 fórmulas para calcular numérica-
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:

h2 ′′ h3 h4
f (x + h) = f (x) + hf ′ (x) + f (x) + f ′′′ (x) + f (4) (z1 )
2! 3! 4!
h 2 h3 h4
f (x − h) = f (x) − +hf ′ (x) + f ′′ (x) − + f ′′′ (x) + f (4) (z2 )
2! 3! 4!
Sumando las ecuaciones anteriores y despejando se encuentra que:

f (x + h) − 2f (x) + f (x − h) h2 (4)
f ′′ (x) = − f (z)
h2 12
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 fórmulas más comunes para calcular derivadas de orden superior.

Fórmulas para calcular derivadas segundas

f2 − 2f1 + f0
f ′′ (x0 ) = + O(h)
h2
f1 − 2f0 + f−1
f ′′ (x0 ) = + O(h2 )
h2
−f3 + 4f2 − 5f1 + 2f0
f ′′ (x0 ) = + O(h2 )
h2
−f2 + 16f1 − 30f0 + 16f−1 − f−2
f ′′ (x0 ) = + O(h4 )
12h2

Versión 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Derivación numérica 31

Fórmulas para calcular derivadas terceras

f3 − 3f2 + 3f1 − f0
f (iii) (x0 ) = + O(h)
h3
f2 − 2f1 + 2f−1 − f−2
f (iii) (x0 ) = + O(h2 )
2h3
f−3 − 8f−2 + 13f−1 − 13f1 + 8f2 − f3
f (iii) (x0 ) = + O(h4 )
8h3

Fórmulas para calcular derivadas cuartas

f4 − 4f3 + 6f2 − 4f1 + f0


f (iv) (x0 ) = + O(h)
h4
f2 − 4f1 + 6f0 − 4f−1 + f−2
f (iv) (x0 ) = + O(h2 )
h4
−f−3 + 12f−2 − 39f−1 + 56f0 − 39f−1 + 12f−2 − f−3
f (iv) (x0 ) = + O(h4 )
6h4

Versión 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Derivación numérica 32

Ejercicios resueltos

2.1 Considera una función f (x) suficientemente diferenciable de la cual conocemos sus
valores en los puntos x0 , x2 = x0 + 2h, x3 = x0 + 3h. Construye una fórmula de
diferencias finitas que aproxime los valores de f ′′ (x2 ) e indica el orden de error de
la misma.

Solución. Desarrollamos en serie de Taylor en torno al punto de interés

f (x3 ) = f (x2 + h) = f (x2 ) + hf ′ (x2 ) + 21 h2 f ′′ (x2 ) + O(h3 ),


f (x0 ) = f (x2 − 2h) = f (x2 ) − 2hf ′ (x2 ) + 12 4h2 f ′′ (x2 ) + O(h3 )

Combinando ambas obtenemos

Af3 + Bf0 = (A + B)f2 + h(A − 2B)f2′ + h2 (A/2 + 2B) f2′′ + O(h3 )

y entonces

Af3 + Bf0 − (A + B)f2 h(A − 2B)


f”′′ = + f ′ + O(h),
(A/2 + 2B) h2 (A/2 + 2B) h2 2

por lo que podemos elegir A = 2, B = 1 y obtener


f0 + 2f3 − 3f0
f ′′ (x2 ) = + O(h).
3h2
que es la fórmula pedida, que es de primer orden en h.

2.2 Considera una función f (x) suficientemente diferenciable de la cual conocemos sus
valores en los puntos x0 , x1 = x0 + h, x3 = x0 + 3h. Construye, cuando sea posible
fórmulas que aproximen los valores de las derivadas f ′ (x3 ) y f ′′ (x3 ) utilizando
todos los puntos proporcionados e indica el orden de error de las mismas.

Solución. Como queremos aproximar los valores de las derivadas en x3 desarro-


llamos las fórmulas en torno a ese punto

(2h)2 ′′
f (x1 ) = f (x3 − 2h) = f (x3 ) − 2hf ′ (x3 ) + f (x3 ) + O(h3 )
2
(3h)2 ′′
f (x0 ) = f (x3 − 3h) = f (x3 ) − 3hf ′ (x3 ) + f (x3 ) + O(h3 )
2
Obviamente, cualquiera de ellas nos proporciona una aproximación a la derivada
f ′ (x3 ) sin más que despejar, por ejemplo, de la primera obtenemos

f (x3 ) − f (x1 )
f ′ (x3 ) = + O(h)
2h

Versión 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Derivación numérica 33

Para obtener una aproximación de la derivada segunda multiplicamos la primera


de las ecuaciones por 3 y la seguna por 2 y las restamos para eliminar f ′ (x3 )
obteniendo

−3f (x3 − 2h) + 2f (x3 − 3h) − f (x3 ) = 3h2 f ′′ (x3 ) + O(h3 ),

y de aquı́
−3f (x1 ) + 2f (x0 ) + f (x3 )
f ′′ (x3 ) = + O(h)
3h2

2.3 Dada una función de la que se conocen sus valores en los nodos x0 = 0, x1 = h,
x3 = 3h y x5 = 5h, razona de qué orden será la fórmula de diferencias más precisa
posible que aproxime el valor de f ′ (x2 ) utilizando esta información.

Solución. Al combinar los desarrollos de Taylor de cuatro puntos diferentes pode-


mos cancelar todos los términos hasta cuarto orden por lo que al dividir por h el
orden de la aproximación de la derivada primera serı́a O(h3 ).

Ejercicios propuestos

2.4 Escribir una función MATLAB df(x) que admita como entradas una vector de
puntos x y los valores de una función f en los mismos y que calcule el valor de la
derivada primera en los mismos utilizando la fórmula de diferencia adelantada.
Para calcular el valor en el extremo superior debe usarse la fórmula de diferencia
retrasada.
2.5 Aplicar la fórmula de dos puntos adelantada al cálculo 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.
2.6 Repetir el ejercicio anterior comparando la precisión de la fórmula de diferencia
adelantada con la retrasada. Aplicar también ambas fórmulas al cálculo de la
derivada de la función g(x) = 1/(1 + ex ) en x = 1/2.
2.7 Supongamos que se conoce el valor de la derivada mediante la fórmula de dife-
rencia adelantada para tres valores de h diferentes. ¿Es posible estimar el valor
del h óptimo? ¿Es posible estimar el error que se comete en el cálculo en cada
uno de los casos?. Aplicarlo al cálculo de la derivada de la función f (x) = sen x
en x = 0.6 usando h = 0.1, h = 0.01 y h = 0.0000000001.
2.8 Calcular la derivada de la función f (x) = tan x en x = 3.141 usando h = 0.1 y
h = 0.01. Comparar el resultado con el valor exacto. ¿Es buena la aproximación?
¿Por qué?.

Versión 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html
Derivación numérica 34

2.9 Calcular cotas para el error de truncación que se comete al aproximar las deriva-
das de las funciones f (x) = 1/(1 + sen x) y g(x) = log(1 + 2x). Comprobar que
los errores reales están por debajo de lo permitido por la cota.
2.10 Construir una tabla de derivadas primeras de la función g(x) definida por la
siguiente tabla en los puntos xj con la mayor precisión posible mediante fórmulas
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.11 Usando la fórmula de diferencia


√ centrada calcular la derivada primera de 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 truncación.
2.12 Deducir una fórmula de cinco puntos que utilice los valores de la función en los
puntos x,x + h,x + 2h, x + 3h y x − h para calcular f ′ (x).
2.13 Se conocen los valores de la función de Bessel J0 (x) en los puntos J0 (0.0) =
1.00000000, J0 (0.1) = 0.99750156, J0 (0.2) = 0.99002497, J0 (0.3) = 0.97762625,
J0 (0.4) = 0.96039823 y J0 (0.5) = 0.93846981. Construir una tabla de derivadas
en esos puntos con la mayor precisión posible usando las fórmulas de tres puntos
más apropiadas.
2.14 Calcular la derivada primera de la función f (x) = |x − 2| cos x en x = 2 usando
las fórmulas de diferencias centradas y adelantadas. Comparar los resultados.
2.15 Considérese la función
(
0, −1 < x < 54
f (x) = 2
e−x , 54 < x < 1
Para calcular f ′ (4/5) ¿será mejor usar una fórmula adelantada o una centrada?
2.16 Al calcular la derivada segunda de una función, ¿qué fórmula tendrá menor in-
fluencia del error de redondeo, la centrada de tres puntos o la centrada de cinco
puntos? Razonar la respuesta y comprobar la hipótesis con el ejemplo de la fun-
ción f (x) = ex . Comparar los errores de redondeo con los que aparecen al calcular
f ′ (x). ¿Cuáles son mayores?
2.17 Estudiar numéricamente el efecto de los errores de truncación y redondeo en la
fórmula centrada de cinco puntos para f ′′ . Particularizar para f (x) = 1/(1 + x2 )
en x = 1.

Versión 30/1/2008
http://matematicas.uclm.es/ind-cr/metnum/index.html

You might also like