Está en la página 1de 8

5.

Derivación e integración numéricas

TEMA 5
Derivación e integración numéricas

En este tema vamos a tratar de estimar la derivada o la integral de una función en un punto o intervalo, de
forma numérica, bien porque la función sea muy complicada para hacerlo de forma analítica o porque sólo
dispongamos de una tabla de datos de esa función, con la que tengamos que trabajar para obtener su derivada o
integral.

5.1 Métodos de derivación numérica

5.1.1 Introducción

Dados k ≥ 1 y α, vamos a tratar de aproximar o calcular f (k) (α), de forma que tienda a un sólo número,
utilizando fórmulas lineales del tipo

n
X
Ai f (xi ) ≃ f (k) (α)
i=0

Donde xi , i = 0 : n son los puntos donde se evalúa f y A i los coeficientes que nos encontraremos en la fórmula
de derivación numérica.
Tenemos varias opciones a la hora de elegir un método para resolver el problema:

1. Usar una función que interpole o aproxime a una tabla de datos:


Teniendo los valores (xi , f (xi )) con i = 0 : n, si usamos la fórmula de interpolación, obtenemos
(k)
f (k) (α) ≃ Pn (α), siendo:
n
X
f (k) (α) = Pn(k) (α) + D k E (x) = Ai f (xi ) + E (k) (α) (5.1)

x=α
i=0

(k)
Con Ai = li (α), si usamos la interpolación de Lagrange.

2. Método de los coeficientes indeterminados: imponiendo que la fórmula sea exacta para x j con j = 0 : l,
siendo l el grado más alto posible. De esta forma, se obtiene el siguiente sistema:
n
Ai xji
X
Dk xj = j = 0, 1, 2, . . .

x=α
i=0

Carlos García Argos (garcia@ieee.org) 137 http://www.telecos-malaga.com


5.1. Métodos de derivación numérica 5. Derivación e integración numéricas



 0 j ≤k−1
=k

n


 k! j
 (k+1)!
Ai xji = =k+1
X
1! α j (5.2)
(k+2)! 2
2! α j =k+2

i=0 


 ... ..


.
El sistema es lineal en los Ai si los xi están fijados, no lineal en otro caso.

3. Desarrollo de Taylor:
 
n n m
X X X f (j) (α) f (m+1)
(c)
f (k) (α) ≃ Ai f (xi ) = Ai  (xi − α)j + (xi + α)m+1 
j! (m + 1)!
i=0 i=0 j=0
m n n
!
X 1 X X f (m+1) (c)
= f (j)
(α) Ai (xi − α)j + (xi − α)m+1
j! (m + 1)!
j=0 i=0 i=0

haciendo cero todos los coeficientes menos el de la derivada k-ésima:


n 
X j 0 j = 0 : m, j 6= k
Ai (xi − α) =
k! j = k
i=0

Con m hasta donde se pueda llegar, lo suficientemente grande. Este método no se usa normalmente.

La derivación es una operación local, por lo que interesa elegir los puntos x i próximos al punto donde se quiere
obtener la derivada.

5.1.2 Grado de exactitud de una fórmula de derivación

Una fórmula se dice de grado de exactitud q si q es el menor entero positivo para el que la fórmula es exacta
para todo polinomio de grado no mayor que q y no exacta para algún polinomio de grado q + 1.
X n
Teorema 5.1. Si f es continuamente diferenciable hasta el orden necesario, una fórmula Ai f (xi ) se dice
i=0
que es interpolatoria si y sólo si su grado de exactitud es mayor o igual que n.
Una fórmula interpolatoria tiene grado de exactitud mayor o igual que n.

Ejemplo 5.1:
Deducir una fórmula que estime la derivada segunda de una función como

A0 f (α − h) + A1 f (α) + A2 f (α + h)

Usando el método de coeficientes indeterminados, imponemos que sea exacta para 1, x, x 2 :

f (x) = 1 → 0 = A0 + A1 + A2

f (x) = x → 0 = A0 (α − h) + A1 α + A2 (α + h)

f (x) = x2 → 2 = A0 (α − h)2 + A1 α2 + A2 (α + h)2

http://www.telecos-malaga.com 138 Carlos García Argos (garcia@ieee.org)


5. Derivación e integración numéricas 5.1. Métodos de derivación numérica

Montamos el sistema:

 
1 1 1 0
 α−h α α+h 0 
2 2
(α − h) α2 (α + h) 2

Reduciendo por Gauss, queda:

 
1 1 1 0
 0 h 2h 0 
0 0 2h2 2

Las soluciones, por tanto son:

1
A0 = h2
A1 = − h22 A2 = 1
h2

Y la fórmula queda:

′′ f (α − h) − 2f (α) + f (α + h)
f (α) =
h2

Ejemplo 5.2:
Dada la siguiente tabla de valores

ti 1 1.01 1.02 1.03 1.04


I (ti ) 3.1 3.12 3.14 3.18 3.24

Que corresponde a la corriente medida que circula por un circuito RL, con valores R = 0.142Ω
y L = 0.98H. Para calcular la tensión impuesta al circuito en función de esa corriente, con la
primera Ley de Kirchhoff se obtiene
E = LI ′ + RI

t está dado en segundos y I en amperios. Se nos pide estimar E en el instante de tiempo 1.02.
Usando la fórmula centrada para ti = 1.02, estimamos la derivada de la corriente

−3.12 + 3.18 0.06


I ′ (1.02) ≃ = =3
2 · 0.01 0.02

Y con ella el valor de la tensión pedida es

E (1.02) = 0.98 · 3 + 0.142 · 3.14 ≃ 3.386

Carlos García Argos (garcia@ieee.org) 139 http://www.telecos-malaga.com


5.1. Métodos de derivación numérica 5. Derivación e integración numéricas

5.1.3 Error en las fórmulas de derivación numérica

Para fórmulas interpolatorias podemos estimar el error de discretización E d ya que se dispone del error de
interpolación
f (n+1) (ξ (x))
En (x) = (x − x0 ) (x − x1 ) · · · (x − xn )
(n + 1)!
Y entonces se puede estimar el error de discretización como

Ed = En(k) (α)

Si la fórmula de derivación se ha obtenido con las condiciones de exactitud, el error de discretización se puede
deducir como
f (q+1) (ξ)
Ed = C
(q + 1)!

donde q ≥ n es el grado de exactitud de la fórmula de derivación, y siendo q + 1 el grado de derivación de f


para el que C 6= 0, obteniendo C como
X
f (x) = xn+1 ⇒ D k f |x=α = Ai xn+1
i +C

Se supone f derivable hasta el grado que sea necesario.


Para fórmulas de derivación deducidas mediante el desarrollo en series de Taylor, la expresión para el error de
discretización es
n
X f (m+1) (ξi )
Ed = − Ai (xi − α)m+1
(m + 1)!
i=0

Y en esta expresión se aprecia la conveniencia de que los puntos x i que usemos para obtener la fórmula de
derivación estén próximos al deseado, α.

5.1.4 Fórmulas de derivación numérica

En la tabla (5.1) vemos algunas de las fórmulas de derivación numérica más usuales, para las derivadas de
orden 1, 2 y 3. El punto c es interior al intervalo de evaluación de la función en cada una de las fórmulas (por
ejemplo, [α, α + 2h] en la fórmula progresiva de 3 puntos).
Estas fórmulas de derivación son todas interpolatorias. Es más recomendable saber deducirlas que sabérselas
de memoria.
Estas fórmulas de derivación son inestables, debido a los errores de discretizacion (E d ) y a los que se producen
al evaluar f (xi ) (εi ).

n
f (xi ) = fˆi + εi →
X
Ai εi = Er
i=0

Siendo Er el error de redondeo.


Por ello, aunque en principio parecería lógico pensar que tomar un valor de h muy pequeño daría un buen
resultado, debido a que
lı́m |Ed | = 0
h→0
El error de redondeo de la fórmula es
lı́m |Er | = ∞
h→0

http://www.telecos-malaga.com 140 Carlos García Argos (garcia@ieee.org)


5. Derivación e integración numéricas 5.1. Métodos de derivación numérica

f (α+h)−f (α)
f ′ (α) = h − h2 f (2) (c)

−3f (α)+4f (α+h)−f (α+2h) h2 (3)


f ′ (α) = 2h + 3 f (c) Fórmula progresiva 3 puntos

f (α−2h)−4f (α−h)+3f (α) h2 (3)


f ′ (α) = 2h + 3 f (c) Fórmula regresiva 3 puntos

−f (α−h)+f (α+h) h2 (3)


f ′ (α) = 2h − 6 f (c) Fórmula centrada

f (α−2h)−8f (α−h)+8f (α+h)−f (α+2h) h4 (5)


f ′ (α) = 12h + 30 f (c) Fórmula centrada de 5 puntos

−25f (α)+48f (α+h)−36f (α+2h)+16f (α+3h)−3f (α+4h) h4 (5)


f ′ (α) = 12h + 5 f (c) Fórmula progresiva 5 puntos

f (α−h)−2f (α)+f (α+h) h2 (4)


f ′′ (α) = h2
− 12 f (c)

f (α)−2f (α+h)+f (α+2h) h2 (4)


f ′′ (α) = h2
− hf (3) (c1 ) + 6 f (c2 )

−f (α−2h)+16f (α−h)−30f (α)+16f (α+h)−f (α+2h) h4 (6)


f ′′ (α) = 12h2
+ 90 f (c)

−f (α−2h)+2f (α−h)−2f (α+h)+f (α+2h) h2 (5)


f ′′′ (α) = 2h3
− 4 f (c)

Tabla 5.1: Fórmulas de derivación numérica

Por tanto, para un h demasiado pequeño se pueden obtener resultados muy malos.
Para obtener un valor de h óptimo, hay que minimizar |E r | + |Ed | o |Er | = |Ed | (dos criterios). En general, lo
segundo no da el mismo punto que lo primero, pero es más fácil de resolver, y la diferencia no es demasiado
grande.
Una problemática de la derivación numérica es que no existen fórmulas de derivación estables.

5.1.5 Algoritmos Matlab para derivación numérica

Vamos a ver en este apartado los códigos fuente en Matlab para realizar algunos de los métodos vistos de
derivación numérica, para calcular las derivadas primeras, segundas y terceras en un punto α.

5.1.5.1 Algoritmos para la derivada primera

Algoritmo 5.1: Fórmula dos puntos para obtener la derivada primera en un punto
% Formula de derivacion de dos puntos
% Aproxima la derivada primera de la funcion en un punto
% Uso: sol=deriv2p(funcion,alfa,h)
function [fp]=deriv2p(f,alfa,h)
if nargin<2
disp(’Error: faltan argumentos de entrada’);
return;
else
if nargin<3

Carlos García Argos (garcia@ieee.org) 141 http://www.telecos-malaga.com


5.1. Métodos de derivación numérica 5. Derivación e integración numéricas

h=0.5;
end;
end;
fp=(feval(f,alfa+h)-feval(f,alfa))/h;

Algoritmo 5.2: Fórmula progresiva tres puntos para obtener la derivada primera en un punto
% Formula de derivacion progresiva de tres puntos
% Aproxima la derivada primera de la funcion en un punto
% Uso: sol=derivp3p(funcion,alfa,h)
function [fp]=derivp3p(f,alfa,h)
if nargin<2
disp(’Error: faltan argumentos de entrada’);
return;
else
if nargin<3
h=0.5;
end;
end;
fp=(-3*feval(f,alfa)+4*feval(f,alfa+h)-feval(f,alfa+2*h))/(2*h);

Algoritmo 5.3: Fórmula regresiva tres puntos para obtener la derivada primera en un punto
% Formula de derivacion regresiva de tres puntos
% Aproxima la derivada primera de la funcion en un punto
% Uso: sol=derivr3p(funcion,alfa,h)
function [fp]=derivr3p(f,alfa,h)
if nargin<2
disp(’Error: faltan argumentos de entrada’);
return;
else
if nargin<3
h=0.5;
end;
end;
fp=(feval(f,alfa-2*h)-4*feval(f,alfa-h)+3*feval(f,alfa))/(2*h);

Algoritmo 5.4: Fórmula progresiva cinco puntos para obtener la derivada primera en un
punto
% Formula de derivacion progresiva de cinco puntos
% Aproxima la derivada primera de la funcion en un punto
% Uso: sol=derivp5p(funcion,alfa,h)
function [fp]=derivp5p(f,alfa,h)
if nargin<2
disp(’Error: faltan argumentos de entrada’);
return;

http://www.telecos-malaga.com 142 Carlos García Argos (garcia@ieee.org)


5. Derivación e integración numéricas 5.1. Métodos de derivación numérica

else
if nargin<3
h=0.5;
end;
end;
fp=(-25*feval(f,alfa)+48*feval(f,alfa+h)-36*feval(f,alfa+2*h)
+16*feval(f,alfa+3*h)-3*feval(f,alfa+4*h))/(12*h);

Algoritmo 5.5: Fórmula centrada dos puntos para obtener la derivada primera en un punto
% Formula de derivacion centrada de dos puntos
% Aproxima la derivada primera de la funcion en un punto
% Uso: sol=dercen2p(funcion,alfa,h)
function [fp]=dercen2p(f,alfa,h)
if nargin<2
disp(’Error: faltan argumentos de entrada’);
return;
else
if nargin<3
h=0.5;
end;
end;
fp=(-feval(f,alfa-h)+feval(f,alfa+h))/(2*h);

Algoritmo 5.6: Fórmula centrada cinco puntos para obtener la primera derivada en un punto
% Formula de derivacion centrada de cinco puntos
% Aproxima la derivada primera de la funcion en un punto
% Uso: sol=dercen5p(funcion,alfa,h)
function [fp]=dercen5p(f,alfa,h)
if nargin<2
disp(’Error: faltan argumentos de entrada’);
return;
else
if nargin<3
h=0.5;
end;
end;
fp=(feval(f,alfa-2*h)-8*feval(f,alfa-h)+8*feval(f,alfa+h)
-feval(f,alfa+2*h))/(12*h);

5.1.5.2 Algoritmos para la derivada segunda

Algoritmo 5.7: Fórmula centrada tres puntos para obtener la derivada segunda en un punto

Carlos García Argos (garcia@ieee.org) 143 http://www.telecos-malaga.com


5.1. Métodos de derivación numérica 5. Derivación e integración numéricas

% Formula de derivacion centrada de tres puntos


% Aproxima la derivada segunda de la funcion en un punto
% Uso: sol=der2c3p(funcion,alfa,h)
function [fp]=der2c3p(f,alfa,h)
if nargin<2
disp(’Error: faltan argumentos de entrada’);
return;
else
if nargin<3
h=0.01;
end;
end;
fp=(feval(f,alfa-h)-2*feval(f,alfa)+feval(f,alfa+h))/h^2;

Algoritmo 5.8: Fórmula progresiva tres puntos para obtener la derivada segunda en un punto
% Formula de derivacion progresiva de tres puntos
% Aproxima la derivada segunda de la funcion en un punto
% Uso: sol=der2p3p(funcion,alfa,h)
function [fp]=der2p3p(f,alfa,h)
if nargin<2
disp(’Error: faltan argumentos de entrada’);
return;
else
if nargin<3
h=0.01;
end;
end;
fp=(feval(f,alfa)-2*feval(f,alfa+h)+feval(f,alfa+2*h))/h^2;

Algoritmo 5.9: Fórmula centrada cinco puntos para obtener la derivada segunda en un punto
% Formula de derivacion centrada de cinco puntos
% Aproxima la derivada segunda de la funcion en un punto
% Uso: sol=der2c5p(funcion,alfa,h)
function [fp]=der2c5p(f,alfa,h)
if nargin<2
disp(’Error: faltan argumentos de entrada’);
return;
else
if nargin<3
h=0.5;
end;
end;
fp=(-feval(f,alfa-2*h)+16*feval(f,alfa-h)-30*feval(f,alfa)
+16*feval(f,alfa+h)-feval(f,alfa+2*h))/(12*h^2);

http://www.telecos-malaga.com 144 Carlos García Argos (garcia@ieee.org)

También podría gustarte