Derivación Numérica - OCW UPM - Universidad Politécnica de Madrid

Anuncio
UNIVERSIDAD POLITÉCNICA DE MADRID
ESCUELA TÉCNICA SUPERIOR DE
INGENIEROS DE MINAS
DEPARTAMENTO DE MATEMÁTICA APLICADA Y
MÉTODOS INFORMÁTICOS
Asignatura:
PROGRAMACIÓN Y MÉTODOS NUMÉRICOS
Tema: DERIVACIÓN NUMÉRICA
Prof. Carlos Conde Lázaro
Prof. Arturo Hidalgo López
Prof. Alfredo López Benito
Marzo, 2007
Programación y Métodos Numéricos
Derivación Numérica
ÍNDICE
1. INTRODUCCIÓN Y MOTIVACIÓN. …………………………………
Pág.
1
2. FÓRMULAS DE DERIVACIÓN NUMÉRICA. ………..……………
4
3. FÓRMULAS DE DERIVACIÓN NUMÉRICA DE TIPO INTERPOLATORIO PARA APROXIMAR LA PRIMERA DERIVADA DE
UNA FUNCIÓN. ………………………………………………..
10
4. EXPRESIONES DEL ERROR EN LAS FÓRMULAS DE DERIVACIÓN NUMÉRICA DE TIPO INTERPOLATORIO QUE
APROXIMAN LA PRIMERA DERIVADA DE UNA FUNCIÓN ..
19
5. ALGUNAS FÓRMULAS DE DERIVACIÓN NUMÉRICA DE TIPO
INTERPOLATORIO USUALES PARA APROXIMAR PRIMERAS DERIVADAS ………………………………………………..
5.1. Fórmulas con dos puntos de soporte. …………………….
5.1.1. Casos particulares. ……………………………….
5.2. Fórmulas con tres puntos de soporte. …………………….
5.2.1. Casos particulares con soporte equidistante. .
29
29
31
33
36
6. OTROS MÉTODOS PARA LA OBTENCIÓN DE FÓRMULAS DE
DERIVACIÓN NUMÉRICA DE TIPO INTERPOLATORIO. ….
6.1. Mediante la combinación de desarrollos en serie
de Taylor. ……………………………………..……………
6.2. Método de coeficientes indeterminados. ………………….
39
39
43
7. FÓRMULAS DE DERIVACIÓN NUMÉRICA DE TIPO INTERPOLATORIO PARA LA APROXIMACIÓN DE DERIVADAS DE
ORDEN SUPERIOR. …………………………………………….
7.1. Obtención de fórmulas de derivación de tipo interpolatorio mediante el método de los coeficientes indeterminados. ……………………………………………………….
63
8. MEJORA DE LA PRECISIÓN DE LAS FÓRMULAS DE DERIVACIÓN NUMÉRICA. MÉTODO DE EXTRAPOLACIÓN DE
RICHARDASON. ……………………………………………………
67
BIBLIOGRAFÍA SOBRE EL TEMA. ……………………………………..
74
ii
47
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
1. Introducción y motivación
De muchas funciones con las que se trabaja en la práctica no se conoce su
expresión analítica y tan sólo se dispone de su valor en un conjunto de puntos
(llamado soporte por analogía con la terminología utilizada en los temas de
interpolación). No obstante, en ocasiones es necesario proceder al cálculo del
valor de alguna derivada de tales funciones en un punto concreto. Es obvio que
en este tipo de situaciones no se puede utilizar el concepto riguroso de
derivada (pues se desconoce la expresión de la función). Surge así la
conveniencia de diseñar métodos numéricos que permitan aproximar el valor
de las derivadas de una función en algún punto a partir del conocimiento de los
valores de la función en un soporte dado.
Los métodos que están desarrollados con este fin muestran un buen
comportamiento en numerosos casos. Es por ello que algunas veces, aun
disponiendo de la expresión analítica de las funciones a derivar, se opta por
aproximar los valores de las derivadas mediante fórmulas numéricas
suficientemente precisas. Ejemplo de ello son el método de la secante o, más
generalmente, los métodos de cuasi – Newton detallados en el estudio de
métodos de resolución de sistemas de ecuaciones no lineales.
Es más, muchas de las técnicas de derivación numérica que se abordarán en
este tema están en la base de diferentes métodos utilizados para la resolución
de ecuaciones diferenciales, es decir de ecuaciones en las que intervienen
derivadas de funciones “incógnita”. Es el caso, por ejemplo, de los llamados
métodos en diferencias finitas.
La principal idea que subyace en las técnicas de derivación numérica está muy
vinculada a la interpolación y se podría resumir en lo siguiente: Si de una
función f(x) se conocen sus valores en un determinado soporte de puntos,
puede “aproximarse” la función f(x) por otra función p(x) que la interpole en
dicho soporte y sustituir el valor de las derivadas de f(x) en un punto x* por el
valor de las correspondientes derivadas de p(x) en dicho punto x*. Esta idea
tan simple deberá sin embargo ser analizada con detalle pues su aplicación sin
mayores consideraciones puede conducir a errores no admisibles.
Puesto que entre las distintas técnicas de interpolación existentes se han
abordado en temas precedentes las técnicas de interpolación polinómica de
Lagrange, nos centraremos aquí en las fórmulas obtenidas a partir de esta
1
Programación y Métodos Numéricos
Derivación Numérica
forma de interpolar. No obstante conviene indicar que para otras técnicas de
interpolación podrían diseñarse técnicas de derivación numérica de forma
análoga a como se plantearán las recogidas en este tema.
Una de las primeras fórmulas que nos permiten aproximar una derivada
primera tiene sus raíces en los comienzos del cálculo diferencial en el siglo
XVII. En ese entonces el concepto de límite no estaba desarrollado de forma
explícita y la primera derivada de una función f(x) en el punto x* se consideraba
como el valor del cociente incremental:
f(x * +h) − f(x*)
A=
h
cuando h era “suficientemente pequeño”. Una vez que, en el siglo XIX, se
formalizó el concepto de límite se pudo proceder a definir la primera derivada
de una función f(x) en x* mediante la conocida expresión:
⎛ f(x * +ε ) − f(x*) ⎞
f '(x*) = lim ⎜
⎟
ε→0
ε
⎝
⎠
En este sentido resulta razonable esperar que el valor del cociente incremental
A y el valor del límite usado en la determinación de f’(x*) se “parezcan” más
cuanto menor sea el valor de h que se utilice en la determinación de A. De aquí
puede surgir una primera idea para aproximar el valor de f’(x) como el valor
que se obtiene para el cociente incremental cuando se toma h suficientemente
pequeño.
NOTA:
Más adelante se detallará cómo el cociente incremental que acabamos de
considerar también puede obtenerse a partir de las fórmulas del polinomio
interpolador de una función. Con ello recuperaremos la idea que subyace en
los métodos de derivación numérica.
Ejemplos:
1º) La función f(x) = x2 tiene como función primera derivada f’(x) = 2.x por lo
que f’(1) = 2. En el punto x*=1 el cociente incremental antes considerado toma
la expresión:
(1 + h)2 − 12 2.h + h2
A=
=
= 2+h
h
h
por lo que cuanto menor sea el valor de h considerado más parecido será el
valor de A al valor de f’(1).
2
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
2º) No siempre es factible simplificar la expresión de los cocientes
incrementales como se ha hecho en el ejemplo anterior. En efecto, si por
ejemplo se considera la función f(x) = ex, es sabido que f’(x) = ex y que f’(0) = 1.
El cociente incremental correspondiente a esta función en el punto x* = 0
resulta ser:
eh − 1
A=
h
Para distintos valores de h pueden obtenerse ahora los valores de A que
aproximan la primera derivada. Pero ahora, estos valores dependerán del
procedimiento que se utilice para estimar eh , del número de decimales que se
estén utilizando en los cálculos y de la técnica de aproximación (truncado o
redondeo) de los valores intermedios obtenidos. Por ejemplo, si se utilizan
cuatro dígitos significativos y se redondea, los valores de eh y de A para
distintas elecciones de h resultan ser:
h
eh
A
-1
10
1.105
1.05
-2
10
1.011
1.10
-3
10
1.001
1.00
-4
10
1.000
0.00
El ejemplo anterior pone de manifiesto que, en la práctica, al trabajar en
aritmética finita, reducciones “excesivas” del valor de h empeora la precisión
del cociente incremental.
•
El ejemplo anterior pone de manifiesto que cabe distinguir, al menos, dos
fuentes de error en las técnicas de aproximación numérica. La primera de ellas,
que se designa habitualmente como error del método o error de truncatura,
es debida a sustituir la expresión de la derivada (a través del cálculo de un
límite) por una fórmula en la que se combinan valores de la función en
determinados puntos. La segunda fuente de error es debida a los errores de
redondeo que se cometen en las operaciones que contemple la fórmula
numérica. En este tema nos ocuparemos de analizar la primera de las fuentes
de error remitiendo al lector interesado en el análisis de los errores de
redondeo al primero de los temas de esta asignatura.
3
Programación y Métodos Numéricos
Derivación Numérica
2. Fórmulas de derivación numérica
Sea f(x) una función derivable en un cierto intervalo I de la recta real y sea x*
un punto de dicho intervalo. Consideremos además un soporte de (n+1) puntos
{x0, x1, ..., xn} del intervalo I en el que se suponen conocidos los valores de la
función f(x). Por simplicidad supondremos además, en todo cuanto sigue, que
los puntos del soporte son todos ellos distintos y están ordenados de menor a
mayor es decir que: x0 < x1 < ... < xn.
Definición 2.1.
Siendo f(x) una función de la que se conocen sus valores en el soporte
de (n+1) puntos {x0 , x1, ...., xn} del intervalo I, se denomina fórmula de
derivación numérica para aproximar el valor de la primera derivada
f’(x) en el punto x* sobre el soporte de puntos considerado, a toda
expresión de la forma:
f’(x*) ≈ f*' = c0.f(x0) + c1.f(x1)+ …. + cn.f(xn) =
n
∑ c .f(x )
i=0
i
i
donde c0, c1, …, cn son (n+1) escalares denominados coeficientes (o
pesos) de la fórmula de derivación
NOTA:
La fórmula de derivación que se acaba de definir puede decirse que es una
fórmula lagrangiana pues en ella sólo intervienen valores de la función f en los
puntos del soporte. Podrían considerarse fórmulas más generales, hermitianas,
en las que el valor de f’(x*) fuese aproximado a partir del valor de la función f y
de algunas de sus derivadas en los puntos del soporte. No obstante, estas
últimas fórmulas tienen un uso mucho más esporádico que las de tipo
lagrangiano y es por ello que en este tema nos limitaremos a considerar como
fórmulas de derivación numérica tan sólo a las que hacen intervenir los valores
de la función en los puntos del soporte.
En general el valor aproximado
f*'
y el valor exacto f’(x*) diferirán,
cometiéndose un error en la aproximación de f’(x*). Es por ello que junto a la
definición de una fórmula numérica conviene precisar de forma rigurosa la
definición del error que con ella se comete. En este sentido se introduce la
siguiente definición:
4
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
Definición 2.2.
Siendo f*' la aproximación de f’(x*) que se obtiene operando sin error de
redondeo según la fórmula de derivación numérica:
f’(x*) ≈ f*' =
n
∑ c .f(x )
i=0
i
i
se denomina error de truncamiento de la fórmula en el punto x*y para
la función f al valor Rf(x*) = f’(x*) - f*'
Obviamente se verificará que: f '(x*) = f*' + R f (x*) por lo que considerando la
fórmula en cuestión aplicada a todos los puntos x de un dominio dado
puede definirse la función error de truncamiento de la fórmula derivación
numérica para la función f considerada como la función:
Rf : I Æ R
x Æ Rf(x) = f’(x) - f*'
En el análisis del error de truncamiento de las fórmulas de derivación numérica
se perseguirá encontrar cotas del valor de esta función de error Rf(x) en el
intervalo I sobre el que se trabaje.
Ejemplo:
Siendo {x0 , x1 } un soporte formado por dos puntos tales que x1 = x0 + h, y
considerando que x* = x0, la sustitución de la expresión de f’(x0) por el cociente
incremental:
f(x1 ) − f(x 0 )
f0' =
h
conduce a una fórmula en la que sus coeficientes son c0 = (-1/h) y c1 = (1/h).
Una forma de acotar el error de truncamiento de esta fórmula, si se supone que
f(x) es al menos de clase C2([x0, x1]) consiste en considerar el desarrollo en
serie de Taylor siguiente:
h2
θ ∈ (0,1)
.f "(x 0 + θ.h)
f(x1) = f(x0+h) = f(x0) + h.f’(x0) +
2
de donde:
f '( x0 ) =
f ( x0 ) − f ( x1 ) h
− .f "( x0 + θ .h )
h
2
θ ∈ (0,1)
Por tanto:
h
Rf ( x0 ) = f '( x0 ) − f0' = − .f "( x0 + θ .h )
2
expresión que puede acotarse por:
5
θ ∈ (0,1)
Programación y Métodos Numéricos
Derivación Numérica
Rf ( x0 ) = f '( x0 ) − f0' ≤
h
. S up { f "( x ) }
2 x∈( x0 ,x1 )
Para el caso particular de la función f(x) = x2 el cociente incremental
considerado conduce a la expresión:
( x + h )2 − x02
= 2.x0 + h
f0' = 0
h
por lo que el error de truncatura cometido es en este caso Rf(x0) = h.
Obsérvese que la acotación antes realizada conduciría (para esta función x2) a
la acotación |Rf(x0)| ≤ h coincidente con el error de truncatura realmente
cometido1.
Las fórmulas que conducen al valor exacto de la derivada se denominan
fórmulas exactas. Más concretamente:
Definición 2.3.
Se dice que la fórmula de derivación numérica f’(x*) ≈ f*' =
n
∑ c .f(x ) es
i=0
i
i
exacta para la función f(x) en el punto x* y para el soporte {x0, ..., xn}
cuando el error de truncatura Rf(x*) es nulo.
Ejemplo:
Dado un soporte {x0 < x1 } y denotando por h = x1 – x0, la fórmula:
f(x*) ≈ f* ' =
f(x1 ) − f(x 0 ) −1
1
= ·f(x 0 ) + ·f(x1 )
x1 − x 0
h
h
es una fórmula exacta para la función f(x) = x2, en el punto x* = 1 y para el
soporte {x0 = 0, x1 = 2}. En efecto, f’(1) = 2 y:
2 = f '(1) = f* ' =
−1 2 1 2
·0 + ·2 = 2
2
2
Ahora bien esta fórmula no tiene que ser exacta si se cambia de punto x* (por
ejemplo f’(1.5) = 3 ≠ f*’ = 2) o si se cambia de soporte (por ejemplo para x0 = -1
y x1 = 2 , siendo f(x) = x2 y x* = 1 se tiene que f’(1) = 2 ≠ f*’ = 1) o si se cambia
de función (por ejemplo si f(x) = x3 con el soporte {x0 = 0 y x2 = 2} y para x* = 1
se tiene que: 3 = f’(1) ≠ f*’ = 4)
1
No siempre las acotaciones del error de truncatura que se obtendrán serán tan “finas” como la
que se acaba de describir.
6
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
De poco serviría tener fórmulas que sólo fuesen exactas para funciones
concretas con soportes concretos y en puntos concretos pues la aplicabilidad
de dichas fórmulas sería escasa. Por ello, las fórmulas de derivación numérica
suelen diseñarse de forma que sean exactas para determinadas familias de
funciones con independencia de cuáles sean los (n+1) puntos del soporte que
se elijan y para cualquier punto x* en el que se apliquen. Más concretamente
puede darse la definición siguiente:
Definición 2.4.
Se dice que la fórmula de derivación numérica:
n
f '(x*) ≈ f*' = ∑ c i .f(xi )
i= 0
es exacta de orden k para la familia de funciones de clase C1([x0 , xn]):
{φ0 (x), φ1(x),..., φk (x),....}
cuando es nulo el error de truncatura cometido al aplicar la fórmula para
la estimación de la primera derivada de cualquiera de las (k+1) primeras
funciones de la familia y en cualquier punto x* perteneciente al intervalo
[x0 , xn]: Rϕk (x) = 0 ∀x ∈ [x 0 ,xn ]
Propiedad 2.1.
n
Si la fórmula de derivación numérica f '(x*) ≈ f*' = ∑ c i .f(xi ) es exacta de
i= 0
orden k para la familia de funciones {ϕ0 (x), ϕ1(x),..., ϕk (x),....} entonces es
exacta para cualquier combinación lineal de las (k+1) primeras funciones
de la familia
Demostración:
Si la fórmula es exacta de orden k para la familia de funciones consideradas se
podrá escribir que:
n
∀x* ∈ [ x 0 ,xn ] (j = 0, ..., k)
ϕ'j (x*) = ∑ c i .ϕ j (xi )
i=0
Por otra parte, una función cualquiera que sea combinación lineal de las (k+1)
primeras funciones de la familia será de la forma:
k
f(x) = α 0 ⋅ ϕ0 (x) + α1 ⋅ ϕ1 (x) + ..... + αk ⋅ ϕk (x) = ∑ α j ⋅ ϕ j (x)
j= 0
por lo que su primera derivada en cualquier punto x* del intervalo [x0, xn]se
puede expresar como:
7
Programación y Métodos Numéricos
Derivación Numérica
k
k
⎛ k
⎞ n
⎛ n
⎞ n
f '(x*) = ∑ α j ⋅ ϕ'j (x*) = ∑ α j ⋅ ⎜ ∑ c i ⋅ ϕ j (x i ) ⎟ = ∑ c i ⋅ ⎜ ∑ α j ⋅ ϕ j (xi ) ⎟ = ∑ c i ⋅ f(xi )
j=0
j=0
⎝ i= 0
⎠ i= 0
⎝ j= 0
⎠ i= 0
y puesto que la aplicación de la fórmula de derivación numérica a la función f(x)
en cualquier punto x* conduce a que:
n
fx' = ∑ c i .f(xi )
i=0
puede concluirse que:
∀x* ∈ [ x 0 ,xn ]
R f (x*) = 0
Esto demuestra que la fórmula es exacta para cualquier función f(x) que sea
combinación lineal de las (k+1) primeras funciones de la familia de funciones
considerada.
c.q.d.
Las fórmulas de derivación numérica más utilizadas en la práctica son exactas,
de algún orden k, para la familia de funciones formada por los monomios, es
decir: {1, x, x2, ...,xk, ....}. En este tema nos referiremos en exclusiva a esta
familia de funciones y por ello cuando digamos que una fórmula es de orden k
se sobreentenderá que “es de orden k para la familia de los monomios”, es
decir que permite estimar sin error alguno la primera derivada de cualquier
función polinómica de grado menor o igual que k en cualquier punto x*.
Ejemplo:
La fórmula que se ha utilizado en ejemplos anteriores consistente en sustituir el
límite con el que se define la derivada por el cociente incremental en un soporte
de dos puntos consecutivos es una fórmula exacta de orden 1. En efecto, para
la función f(x) = 1 se verifica que:
fx' =
f(x 0 + h) − f(x 0 ) 1 − 1
=
= 0 = f '(x)
h
h
∀x ∈ [ x 0 ,x 0 + h]
Asimismo para la función g(x) = x se tiene que:
g(x 0 + h) − g(x 0 ) x 0 + h − x 0
=
= 1 = g'(x)
∀x ∈ [ x 0 ,x 0 + h]
h
h
Pero para la función q(x) = x2, en general, ya no coincidirá el valor de la primera
derivada y el valor estimado mediante la fórmula de derivación:
g'x =
8
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
q'x =
q(x 0 + h) − q(x 0 ) (x 0 + h)2 − x 02
=
= 2 ⋅ x 0 + h ≠ q'(x)
h
h
∀x ∈ [ x 0 ,x 0 + h]
por lo que sólo se puede afirmar que el error de la fórmula es nulo para los
monomios {1, x}. En consecuencia, como se señaló anteriormente, la fórmula
es de orden 1.
NOTA:
Para facilitar el seguimiento de todo cuanto hasta aquí se ha dicho, nos hemos
referido únicamente a fórmulas que permiten estimar el valor de la primera
derivada de una función. Análogo tratamiento podría realizarse para las
fórmulas de derivación numérica que permiten estimar derivadas de orden
mayor (segundas derivadas, terceras derivadas, etc...). A ellas nos referiremos
en el apartado 7º de este tema.
9
Programación y Métodos Numéricos
Derivación Numérica
3. Fórmulas de derivación numérica de tipo interpolatorio para aproximar
la primera derivada de una función.
Como se ha comentado en el apartado anterior, las fórmulas más utilizadas en
la práctica se buscan de forma que sean exactas para polinomios de grado
menor o igual que n (es decir fórmulas de orden de exactitud n). Una manera
natural de construir fórmulas exactas de orden n consiste en recordar que el
polinomio pn(x) que interpola en el sentido de Lagrange y sobre un soporte de
(n+1) puntos a una función f(x) que sea polinómica de grado menor o igual que
n coincide con dicha función2. Por ello es equivalente derivar la función
polinómica f(x) que derivar la su polinomio interpolador pn(x). A todas las
fórmulas de derivación que se obtienen derivando la expresión del polinomio
interpolador de Lagrange se las denomina fórmulas de derivación de tipo
interpolatorio.
Definición 3.1.
Se denomina fórmula de derivación numérica de tipo interpolatorio
(de Lagrange) para aproximar derivadas de primer orden a cualquier
fórmula obtenida derivando una vez la expresión del polinomio
interpolador de Lagrange construido sobre un soporte de (n+1) puntos
distintos.
NOTA:
Obsérvese que en la definición anterior se ha escrito entre paréntesis “de
Lagrange”. En efecto podría pensarse en derivar también la expresión del
polinomio interpolador de Hermite obteniéndose otros tipos de fórmulas de
derivación de tipo interpolatorio. Puesto que nosotros sólo nos vamos a referir a
las fórmulas que se obtienen al derivar la expresión del polinomio interpolador
de Lagrange omitiremos en lo sucesivo la coletilla “de Lagrange” y simplemente
diremos fórmula de derivación numérica de tipo interpolatorio.
•
Una fórmula de derivación numérica de tipo interpolatorio puede obtenrse de
cualquiera de las expresiones del polinomio interpolador. Recordando la
expresión del polinomio interpolador en función de los polinomios de base de
Lagrange puede deducirse la expresión de los pesos que intervienen en dicha
fórmula. En efecto:
2
Consúltese, por ejemplo, el tema dedicado a la Interpolación de Lagrange elaborado por A.
Hidalgo y C. Conde en estos mismos apuntes.
10
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
Propiedad 3.1.
La condición necesaria y suficiente para que la fórmula de derivación
n
numérica fx*' = ∑ ci .f ( xi ) que sea de tipo interpolatorio es que sus
i =0
coeficientes satisfagan las igualdades:
ci = L'i ( x*)
(i = 0, 1, ..., n)
donde se ha denotado por Li(x) a los (n+1) polinomios de base de
Lagrange3 sobre el soporte {x0, x1, ..., xn}.
Demostración:
a) Demostremos en primer lugar que si la fórmula es de tipo interpolatorio
entonces sus pesos satisfacen la relación ci = L’i(x*). En efecto, la expresión
detallada del polinomio interpolador de Lagrange pn(x) de una función f(x) sobre
el soporte de (n+1) puntos {x0, x1, ..., xn} en función de los (n+1) polinomios de
n
base de Lagrange {Li (x)}i=0 es:
n
f(x) ≈ pn (x) = ∑ f(xi ) ⋅ Li (x)
i= 0
de donde, en cualquier punto x* se puede considerar la aproximación:
n
f '(x*) ≈ pn' (x*) = ∑ L'i (x*) ⋅ f(x i )
i=0
Esta fórmula es una fórmula de derivación numérica en la que sus coeficientes
están dados por la expresión:
c i = L'i (x*)
(i = 0, ..., n)
b) Demostremos que si la fórmula de derivación numérica satisface c i = L'i (x*)
(i = 0, ..., n) entonces es de tipo interpolatorio. En efecto, considerando que el
polinomio interpolador de Lagrange de f(x) sobre el soporte {x0, ..., xn} se puede
n
expresar como: pn(x) =
∑ f(x )·L (x)
i=0
i
i
se tiene que si se verifican las igualdades
consideradas para los coeficientes:
3
⎛ n
⎞
Recuérdese que: Li (x) = ⎜ ∏ (x − x j ) ⎟
⎜ j=0
⎟
⎜
⎟
⎝ j≠i
⎠
⎛ n
⎞
⎜ (x − x ) ⎟
i
j ⎟
⎜∏
⎜ j=0
⎟
⎝ j≠i
⎠
11
(i = 0, 1, ..., n)
Programación y Métodos Numéricos
Derivación Numérica
'
⎛ n
⎞
f’(x*) ≈ ∑ c i f(xi ) = ∑ (L 'i (x*)f(x i )) = ∑ (Li (x*)f(xi )) ' = ⎜ ∑ Li (x*)f(xi ) ⎟ = p'n (x*)
i= 0
i=0
i=0
⎝ i= 0
⎠
n
n
n
lo que demuestra que el valor de la primera derivada en x* se aproxima con el
valor de la primera derivada del polinomio interpolador en x*.
c.q.d.
La propiedad anterior caracteriza a las fórmulas de derivación numérica de tipo
interpolatorio que permiten aproximar primeras derivadas. Además nos permite
obtener otras propiedades que deben satisfacer los coeficientes de las fórmulas
de tipo interpolatorio. Por ejemplo:
Propiedad 3.2.
En toda fórmula
de
derivación
numérica
de
tipo
interpolatorio
n
fx*' = ∑ c i .f(xi ) se verifica que:
i= 0
n
∑c
i=1
i
=0
Demostración:
Puesto que según las propiedades de los polinomios de base de Lagrange se
n
verifica que:
∑ L (x) = 1
i=0
i
∀x , es obvio que:
'
n
⎛ n
⎞
'
L
(x)
=
⎜ ∑ i ⎟ ∑ Li (x) = 0
⎝ i=0
⎠ i=0
∀x
En particular para el punto x* se tendrá que:
n
n
i=0
i=0
∑ L'i (x*) = ∑ ci = 0
c.q.d.
Ocupémonos ahora de analizar el error en las fórmulas de derivación numérica
de tipo interpolatorio. Denotando por ε(x) a la función error de interpolación
cometido al aproximar una función f(x) por su polinomio interpolador de
Lagrange pn(x) sobre el soporte de (n+1) puntos considerado, se verifica que:
f(x) = pn(x) + ε(x)
∀x ∈ (x 0 ,xn )
por lo que:
f '(x*) = pn' (x*) + ε '(x*)
12
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
lo cual nos conduce a poder expresar el error en el punto x* de la fórmula de
derivación numérica mediante:
R f (x*) = ε '(x*)
En el caso particular en que f(x) sea un polinomio de grado menor o igual que n
se verificará que f(x) ≡ pn(x) y por tanto ε(x) = 0 ∀x , de donde resulta que la
fórmula de derivación numérica de tipo interpolatorio construida sobre un
soporte de (n+1) puntos es exacta para cualquier polinomio de grado menor o
igual que n. En resumen es exacta de orden n.
Este hecho nos permite incluir a las fórmulas de derivación numéricas de tipo
interpolatorio en el conjunto de fórmulas de derivación exactas de orden n.
Pero aún puede precisarse más, puesto que además toda fórmula exacta de
orden n construida sobre un soporte de (n+1) puntos debe ser necesariamente
de tipo interpolatorio. Este hecho se demuestra en el siguiente teorema.
Teorema 3.1.
La condición necesaria y suficiente para que una fórmula de derivación
n
numérica construida sobre un soporte de (n+1) puntos, fx*' = ∑ c i .f(xi ) ,
i =0
sea exacta de orden n es que sea de tipo interpolatorio.
Demostración:
a) Demostremos en primer lugar que la condición recogida en el enunciado
del teorema es suficiente, es decir que si la fórmula construida sobre el
soporte de (n+1) puntos es de tipo interpolatorio entonces es exacta de
orden n. Para ello basta con recapitular los razonamientos anteriormente
realizados. En efecto, si f(x) es una función polinómica de grado menor o
igual que n su polinomio interpolador de Lagrange sobre el soporte de
(n+1) puntos coincide con la función y por tanto:
f(x) = pn(x)
por lo que f’(x) = p’n(x)
tendrá que:
∀x
∀x . En particular para cualquier punto x* se
f '(x*) = pn' (x*) ≡ fx*'
13
Programación y Métodos Numéricos
Derivación Numérica
Ello demuestra que la fórmula es exacta sea cual sea el polinomio f(x)
de grado menor o igual que n al que se aplique y el punto x* en el que se
aproxime la primera derivada.. En particular lo será cuando se aplique a
los (n+1) primeros monomios {1, x, ..., xn} y por ello es exacta de grado
n.
b) Demostremos ahora que la condición anterior también es necesaria, es
decir que si la fórmula construida sobre el soporte de (n+1) puntos es
exacta de orden n entonces tiene que ser de tipo interpolatorio. Para ello
partimos del hecho de que, al ser la fórmula exacta de orden n, para
cualquier función polinómica de grado menor o igual que n, p(x), se debe
verificar que:
n
p'(x*) = ∑ c i .p(xi )
i =0
Por otra parte, puesto que hemos considerado que p(x) es un polinomio
de grado menor o igual que n, se verificará que el polinomio interpolador
de p(x) en el soporte de (n+1) puntos coincidirá con p(x) y por tanto p(x)
se puede expresar como:
n
p(x) = ∑ p(xi ).Li (x)
i= 0
de donde su primera derivada en el punto x* estará dada por:
n
p'(x*) = ∑ L'i (x*).p(xi )
i= 0
Identificando las dos expresiones de la primera derivada de p(x) en x* se
tiene que:
n
n
i =0
i=0
∑ ci .p(xi ) = ∑ L'i (x*).p(xi )
Esta igualdad debe ser satisfecha para cualquier polinomio p(x) que sea
de grado menor o igual que n. Por tanto deberá verificarse también en el
caso de que consideremos como p(x) cualquiera de los (n+1) polinomios
n
de base de Lagrange construidos sobre el soporte {xi }i=0 . Recordemos
además que los polinomios de base de Lagrange verifican:
14
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
⎧0 si i ≠ j
Li (x j ) = ⎨
⎩ 1 si i=j
Por tanto, particularizando la igualdad antes obtenida para L0(x) se tiene
que:
n
∑ c .L
i =0
i
n
0
(xi ) = ∑ L'i (x*).L0 (xi ) ⇒ c 0 = L'0 (x*)
i=0
Al hacerlo para el polinomio L1(x) resultará que:
n
n
i =0
i= 0
∑ ci .L1(xi ) = ∑ L'i (x*).L1(xi ) ⇒ c1 = L'1(x*)
Y en general al particularizar para cualquier polinomio de base Lj(x)
obtendremos que:
n
n
i =0
i=0
∑ ci .L j (xi ) = ∑ L'i (x*).L j (xi ) ⇒ c j = L' j (x*)
c.q.d.
Ejemplos:
1º) Si se considera un único punto de soporte {x0} el polinomio interpolador de
una función f(x) en dicho soporte será el polinomio: p0(x) = f(x0). La figura 1
recoge, junto al grafo de la función f(x) el grafo de p0(x) y la tangente
geométrica a la curva en (x0, f(x0)). La pendiente de esta tangente geométrica
será la derivada f’(x0).
Figura 1: Interpretación gráfica del proceso de aproximación de la derivada primera
de una función mediante la fórmula de tipo interpolatorio con soporte de un punto.
15
Programación y Métodos Numéricos
Derivación Numérica
Ello nos conduciría a que, para cualquier punto x*, la fórmula de derivación de
tipo interpolatorio de una función con un soporte de un único punto es:
f '(x*) ≈ fx*' = p0' (x*) = 0 = 0.f(x 0 )
Obviamente esta fórmula sólo sería exacta en el caso de derivar constantes (es
decir, polinomios de grado 0).
2º) Si se considera un soporte de 2 puntos {x0, x1} el polinomio interpolador de
la función f(x) en el sentido de Lagrange está dado por:
p1 (x) = f(x 0 ).
(x − x 0 )
(x − x1 )
+ f(x1 ).
(x 0 − x1 )
(x1 − x 0 )
La derivada de este polinomio es:
p1' (x) = f(x 0 ).
f(x1 ) − f(x 0 )
1
1
+ f(x1 ).
=
(x 0 − x1 )
(x1 − x 0 )
(x1 − x 0 )
Al no depender del punto en el que se evalúe la derivada podemos concluir que
para cualquier abscisa x* el valor de la primera derivada de la función en ella,
f’(x*), se aproximará mediante:
f '(x*) ≈ fx*' =
f(x1 ) − f(x 0 )
x1 − x 0
Esta expresión se corresponde con el cociente incremental que se utilizó en los
ejemplos de los apartados anteriores. Puede observarse que los pesos de la
fórmula son: c0 = -1/(x1 – x0) y c1 = 1/(x1 – x0) por lo que su suma se anula. La
gráfica de la figura 2 representa junto a los grafos del polinomio interpolador y
de la función f(x) la tangente geométrica al grafo de f(x) en un punto (x*, f(x*)).
16
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
Figura 2: Interpretación gráfica del proceso de aproximación de la derivada primera
de una función mediante la fórmula de tipo interpolatorio con soporte de dos puntos.
Obviamente esta fórmula de derivación numérica será exacta sobre cualquier
polinomio de grado menor o igual que 1 (es decir sobre líneas rectas).
•
Otras relaciones entre los pesos y los puntos del soporte de las fórmulas de
derivación numérica de tipo interpolatorio se recogen en la propiedad siguiente:
Propiedad 3.3
En toda fórmula
de
derivación
numérica
de
tipo
interpolatorio
n
fx*' = ∑ c i .f(xi ) , construida sobre un soporte de (n+1) puntos, se verifica
i= 0
que:
n
∑c x
i =1
i
k
i
= k·( x * )
k −1
(k = 1, ...n)
Demostración:
Por ser la fórmula de tipo interpolatorio es exacta para todo polinomio de grado
menor o igual que n. En particular lo será para la función f(x) = xk sea cual sea
el valor del entero positivo k siempre que k < n. Puesto que f’(x*) = k·(x*)(k-1), la
exactitud de la fórmula implica que:
n
∑c x
i=1
i
k
i
= k·( x * )
k −1
( 0 < k < n)
c.q.d.
17
Programación y Métodos Numéricos
Derivación Numérica
EJERCICIO PROPUESTO:
Demuéstrese que para cualquier función f(x) que sea derivable en todo punto
del intervalo [x0, x1] siempre existe algún punto x* de dicho intervalo para el que
la fórmula de derivación numérica de tipo interpolatorio construida sobre el
soporte {x0 ,x1} proporciona el valor exacto f’(x*). Nótese que, si esto es así, en
particular se puede afirmar que siempre existirá algún punto x* en el intervalo
[x0, x1] para el que la fórmula construida con dos puntos de soporte proporciona
el valor exacto de la derivada de xk sea cual sea el valor que le demos al entero
no negativo k. ¿Contradice esto la afirmación de que la fórmula es de orden 1?.
A la luz de este comentario ¿no sería más preciso decir que la fórmula es de
orden infinito?.
18
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
4. Expresiones del error de las fórmulas de derivación numérica de tipo
interpolatorio que aproximan la primera derivada de una función.
El proceso seguido para obtener las fórmulas de derivación numérica de tipo
interpolatorio nos conduce de forma natural a que el error de cada fórmula
Rf(x*) de derivación así determinada es igual a la primera derivada de la
función de error interpolación ε(x) particularizada en el punto x* en que se
deriva: Rf(x*)= ε '(x*) . No obstante trabajar con la expresión del error de
interpolación que se dedujo en los temas dedicados al estudio de las técnicas
de interpolación4 no es cómodo en muchas ocasiones. Es por ello interesante
obtener otras expresiones más cómodas para el análisis del error de las
fórmulas de derivación numérica.
Una primera forma de obtener otra expresión del error de derivación numérica
se basa en utilizar diferencias divididas. Para ello, como es habitual,
denotaremos por f[x0, x1, ..., xn, x] a la diferencia dividida de orden (n+1) de la
función f(x) en los puntos {x0, x1, ..., xn, x] y consideraremos una función g(x)
que a todo punto x le haga corresponder el valor: g(x) = f[x0, x1, ..., xn, x]
La primera derivada de esta función estará dada por:
f[x 0 ,x1,....,xn ,x + h] − f[x 0 ,x1,....,xn ,x]
= lim f[x 0 ,x1,....,x n ,x,x + h]
h →0
h →0
(x + h) − x
g’(x)= lim
que representaremos por:
g'(x) = f[x 0 ,x1,....,xn ,x,x]
Más concretamente:
Definición 10.4.1.
Se define la diferencia dividida de orden (n+2 )de una función en el
soporte {x0, x1, ..., xn, x, x} mediante:
df[x 0 ,x1,....,xn ,x]
f[x 0 ,x1,...,x n ,x,x] =
dx
f (n +1 (ξ x ) n
.∏ (x − xi ) donde ξ x era un
(n + 1)! i= 0
punto dependiente de la abscisa x en la que se deseaba estimar el error de interpolación. Este
error también
se podía expresar usando las diferencias divididas como
4
Recuérdese que la expresión obtenida era:
n
ε(x) = f[x 0 , x1 ,..., xn , x] ⋅ ∏ (x − xi ) .
i=0
19
ε(x) =
Programación y Métodos Numéricos
Derivación Numérica
Con ayuda de las diferencias divididas con puntos repetidos que se acaban de
definir y partiendo de la expresión del error de interpolación que se obtuvo al
trabajar con diferencias divididas, es sencillo demostrar la siguiente propiedad:
Propiedad 4.1.
La fórmula
de
derivación
numérica
de
tipo
interpolatorio
n
fx*' = ∑ c i .f(xi ) tiene asociado un error de truncatura dado por la expresión
i= 0
⎛ n ⎛ n
⎞⎞
⎜ ⎜
⎟
Rf ( x*) = f [ x0 , x1 ,..., xn , x*, x * ] .∏ ( x * − xi ) + f [ x0 , x1 ,..., xn , x*, x * ] . ⎜ ∑ ∏ ( x * − x j ) ⎟ ⎟
⎜
⎟
i =0
⎟⎟
⎜ i =0 ⎜ jj =≠0i
⎠⎠
⎝ ⎝
n
Demostración:
Basta con particularizar en x* la expresión obtenida al derivar una vez la
función de error de interpolación:
n
ε(x) = f[x 0 ,x1,...,xn ,x].∏ (x − xi )
i =0
c.q.d.
La expresión anterior, teniendo un interés teórico, también es de difícil
aplicación práctica. Es por eso que lo que resta de este apartado lo
dedicaremos a determinar una expresión de fácil aplicación advirtiendo de
antemano al lector que más que la fórmula que finalmente determinemos, en la
práctica es el método que vamos a seguir el que tiene interés práctico.
Consideremos que f(x) es una función de clase Cn+1((x0, xn)) y que para
aproximar la primera derivada de la función f(x) en un punto x* perteneciente al
intervalo [x0 , xn] se considera la fórmula de derivación numérica de tipo
n
interpolatorio fx*' = ∑ c i .f(xi ) construida sobre un soporte de (n+1) puntos
i =0
distintos {x0 < x1 < ....< xn}. Adviértase que, por ser la fórmula de tipo
interpolatorio, al menos, será de orden n. Ello, en particular implica que servirá
para determinar sin error de truncatura ninguno las derivadas de las funciones
{1, x, x2, ..., xn}. Ello a su vez se traduce en que:
n
n
i=0
i=0
∑ c i ⋅ xik = (xk )'x = x* ⇒ ∑ c i ⋅ xik = k.(x * )(k −1)
20
(k = 0,..., n)
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
Denotemos además por h al valor:
h = Max ( x * − x 0 , x * − x n
)
y sean {θi }i=0 (n+1) escalares de valor absoluto no superior a 1 y tales que:
n
xi = x * +θi ⋅ h
Para cada uno de estos puntos, al haber supuesto la función f(x)
suficientemente regular, se puede considerar el desarrollo en serie de Taylor
siguiente:
θ2 .h2
θn .hn (n
f(xi ) = f(x * +θi .h) = f(x*) + θi .h.f '(x*) + i
.f "(x*) + .... + i
.f (x*) +
2
n!
θn+1.hn+1 (n+1
+ i
.f (x * +δi .h)
(n + 1)!
Por tanto la fórmula de derivación numérica de tipo interpolatorio considerada
podrá rescribirse en la forma:
n
h2 . ⎛ n
⎛ n ⎞
⎛ n
⎞
⎞
fx*' = ∑ c i .f(xi ) = ⎜ ∑ c i ⎟ .f(x*) + h. ⎜ ∑ c i .θi ⎟ .f '(x*) +
c i .θi2 ⎟ .f "(x*) + ..... +
∑
⎜
2! ⎝ i=0
i =0
⎝ i=0 ⎠
⎝ i=0
⎠
⎠
n
n +1
n
n
h ⎛
h
⎞
.∑ c i .θi(n+1) .f (n+1(x * +δi .h)
+ . ⎜ ∑ c i .θin ⎟ .f (n (x*) +
n! ⎝ i=0
(n
1)!
+
i=0
⎠
Simplifiquemos la expresión que se acaba de obtener. El coeficiente que
multiplica a f(x*) es nulo pues es la suma de los pesos de la fórmula (véase la
propiedad 3.2.). Para simplificar otros sumandos de la expresión utilizaremos
las dos propiedades siguientes:
Propiedad 4.2.
n
Con la notación introducida anteriormente y siendo fx*' = ∑ c i .f(xi ) una
i= 0
fórmula de derivación numérica de
verifica que:
tipo interpolatorio con n > 0, se
n
∑ c .θ
i
i=0
i
=
1
h
Demostración:
Con la notación que estamos utilizando se tiene que:
21
Programación y Métodos Numéricos
Derivación Numérica
xi − x *
h
θi =
de donde:
n
1 n
1 ⎛ n
⎞ 1
c
.
.
c
.(x
x*)
.
c
.x
.x
*
.
ci
θ
=
−
=
−
∑
∑ i i
∑ i i ⎟⎠ h ∑
i i
h i=0
h ⎜⎝ i=1
i=0
i=0
n
n
∑c
En esta última igualdad se sabe que
i
= 0 (véase la propiedad 3.2.). Por
i= 0
n
otra parte
∑ c .x
i
i
se corresponde con la expresión de la derivada del monomio
i =1
x en el punto x*. Por ello su valor será 1. En resumen:
n
1
c i .xi =
∑
h
i=0
c.q.d.
Propiedad 4.3.
n
Con la notación introducida anteriormente y siendo fx*' = ∑ c i .f(xi ) una
i= 0
fórmula de derivación numérica de
verifica que:
n
∑ c .θ
i
k
i
tipo interpolatorio, con n>1,
=0
se
(k=2,....,n)
i=0
Demostración:
Con la notación que se está utilizando y empleando la fórmula de Newton para
desarrollar potencias de binomios5, se tiene que:
n
∑ c i .θik =
i=0
⎞⎞
⎛k ⎞
1 n
1 n ⎛ ⎛ k
k
−
=
.
c
.(x
x*)
. ⎜ c i . ⎜ ∑ ( −1) j . ⎜ ⎟ .xi(k − j) .(x*) j ⎟ ⎟ =
i
k ∑ i
k ∑⎜
⎟
h i= 0
h i=0 ⎝ ⎝ j=0
⎝ j⎠
⎠⎠
=
n
1 k ⎛
j ⎛k ⎞
j ⎛
(k − j) ⎞ ⎞
−
.
(
1)
.
.(x*)
.
c
.x
⎜
∑
∑
i
i
⎜
⎟
⎜
⎟⎟
hk j=0 ⎝
⎝ i= 0
⎠⎠
⎝ j⎠
Al ser la fórmula de tipo interpolatorio será exacta para cualquier polinomio de
grado menor o igual que n. En particular, al haber considerado n > 1 si se
toman valores de k tales que 2 ≤ k ≤ n se debe verificar para todo valor del
n
entero j comprendido entre 0 y (k-1) que el sumatorio
∑ c .x
i=0
5
i
(k − j)
i
coincide con el
⎛k ⎞
k!
Como es habitual, en dicha fórmula se utiliza la notación ⎜ ⎟ para representar a
(k − j)!.j!
⎝ j⎠
22
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
valor de la derivada del monomio x(k-j) particularizado en el punto x*. Es decir
que:
n
∑ c .x
i=0
i
(
)
'
= x(k − j) ⎤
= (k − j).(x*)(k − j−1)
⎥⎦ x = x*
(k − j)
i
n
Para el caso en que j coincida con el valor de k el sumatorio quedará
∑c
i=0
i
cuyo valor es nulo(véase la propiedad 3.2.). Por tanto:
n
∑ c i .θik =
i=0
=
⎞
⎛k ⎞
1 (k −1) ⎛
.
( −1) j . ⎜ ⎟ .(x*) j .(k − j).(x*)(k − j−1) ⎟ =
k ∑⎜
h j= 0 ⎝
⎝ j⎠
⎠
(k −1)
⎛
⎛k ⎞⎞
1
(k −1)
j
.(x*)
.
⎜ ( −1) .(k − j). ⎜ ⎟ ⎟
∑
k
h
j=0 ⎝
⎝ j ⎠⎠
Puesto que6 se verifica que:
⎛k ⎞
(k −1)
∑ (−1) .(k − j). ⎜ j ⎟ = 0
j
∀k ≥ 2
⎝ ⎠
j=0
puede concluirse que:
n
∑ c .θ
i=0
i
k
i
=0
(k = 2, ..., n)
c.q.d.
Estas dos propiedades junto a la expresión que obtuvimos antes de enunciarlas
nos permiten demostrar fácilmente el siguiente teorema:
Teorema 4.1.
Dado el soporte de (n+1) puntos x0 < x1 < ... < xn , siendo f(x) una
función de clase C(n+1)((x0 , xn)), siendo x* un punto del intervalo [x0 , xn],
denotando hi = xi – x* , por h al valor h = máx(|x*-x0| , |x* - xn|) y por
n
{θi }i=0 a los (n+1) escalares tales que hi = θi .h , para toda fórmula de
derivación numérica de tipo interpolatorio:
n
f '(x*) ≈ fx*' = ∑ c i .f(x i )
i=0
existen (n+1) valores δi pertenecientes al intervalo [-1 , 1] tales que:
6
El lector interesado puede encontrar la demostración en el anexo a este apartado (Lema 4.2.)
23
Programación y Métodos Numéricos
Derivación Numérica
n
hn
Rf (x*) = f(x*) − f =
.∑ c i .θin .hi .f (n+1(x * +δi .h)
(n + 1)! i=0
(
'
x*
)
Demostración:
Introduciendo el resultado de las propiedades 4.2. y 4.3. en la expresión antes
obtenida resulta:
n
h2 . ⎛ n
⎛ n ⎞
⎛ n
⎞
⎞
fx*' = ∑ c i .f(xi ) = ⎜ ∑ c i ⎟ .f(x*) + h. ⎜ ∑ c i .θi ⎟ .f '(x*) +
c i .θi2 ⎟ .f "(x*) + ..... +
∑
⎜
2! ⎝ i=0
i =0
⎝ i=0 ⎠
⎝ i=0
⎠
⎠
+
hn ⎛ n
hn+1 n
⎞
. ⎜ ∑ c i .θin ⎟ .f (n (x*) +
.∑ c i .θi(n+1) .f (n+1(x * +δi .h) =
n! ⎝ i=0
(n + 1)! i=0
⎠
= f '(x*) +
n
hn
.∑ c i .θin .hi .f (n+1(x * +δi .h)
(n + 1)! i=0
(
)
c.q.d.
NOTAS:
1ª) Obsérvese que en el término del error se ha descompuesto hn+1 en la forma
hn·h, dejando sólo como factor común del sumatorio hn y expresando en cada
uno de los sumandos del término de error θi·h como hi. El motivo de ello es que
los coeficientes ci de la fórmula de derivación dependen en general de los
valores hi por lo que procediendo de esta manera el término de error podrá
expresarse en función de los valores de las derivadas f(n+1(ξi) (siendo ξi los
puntos x*+δi·h), de hn y de (n+1) constantes γi = ci·θin·hi/(n+1)!. En los ejemplos
del siguiente apartado se ilustrará este hecho.
2ª) La expresión anterior se resume frecuentemente indicando que el error es
de orden O(hn).
3ª) Para algunas funciones y en algunos puntos se verificará que el término
que multiplica a la derivada de orden (n+1) en el desarrollo en serie de Taylor
del que se partía también se anula. En dichos casos, si f(x) es lo
suficientemente regular, puede ampliarse el desarrollo en serie considerado
truncándolo en el primero de los términos que no se anule (que será posterior a
aquel en el que interviene la derivada n-ésima).
24
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
4ª) Con todo, como ya señaló anteriormente, lo más interesante de esta forma
de proceder no es tanto el resultado obtenido como el procedimiento seguido
para determinar el error de la fórmula (combinando desarrollos en serie de
Taylor).
5ª) Cuando el soporte es equidistante los cálculos anteriores suelen rehacerse
designando como h a la distancia entre los puntos del soporte.
•
Habitualmente el error se acota en valor absoluto, |Rf(x*)|. A partir del teorema
anterior es fácil obtener una cota de este error utilizando el lema siguiente:
Lema 4.1.
Si g(x) es una función continua en [a, b] y se consideran (n+1)
n
n
coeficientes positivos, {αi }i=0 , y (n+1) puntos {ξi }i=0 pertenecientes al
intervalo [a, b], entonces existe un punto ξ ∈ [a,b ] tal que:
n
∑ α .g(ξ ) = α.g(ξ)
i =0
i
i
n
donde α = ∑ αi .
i =0
Demostración:
Denotemos por gm y por gM a los valores mínimo y máximo que toma la función
g(x) en [a, b]. Por ser todos los coeficientes positivos se verifica que:
αi .gm ≤ αi .g(ξi ) ≤ αi .gM
(i = 0, 1, ..., n)
Sumando las expresiones anteriores se tiene que:
n
∑ α .g
i =0
i
m
n
n
n
i=0
i= 0
i=0
≤ ∑ αi .g(ξi ) ≤ ∑ αi .gM ⇒ α.gm ≤ ∑ αi .g(ξi ) ≤ α.gM ⇒
1 n
⇒ gm ≤ .∑ αi .g(ξi ) ≤ gM
α i= 0
Las desigualdades anteriores, junto a la hipótesis realizada sobre la
continuidad de la función g(x) en el intervalo [a, b], nos muestran que, por
aplicación del teorema del valor medio, existirá en [a, b] al menos un punto
ξ para el que se verifique que:
25
Programación y Métodos Numéricos
Derivación Numérica
n
1 n
.∑ αi .g(ξi ) = g(ξ) ⇒ ∑ αi .g(ξi ) = α.g(ξ)
α i =0
i=0
c.q.d.
El lema precedente y el teorema 4.1. nos permiten demostrar fácilmente el
siguiente teorema:
Teorema 4.2.
Dado el soporte de (n+1) puntos x0 < x1 < .... < xn, siendo f(x) una función
de clase C(n+1)((x0 , xn)), x* un punto del intervalo [x0 , xn] y denotando por
h al valor h = máx( |x* – x0 |, |xn – x|), para toda fórmula de derivación
numérica de tipo interpolatorio:
n
f '(x*) ≈ fx*' = ∑ c i .f(xi )
i=0
existe algún punto ξ ∈ [ x 0 ,x n ] y alguna constante real positiva β para los
que se verifica:
|Rf(x*)| ≤ β.hn .f (n+1 (ξ)
Demostración:
Según el teorema 4.1., y utilizando la misma notación que en él, se tiene que:
Rf (x*) = f(x*) − fx*' =
n
hn
.∑ c i .θin .hi .f (n+1 (x * +δi .h)
(n + 1)! i=0
(
)
de donde:
Rf (x*) = f(x*) − fx*' =
≤
n
hn
. ∑ c i .θin .hi .f (n+1 (x * +δi .h) ≤
(n + 1)! i=0
(
)
n
hn
.∑ c i .θin .hi . f (n+1 (x * +δi .h)
(n + 1)! i=0
Aplicando el lema 4.1. (para la función g(x) = |f(n+1(x)|, evaluada en los puntos
ξi = x* + δi.h, y con los coeficientes αi = |ci.θin.hi| ) se puede concluir que
existirá un valor x∈ [x0 , xn] para el que se verificará que:
⎧n ⎫
⎨∑ α i ⎬
i= 0
⎭ .h(n+1) . f (n+1 (ξ)
R f (x*) ≤ ⎩
(n + 1)!
de donde se tiene el resultado de este teorema sin más que llamar β al escalar
n
1
β=
.∑ αi
(n + 1)! i=0
c.q.d.
26
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
En el apartado siguiente se deducirán algunas fórmulas de derivación numérica
y se detallará cómo obtener la expresión del error que con ellas se comete.
ANEXO AL APARTADO 4º
Lema 4.2.
Para todo valor entero k superior o igua a 2 se verifica que:
⎛k ⎞
( k −1 )
∑ ( −1) .( k − j ).⎜ j ⎟ = 0
j
⎝ ⎠
j =0
∀k ≥ 2
Demostración:
Se tiene que:
k
k
⎛k ⎞ k
⎛k ⎞
j
j
j ⎛k ⎞
j ⎛k ⎞
(
1)
·(k
j)·
(
1)
·(k
j)·
k·
(
1)
·
−
−
=
−
−
=
−
−
∑
∑
⎜ ⎟ ∑
⎜ ⎟
⎜ ⎟ ∑ ( −1) ·j·⎜ ⎟
j=0
j= 0
⎝ j ⎠ j=0
⎝ j⎠
⎝ j ⎠ j= 0
⎝ j⎠
(k −1)
Analicemos, utilizando la fórmula del binomio de Newton7, el primero de los
sumandos del lado derecho de esta igualdad:
k
⎛k ⎞
k·∑ ( −1) j ·⎜ ⎟ = k·(1 − 1)k = k·0 = 0
j=0
⎝ j⎠
k
Analicemos ahora el sumando que queda en el lado derecho:
⎛k ⎞
∑ (−1) ·j·⎜ j ⎟ .
j
j=0
⎝ ⎠
Para ello procederemos por inducción. Para el valor k = 2 se tiene que el
sumando anterior tiene el valor:
2
⎛ 2⎞
∑ (−1) ·j·⎜ j ⎟ = 1· 0 · 1 + (−1) · 1· 2 + 1· 2 · 1 = 0
j
j=0
⎝ ⎠
Admitamos entonces que para algún valor (k-1) > 2 se verifica que:
(k −1)
⎛ k − 1⎞
⎟=0
⎝ j ⎠
∑ (−1) ·j·⎜
j
j=0
7
Recuérdese que la fórmula del binomio de Newton establece que:
k
⎛k ⎞
k
( a + b ) = ∑ ⎜ ⎟·a(k − j) ·b j
j=0 ⎝ j ⎠
27
Programación y Métodos Numéricos
Derivación Numérica
y demostremos que en ese caso también se anula el sumatorio para el entero
k. En efecto, con esta suposición:
k
k
k
k!
k!
k!
j ⎛k ⎞
j
j
−
=
−
=
−
=
=
(
1)
·j·
(
1)
·j·
(
1)
·j·
( −1) j ·
∑
∑
∑
⎜ ⎟ ∑
j!·(k − j)! j=1
j!·(k − j)! j=1
( j − 1)!·(k − j)!
j=0
⎝ j ⎠ j=0
k
k
= k·∑ ( −1) j ·
j=1
k
k
⎛ k − 1⎞
(k − 1)!
(k − 1)!
= k·∑ ( −1) j ·
= k·∑ ( −1) j ·⎜
⎟=0
( j − 1)!·(k − j)!
j!·(k − j − 1)!
j=0
j=0
⎝ j ⎠
Por tanto:
k
k
⎛k ⎞
j
j ⎛k ⎞
j ⎛k ⎞
(
1)
·(k
j)·
k·
(
1)
·
−
−
=
−
−
∑
∑
⎜ ⎟
⎜ ⎟ ∑ ( −1) ·j·⎜ ⎟ = 0 − 0 = 0
j=0
j= 0
⎝ j⎠
⎝ j ⎠ j= 0
⎝ j⎠
(k −1)
c.q.d.
28
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
5. Algunas fórmulas de derivación numérica de tipo interpolatorio usuales
para aproximar primeras derivadas.
5.1. Fórmula con dos puntos de soporte
Si se considera el soporte {x0 , x1} y una función f(x) de la que se conoce su
valor en los puntos del soporte, el polinomio interpolador de Lagrange de tal
función sobre el soporte escogido está dado por:
p(x) = f(x 0 ).
(x − x 0 )
(x − x1 )
+ f(x1 ).
(x 0 − x1 )
(x1 − x 0 )
Por tanto la expresión de la fórmula que permite aproximar f’(x*) se obtendrá
derivando la expresión de este polinomio de manera que:
f '(x*) ≈ fx*' = p '(x*) =
1
1
−1
1
.f(x 0 ) +
.f(x1 ) =
.f(x 0 ) +
.f(x1 )
(x 0 − x1 )
(x1 − x 0 )
(x1 − x 0 )
(x1 − x 0 )
Es habitual en este caso denotar por H a la distancia entre puntos: H = (x1 – x0)
con lo que la fórmula anterior puede expresarse como:
f(x*) ≈ fx*' =
−1
1
.f(x 0 ) + .f(x1 )
H
H
siendo los coeficientes de la fórmula c0 = -(1 / H) y c1 = (1 / H).
NOTAS:
1ª) Obsérvese que la fórmula obtenida coincide con el cociente incremental que
nos sirvió para ilustrar las fórmulas de derivación numérica en la introducción a
este tema (apartado 1º).
2ª) En la obtención de esta fórmula se ha partido de la expresión del polinomio
interpolador que utiliza los polinomios de base de Lagrange. Cualquier otra
expresión del polinomio interpolador nos hubiese conducido a idéntico
resultado pues el polinomio interpolador de Lagrange, sobre un soporte dado,
es el mismo se utilice el método que se utilice para determinarlo. Así por
ejemplo si se hubiera partido de la fórmula de Newton en diferencias divididas:
p(x) = f(x0) + f[x0, x1].(x-x0)
29
Programación y Métodos Numéricos
Derivación Numérica
que al derivarlo, teniendo en cuenta la expresión de la diferencia dividida nos
proporciona:
f(x1 ) − f(x 0 )
.(x − x 0 )
p’(x) = f[x0, x1].(x-x0) =
x1 − x 0
por lo que particularizando esta expresión en el punto x = x* y denotando por H
a la distancia entre puntos se tiene finalmente que:
f(x*) ≈ fx*' = p '(x*) =
−1
1
.f(x 0 ) + .f(x1 )
H
H
En este caso, al haber sólo dos puntos de soporte, se puede considerar el
soporte equidistante y podrían haberse utilizado las expresiones del polinomio
interpolador en diferencias finitas (centradas, regresivas o progresivas)
obteniéndose la misma fórmula. Se deja el desarrollo detallado de estos casos
como ejercicio propuesto al lector.
3ª) La figura 2ª representada anteriormente (ver apartado 3º) recoge la
interpretación gráfica de este proceso de aproximación.
•
La expresión del error de esta fórmula, admitiendo la hipótesis de que f(x) sea
de clase C2 ((x0 , x1)) y que x* pertenezca a [x0, x*], puede obtenerse sin más
que denotar por h al valor h = máx(|x0 – x*|, |x1 – x*|) y considerando
entonces que:
x0 - x* = θ0 .h
x1 - x* = θ1.h
por lo que:
1
1
. ( f(x1 ) − f(x 0 ) ) = . ( f(x * +θ1.h) − f(x * +θ0 .h) ) =
H
H
1 ⎡
1
= . ⎢ f(x*) + θ1.h.f '(x*) + .θ12 .h2 .f "(x * +δ1.h) −
H ⎣
2
1
⎤
− f(x*) − θ0 .h.f '(x*) − .θ02 .h2 .f "(x * +δ0 .h)⎥ =
2
⎦
θ − θ0
1 2 2
1 2 2
= 1
.h.f '(x*) +
θ1 .h .f "(x * +δ1.h) −
θ0 .h .f "(x * +δ0 .h) =
H
2.H
2.H
1 ⎛ x − x0 ⎞
1 2 2
1 2 2
= .⎜ 1
.h.f '(x*) +
θ1 .h .f "(x * +δ1.h) −
θ0 .h .f "(x * +δ0 .h) =
⎟
H ⎝ h ⎠
2.H
2.H
fx*' = c0.f(x0) + c1.f(x1) =
= f’(x*) +
h2
. θ12 .f "(x * +δ1.h) − θ02 .f "(x * +δ0 .h)
2.H
(
30
)
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
Puesto que H se podrá expresar como γ.h con (γ > 1) resultará finalmente,
aplicando el lema 4.1., que:
Rf(x*) =
(
)
h
. θ12 .f "(x * +δ1.h) − θ02 .f "(x * +δ0 .h) = β.h.f "(ξ)
2.γ
En el caso de ser x* un punto cualquiera el orden del error de la fórmula de
derivación numérica es 0(h) donde h representa la mayor de las distancias del
punto x* a los extremos del intervalo. Más frecuente aún que la expresión del
error anterior es la que se obtiene al expresar dicha fórmula en función de la
distancia entre los puntos del soporte (H). Fácilmente se obtiene esta nueva
expresión sin más que considerar que h = μ.H (con ½ < μ < 1) por lo que la
expresión del error queda en el caso más general en la forma:
Rf(x*) = ρ.H.f”(ξ)
La fórmula de derivación con dos puntos de soporte suele utilizarse cuando x*
es uno de los puntos extremos del intervalo o el punto medio del mismo (caso,
este último, en el que el orden del error de la fórmula se incrementa en una
unidad). A continuación se desarrollan estos casos particulares de la fórmula
de derivación con un soporte de dos puntos.
5.1.1. Casos particulares
A) Caso en el que x* = x0
En este caso h = H, θ0 = 0 y θ1 = 1 y la fórmula se puede escribir en la
forma:
f(x * +h) − f(x*)
fx*' =
h
denominándose “aproximación mediante la diferencia finita progresiva de
primer orden” (o en adelanto). El error de esta fórmula, si f(x) es
suficientemente regular puede
obtenerse particularizando en la
expresión antes obtenida resultando:
h
R f (x*) = f(x*) − fx*' = − .f "(x * +δ.h)
2
δ ∈ [0,1]
Por tanto en este caso la fórmula es exacta de orden 1.
31
Programación y Métodos Numéricos
Derivación Numérica
NOTA:
Al mismo resultado sobre el error se llegaría sin más que considerar que:
f(x*+h) = f(x*) + h.f’(x*) + (h2/ 2).f”(x*) + ..... de donde:
f’(x*) =
f(x * +h) − f(x*) 1
1
− .h.f "(x*) − .... = fx*' − .h.f "(x*) − ....
h
2
2
B) Caso en el que x* = x1
En este caso h = H, θ0 = −1 y θ1 = 1 y la fórmula se puede escribir en la
forma:
f(x*) − f(x * −h)
fx*' =
h
denominándose “aproximación mediante la diferencia finita regresiva de
primer orden” (o en retroceso o upwind). El error de esta fórmula, si f(x)
es suficientemente regular puede obtenerse particularizando en la
expresión antes obtenida resultando:
h
R f (x*) = f(x*) − fx*' = .f "(x * −δ.h)
2
δ ∈ [0,1]
Por tanto, en este caso la fórmula es exacta de orden 1.
NOTA:
Al mismo resultado sobre el error se llegaría sin más que considerar que:
f(x*-h) = f(x*) - h.f’(x*) + (h2/ 2).f”(x*) - ..... de donde:
f’(x*) =
f(x*) − f(x * −h) 1
1
+ .h.f "(x*) − .... = fx*' + .h.f "(x*) − ....
h
2
2
C) Caso en que x* es el punto medio del intervalo: x* = (x0 + x1) / 2
En este caso h = H/2, θ0 = −1 y θ1 = 1 pudiéndose rescribir la fórmula
de derivación numérica en la forma:
fx*' =
f(x * +h) − f(x * −h)
2.h
32
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
denominándose “aproximación mediante la diferencia finita centrada de
primer orden”. El error de esta fórmula, si f(x) es suficientemente regular
puede obtenerse, en un primer intento, particularizando en la expresión
antes obtenida resultando:
h
δ0 , δ1 ∈ [0,1]
R f (x*) = f(x*) − fx*' = . ( f "(x * +δ1.h) − f "(x * −δ0 .h) )
4
No obstante la expresión anterior nos deja con la duda de si no podrán
anularse más términos del desarrollo en serie de Taylor a partir del cual
se obtuvo la expresión del error. En efecto, en este caso si se admite
que f(x) es suficientemente regular se podrían considerar los desarrollos
en serie de Taylor de f(x) con más términos que los antes planteados, es
decir:
h3
h4 (iv
2
f(x0) = f(x*-h) = f(x*) – h.f’(x*) + (½).h f”(x*) .f '''(x*) +
.f (x*) − ....
6
24
h3
h4 (iv
f(x1) = f(x*+h) = f(x*) + h.f’(x*) + (½).h2f”(x*) +
.f '''(x*) +
.f (x*) + ....
6
24
por lo que:
h3
h5 (v
.f '''(x*) +
.f (x*) + ...
f(x+h) – f(x-h) = 2.h.f’(x*) +
3
60
de donde:
f(x * +h) − f(x * −h)
h2
h4 (v
fx*' =
= f '(x*) + .f '''(x*) +
.f (x*) + ....
2.h
6
120
y por tanto:
h2
h4 (v
Rf(x*) = f’(x*) - fx*' = − .f '''(x*) −
.f (x*) − ....
6
120
En resumen, si f(x) es de clase C3((x0, x1)) puede afirmarse en este caso
que:
h2
R f (x*) = − .f '''(x * +δh) δ ∈ [0,1]
6
por lo que en este caso la fórmula es exacta de orden 2.
5.2. Fórmula con tres puntos de soporte
Sea ahora el soporte de tres puntos x0 < x1 < x2 y consideremos un punto x*
perteneciente al intervalo [x0, x2]. Sea además f(x) una función de la que se
conocen sus valores en los puntos del soporte. El polinomio interpolador de
Lagrange de f(x) sobre este soporte puede expresarse, utilizando la fórmula de
Newton en diferencias divididas, mediante:
33
Programación y Métodos Numéricos
Derivación Numérica
p2(x) = f(x0) + f[x0, x1].(x - x0) + f[x0 , x1, x2].(x – x0).(x – x1)
por lo que:
p’2(x) = f[x0, x1]+ f[x0 , x1, x2].((x – x0) + (x – x1))
lo que nos conduce a que la fórmula de derivación numérica de tipo
interpolatorio con este soporte está dada por:
f’(x*) ≈ fx*' = p'2 (x*) = f[x0, x1]+ f[x0 , x1, x2].((x* – x0) + (x* – x1))
NOTAS:
1ª) En este caso se ha utilizado la fórmula de Newton del polinomio
interpolador para inferir a partir de ella la fórmula de derivación de tipo
interpolatorio. Puesto que, sobre un soporte dado, el polinomio interpolador de
Lagrange es único podrían haberse utilizado otras expresiones de este
polinomio para obtener el mismo resultado. No obstante es cómodo utilizar la
fórmula de Newton en el caso general para no obtener expresiones que,
desarrolladas, quedan muy “aparatosas” sin aportar nada para nuestros
propósitos.
2ª) En la expresión anterior pueden sustituirse las diferencias divididas que
intervienen por sus expresiones respectivas8. Ello hace que la fórmula tome un
aspecto más “engorroso” para su manipulación.
3ª) En el sentido de lo expresado en la primera de estas “notas” el polinomio
interpolador podría haberse expresado en la forma:
p2(x) = f(x0).L0(x) + f(x1).L1(x) + f(x2).L2(x)
con:
L0 (x) =
8
(x − x 0 ).(x − x 2 )
(x − x 0 ).(x − x1 )
(x − x1 ).(x − x 2 )
, L1 (x) =
, L 2 (x) =
(x1 − x 0 ).(x1 − x 2 )
(x 2 − x 0 ).(x 2 − x1 )
(x 0 − x1 ).(x 0 − x 2 )
Recuérdese que:
f [ x0 , x1 ] =
f ( x1 ) − f ( x0 )
,
x1 − x0
f [ x0 , x1 , x2 ] =
f [ x1 , x2 ] =
f [ x1 , x2 ] − f [ x0 , x1 ]
x 2 − x0
34
f ( x2 ) − f ( x1 )
x2 − x1
y
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
para así obtener la misma fórmula de derivación numérica pero ahora con la
expresión
f(x*) ≈ fx*' = p'2 (x*) = L'0 (x*).f(x 0 ) + L'1 (x*).f(x1 ) + L'2 (x*).f(x 2 )
En esta última expresión los coeficientes de la fórmula aparecen de forma más
explícita y toman la expresión:
c0 = L'0 (x*) =
(x * − x1 ) + (x * − x 2 )
,
(x 0 − x1 ).(x 0 − x 2 )
c2 = L 2 (x*) =
c1 = L1 (x*) =
(x * − x 0 ) + (x * − x 2 )
(x1 − x 0 ).(x1 − x 2 )
(x * − x 0 ) + (x * − x1 )
(x 2 − x 0 ).(x 2 − x1 )
4ª) La interpretación gráfica del proceso de derivación numérica seguido con
esta fórmula consiste en sustituir la tangente trigonométrica del ángulo formado
entre el eje de abscisas y la tangente geométrica al grafo de f(x) en el punto
(x*, f(x*)) por la tangente trigonométrica del ángulo formado entre el eje de
abscisas y la tangente geométrica en el punto (x*, p2(x*)) al grafo de la
parábola p2(x) que pasa por los puntos (x0 , f(x0)), (x1 , f(x1)) y (x2 , f(x2)). La
figura 3 ilustra este proceso.
•
Figura 3: Interpretación gráfica del proceso de derivación numérica seguido con una
fórmula de tipo interpolatorio con tres puntos de soporte.
35
Programación y Métodos Numéricos
Derivación Numérica
En lo que se refiere al error de truncatura de esta fórmula, su expresión puede
acotarse, si f∈C3((x0 , x1)), utilizando el teorema 4.2. mediante:
R f (x*) ≤ β.h2 . f ''' (ξ)
Los casos de aplicación más típicos para esta fórmula de derivación numérica
son aquellos en los que el punto x* coincide con uno de los puntos del soporte
siendo, además, el soporte equidistante. A continuación se analizan con detalle
estas situaciones.
5.2.1. Casos particulares con soporte equidistante
En este caso, denotando por H a la distancia entre puntos consecutivos del
soporte las diferencias divididas que intervienen en la fórmula pueden ser
expresadas mediante:
f[x 0 ,x1 ] =
f(x1 ) − f(x 0 )
H
f[x 0 ,x1,x 2 ] =
f(x 2 ) − 2.f(x1 ) + f(x 0 )
2.H2
por lo que la fórmula de derivación numérica de tipo interpolatorio se convierte
en:
f '(x*) ≈ fx*' =
f(x1 ) − f(x 0 ) f(x 2 ) − 2.f(x1 ) + f(x 0 )
+
.((x * − x 0 ) + (x * − x1 ))
2
H
2.H
H
x0
H
x1
x2
A) Caso de soporte equidistante en el que x* = x0
Si se toma como punto x* el extremo izquierdo del soporte se tiene que:
x0 = x*, x1 = x* + H y x2 = x* + 2.H. Con ello (x* - x0) = 0 y (x* - x1) = -H
por lo que:
36
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
f(x1 ) − f(x 0 ) f(x 2 ) − 2.f(x1 ) + f(x 0 )
−
=
H
2.H
− f(x 2 ) + 4.f(x1 ) − 3.f(x 0 ) − f(x * +2.H) + 4.f(x * +H) − 3.f(x*)
=
=
2.H
2.H
f '(x*) ≈ fx*' =
La fórmula anterior se conoce con el nombre de fórmula de derivación
numérica en diferencias progresivas de segundo orden.
Si se admite que f(x) es una función suficientemente mente regular, el error
de derivación puede obtenerse fácilmente combinando los desarrollos en
serie de Taylor:
f(x* + 2.H) = f(x*) + 2.H.f’(x*) +2.H2.f”(x*) + (8/6).H3.f’’’(x*) + …
f(x* + H) = f(x*) + H.f’(x*) + (½ ) H2.f”(x*) + (1/6).H3.f’’’(x*) +...
por lo que:
-f(x*+2.H) + 4.f(x*+H) – 3.f(x*) = 2.H.f’(x*) – (2/3).H3.f’’’(x*) + ….
de donde:
f’(x*) =
− f(x * +2.H) + 4.f(x * +H) − 3.f(x*) 1 2
+ .H .f '''(x*) + ....
2.H
3
pudiéndose concluir que si f(x) es al menos de clase C3((x0 , x1)) entonces:
Rf(x*) = f(x*) – fx*’ = (1/3).H2.f’’’(ξ)
B) Caso de soporte equidistante en el que x* = x1
Si se toma como punto x* el punto medio del soporte se tiene que:
x0 = x* - H, x1 = x* y x2 = x* + H. Con ello (x* - x0) = H y (x* - x1) = 0 por
lo que:
f(x1 ) − f(x 0 ) f(x 2 ) − 2.f(x1 ) + f(x 0 ) f(x 2 ) − f(x 0 )
f '(x*) ≈ fx*' =
+
=
=
H
2.H
2.H
=
f(x * +H) − f(x * −H)
2.H
37
Programación y Métodos Numéricos
Derivación Numérica
fórmula que coincide con la que se obtuvo al utilizar un soporte de 2 puntos
y aproximar la derivada en el punto medio de ellos.
C) Caso de soporte equidistante en el que x* = x2
Si se toma como punto x* el punto derecho del soporte se tiene que:
x0 = x* - 2.H, x1 = x*- H y x2 = x*. Con ello (x*-x0) = 2.H y (x*-x1) = H por
lo que:
f '(x*) ≈ fx*' =
=
f(x1 ) − f(x 0 ) f(x 2 ) − 2.f(x1 ) + f(x 0 )
+
.(3.H) =
H
2.H2
3.f(x 2 ) − 4.f(x1 ) + f(x 0 ) 3.f(x*) − 4.f(x * −H) + f(x * −2.H)
=
2.H
2.H
expresión que se conoce como fórmula de derivación numérica en
derivadas regresivas de segundo orden.
Si f(x) es suficientemente regular pueden combinarse los desarrollos en
serie de Taylor:
f(x* - 2.H) = f(x*) - 2.H.f’(x*) +2.H2.f”(x*) - (8/6).H3.f’’’(x*) + …
f(x* - H) = f(x*) - H.f’(x*) + (½ ) H2.f”(x*) - (1/6).H3.f’’’(x*) +...
obteniendo:
3.f(x*) – 4.f(x*-H) + f(x*-2.H) = 2.H.f’(x*) – (2/3).H3.f’’’(x*) - ....
de donde, si f(x) es al menos de clase C3((x0, x2) se obtiene que:
Rf(x*) = f(x*) – fx*’ = (1/3).H2.f’’’(ξ)
38
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
6. Otros métodos para la obtención de fórmulas de derivación numérica
de tipo interpolatorio.
6.1. Mediante la combinación de desarrollos en serie de Taylor.
El proceso seguido en el apartado 4º para determinar el error de derivación
numérica muestra otra manera de calcular las fórmulas de derivación. En
efecto, una alternativa al proceso de obtención de fórmulas de derivación
numérica mediante el cálculo de la primera derivada del polinomio interpolador
de Lagrange de la función f(x) en los (n+1) puntos del soporte, consiste en
combinar los desarrollos de Taylor en torno al punto x* de f(x0), f(x1), ..., f(xn)
buscando que en dicha combinación se anulen el mayor número posible de los
primeros términos salvo, obviamente, el que multiplica a f’(x*). Despejando
después f’(x*) de esta combinación se obtendrá la fórmula de derivación y el
término de error. De forma más detallada, si se denota por hi = xi – x* (i = 0, ..,
n) y se admite que f(x) posee la regularidad necesaria, se puede escribir que:
f(xi) = f(x*+hi) = f(x*) + hi·f(x*) +
hi2
h3
hk
·f "(x*) + i ·f '''(x*) + .... + i ·f (k (x*) + ....
2!
3!
k!
Por lo que:
⎛
n
⎞
n
⎛
⎞
n
1⎛
n
∑ α ·f(x ) = ⎜⎝ ∑ α ⎟⎠·f(x*) + ⎜⎝ ∑ α ·h ⎟⎠·f '(x*) + 2! ⎜⎝ ∑ α ·h
i=0
i
i
i= 0
i
i
i= 0
i
i= 0
i
2
i
⎞
⎟·f "(x*) +
⎠
1⎛ n
1⎛ n
⎞
3⎞
·h
·f
'''(x*)
....
α
+
+
αi ·hik ⎟·f (k (x*) + ...
∑
∑
i i ⎟
⎜
⎜
3! ⎝ i=0
k! ⎝ i=0
⎠
⎠
(1)
Si se desea que la fórmula de derivación sea del mayor orden posible debe
buscarse que, salvo el coeficiente de f’(x*), se anulen el mayor número de los
primeros sumandos del desarrollo anterior. Esto es, que:
n
n
∑ αi = 0
∑ αi·hi2 = 0
i=0
i=0
n
.........
∑ α ·h
i=0
i
k
i
=0
En general el número de ecuaciones que así se pueden formar es de n
ecuaciones quedando un sistema con (n+1) incógnitas (α0, ..., αn) y tan sólo n
ecuaciones. Ello es debido a que con el coeficiente de f’(x*) se debe añadir la
n
inecuación
∑ α ·h
i =0
i
i
≠0.
39
Programación y Métodos Numéricos
Derivación Numérica
Por ello los coeficientes (α0, ..., αn) que se determinen mediante la resolución
del sistema:
n
∑α
i=0
n
i
=0
∑ α ·h
i=0
i
2
i
=0
........
n
∑ α ·h
i=0
i
n
i
=0
quedarán en función del valor que libremente se le asigne a uno de ellos.
n
En todo caso, una vez calculados estos coeficientes, denotando por α = ∑ αi ·hi
i= 0
se tendrá que los coeficientes de la fórmula de derivación se obtienen
mediante: ci = αi / α (i = 0, ..., n) y que del primer término que no se haya
podido anular en la expresión (1) se podrá inferir fácilmente la expresión del
error de derivación.
Ilustremos estos extremos con un ejemplo.
Ejemplo:
Determinemos la fórmula de derivación numérica del mayor orden de exactitud
posible que permite calcular el valor aproximado de f’(x*) usando un soporte de
la forma: {x0 = x* - 2·h, x1 = x* - (½)·h, x2 = x* + (½)·h, x3 = x* + (3/2)·h} donde h
es un valor real estrictamente positivo.
Para ello, si suponemos que f(x) es suficientemente regular en (x0, x3) podemos
considerar los desarrollos en serie de Taylor:
f(x*-2·h) =f(x*) –2·h·f’(x*) +
4·h2
8·h3
16·h4 (iv
·f "(x*) −
·f '''(x*) +
·f (x*) −
2
6
24
32·h5 (v
·f (x*) + ...
−
120
1
h2
h3
h4 (iv
·f (x*) −
f(x*-(½)·h) =f(x*) – · h·f’(x*) + ·f "(x*) − ·f '''(x*) +
8
48
384
2
h5 (v
·f (x*) + ...
−
3840
40
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
1
h2
h3
h4 (iv
·f (x*) +
f(x*+(½)·h) =f(x*) + · h·f’(x*) + ·f "(x*) + ·f '''(x*) +
2
8
48
384
h5 (v
·f (x*) + ...
+
3840
3
3
9·h2
27·h3
91·h4 (iv
·f "(x*) +
·f '''(x*) +
·f (x*) +
f(x*+ ·h) =f(x*) + · h·f’(x*) +
2
2
8
48
384
273·h5 (v
·f (x*) + ...
+
3840
de donde:
1
1
3
α0 ·f(x * −2·h) + α1·f(x * − ·h) + α 2 ·f(x * + ·h) + α 3 ·f(x * + ·h) =
2
2
2
= ( α 0 + α1 + α 2 + α 3 )·f(x*) +
1
1
3 ⎞
⎛
+ ⎜ −2·α 0 − ·α1 + ·α 2 + ·α 3 ⎟·h·f '(x*) +
2
2
2 ⎠
⎝
1
1
9 ⎞
⎛
+ ⎜ 2·α 0 + ·α1 + ·α 2 + ·α 3 ⎟·h2 ·f "(x*) +
8
8
8 ⎠
⎝
1
1
27 ⎞
⎛ 8
+ ⎜ − .α 0 − ·α1 + ·α 2 + ·α 3 ⎟·h3 ·f '''(x*) +
48
48
48 ⎠
⎝ 6
1
1
91
⎛ 16
⎞
·α1 +
·α 2 +
·α 3 ⎟·h4 ·f (iv (x*) +
+ ⎜ .α 0 +
384
384
384 ⎠
⎝ 24
1
1
273
⎛ 32
⎞
.α 0 −
·α1 +
·α 2 +
·α 3 ⎟·h5 ·f (v (x*) + ....
+⎜−
3840
3840
3840 ⎠
⎝ 120
Si se desea que la fórmula tenga el mayor orden posible se obligará a que:
α0 + α1 + α 2 + α 3 = 0
1
1
9
2·α0 + ·α1 + ·α 2 + ·α 3 = 0
8
8
8
8
1
1
27
− .α 0 − ·α1 + ·α 2 + ·α 3 = 0
6
48
48
48
41
Programación y Métodos Numéricos
Derivación Numérica
de donde9, dejando como incógnita libre α1, se tiene:
α0 =
−8
·α1 ,
455
α2 =
−66
·α1 ,
65
α3 =
Si se asigna a α1 el valor α1 = 1 se tiene que:
−8
−66
,
,
α0 =
α1 = 1,
α2 =
455
65
3
·α1
91
α3 =
3
91
Para estos valores de los coeficientes αi, se tiene entonces que la combinación
de desarrollo en serie de Taylor antes obtenida se convierte en:
−
8
1
66
1
3
3
·f(x * −2·h) + f(x * − ·h) − ·f(x * + ·h) + ·f(x * + ·h) =
455
2
65
2
91
2
=−
12
1 4 (iv
·h·f '(x*) −
·h ·f (x*) + ....
13
208
por lo que:
f’(x*) =
1⎛ 2
13
11
1
⎞
·⎜
·f ( x * −2·h ) − ·f ( x * − h 2 ) + ·f ( x * + h 2 ) − ·f ( x * + 3·h 2 ) ⎟ h ⎝ 105
12
10
28
⎠
−
1 3 (iv
·h ·f (x*) + .....
192
De esta igualdad se infiere que la fórmula buscada es:
1⎛ 2
13
11
1
⎞
f '(x*) ≈ f* ' = ·⎜
·f ( x * −2·h ) − ·f ( x * − h 2 ) + ·f ( x * + h 2 ) − ·f ( x * + 3·h 2 ) ⎟
h ⎝ 105
12
10
28
⎠
y que con ella, si f∈C4((x*-2·h, x*+3·h/2)), se comete un error dado por:
R f (x*) = −
1 3 (iv
·h ·f (ξ)
192
para algún valor ξ∈(x*-2·h, x*+3·h/2). Es decir un error de orden 3.
9
Obsérvese que si al sistema anterior se le añadiese la ecuación procedente de obligar a que
se anulase el coeficiente de f’’’(x*) se tendría un sistema que sólo admite la solución trivial α0 =
= α1 = α2 = α3 = 0.
42
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
6.2. Método de coeficientes indeterminados.
Este método de determinación de fórmulas de derivación de tipo interpolatorio
soportadas en (n+1) puntos se basa en que, según el teorema 3.1. toda
fórmula de tal tipo debe ser exacta para los monomios {1, x, ..., xn}. Por tanto, si
n
se busca una fórmula con expresión: f '(x*) ≈ f '* = ∑ c i f(xi ) , su aplicación a
i=0
k
cada uno de los (n+1) monomios x (0 < k < n) nos conduce a que:
n
∑c
i=0
=0
i
n
∑c x
i
i=0
k
i
= k·( x * )
(k −1)
(k = 1, ..., n)
es decir al sistema:
⎡1 1 1
⎢x x x
1
2
⎢ 0
2
2
⎢ x 0 x1 x 22
⎢
⎢... ... ...
⎢⎣ xn0 x1n xn2
...
...
...
...
...
⎫
1 ⎤ ⎧c 0 ⎫ ⎧0
⎪1
⎪
⎥
⎪
⎪
xn ⎥ ⎪c1 ⎪ ⎪
⎪
⎪ ⎪2x *
⎪
2 ⎪
xn ⎥ ⎨c 2 ⎬ = ⎨
⎬
⎥ ⎪ ⎪ ⎪...
⎪
... ⎥ ...
⎪
⎪
⎪
⎪
(n −1)
xnn ⎥⎦ ⎪⎩c n ⎭⎪ ⎪⎩n ( x * ) ⎪⎭
Si los (n+1) puntos del soporte son diferentes puede asegurarse que el sistema
anterior es compatible determinado. Su resolución proporciona los pesos de la
fórmula de derivación buscada.
Siendo “h” un valor estrictamente positivo en función del cual se puedan
escribir, para valores convenientes de γi (i = 0, ...,n), los puntos del soporte en
la forma xi = x* + γ ih , el sistema anterior puede simplificarse si en lugar de
aplicar la fórmula a los monomios {1, x, ..., xn} se aplica a los polinomios:
{ 1, (x-x*), (x-x*)2, ...., (x-x*)n}
En efecto, la aplicación de la fórmula a f(x) = 1 conduce a que:
n
∑c
i=0
i
=0
Si n > 0, su aplicación a f(x) = (x – x*) proporciona la ecuación:
n
n
∑c γ h = 1⇒ ∑c γ
i=0
i i
i= 0
i i
=
43
1
h
Programación y Métodos Numéricos
Derivación Numérica
Y si n > 1 , para valores del exponente menores o iguales que n se tiene que:
k ( x * −x * )
(k −1)
n
n
i= 0
i=0
= ∑ c i γ ik hk ⇒ ∑ c i γ ik = 0
En resumen, los coeficientes de la fórmula de tipo interpolatorio se obtienen
resolviendo el sistema:
⎡1 1 1
⎢γ γ γ
2
⎢ 0 1
2
2
⎢ γ 0 γ1 γ 22
⎢
⎢... ... ...
⎢⎣ γ n0 γ1n γ n2
... 1 ⎤ ⎧c 0 ⎫ ⎧0 ⎫
... γ n ⎥⎥ ⎪⎪c1 ⎪⎪ ⎪⎪ 1h ⎪⎪
⎪ ⎪ ⎪ ⎪
... γ n2 ⎥ ⎨c 2 ⎬ = ⎨0 ⎬
⎥
... ... ⎥ ⎪... ⎪ ⎪...⎪
⎪ ⎪ ⎪ ⎪
... γ nn ⎥⎦ ⎪⎩c n ⎭⎪ ⎪⎩0 ⎪⎭
Una vez determinada la fórmula, su error puede también ser calculado si se
busca en la forma Rf(x*) = K·h(m-1)·f(m(ξ) aplicándolo al primer binomio (x-x*)m
(cuya derivada m-ésima es una constante no nula) para el que la fórmula deja
de ser exacta (hecho que tendrá lugar para m > n).
Ilustremos esta forma de proceder obteniendo nuevamente la fórmula de
derivación numérica hallada en el subapartado anterior mediante
combinaciones de desarrollos en serie de Taylor.
Ejemplo:
Determinemos la fórmula de derivación numérica de tipo interpolatorio que
permite calcular el valor aproximado de f’(x*) usando un soporte de la forma:
{x0 = x* - 2·h, x1 = x* - (½)·h, x2 = x* + (½)·h, x3 = x* + (3/2)·h} donde h es un
valor real estrictamente positivo.
Según se ha visto anteriormente, los coeficientes de la fórmula se pueden
obtener resolviendo el sistema:
⎡ 1 1 1 1 ⎤ ⎧c 0 ⎫ ⎧ 0 ⎫
⎢
⎪1 ⎪
3 ⎥ ⎪c ⎪
1
−1
⎪ h⎪
2
2
2 ⎥⎪ 1⎪
⎢ −2
=
⎨
⎬
⎨ ⎬
⎢ 4 14 14 9 4 ⎥ ⎪c 2 ⎪ ⎪ 0 ⎪
⎢
⎥
⎣ −8 −18 18 27 8 ⎦ ⎪⎩c 3 ⎭⎪ ⎩⎪ 0 ⎭⎪
o, eliminando denominadores, el sistema equivalente:
44
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
1
⎡ 1
⎢ −4 −1
⎢
⎢ 16 1
⎢
⎣ −64 −1
1 ⎤ ⎧c 0 ⎫ ⎧ 0 ⎫
⎪ ⎪
1 3 ⎥⎥ ⎪ c1 ⎪ ⎪⎪ 2 h ⎪⎪
⎨ ⎬=⎨ ⎬
1 9 ⎥ ⎪c 2 ⎪ ⎪ 0 ⎪
⎥
1 27 ⎦ ⎪⎩c 3 ⎭⎪ ⎩⎪ 0 ⎭⎪
1
La solución del sistema anterior nos proporciona los valores:
c0 =
2
−13
11
−1
,c1 =
,c 2 =
,c 4 =
105·h
12·h
10·h
28·h
Para determinar el error de la fórmula consideraremos la función f(x) = (x-x*)4.
La primera derivada de dicha función en x* es:
f’(x*) = 4.(x*-x*)3 = 0
siendo el valor aproximado dado por la fórmula:
f*' =
1⎛ 2
13
11
1 3 4⎞ 1 3
4
( −2h)4 − ( −12 h)4 + ( 12 h ) −
( 2 h) ⎟ = h
⎜
h ⎝ 105
12
10
28
⎠ 8
h3
1
por lo que R( x − x*)4 (x*) = f '(x*) − f = 0 −
= − h3 . Si se busca el error en la
8
8
forma:
R f (x*) = Kh3 f (iv (x*)
'
*
para la función considerada (cuya cuarta derivada es: f(iv(x*) = 24) se tiene que:
K = -1/192
En resumen la fórmula buscada es:
f*' =
1⎛ 2
13
11
1
⎞
f(x * −2h) −
f(x * − 12 h) +
f ( x * + 12 h ) −
f ( x * + 3 2 h) ⎟
⎜
h ⎝ 105
12
10
28
⎠
y el error de derivación numérica está dado por:
R f (x*) =
−1 3 (iv
h f (ξ)
192
45
Programación y Métodos Numéricos
Derivación Numérica
Ejercicio propuesto:
a) Siendo h un parámetro estrictamente positivo, determinar la fórmula de
derivación numérica que permite aproximar el valor de f’(x*) sobre el
soporte: x0 = x* +h, x1 = x* + 2h y x2 = x* + ( 5 2 ) h . Suponiendo que f(x)
es suficientemente regular en el intervalo [x*, x2], determínese también la
expresión de su error e indíquese la regularidad que se le debe exigir a
f(x) para que dicha expresión sea válida. Obténgase la fórmula pedida y
su error:
i)
Derivando el correspondiente polinomio interpolador de
Lagrange,
ii)
Combinando desarrollos en serie de Taylor, y
iii)
Mediante el método de coeficientes indeterminados.
b) Aplíquese la fórmula obtenida en el apartado anterior a la obtención de
un valor aproximado de la primera derivada de la función f(x) = ecos(x) con
los siguientes valores de h: h0 = 0.1, h1 = 0.01, h2 = 0.001, h3 = 0.0001
y h4 = 0.00001. Realícense los cálculos en coma flotante usando
mantisas con 5 decimales significativos.
c) Obténgase una cota del error de derivación numérica válida en el
intervalo [x*, x2] para la función considerada en el apartado anterior. El
error realmente cometido ¿es en todos los casos inferior a la cota
hallada? Si no lo fuese justifíquese el motivo.
46
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
7. Fórmulas de derivación numérica de tipo interpolatorio para la
aproximación de derivadas de orden superior.
Los métodos de obtención de fórmulas numéricas para aproximar primeras
derivadas pueden extenderse fácilmente para deducir fórmulas de derivación
numérica que permitan aproximar derivadas de orden superior al primero.
Destinaremos este apartado a describir este proceso con detalle.
Sea f(x) una función k veces derivable en un cierto intervalo I de la recta real y
sea x* un punto de dicho intervalo. Consideremos además un soporte de (n+1)
puntos {x0, x1, ..., xn} del intervalo I en el que se suponen conocidos los valores
de la función f(x). Por simplicidad supondremos que los puntos del soporte son
todos ellos distintos y están ordenados de menor a mayor es decir que: x0 < x1
< ... < xn.
Definición 7.1.
Siendo f(x) una función de la que se conocen sus valores en el soporte
de (n+1) puntos {x0 , x1, ...., xn} del intervalo I, se denomina fórmula de
derivación numérica para aproximar el valor de la k-ésima derivada
f(k(x) en el punto x* sobre el soporte de puntos considerado, a toda
expresión de la forma:
f(k(x*) ≈ f*(k = c0.f(x0) + c1.f(x1)+ …. + cn.f(xn) =
n
∑ c .f(x )
i=0
i
i
donde c0, c1, …, cn son (n+1) escalares denominados coeficientes (o
pesos) de la fórmula de derivación.
NOTA:
La fórmula de derivación que se acaba de definir puede decirse que es una
fórmula lagrangiana pues en ella sólo intervienen valores de la función f en los
puntos del soporte. Podrían considerarse fórmulas más generales, hermitianas,
en las que el valor de f(k(x*) fuese aproximado a partir del valor de la función f y
de algunas de sus derivadas en los puntos del soporte. No obstante, estas
últimas fórmulas tienen un uso mucho más esporádico que las de tipo
lagrangiano y es por ello que nos limitaremos a considerar como fórmulas de
derivación numérica tan sólo a las que hacen intervenir los valores de la
función en los puntos del soporte.
47
Programación y Métodos Numéricos
Derivación Numérica
En general el valor aproximado f*(k y el valor exacto f(k(x*) diferirán,
cometiéndose un error en la aproximación de f(k (x*). Es por ello que junto a la
definición anterior conviene precisar la definición del error que con la fórmula
se comete. En este sentido se introduce la siguiente definición:
Definición 7.2.
Siendo f*(k la aproximación de f(k(x*) que se obtiene operando sin error
de redondeo según la fórmula de derivación numérica:
f(k(x*) ≈ f*(k =
n
∑ c .f(x )
i=0
i
i
se denomina error de truncamiento de la fórmula en el punto x* al
valor Rf(x*) = f (k(x*) - f*(k
Obviamente se verificará que: f (k (x*) = f*(k + R f (x*) por lo que considerando
la fórmula en cuestión aplicada a todos los puntos x de un dominio dado
puede definirse la función error de truncamiento de la fórmula derivación
numérica para la función f considerada como la función:
Rf : I Æ R
x Æ Rf(x)
En el análisis del error de truncamiento de las fórmulas de derivación numérica
se perseguirá encontrar cotas del valor de esta función de error Rf(x) en el
intervalo I sobre el que se trabaje.
Ejemplo:
Siendo {x0 , x1 , x2 } un soporte formado por tres puntos tales que x0 = x1 – h y
x2 = x1 + h, considerando que x* = x1, la sustitución de la expresión de f”(x1)
por:
f "(x1 ) ≈ f1" = 2·f [ x 0 ,x1,x 2 ] =
f(x 2 ) − 2·f(x1 ) + f(x 0 )
h2
conduce a una fórmula en la que sus coeficientes son c0 = (1/h2) , c1 = (-2/h2) y
c2 = (1/h2). Una forma de acotar el error de truncamiento de esta fórmula, si se
supone que f(x) es al menos de clase C3([x0, x1]) consiste en considerar los
desarrollos en serie de Taylor siguientes:
48
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
f(x0) = f(x*-h) = f(x*) - h.f’(x*) +
h2
h3
h4
+ .f "( x*) − .f "'( x*) + .f ( iv ( x * +θ0 .h )
2
3!
4!
f(x2) = f(x*+h) = f(x*) + h.f’ x*) +
h2
h3
h4
.f "( x*) + .f '''( x*) + .f ( iv ( x * +θ1 .h )
+
2
3!
4!
θ0 ∈ ( −1,0)
θ1 ∈ (0,1)
de donde:
f ( x2 ) + f ( x0 ) = 2·f ( x*) + h2 ·f "( x*) +
h4 ( iv
·( f ( x * +θ0 ·h ) + f ( iv ( x * +θ1 ·h )) ⇒
24
f ( x * +h ) − 2·f ( x*) + f ( x * −h )
h2 ( iv
⇒ f* " =
= f "( x*) + ·( f ( x * +θ0 ·h ) + f ( iv ( x * +θ1 ·h ) )
2
h
24
Por tanto:
Rf ( x0 ) = f "( x0 ) − f0 " = −
h2 ( iv
·( f ( x * +θ0 ·h ) + f ( iv ( x * +θ1 ·h ) )
24
expresión que puede acotarse por:
Rf ( x0 ) = f "( x0 ) − f0 " ≤
h2
. Sup {f ( iv ( x )}
12 x∈( x0 ,x1 )
Para el caso particular de la función f(x) = x4 en que f”(x*) = 12·(x*)2 se tiene
que:
f* " =
(x * +h)4 − 2·(x*)4 + (x * +h)4
= 12·(x*)2+ 2·h2
h2
por lo que el error de truncatura cometido es en este caso Rf(x0) = -2·h2.
Obsérvese que la acotación antes realizada conduciría (para esta función x4) a
la acotación |Rf(x0)| ≤ 2·h2 coincidente con el valor absoluto del error de
truncatura realmente cometido10.
10
No siempre las acotaciones del error de truncatura que se obtendrán serán tan “finas” como
la que se acaba de describir.
49
Programación y Métodos Numéricos
Derivación Numérica
Definición 7.3.
Se dice que la fórmula de derivación numérica:
n
f (k (x*) ≈ f*(k = ∑ c i .f(xi )
i=0
es exacta de orden m para la familia de funciones de clase Ck([x0 , xn]):
{ϕ0 (x), ϕ1(x),..., ϕm (x),....}
cuando es nulo el error de truncatura cometido al aplicar la fórmula para
la estimación de la k-ésima derivada de cualquiera de las (m+1) primeras
funciones de la familia en cualquier punto x* perteneciente al intervalo
Rϕ j ( x ) = 0 ∀x ∈ [ x0 ,xn ], ( j = 0,...,m )
[x0 , xn]:
Propiedad 7.1.
n
Si la fórmula de derivación numérica f (k (x*) ≈ f*(k = ∑ c i .f(xi ) es exacta de
i=0
orden m para la familia de funciones {ϕ0 (x), ϕ1(x),..., ϕm (x),....} entonces
es exacta para cualquier combinación lineal de las (m+1) primeras
funciones de la familia
Demostración:
Si la fórmula es exacta de orden m para la familia de funciones consideradas
se podrá escribir que:
n
∀x* ∈ [ x 0 ,xn ] (j = 0, ..., m)
ϕ(kj (x*) = ∑ c i .ϕ j (xi )
i=0
Por otra parte, una función cualquiera que sea combinación lineal de las (m+1)
primeras funciones de la familia será de la forma:
m
f(x) = α 0 ⋅ ϕ0 (x) + α1 ⋅ ϕ1(x) + ..... + α m ⋅ ϕm (x) = ∑ α j ⋅ ϕ j (x)
j=0
por lo que su k-ésima derivada en cualquier punto x* del intervalo [x0, xn]se
puede expresar como:
m
m
⎛ m
⎞ n
⎛ n
⎞ n
f (k (x*) = ∑ α j ⋅ ϕ(kj (x*) = ∑ α j ⋅ ⎜ ∑ c i ⋅ ϕ j (x i ) ⎟ = ∑ c i ⋅ ⎜ ∑ α j ⋅ ϕ j (xi ) ⎟ = ∑ c i ⋅ f(xi )
j=0
j=0
⎝ i=0
⎠ i= 0
⎝ j= 0
⎠ i=0
50
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
y puesto que la aplicación de la fórmula de derivación numérica a la función f(x)
en cualquier punto x* conduce a que:
n
fx(k = ∑ c i .f(xi )
i=0
puede concluirse que:
∀x ∈ [ x 0 ,xn ]
R f (x) = 0
Esto demuestra que la fórmula es exacta para cualquier función f(x) que sea
combinación lineal de las (m+1) primeras funciones de la familia de funciones
considerada.
c.q.d.
Las fórmulas de derivación numérica más utilizadas en la práctica son exactas,
de algún orden m, para la familia de funciones formada por los monomios, es
decir: {1, x, x2, ...,xm, ....}. En este tema nos referiremos en exclusiva a esta
familia de funciones y por ello cuando digamos que una fórmula es de orden de
exactitud m se sobreentenderá que “es de orden de exactitud m para la familia
de los monomios”, es decir que permite estimar sin error alguno la k-ésima
derivada de cualquier función polinómica de grado menor o igual que m.
Ejemplo:
La fórmula que se ha utilizado en el ejemplo anterior
f "( x*) ≈ f*" =
f ( x * +h ) − 2·f ( x*) + f ( x * −h )
h2
es una fórmula exacta de orden 3. En efecto, para la función p(x) = 1 se verifica
que:
1 − 2·1 + 1
p* " =
= 0 = p"( x*)
∀x *
h2
Asimismo para la función p(x) = x se tiene que:
p* " =
( x * + h ) − 2·( x*) + ( x * −h )
= 0 = p"( x*)
h2
∀x *
También para la la función p(x) = x2 se tiene que:
p* " =
( x * + h )2 − 2·( x*)2 + ( x * −h )2
= 2 = p"( x*)
h2
51
∀x *
Programación y Métodos Numéricos
Derivación Numérica
Y para la función p(x) = x3 se verifica que:
px " =
( x * + h )3 − 2·( x*)3 + ( x * −h )3
= 6·x* = p"( x )
h2
∀x*
Pero para la función q(x) = x4 se tiene que:
( x * +h )4 − 2·( x*)4 + ( x * −h )4
qx " =
= 12·( x*)2 + 2·h2 = q"( x*) + 2·h2
2
h
∀x*
por lo que sólo se puede afirmar que el error de la fórmula es nulo para los
monomios {1, x, x2, x3}. En consecuencia, como se señaló anteriormente, la
fórmula es de orden de exactitud 3.
•
Entre las fórmulas de derivación numérica para aproximar las derivadas de
orden k de una función f(x), las más frecuentemente utilizadas son aquellas que
se pueden obtener derivando k veces el polinomio interpolador de la función
f(x). A tales fórmulas se las denomina fórmulas de tipo interpolatorio.
Definición 7.4.
Se denomina fórmula de derivación numérica de tipo interpolatorio
(de Lagrange) para aproximar derivadas de orden k a cualquier
fórmula obtenida derivando una vez la expresión del polinomio
interpolador de Lagrange construido sobre un soporte de (n+1) puntos
distintos.
NOTAS:
1ª) Obsérvese que en la definición anterior se ha escrito entre paréntesis “de
Lagrange”. En efecto podría pensarse en derivar también la expresión del
polinomio interpolador de Hermite obteniéndose otros tipos de fórmulas de
derivación de tipo interpolatorio. Puesto que nosotros sólo nos vamos a referir a
las fórmulas que se obtienen al derivar la expresión del polinomio interpolador
de Lagrange omitiremos en lo sucesivo la coletilla “de Lagrange” y simplemente
diremos fórmula de derivación numérica de tipo interpolatorio.
2ª) Si el orden de derivación k fuese superior o igual al número de puntos (n+1)
las fórmulas de tipo interpolatorio correspondientes se reducirían a f(k(x*) = 0,
pues la derivada de orden k de un polinomio de grado menor o igual que n, si n
es inferior a k, es nula. Por dicho motivo, en todo cuanto sigue, se supondrá
que n > k.
•
52
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
Una fórmula de derivación numérica de tipo interpolatorio puede obtenerse a
partir de cualquiera de las expresiones del polinomio interpolador. Recordando
la expresión del polinomio interpolador en función de los polinomios de base de
Lagrange puede deducirse la expresión de los pesos que intervienen en dicha
fórmula. En efecto:
Teorema 7.1.
Una condición necesaria y suficiente para que la fórmula de derivación
n
numérica fx*(k = ∑ c i .f(xi ) sea de tipo interpolatorio es que sus coeficientes
i=0
satisfagan las igualdades:
ci = L(i k ( x*)
(i = 0, 1, ..., n)
donde se ha denotado por Li(x) a los (n+1) polinomios de base de
Lagrange11 sobre el soporte {x0, x1, ..., xn}.
Demostración:
a) Demostremos que en toda fórmula de tipo interpolatorio sus coeficientes
satisfacen las igualdades recogiodas en el enunciado. En efecto, la expresión
detallada del polinomio interpolador de Lagrange pn(x) de una función f(x) sobre
el soporte de (n+1) puntos {x0, x1, ..., xn} en función de los (n+1) polinomios de
n
base de Lagrange {Li (x)}i=0 es:
n
f(x) ≈ pn (x) = ∑ f(xi ) ⋅ Li (x)
i= 0
de donde, en cualquier punto x* se puede considerar la aproximación:
n
(k
f (k (x*) ≈ p(k
n (x*) = ∑ Li (x*) ⋅ f(x i )
i=0
Esta fórmula es una fórmula de derivación numérica en la que sus coeficientes
están dados por la expresión:
c i = L(ki (x*)
11
⎛ n
⎞
Recuérdese que: Li (x) = ⎜ ∏ (x − x j ) ⎟
⎜ j=0
⎟
⎜
⎟
⎝ j≠i
⎠
⎛ n
⎞
⎜ (x − x ) ⎟
i
j ⎟
⎜∏
⎜ j=0
⎟
⎝ j≠i
⎠
53
(i = 0, 1, ..., n)
Programación y Métodos Numéricos
Derivación Numérica
b) Demostremos que si la fórmula de derivación numérica satisface c i = L(ki (x*)
(i = 0, ..., n) entonces es de tipo interpolatorio. En efecto, considerando que el
polinomio interpolador de Lagrange de f(x) sobre el soporte {x0, ..., xn} se puede
n
expresar como: pn(x) =
∑ f(x )·L (x)
i
i=0
i
se tiene que si se verifican las igualdades
consideradas para los coeficientes:
f’(x*) ≈ ∑ c i f(xi ) = ∑ (L (x*)f(x i ) ) = ∑ (Li (x*)f(xi ) )
n
n
i= 0
n
(k
i
i=0
(k
i=0
(k
⎛ n
⎞
= ⎜ ∑ Li (x*)f(xi ) ⎟ = pn(k (x*)
⎝ i=0
⎠
lo que demuestra que el valor de la k-ésima derivada en x* se aproxima con el
valor de la k-ésima derivada del polinomio interpolador en x*.
c.q.d.
De la propiedad anterior se deduce fácilmente la siguiente:
Propiedad 7.2.
En toda fórmula
de
derivación
numérica
de
tipo
interpolatorio
n
fx*(k = ∑ c i .f(xi ) se verifica que:
i=0
n
∑c
i=1
i
=0
Demostración:
Puesto que según las propiedades de los polinomios de base de Lagrange se
n
verifica que:
∑ L (x) = 1
i=0
i
∀x , es obvio que:
(k
n
⎛ n
⎞
L
(x)
=
L(ki (x) = 0
∑
⎜∑ i ⎟
i=0
⎝ i=0
⎠
∀x
En particular para el punto x* se tendrá que:
n
∑L
i=0
(k
i
n
(x*) = ∑ c i = 0
i= 0
c.q.d.
Denotando por ε(x) a la función error de interpolación cometido al aproximar
una función f(x) por su polinomio interpolador de Lagrange pn(x) sobre el
soporte de (n+1) puntos considerado, se verifica que:
54
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
f(x) = pn(x) + ε(x)
∀x ∈ (x 0 ,xn )
por lo que:
(k
f (k (x*) = p(k
n (x*) + ε (x*)
lo que nos conduce a poder expresar el error en el punto x* de la fórmula de
derivación numérica mediante:
R f (x*) = ε(k (x*)
En el caso particular en que f(x) sea un polinomio de grado menor o igual que n
se verificará que f(x) ≡ pn(x) y por tanto ε(x) = 0 ∀x , de donde resulta que la
fórmula de derivación numérica de tipo interpolatorio construida sobre un
soporte de (n+1) puntos es exacta para cualquier polinomio de grado menor o
igual que n. En resumen es exacta, al menos, de orden n.
Este hecho nos permite incluir a las fórmulas de derivación numéricas de tipo
interpolatorio en el conjunto de fórmulas de derivación exactas de orden n.
Pero aún puede precisarse más, puesto que además toda fórmula exacta de
orden n construida sobre un soporte de (n+1) puntos debe ser necesariamente
de tipo interpolatorio. Este hecho se demuestra en el siguiente teorema.
Teorema 7.2.
La condición necesaria y suficiente para que una fórmula de derivación
n
numérica construida sobre un soporte de (n+1) puntos, fx*(k = ∑ c i .f(xi ) ,
i=0
sea exacta de orden n es que sea de tipo interpolatorio.
Demostración:
a) Demostremos en primer lugar que la condición recogida en el enunciado
del teorema es suficiente, es decir que si la fórmula construida sobre el
soporte de (n+1) puntos es de tipo interpolatorio entonces es exacta de
orden n. Para ello basta con recapitular los razonamientos anteriormente
realizados. En efecto, si f(x) es una función polinómica de grado menor o
igual que n su polinomio interpolador de Lagrange sobre el soporte de
(n+1) puntos coincide con la función y por tanto:
f(x) = pn(x)
55
∀x
Programación y Métodos Numéricos
Derivación Numérica
por lo que f(k(x) = p(k
n (x)
∀x . En particular, al ser la fórmula de
derivación de tipo interpolatorio, para cualquier punto x* se tendrá que:
(k
f (k (x*) = p(k
n (x*) ≡ fx*
Ello demuestra que la fórmula es exacta sea cual sea el polinomio f(x)
de grado menor o igual que n al que se aplique. En particular lo será
cuando se aplique los (n+1) primeros monomios {1, x, ..., xn} y por ello
es exacta de grado n.
b) Demostremos ahora que la condición anterior también es necesaria, es
decir que si la fórmula construida sobre el soporte de (n+1) puntos es
exacta de orden n entonces tiene que ser de tipo interpolatorio. Para ello
partimos del hecho de que, al ser la fórmula exacta de orden n, para
cualquier función polinómica de grado menor o igual que n, p(x), se debe
verificar que:
n
p(k (x*) = ∑ c i .p(xi )
i= 0
Por otra parte, puesto que hemos considerado que p(x) es un polinomio
de grado menor o igual que n, se verificará que el polinomio interpolador
de p(x) en el soporte de (n+1) puntos coincidirá con p(x) y por tanto p(x)
se puede expresar como:
n
p(x) = ∑ p(xi ).Li (x)
i= 0
de donde su k-ésima derivada en el punto x* estará dada por:
n
p(k (x*) = ∑ L(ki (x*).p(xi )
i= 0
Identificando las dos expresiones de la primera derivada de p(x) en x* se
tiene que:
n
n
i=0
i= 0
∑ ci.p(xi ) = ∑ L(ki (x*).p(xi )
Esta igualdad debe ser satisfecha para cualquier polinomio p(x) que sea
de grado menor o igual que n. Por tanto deberá verificarse también en el
caso de que consideremos como p(x) cualquiera de los (n+1) polinomios
56
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
de base de Lagrange construidos sobre el soporte {xi }i=0 . Recordemos
n
además que los polinomios de base de Lagrange verifican:
⎧0 si i ≠ j
Li (x j ) = ⎨
⎩ 1 si i=j
Por tanto, particularizando la igualdad antes obtenida para L0(x) se tiene
que:
n
n
i=0
i=0
∑ ci.L0 (xi ) = ∑ L(ki (x*).L0 (xi ) ⇒ c 0 = L(k0 (x*)
Al hacerlo para el polinomio L1(x) resultará que:
n
n
i=0
i= 0
∑ ci.L1(xi ) = ∑ L(ki (x*).L1(xi ) ⇒ c1 = L(k1 (x*)
Y en general al particularizar para cualquier polinomio de base Lj(x)
obtendremos que:
n
n
∑ c .L (x ) = ∑ L
i=0
i
j
i
i=0
(k
i
(x*).L j (xi ) ⇒ c j = L(kj (x*)
c.q.d.
Ejemplos:
1º. Sobre un soporte de tres puntos {x0, x1, x2} el polinomio interpolador de
Lagrange de una función f(x) puede expresarse como:
p2 (x) = f(x 0 ) + f [ x 0 ,x1 ]·(x − x 0 ) + f [ x 0 ,x1,x 2 ]·(x − x 0 )·(x − x1 )
por lo que la fórmula de derivación numérica que aproxima derivadas segundas
sobre este soporte es:
f "(x*) ≈ f " x* = p"2 (x) = 2·f [ x 0 ,x1,x 2 ]
2º. Sobre un soporte de cuatro puntos {x0, x1, x2, x3} el polinomio interpolador
de Lagrange de una función f(x) puede expresarse como:
p3 ( x ) = f ( x0 ) + f [ x0 , x1 ]·( x − x0 ) + f [ x0 , x1, x2 ]·( x − x0 )·( x − x1 ) +
+f [ x0 , x1, x2 , x3 ]·( x − x0 )·( x − x1 )·( x − x2 )
57
Programación y Métodos Numéricos
Derivación Numérica
por lo que la fórmula que aproxima f”(x) es:
f "( x*) ≈ fx*'' = p" 3 ( x*) = 2·f [ x0 ,x1 ,x2 ] + 2·f [ x0 , x1, x2 , x3 ]·(3·x * − x0 − x1 − x2 )
y para la aproximación de la tercera derivada:
f '''( x*) ≈ fx*''' = p''' 3 ( x*) = 6·f [ x0 ,x1 ,x2 ,x3 ]
•
Propiedad 7.3
En toda fórmula
de
derivación
numérica
de
tipo
interpolatorio
n
fx*(k = ∑ c i .f(xi ) , construida sobre un soporte de (n+1) puntos con n > k, se
i=0
verifica que:
0
⎧
⎪
ci xi = ⎨ j !
∑
( j −k )
i =1
⎪ ( j − k )! ( x*)
⎩
n
si j < k
j
si k ≤ j ≤ n
(j = 1, ...n)
Demostración:
La demostración de esta propiedad se deja como ejercicio propuesto al lector y
consiste simplemente en comparar el valor (exacto) proporcionado por la
fórmula de derivación al ser aplicada a la función f(x) = xj (j = 0, ..., n) con el
valor de f(k(x*) .
c.q.d.
En cuanto al error de las fórmulas de derivación que permiten aproximar
derivadas de orden mayor que 1 puede realizarse un análisis similar al descrito
anteriormente para las fórmulas que aproximaban la primera derivada.
Dejamos al lector interesado la tarea de adaptar las propiedades y teoremas
desarrollados en el apartado 4º a este tipo de fórmulas. Nosotros nos
centraremos en la descripción del proceso que permite obtener fórmulas de
derivación de tipo interpolatorio, junto a la expresión de su error, combinando
desarrollos en serie de Taylor para funciones que tengan la suficiente
regularidad.
Para ello siendo n > k consideremos el soporte de (n+1) puntos {x0 < x1 <... <
xn} y siendo x* el punto en el que se desea aproximar f(k(x) denotemos por hi al
58
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
valor: hi = hi = xi – x* (i = 0, .., n). Suponiendo que f(x) es sufiecientemente
regular pueden considerarse los desarrollos en serie de Taylor:
f(xi) = f(x*+hi) = f(x*) + hi·f(x*) +
hi2
h3
hk
·f "(x*) + i ·f '''(x*) + .... + i ·f (k (x*) + ....
2!
3!
k!
Por lo que:
⎛
n
⎞
n
⎛
⎞
n
1⎛
n
∑ α ·f(x ) = ⎜⎝ ∑ α ⎟⎠·f(x*) + ⎜⎝ ∑ α ·h ⎟⎠·f '(x*) + 2! ⎜⎝ ∑ α ·h
i=0
i
i
i
i= 0
i= 0
i
i
i= 0
i
2
i
⎞
⎟·f "(x*) +
⎠
1⎛ n
1⎛ n
⎞
3⎞
·h
·f
'''(x*)
....
α
+
+
αi ·hik ⎟·f (k (x*) + ...
∑
∑
i i ⎟
⎜
⎜
3! ⎝ i=0
k! ⎝ i=0
⎠
⎠
(1)
Si se desea que la fórmula de derivación sea del mayor orden posible debe
buscarse que, salvo el coeficiente de f(k(x*), se anulen el mayor número de los
primeros sumandos del desarrollo anterior. Esto es, que:
n
∑ α ·h
i=0
=0
j
i
i
(j = 0, 1,...,(k-1), (k+1), ...n)
En general el número de ecuaciones que así se pueden formar es de n
ecuaciones, obteniéndose un sistema con (n+1) incógnitas (α0, ..., αn) y tan
sólo n ecuaciones. Ello es debido a que con el coeficiente de f(k(x*) se debe
n
añadir la inecuación
∑ α ·h
i=0
≠ 0.
k
i
i
Por ello los coeficientes (α0, ..., αn) que se determinen mediante la resolución
del sistema:
n
∑α
i=0
i
=0
n
∑ α ·h
i=0
i
i
=0
........
n
∑ α ·h
i=0
i
n
(k −1)
i
∑ α ·h
i=0
i
(k +1)
i
=0
=0
........
n
∑ α ·h
i=0
i
n
i
=0
quedarán expresados en función del valor que libremente se le asigne a uno de
ellos.
59
Programación y Métodos Numéricos
Derivación Numérica
n
En todo caso, una vez calculados estos coeficientes, denotando por α = ∑ αi ·hi
i= 0
se tendrá que los coeficientes de la fórmula de derivación se obtienen
mediante: ci = αi / α (i = 0, ..., n) y que del primer término que no se haya
podido anular en la expresión (1) se podrá inferir fácilmente la expresión del
error de derivación.
Ilustremos estos extremos con un ejemplo.
Ejemplo:
Determinemos la fórmula de derivación numérica del mayor orden de exactitud
posible que permite calcular el valor aproximado de f’’’(x*) usando un soporte
de la forma: {x0 = x* - 2·h, x1 = x* - ·h, x2 = x*, x3 = x* +h, x4 = x* + 2·h} donde h
es un valor real estrictamente positivo.
Para ello, si suponemos que f(x) es suficientemente regular en (x*-2·h, x*+2·h)
podemos considerar los desarrollos en serie de Taylor:
4·h2
8·h3
16·h4 (iv
·f "(x*) −
·f '''(x*) +
·f (x*) −
2
6
24
32·h5 (v
64·h6 (vi
128·h7 (vii
·f (x*) +
·f (x*) −
·f (x*)...
−
120
720
5040
f(x*- 2·h) =f(x*) –2·h·f’(x*) +
h2
h3
h4 (iv
·f "(x*) − ·f '''(x*) +
·f (x*) −
2
6
24
h5 (v
h6 (vi
h7 (vii
·f (x*) +
·f (x*) −
·f (x*)...
−
120
720
5040
f(x*-·h) =f(x*) - h·f’(x*) +
f(x*) = f(x*)
h2
h3
h4 (iv
·f "(x*) + ·f '''(x*) +
·f (x*) +
2
6
24
h5 (v
h6 (vi
h7 (vii
·f (x*) +
·f (x*) +
·f (x*) + ...
+
120
720
5040
f(x*+ h) =f(x*) + h·f’(x*) +
4·h2
8·h3
16·h4 (iv
·f "(x*) +
·f '''(x*) +
·f (x*) +
2
6
24
32·h5 (v
64·h6 (vi
128·h7 (vii
·f (x*) +
·f (x*) +
·f (x*)...
+
120
720
5040
f(x*+2·h) =f(x*) +2·h·f’(x*) +
60
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
de donde:
α0 ·f(x * −2·h) + α1·f(x * −h) + α 2 ·f(x*) + α 3 ·f(x * +h) + α 4 ·f(x * +2·h) =
= ( α 0 + α1 + α 2 + α 3 + α 4 )·f(x*) +
+ ( −2·α 0 − α1 + α 3 + 2·α 4 )·h·f '(x*) +
+ ( 4·α 0 + α1 + α 3 + 4·α 4 )·
h2
·f "(x*) +
2
+ ( −8.α 0 − α1 + α 3 + 8·α 4 )·
h3
·f '''(x*) +
6
+ (16.α 0 + α1 + α 3 + 16·α 4 )·
h4 (iv
·f (x*) +
24
h5 (v
·f (x*) + ....
+ ( −32.α 0 − α1 + α 3 + 32·α 4 )·
120
Si se desea construir una fórmula que con el soporte anterior aproxime el valor
de f’’’(x*) y que tenga el mayor orden de exactitud posible se obligará a que:
α0 + α1 + α 2 + α 3 + α 4 = 0
−2·α 0 − α1 + α 3 + 2·α 4 = 0
4.α0 + α1 + α 3 + 4·α 4 = 0
16.α 0 + α1 + α 3 + 16·α 4 = 0
(Coeficiente en h0 y f(x*))
(Coeficiente en h y f’(x*))
(Coeficiente en h2 y f”(x*))
(Coeficiente en h4 y f(iv (x*))
de donde12, dejando como incógnita libre α3, se tiene:
α0 = −α 4 ,
α1 = 2·α 4 ,
α2 = 0 ,
α 3 = −2·α 4 , α 4 ∈ R
Cualquier elección no nula de α4 nos conducirá a la fórmula buscada.
Obsérvese que se descarta la opción α4 = 0 ya que ello anularía el coeficiente
de f’’’(x) con lo que no lo podríamos despejar del desarrollo resultante. Si se
asigna a α4 el valor α4 = 1 se tiene que:
12
Obsérvese que si al sistema anterior se le añadiese la ecuación procedente de obligar a que
se anulase el coeficiente de f’(v(x*) se tendría un sistema que sólo admite la solución trivial α0 =
= α1 = α2 = α3 = α4 = 0.
61
Programación y Métodos Numéricos
α0 = −1,
α1 = 2 ,
Derivación Numérica
α2 = 0 ,
α 3 = −2 , α 4 = 1
Para estos valores de los coeficientes αi, se tiene entonces que la combinación
de desarrollo en serie de Taylor antes obtenida se convierte en:
− f(x * −2·h) + 2·f(x * −h) − f(x * +h) + 2·f(x * +2·h) =
= 12·
h3
h5 (v
·f '''(x*) + 60·
·f (x*) + ....
6
120
de donde:
f’’’(x*) = −
1
1
1
1
·f x * −2·h ) + 3 ·f ( x * −h ) − 3 ·f ( x * +h ) +
·f ( x * +2·h ) 3 (
2·h
h
h
2·h3
1
− ·h2 ·f (v (x*) + .....
4
De esta igualdad se infiere que la fórmula buscada es:
f '''(x*) ≈ f* ''' = −
1
1
1
1
·f x * −2·h ) + 3 ·f ( x * −h ) − 3 ·f ( x * +h ) +
·f ( x * +2·h )
3 (
2·h
h
h
2·h3
y que con ella, si f∈C5((x*-2·h, x*+2·h)), se comete un error dado por:
1
R f (x*) = − ·h2 ·f (v (ξ)
4
para algún valor ξ∈(x*-2·h, x*+2·h). Es decir un error de orden 0(h2).13
13
No debe confundirse el orden de exactitud de una fórmula de derivación numérica con el
orden del error de dicha fórmula. Mientras que el primero señala el máximo grado de los
polinomios que pueden derivarse sin error con dicha fórmula, el segundo señala la potencia
menor a la que aparece elevado el parámetro “h” en la expresión del error.
62
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
7.1. Obtención de fórmulas de derivación de tipo interpolatorio mediante
el método de los coeficientes indeterminados.
Un método alternativo para la determinación de fórmulas de derivación de tipo
interpolatorio soportadas en (n+1) puntos se basa en que, según el teorema
7.2. toda fórmula de tal tipo debe ser exacta para los monomios {1, x, ..., xn}.
n
Por tanto, si se busca una fórmula cuya expresión sea: f (k (x*) ≈ f*(k = ∑ c i f(xi ) ,
i=0
j
su aplicación a los binomios (x-x*) (0 < j < n) nos conduce a un sistema de
ecuaciones cuya solución nos proporciona los pesos de la fórmula. De forma
más concreta, siendo “h” un valor estrictamente positivo en función del cual se
puedan escribir, para valores convenientes de γi (i = 0, ...,n), los puntos del
soporte en la forma xi = x* + γ ih , la aplicación de la fórmula a los binomios
f(x) = (x-x*)j (j = 0, ..., n) conduce a que, si k < n:
n
∑c γ
i=0
j
i i
⎧ 0
=⎨
j
⎩ j!/ h
si j ≠ k
si j = k
En resumen, los coeficientes de la fórmula de tipo interpolatorio se obtienen
resolviendo el sistema:
1
1
⎡1
⎢γ
γ1
γ2
⎢ 0
2
2
⎢γ0
γ1
γ 22
⎢
...
...
⎢...
−
−
(k
1)
(k
1)
⎢γ0
γ1
γ (k2 −1)
⎢ k
γ1k
γ k2
⎢γ0
⎢ γ (k +1) γ (k +1) γ (k +1)
1
2
⎢ 0
...
...
⎢...
n
⎢ γn
γ1
γ n2
⎣⎢ 0
⎤
⎧0 ⎫
⎥
⎪0 ⎪
γn ⎥
⎪ ⎪
γ n2 ⎥ ⎧c 0 ⎫ ⎪0 ⎪
⎥
⎪ ⎪
... ⎥ ⎪⎪c1 ⎪⎪ ⎪... ⎪
⎪ ⎪ ⎪ ⎪
γ n(k −1) ⎥ ⎨c 2 ⎬ = ⎨0 ⎬
⎥
γ nk ⎥ ⎪... ⎪ ⎪k ! hk ⎪
⎪ ⎪ ⎪ ⎪
γ n(k +1) ⎥ ⎪⎩c n ⎭⎪ ⎪0 ⎪
⎥
⎪ ⎪
... ⎥
⎪... ⎪
n
⎥
γ n ⎦⎥
⎩⎪0 ⎭⎪
... 1
...
...
...
...
...
...
...
...
Una vez determinada la fórmula, su error puede también ser calculado si se
busca en la forma Rf(x*) = K·h(m-k)·f(m(ξ) aplicándolo al primer binomio (x-x*)m
(cuya derivada m-ésima es m!) para el que la fórmula deja de ser exacta
(hecho que tendrá lugar para m > n).
63
Programación y Métodos Numéricos
Derivación Numérica
Ilustremos esta forma de proceder obteniendo nuevamente la fórmula de
derivación numérica hallada en el subapartado anterior mediante
combinaciones de desarrollos en serie de Taylor.
Ejemplo:
Determinemos la fórmula de derivación numérica del mayor orden de exactitud
posible que permite calcular el valor aproximado de f’’’(x*) usando un soporte
de la forma: {x0 = x* - 2·h, x1 = x* - ·h, x2 = x*, x3 = x* +h, x4 = x* + 2·h} donde h
es un valor real estrictamente positivo.
Según se ha visto anteriormente, los coeficientes de la fórmula, soportada por 4
puntos, se pueden obtener resolviendo el sistema obtenido al aplicar la fórmula
a los cuatro binomios {1, (x-x*), (x-x*)2, (x-x*)3} . Tal sistema es:
⎡1 1
⎢
⎢ −2 −1
⎢4 1
⎢
⎣ −8 −1
1 1⎤ ⎧c0 ⎫ ⎧ 0 ⎫
⎪ ⎪
1 2 ⎥⎥ ⎪ c1 ⎪ ⎪⎪ 0 ⎪⎪
⎨ ⎬=⎨
⎬
1 4 ⎥ ⎪c2 ⎪ ⎪ 0 ⎪
⎥
1 8 ⎦ ⎪⎩c3 ⎭⎪ ⎩⎪6 / h3 ⎭⎪
cuya solución nos proporciona los valores:
c0 =
−1
1
−1
1
, c1 = 3 , c2 = 3 , c4 =
3
2·h
2·h3
h
h
Para determinar el error de la fórmula consideraremos la función f(x) = (x-x*)4.
La tercera derivada de dicha función en x* es:
f’’’(x*) = 4·3·2.(x*-x*) = 0
siendo el valor aproximado dado por la fórmula:
f*''' =
1⎛ 1
1
4
4⎞
− ( −2h )4 + ( −h )4 − ( h ) + ( 2h ) ⎟ = 0
3 ⎜
2
h ⎝ 2
⎠
lo que nos indica que la fórmula es también exacta para los polinomios de
orden 4º. Incrementemos una unidad el grado del binomio y apliquémosla a f(x)
=(x – x*)5. El valor exacto de la tercera derivada de este binomio es:
f’’’(x*) = 5·4·3.(x*-x*) = 0
64
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
siendo ahora el valor aproximado:
f*''' =
1⎛ 1
1
5
5⎞
− ( −2h )5 + ( −h )5 − ( h ) + ( 2h ) ⎟ = 30·h 2
3 ⎜
2
h ⎝ 2
⎠
por lo que el error de derivación está dado, para esta función por:
R( x − x *)5 ( x *) = 0 − 30·h 2 = −30·h 2
Si buscamos la expresión genérica del error en la forma:
Rf ( x *) = K ·h 2 ·f (v (ξ )
es fácil verificar, aplicándolo a (x-x*)5, que:
−30·h 2 = K ·h 2 ·5! ⇒ K =
por lo que en general: Rf ( x *) =
−30 −1
=
5!
4
−1 2 (v
h f ( x *)
4
En resumen la fórmula buscada es:
f*''' =
1
( −f ( x * −2h) + 2f ( x * −h) − 2f ( x * +h ) + f ( x * +2h ) )
2h3
y el error de derivación numérica, si f ∈ C 5 ([ x * −2h, x * +2h ]) está dado por:
Rf ( x *) =
−1 2 (v
h f (ξ )
4
es decir un error de orden 2.
65
Programación y Métodos Numéricos
Derivación Numérica
Ejercicio propuesto:
d) Siendo h un parámetro estrictamente positivo, determinar la fórmula de
derivación numérica que permite aproximar el valor de f”(x*) sobre el
soporte: x0 = x* -h, x1 = x*, x2 = x* + 2h y x3 = x* + ( 5 2 ) h . Suponiendo
que f(x) es suficientemente regular en el intervalo [x0, x3], determínese
también la expresión de su error e indíquese la regularidad que se le
debe exigir a f(x) para que dicha expresión sea válida. Obténgase la
fórmula pedida y su error:
i)
Derivando el correspondiente polinomio interpolador de
Lagrange,
ii)
Combinando desarrollos en serie de Taylor, y
iii)
Mediante el método de coeficientes indeterminados.
e) Aplíquese la fórmula obtenida en el apartado anterior a la obtención de
un valor aproximado de la segunda derivada de la función f(x) = ecos(x)
con los siguientes valores de h: h0 = 0.1, h1 = 0.01, h2 = 0.001, h3 =
0.0001 y h4 = 0.00001. Realícense los cálculos en coma flotante
usando mantisas con 5 decimales significativos.
f) Obténgase una cota del error de derivación numérica válida en el
intervalo [x0, x2] para la función considerada en el apartado anterior. El
error realmente cometido ¿es en todos los casos inferior a la cota
hallada? Si no lo fuese justifíquese el motivo.
66
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
8. Mejora de la precisión de las fórmulas de derivación numérica. Método
de extrapolación de Richardson.
Como se presentó en apartados anteriores el error de las fórmulas de
derivación numérica (ya sea para aproximar la primera derivada o derivadas de
orden superior) responde a expresiones en las que interviene hp donde p es un
número no negativo y “h” es una longitud característica del soporte (la distancia
entre puntos consecutivos del soporte cuando este es equidistante, la distancia
entre los puntos extremos del soporte, la mayor de las distancias del punto x*
en el que se evalúa la derivada a los puntos del soporte, ....). Por ello, si se
quiere mejorar la precisión de una fórmula de derivación numérica la primera
idea que surge intuitivamente es la de reducir el valor de h (lo que
generalmente se traduce en tomar puntos más próximos entre sí y más
cercanos al punto x*). En este sentido la forma habitual de proceder consiste
en, siendo q un valor tal que 0 < q < 1, aplicar la fórmula numérica para los
valores h0 = h, h1 = q·h, h2 = q·h1 = q2·h , ...., hj = q·hj-1 = qj·h, .... Se obtienen
así diferentes valores V0, V1, ...., Vj, .... que aproximan la derivada en cuestión.
Este proceso se finaliza cuando |Vj – Vj-1| sea lo suficientemente pequeño
(menor que un cierto ε predefinido de antemano).
Ejemplo:
Si se utiliza la fórmula:
1
1
·f ( x * +h ) −
·f ( x * +h )
2·h
2·h
para aproximar el valor de la primera derivada de la función f(x) = ex en el punto
x* = 0 ( cuyo valor exacto es f’(0) = 1) se obtendrán los siguientes valores para
el valor aproximado de la derivada (calculados con el programa MAPLE 7
utilizando 20 dígitos), para diferentes valores de h:
f '(x*) ≈ f* ' =
V0 = 1.042190610987....
h0 = 0.5,
V1 = 1.010449267232....
h1 = 0.25,
h2 = 0.125, V2 = 1.002606201928....
h3 = 0.0625, V3 = 1.000651168835....
h4 = 0.03125,V4 = 1.000162768364....
|Error|=0.0421906...
|Error|=0.0104492...
|Error|=0.0026062...
|Error|=0.0006511...
|Error|=0.0001627...
pudiendo observarse como el error se reduce de una aproximación a la
siguiente al reducir el paso a la mitad. Nótese que el error se reduce
aproximadamente a la cuarta parte alreducir el paso a la mitad al ser el orden
del error de la fórmula empleada O(h2).
•
67
Programación y Métodos Numéricos
Derivación Numérica
La reducción del “paso” h utilizado en una fórmula que presente un error de
∞
orden p proporciona una sucesión de valores aproximados {V} j=0 que, si se
admite que f(x) es suficientemente regular, converge hacia el valor exacto con
una velocidad de convergencia de orden p, es decir que el error obtenido con
un paso (qjh) es aproximadamente qp veces menor que el que se produce con
paso (qj-1h). En este sentido, cuanto mayor sea el orden del error del método
más rápida será la convergencia hacia el valor exacto. Por ello esta reducción
del paso se suele combinar con la denominada técnica de extrapolación de
∞
Richardson14 que, en síntesis, genera a partir de la sucesión {V} j=0 otras
sucesiones con mayor velocidad de convergencia hacia el valor exacto. Para
describir este proceso, consideremos una fórmula de derivación numérica en la
que el error sea de orden p y que pueda expresarse como:
⎛ n
⎞
f (k (x*) = ⎜ ∑ c i ·f(x i ) ⎟ + α·f (m (x*)·hp + β·f (m+1(x*)·hp+1 + ...
⎝ i=0
⎠
y denominemos Ve al valor exacto que se está aproximando, V0 al valor
obtenido con el paso h y V1 al obtenido con paso q·h (donde supondremos que
q < 1). Se tendrá que:
Ve = V0 + α·f (m (x*)·hp + β·f (m+1(x*)·hp+1 + ...
Ve = V1 + α·f (m (x*)·qp ·hp + β·f (m+1(x*)·qp+1·hp +1 + ...
Restando ambas igualdades se obtiene:
V1 – V0 = α·f (m (x*)·(1 − qp )·hp + β·f (m+1(x*)·(1 − qp +1 )·hp+1 + ... ⇒
⇒ α·f (m (x*)·hp =
V1 − V0
1
·( β·f (m+1(x*)·(1 − qp+1 )·hp +1 + ...)
−
p
1− q
1 − qp
Sustituyendo esta expresión en la primera de las expresiones del valor exacto
resulta que:
⎛ 1 − qp+1 ⎞ p+1
V −V
Ve = V0 + 1 p0 + β·f (m+1(x*)·⎜ 1 −
·h + ...
p ⎟
−
1− q
1
q
⎝
⎠
14
En honor al matemático inglés Lewis Fry Richardson (1881 – 1953) que fue uno de los
pioneros del cálculo científico (y en concreto el primero en aplicar métodos de diferencias
finitas a la predicción del tiempo).
68
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
lo que nos indica que el valor:
V1,1 = V0 +
V1 − V0 V1 − qp ·V0
=
1 − qp
1 − qp
aproxima al valor exacto Ve con un error de orden (p+1).
Análogamente, si se considera el valor V1, obtenido con paso (q·h) y el valor V2
obtenido con paso (q2h) se tiene que:
Ve = V1 + α·f (m (x*)·qp ·hp + β·f (m+1(x*)·qp+1·hp +1 + ...
Ve = V2 + α·f (m (x*)·q2p ·hp + β·f (m+1(x*)·q2p+ 2 ·hp +1 + ...
de donde un proceso análogo al que se acaba de describir nos conduce a que:
Ve = V1 +
⎛ 1 − qp+1 ⎞
V2 − V1
(p +1)
(m +1
·f
(x*)·
· qh )
+
β
+ ...
⎜1−
p
p ⎟(
1− q
1− q ⎠
⎝
lo que nos indica que
V2 − V1 V2 − qp ·V1
V1,2 = V1 +
=
1 − qp
1 − qp
aproxima el valor exacto con un error de orden (p+1).
De manera más general, si dado un valor del parámetro h se consideran las
aproximaciones V0,j ( j = 0, 1, ...) obtenidas con un paso (qj·h) usando una
fórmula de derivación numérica que presente un error de orden p, pueden
construirse los valores:
V0,j − qp ·V0,j−1
(j = 1, 2, ...)
V1,j =
1 − qp
verificándose, si f(x) es suficientemente regular, que:
Ve = V1,j + β·f
(m +1
⎛ 1 − qp +1 ⎞ ( j−1)
(x*)·⎜ 1 −
⎟· q h
1 − qp ⎠
⎝
(
)
p +1
+ ...
⎛ 1 − qp+1 ⎞
Denotando por b al valor b = β·⎜1 −
⎟ escribiremos la expresión anterior
1 − qp ⎠
⎝
en la forma:
(
Ve = V1,j + b·f (m+1(x*)· q( j−1)h
69
)
p +1
+ ...
Programación y Métodos Numéricos
Derivación Numérica
Según lo anterior la sucesión de valores {V1,j } j=1 converge, cuando ha tiende
∞
hacia 0, hacia el valor exacto con un orden de convergencia (p+1) una unidad
mayor que el orden de convergencia que presentaba la sucesión {V0 ,j } j=0 .
∞
Sobre la propia sucesión {V1,j } j=1 puede entonces volverse a actuar. En efecto,
∞
como:
Ve = V1,1 + b·f (m+1(x*)·hp +1 + O(hp+ 2 ) + ...
y:
Ve = V1,2 + b·f (m+1(x*)·( qh )
(p +1)
+ O(hp+ 2 ) + ...
se tiene que:
0 = V1,1 – V1,2 + b·f(m+1(x*)·hp+1·(1-qp+1) + O(hp+2) + .... ⇒
⇒ b·f (m+1(x*)·hp+1 =
V1,2 − V11
+ O(hp + 2 )
p +1
1− q
e introduciendo esta expresión en la primera de las que se han utilizado para
obtenerla resulta que:
V −V
V − qp +1V1,1
Ve = V1,1 + 1,2 p+11,1 + O(hp+ 2 ) + ... = 1,2
+ O(hp + 2 )
p +1
1− q
1− q
De manera más general, un razonamiento como el precedente muestra que si
f(x) es suficientemente regular, la sucesión {V2,j } j=2 obtenida mediante:
∞
V2,j =
V1,j − qp+1V1,j−1
1 − qp+1
(j = 2, 3, ....)
converge hacia el valor exacto con un orden de convergencia (p+2).
Estos nuevos valores {V2,j } j=2 pueden ser mejorados construyendo a partir de
∞
ellos una sucesión {V3,j } j=3 que converja con orden (p+3) y así sucesivamente.
∞
En general, si se parte de un método que converge con velocidad de orden p,
el método de extrapolación de Richardson consiste en:
1º) Siendo 0 < q < 1 obtener las aproximaciones V0,j usando la fórmula
con un paso (qjh) (j = 0, 1, ...N).
2º) Mejorar las aproximaciones calculando los
k = 1, 2, ...., N, mediante la fórmula de recurrencia:
70
valores
{V }
N
k,j j=k
para
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
Vk,j =
Vk −1,j − q(p +k −1) ·Vk −1,j−1
1 − q(p+k −1)
Cuanto mayores sean los valores de los subíndices k y j más precisas serán
las aproximaciones obtenidas.
Ejemplo:
Ilustremos el método de extrapolación de Richardson calculando el valor de la
primera derivada de la función f(x) = e
⎛ x2 ⎞
⎜⎜
⎟⎟
⎝ 1+ x ⎠
·sen( πx) en el punto x*= 1 mediante
la fórmula:
f(x * +h) − f(x*)
h
que presenta un error de orden 1 (es decir O(h)).
f '(x*) ≈ f* ' =
Para ello partiremos inicialmente del paso h = ½ y posteriormente lo iremos
reduciendo a la mitad diez veces. Con ello se obtienen los valores V0,j que
figuran en la segunda columna de la tabla siguiente, siendo V0,j el valor
obtenido para el paso hj =(½)(j+1). Las columnas 3ª, 4ª y 5ª de la tabla se
corresponden con los valores V1,j , V2,j y V3,j respectivamente que proporciona
la aplicación del método de extrapolación de Richardson.
Para poder apreciar mejor la evolución del error, en la tabla siguiente se han
recogido los valores de error cometido con cada una de las aproximaciones de
esta tabla, es decir la diferencia entre valor exacto de f’(1) y el valor
aproximado que figura en cada fila y columna de la tabla, siendo el valor
exacto:
f '(1) = e 2 ·π·cos( π) = −5.1796106318....
1
Los cálculos se han realizado con el programa MAPLE 7 utilizando una
precisión de 20 dígitos (aunque en la tabla se muestran redondeados a 5
decimales significativos).
71
Programación y Métodos Numéricos
Derivación Numérica
Aproximaciones
j (h = 2−( j+1) )
0
1
2
3
4
5
6
7
8
9
10
V0,j
−4.91921
−5.66420
−5.55380
−5.39593
−5.29456
−5.23872
−5.20957
−5.19469
−5.18717
−5.18340
−5.18151
V1,j
−6.40919
−5.44340
−5.23805
−5.19320
−5.18288
−5.18041
−5.17981
−5.17966
−5.17962
−5.17961
V2,j
−5.12148
−5.16960
−5.17825
−5.17944
−5.17959
−5.17961
−5.17961
−5.17961
−5.17961
V3,j
−5.17648
−5.17948
−5.17960
−5.17961
−5.17961
−5.17961
−5.17961
−5.17961
Error de las aproximaciones
j (h = 2−( j+1) )
0
1
2
3
4
5
6
7
8
9
10
f '(1) − V0,j
f '(1) − V1,j
−0.260404
0.484587
1.22958
0.374191
0.263794
0.216317
0.058444
0.114954
0.013590
0.0591099 0.003266
0.0299549 0.000800
0.0150764 0.000198
0.0075628 0.000049
0.0037875 0.000012
0.0018953 0.000003
f '(1) − V2,j
−0.0581335
−0.0100063
−0.0013613
−0.0001752
−0.0000222
−0.0000028
−0.0000003
−4.364·10 −8
−5.458·10 −9
f '(1) − V3,j
−0.003131
−0.000126
−5.728·10 −6
−2.292·10 −7
−1.621·10 −8
−9.502·10 −10
−5.743·10 −11
−3.529·10 −12
La tabla de errores muestra cómo estos se reducen a, aproximadamente, la
mitad ((1/2)1) al pasar de un valor al siguiente en la primera columna, la cuarta
parte ((1/2)2) al pasar de un valor al siguiente en la segunda columna, la
octava parte ((1/2)3) al pasar de un valor al siguiente en la tercera columna y la
decimosexta parte ((1/2)4) al pasar de un valor al siguiente en la cuarta
columna. Este hecho puede verse más claramente en la figura siguiente en la
72
Derivación Numérica
Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
que se representa la evolución del logaritmo decimal del valor absoluto del
error frente al logaritmo decimal del tamaño de paso para las cuatro sucesiones
de valores recogidos en la tabla anterior.
log10(h)
Valores proporcionados
por la fórmula
Valores corregidos
aplicando el método
de Richardson una vez
Valores corregidos
aplicando el método
de Richardson dos veces
Valores corregidos
aplicando el método
de Richardson tres veces
log10(|f’(1)-Vk,j|)
Puede comprobarse en la gráfica como las pendientes (indicativas del orden de
convergencia) de las curvas de error son más pronunciadas cuanto más se
itera en la aplicación del método de extrapolación de Richardson.
73
Programación y Métodos Numéricos
Derivación Numérica
BIBLIOGRAFÍA SOBRE EL TEMA
[1]. BURDEN, R. L. y FAIRES, J. D. (1.998). Análisis numérico. (6ª edición).
Ed. International Thomson editores.
[2]. KINCAID, D. y CHENEY, W. (1.994). Análisis numérico. Las
matemáticas
del
cálculo
científico.
Ed.
Addison-Wesley
Iberoamericana.
[3]. MICHAVILA, F. y CONDE, C. (1.988). Métodos de Aproximación. Ed.
Depto. de Mat. Aplic. Y Mét. Informáticos. – Univ. Politécnica de Madrid.
[4]. STOER, J. y BULIRSCH, R. (1.980). Introduction to numerical analysis.
Ed. Springer Verlag.
[5]. VIAÑO, J.M. y BURGUERA, M. (2000) Lecciones de métodos
numéricos, 3: Interpolación. Ed. Tórculo edicions.
74
Documentos relacionados
Descargar