Anda di halaman 1dari 648

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: ERRORES DE REDONDEO EN LA


REPRESENTACIÓN DE NÚMEROS REALES
Prof. Carlos Conde Lázaro
Prof. Arturo Hidalgo López
Prof. Alfredo López Benito

Marzo, 2007
ÍNDICE
Pág.
1. INTRODUCCIÓN. ……………………….…………………………… 1

2. LA NOTACIÓN CIENTÍFICA Y LA REPRESENTACIÓN EN


COMA FLOTANTE NORMALIZADA DE NÚMEROS REALES EN
BASE 10. ……………………………………………….…..…………… 13

2.1. La notación científica decimal ……………………………………. 13


2.2. La representación en coma flotante normalizada decimal ……. 14
2.3. El conjunto finito de números de un sistema decimal en
coma flotante normalizada. ………………………………………. 15
2.4. Truncado y redondeo de números reales en coma flotante. …. 17
2.5. La unidad de redondeo en coma flotante decimal. ……………. 20
2.6. Los errores de overflow y de underflow. ……………………….. 21

3. LA NOTACIÓN CIENTÍFICA Y LA REPRESENTACIÓN EN


COMA FLOTANTE NORMALIZADA DE NÚMEROS REALES
EXPRESADOS EN BASE 2 ……………………………………………. 24

3.1. Expresión en base 2 de un número entero no nulo. …..………. 24


3.2. Expresión en base 2 de un número real de valor absoluto
inferior a 1. ……………………………………………………….…. 27
3.3. Expresión binaria en coma flotante de números reales. ………. 31
3.4. Truncamiento y redondeo de números binarios expresados
en coma flotante. ……………………………………….……….... 33
3.5. La unidad de redondeo en coma flotante binaria. ….…………. 36
3.6. La codificación binaria de números en equipos de cálculo. ….. 37
3.6.1. Codificación binaria de números enteros. ………………. 37
3.6.2. Codificación binaria de números reales en coma flotante. 38
3.7. Los números máquina binarios. …………..…………………….. 43

4. PROPAGACIÓN DE ERRORES. .......................…………………….. 49


4.1. Propagación de errores trabajando con números máquina. …. 50
A) Multiplicación y división de números máquina. …………….. 50
B) Sumas y restas de números máquina. ……………………… 55
4.2. Propagación de errores operando con números reales. …..…. 60

5. COMENTARIOS SOBRE EL TEMA. ..….…………………………….. 66

BIBLIOGRAFÍA. ……………………………………………………………… 67

ii
Programación y Métodos Numéricos Errores de redondeo

1. INTRODUCCIÓN

El Análisis Numérico puede definirse como la rama de las Matemáticas


que se ocupa del desarrollo de métodos de cálculo eficaces para la
obtención, en general aproximada, de los valores que toman las
soluciones de los problemas que otras disciplinas matemáticas plantean, así
como de acotar el error entre las soluciones obtenidas y las exactas.

Si bien muchos de esos métodos de cálculo eficaces (que llamaremos a


partir de ahora métodos numéricos) tienen sus orígenes en épocas bastante
lejanas, fue a partir de la segunda mitad del siglo XX cuando el Análisis
Numérico tuvo un desarrollo espectacular. Ello, sin duda, fue debido a la
aparición (a partir de la mitad de la década de los 40 del siglo XX) de sucesivos
ordenadores que permitieron incrementar notablemente la velocidad de cálculo
haciendo eficaces métodos que sin estas herramientas serían inaplicables en la
práctica. Baste recordar en este sentido que el número de operaciones
elementales por minuto que se podía realizar con los artilugios existentes en
1940 ha sido multiplicado en la actualidad por más de 100 millones y que está
cercana la construcción de máquinas capaces de realizar un billón de
operaciones elementales por segundo.

Pero la tecnología actual sólo permite realizar operaciones aritméticas


elementales (sumas, restas, multiplicaciones y divisiones) con cifras que
tengan un número limitado de dígitos1. Por una parte esto conduce a tener
que diseñar procesos de cálculo (algoritmos) que sólo contemplen este tipo de
operaciones elementales. Por otra parte, obliga a tener que redondear o truncar
los números que se manejen. Ambas simplificaciones introducirán diferencias
(errores) entre la solución calculada con el ordenador y la solución real del
problema que se pretenda resolver.

Más concretamente, en la obtención de soluciones aproximadas


mediante algoritmos de cálculo pueden introducirse tres tipos de errores:

A) Errores en la toma de datos. Son debidos a falta de precisión de los


aparatos de medida con los que se obtengan dichos datos. Aunque
existen técnicas para tenerlos en cuenta y estimar su incidencia, no

1
Existen programas de cálculo simbólico (MAPLE, Mathematica, DERIVE, ...) que permiten realizar
operaciones con números “exactos”. Pero su uso en grandes procesos de cálculo acaba conduciendo a
expresiones “inmanejables” que en un momento dado deben evaluarse ... con un número finito de dígitos.

1
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

son objeto de esta asignatura y por ello no serán tratados en este


tema.

B) Errores del método numérico. Son debidos a las simplificaciones


que deben introducirse para obtener una solución realizándose sólo
un número finito de operaciones elementales. Ello, aún partiendo de
datos exactos, puede introducir diferencias entre la solución exacta y
la solución aproximada obtenida. Su estudio debe realizarse para
cada método numérico concreto y son objeto de otros temas del
Análisis Numérico.

C) Errores en la representación utilizada de los números


manipulados en el algoritmo. Son debidos a la imposibilidad de
trabajar con infinitos dígitos y por tanto a la necesidad de truncar o
redondear los valores que se manejen. A su vez la combinación de
cifras aproximadas produce resultados en los que los errores pueden
acumularse. El estudio de este tipo de errores es el objeto de este
tema.

NOTA: Junto a los anteriores podrían considerarse otras fuentes de error al


plantear modelos numéricos debidos a las simplificaciones necesarias para la
determinación de las ecuaciones matemáticas que representen el fenómeno
real que se desee modelar. El estudio de estos otros tipos de error corresponde
a las disciplinas de modelado numérico y tampoco será abordado en este tema.

Ejemplo 1º: Por ilustrar los dos últimos tipos de error a los que nos hemos
referido anteriormente, consideremos el proceso de cálculo que, a “grandes
rasgos”, se sigue en una máquina para evaluar eπ / 2 . La transformación de este
cálculo en un algoritmo que sólo realice operaciones aritméticas elementales se
basa en considerar el desarrollo en serie de Taylor:
x2 x n (n ∞
xi
f(x) = f(0) + x ⋅ f '(0) + ⋅ f "(0) + ... + ⋅ f (0) + ... = ∑ ⋅ f (i (0)
2! n! i=0 i!

que para la función exponencial considerada se reduce a:


xi
ex = ∑
i=0 i!

Obviamente no podrán calcularse los infinitos sumandos del sumatorio


anterior ni realizarse las infinitas operaciones aritméticas elementales que

2
Programación y Métodos Numéricos Errores de redondeo

conlleva. Por eso, en la práctica, deberemos limitarnos a calcular y sumar sólo


los (n+1) primeros sumandos para un valor de “n” suficientemente elevado. En
otros términos el valor de ex es aproximado por:
n
xi
ex ≈ ∑
i=0 i!

cometiéndose así en el algoritmo un error (del método numérico) dado en este


caso por el resto de Taylor:


x(i) x (n+1)
R(e x ) = ∑ = ⋅ ec donde, para x > 0, c ∈ ]0,x[
i=n +1 i! (n + 1)!

De esta forma, el error del método numérico puede acotarse por la


expresión:
x(n+1)
R(e x ) ≤ ⋅ ex
(n + 1)!

Si se desea calcular el valor de ex con cuatro decimales significativos y


que el error del método numérico no tenga influencia en el proceso bastará con
considerar un número de sumandos, (n+1), suficientemente elevado para que:

x (n+1)
R(e ) ≤
x
⋅ e x < 10 −4
(n + 1)!

En el caso considerado (x = π /2 y utilizando sólo 4 decimales) bastará


con considerar n =10, por lo que la expresión:

10
( π / 2)i
eπ / 2 ≈ ∑
i= 0 i!

proporciona el valor con 4 decimales de eπ 2 sin error del método numérico.

En resumen, si pudiéramos trabajar con el número π / 2 de forma exacta,


los once primeros sumandos del desarrollo de Taylor nos proporcionarían el
valor de eπ / 2 sin error en sus cuatro primeras cifras decimales.

Pero, una vez conocido el algoritmo a emplear, debemos considerar una


aproximación de π /2 = 1.5707963267948966193.... . Con cuatro decimales
significativos podemos optar por truncar este valor y tomar π / 2 ≈ 1.5707 o

3
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

por redondear tomando entonces π / 2 ≈ 1.5708. Sea cual sea la opción elegida
estaremos cometiendo un error en la representación del número π / 2 .

Consideremos la primera de las opciones: π / 2 ≈ 1.5707. Partimos de un


error en la representación de este número inferior a 1.10-4. El valor a calcular
estará dado entonces por:

10
(1.5707)i (1.5707)2 (1.5707)3 (1.5707)10
eπ / 2 ≈ ∑ = 1 + 1.5707 + + + .... +
i= 0 i! 2 3! 10!

El error cometido al representar π / 2 con sólo cuatro decimales


significativos tendrá incidencia al calcular sus sucesivas potencias de orden 2,
3, 4, ..., 10. Y estos valores, que ya no son los exactos, deberán ser
nuevamente aproximados al dividirlos por los cocientes de los respectivos
sumandos. Así, utilizando nuevamente la opción de truncar en lugar de
redondear:

( π / 2)
2
(1.5707)2
≈ = 1.23354.... ≈ 1.2335
2 2
mientras que:

( π / 2)
2

= 1.2337005...
2

cometiéndose un error del orden de 2 ⋅ 10-4.

Análogamente, para aproximar el cuarto sumando:

( π / 2)
3
(1.5707)2 1.5707 1.5707
≈ ⋅ ≈ 1.2335 ⋅ = 0.645819... ≈ 0.6458
3! 2 3 3

en tanto que:
( π / 2)
3

= 0.64596...
3!
Todos los sumandos de nuestro procedimiento de cálculo se ven
afectados de esta manera por un error debido al truncamiento de los resultados
a tan sólo 4 decimales. La tabla siguiente recoge los valores exactos y
aproximados de estos sumandos:

4
Programación y Métodos Numéricos Errores de redondeo

( π / 2)
i
1.5707i
i ( )i
i! i!
0 1.0000 1.0000
1 1.5707 1.57079...
2 1.2335 1.23370...
3 0.6458 0.64596...
4 0.2535 0.25366...
5 0.0796 0.07969...
6 0.0208 0.02086...
7 0.0046 0.00468...
8 0.0009 0.00091...
9 0.0001 0.00016...
10 0.0000 0.00001...

Estos errores existentes en cada sumando se combinan al realizar la


suma, de forma tal que el valor aproximado así obtenido es: eπ / 2 ≈ 4.8095 . El
valor exacto es: eπ / 2 = 4.8104.... por lo que en el proceso hemos introducido un
error de 9.10-4 a pesar de que el análisis del error realizado para determinar el
número de sumandos aseguraba un error nulo si no se hubieran truncado los
valores a 4 cifras significativas.

NOTA: Como se detallará más adelante, el proceso de cálculo descrito no es


“exactamente” el que realizaría un ordenador o calculadora. La principal
diferencia (además de la base de numeración con la que operan) estriba en
que las máquinas de cálculo no fijan el número de decimales con el que
trabajan sino el número de cifras significativas que se manipulan introduciendo
una representación normalizada de los números (equivalente a la llamada
representación científica cuando se trabaja en base 10). De estos asuntos nos
ocuparemos más adelante.

Ejercicio propuesto 1: Repite el ejemplo anterior aproximando los valores


numéricos con cuatro cifras decimales pero obteniendo estas por redondeo en
lugar de por truncamiento. Determina el error que de esta forma se comete en
la evaluación de eπ / 2 con el algoritmo antes considerado.

Ejemplo 2º: Describimos a continuación otro ejemplo que ilustra la influencia


de los errores de redondeo. Se trata de calcular, para distintos valores del
índice n, las integrales:

5
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

1
In = ∫ xn ⋅ sen(x) ⋅ dx (n = 1, 2, .....)
0

El cálculo mediante integración por partes de las integrales anteriores


nos conduce a que, para n = 3, 4., ….., se puede escribir que:
1
u = x n → du = n·x n−1
In = ∫ xn ⋅ sen(x) ⋅ dx = =
0 dv = sen(x)·dx → v = − cos(x)
1 1
1
= − x ⋅ cos(x)⎤⎦ + n·∫ x
n (n −1)
⋅ cos(x) ⋅ dx = − cos(1) + n·∫ x(n−1) ⋅ cos(x) ⋅ dx
0
0 0

y, como a su vez:
1
u = x (n−1) → du = (n − 1)·x n−2
∫x
(n −1)
⋅ cos(x) ⋅ dx = =
0 dv = cos(x)·dx → v = sen(x)
1
1
= x (n−1) ⋅ sen(x)⎤⎦ − (n − 1)·∫ x (n−2) ⋅ sen(x) ⋅ dx = sen(1) + (n − 1)·In−2
0
0

resulta que:
In = -cos(1) + n·sen(1) – n·(n-1)·In-2

Puede utilizarse esta relación de recurrencia para obtener los sucesivos


valores de las integrales In con subíndice par a partir del valor:
1 1
I1 = ∫ x ⋅ sen(x) ⋅ dx = − cos(1) + ∫ cos(x) ⋅ dx = − cos(1) + sen(1) =
0 0

= 0.30116867893975....
y del valor::
1 1
I2 = ∫ x ⋅ sen(x) ⋅ dx = − cos(1) + 2·sen(1) − 2·∫ sin(x) ⋅ dx = cos(1) + 2·sen(1) − 2·=
2

0 0

= 0.22324427548393…

La tabla siguiente muestra los valores exactos (con sus 10 primeros


decimales) de las integrales que se quieren evaluar y los que los aproximan si
cada uno de los valores calculados se redondea considerando sólo sus 10
primeros decimales2.

2
En la tabla el cálculo de los valores exactos In se realizó con 15 dígitos, de los que se
muestran sólo los 10 primeros. En cuanto a los valores Aproximados, A1 y A2 se obtuvieron
como la aproximación redondeada a 10 dígitos de I1 e I2 respectivamente. Para los demás An
(n = 3, 4, …) se utilizó la fórmula de recurrencia anterior, evaluando con 15 dígitos
significativos el valor de (-cos(1) + n·sen(1)) y sustrayendo a este resultado el valor de
n·(n-1)·An-2 y aproximando el resultado así obtenido con 10 dígitos.

6
Programación y Métodos Numéricos Errores de redondeo

n Valor exacto (In) Valor aproximado (An) | In –An |


1 0.3011686789.... 0.3011686789 0.3…·10-10
2 0.2232442754... 0.2232442754 0.8…·10-10
3 0.1770985749... 0.177098576 0.1.. ·10-8
4 0.1466503275... 0.146650327 0.6.. ⋅ 10-9
5 0.1250811198... 0. 125081098 0.2.. ·10-7
6 0.1090137762... 0.109013793 0.1.. ⋅ 10-7
7 0.0965875548... 0.096588472 0.9.. ⋅ 10-6
8 0.0866941002... 0.086693165 0.9.. ⋅ 10-6
9 0.0786326061… 0.078566573 0.6.. ⋅ 10-4
10 0.0719385184… 0.072022692 0.8.. ·10-4
11 0.0662918492… 0.073555497 0.7.. ⋅ 10-2
12 0.0614650713… 0.0503504168 0.1.. ⋅ 10-1
13 0.0572920121… -1.07583703 0.1.. ⋅ 101
14 0.0536485025… 2.075832904 0.2…·101
15 0.0504399076… 238.0075388 0.2…·103
16 0.0475928480… -485.2766636 0.4…·103
…. ………………… …………….. …………..

En la tabla puede observarse como aumenta el error a medida que


crece n y como va empeorándose la aproximación de los valores aproximados
obtenidos. A partir de n = 11 se obtienen valores inaceptables pues:

• En la sucesión de valores aproximados, An, empieza a crecer el


valor absoluto de los resultados aproximados (cosa que no
sucede con los valores exactos)

• A partir de n = 13 comienzan a alternarse valores aproximados


negativos y positivos (por parejas), cada vez de mayor valor
absoluto. Esto no sucede con los valores exactos de la integral
que siempre son positivos y forman una sucesión decreciente.

La figura siguiente recoge la evolución de los 14 primeros valores


exactos (en rojo) y de los aproximados (en azul) observándose como a partir
del resultado A13 existen diferencias que inutilizan los valores obtenidos de
forma aproximada.

7
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

En este caso la evolución del error en cada aproximación puede


analizarse fácilmente. En efecto si se comete un error δ 1 en la representación
numérica utilizada para el valor aproximado (A1) de I1, y otro error δ 2 en la
representación numérica utilizada para el valor aproximado (A2) de I2,se tendrá:
I1 = A1 + δ1
I2 = A 2 + δ2
I3 = − cos(1) + 3·sen(1) − 3!·I1 = − cos(1) + 3·sen(1) − 3!·(A1 + δ1 ) =
= A 3 − 3!⋅ δ2
1 1
I4 = − cos(1) + 4·sen(1) − 4!·I2 = − cos(1) + 4·sen(1) − 4!·(A 2 + δ2 ) =
2 2
4!
= A 4 − ⋅ δ2
2
.........
I2·k +1 = A 2k +1 + ( −1)k ⋅ (2·k + 1)!⋅ δ1 ( k = 1, 2, ……)
(2·k + 2)!
I2·k + 2 = A 2k + 2 + ( −1)k ⋅ ⋅ δ2 (k = 1, 2, …….)
2

El razonamiento anterior muestra un crecimiento del error de “orden


factorial” lo que invalida el procedimiento de cálculo seguido para valores
elevados del índice “n”.

8
Programación y Métodos Numéricos Errores de redondeo

La figura siguiente muestra el comportamiento de los logaritmos en base


10 del error absoluto cometido en las primeras 25 integrales que se aproximen
mediante el proceso anteriormente descrito.

Ejercicio propuesto 2: Repite el ejemplo anterior truncando los valores que


utilices de forma que tan sólo se manejen 6 decimales. Obtén los valores
aproximados de las primeras 14 integrales y compara con los valores exactos
dados en la tabla presentada en el ejemplo 2º. Determina el valor del índice “n”
para el que la sucesión de valores aproximados deja de ser decreciente y aquel
en el que se produce el primer signo negativo.

Ejercicio propuesto 3: Otra forma de calcular los valores de las integrales del
ejemplo anterior consiste en, partiendo del valor de In obtener los valores de
las integrales precedentes. Más concretamente, si se conociera el valor de In se
tendría que:

n·sen(1) − cos(1) − In
In = -cos(1) + n·sen(1) – n ⋅ (n-1)·In-2 ⇒ In−2 =
n·(n − 1)

Por otra parte, para obtener una aproximación An de In se puede razonar


como sigue: al ser el integrando, xn·sen(x), una función no negativa en [0, 1] se

9
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

verificará que 0 < In. Además como en [0, 1] se verifica que 0 < sen(x) < 1 se
tiene que:

1
1
0 < In < ∫ x n ⋅ dx =
0
n +1

En otros términos una cota del valor positivo de la integral In es el valor


1/(n+1). La figura siguiente recoge el grafo de las funciones xn·sen(x) para
diversos valores de n, poniendo de manifiesto el hecho de que a medida que
crece el valor del exponente “n” menor es el área encerrada entre el grafo y el
eje de abscisas.

Las desigualdades anteriores nos indican que si se toma como valor


aproximado de In el valor An = 0 se comete un error δn menor que 1/(n+1). Se
pide que, tomando como valor aproximado de I20 el valor A25 = 0, y el de A24 =0,
calcules mediante el proceso iterativo en retroceso anteriormente descrito, y
truncando las cifras a 10 dígitos, las aproximaciones A23 , A22 , A21 , ...., A1.
Siendo δ 25 el error cometido al aproximar I25 por A25, y δ 24 el error cometido al
aproximar I24 por A24, analiza teóricamente cómo evolucionará el error cometido
con las aproximaciones que se vayan calculando. ¿Los valores del error que
determinaste son acordes con el análisis del error realizado?

10
Programación y Métodos Numéricos Errores de redondeo

Ejemplo 3º: El siguiente ejemplo pretende ilustrar como la falta de precisión en


los cálculos intermedios de un proceso puede conducir a resultados erróneos.
En efecto, consideremos el sistema de 2 ecuaciones con dos incógnitas:

⎧98 ⋅ x1 + 293.97 ⋅ x 2 = −195.97



⎨2 2
⎪⎩ 3 ⋅ x1 + 2.01⋅ x 2 =
3
− 2.01

La única solución de este sistema es: x1 = 1, x2 = -1. Si los coeficientes del


sistema se evalúan redondeándolos en su tercera cifra decimal se tendría el
sistema:

⎧98.000 ⋅ x1 + 293.970 ⋅ x 2 = −195.970



⎩ 0.667 ⋅ x1 + 2.010 ⋅ x 2 = −1.343

cuya solución también sigue siendo x1 = 1, x2 = -1. No obstante, si el sistema


se resuelve mediante el método de eliminación gaussiana (esto es, dejando la
primera ecuación como está y restándole a la segunda ecuación la primera
multiplicada por 0.667 y dividida por 98.000) redondeando los valores
intermedios con tres decimales, se obtiene:

⎧98.000 ⋅ x1 + 293.970 ⋅ x 2 = −195.970



⎨ 0.667 0.667
⎪⎩ 0 ⋅ x1 + (2.010 −
98.000
⋅ 293.970) ⋅ x 2 = ( −1.343 +
98.000
⋅ 195.970)


⎧98.000 ⋅ x1 + 293.970 ⋅ x 2 = −195.970

⎩ 0 ⋅ x1 + (2.010 − 0.007 ⋅ 293.970) ⋅ x 2 = ( −1.343 + 0.007 ⋅ 195.970)

⎧98.000 ⋅ x1 + 293.970 ⋅ x 2 = −195.970

⎩ 0 ⋅ x1 + (2.010 − 2.058) ⋅ x 2 = ( −1.343 + 1.372)

⎧98.000 ⋅ x1 + 293.970 ⋅ x 2 = −195.970

⎩ 0 ⋅ x1 + ( −0.048) ⋅ x 2 = 0.029

De la segunda de estas ecuaciones se tiene que:

11
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

0.029
x2 = − = −0.604
0.048

y, entrando con este valor en la primera ecuación:

−195.970 + 293.970 ⋅ 0.604 −195.970 + 177.558 −18.412


x1 = = = = −0.188
98.000 98.000 98.000

En resumen, la falta de precisión en los resultados de las operaciones


nos ha conducido a una solución del sistema que nada tiene que ver con la
solución exacta del mismo.

Los errores absolutos que se cometen al representar un número z por


una aproximación z del mismo con s decimales no permiten tener una idea
sobre la precisión del sistema de representación numérica utilizado. En efecto
no es lo mismo cometer un error ε al representar un número con un valor
absoluto elevado que cometer el mismo error al representar un número de valor
absoluto muy pequeño. Por ilustrar con un símil este hecho piénsese que si se
apunta con un rayo láser a la superficie de Marte y se logra impactar con él a 1
cm del objetivo marcado, muy probablemente se opine que el error ha sido
mínimo. Por el contrario, si el cirujano que opere de cataratas a un paciente
desvía el rayo láser 1 cm. de la zona dañada causará un importante daño en el
ojo del paciente. En ambos casos el error es de 1 cm. pero mientras que en el
primero se produce en varias decenas de millones de kilómetros, en el segundo
tiene lugar en pocos centímetros.

Es por ello que para tener una mayor información sobre la importancia
del error cometido en cualquier proceso de cálculo, junto al error absoluto, debe
contemplarse el error relativo (o en “tanto por uno”). En lo que a errores en la
representación de números se refiere, denotando por z al valor exacto de un
número y por z a la aproximación que de él se tenga, definiremos estos dos
tipos de error como sigue:

Error absoluto: Ea = z - z
y:
z−z
Error relativo: E= ∀z ≠ 0
z

12
Programación y Métodos Numéricos Errores de redondeo

2. LA NOTACIÓN CIENTÍFICA Y LA REPRESENTACIÓN EN COMA


FLOTANTE NORMALIZADA DE NÚMEROS REALES EN BASE 10.

2.1. La notación científica decimal.


La representación de los números en base 10 conservando un número
prefijado de decimales, tal y como se hizo en los ejemplos del apartado
anterior, no es la que se utiliza habitualmente en cálculo científico. Ello se debe
a que el número de dígitos de cada cifra manejada no es el mismo para
almacenar números grandes que pequeños. Por ejemplo, si se trabajase
truncando a tres decimales, la representación del número 12345.6789 sería
12345.678, habiéndose empleado 8 dígitos, mientras que el número
0.12345678 se representaría como 0.123, utilizándose sólo 4 dígitos para
representarlo. Si en el segundo número se hubieran utilizado 8 dígitos el
número representado sería 0.1234567, mucho más preciso que el anterior.

Por ello la forma estandarizada para representar números decimales (z)


parte de su expresión en notación científica, es decir en la forma:
z = ± 0.d1d2....dsds+1.... ⋅ 10e
donde e es un número entero y los dígitos d1d2....dsds+1.... son tales que
0 ≤ di ≤ 9 (i = 1, 2, .....) y además: d1 ≠ 0 ∀z ≠ 0 , siendo el número z = 0 el
único para el que se admite que d1 = 0.

En la notación científica de un número a ( ± 0.d1d2....dsds+1....) se le


denomina mantisa del número y al número entero “e” al que aparece elevada
la base “10” se le denomina exponente.

Ejemplos:
1º) El número 17/3 es 5.66666..... Su expresión en notación científica es:
0.56666666666... ⋅ 101, siendo la mantisa +0.56666666666... y siendo el
exponente 1.

2º) El número –7 /1772 se corresponde con el número real -0.00395033860045


y en notación científica se expresará por: -0.395033860045... ⋅ 10-2, siendo la
mantisa -0.395033860045... y el exponente -2.

Como se puede comprobar en los ejemplos anteriores, para expresar un


número real no nulo en notación científica basta con desplazar la “coma

13
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

decimal” hasta ubicarla a la izquierda del primer dígito significativo,


multiplicando el número resultante por 10e, donde “e” es el número de dígitos
que se ha desplazado la “coma decimal” precedido del signo “+” si el
desplazamiento se realiza hacia la izquierda y del signo “-” si dicho
desplazamiento se realiza hacia la derecha. Este “desplazamiento” de la
“coma decimal” motiva que esta forma de representar los números sea
conocida , además de por el nombre de notación científica, como
representación en coma flotante.

2.2. La representación en “coma flotante” normalizada decimal.


La notación científica que se acaba de describir utiliza mantisas que
para muchos números pueden tener “infinitos” decimales. Piénsese por ejemplo
en la representación en notación científica de números tales como 1/3, π , 3 ,
... o en general cualquier número irracional o periódico. Obviamente tales
números no pueden ser escritos de forma exacta en notación científica. Por eso
en tales casos es necesario aproximarlos por otros que tienen mantisas
formadas por un número finito de dígitos.

Además, si nos fijamos en los exponentes tampoco es viable, en la


práctica, admitir que puedan ser tan elevados como se quiera. Piénsese por
ejemplo que si se quisiera manejar el exponente e = 265536 necesitaríamos
19642 dígitos para escribirlo ( ¡¡¡más de 195 líneas con 100 dígitos cada una
de ellas!!!) . Es por ello que en una hipotética3 máquina de calcular el valor
máximo y mínimo de los exponentes también debe ser fijado.

De forma más concreta, partiendo de la notación científica de los


números, los sistemas de representación decimal en coma flotante decimal
normalizada consisten en conjuntos finitos de números formados por todos
aquellos números que en notación científica:

a) Tienen mantisas con sólo “s” dígitos decimales .


b) Tienen exponentes cuyo valor está comprendido entre un valor
mínimo (m) y un valor máximo (M): m ≤ e ≤ M .

3
Decimos “hipotética” pues las máquinas no utilizan la base 10 para representar los números
que manejan.

14
Programación y Métodos Numéricos Errores de redondeo

Tales sistemas de números los representaremos con la notación


F(s+1, m, M, 10) donde s indica el número de decimales usados para la
mantisa4, “m” y “M” los valores máximo y mínimo que se permite tomar al
exponente y “10” que se está trabajando con números expresados en base 10.

NOTAS:
1ª. A estos conjuntos de números se les denomina también sistemas de
representación científica decimal normalizada o conjunto de números
máquina F(s+1, m, M, 10).

2ª. Obsérvese que sólo con las “reglas” a) y b) el número z = 0 puede


representarse de múltiples maneras (±0.0....0·10e donde “e” es cualquiera de
los exponentes permitidos. En las máquinas de cálculo ello representaría un
“desperdicio” de su capacidad de representación de números. Por ello en tales
máquinas al número real z = 0 se le representa de otras maneras; por ejemplo
asignando para representar al real nulo el número 0.0...0·10m. Ello permitiría
optimizar los dígitos disponibles para almacenar otros números. No obstante
como las máquinas trabajan con números expresados en bases que no son la
base 10, insistiremos en este aspecto más adelante cuando nos ocupemos de
la representación numérica en base 2.

2.3. El conjunto finito de números de un sistema decimal en coma flotante


normalizada.
Adviértase que si se trabaja con los números de un sistema de
representación en coma flotante normalizada F(s+1, m, M, 10) en el que las
mantisas tienen s dígitos decimales y los exponentes están comprendidos entre
un valor mínimo m y un valor máximo M, sólo se dispone de una cantidad finita
de números, o lo que es lo mismo, sólo se representarán sin error alguno un
número finito de números reales.

Ejemplo: Si se considera el sistema decimal de representación en notación


científica normalizada F(2, 1, -1, 10) en el que s = 1 (sólo un dígito decimal) y
el valor de los exponentes se limita por −1 ≤ e ≤ 1 , los únicos números
existentes en el sistema serán:

4
En la notación del sistema F(s+1, m, M, 10) hemos escrito “s+1” pues en la práctica se
almacenarían los s decimales de la mantisa más, en otra posición adicional, el signo de la
misma.

15
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

± 0.1 ⋅ 10-1, ± 0.2 ⋅ 10-1, ± 0.3 ⋅ 10-1, ......, ± 0.8 ⋅ 10-1, ± 0.9 ⋅ 10-1,
± 0.1 ⋅ 100, ± 0.2 ⋅ 100, ± 0.3 ⋅ 100, ......, ± 0.8 ⋅ 100, ± 0.9 ⋅ 100,
± 0.1 ⋅ 101, ± 0.2 ⋅ 101, ± 0.3 ⋅ 101 , ......, ± 0.8 ⋅ 101, ± 0.9 ⋅ 101

más el número 0 que se representa de otra forma. Es decir sólo existen 55


números distintos en este sistema. El mayor de todos ellos es 0.9·101 = 9 y el
menor número estrictamente positivo es 0.1·10-1 = 0.01. Además, la distancia
entre dos números consecutivos no siempre es la misma: los números positivos
con exponente “-1” distan del siguiente 0.01, los que tienen exponente “0”
distan del siguiente 0.1 y los números positivos con exponente “1” distan del
siguiente 1.

Ejercicio propuesto 4º: Demuestra que en un sistema de representación en


notación científica normalizada F(s+1, M, m, 10), con s dígitos para la mantisa y
con exponentes limitados por las desigualdades: m ≤ e ≤ M (siendo m ≤ 0 y
M ≥ 0), existe un número de valores que pueden representarse sin error alguno
dado por la expresión: [18 ⋅ 10(s-1)] ⋅ (1+M-m) + 1.

La existencia de un número finito de valores en un sistema F(s+1, m,


M,10) hace que diferentes números reales deban aproximarse por un mismo
número máquina del sistema.

Ejemplo:
Si se trabaja en el sistema F(5, 5, -5, 10), con s = 4 dígitos decimales en
las mantisas y se sigue un procedimiento de truncado, todos los números
z ∈ [0.1001, 0.1002[ se representan como  z = 0.1001·100. Así, serían
aproximados por el mismo número máquina tanto 0.1001798 como 0.1001025.

Si con el mismo número de dígitos para la mantisa se optara por redondear, se


aproximarían por 0.1001·100 todos los números z∈ [0.10005, 0.10015[.

Otra consecuencia práctica de que el conjunto de números máquina


tenga un número finito de elementos es que, considerando sólo los que son
estrictamente positivos, habrá un número máquina positivo mayor y un número

16
Programación y Métodos Numéricos Errores de redondeo

máquina positivo menor. Similares razonamientos se podrían realizar si se


consideran los números máquina negativos.

Más concretamente, en un sistema de números máquina F(s, m, M, 10)


el mayor número positivo es: CM = 0.99....9 ⋅ 10M y el menor número
estrictamente positivo es: cm = 0.100...0 ⋅ 10m. En otros términos:

s
CM = ∑ 9·10M−i , cm = 1·10m
i=1

La distancia existente entre dos números máquina consecutivos se


determina en la siguiente propiedad.

Propiedad 1.
Siendo z un número máquina estrictamente positivo del sistema F(s+1, m, M,
10) cuya representación en coma flotante sea: 
z = 0.d1...ds·10e y denotando por
l al menor número máquina superior a 
w z se verifica que:
l 
w − z = 10e-s
Demostración:
Siendo  l es:
z = 0.d1...ds·10e el siguiente número máquina w

l = 0.d ...d d ·10e + 0.0...01·10e


w 1 s−1 s

por lo que:
l −
w z = 0.0...01·10e = 1·10e−s = 10e−s
c.q.d.

2.4. Truncado y redondeo de números reales en coma flotante.


Los procedimientos más habituales para aproximar la mantisa de un
número real z de la forma z = ± 0.d1d2....dsds+1.... ⋅ 10e por la del número
normalizado z de F(s+1, m, M, 10), con s dígitos de mantisa, suelen ser:

Truncado: Se toman los s primeros dígitos de la mantisa de z:

z ≈ z = ±0.d1d2 .....ds ⋅ 10e

17
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Redondeo: Según el valor del primer dígito decimal que se desprecia en


la mantisa, dígito ds+1, se procede como sigue:

⎧ ±0.d1d2 ....ds ⋅ 10e si ds+1 < 0.5


z≈z=⎨
⎩ ±(0.d1d2 ....ds + 0.00....1) ⋅ 10 si ds+1 ≥ 0.5
e

Ejemplos:
1º) Si se utilizan 4 dígitos para representar la mantisa, el número decimal dado
por 17/3 = 0.56666666666... ⋅ 101 puede representarse:

Truncando: z = 0.5666 ⋅ 101


Redondeando: z = 0.5667 ⋅ 101

2º) Utilizando 5 dígitos para representar la mantisa, el número decimal dado


por: –7 / 1772 = -0.395033860045... ⋅ 10-2, se representa por:

Truncando: z = −0.39503 ⋅ 10−2


Redondeando: z = −0.39503 ⋅ 10−2

Si se utilizaran 6 dígitos para las mantisas las representaciones


numéricas correspondientes serían:

Truncando: z = −0.395033 ⋅ 10−2


Redondeando: z = −0.395034 ⋅ 10−2

Ocupémonos ahora de acotar los errores absoluto y relativo que se
cometen al aproximar un número real z por un número normalizado 
z.

Propiedad 2.
Siendo z la representación decimal en coma flotante normalizada con “s”
dígitos de mantisa obtenida por truncamiento del número real z, y denotando
por “e” al exponente obtenido al expresar z en notación científica, se verifica
que:
| Ea | = z − z ≤ 10e−s

z−z
E= ≤ 101−s ∀z ≠ 0
z

18
Programación y Métodos Numéricos Errores de redondeo

Demostración:
Sea z = ± 0.d1d2....dsds+1.... ⋅ 10e y sea z = ± 0.d1d2....ds ⋅ 10e . Se
tiene que:

| Ea | = z − z = 0.d1d2 ....ds ds+1.... − 0.d1d2 ....ds ⋅ 10e = 0.ds+1..... ⋅ 10 − s ⋅ 10e =

= 0.ds+1..... ⋅ 10e−s ≤ 1⋅ 10e−s = 10e −s

y, si z ≠ 0 :

z−z 10e−s 10− s 10 − s


E= ≤ = ≤ = 101−s
z 0.d1d2 ...ds ds+1... ⋅ 10 e
0.d1d2 ...ds ds+1... 0.1
c.q.d.

Propiedad 3.
Siendo z la representación decimal en coma flotante con “s” dígitos de
mantisa obtenida por redondeo del número real z, y denotando por “e” al
exponente obtenido al expresar z en notación científica, se verifica que:

1
| Ea | = z − z ≤ ⋅ 10e−s
2

z−z 1
E= ≤ ⋅ 101−s ∀z ≠ 0
z 2
Demostración:
a) Examinemos en primer lugar los errores absolutos. Y consideremos primero
el caso en que z = ± 0.d1d2....dsds+1.... ⋅ 10e , es un número tal que el dígito ds+1
de su mantisa verifica que ds+1 < 5 . En esta situación z = ± 0.d1d2....ds ⋅ 10e por
lo que:

| Ea | = z − z = 0.d1d2 ....ds ds+1.... − 0.d1d2 ....ds ⋅ 10e = 0.ds+1.... ⋅ 10− s ⋅ 10e =

1
= 0.ds +1..... ⋅ 10e −s ≤ 0.5 ⋅ 10e−s = ⋅ 10e−s
2

19
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Si ahora se contempla el caso en que el dígito ds+1 es tal que ds+1 ≥ 5 se


tiene que:
| Ea | = z − z = 0.d1d2 ....ds ds+1... − (0.d1d2 ....ds + 0.00...1) ⋅ 10e =

1
= (1 − 0.ds+1...) ⋅ 10− s ⋅ 10e = 1 − 0.ds+1... ⋅ 10e−s ≤ 0.5 ⋅ 10e −s = ⋅ 10e −s
2

b) Teniendo en cuenta la acotación de los errores absolutos, para el error


relativo se tiene que, si z ≠ 0 :
1 1 1
z−z ⋅ 10e−s ⋅ 10− s ⋅ 10− s
2 2 1
E= ≤ = ≤ 2 = ⋅ 101−s
z 0.d1d2 ...ds ds+1... ⋅ 10 e
0.d1d2 ...ds ds+1... 0.1 2
c.q.d.

2.5. La unidad de redondeo en coma flotante decimal.


Las acotaciones del error relativo realizadas en las dos propiedades
anteriores pueden sintetizarse diciendo que, siendo z la aproximación utilizada
al representar el número z con s dígitos de mantisa, se verifica que:
z−z
≤u ∀z ≠ 0
z
donde al número u se le denomina unidad de redondeo del sistema F(s+1, m,
M, 10), y que toma el valor 101-s si se aproxima por truncado o el valor (½) ⋅ 101-s
si se aproxima redondeando. En todo caso se tiene que:
z−z
= δ ⇒ z = (1 + δ).z con δ ≤ u
z

Puede observarse que la unidad de redondeo (cota del error relativo) es


tanto menor cuanto mayor es el valor del número de dígitos decimales de la
mantisa (“s”) siendo independiente el exponente del número z con el que se
trabaje, esto es de la magnitud del número.

NOTA: Las dos propiedades demostradas en el apartado anterior también nos


indican que el valor absoluto del error absoluto cometido al representar un
número puede acotarse por γ ⋅ 10e−s donde γ = 1 si se actúa por truncamiento
o γ = ½ si se procede mediante redondeo. En todo caso, la cota del error
absoluto será mayor cuanto mayor sea (e – s), es decir que se incrementa con
el exponente e del número a aproximar, es decir cuanto mayor sea el valor

20
Programación y Métodos Numéricos Errores de redondeo

absoluto del número que se quiera representar, y decrece a medida que se


permiten usar más dígitos en la mantisa.

Ejercicio propuesto 5º: Siendo u la unidad de redondeo, demuestra que u es


el número más pequeño de la forma 10-k para el que se verifica que (1+u) no se
representa en la forma 0.100...0 ⋅ 101.

2.6. Los errores de overflow y de underflow.


Como ya se señaló anteriormente, una consecuencia de que el conjunto
de números máquina tenga un número finito de elementos es que, existe un
número máquina positivo mayor (CM) y un número máquina positivo menor
(cm). Ello hace que exista un número real tal que los números reales superiores
o iguales a él no se pueden aproximar por un número máquina del sistema
F(s+1, m, M, 10). Y de forma análoga existe un valor real positivo tal que los
números reales positivos inferiores a él o bien son aproximados por el número
0 o bien no se pueden aproximar por ningún número del sistema F(s+1, m, M,
10). Similares razonamientos se podrían realizar si se consideran los números
máquina negativos.

Si se actuase mediante la técnica de truncado, cualquier número real


con exponente M y con sus s primeros dígitos de mantisa iguales a “9” sería
aproximado por el número máquina CM independientemente de cuales fueran
los dígitos decimales despreciados en la mantisa. Por tanto el menor número
positivo que no podría representarse por un número máquina del sistema
F(s+1, m, M, 10) sería 0.10....0 ⋅ 10M+1.

Análogamente, si se actuase mediante la técnica de redondeo, se


aproximarían por el número máquina CM todos aquellos números reales con
exponente igual a M y con mantisas cuyos (s+1) primeros dígitos decimales
estuvieran comprendidos entre 0.99....985 y 0.99...994, independientemente
de cuales fueran los dígitos decimales posteriores de la mantisa. Por tanto el
menor número positivo que no podría representarse por un número máquina
del sistema F(s+1, m, M, 10) sería 0.99....950000..... ⋅ 10M.

Dígito decimal (s+1)

21
Errores de redondeo Carlos Conde, Arturo Hidalgo y Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

En resumen, para cada sistema de números máquina F(s+1, m, M, 10) y


para cada técnica de aproximación utilizada, existe un número real, denotado
por Noverflow, tal que los números reales de mayor o igual valor absoluto no
pueden representarse por un número del sistema F(s+1, m, M, 10). Este
número real está dado por
⎧ 0.1⋅ 10M+1 (Truncado)
Noverflow = ⎨
⎩0.9...95 ⋅ 10 (Re dondeo)
M

(s+1) decimales

Cuando en una máquina de calcular5 se intenta representar un número


real z tal que |z| ≥ Noverflow se produce un error que se denomina error de
overflow (que algunos autores castellanizan como error de desbordamiento)
interrumpiéndose el proceso de cálculo que se esté siguiendo.

De forma similar, si se actúa por truncado se representarán por el


número cm todos aquellos números reales positivos tales que, teniendo por
exponente m tengan los s primeros dígitos decimales de su mantisa idénticos a
los de cm. Por tanto el menor valor positivo que puede representarse mediante
truncado por un número máquina no nulo de F(s+1, m, M, 10) será 0.10...0 ⋅ 10m
(= cm ).

Si la técnica de aproximación de números elegida fuese el redondeo, se


aproximarían por cm todos aquellos números reales z tales que:

0.99...95 ⋅ 10m-1 ≤ z < 0.10....05 ⋅ 10m

(s+1) decimales (s+1) decimales

Por tanto el menor valor positivo que puede representarse mediante


redondeo por un número máquina estrictamente positivo de F(s+1, m, M, 10)
será 0.99...95 ⋅ 10m-1.

En resumen, para cada sistema de números máquina F(s+1, m, M, 10) y


para cada técnica de aproximación utilizada, existe un número real, denotado
por nunderflow, tal que los números reales de menor valor absoluto no pueden
representarse por un número no nulo del sistema F(s+1, m, M, 10). Este
número real está dado por

5
Tal máquina no es una máquina real pues los ordenadores actuales no operan en base 10
sino que lo hacen en aritmética binaria, octal o hexadecimal.

22
Programación y Métodos Numéricos Errores de redondeo

⎧ 0.1⋅ 10m (Truncado)


Nunderflow = ⎨ m −1
⎩0.9...95 ⋅ 10 (Re dondeo)

(s+1) decimales

Cuando en una máquina de calcular6 se intenta representar un número


real z tal que |z| < nunderflow o bien se produce un error que se denomina error
de underflow interrumpiéndose el proceso de cálculo que se esté siguiendo, o
bien se aproxima tal número por el número máquina nulo.

6
Insistimos en que se trataría de una máquina hipotética que trabajase en base 10, cosa que
no es lo que sucede en los ordenadores actuales.

23
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

3. LA NOTACIÓN CIENTÍFICA Y LA REPRESENTACIÓN EN COMA


FLOTANTE NORMALIZADA DE NÚMEROS REALES EXPRESADOS EN
BASE 2.
Los ordenadores y las calculadoras almacenan los números con los que
trabajan en memorias construidas con componentes electrónicos elementales
(llamados bits) que pueden tener dos estados (en tensión o sin tensión,
cargados o descargados, magnetizados o desmagnetizados, activos o pasivos,
...). A uno de dichos estados se le denotará como 0 y al opuesto como 1. Es
por ello que la mayor parte de las máquinas de cálculo científico trabaja en
binario, es decir representando los números en la base de numeración 2 , en la
que los dígitos sólo pueden tomar los valores 0 ó 1. Por este motivo resulta
necesario trasladar cuanto hemos visto en el apartado anterior a la aritmética
binaria.

NOTA: Pese al comentario anterior ciertos fabricantes consideran grupos de 3


o 4 bits y representan los números en base 8 (octal) o en base 16
(hexadecimal). Nosotros sólo detallaremos en este tema lo concerniente a la
codificación binaria y nos limitaremos en alguna de las “Notas” sucesivas a
describir la extensión de lo que se diga a otras bases de numeración. La
justificación detallada de esas extensiones pueden constituir buenos ejercicios
propuestos para el lector.

3.1. Expresión en base 2 de un número entero no nulo.


Siendo z10 un número entero no nulo dado en base 10 su expresión en
base 2, z2, se determina por un conjunto de (p+1) dígitos de la forma
( 1b1....bp−1bp ), precedidos del signo que tenga z10, tales que se verifica que:
bi = 0 ó 1 (i = 1, ..., p),

z10 = 1⋅ 2p + b1 ⋅ 2p −1 + ... + bp−1 ⋅ 21 + bp ⋅ 20

Ejemplos:
1º) El número z10 = 6 se representa en binario por z2 = 110 ya que:
6 = 1 ⋅ 22 + 1 ⋅ 21 + 0 ⋅ 20

2º) El número z10 = -109 se representa en binario por z2 = -1101101 ya que:


-109 = -(1 ⋅ 26 +1 ⋅ 25 + 0 ⋅ 24 + 1 ⋅ 23 + 1 ⋅ 22 + 0 ⋅ 21 + 1 ⋅ 20)

24
Programación y Métodos Numéricos Errores de redondeo

Dado un número entero en base diez, z10, puede obtenerse su


representación binaria , z2, de la forma siguiente:

Algoritmo 1 (Datos: z10; Resultados: p, {b0, b1, ..., bp})


• El signo de z2 es el mismo que el de z10.
• Determinar el mayor entero positivo, p, para el que 2p ≤ | z10 |
• b0 ← 1
• Si p > 0 entonces:
y ← | z10 |
Para i = 0 hasta i = p-1 con paso 1 hacer:
x ← Parte entera de (y/2)
bp-i ← y – 2 ⋅ x
y ← x
fin bucle en i
fin condición.

Ejemplo:
Para representar en binario el número z10 = -172 se puede proceder
como sigue:

• El signo del número binario será negativo (pues lo es z10).


• Puesto que: 27 = 128 <172 < 28 = 256, tomaremos p = 7.

• b0 ← 1

• Como p > 0 se toma:


y ← 172
⎛ 172 ⎞
i ← 0, x ← Parte entera de ⎜ ⎟ = 86 , b7 = 172 – 2 ⋅ 86 = 0,
⎝ 2 ⎠
y ← 86
⎛ 86 ⎞
i ← 1, x ← Parte entera de ⎜ ⎟ = 43 , b6 = 86 – 2 ⋅ 43 = 0,
⎝ 2 ⎠
y ← 43
⎛ 43 ⎞
i ← 2, x ← Parte entera de ⎜ ⎟ = 21, b5 = 43 – 2 ⋅ 21 = 1,
⎝ 2 ⎠
y ← 21
⎛ 21 ⎞
i ← 3, x ← Parte entera de ⎜ ⎟ = 10 , b4 = 21 – 2 ⋅ 10 = 1,
⎝ 2⎠
y ← 10

25
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

⎛ 10 ⎞
i ← 4, x ← Parte entera de ⎜ ⎟ = 5 , b3 = 10 – 2 ⋅ 5 = 0,
⎝ 2 ⎠
y ← 5
⎛5⎞
i ← 5, x ← Parte entera de ⎜ ⎟ = 2 , b2 = 5 – 2 ⋅ 2 = 1,
⎝2⎠
y ← 2
⎛2⎞
i ← 6, x ← Parte entera de ⎜ ⎟ = 1, b1 = 2 – 2 ⋅ 1 = 0,
⎝2⎠
y ← 1

En resumen: z2 = -10101100.

Ejercicio propuesto 6º: Determina la expresión binaria del número 1455.


El algoritmo 1 presentado anteriormente está escrito pensando en su


programación para que sea ejecutado en un ordenador. Cuando la conversión
a binario del número z10 ,dado en base 10, se realiza “a mano” el algoritmo
equivalente consiste simplemente en dividir el número |z10| entre 2 obteniendo
(1)
un cociente entero, z10 y un resto (que llamaremos bp y que será 0 ó 1) para a
(1)
continuación dividir el número z10 entre 2 obteniendo un nuevo cociente entero
(2)
z10 y un nuevo resto bp-1. Repitiendo este proceso hasta obtener un cociente
entero igual a la unidad se tiene la expresión del número binario sin más que
escribir los cocientes enteros hallados en orden inverso a como han ido
apareciendo y precederles de +1 ó –1 en consonancia con el signo que tenga
z10.

Ejemplo:
Codifiquemos el número z10 = 222. La figura siguiente recoge las sucesivas
divisiones entre 2 del número considerado.

26
Programación y Métodos Numéricos Errores de redondeo

222 2

0 111 2


1 55 2
b7

1 27 2
b6

1 13 2
b5

1 6 2
b4

0 3 2
b3

1 1
b2

b1

Por tanto (222)10 = +1b1b2b3b4b5b6b7 = (+11011110)2. = (11011110)2


3.2. Expresión en base 2 de un número real de valor absoluto inferior a 1.


Siendo z10 un número real tal que –1 < z10 < 1 dado en base 10 su
expresión en base 2, z2, se determina por un conjunto de dígitos de la forma
0.c1....c p−1c p ...... , precedidos del signo que tenga z10, tales que se verifica que:
ci = 0 ó 1 (i = 1, 2, ..., p,….)

z10 = c1 ⋅ 2−1 + c 2 ⋅ 2−2 + ... + c p ⋅ 2−p + .......

En general la expresión binaria de los reales con valor absoluto inferior a


1 estará formada por infinitos dígitos. Sólo son excepción de este hecho
aquellos números reales que puedan expresarse como una suma finita de
potencias negativas de 2.

27
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Ejemplos:
1º) El número 0.8125 puede expresarse como: 1 ⋅ 2-1 +1 ⋅ 2-2 + 0 ⋅ 2-3 + 1 ⋅ 2-4 por
lo que su expresión binaria es: 0.1101.

2º) El número 0.37 no puede representarse de forma exacta con un número


finito de dígitos en base 2 ya que:

0.37 = 0 ⋅ 2-1 +1 ⋅ 2-2 + 0 ⋅ 2-3 + 1 ⋅ 2-4 + 1 ⋅ 2-5 +1 ⋅ 2-6 + 1 ⋅ 2-7 +0 ⋅ 2-8 +1 ⋅ 2-9 +.......

por lo que su expresión binaria es 0.010111101........, teniendo infinitos dígitos.


Por este motivo en la codificación de números reales no nulos de valor


absoluto inferior a la unidad sólo se identificarán los (p + 1) primeros dígitos
significativos del número, es decir los p primeros dígitos que siguen al primer
dígito cuyo valor sea la unidad. En otros términos, se buscará el número binario
de la forma:
0.00....01c1c2....cp.......

posición r
tal que:
|z10 | = (1+ c1 ⋅ 2-1 + c2 ⋅ 2-2 + …..+ cp ⋅ 2-p + ….) ⋅ 2-r

El valor de la posición r y de los p dígitos siguientes pueden


determinarse mediante el siguiente algoritmo:

Algoritmo 2 (Datos: z10,p; Resultados: r, {c0, c1, ..., cp})


• El signo de z2 es el mismo que el de z10.
• Determinar el menor entero positivo, r, para el que 2-r ≤ | z10 |
• c0 ← 1, y ← z10 ⋅ 2r − 1
Para i = 1 hasta i = p con paso 1 hacer:
x ← 2⋅ y
ci ← Parte entera de (x)
y ← x - ci
fin bucle en i.

28
Programación y Métodos Numéricos Errores de redondeo

Ejemplos:
1º. Obtengamos la expresión binaria, con 8 (= 7 + 1) dígitos significativos, del
número decimal -0.8125. Para ello fácilmente se comprueba que r = 1 ya que
2-1 = 0.5 < 0.8125. Por tanto tomaremos c0 ← 1 e y ← 0.8125 ⋅ 21-1 = 0.625.
Tras ello, de forma iterativa, realizaremos las siguientes operaciones:

i ← 1, x ← 2 ⋅ 0.625 = 1.250, c1 ← 1, y ← 0.25


i ← 2, x ← 2 ⋅ 0.25 = 0.5, c2 ← 0, y ← 0.5
i ← 3, x ← 2 ⋅ 0.5 = 1.0, c3 ← 1, y ← 0.0
i ← 4, x ← 2 ⋅ 0. = 0. , c4 ← 0, y ← 0.
i ← 5, x ← 2 ⋅ 0. = 0. , c5 ← 0, y ← 0.
i ← 6, x ← 2 ⋅ 0. = 1. , c6 ← 0, y ← 0.
i ← 7, x ← 2 ⋅ 0. = 1. , c7 ← 0, y ← 0.

En resumen, el número se corresponde con:

Posición del primer bit significativo r=1

- 0.1101000

C0 C1 C2 ..... C7

2º. Obtengamos la expresión binaria, con 10 (= 9 + 1) dígitos significativos, del


número decimal 0.112. Para ello fácilmente se comprueba que r = 4 ya que
2-4 = 0.0625 < 0.112 < 2-3 = 0.125. Por tanto tomaremos c0 ← 1 y asignaremos
a la variable y el valor y ← 0.112 ⋅ 24 - 1 = 0.792. Tras ello, de forma iterativa,
realizaremos las siguientes operaciones:
i ← 1, x ← 2 ⋅ 0.792 = 1.584, c1 ← 1, y ← 0.584
i ← 2, x ← 2 ⋅ 0.584 = 1.168, c2 ← 1, y ← 0.168
i ← 3, x ← 2 ⋅ 0.168 = 0.336, c3 ← 0, y ← 0.336
i ← 4, x ← 2 ⋅ 0.336 = 0.672, c4 ← 0, y ← 0.672
i ← 5, x ← 2 ⋅ 0.672 = 1.344, c5 ← 1, y ← 0.344
i ← 6, x ← 2 ⋅ 0.344 = 0.688, c6 ← 0, y ← 0.688
i ← 7, x ← 2 ⋅ 0.688 = 1.376, c7 ← 1, y ← 0.376
i ← 8, x ← 2 ⋅ 0.376 = 0.752, c8 ← 0, y ← 0.752
i ← 9, x ← 2 ⋅ 0.752 = 1.504, c9 ← 1, y ← 0.504

29
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

En resumen, el número se corresponde con:


Posición del primer bit significativo r=4

0.0001110010101....

C0 C1 C2 ..... C10

Ejercicio propuesto 7º: Determina la expresión binaria del número –1/30 con
12 dígitos significativos. •

El algoritmo 2º está escrito para que sea inmediata su implementación


en un programa informático que permita transformar números en base 10 a
números en base 2. Cuando se va a operar “a mano” puede resultar más
sencillo proceder a multiplicar el valor absoluto del número dado, z10 , por 2
obteniendo un nuevo número cuya parte entera nos proporcionará el primer
dígito binario que debe colocarse tras el punto decimal en la expresión binaria
buscada. Volviendo a multiplicar por 2 la parte decimal del valor hallado y
procediendo de la misma manera se obtendrá el segundo dígito binario
decimal. La repetición de este proceso nos permitirá determinar tantos dígitos
decimales binarios como se desee.

Ejemplo:
Determinemos la expresión binaria del número z10 = –0.174. Por ser el
número dado negativo su expresión binaria comenzará en la forma –0....... .
Para determinar el primer dígito decimal multipliquemos |z10| = 0.174 por 2,
obteniendo: 0.174 × 2 = 0.348

Al ser la parte entera del valor resultante igual a 0, la expresión binaria


de z10 será de la forma: z2 = -0.0.... Volvamos a multiplicar la parte decimal del
número obtenido por 2 para sí obtener: 0.348 × 2 = 0.696

Al ser la parte entera del valor resultante igual a 0, la expresión binaria


de z10 será de la forma: z2 = -0.00.... Volvamos a multiplicar la parte decimal del
número obtenido por 2 para sí obtener: 0.696 × 2 = 1.392

Al ser la parte entera del valor resultante igual a 1, la expresión binaria


de z10 será de la forma: z2 = -0.001.... Volvamos a multiplicar la parte decimal
del número obtenido por 2 para sí obtener: 0.392 × 2 = 0.784

30
Programación y Métodos Numéricos Errores de redondeo

Al ser la parte entera del valor resultante igual a 0, la expresión binaria


de z10 será de la forma: z2 = -0.0010.... Volvamos a multiplicar la parte decimal
del número obtenido por 2 para sí obtener: 0.784 × 2 = 1.568

Al ser la parte entera del valor resultante igual a 1, la expresión binaria


de z10 será de la forma: z2 = -0.00101.... Volvamos a multiplicar la parte decimal
del número obtenido por 2 para sí obtener: 0.568 × 2 = 1.136

Al ser la parte entera del valor resultante igual a 1, la expresión binaria


de z10 será de la forma: z2 = -0.001011....

El proceso puede continuarse tantas veces como sea necesario hasta


determinar todos los decimales binarios que se deseen.

3.3. Expresión binaria en coma flotante de números reales.


Sabiendo obtener las expresiones binarias de números enteros no nulos y de
números reales de valor absoluto inferior a la unidad, la expresión binaria de
cualquier número real no nulo puede realizarse uniendo ambos procesos (y si
el número a expresar en binario fuese 0 su expresión binaria es,
evidentemente, 0)7.

Ejemplo:
La expresión binaria del número –172.112 puede obtenerse expresando en
base 2 la parte entera, -172, como se hizo en el ejemplo con el que se ilustró el
algoritmo 1º y añadiendo como parte decimal la expresión binaria de 0.112
obtenida en el segundo de los ejemplos con que se ilustró el algoritmo 2º.
Concretamente:
Base 10 Base 2
-172 ↔ -10101100
-0.112 ↔ -0.0001110010101....
-172 + (-0.112) = -117.112 ↔ -10101100. 0001110010101.....

7
En el ejercicio resuelto nº 5 puede encontrarse un algoritmo y un programa en MAPLE que codifica en
binario números decimales según lo que se expondrá en este apartado.

31
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Pero, de forma análoga a lo expuesto al trabajar en base 10, no es


habitual expresar los números binarios conservando sus s primeros decimales.
En su lugar se opta por conservar los s primeros dígitos significativos. Ello se
acompaña de la representación de los números binarios con la técnica de coma
flotante, es decir desplazando el punto decimal hasta la derecha del primer
dígito significativo e introduciendo para compensar este desplazamiento de “la
coma” un exponente entero igual al número de dígitos que se hayan saltado al
trasladarla, con signo negativo si el punto decimal se ha movido hacia la
derecha y con signo positivo si se movió hacia la izquierda. Con ello los
números binarios no nulos expresados en coma flotante tendrán la
forma: ± 1.d1d2.....dsds+1..... ⋅ 2e donde los dígitos di son enteros verificando
0 ≤ di ≤ 1 (i = 1, 2, ..., s, s+1, ....) y “e” es un número binario entero.

En esta expresión a ( ± 1.d1d2.....dsds+1.....) se le denomina mantisa y al


número “e” se le denomina exponente.8

Ejemplos:
1º) Según se detalló en el ejemplo anterior, el número decimal –172.112 se
escribía en base 2 en la forma -10101100. 0001110010101...... Su
representación en coma flotante será:

-1.101100 0001110010101..... ⋅ 27 =

= -1.101100 0001110010101..... ⋅ 2111

2º) En otro de los ejemplos anteriormente realizados se obtuvo que el número


decimal 0.8125 se expresaba en binario como: 0.1101. Su representación
binaria en coma flotante será: 1.101 ⋅ 2-1.

NOTAS: 1ª) Los números expresados en binario tienen su exponente “e” en


binario. No obstante en muchas ocasiones, para facilitar el seguimiento de los
cálculos que realicemos expresaremos tal exponente como un exponente
entero en base 10 contentándonos en dichos casos con expresar en binario tan
sólo la mantisa de los números con los que trabajemos.

8
Obsérvese que, a diferencia de lo que se citó en el caso de trabajar en base 10, cuando se trabaja en
binario las mantisas tienen el dígito a la izquierda del punto decimal no nulo. Este hecho se justifica
porque, como se detallará posteriormente, en los ordenadores sólo se almacenará la parte decimal de la
mantisa y de esta forma se puede “ahorrar” el espacio de memoria que ocuparía el “1” que precede al
punto decimal.

32
Programación y Métodos Numéricos Errores de redondeo

2ª) El número 0 es el único número que tiene una representación diferente al


ser nula la parte entera de la mantisa.

3ª) En otras bases diferentes los números se representan de forma análoga. En


efecto, siendo β un entero estrictamente positivo, la forma de representar un
número decimal z10 según la técnica de punto flotante en base β consiste en
escribirlo como: ± 0.d1d2d3...dsds+1... ⋅βe donde los dígitos de la mantisa son
enteros tales que 0 ≤ di ≤ β − 1 (i = 1, ..., s, s+1, ....) y además d1 ≠ 0 .

Ejercicio propuesto 8º: Escribe un algoritmo que permita determinar la
expresión en base 8, z8, de un número decimal. Extiende el algoritmo a
cualquier base entera β .

3.4. Truncamiento y redondeo de números binarios expresados en coma


flotante.
Al igual que sucedía al trabajar en base 10, cuando se manipulan
números binarios expresados en coma flotante no se pueden manejar infinitos
dígitos en la mantisa. Por ello en las máquinas de calcular se toman en
consideración sólo mantisas con s dígitos tras el punto decimal que sigue al
primer dígito “1”. Un número binario genérico debe aproximarse entonces por
otro cuya mantisa sólo contenga s dígitos en su parte decimal. Las técnicas
más comunes para proceder a realizar esta aproximación son las conocidas
con los nombres de truncado y redondeo9. De ellas pasamos a ocuparnos a
continuación. En ambos casos denotaremos por z a un número binario
expresado en coma flotante como: z = ± 1.d1d2...dsds+1... ⋅ 2e.

Truncado: El número z se aproxima por z = ± 1.d1d2...ds ⋅ 2e.


Redondeo: El número z se aproxima por:
⎧ ±1.d1d2 ...ds ⋅ 2e si ds+1 = 0
z=⎨
⎩±(1.d1d2 ...ds + 0.00...1) ⋅ 2 si ds+1 = 1
e

s dígitos decimales

donde la suma que aparece en el caso de ser ds+1 = 1 se entiende que es en


aritmética binaria.

9
Algunos fabricantes de máquinas de computación utilizan técnicas de aproximación de números binarios
diferentes al truncado o al redondeo que aquí se consideran.

33
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

NOTA: Recuérdese que la suma en aritmética binaria sigue la mismas reglas


que la suma en base 10. Más concretamente la suma de los números binarios
0.d1d2...di-1di....ds y 0.b1b2...bi-1bi...bs se realiza dígito a dígito empezando por
los de más a la derecha y verificándose que “di + bi = 1” si uno de ellos tiene
valor 0 y el otro valor 1 mientras que “di + bi = 0” si ambos dígitos tienen el
mismo valor y, además, en el caso de que ambos dígitos tengan valor 1, su
suma vale 0 pero “nos llevamos 1” para la suma de los dígitos “di-1 + bi-1 ”

Ejemplo: El número binario -1.01011000001110010101..... ⋅ 27 (que era la


expresión binaria en coma flotante del número decimal –172.112) puede
aproximarse con 12 dígitos decimales en la mantisa (hasta d11) obtenida por
truncado mediante el número: z =-1.01011000001 ⋅ 27 (que se corresponde
realmente con –172.0625)

Si en lugar de truncar se redondea, puesto que d12 = 1, se tendrá el número:


z = -(1.0101100 0001+0.00000000001) ⋅ 27= -1.01011000010 ⋅ 27

que se corresponde en realidad con el número –172.125.


Ocupémonos en primer lugar de acotar el error cometido al aproximar un


número binario genérico por otro en el que la mantisa sólo tiene s dígitos
decimales.

Propiedad 4.
Siendo z = ± 1.d1d2...ds ⋅ 2e el número binario en coma flotante con s decimales
de mantisa que aproxima mediante la técnica de truncado al número
binario z = ± 1.d1d2...dsds+1... ⋅ 2e, se verifica que:

| Ea | = z − z ≤ 2e −s

z−z
E= ≤ 2− s ∀z ≠ 0
z
Demostración:
Sea z = ± 1.d1d2....dsds+1.... ⋅ 2e y sea z = ± 1.d1d2....ds ⋅ 2e . Se tiene que:

| Ea | = z − z = 1.d1d2 ....ds ds+1.... − 1.d1d2 ....ds ⋅ 2e = 0.ds+1..... ⋅ 2− s ⋅ 2e =

34
Programación y Métodos Numéricos Errores de redondeo

= 0.ds+1..... ⋅ 2e −s ≤ 2e −s
y, si z ≠ 0 :
z−z 2e − s 2− s
E= ≤ = ≤ 2− s
z 1.d1d2 ...ds ds+1... ⋅ 2 e
1.d1d2 ...ds ds+1...
c.q.d.

Propiedad 5.
Siendo z la representación binaria en coma flotante con s decimales de
mantisa obtenida por redondeo del número binario z = ± 1.d1d2...dsds+1... ⋅ 2e, se
verifica que:
1
|Ea| = z − z ≤ ⋅ 2e −s = 2e−s−1
2

z−z 1 −s
E= ≤ ⋅ 2 = 2− s−1 ∀z ≠ 0
z 2

Demostración:
a) Examinemos en primer lugar los errores absolutos. Y consideremos primero
el caso en que z = ± 1.d1d2....dsds+1.... ⋅ 2e , es un número tal que el dígito ds+1
de su mantisa verifica que ds+1 = 0. En esta situación z = ± 1.d1d2....ds ⋅ 2e por
lo que:
|Ea| = z − z = 1.d1d2 ....ds 0ds+ 2 .... − 1.d1d2 ....ds ⋅ 2e = 0.0ds + 2 .... ⋅ 2− s ⋅ 2e =

= 0.ds+ 2 ..... ⋅ 2−1 ⋅ 2e −s ≤ 2e−s−1

Si ahora se contempla el caso en que el dígito ds+1 es tal que ds+1=1 se


tiene que:
|Ea| = z − z = (1.d1d2 ....ds + 0.000...1) − 1.d1d2 ....ds 1ds+ 2 ... ⋅ 2e =

= (1 − 0.1ds+ 2 ...) ⋅ 2− s ⋅ 2e = 1 − 0.1 − 0.0ds+ 2 ... ⋅ 2e−s = 0.1 − 0.0ds+ 2 ... ⋅ 2e−s ≤

≤ 0.1 ⋅ 2e−s = 2−1 ⋅ 2e−s = 2e−s−1

b) Teniendo en cuenta la acotación de los errores absolutos, para el error


relativo se tiene que, si z ≠ 0 :

35
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

z−z 2e−s−1 2− s−1


E= ≤ = ≤ 2− s−1
z 1.d1d2 ...ds ds +1... ⋅ 2 e
1.d1d2 ...ds ds+1...
c.q.d.

NOTA: Las propiedades anteriores demuestran que la cota de error relativo es


independiente de la magnitud del número z que se aproxima. No obstante la
cota del error absoluto es menor al aproximar números “pequeños” en valor
absoluto que números “grandes” en valor absoluto (puesto que el exponente de
los primeros es menor que el de los segundos).

Ejercicio propuesto 9º: Utilizando la base de numeración β (y suponiendo


que β es un número par) las mantisas pueden aproximarse también por
truncado (eligiendo los s primeros dígitos) o por redondeo esto es tomando
como aproximación del número z = ± 0.d1....dsds+1.... ⋅ βe el número:
⎧ β
⎪⎪ ±0.d1d2 ...ds ⋅ βe si ds+1 <
z=⎨ 2
⎪±(0.d d ...d + 0.00...1) ⋅ βe β
si ds+1 ≥
⎪⎩ 1 2 s
2

Demuestra que si se utiliza la base de numeración β en coma flotante y


se aproximan los números con mantisas de s dígitos decimales, el error relativo
utilizando la técnica de truncado está acotado por β1−s mientras que si se utiliza
1
la técnica de redondeo esta cota es ⋅ β1−s .
2

3.5. La unidad de redondeo en coma flotante binaria.


Según se acaba de demostrar en las dos propiedades anteriores, se verifica
que siendo z un número binario y siendo z su aproximación en coma flotante
con s dígitos decimales de mantisa:
z−z ⎧ 2− s truncando ⎫
∀z ≠ 0 : ≤ u = ⎨ − s−1 ⎬
z ⎩2 redondeando ⎭

A este valor u se le denomina unidad de redondeo del sistema en coma


flotante binario con s dígitos decimales de mantisa.Para cualquier número
binario se verifica de esta forma que:
z = z ⋅ (1 + δ) con δ ≤ u

36
Programación y Métodos Numéricos Errores de redondeo

3.6. La codificación binaria de números en equipos de cálculo.


Como ya se dijo anteriormente las calculadoras y ordenadores que
trabajan en aritmética binaria destinan un número finito de bits (componentes
que pueden tener el estado “0” o el estado “1”) para codificar los números.
Examinemos con mayor detalle el proceso que se sigue para esta codificación.

3.6.1. Codificación binaria de números enteros.


Si se trata de codificar números enteros se asignan (s+1) bits para
almacenar la expresión binaria del número, reservando el primero de dichos
bits para almacenar el signo del número (estando normalizado que el estado
“0” en el primer bit representa signo positivo y el estado “1” representa signo
negativo)10. De esta forma, al tener (s+1) bits para codificar el valor absoluto
del número, el mayor entero positivo que se puede codificar es:

M = 1.2s-1+1.2s-1+1.2s-3+……+1.22+1.21+1.20 =2s–1

El menor entero que se podría representar sería m = - M = -2s+1. No


obstante según ese criterio el número entero 0 se podría representar de dos
formas posibles: 000.....0 y 100....0 (es decir +0 y -0). Ello se evita
asignando la representación que correspondería a +0 al número 2s. Con ello el
rango de valores enteros que permite manipular una máquina con aritmética
binaria entera de s bits es (–2s+1) a 2s.

Ejemplo: Con 8 bits para representar números enteros se pueden representar


todos los enteros mayores o iguales que –127 y menores o iguales que 128.

Con 32 bits este rango se amplia pudiéndose representar todos los


enteros mayores o iguales que –2147483647 y menores o iguales que
2147483648.

NOTA: La realidad es un poco más complicada pues las máquinas de cálculo


suelen utilizar la técnica de complemento a 1 que consiste en, manteniendo el
criterio de los signos, transformar los bits con estado “0” en bits con estado “1”
y viceversa. Los motivos de ello exceden los objetivos de este tema (estando
relacionados con la fiabilidad de los sistemas de almacenamiento y transmisión
de la información) y por ello nos limitaremos a considerar como codificación
binaria de números enteros lo que se acaba de exponer. Ello no introduce

10
Son valores frecuentes para el número de bits en este caso s = 8, s = 16 ó s = 32.

37
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

restricciones cualitativas sobre cómo se originan y propagan los errores de


redondeo al operar con máquinas de cálculo, que es el objetivo principal que
perseguimos.

3.6.2. Codificación binaria de números reales en coma flotante.


Para codificar los números reales no nulos expresados en coma flotante
binaria, ± 1.d1d2d3....ds-1dsds+1... ⋅ 2e, las máquinas de calcular destinan (s+1)
bits para almacenar la mantisa y (t+1) bits para almacenar el exponente11.

Dado que la mantisa de todos los reales no nulos comienza por un “1” este
dígito no se almacena y los (s+1) bits de la mantisa se destinan para:
• El primer bit almacena el indicador del signo (un 0 si es positivo y un
1 si es negativo).

• Los s bits siguientes almacenan los valores de los dígitos decimales


binarios de la mantisa: d1, d2, ..., ds.

En cuanto a los (t+1) bits del exponente se destinan a almacenar la


expresión binaria del exponente. Puesto que el exponente es un número entero
podría codificarse según lo descrito en el apartado anterior. No obstante las
máquinas de cálculo científico utilizan exponentes escalados para evitar la
duplicidad en la representación de exponentes nulos (al poderse representar
como +0 y como –0). Este procedimiento consiste en representar no ya el
exponente “e” que correspondería al número que se manipula sino el entero
“e+n”, donde n se toma de forma que se asegure la inexistencia de números
negativos a codificar como exponentes y se emplean los (t+1) bits del
exponente para codificar “e+n”.

Ejemplo:
Si se utilizan (t+1) = 8 bits para codificar los exponentes y se toma como
factor de escala n = 27 – 1 = 127 un código de exponente que fuese de la
forma 0000000 correspondería en base 10 al número entero 0 y por tanto al
exponente m = emin = 0 – 127 = -127. Análogamente un código de exponente
que fuese de la forma 11111111 correspondería al entero 255 y por tanto al
exponente M = emax = 255 – 127 = 128. El código 01111111 se correspondería
en base 10 con el número entero 127 y, según la técnica de escalado, con el

11
Son valores habituales s = 23 y t = 7 (simple precisión con palabras de 32 bits) o s = 52 y t = 10 (doble
precisión con palabras de 64 bits).

38
Programación y Métodos Numéricos Errores de redondeo

exponente nulo ya que enulo = 127 – 127 = 0. Se observa de esta forma que los
exponentes de los números codificados con t = 8 bits y factor de escala n =
127 pueden variar entre los valores m = –127 y M = 128.

NOTA: No todos los fabricantes de máquinas de cálculo utilizan el mismo factor
de escala en el escalado de los exponentes. Utilizando (t+1) bits para la
representación binaria de los exponentes es frecuente considerar n = 2t-1 ó n =
2t). Es más, algunos fabricantes introducen otras manipulaciones en este
proceso de escalado vinculadas al tratamiento de las mantisas que modifican el
rango de valores que se permite tomar a los exponentes. Ello conduce a que
con un mismo número de bits para la codificación del exponente distintas
máquinas tengan rangos de variación de exponentes “ligeramente” diferentes.
Por ejemplo, con (t+1) = 8 bits para codificar exponentes las máquinas VAX
permiten codificar números con exponentes variando en el rango mVAX = -128 a
MVAX = 127 mientras que el estándar IEEE (el más extendido en la actualidad)
tiene el rango mIEEE = -125 a MIEEE = 128.

Habida cuenta de la diversidad de criterios de los fabricantes y dado


que el proceso de escalar los exponentes no será cualitativamente significativo
en el hecho de que se produzcan errores de redondeo al codificar números, en
estos apuntes se ha optado por realizar una exposición más sencilla
considerando que los exponentes se almacenan en (t+1) bits, de forma análoga
a lo descrito para la codificación de números enteros, reservando el primero de
los bits disponibles para el signo y los t restantes para almacenar el código
binario del valor absoluto del exponente. Es más, aun a sabiendas de que no
es lo mejor, por sencillez permitiremos la duplicidad del exponente 0 y
consideraremos en los ejemplos que m = 1- 2t y M = 2t – 1. Fácilmente podrá
adaptarse cuanto se diga a otros valores del rango de exponentes.

Ejemplo:
Con un sistema de (s+1) = 24 bits para almacenar la mantisa y de
(t+1) = 8 bits para el exponente, el número –1024.37 se almacenaría como
sigue:
Expresión en coma flotante del número:
- 1.000000000001011110101110 ... ⋅ 210

Codificación de la mantisa

39
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

1 00000000000101111010111
Expresión binaria del exponente:
+ 10 ≡ +(1⋅ 23 + 0 ⋅ 22 + 1⋅ 21 + 0 ⋅ 20 ) ↔ +1010

Codificación del número:

0 0001010 1 00000000000101111010111

signo Valor absoluto signo Valor absoluto

EXPONENTE MANTISA •

Si se disponen de (s+1) bits para almacenar la mantisa (el primero para


su signo y los s restantes para su valor absoluto), el número codificado positivo
mayor es:
C = (1+1.2-1 + 1.2-2 + ....+ 1.2-s) ⋅ 2M = 2M-s ⋅ (2(s+1)-1)

Obviamente el menor número codificado es –C.

Los números reales no nulos codificados con menor valor absoluto que
se pueden codificar serían: c = ± (1.00....0) ⋅ 2m = ± 2m

En el proceso de codificación descrito, al no guardarse la parte entera de


la mantisa, no podría codificarse el número real 0. cuya representación en base
2 es 0.000000..... ⋅ 2e . Las técnicas de tratamiento de la mantisa nula que
corresponde al real “0.” son variadas y por ello, sin entrar en detalles,
admitiremos que este valor se codifica con un código adicional “especial”.

NOTA: Adviértase que los valores de C y c que se acaban de obtener


corresponden a los números codificados no nulos de mayor y menor valor
absoluto. Pero no son los números reales de mayor y menor valor absoluto que
pueden ser aproximados. Estos se determinarán en función de la técnica de
aproximación utilizada (redondeo o truncado). En el quinto ejercicio resuelto de
estos apuntes puede encontrarse, sobre un ejemplo concreto, cómo se podrían
definir estas cotas utilizando la técnica de redondeo.

40
Programación y Métodos Numéricos Errores de redondeo

La unidad de redondeo de un sistema de codificación como el descrito


(véase el apartado 3.5. considerando que sólo se almacenan s dígitos
decimales de la mantisa) está dada por:

⎧ 2− s si se aproxima por truncado


u = ⎨ − s−1
⎩2 si se aproxima por redondeo
Ejemplos:
1º) Si consideramos (t+1) = 8 y si se destinara un bit para almacenar el signo
del exponente, quedarían 7 bits para almacenar el valor absoluto de éste. Por
ello el mayor exponente que se podría almacenar sería:
M = +(1 ⋅ 26 + 1 ⋅ 25 + 1 ⋅ 24 + 1 ⋅ 23 + 1 ⋅ 22 + 1 ⋅ 21 + 1 ⋅ 20) = +(27 – 1) = +127
y el menor: m = -127.

Si además (s+1) = 24 (23 bits para el valor absoluto de la mantisa y un


bit para su signo), el mayor número codificado tiene el valor:

C = +(1+1 ⋅ 2-1 + 1 ⋅ 2-2 + 1 ⋅ 2-3 + ...... + 1 ⋅ 2-23) ⋅ 2127 = 2104 ⋅ (224-1)


(del orden de 3 ⋅ 1038)

y el menor será –C.

El número codificado estrictamente positivo de menor valor absoluto es:

c = 1 ⋅ 2-127 (del orden de 5 ⋅ 10-39)


y el negativo será –c.

La unidad de redondeo de este sistema de codificación sería:

Si se aproxima por truncado: u = 2-23 (del orden de 1 ⋅ 10-7)


Si se aproxima por redondeo: u = 2-24 (del orden de 6 ⋅ 10-8)

2º) Si consideramos (t+1) = 11 y si se destinara un bit para almacenar el signo


del exponente, quedarían 10 bits para almacenar el valor absoluto de éste. Por
ello el mayor exponente que se podría codificar sería:

M = +(1 ⋅ 29 + 1 ⋅ 28 + 1 ⋅ 27 +.... + 1 ⋅ 22 + 1 ⋅ 21 + 1 ⋅ 20) = +(210 – 1) = +1023

y el menor: m = -1023.

41
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Si además (s+1) = 53, (52 bits para el valor absoluto de la mantisa y un


bit para su signo) el mayor número codificado es:

C = +(1+1 ⋅ 2-1 + 1 ⋅ 2-2 + 1 ⋅ 2-3 + ...... + 1 ⋅ 2-52) ⋅ 21023 (del orden de 1 ⋅ 10308)
y el menor será –C.

El número codificado positivo de menor valor absoluto es:

c = 1 ⋅ 2-1023 (del orden de 1 ⋅ 10-308)


y el negativo será –c.

La unidad de redondeo de este sistema de codificación sería:

Si se aproxima por truncado: u = 2-52 = (del orden de 2.2 ⋅ 10-16)


Si se aproxima por redondeo: u = 2-53 (del orden de 1.1 ⋅ 10-16)

NOTA: Nuevamente conviene insistir en que las máquinas existentes, aunque


se adaptan en líneas generales a lo anteriormente expuesto, introducen
algunas técnicas que modifican los valores anteriores. Como ya se señaló el
responsable de estas modificaciones es el número 0 tanto en el escalado de
los exponentes para evitar la duplicidad del código para el exponente nulo, así
como en el tratamiento de la mantisa nula para reservar un código que permita
representar al real nulo. Ello hace que las cotas de los números manipulados
no sean exactamente las que se obtuvieron en los ejemplos precedentes. En
concreto el estándar recogido en la normativa IEEE por el que se rigen la
mayor parte (no todos) de los fabricantes de ordenadores opta por la
aproximación de redondeo y contempla los sistemas de codificación en binario
siguientes:
Bits de Bits de
Mantisa Exponente M m u
Simple precisión 24 8 128 -125 ∼ 6 ⋅ 10−8
Doble precisión 53 11 1024 -1021 ∼ 1.1⋅ 10 −16

Ejercicio propuesto 10º: Obtén la expresión codificada en coma flotante


binaria del número –14527.897123, suponiendo que se destinan 13 bits para
almacenar el exponente (el primero para el signo) y 19 bits para almacenar la

42
Programación y Métodos Numéricos Errores de redondeo

mantisa (el primero de ellos para su signo). Obtén la expresión pedida tanto
mediante truncado como mediante redondeo. Determina además el valor de la
unidad de redondeo de tal sistema de codificación, el valor en base 10 del
mayor número número codificado así como el del menor positivo y el del menor
negativo.

3.7. Los “números máquina” binarios.


En un sistema de codificación en coma flotante binaria como el que se acaba
de describir, utilizándose s bits para los dígitos decimales de la mantisa y en el
que el exponente pueda variar entre los valores enteros m y M sólo se pueden
codificar sin error los números reales binarios de la forma:
±1.d1d2 ....ds−1ds ⋅ 2e m≤e≤M di ∈ {0,1} (i = 1,...,s)

Estos números expresados en base 10 se corresponden con:

( )
± 1 + d1 ⋅ 2−1 + d2 ⋅ 2−2 + .... + ds ⋅ 2− s ⋅ 2e , m ≤ e ≤ M , di ∈ {0,1} (i = 1,...,s)

Al conjunto de estos números, más el 0., se le denomina conjunto de números


máquina y se representa por F(s+1, m, M, 2) donde la letra F es la inicial de
“Flotante” (en referencia al sistema en coma flotante), s12 es el número de
dígitos decimales de las mantisas, m y M son el menor y el mayor exponente
permitido y “2” indica la base de numeración en la que se trabaja.

Ejemplo:
En un sistema de codificación binaria en coma flotante con (s+1) = 3 y
−2 ≤ e ≤ 2 , el conjunto F(3, -2, 2, 2), formado por todos los números que
pueden representarse sin error, es:

± 1.00 ⋅ 2-2 , ± 1.01 ⋅ 2-2 , ± 1.10 ⋅ 2-2 , ± 1.11 ⋅ 2-2 ,


± 1.00 ⋅ 2-1 , ± 1.01 ⋅ 2-1 , ± 1.10 ⋅ 2-1 , ± 1.11 ⋅ 2-1 ,
± 1.00 ⋅ 20 , ± 1.01 ⋅ 20 , ± 1.10 ⋅ 20 , ± 1.11 ⋅ 20 ,
± 1.00 ⋅ 21 , ± 1.01 ⋅ 21 , ± 1.10 ⋅ 21 , ± 1.11 ⋅ 21 ,
± 1.00 ⋅ 22 , ± 1.01 ⋅ 22 , ± 1.10 ⋅ 22 , ± 1.11 ⋅ 22 ,
+ 0.00.2-2

12
Obsérvese que el sistema lo hemos representado usando “(s+1)” en lugar de “s”. Ello es
debido a que, como se explicó anteriormente, en las máquinas de cálculo se almacenan los s
dígitos decimales de la mantisa más su signo ocupándose así (s+1) posiciones elementales de
memoria (bits).

43
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Es decir, sólo 41 números reales pueden ser representados sin error en


este sistema. Estos números, en base 10 son:

F(3, -2, 2, 2) = { 0., ± (2-2), ± (2-2 + 2-4), ± (2-2 + 2-3), ± (2-2 + 2-3 +2-4),
± (2-1), ± (2-1 + 2-3), ± (2-1 + 2-2), ± (2-1 + 2-2 +2-3),
± (20), ± (20 + 2-2), ± (20 + 2-1), ± (20 + 2-1 +2-2),
± (21), ± (21 + 2-1), ± (21 + 20), ± (21 + 20 +2-1),
± (22), ± (22 + 20), ± (20 + 21), ± (22 + 21 +20) } =

= {0., ± 0.25, ± 0.3125, ± 0.375, ± 0.4375,


± 0.5, ± 0.625, ± 0.75, ± 0.875,
± 1.0, ± 1.25, ± 1.5, ± 1.75,
± 2., ± 2.5, ± 3., ± 3.5
± 4., ± 5., ± 6. ± 7.}

Propiedad 6.
El conjunto de números máquina F(s+1, m, M, 2) está formado por:

2(s+1) ⋅ (M-m+1) + 1
números reales distintos.

Demostración:
El número de mantisas que pueden obtenerse combinando s dígitos
decimales que sólo pueden tomar los valores 0 ó 1 es 2s. Como cada mantisa
puede ir precedida por el signo “+” o por el signo “–“, habrá 2(s+1) mantisas
distintas. Como a su vez existen (M – m + 1) exponentes distintos, se podrán
formar 2(s+1) ⋅ ( M-m+1) números no nulos. A ellos se les debe añadir el número
0. para obtener el resultado dado en el enunciado. c.q.d.

Propiedad 7.
El número máquina mayor de F(s+1, m, M, 2) es: C = 2M-s ⋅ (2(s+1)-1). El
menor número máquina de F(s+1, m, M, 2) es –C.

Demostración:
El número máquina mayor está dado en binario por: 1.111...1⋅ 2M que
se corresponde con el número en base 10 dado por:

( )
C = 1 + 2−1 + 2−2 + .... + 2− s ⋅ 2M = (2s+....+20) ⋅ 2M-s

44
Programación y Métodos Numéricos Errores de redondeo

de donde podemos concluir que:

C = 2M-s ⋅ (2(s+1)-1).

Obviamente, el número menor será –C.


c.q.d.

Propiedad 8.
El número máquina estrictamente positivo de menor valor absoluto en el
sistema de codificación F(s+1, m, M, 2) es c = 2m. El número máquina
estrictamente negativo de menor valor absoluto en el sistema F(s, m, M, 2)
es –c.

Demostración:
El menor número máquina estrictamente positivo será 1.0...0 ⋅ 2m que en
base 10 se corresponde con el número:

c = 2m

Obviamente el número estrictamente negativo de menor valor absoluto será –c.


c.q.d.

Ejemplo:
En el ejemplo antes desarrollado con (s+1) = 3, m = -2, M = 2 puede
comprobarse que:

• El conjunto de números máquina está formado por


23 ⋅ (2 – (-2) + 1) + 1 = 8 ⋅ 5 + 1 = 41 números

• El número mayor de F(3, -2, 2, 2) es:

C = 22-2 ⋅ (23-1) = 1 ⋅ ( 8 − 1) = 7
Y el número menor es –7.

• El número estrictamente positivo de menor valor absoluto es:


c = 2-2 = 0.25
y el estrictamente negativo de menor valor absoluto es –0.25.

45
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Los 2(s+1) ⋅ (M-m+1) + 1 números máquina de F(s+1, m, M, 2) pertenecen


al intervalo [-C, N]. Pero no se encuentran igualmente espaciados. En efecto, la
siguiente propiedad establece la distancia entre números máquina positivos
consecutivos y fácilmente puede extenderse para los números negativos.

Propiedad 9.
Sea F(s+1, m, M, 2) el conjunto de números máquina formados con s bits para
almacenar la mantisa (el primero de ellos para el signo de la misma) y con
exponentes pertenecientes a [m, M]. La distancia entre un número máquina
con exponente “e” y el menor número máquina que es mayor que él, está dada
por 2e-s.

Demostración:
Sea ni un número máquina positivo y tal que su exponente sea “e”. El
menor número máquina ni+1 positivo superior a ni se obtendrá mediante:

ni+1 = ni + 0.0....01⋅ 2e

donde el dígito “1” de la mantisa del segundo sumando ocupa la posición del
decimal s. Por tanto:
|ni+1 – ni| = 0.0....01⋅ 2e = 1⋅ 2− s ⋅ 2e = 2e−s
c.q.d.

Ejemplo:
En el sistema F(3, -2, 2, 2) detallado en ejemplos anteriores fácilmente
se comprueba que la distancia entre números máquina consecutivos del
subconjunto:
{1.00 ⋅ 2-2 , 1.01 ⋅ 2-2 , 1.10 ⋅ 2-2 , 1.11 ⋅ 2-2 , 1.00 ⋅ 2-1} ≡
≡ { 0.25, 0.3125, 0.375, 0.4375, 0.5 }

es 2-2-s+1 = 2-2-3+1 = 2-4 = 0.0625.

La figura siguiente recoge la distribución en [-7, 7] de todos los números


máquina de F(3, -2, 2, 2).

46
Programación y Métodos Numéricos Errores de redondeo

Puede observarse que los números máquina de menor valor absoluto


están más próximos entre ellos que los de mayor valor absoluto. Ello, además
de ilustrar la propiedad 9ª, justifica gráficamente el hecho, demostrado
anteriormente en las propiedades 4ª y 5ª, de que la cota del error absoluto que
se cometerá al aproximar un número real de “alto” valor absoluto por un
número máquina sea mayor que la que se comete al trabajar con números de
“pequeño” valor absoluto.

Si se intenta codificar un número con valor absoluto tal que su


aproximación (por redondeo o por truncado) conduce a un número mayor que
C (máximo número máquina del sistema F(s+1, m, M, 2)), se produce un error
denominado error de overflow.

Propiedad 10.
Si los números reales se aproximan mediante redondeo por un número
máquina del sistema F(s+1, m, M, 2), se produce error de overflow para todo
número real con valor absoluto mayor o igual que: 2M-s-1 ⋅ (2s+2-1)

Demostración:
Puesto que el mayor número máquina es N = 1.1....1 ⋅ 2M el error de
overflow, aproximando por redondeo, se producirá para todo número real
mayor o igual a aquel cuya expresión binaria en coma flotante tenga los s
primeros dígitos binarios decimales de su mantisa iguales que los de N y el
dígito decimal ds+1 igual a 1 siendo nulos todos los demás dígitos de la mantisa.
Por tanto dicho número será:
( )
20 + 2−1 + 2−2 + .... + 2− s−1 ⋅ 2M = 2M-s-1 ⋅ (2s+2-1)
c.q.d.

47
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Ejemplo:
En el sistema F(3, -2, 2, 2) considerado en ejemplos anteriores, el menor
número real positivo que produce error de overflow (aproximando por
redondeo) es:
22-3 ⋅ (23+1-1) = 2-1 ⋅ (16-1) = 7.5

Comprobémoslo. Para ello expresemos como suma de potencias de 2 este


número:
7.5 = 22 + 21 + 20 + 2-1

lo que nos indica que su expresión binaria en coma flotante será: 1.111 ⋅22

Si se intenta redondear este número con una mantisa formada por 2


dígitos decimales se tendría el número: 1.00 ⋅ 23 que no es un número
máquina de F(3, -2, 2, 2) ya que el exponente sobrepasa el límite
superior permitido ( M = 2).

Sin embargo cualquier número del intervalo [7, 7.5[ tendría el tercer
dígito decimal de su mantisa binaria igual a 0 por lo que sí se redondearía a
1.11 ⋅ 22.

Ejercicio propuesto 11º: Determina el número real positivo a partir del cual se
produce error de overflow en un sistema F(s+1, m, M, 2) si los números reales
se aproximan por números máquina mediante truncado.

En el caso de intentar codificar un número cuyo valor absoluto se


aproxime (ya sea por redondeo o por truncado) por un número inferior a c
(menor número máquina estrictamente positivo del sistema F(s+1, m, M, 2)), o
bien se asimila a 0 o bien se produce un error denominado error de underflow.

Ejercicio propuesto 12º: Determina los mayores números reales positivos


para los que se produciría error de underflow (o asimilación a 0.) en un sistema
F(s+1, m, M, 2)
a) si los números reales se aproximan por números máquina mediante
truncado

b) si los números reales se aproximan por números máquina mediante


redondeo.

48
Programación y Métodos Numéricos Errores de redondeo

4. PROPAGACIÓN DE ERRORES
Los errores que se cometen en la representación de los datos numéricos
con los que se quiera inicializar un algoritmo (por ejemplo al redondear o
truncar los números π , e, 2/3, ...) pueden amplificarse al redondear los
resultados de las operaciones aritméticas que a partir de ellos se realicen en el
proceso de cálculo (véanse en este sentido los ejemplos de motivación que se
incluyeron en el primer apartado de este tema). Si se quiere analizar
rigurosamente la forma en que se propagan los errores es necesario trabajar
en la base numérica con la que opere la máquina de cálculo concreta
(habitualmente 2, 8 ó 16). No obstante resulta más sencillo para quien se
enfrenta por primera vez a este tipo de análisis poner de manifiesto estos
aspectos trabajando en base 10 y, dado que ello no limita la validez cualitativa
de los resultados que se obtengan, será en la base 10 en la que ilustraremos el
efecto de las operaciones aritméticas sobre los errores de redondeo.

En este sentido consideraremos los números máquina decimales de un


cierto sistema de codificación F(s+1, m, M, 10), es decir todos los números de
la forma:
± 0.d1d2...ds ⋅ 10e

donde di ∈ {0,1,2,3,4,5,6,7,8,9} (i = 1, ..., s) , d1 ≠ 0 y m ≤ e ≤M.

Los ordenadores más comunes realizan las operaciones aritméticas


entre números máquina obteniendo los resultados con mantisas de (2 ⋅ s)
dígitos decimales y, tras ello, aproximan dichos resultados (ya sea por
redondeo o por truncado) por alguno de los números máquina de su sistema
(es decir con sólo s dígitos decimales en la mantisa). En esta aproximación del
resultado se introduce un error adicional al que ya tuvieran los números que se
operan. Debe resaltarse por tanto que en general aparecerá un error al realizar
una operación aritmética aun en el caso de operar con dos números que
admitan una representación exacta como números máquina.

Ejemplo:
En un sistema F(5,-5, 5, 10) son números (decimales) máquina los
números 0.9713 ⋅ 10-2 y -0.2345 ⋅ 10-2 . El producto (exacto) de estos dos
números sería: -0.22776985 ⋅10 −4 . La mantisa de este número tiene 8 dígitos
decimales y por ello se redondearía al número máquina: -0.2278 ⋅10−4 ,

49
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

cometiéndose un error en el resultado de la multiplicación de los números


aunque se ha partido, en este caso, de números máquina exactos.

4.1. Propagación de errores trabajando con números máquina.


Analicemos en primer lugar el error que se produce en las distintas operaciones
aritméticas entre números máquina.

A) Multiplicación y división de números máquina.


El proceso para multiplicar dos números máquina consiste en realizar los
siguientes pasos:

a) Multiplicar las mantisas de ambos números (cada una de ellas con s


dígitos decimales) almacenando su resultado exacto en un número
con (2 ⋅ s) dígitos decimales de mantisa.

b) Sumar los exponentes de ambos números y, en su caso, ajustar el


exponente resultante desplazando el punto decimal de la mantisa.

c) Aproximar el número así obtenido por un número máquina (con s


decimales en su mantisa) ya sea por truncado ya sea por redondeo.

En lo que sigue denotaremos por a ⋅ b el valor exacto del producto de dos


números máquina y por a : b al número máquina que aproxima dicho valor.

Ejemplo:
Consideremos un sistema de codificación F(5, -99, 99, 10) y los números
máquina de este sistema 0.2577 ⋅ 10-3 y 0.1983 ⋅ 101. El producto de estos
números se estimaría:

a) Multiplicando mantisas:
0.2577 ⋅ 0.1983 = 0.05110191 = 0.51101910 ⋅10 −1

b) Sumando exponentes: -3 + 1 = -2, y ajustando el resultado por los


desplazamientos del punto decimal de la mantisa: -2 + (-1) = -3.

c) Aproximando 0.51101910 ⋅ 10-3 por el número máquina: 0.5110 ⋅10−3 .


50
Programación y Métodos Numéricos Errores de redondeo

En la multiplicación de dos números máquina se comete un error δ que


estará acotado, según las propiedades 1ª y 2ª por la unidad de redondeo “u”
(101-s si se aproxima el resultado por truncado o (1/2).101-s si se hace mediante
redondeo). Denotando por “a” y “b” a dos números máquina del sistema de
codificación F(s, m, M, 10) se puede expresar lo anterior mediante:

a : b = a ⋅ b ⋅ (1 + δ1 )

donde δ1 representa el error relativo cometido que verificará: δ1 ≤ u .

Si el número máquina obtenido se vuelve a multiplicar por otro número


máquina “c” se tendrá que:

(a : b) : c = ( a ⋅ b ⋅ (1 + δ1 ) ) ⋅ c ⋅ (1 + δ2 ) = a ⋅ b ⋅ c ⋅ (1 + δ1 ) ⋅ (1 + δ2 ) =
= a ⋅ b ⋅ c ⋅ (1 + δ1 + δ2 + δ1 ⋅ δ2 )

Dado que, en los sistemas de números máquina que se utilizan en los


ordenadores, los errores producidos en las aproximaciones de los números
son “pequeños” (inferiores a la unidad de error de redondeo que es del orden
de 10-8 o menor) una buena aproximación del resultado anterior es:

(a : b) : c ≈ a ⋅ b ⋅ c ⋅ (1 + δ1 + δ2 )

Ello nos indica que los errores de sucesivas multiplicaciones se


acumulan aditivamente.

Ejemplo:
Trabajemos, redondeando, en el sistema de codificación F(5, -99, 99,
10) y consideremos los números máquina: a = 0.1234, b = 0.4321 y c =
0.6311. Multiplicando a y b se tiene que:
a ⋅ b = 0.53321140 ⋅ 10-1
por lo que:
a : b = 0.5332 ⋅ 10 −1
cometiéndose un error relativo en esta primera multiplicación:

(a ⋅ b) − (a : b)
δ1 = = 0.2138 ⋅ 10 −4
(a ⋅ b)

51
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Multiplicando ahora: (a : b) ⋅ c = 0.33650252 ⋅ 10 −1 se tiene que:

( a : b ) : c = 0.3365 ⋅ 10−1
cometiéndose en esta segunda multiplicación un error relativo:

(a : b) ⋅ c − (a : b) : c
δ2 = = 0.7489 ⋅ 10 −5
(a : b) ⋅ c

El error total en las dos operaciones puede ser estimado entonces


mediante:
δ1 + δ2 = 0.2887 ⋅ 10−4

En efecto, si se operara exactamente se tiene que:


a ⋅ b ⋅ c = .33650971454 ⋅ 10−1
por lo que:
a ⋅ b ⋅ c − (a : b) : c
= 0.2887.10-4
a ⋅b ⋅c

Obsérvese además que el error relativo total cometido en las dos


multiplicaciones es inferior al doble de la unidad de redondeo: 2.u = 101-s = 10-3.

Generalizando por inducción el razonamiento anterior se tiene la


propiedad siguiente:

Propiedad 11.
Trabajando en un sistema F(s, m, M, 10) y denotando por δi el error relativo
que se comete al aproximar por un número máquina el resultado de multiplicar
el número máquina ( ((a0 : a1 ) : a2 ) : .......ai−1 ) por el número máquina ai, y por
“u” a la unidad de redondeo, se verifica que:

(((a0 : a1 ) : a2 ) : .......an ) = (a0 ⋅ a1 ⋅ a2 ⋅ .... ⋅ an ) ⋅ (1 + δ1 ) ⋅ (1 + δ2 ) ⋅ .... ⋅ (1 + δn ) ≈


≈ (a0 ⋅ a1 ⋅ a2 ⋅ .... ⋅ an ) ⋅ (1 + δ1 + δ2 + .... + δn )
con:
δ1 + δ2 + .... + δn ≤ n ⋅ u
Demostración:
Se deja como ejercicio propuesto al lector.
c.q.d.

52
Programación y Métodos Numéricos Errores de redondeo

En otros términos, como ya se señaló anteriormente, la cota del error


relativo del producto de n números puede aproximarse (despreciando
productos de menor orden) por: (n ⋅ u).

Pero la acumulación de los errores de redondeo relativos no es la única


consecuencia que tiene el operar en un sistema de codificación con las
mantisas limitadas a s dígitos decimales. Otra de las consecuencias es que la
multiplicación pierde la propiedad asociativa, es decir que en general:
( a : b ) : c ≠ a : (b : c )

En efecto, denotando por δab al error relativo producido al evaluar a : b ,


por δbc al producido al evaluar b : c , por δ(ab)c el producido al evaluar
(a : b) : c y por δa(bc ) al producido en el cálculo del número máquina
a : (b : c) se tiene que:
(a : b) : c = (a ⋅ b ⋅ c) ⋅ (1 + δab ) ⋅ (1 + δ(ab)c )
a : (b : c) = (a ⋅ b ⋅ c) ⋅ (1 + δbc ) ⋅ (1 + δa(bc ) )
por lo que:
(a : b) : c (1 + δab ) ⋅ (a + δ(ab)c )
= = 1+ γ
a : (b : c) (1 + δbc ) ⋅ (a + δa(bc ) )

En los sistemas de codificación habituales el valor de γ es “pequeño”


pero aun así, la presencia de este número hace que la propiedad asociativa del
producto entre números máquina sólo se verifique de una forma aproximada.

Ejemplo:
Trabajando en el sistema F(5, -99, 99, 10) consideremos los números
máquina: a = 0.2334, b = 0.8764 y c = 0.1230 ⋅ 10-4. Puede comprobarse que,
utilizando la técnica de redondeo para aproximar los números:

a ⋅ b = 0.20455176 ⇒ a : b = 0.2046

b ⋅ c = 0.107797200 ⋅ 10 −4 ⇒ b : c = 0.1078 ⋅ 10 −4
por lo que:
(a : b) ⋅ c = 0.25165800 ⋅ 10−5 ⇒ (a : b) : c = 0.2517 ⋅ 10 −5

a ⋅ (b : c) = 0.25160520 ⋅ 10−5 ⇒ a : (b : c) = 0.2516 ⋅ 10 −5


produciéndose una diferencia en el último dígito de la mantisa.

53
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Para el caso de la división entre números máquina, en el caso de que el


denominador no sea “muy próximo” a 0., pueden realizarse consideraciones
análogas. El proceso para realizar la división de un número máquina “a” entre
otro número máquina no nulo “b” (ambos de F(s+1, m, M, 10)) consiste en:

a) Dividir las mantisas almacenando momentáneamente el resultado en


otro número máquina con 2.s dígitos decimales en su mantisa.

b) Ajustar los exponentes (sumando el obtenido en el paso anterior al


exponente del número máquina “a” y restando el valor del exponente
del número máquina “b”).

c) Aproximar, si es posible, el número anterior (que tiene 2.s bits en su


mantisa) por un número máquina de F(s+1, m, M, 10).

Obsérvese que, en general, el cociente de las mantisas de los dos


números máquina no puede representarse exactamente con 2.s dígitos
decimales (por ejemplo: 0.2/0.3 tiene infinitos decimales). Esto tampoco
representa un grave problema pues, a efectos de redondear, será el dígito
(s+1) el que deba ser estimado de forma precisa.

Con estas consideraciones, son aplicables a la división de números


máquina (con cociente no nulo) las mismas propiedades y observaciones que
se realizaron para la multiplicación.

En lo que sigue denotaremos por a / b el valor exacto del cociente entre


números máquina y por a ÷ b al número máquina que aproxima dicho valor.

Ejemplo:
Sean los números a = 0.2500 ⋅100 y b = 0.1234 ⋅10 −4 . Ambos son
números máquina del sistema F(5, -99, 99, 10). Se tiene que:
0.2500
Cociente de mantisas (en 8 bits de mantisa): = 0.20259319 ⋅ 101
0.1234
Ajuste de exponentes: 101 ⋅ 100 / 10-4 = 105.
Aproximación (por redondeo) mediante un nuevo número máquina:
a ÷ b = 0.2026 ⋅ 105
El valor exacto de este cociente es: a / b = 0.2025931929 ⋅ 105 por lo que el
error (relativo) que se comete está dado por:

54
Programación y Métodos Numéricos Errores de redondeo

(a / b) − (a ÷ b)
= 0.3360 ⋅ 10 −4
(a / b)

NOTA: Al tratar los errores nos hemos referido a los errores relativos. En este
sentido debe observarse que siendo una estimación de la cota del error relativo
de n productos (o de n divisiones) el valor (n.u), si el resultado de dichas
operaciones es un número de gran valor absoluto, el error absoluto puede ser
también elevado.

B) Sumas y restas de números máquina.


Como se pondrá de manifiesto a continuación las operaciones
aritméticas suma y resta de números máquina pueden tener un
comportamiento mucho peor que la multiplicación y la división. Esto será
especialmente cierto en el caso de sumar números de órdenes de magnitud
muy diferentes o de restar números muy parecidos.

Puesto que la resta a – b puede considerarse como la suma del número


“a” más el número “-b”, en muchos casos nos ocuparemos tan sólo de la
suma. Y siendo “a” y “b” dos números máquina (en base 10), denotaremos por
a ⊕ b al número máquina que aproxima el valor exacto de a+b.La operación de
sumar dos números máquina “a” y “b” se realiza en las siguientes etapas:

a) Ajuste de los exponentes de ambos números al mayor de ellos.


b) Suma de las mantisas y, en su caso, nuevo ajuste de exponentes.
c) Aproximación del resultado por un nuevo número máquina.

Antes de analizar teóricamente cómo se propaga el error, ilustremos


este proceso con algunos ejemplos realizados con números máquina del
sistema F(5, -99, 99, 10) y realizando en todos ellos la aproximación
correspondiente mediante redondeo.

Ejemplos:
1º. Para sumar: a = 0.9874 ⋅101 y b = 0.4325 ⋅101 se procede como sigue:

55
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

a) Ajuste de exponentes: no es necesario pues el exponente de ambos


números es el mismo (101 para ambos).
b) Suma de mantisas y nuevo ajuste de exponentes:
0.9874 ⋅101 + 0.4325 ⋅101 = 1.4199 ⋅101 = 0.14199 ⋅102
c) Aproximación del resultado por un nuevo número máquina:
a ⊕ b = 0.1420 ⋅ 102

Como a + b = 0.14199 ⋅102 , el error relativo producido será:

(a + b) − (a ⊕ b)
= 0.7042 ⋅ 10−4
(a + b)

2º. Para sumar a = 0.9874 ⋅101 y b = 0.4325 ⋅10 −2 se procede como sigue:

a) Ajuste de exponentes: b = 0.0004325 ⋅101


b) Suma de mantisas y, en su caso, nuevo ajuste de exponentes:
0.9874 ⋅101 + 0.0004325 ⋅101 = 0.9878325 ⋅101
c) Aproximación del resultado por un nuevo número máquina:
a ⊕ b = 0.9878 ⋅ 101

Como a + b = 0.9878325 ⋅101 , el error relativo producido será:


(a + b) − (a ⊕ b)
= 0.3290 ⋅ 10−4
(a + b)

3º. Para sumar a = 0.9874 ⋅101 y b = 0.4325 ⋅10 −5 se procede como sigue:

a) Ajuste de exponentes: b = 0.0000004325 ⋅101


b) Suma de mantisas:
0.9874 ⋅101 + 0.0000004325 ⋅101 = 0.9874004325 ⋅101
c) Aproximación del resultado por un nuevo número máquina:
a ⊕ b = 0.9874 ⋅ 101 ( = a)

Como a + b = 0.9874004325 ⋅101 , el error relativo producido será:

(a + b) − (a ⊕ b)
= 0.4380 ⋅ 10−6
(a + b)

56
Programación y Métodos Numéricos Errores de redondeo

El tercero de los ejemplos anteriores pone de manifiesto que si se


suman números con órdenes de magnitud muy dispares, el resultado puede
coincidir con el número mayor. Y en general, en el resultado de una suma de
números con órdenes de magnitud diferentes sólo intervienen los “primeros”
dígitos de la mantisa del número de menor valor absoluto. De esta forma se
están perdiendo dígitos significativos del menor de dichos números. Este hecho
es el que se concreta en la siguiente propiedad.

Propiedad 12.
Sean a y b dos números máquina positivos del sistema F(s+1, m, M, 10) tales
que a > b y sean ea y eb los exponentes de a y b respectivamente. Si se
verifica que (ea – eb – 1) >0 entonces en el número máquina a ⊕ b no
influyen los (ea – eb –1) últimos dígitos de la mantisa del número b.

Demostración:
Basta considerar que en el ajuste de exponentes previo a la suma el
dígito i-ésimo de la mantisa de “b” pasa a la posición i + (ea – eb). Por lo tanto,
una vez ajustado el exponente, el dígito que ocupe la posición (s+1) (que es el
último en influir si el resultado se redondea) será el que inicialmente ocupaba la
posición [s – (ea – eb – 1)].
c.q.d.13

Nótese que este error ( llamado en ocasiones error de pérdida de


significado en uno de los sumandos) en la suma de dos números no es
preocupante pues si se relativiza es un error inferior a la unidad de redondeo
de la máquina. Lo realmente preocupante de este error es su acumulación en
sumas sucesivas. Este hecho puede ilustrarse con el siguiente ejemplo:

Ejemplo:
En el sistema F(5, -99, 99, 10) consideremos el número máquina
a = 0.4000 ⋅101 y sumémosle “n” veces el número b = 0.5000 ⋅ 10-3. Para
sucesivos valores del índice n, la suma exacta tomaría los siguientes valores:

13
La propiedad que acaba de ser demostrada podría precisarse más indicando que el dígito
decimal (s – ea + eb + 1) del número más pequeño, “b”,sólo influye en el proceso de redondeo
(y en el caso de actuar mediante trucado no influye) del resultado.

57
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

n=1 S1 = 0.40005 ⋅101


n=2 S2 = 0.4001 ⋅101
n=3 S3 = 0.40015 ⋅101
n=4 S4 = 0.4002 ⋅101
n=5 S5 = 0.40025 ⋅101
n=6 S6 = 0.4003 ⋅101

Pero, por el contrario, el resultado que se obtendría operando con


números máquina es:
s1 = a ⊕ b = 0.4000 ⋅ 101 ⊕ 0.5000 ⋅ 10 −4 = 0.4000 ⋅ 101
s2 = (a ⊕ b) ⊕ b = 0.4000 ⋅ 101 ⊕ 0.5000 ⋅ 10 −4 = 0.4000 ⋅ 101
s3 = ((a ⊕ b) ⊕ b) ⊕ b = 0.4000 ⋅ 101 ⊕ 0.5000 ⋅ 10 −4 = 0.4000 ⋅ 101
.......
sn = 0.4000 ⋅101

La presencia del error de pérdida de significado hace aconsejable que,
siempre que se pueda, sea conveniente sumar los números máquina
comenzando por los de menor magnitud y terminando por los de mayor
magnitud. Con ello, la acumulación previa de los números menores,
produciendo números mayores, puede contribuir a una mayor precisión del
resultado final.

Ejemplo:
Si repetimos el ejemplo anterior pero sumando n veces los números “b” y
a su resultado añadiéndole el número “a” se tiene que:

n = 1: s1 = b ⊕ a = 0.4000 ⋅ 101
n = 2: s2 = (b ⊕ b) ⊕ a = 0.1000 ⋅ 10−3 ⊕ 0.4000 ⋅ 101 = 0.4001⋅ 101 (= S2)
n = 3: s3 = ((b ⊕ b) ⊕ b) ⊕ a = 0.1500 ⋅ 10−3 ⊕ 0.4000 ⋅ 101 = 0.4001⋅ 101
n = 4: s4 = (((b ⊕ b) ⊕ b) ⊕ b) ⊕ a = 0.2000 ⋅ 10−3 ⊕ 0.4000 ⋅ 101 =
= 0.4002 ⋅ 101 ( = S4)
.......
obteniéndose en general que:
⎧S si n es impar
sn = ⎨ n−1
⎩ Sn si n es par

58
Programación y Métodos Numéricos Errores de redondeo

Ejemplo:9
Una forma de aproximar el valor de la derivada de una función f(x) en un
punto x* consiste en sustituir:
f(x * +h) − f(x*)
f '(x*) = lim
h →0 h
por el cociente incremental:
f(x * +ε) − f(x*)
f '(x*) ≈
ε
donde ε es un valor a seleccionar por el usuario y que cuanto menor sea su
valor absoluto más hará que se parezca la fórmula numérica (cociente
incremental) a la fórmula exacta (la que involucra el cálculo del límite).

Pero uno de los problemas que se plantean al tomar ε muy pequeño es


que si su orden de magnitud es excesivamente pequeño en comparación con
x*, puede darse el caso de que los números máquina que representan a ε y a
x*+ ε -x* no sean los mismos. Para ilustrar este hecho volvamos a situarnos en
el conjunto de números máquina F(5, -99, 99, 10) y tomemos como parámetros
x* = 0.1000 ⋅101 y ε = 0.1500 ⋅ 10−3 . Se tiene entonces que:
x * ⊕ε = 0.1001⋅ 101

con lo que, denotando por ε ' = 0.1000 ⋅ 10−3 , en lugar de utilizar la fórmula
numérica de la derivada en la práctica se estaría utilizando:
f(x * +ε ') − f(x*)
f '(x*) ≈
ε
que es incorrecta para determinar el valor aproximado de una derivada.

Por ejemplo, si se considera la función f(x) = x2 es obvio que f’(1) = 2. La


tabla siguiente recoge los valores que se obtienen aproximando la primera
derivada mediante la fórmula anterior para distintas elecciones del parámetro ε
si se utilizan sólo 4 dígitos significativos en las operaciones:
f(1 + ε ) − f(ε )
ε f’(1)
ε
1 3.000 2.000
-1
10 2.100 2.000
-2
10 2.000 2.000
-3
10 2.000 2.000
-4
10 0.000 2.000
-5
10 0.000 2.000
9
Extraído de L.F. Shampine, R.C. Allen, Jr. & S. Pruess (1997) Fundamentals of Numerical Computing.
Ed. John Wiley & Sons, Inc.

59
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Puede apreciarse que la aproximación mejora al reducir ε hasta una


centésima pero que valores muy pequeños en relación al número de dígitos
manejados (una diezmilésima y menores) conducen a malas aproximaciones
de la derivada.

Una forma de corregir esta deficiencia consiste en, dado un valor de ε


formar un incremento Δ de la forma siguiente:

Δ = ( x * ⊕ε ) ⊕ ( − x*)
y utilizar la fórmula:
f(x * +Δ ) − f(x*)
f '(x*) ≈
Δ

Con los valores antes considerados, la forma de proceder anterior nos


conduciría a Δ = 0.1000 ⋅ 10−3 .

4.2. Propagación de errores operando con números reales.


En el apartado anterior examinamos algunos aspectos sobre la propagación del
error en las operaciones aritméticas cuando se manipulaban números máquina,
esto es números que se podían codificar sin error alguno en el sistema de
coma flotante elegido. Pero dichos números son un subconjunto finito de los
números reales que deberían ser manipulados en la realidad. En otros
términos, y refiriéndonos por ejemplo a la operación “multiplicación”, en el
apartado 4.1. se examinó el error cometido al aproximar el valor exacto del
producto de dos números máquina ( a ⋅ b ) por otro número máquina (denotado
por a b ). Pero, en general, a ⋅ b es a su vez una aproximación de a ⋅ b, en la
que el número real “a” es aproximado por el número máquina a y el número
real “b” es aproximado por b , verificándose que:
a = a ⋅ (1 + δa ) y b = b ⋅ (1 + δb )
por lo que:
a b = a ⋅ b ⋅ (1 + δab ) = a ⋅ b ⋅ (1 + δa ) ⋅ (1 + δb ) ⋅ (1 + δab )

verificándose para los errores relativos que aparecen en la expresión anterior


que:
δa ≤ u , δb ≤ u , δab ≤ u
por lo que:

60
Programación y Métodos Numéricos Errores de redondeo

(1 + δa ) ⋅ (1 + δb ) ⋅ (1 + δab ) =
= 1 + δa + δb + δab + δa ⋅ δb + δa ⋅ δab + δb ⋅ δab + δa ⋅ δb ⋅ δab ≤
≤ 1 + 3.u + 3.u2 + u3

La cota anterior, con los valores habituales de la unidad de redondeo


puede aproximarse por 1 + 3.u, lo que nos permite escribir:
a b ≤ a ⋅ b ⋅ (1 + 3.u)

obteniéndose como “cota aproximada” del error relativo al multiplicar 2 números


reales la expresión (3.u).

En general si se multiplican n números reales el error relativo en el


resultado puede acotarse (aproximadamente) por: (2 ⋅ n – 1) ⋅ u. Este mismo
resultado puede extenderse a la división de números reales (con cocientes no
nulos).

En cuanto a la suma y sustracción de números reales cabría razonar de


forma similar. No obstante, en el caso de la sustracción de números reales
“parecidos” puede aparecer una fuente de error adicional que se conoce con el
nombre de error de cancelación debido a la anulación de los primeros dígitos
de la mantisa del número resultante produciendo como resultado números
“pequeños”. Ilustremos este hecho con un ejemplo.

Ejemplo:
Sea a = 2 / 3 y b = 141 / 212. Se tiene que:

2 141 1
a−b = − = = 0.001572327.... = 0.1572327... ⋅ 10 −2
3 212 636

Trabajando en un sistema de codificación F(6, -99, 99, 10) el valor


anterior se aproximaría por:
a − b = 0.15723 ⋅ 102

Pero en un ordenador no se aproxima el resultado final. Lo que sucede


en realidad es que, en primer lugar se aproximan los números a y b por:
a = 0.66667 ⋅ 100 ( δa = −0.5 ⋅ 10−5 )
b = 0.66509 ⋅ 100 ( δb = 0.6 ⋅ 10−5 )

61
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

y tras ello se realiza (en este caso de forma exacta al ser los números de la
misma magnitud) la operación:
a − b = 0.15800 ⋅ 10−2

( )
La diferencia entre a − b y a − b es: -0.00077 ⋅ 10-2 = -0.77 ⋅ 10-5. Es un

error (absoluto) “pequeño”, del mismo orden que los errores absolutos que se
cometieron al aproximar “a” y “b”. Pero ahora este error absoluto afecta a un
número también “pequeño” en valor absoluto ya que se han anulado ( al
cancelarse en la resta) los primeros dígitos de las mantisas de a y b que eran
iguales. Por ello el error relativo es ahora:

a − b − (a − b) −0.77 ⋅ 10−5
δa −b = = −2
= -0.488 ⋅ 10−2
a−b 0.15723 ⋅ 10

es decir un error relativo de un orden mil veces mayor que los que afectaban a
las aproximaciones de “a” y “b” mediante números máquina.

Para poder tener alguna información sobre la aparición del error de


cancelación es útil poder saber cuantos dígitos de la mantisa se anulan al
restar dos números. A esta cuestión da respuesta la siguiente propiedad:

Propiedad 13.
Sean a y b son dos números positivos expresados en coma flotante decimal y
tales que a > b. Sean además α y γ dos enteros positivos tales que α ≥ γ y:
b
10−α ≤ 1 − < 10−γ
a
En estas condiciones en la operación (a – b) se anulan un número de primeros
dígitos mayor o igual que γ y menor o igual que α .

Demostración:
Sea a = 0.a1a2 ...as ... ⋅ 10p y b = 0.b1b2 ...bs ... ⋅ 10q con p ≥ q. Para restar
ambos números expresemos b en la forma: b = (0.b1b2 ...bs ... ⋅ 10q−p ) ⋅ 10p . Con
ello:

a − b = (0.a1a2 ....as ... − 0.b1b2 ....bs ... ⋅ 10q−p ) ⋅ 10p =


⎛ 0.b1b2 ....bs ... ⋅ 10q ⎞
= 0.a1a2 ....as ... ⋅ ⎜ 1 − ⎟ ⋅ 10
p

⎝ 0.a1a2 ....as .... ⋅ 10


p

62
Programación y Métodos Numéricos Errores de redondeo

Por la hipótesis realizada en el enunciado se tiene que:

⎛ 0.b1b2 ....bs ... ⋅ 10q ⎞


10−α ≤ ⎜ 1 − ⎟ < 10
−γ

⎝ 0.a1a2 ....as ... ⋅ 10


p

por lo que este número, comprendido entre 0 y 1, tendrá al menos los γ


primeros decimales nulos y a lo sumo sus (α − 1) primeros decimales nulos.
⎛ 0.b1b2 ....bs ... ⋅ 10q ⎞
Por tanto 0.a1a2 ....as ... ⋅ ⎜ 1 − ⎟ , siendo a1 ≠ 0, tendrá un
⎝ 0.a1a2 ....as .... ⋅ 10
p

número de decimales nulos que será al menos γ y a lo sumo α .
c.q.d.
Ejemplos:

1º. Consideremos los números a = 2 / 3 y b = 141 / 212. Se tiene que:

⎛ 141 212 ⎞ ⎛ 423 ⎞


⎜ 1 − 2 / 3 ⎟ = ⎜ 1 − 424 ⎟ = 0.002358490...
⎝ ⎠ ⎝ ⎠
verificándose que:

⎛ 141 212 ⎞
0.001 = 10 −3 ≤ ⎜ 1 − ⎟ < 0.01 = 10−2
⎝ 2/3 ⎠
por lo que la propiedad anterior nos indicaría que al restar las mantisas de “a” y
“b” se anularán entre 2 y 3 decimales. En este caso el número de decimales
que se anulan es de 2:

2 141
a−b = − = (0.666666.... − 0.6650943...) ⋅ 100 = 0.0015713... ⋅ 100
3 212

2º. Consideremos los números a = 2 / 3 y b = 0.66599. Se tiene que:

⎛ 0.66599 ⎞
⎜ 1 − 2 / 3 ⎟ = 0.001015...
⎝ ⎠
verificándose que:

⎛ 0.66599 ⎞
0.001 = 10 −3 ≤ ⎜ 1 − ⎟ < 0.01 = 10
−2

⎝ 2 / 3 ⎠

63
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

por lo que la propiedad anterior nos indicaría que al restar las mantisas de “a” y
“b” se anularán entre 1 y 3 decimales. En este caso el número de decimales
que se anulan es de 3:
2
a − b = − 0.66599 = (0.666666.... − 0.66599) ⋅ 100 = 0.000676... ⋅ 100
3

Una forma de expresar el error relativo de la resta de dos números
puede ser la siguiente:
(a − b) − (a − b) (a − a) − (b − b) εa − εb
= =
(a − b) (a − b) (a − b)

donde εa y εb representan los errores absolutos cometidos al representar en el


sistema de codificación F(s, m, M, 10) los reales “a” y “b”.

Si los números “a” y “b” (con a > b > 0) son muy “parecidos” y al
expresarlos en coma flotante tienen el mismo exponente “e”, según se
demostró en las propiedades 1ª y 3ª, se tiene que:

εa ≤ ξ ⋅ 10e−s y εb ≤ ς ⋅ 10e −s

por lo que εa − εb podrá expresarse como: εa − εb ≤ μ ⋅ 10e−s . Por otra parte, la


propiedad 13ª establece el rango de decimales que se anulan al realizar la
operación (a – b). Siendo η este número de decimales que se anulan, se tiene
que, con la notación de la propiedad 12ª, γ ≤ η ≤ α . Por tanto el valor de (a – b)
podrá expresarse como: a – b = σ ⋅ 10e −η .

Los razonamientos anteriores nos conducen a que:

(a − b) − (a − b) ε a − εb μ ⋅ 10e−s μ
= ≤ e −η
= ⋅ 10η−s
(a − b) (a − b) σ ⋅ 10 σ

Esta expresión establece una cota del error relativo en la sustracción de


números positivos. El error realmente cometido puede ser muy inferior al valor
de dicha cota. No obstante cuanto más próximo sean los valores de εa − εb y
de 10e-s más se acercará el error relativo de la sustracción a 10η−s por lo que si
en dicho caso el número de decimales que se anulan η es elevado mayor será
el error relativo de la sustracción en comparación con el error relativo de la
codificación de “a” y “b” (que estaba acotado por 101-s).

64
Programación y Métodos Numéricos Errores de redondeo

Ejemplo:
Sean a = 2/3 y b = 0.66599 y trabajemos en el sistema F(6, -99, 99,
10). Se tiene que:
a = 0.66666666.... ⋅ 100, a = 0.66667 ⋅ 100 , εa = −0.33333 ⋅ 10−5

b = 0.66599 ⋅100 , b = 0.66599 ⋅ 100 , εb = 0.

por lo que: εa − εb = 0.33333 ⋅ 10 −5 .

Por otra parte: a – b = 0.67667 ⋅ 10-3 (se anulan η = 3 decimales). El


error relativo de la sustracción es en este caso:

εa − εb 0.33333 ⋅ 10−5 0.33333


= = ⋅ 103−5 = 0.49260 ⋅ 10−2
(a − b) 0.67667 ⋅ 10 −3 0.67667

siendo la cota que se determinaría con el desarrollo teórico anteriormente


realizado 10-2.

65
Errores de redondeo Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

5. COMENTARIOS SOBRE EL TEMA.

a) Conviene insistir nuevamente en que la realidad en los ordenadores es


más compleja de lo que aquí se ha descrito pues se trabaja en base 2 (o
en base 8 ó 16), se introducen “escalamientos” de exponentes, se
reserva uno de los códigos numéricos para almacenar el número real
nulo, etc.... No obstante, lo que hemos descrito en estos apuntes puede
generalizarse sin grandes dificultades a la realidad de cada máquina
concreta.

b) En la bibliografía sobre este tema (y en concreto en las referencias de


Viaño (1995) y de Shampine et al. (1997)) pueden encontrarse análisis
más extensos sobre la propagación de errores, realizados en bases de
numeración genéricas y combinando diferentes tipos de operaciones
aritméticas.

c) Existen sistemas de computación simbólica que permiten operar con los


números exactos, sin introducir aproximaciones para ellos. El problema
de tales sistemas es que cuando el volumen de cálculo es elevado
acaban produciéndose expresiones excesivamente largas (que pueden
ocupar al escribirlas varias hojas) y que, además de necesitar evaluarlas
y reducirlas a un número finito de decimales en algún momento, pueden
presentar problemas (de almacenamiento y de velocidad) al
manipularlas.

d) Numerosos sistemas de computación numérica existentes en la


actualidad permiten elegir el número de bits con los que se opera (al
menos entre algunas opciones como simple o doble precisión) y de esa
forma controlar el efecto de los errores de redondeo en los cálculos.

e) Es muy aconsejable a la hora de diseñar un proceso de cálculo sobre un


ordenador analizar el orden en el que se van a realizar las distintas
operaciones pues, como se puso de manifiesto en alguno de los
ejemplos antes presentados, ello puede condicionar el error que afecte
al resultado final del proceso.

66
Programación y Métodos Numéricos Errores de redondeo

BIBLIOGRAFÍA
• Gerald, C.F. y Wheatley, P. O. (2000). Análisis numérico con aplicaciones
(6ª edición). Ed. Prentice Hall.

• Henrici, P. (1982). Essentials of Numerical Analysis with pocket calculator


demonstrations. Ed. John Wiley & Sons.

• Kincaid, D. y Cheney, W. (1994). Análisis numérico. Las matemáticas del


cálculo científico. Ed. Addison-Wesley Iberoamericana.

• Sanz-Serna, J. M. (1998). Diez lecciones de Cálculo Numérico. Ed.


Universidad de Valladolid.

• Shampine, L. F., Allen, R. C.,Jr. y Pruess, S. (1997). Fundamentals of


Numerical Computing. Ed. John Wiley & Sons, Inc.

• Stoer, J. y Bulirsch, R. (1993). Introduction to Numerical Analysis (Second


edition). Ed. Springer.

• Viaño, J. M. (1995). Lecciones de Métodos Numéricos. 1.- Introducción


general y análisis de errores. Ed. Tórculo Edicións.

67
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: INTERPOLACIÓN POLINÓMICA


Prof. Carlos Conde Lázaro
Prof. Arturo Hidalgo López
Prof. Alfredo López Benito

Marzo, 2007
ÍNDICE

Pág.

1. INTRODUCCIÓN HISTÓRICA. …………………………………….. 1

2. INTERPOLACIÓN POLINÓMICA DE LAGRANGE. ……………… 13


2.1. La fórmula de interpolación de Lagrange. ………………. 17
2.2. La fórmula del error en la interpolación de Lagrange. … . 25
2.3. La fórmula de interpolación de Newton. ………………… 43
2.4. Interpolación con soportes equidistantes: fórmulas con
diferencias finitas. ………………………………………. 62

3. INTERPOLACIÓN POLINÓMICA DE HERMITE. ……………….. 80


3.1. Interpolación de Hermite de primer orden: la fórmula de
interpolación de Hermite. ………………………………. 84
3.2. Interpolación polinómica de Hermite: caso general. …... 92
3.3. Análisis del error en la interpolación de Hermite. ………. 106
3.4. Interpolación de Hermite: la fórmula de Newton. ……….. 112
3.4.1. Planteamiento. …………………………………… 112
3.4.2. Generalización del concepto de diferencia
dividida. ……………………………………………. 117
3.4.3. La fórmula de Newton para el cálculo del polino-
mio interpolador de Hermite. ……………………. 129
3.4.4. ANEXO: Otra forma de definir las diferencias
divididas con puntos repetidos. …………………. 135

BIBLIOGRAFÍA SOBRE EL TEMA. …………………………………….. 143

i
Programación y Métodos Numéricos Interpolación polinómica

1. Introducción histórica

En numerosos procesos físicos y técnicos debe trabajarse con funciones de las


que tan sólo se conoce su valor (o el de sus derivadas) en un número finito de
puntos –llamado soporte- pero de las que es desconocida la expresión a la
que responden. Una de las maneras más extendidas para operar con dichas
funciones consiste en aproximarlas por otras funciones, de expresión conocida
(y, en la medida de lo posible, fácil de manipular). Una de las formas en que se
puede buscar esta función aproximada consiste en obligar a que la función
aproximadora (o sus derivadas) tome en los puntos del soporte los mismos
valores que la función que se quiere aproximar. En tal caso se dice que se ha
interpolado la función original siendo la función interpoladora aquella que la
aproxima.

Las técnicas de interpolación pueden clasificarse, en una primera subdivisión,


según el tipo de expresiones con las que se busque la función interpoladora.
Así existe la interpolación polinomial o polinómica (en la que las funciones
interpoladoras son polinomios), la interpolación trigonométrica (cuando la
función interpoladora es una combinación de funciones trigonométricas), la
interpolación exponencial (si las funciones interpoladoras son una combinación
de exponenciales), etc.... De entre todas ellas, las más frecuentemente
utilizadas son la interpolación polinómica y, en menor medida, la
trigonométrica. Al estudio de la primera de ellas dedicaremos este tema.

Aun sin el desarrollo de una teoría rigurosa, el uso de la interpolación


polinómica se pierde en la historia de los tiempos. Recordemos por ejemplo

1
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

que numerosos matemáticos griegos calcularon aproximaciones del número π


interpolando el área del círculo entre los valores de las áreas de dos polígonos
regulares de n lados, uno inscrito en la circunferencia perimetral del círculo y el
otro circunscrito a dicha circunferencia. O que en el siglo IX los matemáticos
árabes del califato de Bagdad, sabían resolver ciertas ecuaciones no lineales
mediante el método de regula falsi. En cada iteración de dicho método11,
conocidos dos valores de una función f(xi) y f(xi+1) (tales que f(xi)·f(xi+1) < 0 )
se debe buscar la recta que interpola a f(x) en los puntos (xi, f(xi)) y (xi+1, f(xi+1))
para determinar a continuación el punto en que corta al eje de abscisas,
reduciéndose así el intervalo de incertidumbre en el que se buscará una raíz de
la función f(x).

Pero fue en la misma época en que se fraguó y nació el cálculo infinitesimal en


la que se puede considerar que se consolidaron las técnicas de interpolación
polinómica y, junto a ellas, las de derivación e integración numérica.
Numerosos problemas prácticos, fundamentalmente vinculados al comercio, a
la cartografía y a la navegación, exigían en los siglos XVI y XVII el cálculo de
áreas encerradas bajo curvas o la determinación de tangentes a una curva en
un punto. El primero de dichos problemas, el cálculo de áreas encerradas bajo
tramos de curvas, sólo se sabía resolver en casos de curvas muy concretas12.
Del segundo, que antes de esta época se consideraba sin relación con el
primero, hubo que esperar a que el matemático francés Pierre de Fermat
(Beaumont de Lomagne ,17 de agosto de 1601 – Castres, 12 de enero de 1665)
ideara los primeros métodos suficientemente generales para el cálculo de la
tangente a una curva en un punto.

Y puesto que sí se sabía calcular el área existente bajo líneas poligonales


resulta fácil comprender que el cálculo de las áreas encerradas por otras
curvas más generales se comenzase a realizar aproximando aquellas –
interpolándolas – mediante líneas poligonales compuestas por segmentos
rectilíneos o, a lo sumo, parabólicos.

Como podrá comprobar el lector de los apartados siguientes, las fórmulas y


métodos de interpolación, así como los de integración numérica, llevan en

11
Consúltense los apuntes sobre los métodos de resolución de ecuaciones no lineales.
12
Así por ejemplo, Arquímedes de Siracusa (287 a.C – 212 a.C) encontró una fórmula que
permitía calcular el área encerrada bajo un tramo de parábola.

2
Programación y Métodos Numéricos Interpolación polinómica

muchos casos el nombre de insignes matemáticos de esta época. Aunque no


está muy claro quien fue el primero en utilizar cada una de tales fórmulas (y
revisiones históricas modifican a menudo el papel que cada uno de aquellos
matemáticos jugó en la determinación de cada fórmula) intentaremos en las
líneas siguientes realizar un pequeño esbozo de las contribuciones de los
principales matemáticos que dan nombre a las fórmulas más usuales que se
encuentran en estos temas.

En terminología actual, el problema de interpolación que entonces se abordaba


puede formularse en la forma siguiente:

Dadas (n+1) abscisas x0 < x1 < ....< xn y conocidos los valores f0, f1,
...., fn que en ellas toma una cierta función f(x), determinar un
polinomio pn(x) de grado menor o igual que n cuyo grafo pase por los
(n+1) puntos (x0, f0), (x1, f1), ...., (xn, fn).

Como veremos en apartados posteriores sólo existe un único polinomio pn(x)


que sea solución del problema anterior. Si se denota a tal polinomio por:

pn(x) = α0 + α1·x + α2·x2 + ..... + αn·xn

los (n+1) coeficientes {α0, α1, ...., αn} son la solución del sistema de (n+1)
ecuaciones:
1.α0 + x0·α1 + (x0)2·α2 + ...... + (x0)n·αn = f0
1.α0 + x1·α1 + (x1)2·α2 + ...... + (x1)n·αn = f1
……………………………….. ....
2 n
1.α0 + xn·α1 + (xn) ·α2 + ...... + (xn) ·αn = fn

Pero existen otras formas más cómodas de calcular este polinomio. Una de
ellas es la desarrollada por los matemáticos ingleses del siglo XVII y a la cual
nos referiremos a continuación.

A pesar de no ser cronológicamente el primero, parece obligado comenzar por


el más grande de todos ellos: Sir Isaac Newton (4 de enero de 1643, Woolsthorpe
(Lincolnshire, Inglaterra) - 20 de marzo de 1727, Londres (Inglaterra)). La
descripción de las numerosas aportaciones científicas de este gran matemático
y físico desbordarían con mucho los objetivos de esta breve introducción
histórica. Baste recordar que los trabajos de Newton en mecánica, con la

3
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

formulación de sus tres leyes, proporcionaron un marco físico que continuó


siendo plenamente vigente hasta la aparición de las teorías relativistas a
comienzos del siglo XX (y que el marco newtoniano continúa siendo en el que
se plantean los problemas para las escalas de velocidades pequeñas en
comparación con las de la luz). Recordemos también que los trabajos de
Newton sobre óptica revolucionaron los conocimientos de dicha disciplina. O
que el telescopio diseñado por él permitió ampliar el horizonte de observación
astronómica realizando mediciones mucho más precisas.

En un terreno más puramente matemático, debe comenzarse señalando que


Newton y Leibniz son considerados los creadores, de forma independiente, del
Cálculo Infinitesimal. Junto a ello, son debidos a Newton muchos otros avances
matemáticos: fue el primero en demostrar la fórmula del cálculo de la potencia
n-ésima de un binomio (el teorema binomial), el primero en hacer notar la
relación existente entre la derivación (cálculo de tangentes) y la integración
(cálculo de áreas), ....

Junto a estos méritos, el citar a Newton como el artífice de una fórmula de


interpolación polinómica puede parecer algo bastante insignificante. Pero sin
embargo debe resaltarse que Newton fue un hábil calculista y que en
numerosos desarrollos por él realizados se utilizan técnicas de interpolación.
La idea que subyace en el procedimiento de Newton para calcular el polinomio
interpolador pn(x) que pasa por los puntos (x0, f0), (x1, f1), ...., (xn, fn) consiste en
expresarlo en la forma:
pn(x) = a0 + a1·(x-x0) + a2·(x-x0)·(x-x1) + ..... + an·(x-x0)·(x-x1)····(x-xn-1)

con lo que se pueden calcular los coeficientes {a0 , a1, a2, ..., an} mediante:

pn(x0) = f0 ⇔ a0 = f0 (= f[x0] )

f1 − f0
pn(x1) = f1 ⇔ a0 + a1·(x1-x0) = f1 ⇒ a1 = (= f[x0 , x1])
x1 − x 0

pn(x2) = f2 ⇔ a0 + a1·(x2-x0) + a2·(x2-x0)·(x2-x1) = f2 ⇒

f2 − f1 f −f
− 1 0
x − x1 x1 − x 0
⇒ a2 = 2 (= f[x0, x1, x2] )
x2 − x0
……..

4
Programación y Métodos Numéricos Interpolación polinómica

Los coeficientes así calculados son llamados diferencias divididas y se suelen


representar como ai = f[x0, x1, ..., xi]. Como se verá en apartados posteriores, su
cálculo puede realizarse de forma recursiva de manera muy simple mediante la
fórmula:

f [ xi+1,....,xi+k −1,xi+k ] − f [ xi ,xi+1,....,xi+k −1 ]


f [ xi ,xi+1,....,xi+k −1,xi+k ] =
xk − xi
con lo que el polinomio interpolador buscado responde a la fórmula:

n (i−1)
pn (x) = f [ x 0 ] + ∑ f [ x 0 ,..,xi ]·∏ (x − x j )
i=1 j= 0

Esta forma de proceder (aplicada a ejemplos concretos y obviamente descrita


con una terminología diferente a como se ha realizado anteriormente) fue
publicada en la obra de Newton Methodus differentialis aparecida en 1712, si
bien era utilizada por Newton y otros matemáticos desde años antes. Debido a
ello la fórmula anterior se conoce con el nombre de fórmula de Newton para el
cálculo del polinomio interpolador.


Nótese que, a fin de cuentas, la fluxión f de una función –terminología con la
que Newton introdujo el cálculo infinitesimal- no deja de ser más que la
diferencia dividida de primer orden:

f(x + h) − f(x) f(x + h) − f(x)


f [ x,x + h] = =
(x + h) − x h

cuando h se hace tender hacia cero.

Incluso métodos diseñados para otros fines en esa época pueden interpretarse
de alguna forma como métodos basados en interpolación. Así, de forma
independiente, Sir Isaac Newton y Joseph Raphson utilizaban un método de
resolución de ecuaciones no lineales de la forma f(x) = 0 que hoy es conocido
con el nombre de ambos. En cada iteración del método de Newton-Raphson13,
se determina una aproximación xi+1 de la raíz a partir de la aproximación
precedente xi mediante la fórmula:

13
Consúltense los apuntes sobre los métodos de resolución de ecuaciones no lineales

5
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

xi+1 = xi – f(xi) / f’(xi)

por lo que x+1 puede considerarse el punto de corte con el eje de abscisas de la
recta (polinomio de primer grado) que en xi tiene el mismo valor que la función
f(x) y cuya primera derivada tiene el valor f’(xi). Ello constituye uno de los
primeros ejemplos de lo que después sería conocido con el nombre de
interpolación de Hermite.

f(x)

xi

Precursor de algunos trabajos de Newton fue el matemático escocés James


Gregory (1638, Drumaoak (Escocia) – 1675, Edimburgo (Escocia)). Este
matemático se anticipó en muchos aspectos a Isaac Newton y otros
matemáticos posteriores. Escritos suyos, no publicados aunque recogidos en la
correspondencia que mantuvo con otros científicos de su época, parecen
indicar que utilizaba técnicas de cálculo infinitesimal en los años en que
Newton aún estaba diseñando estas herramientas. Una de sus obras – Optica
promota publicada en 1663- fue la base en la que se basó Newton para
construir su telescopio de refracción. No obstante una agria disputa que
mantuvo con el holandés Christian Huygens le hizo muy retraído a la hora de
publicar sus resultados. Gran parte de sus hallazgos son hoy conocidos por la
aparición de su correspondencia científica. Entre las cartas encontradas puede
resaltarse la que en 1671 dirige a un miembro de la Royal Society y que indica
que James Gregory conocía la expresión de los desarrollos en serie de Taylor
muchos años antes de que estos fuesen publicados por Brook Taylor en 1715.
Asimismo, la correspondencia hallada de él confirman que había demostrado
antes de 1670, anticipándose al propio Newton, la fórmula de cálculo de las

6
Programación y Métodos Numéricos Interpolación polinómica

potencias de un binomio así como la misma fórmula de interpolación de


Newton. Hoy, reconociendo parcialmente ese hecho, se conoce con el nombre
de fórmulas de Newton-Gregory a los casos particulares de la fórmula de
Newton en la que el soporte de interpolación está formado por puntos en los
que cada uno de ellos dista la misma magnitud del que le precede y le sigue
(llamados soportes equidistantes) y las diferencias divididas son sustituidas por
diferencias finitas progresivas o regresivas. También se debe a Gregory una de
las primeras fórmulas de integración numérica hallada por él en 1670.

Contemporáneo de Newton fue otro matemático inglés con una producción de


resultados mucho menor: Roger Cotes (10 de julio de 1683, Burbage (Inglaterra) –
5 de junio de 1716, Cambridge (Inglaterra) ). Este matemático, que sólo publicó un
artículo en vida, trabajó en cálculo integral y fue el encargado de coordinar la
publicación de la segunda edición de la principal obra de Newton, Philosophie
Naturalis Principia Matemática (abreviadamente conocida como Principia). Por
publicaciones posteriores que recogían algunos de sus trabajos, editadas por
Thomas Simpson, se pudo conocer el gran trabajo que desarrolló en el cálculo
de tablas de diferencias divididas y su aplicación al cálculo de integrales.
Reconociéndole este esfuerzo hoy se conocen como fórmulas de Newton-
Cotes a aquellas fórmulas de integración numérica que utilizan soportes
equidistantes.

De la misma época y también inglés, es el matemático James Stirling (nacido


en mayo de1692 en Garden (Escocia) y fallecido en Edimburgo (Escocia) el 5 de
Diciembe de 1770). Este matemático es fundamentalmente recordado por la
fórmula de Stirling que proporciona una expresión de n! utilizando el número e.
En el año 1730 publicó una obra, también titulada Methodus Differentialis, en
la que aborda el estudio de métodos de interpolación y de cuadratura. Por sus
aportes en este campo y el uso de los factoriales que en ella aparecen, una de
las fórmula de interpolación en la que se utilizan deferencias finitas centradas
con un soporte equidistante se conoce hoy en día con el nombre de fórmula de
Stirling.

Ligeramente posterior a los anteriores y entusiasta seguidor de las ideas


introducidas por Newton, es el matemático inglés Thomas Simpson (20 de
agosto de 1710 Market Bosworth (Inglaterra) – 14 de mayo de 1761, Bosworth
(Inglaterra)). Simpson, que ejerció como profesor particular de matemáticas y
logró ser miembro de la Royal Society, trabajó fundamentalmente en teoría de

7
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

probabilidades, en interpolación y en integración numérica. Él es el que da


nombre a una de las fórmulas más populares de integración numérica en la que
el área bajo un tramo de curva es aproximada por el área bajo un tramo
parabólico que coincide con la función a integrar al menos en los extremos del
intervalo de integración así como en el punto medio de dicho intervalo.

Antes de abandonar la Inglaterra de comienzos del siglo XVIII debemos


mencionar a otro matemático de esa época: Brook Taylor (18 de agosto de 1685,
Edmonton (Inglaterra) – 29 de diciembre de 1731, Londres (Inglaterra)). En el año
1715 Taylor publicó su obra Methodus incrementorum directa e inversa en la
que usa profusamente las diferencias finitas y proporciona, sin demostrar su
convergencia, el desarrollo en serie de una función en un punto que hoy se
conoce con el nombre de desarrollo en serie de Taylor y que es una de las
herramientas más utilizadas en el análisis que involucra funciones
diferenciables. Recordemos que la fórmula de Taylor es:

n
(x − x*)i (i
f(x) ≈ pn (x) = f(x*) + ∑ ·f (x*)
i=1 i!

El uso de este desarrollo en serie permite aproximar una función por un


polinomio de grado n en el que tanto la función como sus n primeras derivadas
coinciden en un punto dado con el valor del polinomio y los de sus n primeras
derivadas. En su honor se denomina interpolación de Taylor al proceso
mediante el que, conocidos los valores f(x0), f’(x0) , ...., f(n(x0), se determina una
función p(x) verificando que p(x0) = f(x0), p’(x0) = f’(x0), ...., p(n(x0) = f(n(x0).

Muchos otros matemáticos continuaron ocupándose de temas relativos a la


interpolación. Pero hubo que esperar hasta finales del siglo XVIII para que
Joseph Louis Lagrange (25 de enero de 1736, Turín (Italia) – 10 de abril de 1813,
París (Francia)) dedicase algunos de sus trabajos a la interpolación polinómica
de funciones y diseñara un método diferente al basado en las tablas de
diferencias finitas para construir el polinomio interpolador de una función. Al
igual que en el caso de Newton, los trabajos de Lagrange sobre interpolación
son considerados como trabajos menores dentro de su magna obra. En efecto,
Lagrange fue, al igual que muchos de los científicos de su época, un
matemático y físico muy polifacético. A él se le deben, en el campo
matemático, métodos de resolución de ecuaciones diferenciales, técnicas de
optimización con restricciones, la introducción del cálculo simbólico en el

8
Programación y Métodos Numéricos Interpolación polinómica

cálculo infinitesimal, la revalorización de la fórmula de Taylor, ... Pero sin duda


su obra mayor es la Mécanique Analitique en la que introduce un enfoque
entonces novedoso y riguroso en el estudio de la mecánica: el cálculo de
variaciones y los sistemas de coordenadas generalizadas.

En uno de sus tratados sobre astronomía, publicado en 1792, Lagrange


desarrolla su método de interpolación para obtener polinomios de grado n que
tomen en (n+1) puntos diferentes valores prefijados. El enfoque novedoso que
adopta Lagrange para diseñar su método puede describirse diciendo que él
busca el polinomio interpolador pn(x) que pasa por los puntos (x0, f0), (x1, f1), ....,
(xn, fn) expresándolo en la forma:

pn(x) = a0·(x-x1)·(x-x2)· ..... ·(x-xn) + a1·(x-x0)·(x-x2)· ..... ·(x-xn) + ...... +

n n
+an·(x-x0)·(x-x1)· ..... ·(x-xn-1) = ∑ ai·∏ (x − x j )
i=0 j= 0
j≠ i

De esta forma, de las igualdades pn(xk) = fk (k = 0, 1, ..., n) obtiene que:

n
1
p(x0) = f0 ⇔ a0 ·∏ (x 0 − x j ) = f0 ⇒ a0 = f0 · n
j=1
∏ (x
j=1
0 − xj )

n
1
p(x1) = f1 ⇔ a1·∏ (x1 − x j ) = f1 ⇒ a1 = f1· n
j=0
j≠1 ∏ (x
j=0
1 − xj)
j≠1

……. …………………………………..

n −1
1
p(xn) = fn ⇔ an ·∏ (xn − x j ) = fn ⇒ an = fn · n−1
j= 0
∏ (x
j=0
n − xj )

Con ello Lagrange proporciona como expresión del polinomio interpolador:

⎛ n ⎞
n
⎜ (x − x j ) ⎟
pn (x) = ∑ fi ·∏
⎜ j=0 (xi − x j ) ⎟⎟
i= 0 ⎜
⎝ j≠ i ⎠

9
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Esta fórmula es conocida desde entonces con el nombre de fórmula de


interpolación de Lagrange. En ella se expresa el polinomio interpolador pn(x)
como una combinación lineal de los polinomios:
n (x − x )
Li (x) = ∏
j

j=0 (x i − x j )
j≠i

que son denominados polinomios de base de Lagrange (ya que constituyen


una base del espacio vectorial formado por todos los polinomios de grado
menor o igual que n).

La fórmula de Lagrange fue ganándole terreno poco a poco a la fórmula de


Newton y su uso se mostró más adecuado para el análisis de problemas de
interpolación con funciones de varias variables. Técnicas numéricas
posteriores, como la de elementos finitos, se apoyaron en la fórmula de
Lagrange.

Por todo ello, en honor a este matemático, hoy se denomina interpolación


lagrangiana al proceso de obtención de funciones que en un conjunto de
puntos tomen valores dados.

La interpolación sería objeto de atención de otro de los grandes matemáticos


que vivieron en el siglo XIX, llamado a menudo El Príncipe de los Matemáticos.
Nos referimos a Johan Carl Friedrich Gauss (30 de abril de 1777, Brunswick
(Alemania) – 23 de febrero de 1855, Göttingen (Alemania)) que también tuvo una
producción científica excepcional no escapándose a su influjo prácticamente
ninguna de las áreas de la Matemática entonces existentes: estadística, teoría
de números, análisis complejo, series, análisis de funciones reales, cálculo
integral y diferencial, ecuaciones diferenciales, álgebra, geometría, .... A él se
le debe el estudio de la mejor manera para tomar los (n+1) puntos de un
soporte de forma que se minimice el error de las fórmulas de integración
numérica. Y en su honor a tales fórmulas se las denomina hoy en día fórmulas
de cuadratura gaussiana (o fórmulas de integración de Gauss).

El último de los matemáticos del siglo XIX en quien nos detendremos es el


francés Charles Hermite (24 de diciembre de 1822, Dieuze, Lorena (Francia) – 14
de enero de 1901, París (Francia)). Hermite fue un matemático muy creativo,
continuador en buena medida de los trabajos de Abel, Galois y Liouville sobre
estructuras algebraicas vinculadas a la resolución de ecuaciones. Fue Hermite

10
Programación y Métodos Numéricos Interpolación polinómica

el primero en demostrar que el número e no era un número algebraico y el que


allanó el camino para que poco después Lindemann demostrase que π
tampoco lo era (poniendo, de esta forma, el broche final al problema de la
cuadratura del círculo que desde la época de los griegos ocupó a numerosos
matemáticos). Junto a ello Hermite destacó notablemente en áreas
matemáticas menos aplicadas (en invariantes algebraicos, funciones elípticas,
...). Pero afortunadamente, a pesar de las críticas que muchos matemáticos le
han dirigido por ello, Hermite también dedicó un corto periodo de su vida, tres
años hacia 1870, al estudio de problemas de aproximación e interpolación
introduciendo técnicas que permiten calcular funciones interpoladoras que, en
los puntos de un soporte, coinciden tanto ellas como sus primeras derivadas
con los valores de la función que se interpola y las derivadas correspondientes.
De forma más concreta, Hermite se ocupó, entre otros tópicos, de un problema
de interpolación más general que los de interpolación de Lagrange e
interpolación de Taylor pues Hermite consideró que en cada uno de los (n+1)
puntos x0 < x1 < .... < xn se conocían los valores de una función f(x) y los de su
primera derivada f’(x), buscando el polinomio p2·n+1(x), de grado menor o igual
que (2·n+1), que verificaba que:

p2·n+1(xi) = f(xi) (i = 0, 1, …, n)

p'2·n+1(xi ) = f '(xi ) (i = 0, 1, …, n)
Dicho polinomio, que también puede demostrarse que es único, fue obtenido
por Hermite expresándolo como una combinación lineal de polinomios en la
forma:

n n
p2·n+1(x) = ∑ f(xi )·Hi,0 (x) + ∑ f '(xi )·Hi,1(x)
i= 0 i=0

donde los polinomios {H0,0(x), H1,0(x), ..., Hn,0(x), H0,1(x), Hn,1(x), ...., Hn,1(x)}
forman una base del espacio formado por todos los polinomios de grado menor
o igual que (2·n+1) y son denominados polinomios de base de Hermite (y cuya
expresión se obtendrá en apartados posteriores). A la fórmula que proporciona
p2·n+1(x) en función de esta base se la conoce con el nombre de fórmula de
interpolación de Hermite.

El problema de interpolación de Hermite se generalizó en años posteriores


dando cabida a que en cada punto xi del soporte se supusieran conocidos el
valor de una función f(x) y los de sus mi primeras derivadas, buscándose

11
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

entonces un polinomio pα(x) de grado menor o igual que α, y donde el entero α


n
está dado por α = n + ∑ m , verificando:
i =0
i

p(αj (xi ) = f ( j (xi ) (j = 0, 1, ..., mi) (i = 0, 1, ..., n)


En honor a Charles Hermite este proceso se conoce con el nombre de
interpolación de Hermite. Obsérvese que la interpolación de Lagrange es un
caso particular de la de Hermite en el que se toman nulos todos los valores mi.
Asimismo, la interpolación de Taylor es un caso particular de la de Hermite en
la que el soporte de interpolación se reduce a un único punto x0.

En el tintero se nos han quedado muchos otros matemáticos de los siglos XVII,
XVIII y XIX que obtuvieron resultados que conformaron una sólida teoría sobre
los métodos de interpolación.

El siglo XX, y especialmente su segunda mitad en la que las técnicas de


interpolación pudieron implementarse sobre ordenadores, conoció un auténtico
estallido en el uso de la interpolación, derivación e integración numéricas. Los
métodos numéricos de resolución de ecuaciones diferenciales, ordinarias o
parciales -que rigen numerosos problemas de la física, la química o la
ingeniería- están basados en estas técnicas. Así los métodos en diferencias
finitas o elementos finitos que se estudian en otras asignaturas pueden ser
considerados como continuadores de las técnicas de interpolación
desarrolladas por Newton, Lagrange, Gauss, Hermite y muchos otros. Y baste
recordar que la existencia de tales métodos, junto a las máquinas de cálculo,
están presentes hoy en día en el estudio y diseño de aviones, cohetes,
vehículos, edificios, prótesis, hornos industriales, estabilidad de galerías y
taludes, ....

Esperamos que esta breve introducción a las técnicas de interpolación permita


al lector tener una visión general sobre el tema del que se ocupan estos
apuntes. Muchos y muy buenos matemáticos han contribuido al desarrollo que
ahora tiene. Y muy numerosos son los campos en los que se encuentran sus
aplicaciones.

12
Programación y Métodos Numéricos Interpolación polinómica

2. Interpolación polinómica de Lagrange

Consideraremos en esta sección el problema de interpolación de Lagrange


formulado de la manera siguiente:

Problema de Interpolación Polinómica de Lagrange


“Dados (n+1) puntos distintos {x0 , x1 , ... , xi ,... , xn} y (n+1)
valores {f0, f1, ..., fi, ..., fn}, encontrar un polinomio pn(x), de
grado menor o igual que n, verificando las igualdades:
pn(xi) = fi (i = 0, 1, ...., n) “

En tal problema denominaremos soporte de interpolación al conjunto de


puntos {x0 , x1 , ... , xi ,... , xn}. En los soportes que consideraremos
supondremos que el índice n es un entero estrictamente positivo (es decir que
al menos hay 2 puntos en el soporte) y que los (n+1) puntos del soporte son
distintos entre sí. Cuando la distancia entre puntos consecutivos sea siempre
la misma se dirá que el soporte es un soporte equidistante.

Al polinomio pn(x) se le denominará polinomio interpolador de Lagrange


sobre el soporte {x0 , x1 , ... , xi ,... , xn} para los valores {f0, f1, ..., fi, ..., fn}.
Cuando estos valores sean los valores que toma una cierta función f(x) en los
puntos del soporte, se dirá que pn(x) es el polinomio interpolador de Lagrange
de la función f(x) sobre el soporte {x0 , x1 , ... , xi ,... , xn}. No obstante, cuando
consideremos que no hay confusión sobre los puntos del soporte utilizados así
como sobre los valores en ellos, nos referiremos a pn(x) diciendo simplemente
que es el polinomio interpolador de Lagrange.

Ejemplos:
30 − 24· 2 2 16· 2 − 23
1º) El polinomio p2(x) = ·x + ·x + 1 es el polinomio
π2 2·π
interpolador de Lagrange de la función f(x) = cos(x) sobre el soporte14
⎧ π π⎫
⎨0, , ⎬ . En efecto, es un polinomio de grado menor o igual que 2 verificando:
⎩ 4 3⎭
⎛π⎞ 1 ⎛ ⎛ π ⎞⎞ ⎛π⎞ 1 ⎛ ⎛ π ⎞⎞
p2(0) = 1 (=cos(0)), p2 ⎜ ⎟ = ⎜ =cos ⎜ ⎟ ⎟ , p2 ⎜ ⎟ = ⎜ =cos ⎜ ⎟ ⎟
⎝4⎠ 2 ⎝ ⎝ 4 ⎠⎠ ⎝3⎠ 2 ⎝ ⎝ 3 ⎠⎠

14
Adoptaremos en todo cuanto sigue el convenio de que, salvo que se especifique lo contrario,
los argumentos de las funciones trigonométricas se consideran dados siempre en radianes.

13
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

2º) El polinomio p3(x) = -x3 + 2·x2 – 3·x + 2 es el polinomio interpolador de


Lagrange de la función f(x) = x4 – 3·x3 + x2 – x + 2 sobre el soporte de 4 puntos
{-1, 0, 1, 2}. En efecto, habiendo 4 puntos el polinomio dado es un polinomio de
grado 3 que, además, verifica que:

p3(-1) = 8 (= f(-1)), p3(0) = 2 (= f(0)), p3(1) = 0 (= f(1)), p3(2) = -4 (= f(2))


En este apartado presentaremos diferentes técnicas para resolver el problema


de interpolación de Lagrange anteriormente formulado.

Una primera forma de determinar el polinomio buscado consiste en considerar


que pn(x) es un polinomio de la forma pn(x) = α0 + α1·x + α2·x2 + ... + αn·xn
para, a continuación, obtener un sistema de (n+1) ecuaciones lineales a partir
de las igualdades entre los valores conocidos en el soporte y los valores que
debe tomar el polinomio interpolador en los puntos del soporte. Más
concretamente:
pn(x0) = f0 ⇔ α0 + α1·x 0 + α 2 ·x 02 + .... + αn ·xn0 = f0
pn(x1) = f1 ⇔ α0 + α1·x1 + α 2 ·x12 + .... + αn ·x1n = f1
pn(x2) = f2 ⇔ α0 + α1·x 2 + α 2 ·x 22 + .... + αn ·xn2 = f2
……….. ………………….. …
pn(xn) = fn ⇔ α0 + α1·xn + α 2 ·xn + .... + αn ·xn = fn
2 n

El sistema anterior puede escribirse con notación matricial en la forma:

⎡1 x0 x 02 ... x n0 ⎤ ⎧α 0 ⎫ ⎧ f0 ⎫
⎢ ⎥⎪ ⎪ ⎪ ⎪
⎢1 x1 x12 ... x1n ⎥ ⎪ α1 ⎪ ⎪ f1 ⎪
⎢1 ⎪ ⎪ ⎪ ⎪
x2 x 22 ... xn2 ⎥·⎨α 2 ⎬ = ⎨ f2 ⎬
⎢ ⎥
⎢... ... ... ... ... ⎥ ⎪ ... ⎪ ⎪...⎪
⎪ ⎪ ⎪ ⎪
⎢1 xn x n2 ... xnn ⎥⎦ ⎪⎩αn ⎭⎪ ⎩⎪ fn ⎭⎪

Si, como se ha supuesto, los puntos del soporte son distintos entre sí, la matriz
del sistema anterior es una matriz regular y por tanto el sistema anterior admite
una única15 solución (es decir que el polinomio buscado queda definido de
forma única a través de sus coeficientes obtenidos como solución del sistema
planteado).

15
No nos detenemos a demostrar esta afirmación pues la existencia y unicidad del polinomio
interpolador de Lagrange será demostrada posteriormente.

14
Programación y Métodos Numéricos Interpolación polinómica

Ejemplo:
Determinemos la expresión del polinomio interpolador de Lagrange de la
función f(x) = x4 – 3·x3 + x2 – x + 2 sobre el soporte {-1, 0, 1, 2}. En estos
puntos se tiene que: f0 = f(-1) = 8, f1 = f(0) = 2, f2 = f(1) = 0 y f3 = f(2) = -4.

Denotando al polinomio buscado por: p3(x) = α0 + α1·x + α2·x2 + α3·x3 , se tiene


que:
p3(-1) = f0 ⇔ α0 - α1 + α2 - α3 = 8
p3(0) = f1 ⇔ α0 =2
p3(1) = f2 ⇔ α0 + α1 + α2 + α3 = 0
p3(2) = f3 ⇔ α0 + 2·α1 + 4·α2 + 8·α3 = -4
es decir:
⎡1 −1 1 −1⎤ ⎧α 0 ⎫ ⎧ 8 ⎫
⎢ ⎪ ⎪
⎢1 0 0 0 ⎥⎥ ⎪ α1 ⎪ ⎪⎪ 2 ⎪⎪
·⎨ ⎬ = ⎨ ⎬
⎢1 1 1 1 ⎥ ⎪α 2 ⎪ ⎪ 0 ⎪
⎢ ⎥
⎣1 2 4 8 ⎦ ⎩⎪α 3 ⎭⎪ ⎩⎪−4 ⎭⎪
de donde:
α0 = 2, α1 = -3, α2 = 2, α3 = -1

por lo que: p3(x) = 2 – 3·x + 2·x2 – 1·x3.

La figura siguiente recoge la gráfica de f(x) y de p3(x).

f(x)
p3(x)

15
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Ejercicio propuesto:
Plantéese el sistema de ecuaciones que permite calcular el polinomio
⎧ π π⎫
interpolador de Lagrange de la función f(x) = sen(x) sobre el soporte ⎨0, , ⎬ .
⎩ 4 2⎭
Resuélvase dicho sistema y escríbase la expresión del polinomio interpolador.

Esta forma de calcular el polinomio interpolador de Lagrange, mediante la


resolución de un sistema de (n+1) ecuaciones con (n+1) incógnitas, es útil
cuando se trabaja con un soporte formado por un número de puntos
relativamente bajo. En el caso de que no sea así es necesario realizar un gran
esfuerzo computacional para resolver el sistema de ecuaciones al que se llega.

Pero además, esta forma de proceder tiene menos interés que otras que
analizaremos a continuación cuando se piensa en aplicarlas a los métodos de
resolución numérica de problemas de contorno (y en concreto al método de
elementos finitos) que se aborda en otras asignaturas.

Por ello, en los subapartados que siguen, se estudiarán otras técnicas de


cálculo del polinomio interpolador de Lagrange.

16
Programación y Métodos Numéricos Interpolación polinómica

2.1. La fórmula de interpolación de Lagrange


Teorema 1 (Existencia y unicidad del polinomio interpolador de Lagrange)
Dados (n+1) valores {f0, f1, ..., fi, ..., fn}, y siendo Li(x) (i= 0, …, n) los
polinomios de base de Lagrange asociados al soporte formado por las (n+1)
abscisas distintas {x0, x1, ... , xi, ..., xn}, existe un único polinomio de grado
menor o igual que n, pn(x), verificando las (n+1) igualdades:

pn(xi) = fi (i = 0, 1, 2, ..., n) (1)

Demostración:
Como se ha visto en el apartado anterior, el sistema (1) puede escribirse con
notación matricial en la forma:

⎡1 x0 x 02 ... xn0 ⎤ ⎧α 0 ⎫ ⎧ f0 ⎫
⎢ ⎥⎪ ⎪ ⎪ ⎪
⎢1 x1 x12 ... x1n ⎥ ⎪ α1 ⎪ ⎪ f1 ⎪
⎢1 ⎪ ⎪ ⎪ ⎪
x2 x 22 ... xn2 ⎥·⎨α 2 ⎬ = ⎨ f2 ⎬
⎢ ⎥
⎢... ... ... ... ... ⎥ ⎪ ... ⎪ ⎪...⎪
⎪ ⎪ ⎪ ⎪
⎢1 xn x n2 ... xnn ⎥⎦ ⎩⎪αn ⎭⎪ ⎩⎪ fn ⎭⎪

[X]·{α} = {f}

La matriz del sistema, habida cuenta de que las abscisas x0, x1, …., xn son
todas ellas distintas, tiene su determinante del tipo Vandermonde y por ello
distinto de 0. En otros téminos es una matriz regular que admitirá inversa [X]-1 .
Por ello existirá un único juego de coeficientes, dado por la expresión:
{α} = [X]-1·{f}
Que identifique al polinomio interpolador pn(x). c.q.d.

Definición
Se denominan polinomios de base de Lagrange asociados al soporte
formado por las (n+1) abscisas distintas {x0, x1, ... , xi, ..., xn}, y los
denotaremos por Li(x) (i= 0, …, n) , a los (n+1) polinomios de grado menor o
igual a n definidos por las expresiones:
Si n = 0: L0(x) = 1
Si n > 0:
n ⎛ x−x ⎞
Li (x) = ∏ ⎜ j
⎟⎟ (i = 0, 1, 2, ..., n) (2)

j=0 ⎝ x i − x j ⎠
j≠i

17
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

El método diseñado por Lagrange para el cálculo del polinomio interpolador,


utiliza los polinomios de base de Lagrange que se acaban de definir. La forma
en que se utilizan, se recogen en el siguiente teorema.

Teorema 2 (Fórmula de Lagrange para el polinomio interpolador)


Dados (n+1) valores {f0, f1, ..., fi, ..., fn}, y siendo Li(x) (i= 0, …, n) los
polinomios de base de Lagrange asociados al soporte formado por las (n+1)
abscisas distintas {x0, x1, ... , xi, ..., xn}, se verifica que el polinomio interpolador
de Lagrange sobre el soporte considerado y para los valores dados puede
expresarse como:
n
pn (x) = ∑ fi ·Li (x) (3)
i =0

Demostración:
Basta con observar que los polinomios de base de Lagrange dados por la
expresión (1) son polinomios de grado n verificando, sobre los puntos del
soporte, que verifican:
⎧0 si i ≠ k
Li (xk ) = δik = ⎨
⎩ 1 si i = k

Por tanto, el polinomio dado por la fórmula de interpolación de Lagrange (3) es


un polinomio de grado menor o igual que n (al ser una combinación lineal de
polinomios de grado n) que además verificará que:
n
pn(xk) = ∑ f ·L (x
i=0
i i k ) = fk·Lk(xk) = fk (k = 0, 1, ..., n)

Es, por ello, el polinomio interpolador de Lagrange sobre el soporte


considerado y para los valores dados en el enunciado.
c.q.d.

NOTA: La expresión (3) se conoce como fórmula de interpolación de


Lagrange.

Consecuencia inmediata del teorema anterior es el siguiente corolario

Corolario 1
Si p(x) es una función polinómica de grado m, y n es un entero estrictamente
positivo tal que m < n, el polinomio interpolador de Lagrange pn(x) de la función
p(x) sobre cualquier soporte formado por (n+1) puntos es la propia función p(x).

18
Programación y Métodos Numéricos Interpolación polinómica

Demostración:
El grado del polinomio interpolador de Lagrange sobre un soporte
formado por (n+1) puntos debe ser menor o igual que n. La función p(x)
se ha supuesto que es un polinomio de grado m < n por lo que verifica la
condición sobre el grado exigido al polinomio interpolador de Lagrange.
Puesto que obviamente el valor de la función p(x) en los puntos del
soporte coincide con el valor p(xi) se puede concluir que p(x) es el
polinomio interpolador de Lagrange de ella misma. Y como en virtud del
teorema anterior el polinomio interpolador de Lagrange es único, puede
concluirse que pn(x) ≡ p(x).
c.q.d.

Ejemplo:
Utilicemos la fórmula de Lagrange para determinar el polinomio interpolador de
⎧ π π⎫
Lagrange de la función f(x) = sen(x) sobre el soporte ⎨0, , ⎬ .
⎩ 4 2⎭

En primer lugar calculemos los valores de la función f(x) en los puntos del
soporte:
⎛π⎞ ⎛π⎞ 1 ⎛π⎞ ⎛π⎞
f0 =f(0) = sen(0) = 0, f1 = f ⎜ ⎟ = sen ⎜ ⎟ = , f2 = f ⎜ ⎟ = sen ⎜ ⎟ = 1
⎝4⎠ ⎝4⎠ 2 ⎝2⎠ ⎝2⎠

Procedamos a continuación a calcular (y representar gráficamente) los


polinomios de base de Lagrange asociados a este soporte.

⎛ π⎞⎛ π⎞
⎜ x − 4 ⎟·⎜ x − 2 ⎟ 8·x 2 − 6·π·x + π2
L0 (x) = ⎝ ⎠⎝ ⎠=
⎛ π ⎞⎛ π ⎞ π2
⎜ 0 − · 0 −
⎝ 4 ⎟⎠ ⎜⎝ 2 ⎟⎠

π⎞
( x − 0 )·⎛⎜ x −
⎝ 2 ⎟⎠ −16·x 2 + 8·π·x
L1(x) = =
⎛π ⎞⎛ π π⎞ π2
⎜4 − 0 ·
⎟⎜ 4 2⎟ −
⎝ ⎠⎝ ⎠
π
( x − 0 )·⎛⎜ x − ⎞⎟ 8·x 2 − 2·π·x
⎝ 4⎠
L 2 (x) = =
⎛π ⎞⎛ π π⎞ π2
⎜2 − 0 ·
⎟⎜2 4⎟ −
⎝ ⎠⎝ ⎠

19
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

L0(x) L1(x) L2(x)

π/4

π/2

Con ayuda de estos polinomios de base se calcula el polinomio interpolador


utilizando la fórmula de interpolación de Lagrange:
1 ( −16·x + 8·π·x )
2
8·x 2 − 2·π·x
p2(x) = f0·L0(x) + f1·L1(x) + f2·L2(x) = · + 1· =
2 π2 π2
⎛ 8· 2 − 16 ⎞ 2 ⎛ 8 − 2· 2 ⎞
= ⎜⎜ ⎟·x + ⎜⎜ ⎟·x
⎝ 2·π2 ⎟⎠ ⎝ 2·π ⎟⎠

La figura siguiente recoge, además de las gráficas de los tres polinomios de


base, la gráfica de la función f(x) = sen(x) y la gráfica del polinomio interpolador
que se acaba de determinar.

π/4

π/2

Una aproximación del valor de sen(1) puede obtenerse entonces evaluando


p2(1):

sen(1) ≈ p2(1) = 0.82863992...

20
Programación y Métodos Numéricos Interpolación polinómica

Puede compararse esta aproximación del valor de sen(1) con el valor exacto
que es 0.841470984.....

Examinemos alguna de las propiedades de los polinomios de base de


Lagrange.

Propiedad 1
Dado el soporte {x0, x1, ... , xi, ..., xn}, el i-ésimo polinomio de base de
Lagrange:

n ⎛ x−x ⎞
Li (x) = ∏ ⎜ j
⎟⎟ (i = 0, 1, ....,n)

j= 0 ⎝ x i − x j ⎠
j≠ i

es el único polinomio de grado menor o igual que n que verifica que:

⎧0 si i ≠ k
Li (xk ) = δik = ⎨ (i, k = 0, 1, ..., n)
⎩ 1 si i = k

Demostración:
Es evidente -sin más que sustituir en la expresión del polinomio Li(x) la
variable x por la abscisa xk (k = 0, 1, ...., i, .., n) - que Li(x) es un polinomio de
grado menor o igual que n que se anula en todos los puntos del soporte salvo
en el punto xi en el que toma el valor unidad.

La unicidad se infiere del hecho de que, en virtud del teorema de existencia y


unicidad del polinomio interpolador, sólo puede haber un polinomio de grado
menor o igual que n pasando por los (n+1) puntos (x0, 0), (x1, 0), ...., (xi-1, 0),
(xi, 0), (xi+1, 0), ...., (xn, 0).
c.q.d.

La gráfica siguiente representa el hecho que se acaba de demostrar


recogiendo los grafos de los 5 polinomios de base asociados al soporte
formado por las abscisas {0.25, 1.12, 4.56, 8.33, 11.45}.

21
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Propiedad 2
Dado el soporte {x0, x1, ..., xi, ..., xn}, los polinomios de base de Lagrange
asociados a dicho soporte:

n ⎛ x−x ⎞
Li (x) = ∏ ⎜ j
⎟⎟ (i = 0, 1, ...., n)

j=0 ⎝ x i − x j ⎠
j≠i

verifican que:
n

∑ L (x) = 1
i=0
i ∀x

Demostración:
La función unidad, p(x) = 1, es un polinomio de grado 0. Por tanto pertenece al
conjunto de polinomios de grado menor o igual que n para cualquier elección
del número natural n que se haga. Puesto que, en virtud del corolario 1, el
polinomio interpolador de Lagrange pn(x) de esta función p(x) sobre el soporte
de abscisas distintas {x0, x1, ..., xi, ... , xn} ha de coincidir con p(x), se verificará
que:
n n n
1 = p(x) = pn(x) = ∑ p(xi )·Li (x) = ∑1·Li (x) = ∑ Li (x)
i=0 i= 0 i=0

c.q.d.
Ejercicios propuestos:

22
Programación y Métodos Numéricos Interpolación polinómica

1º) Demostrar que siendo Π(x) el polinomio de grado (n+1) dado por la
n
expresión: Π(x) = ∏ (x − x j ) , se puede escribir el i-ésimo polinomio de base de
j=0

Lagrange sobre el soporte {x0, x1, ..., xi, ..., xn} como:

Π(x)
Li (x) =
(x − xi )·Π '(xi )

2º) Demostrar que siendo L0(x), L1(x), ...., Ln(x) los (n+1) polinomios de base
asociados al soporte {x0, x1, ..., xi, ..., xn} se verifica que:

∑x
i=0
m
i ·Li (x) = xm ∀m ≤ n

3º) Justificar la veracidad o falsedad de la afirmación siguiente:

“Para cualquier polinomio de base de Lagrange Li(x) asociado a un


soporte genérico {x0, x1, ..., xi, ..., xn} se verifica que:

Li (x) ≤ 1 ∀x ∈ ( x 0 ,xn ) (i = 0, 1, ...., n) “

4º) Utilícese la fórmula de Lagrange para determinar el polinomio interpolador


⎧ π π π⎫
de Lagrange de la función cos(x) sobre el soporte ⎨0, , , ⎬ .
⎩ 6 3 2⎭
Represéntense las gráficas de los polinomios de base asociados a este soporte
e indíquese el valor interpolado que aproximaría cos(π/4).

5º) Determínese el polinomio interpolador de Lagrange, p5(x) , de la función


f(x) = x3 sobre el soporte {0, 1, 2, 3, 4, 5}. ¿Cuál es el error de interpolación en
el punto x = 2.5, es decir cual es el valor de |f(2.5) – p5(2.5)| ?.

n ⎛ x−x ⎞
6º) Demuéstrese que los polinomios Li (x) = ∏ ⎜ j
⎟⎟ (i = 0, 1, ..., n)

j= 0 ⎝ x i − x j ⎠
j≠ i

asociados al soporte {x0, x1, ..., xi, ..., xn} forman una base del espacio vectorial
Pn formado por todos los polinomios (de variable y coeficientes reales) de
grado menor o igual que n.

23
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

2.2. Fórmula del error en la interpolación de Lagrange


Las técnicas de interpolación de Lagrange descritas hasta ahora (y las que se
describirán en subapartados siguientes) permiten encontrar un polinomio de
grado menor o igual que n que coincide con los valores de una función f(x) en
los puntos del soporte de interpolación {x0, x1, ..., xn}. Pero esta coincidencia de
valor no tiene por qué producirse en puntos no pertenecientes al soporte. Es
por ello que se puede definir una función error de interpolación de la forma
siguiente:

Definición
Siendo pn(x) el polinomio interpolador de Lagrange de la función f(x) sobre el
soporte {x0 , x1, .... , xn}, se denomina error de interpolación (de Lagrange) a la
función E(x) que a todo punto x le asocia el valor E(x) = f(x) – pn(x).

f(x)
p2(x)

p2(x*)
E(x*)
f(x*)

x0 x1 x* x2

En general, si no se tiene información adicional sobre la función f(x) que se


está interpolando, poco se puede decir sobre el error de interpolación (salvo
que será nulo en los puntos del soporte). Pero si se admite una cierta
regularidad de la función f(x), más concretamente, si se admite que tanto la
función f(x) como sus primeras derivadas son continuas y acotadas, es posible
obtener cotas de la función error de interpolación en el intervalo (a, b) al que
pertenezcan los puntos del soporte. Dedicaremos este subapartado a concretar
esta afirmación.

24
Programación y Métodos Numéricos Interpolación polinómica

Teorema 3
Siendo f(x) una función continua de clase C(n+1)((a, b)) y denotando por pn(x) al
polinomio interpolador de Lagrange de la función f(x) sobre el soporte {x0, x1, ...,
xn}, formado por (n+1) puntos distintos de (a, b), para todo punto x*∈(a, b) se
puede encontrar algún punto ξ * ∈(a, b), dependiente del punto x* que se
escoja, verificando que:
f (n+1 ( ξ * ) n
E(x*) = f(x*) − pn (x*) = ·∏ (x * − xi )
(n + 1)! i= 0

Demostración:
Si el punto x* coincidiera con alguno de los puntos del soporte la igualdad
anterior es evidente pues el error sería nulo y el productorio que aparece en la
expresión del error también se anularía.

Consideremos pues el caso en que x* ∉{x0, x1,..., xn}. En esta situación se


puede definir el polinomio:
f(x*) − pn (x*) n
q(x) = pn(x) + n ·∏ (x − xi )
∏ (x * − xi ) i=0
i= 0

El polinomio q(x) es un polinomio de grado menor o igual que (n+1), pues es la


suma de un polinomio de grado menor o igual que n (pn(x)) más otro polinomio
n
de grado (n+1) (dado por ∏ (x − x ) )
i=0
i multiplicado por la constante

f(x*) − pn (x*)
n
.
∏ (x * − x )
i=0
i

Además dicho polinomio verifica que:

f(x*) − pn (x*) n
q(xk) = pn(xk) + n
·∏ (x k − x i ) = pn(xk) = f(xk) (k = 0, 1, ..., n)
∏ (x * − xi ) i=0
i=0

f(x*) − pn (x*) n
q(x*) = pn(x*) + n
·∏ (x * − xi ) = pn(x*)+ f(x*) - pn(x*) = f(x*)
∏ (x * − xi ) i=0
i=0

Por tanto q(x) es el polinomio interpolador de Lagrange de la función f(x) sobre


el soporte formado por los (n+2) puntos: {x0, x1,..., xn, x*} .

25
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Definimos entonces la función F(x) = f(x) – q(x). Esta función es continua y será
de clase C(n+1)((a, b)) pues es la diferencia de dos funciones de dicho espacio.
Además la función F(x) se anula en los (n+2) puntos distintos {x0, x1,..., xn, x*}.
Aplicando sucesivamente el teorema de Rolle16 se tiene entonces que F’(x) se
anulará en al menos (n+1) puntos de (a, b), F”(x) lo hará en al menos n puntos
de (a, b), F’’’(x) será nula en al menos (n-1) puntos de (a, b), ...... y F(n+1(x) se
anulará en al menos un punto del intervalo (a, b). Denotemos por ξ * a alguno
de los puntos de (a, b) en los que se anula F(n+1(x). Se tiene así que:

0 = F(n+1( ξ * ) = f(n+1( ξ * ) – q(n+1( ξ * ) =

(n +1
f(x*) − pn (x*) ⎛ n ⎞
=f (n+1
(ξ *) – p (n +1
n (ξ*) − n ·⎜ ∏ (x − xi ) ⎟ =
∏ (x * − xi ) ⎝ i=0
i= 0

f(x*) − pn (x*)
= f(n+1( ξ * ) – 0 – n
·(n + 1)! ⇒
∏ (x * −xi )
i=0

f (n+1(ξ*) n
⇒ f(x*) – pn(x*) = ·∏ (x * − x i )
(n + 1)! i=0
c.q.d.

Una consecuencia inmediata del teorema anterior es el hecho, ya conocido por


el corolario 1 demostrado en el apartado anterior, de que si f(x) es una función
polinómica de grado menor o igual que n, al interpolarla con (n+1) abscisas
distintas de soporte el error que se comete es nulo (pues la derivada de orden
(n+1) de un polinomio de grado menor o igual que n es la función nula).

Pero el teorema anterior, tal cual está formulado, tiene una aplicación práctica
escasa pues su uso en la determinación del error de interpolación de Lagrange
cometido en un punto x* exige el conocimiento previo de la (n+1)-ésima
derivada de la función f(x) (cuando lo habitual es que ni tan siquiera se conozca
la expresión de f(x)) y además la abscisa ξ * en la que evaluar dicha derivada.
Pero sin embargo sí que nos ofrece información cualitativa sobre el proceso de

16
Teorema de Rolle: “Si una función g(x) continua en el intervalo [a, b] es derivable en (a, b) y
además verifica que f(a) = f(b), entonces existe al menos un punto c∈(a, b) en el que se verifica
que f’(c) = 0”.

26
Programación y Métodos Numéricos Interpolación polinómica

interpolación. En efecto, una consecuencia inmediata de dicho teorema es que


si se denota por M al valor:
M = Sup f (n+1(x)
x∈( a,b )

se verificará que:
n
M
∀x ∈ (a,b) : |E(x)| = |f(x) – pn(x)| ≤ · ∏ (x − xi )
(n + 1)! i=0
de donde:
n
M
∀x ∈ (a,b) : |E(x)| = |f(x) – pn(x)| ≤ · Sup ∏ (x − xi )
(n + 1)! x∈( x0 ,xn ) i=0

Si se denota por h a la longitud del intervalo (a,b) es evidente que, para todo
punto x interior a dicho intervalo se verificará que: |x-xi| < h. Ello nos permite
expresar la cota de error en la forma:
M
∀x ∈ (a,b) : |E(x)| = |f(x) – pn(x)| ≤ ·h(n+1)
(n + 1)!

Las desigualdades anteriores recogen cotas superiores del máximo del valor
absoluto de la función de error de interpolación. Tales cotas pueden ser
alcanzadas o no por la función de error (siendo frecuente que el error real de
interpolación sea ostensiblemente menor que la cota así calculada). Por ello el
interés de estas acotaciones se encuentra cuando la cota calculada es
suficientemente pequeña, pues en ese caso se pueden asegurar errores de
interpolación pequeños. Cuando la cota tiene un valor alto poco se puede
asegurar sobre el error de interpolación.

Por otra parte debe señalarse que las desigualdades antes obtenidas pueden
inducir al lector que aborda por primera vez el estudio de la interpolación de
Lagrange a sacar conclusiones erróneas. Por ejemplo es frecuente que a la
vista de esta expresión se piense (erróneamente) que un incremento en el
número de puntos del soporte, sin incrementar la longitud del intervalo,
conduce a un menor error de interpolación ya que al aumentar n crece el valor
de (n+1)!. Ello no siempre sucede así pues, aunque es cierto que el factorial
(n+1)! acaba creciendo con n más rápidamente que el valor de hn , debe
tenerse en cuenta que el valor de M = Sup f (n+1(x) no es independiente de n.
x∈( x0 ,xn )

Además el incremento del número de puntos del soporte puede conducir a


polinomios interpoladores de alto grado que presenten oscilaciones muy
pronunciadas lo cual no siempre será acorde con la naturaleza de la función

27
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

f(x) que se interpole. Un ejemplo de lo que se acaba de señalar se recoge a


continuación.

Ejemplo:
Sea f la función definida mediante f(x) = sen(π·x2). Si, en el intervalo [0, 4] se
considera un soporte equidistante formado por los (n+1) puntos:

xi = 4·i/n (i = 0, 1, …, n)

una cota del error de interpolación está dada por:

4(n+1)
∀x ∈ [0,4 ] : E(x) ≤ (
· sup f (n+1(x)
(n + 1)! x∈( 0,4 )
)
En la tabla siguiente se recogen, para algunos valores de n, el valor de
4(n+1)
α=
(n + 1)!
, y los órdenes de magnitud de los valores de M = sup f (n+1(x)
x∈( 0,4 )
y ( )
4(n+1)
Cota= (
· sup f (n+1(x) .
(n + 1)! x∈(0,4 )
)

n α O(M) O(Cota)

32
2 15875 169335
3

128
4 1 · 107 8 · 107
15

1024
6 6 · 109 2 · 1010
315

Puede observarse como un incremento en el número de puntos del soporte de


interpolación no conduce a una disminución de la cota de error. Pero
analicemos si estas cotas de error nos proporcionan alguna información útil.

28
Programación y Métodos Numéricos Interpolación polinómica

• Obsérvese que el polinomio interpolador obtenido para n= 2 se


obtendría con el soporte {x0 = 0, x1 = 2, x2 = 4} en el que la función toma
los valores:

f0 = sen(0) = 0, f1 = sen(4·π) = 0 , f2 = sen(16·π) = 0

lo que nos conduce a que p2(x) = 0 y a que el error de interpolación


realmente cometido es: E(x) = sen(π·x) – p2(x) = sen(π·x). En otros
términos el error real de interpolación toma valores comprendidos entre
-1 y 1 por lo que la cota de error obtenida en la tabla anterior es muy
superior al máximo del valor absoluto del error.

• Para n = 4 los puntos del soporte son {x0 = 0, x1 = 1, x2 = 2, x3 = 3,


x4 = 4}. En ellos los valores de la función son:

f0 = sen(0) = 0, f1 = sen(π) = 0 , f2 = sen(4·π) = 0,

f3 = sen(9·π) = 0 , f4 = sen(16·π) = 0

lo que nos conduce a que p4(x) = 0 y a que el error de interpolación


realmente cometido es: E(x) = sen(π·x) – p2(x) = sen(π·x). En otros
términos el error real de interpolación toma valores comprendidos entre
-1 y 1 por lo que la cota de error obtenida en la tabla anterior es muy
superior al máximo del valor absoluto del error.

• Para n = 6 el soporte de interpolación está formado por los puntos


{x0 = 0, x1 = 2/3 , x2 = 4/3, x3 = 2, x4 = 8/3 , x5 = 10/3 , x6 = 4 ,}

siendo los valores (aproximados por sus 4 primeros decimales) de la


función en él:

f0 = sen(0) = 0, f1 = sen(4·π/9) = 0.9848 ,


f2 = sen(16·π/9) = -0.6428, f3 = sen(4·π) = 0 ,
f4 = sen(64·π/9) = -0.3420, f5 = sen(100·π/9) = -0.3420,
f6 = sen(16·π) = 0

El dibujo siguiente recoge las gráficas de la función f(x) (punteada) y del


polinomio interpolador que se obtendría (en trazo continuo) y permite

29
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

verificar que también ahora la cota de error obtenida supera con mucho
el máximo valor absoluto del error de interpolación.

No obstante, a pesar de que en los casos anteriores las cotas de error son muy
elevadas, nada hace pensar que un incremento del número de puntos pueda
mejorar la calidad de la interpolación. Para ilustrar este hecho, los dibujos
siguientes recogen las gráficas obtenidas con 13 y con 14 puntos de soporte
para esta función. En la segunda de ellas, los tramos no dibujados del
polinomio interpolador exceden la escala de las ordenadas consideradas y por
ello se recoge en otra figura la gráfica del polinomio interpolador aumentando el
rango de las ordenadas representadas.

Soporte con 13 puntos

30
Programación y Métodos Numéricos Interpolación polinómica

Soporte con 14 puntos

Soporte con 14 puntos (ordenadas en [-100, 100])

NOTAS:

1ª. Cuando en un intervalo [a, b] se elige un soporte equidistante que incluya


a los extremos del intervalo, es decir un soporte de la forma:

(b − a)
xi = a + i· (i = 0, 1, ..., n)
n
se verifica17 que:
17
Para una demostración detallada puede consultarse M. Crouzeix & A.L. Mignot (1983)
“Analyse numérique des équations différentielles”, Ed. Masson.

31
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

n
e −n
Sup ∏ (x − xi ) ≤ C·
x∈( x0 ,xn ) i=0 n·ln(n)
·(b − a)(n+1)

donde C es una constante positiva.

2ª. La acotación del error anteriormente obtenida


n
M
∀x ∈ [ x 0 ,x n ] : |E(x)| = |f(x) – pn(x)| ≤ · Sup ∏ (x − xi )
(n + 1)! x∈( x0 ,xn ) i=0

indica que si se quiere minimizar el error de interpolación manteniendo el


número de puntos del soporte, estos puntos deberían ubicarse de forma que se
n
minimizase el valor de Sup ∏ (x − x ) .
x∈( x0 ,xn ) i=0
i El cálculo de la posición de estos

puntos conduce (tras un proceso algo laborioso) a que en un intervalo [a, b] la


mejor elección de los (n+1) puntos de soporte está dada por las fórmulas:

a+b b−a ⎛ (2·i + 1) ⎞


ξi = + ·cos ⎜ ·π ⎟ (i = 0, 1, ..., n)
2 2 ⎝ (2·n + 2) ⎠

Los soportes así formados se conocen con el nombre de soportes de


Chebyshev18. Con ellos puede demostrarse que:

n
(b − a)(n+1)
Sup ∏ (x − xi ) =
x∈( x0 ,xn ) i=0 2(2·n+1)

lo que nos permite establecer la cota de error:

M·(b − a)(n+1)
E(x) ≤
(n + 1)!·2(2·n+1)

18
En la determinación de los puntos de este tipo de soportes juegan un papel esencial los
denominados polinomios de Chebyshev: {T0(x) = 1, T1(x) = x, Ti = 2·x·Ti-1(x) – Ti-2(x) (i = 2,
...,n) }. A partir de ellos pueden construirse los polinomios t0(x) = 1, t1(x) = x, ti(x) = (1/2(i-1))·Ti (i
= 2, ..., n), pudiéndose demostrar fácilmente que, en el intervalo [-1, 1], estos polinomios
forman una base del espacio de polinomios de grado menor o igual que n y que ademas ti(x) es
el polinomio de grado i con coeficiente director unitario con menor norma ||·||∞.. Es por ello que
este tipo de soportes se denomina soporte de Chebyshev en honor al matemático ruso Pafnuty
Lvovich Chebyshev (16 de mayo de 1821, Okatovo (Rusia) – 8 de diciembre de 1894, San
Petersburgo (Rusia)). Para un mayor detalle del proceso de construcción de los soportes de
Chebyshev, puede consusltarse F. Michavila & C. Conde (1987) “Métodos de Aproximación”,
Ed. Depto. de Matemática Aplicada y Métodos Informáticos – ETSI Minas – Universidad
Politécnica de Madrid.

32
Programación y Métodos Numéricos Interpolación polinómica

Ejemplos:
1º. Sea f la función f(x) = ex. Si se desea interpolar esta función en un intervalo
[a, b] utilizándose un soporte formado por (n+1) puntos, una cota del error de
interpolación es:
1 ⎛ n ⎞ (b − a)(n+1) b
∀x ∈ [a,b] : |E(x)| ≤ ( )
·Sup e x ·Sup ⎜ ∏ (x − x i ) ⎟ =
(n + 1)! x∈(a,b) x∈(a,b) ⎝ i= 0 (n + 1)!
·e

Puesto que la función factorial presenta un crecimiento mayor que la función
potencial, el error de interpolación, en este caso, tenderá a cero cuando n
tienda a infinito. En otros términos, los polinomios interpoladores de Lagrange
pn(x) de la función ex obtenidos para soportes con n puntos cada vez serán
más próximos a ex (dicho más correctamente, la sucesión de polinomios pn(x)
converge a ex cuando n tiende a infinito).

2º) Si se desea interpolar en el intervalo [0, 1] la función f(x) = ex utilizando 2


puntos de soporte, una cota del error de interpolación será:

e
∀x ∈ [0,1] : E(x) ≤ ·Sup((x − x 0 )·(x − x1 ))
2 x∈(0,1)

Denotemos por q(x) = (x-x0)·(x-x1) = x2 – (x0+x1)·x + x0·x1. Con esta notación es


evidente que la cota del error de interpolación será más pequeña cuanto menor
sea el máximo de |q(x)| en [0, 1]. Según lo indicado en el comentario realizado
en la 2ª de las “notas” anteriores, ello se logra ubicando los puntos del soporte
en las abscisas:

1 1 ⎛1 ⎞ 1 1
ξ0 = + ·cos ⎜ ·π ⎟ = +
2 2 ⎝ 4 ⎠ 2 2· 2
1 1 ⎛3 ⎞ 1 1
ξ1 = + ·cos ⎜ ·π ⎟ = −
2 2 ⎝ 4 ⎠ 2 2· 2

lo que nos conduce a que el soporte de Chebyshev, en este caso, es:


1 1 1 1
x0 = − y x1 = + .
2 2· 2 2 2· 2

La figura siguiente recoge el grafo de la función ex y de los polinomios de grado


1 (rectas) obtenidos con el soporte {0, 1} (recta “superior”), con el soporte
{0.499, 0.501} (recta “inferior”) y con el soporte de Chebyshev (recta
“intermedia”).

33
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

3º. Siendo f(x) = sen(5·x+2) , x0 = 0 y x1 = π/10 se tiene que los polinomios


de base de Lagrange están dados por las expresiones:
π
x−
10 x
L0 (x) = L1(x) =
π π

10 10

L0(x) L1(x)

El polinomio interpolador de Lagrange de f(x) sobre este soporte es:


π
x−
p1(x) = f(0)·L0(x) + f(π/10)·L1(x) = sen(2)· 10 + sen(2 + π )· x =
π 2 π

10 10
10 ⎛ ⎛4+π⎞ ⎞ 10
= sen(2) + ·⎜ sen ⎜ ⎟ − sen(2) ⎟·x = sen(2) + ·( cos ( 2 ) − sen(2) )·x
π ⎝ ⎝ 2 ⎠ ⎠ π

34
Programación y Métodos Numéricos Interpolación polinómica

f(x)
p1(x)

El error de interpolación en cada punto x* del intervalo [0, π/10], utilizando el


teorema que nos proporcionaba dicho error, responde a la expresión:

⎡ π⎤ 25·sen(5·ξ * +2) ⎛ π ⎞
∀x* ∈ ⎢0, ⎥ , ∃ξ* = ξ(x*) / E(x*)=f(x*)-p1(x*) = − ·x *·⎜ x * − ⎟
⎣ 10 ⎦ 2 ⎝ 10 ⎠

Como en este caso hemos partido de una función f(x) de la que se conoce su
expresión analítica, el error de interpolación también se podría obtener
mediante:

10
E(x*) = f(x*) – p1(x*) = sen(5·x*+2) - sen(2) − ·( cos(2) − sen(2))·x
π

Ello nos permitiría, para cada punto x*, encontrar algún punto ξ * en el que se
satisfaga la expresión del error obtenida mediante el teorema. Así por ejemplo,
para el punto x* = π/20 se tendrá que utilizando la primera expresión del error:

π 25·sen(5·ξ * +2) π ⎛ π π ⎞ π2
E( )=− · ·⎜ − ⎟ = ·sen(5·ξ * +2)
20 2 20 ⎝ 20 10 ⎠ 32

y de la segunda:

π π π ⎛ π⎞ 1
E( ) = f( ) − p1( ) = sen ⎜ 2 + ⎟ −sen(2) − ·( cos ( 2 ) − sen(2) )
20 20 20 ⎝ 4⎠ 2

35
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Identificando las dos expresiones del error se tiene que en este caso el punto
ξ * estará dado por la solución de:

π2 ⎛ π⎞ 1
·sen(5·ξ * +2) = sen ⎜ 2 + ⎟ −sen(2) − ·( cos ( 2 ) − sen(2) )
32 ⎝ 4⎠ 2
por lo que:
2 1 ⎛ 16 ⎛ ⎛π ⎞ ⎞⎞
ξ* = − + ·arcsen ⎜ 2 ·⎜ 2·sen ⎜ + 2 ⎟ − sen(2) − cos(2) ⎟ ⎟
5 5 ⎝π ⎝ ⎝4 ⎠ ⎠⎠

Entre los diferentes ángulos que verifican la expresión anterior, tomaremos el


que pertenezca al intervalo [0, π/10] que, aproximado con 10 dígitos decimales,
es:
ξ* ≈ 0.1608142204 rad.

Puede verificarse que para este valor ambas expresiones del error conducen a
que: E(π/20) = 0.10213483....

Una cota del error de interpolación en este intervalo puede obtenerse de la


forma siguiente:
⎡ π⎤ 25 ⎛ π ⎞
∀x ∈ ⎢0, ⎥ : E(x) ≤ sup sen(5·x + 2)· sup x·⎜ x − ⎟
⎣ 10 ⎦ 2 x∈⎛ 0, π ⎞
⎜ ⎟
⎛ π ⎞
x∈⎜ 0, ⎟ ⎝ 10 ⎠
⎝ 10 ⎠ ⎝ 10 ⎠

En el intervalo [0, π/10] el argumento α = (5·x+2) de la función seno que


interviene en la acotación anterior toma valores comprendidos entre:

αi = 2

α
π
2≤ α ≤ 2+
2
αf = 2+π/2

Por tanto los valores extremos de sen(α) se alcanzarán en 2 y en (2+π/2).


Puesto que sen(2) = 0.909297426... y sen(2+π/2) = -0.416146836.... puede
concluirse que: M = sup sen(5·x + 2) = 0.909297426... < 0.909298 .
⎛ π ⎞
x∈⎜ 0, ⎟
⎝ 10 ⎠

36
Programación y Métodos Numéricos Interpolación polinómica

Por otra parte el valor extremo de q(x) = x·(x-π/10) en el intervalo (0, π/10) se
alcanza en el punto en que se anule q’(x) (pues en los extremos del intervalo
[0, π/10] el polinomio se anula), es decir en el punto obtenido mediante:

π π
2·xm − = 0 ⇒ xm =
10 20
en el que q(x) toma el valor:
π2
q(xm ) = − = -0.024674011...
400

q(x)

Todo lo anterior nos permite tomar como cota del error de interpolación:

⎡ π⎤ 25
∀x ∈ ⎢0, ⎥ : E(x) ≤ ·(0.909298)·(0.024675) = 0.280461...
⎣ 10 ⎦ 2

En este caso puede verificarse fácilmente el carácter de cota superior del error
del valor que se acaba de hallar. En efecto el máximo de la función error de
interpolación se produce en el punto en que se anule la expresión:

E’(x) = f’(x) – p’1(x) = 5·cos(5·x+2) – (10/π)·(cos(2)-sen(2))

Ello nos conduce al punto:

2 1 ⎛2 ⎞
c=− + ·arccos ⎜ ·( cos(2) − sen(2) ) ⎟ ≈ 0.115025797
5 5 ⎝π ⎠

37
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

siendo el error máximo cometido en la interpolación:

E(c) = f(c) – p1(c) = 0.11265....

es decir menos de la mitad de la cota anteriormente hallada.

4º. Una función con la que frecuentemente se ilustra el buen comportamiento


de los soportes de Chebyshev es la denominada función de Runge que está
dada por:
1
f(x) =
1+ x2

Las figura siguiente recoge el grafo de f(x) en el intervalo [-6, 6] y el grafo del
polinomio interpolador de Lagrange obtenido con el soporte formado por los 7
puntos {-6, -4, -2, 0, 2, 4, 6}. Puede observarse el “alto” valor del error de
interpolación máximo.

Si en lugar del soporte equidistante se trabajase con un soporte de Chebyshev


formado por los 7 puntos dados por la expresión:

⎛ 2·i + 1 ⎞
xi = 6·cos ⎜ ·π ⎟ (i=0, 1, 2, 3, 4, 5, 6)
⎝ 14 ⎠

38
Programación y Métodos Numéricos Interpolación polinómica

el error de interpolación máximo se reduciría notablemente. Ello puede


apreciarse en las gráficas de f(x) y del polinomio interpolador hallado de esta
forma que se recogen en la figura siguiente:

El incremento del número de puntos del soporte no ayuda a mejorar la


precisión en el caso de utilizarse soportes equidistantes aunque sí que lo hace
en este caso si se utilizan soportes de Chebyshev. Como ilustración de este
hecho, la figura siguiente recoge el grafo de f(x) en el intervalo [-6, 6] y el grafo
del polinomio interpolador de Lagrange obtenido con el soporte formado por los
13 puntos {-6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4, 5, 6}. Puede observarse el “alto”
valor del error de interpolación máximo.

Si los 13 puntos se hubieran escogido según la fórmula del soporte de


Chebyshev:

⎛ (2·i + 1) ⎞
xi = 6·cos ⎜ ·π ⎟
⎝ 26 ⎠

39
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

la figura siguiente recoge la gráfica de la función f(x) y del polinomio


interpolador de Lagrange. En ella se aprecia la reducción del máximo valor del
error de interpolación.

Ejercicios propuestos:

1º) Siendo f(x) = 2·x·e-(4·x+2) y considerando el soporte formado por los tres
puntos siguientes {x0 = 0.2, x1 = 0.5, x2 = 0.8}, se pide:

a) Determinar la expresión de los polinomios de base de Lagrange


asociados a dicho soporte y representarlos en el intervalo [0, 1].

b) Utilizar la fórmula de Lagrange para determinar la expresión del


polinomio interpolador de Lagrange de f(x) sobre el soporte {x0, x1, x2}.

c) Representar gráficamente en [0, 1] la función f(x) y su polinomio


interpolador.

d) Utilícese el teorema 3 que proporciona la fórmula del error de


interpolación para determinar la expresión del error de interpolación en
este caso.

e) Determínese la expresión del error de interpolación como la diferencia


entre la función f(x) y el polinomio interpolador hallado.

40
Programación y Métodos Numéricos Interpolación polinómica

f) A partir de las dos expresiones del error calculadas en los apartados


anteriores obténgase alguno de los puntos ξ* ∈ [0,1] en los que se
verifica que el error de interpolación cometido en x*=0.4 está dado por la
fórmula obtenida en el apartado d).

g) Obténgase una cota del error de interpolación en cualquier punto


x ∈ [0,1] a partir de la expresión del apartado d).

h) Determínense, a partir de la expresión del error obtenida en el apartado


e) los puntos del intervalo [0, 1] en los que se hace máximo el valor
absoluto del error de interpolación y compárese el error máximo con la
cota obtenida en el apartado g).

2º) Repítase el ejercicio anterior utilizando un soporte de Chebyshev con tres


puntos en el intervalo [0, 1].

3º) Analícese la evolución de la cota del error de interpolación de Lagrange al


incrementar el número de puntos del soporte cuando se interpola en el intervalo
la función de Runge f(x) = (1+x2)-1 utilizando un soporte equidistante.

41
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

2.3. La fórmula de interpolación de Newton,

Otra forma de calcular el polinomio interpolador de Lagrange de una función


f(x) sobre un soporte {x0, x1, ..., xn} es a través de la denominada fórmula de
Newton. Dicha fórmula es muy eficiente cuando se persigue calcular el
polinomio interpolador o el valor de dicho polinomio en algún punto concreto ya
que los coeficientes del polinomio interpolador pueden obtenerse fácilmente a
partir de las tablas de diferencias divididas de la función en el soporte de
interpolación. Es además una fórmula que además permite actualizar
fácilmente la expresión del polinomio interpolador si se añade un nuevo punto
al soporte de interpolación.

Como ya se señaló en la introducción a este tema, la fórmula de Newton puede


obtenerse fácilmente si se expresa el polinomio interpolador de Lagrange de la
función f(x) sobre el soporte {x0, x1, ..., xn} mediante la expresión:

pn (x) = a0 + a1·(x − x 0 ) + a2 ·(x − x 0 )·(x − x1 ) + ... + an ·(x − x 0 )·(x − x1 )·...·(x − xn−1 ) =

n ⎛ i−1 ⎞
= a0 + ∑ ⎜ ai ∏ (x − x j ) ⎟
i=1 ⎝ j =0 ⎠

Con esta expresión, y denotando por fi a los valores f(xi), las (n+1) igualdades
que debe verificar el polinomio interpolador de Lagrange, p(xi) = fi, conducen a
un sistema de ecuaciones triangular inferior del que es sencillo despejar el
valor de los coeficientes a0, a1, ..., an.

Observemos que si el soporte estuviera formado por un único punto {x0} el


polinomio interpolador sería una constante:
p0(x) = a0
y como p(x0) debe coincidir con f0 es obvio que: a0 = f0.

Si ahora se considera el soporte {x0, x1} el polinomio interpolador de Lagrange


sería un primer grado que tendría la expresión:

p1(x) = a0 + a1·(x – x0)

y al tener que verificarse que p(x0) = f0 y p(x1) = f1 se verificará que:

42
Programación y Métodos Numéricos Interpolación polinómica

f1 − f0
a0 = f0 y a1 =
x1 − x 0
Ello nos permite expresar p1(x) en la forma:
f1 − p0 (x1 )
p1(x) = p0(x) + a1·(x-x0) = p0(x) + ·(x-x0)
x1 − x 0

donde p0(x) es el polinomio interpolador de Lagrange en el soporte {x0}.

De forma análoga, si ahora se considera el soporte {x0, x1, x2} el polinomio


interpolador de Lagrange será de segundo grado y tendrá la expresión:

p2(x) = a0 + a1·(x-x0) + a2·(x-x0)·(x-x1)

y de las igualdades p(x0) = f0 , p(x1) = f1 y p(x2) = f2 se obtiene que:

f1 − f0 f2 − (a0 + a1 ( x 2 − x 0 ))
a0 = f0 , a1 = y a2 =
x1 − x 0 ( x 2 − x0 )·(x 2 − x1 )

lo que nos permite escribir el polinomio interpolador en la forma:

f1 − f0 f − (a0 + a1 ( x 2 − x 0 ))
p2(x) = f0 + ·(x-x0) + 2 ·(x-x0)·(x-x1) =
x1 − x 0 ( x 2 − x0 )·(x 2 − x1 )

f2 − p1(x 2 )
= p1(x) + ·(x-x0)·(x-x1)
( x 2 − x0 )·(x 2 − x1 )
donde p1(x) es el polinomio interpolador de Lagrange en el soporte {x0, x1}.

En general, siendo pk-1(x) el polinomio interpolador de Lagrange sobre el


soporte {x0, x1, ..., xk-1} y denotando por pk(x) al polinomio interpolador de
Lagrange sobre el soporte {x0, x1, ..., xk-1, xk} se verifica19 que:

k −2 k −1
pk (x) = a0 + a1·(x − x 0 ) + ... + ak −1·∏ (x − x j ) +ak ·∏ (x − x j ) =
j=0 j=0

k −1
= pk-1(x) + ak ·∏ (x − x j )
j= 0

y de la igualdad pk(xk) = fk se tendrá que:

19
Esta afirmación se demostrará con mayor detalle un poco más adelante.

43
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

fk − pk −1(xk )
ak = k −1

∏ (x
j= 0
k − xj )

Podemos observar además que en el cálculo de a0 sólo interviene el valor en


{x0}, que en el cálculo de a1 intervienen los valores en {x0 , x1}, y que, en
general, en el cálculo de ak intervienen los valores en {x0, x1, ..., xk}. Es por ello
habitual referirse a estos coeficientes con la notación a0 = f[x0], a1 = f[x0 ,x1], ...,
ak = f[x0, x1, ..., xk] (k = 0, 1, ..., n) poniendo así de manifiesto los puntos del
soporte que intervienen en su cálculo.

Ello tiene especial interés si se observa que el orden en el que se han ido
tomando los puntos del soporte ( {x0}, {x0, x1}, ..., {x0, x1, ..., xk}, ...) podría haber
sido diferente. En efecto, observemos que, siendo único el polinomio
interpolador, podemos expresarlo de múltiples maneras dependiendo de la
ordenación del soporte de interpolación. En efecto, si denotamos por {i0, i1, ...,
in} a una permutación cualquiera de los índices { 0, 1, ..., n} y consideramos el
mismo soporte que antes pero reordenado en la forma xi0 ,xi1 ,...,x in el { }
polinomio interpolador de Lagrange se podría expresar como:

pn (x) = a0* + a1* ·(x − x i0 ) + a2* ·(x − x i0 )·(x − xi1 ) + .... + an* ·(x − xi0 )·(x − xi1 )·...·(x − xin −1 ) =

n ⎛ i−1 ⎞
= a'0 + ∑ ⎜ ai' ·∏ (x − xij ) ⎟
i=1 ⎝ j= 0 ⎠

Obviamente los coeficientes {a0, a1, ...,an-1} y {a0* ,a1* ,...,an* −1} no tienen por qué
coincidir y ahora se tendrá que:
a0* = f ⎣⎡ xi0 ⎦⎤ = fi0 ,
.....,

fik − pk* −1(xik )


a = f ⎡⎣ xi0 ,xi1 ,...,xik ⎤⎦ =
*
ik
(k = 1, ...., n)
∏(x )
k −1

ik − x ij
j= 0

donde pk* −1(x) es el polinomio de Lagrange sobre el soporte xi0 ,xi1 ,...,xik −1 . { }

44
Programación y Métodos Numéricos Interpolación polinómica

Pero puesto que el polinomio interpolador de Lagrange es único, ambas


expresiones conducen al mismo polinomio interpolador independientemente del
orden en que se tomen sus puntos. Por tanto el coeficiente de xi (i = 0, 1, ..., n)
en ambas expresiones debe ser el mismo. Ello implica que an* = an o con la
notación que hemos introducido anteriormente: f [ x 0 ,x1,...,x n ] = f ⎡⎣ xi0 ,xi1 ,..., xin ⎤⎦ .

Concretemos más estos aspectos. Según hemos detallado anteriormente, si


en la expresión del polinomio interpolador que estamos considerando en este
apartado sólo se consideran sus (k+1) primeros sumandos (con k < n), el
polinomio pk(x) correspondiente es el polinomio interpolador de f(x) sobre el
soporte {x0, x1, ..., xk} ya que, siendo un polinomio de grado menor o igual que
k se verifica que pk(xi) = fi (i = 0, 1, ..., k) . Ello permite interpretar la fórmula
anterior como una fórmula “recursiva” en la que a partir del polinomio de grado
k-1 que interpola a la función f(x) en el soporte {x0, x1, ..., xk-1}:

k −1 ⎛ i−1 ⎞
pk(x) = a0 + ∑ ⎜ ai ∏ (x − x j ) ⎟
i=1 ⎝ j= 0 ⎠

puede obtenerse fácilmente el polinomio interpolador de Lagrange, pk(x), de f(x)


sobre el soporte {x0, x1, ..., xk} mediante:

k −1
pk(x) = pk-1(x) + ak· ∏ (x − x j )
j=0

Supongamos dado un soporte de n puntos distintos {x0, x1, ...., xn-1} y conocidos
los valores fi (i = 0, ..., n-1) que toma una función f(x) en dichos puntos. El
polinomio interpolador de Lagrange, pn-1(x), de f(x) en este soporte verificará:

pn-1(x) = fi (i = 0, ..., (n-1))

Si al soporte anterior se le añade un nuevo punto xn, disitinto a los que


formaban el soporte anterior, obteniendo así el soporte de (n+1) puntos {x0, x1,
...., xn-1, xn} y se denota por fn al valor f(xn), el nuevo polinomio interpolador de
Lagrange, pn(x), de la función f(x) sobe este soporte deberá satisfacer las
igualdades:
pn(x) = fi (i = 0, …, (n-1), n)

45
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Si se denota por qn(x) al polinomio de grado n: qn(x) = pn(x) – pn-1(x) se tendrá


verifica que:
q(xi) = 0 (i = 0, ..., (n-1))

Se tiene así que {x0, ..., x(n-1)} son n raíces del polinomio de grado qn(x). Ello
nos permite escribir este polinomio en la forma:

(n −1)
qn(x) = an·(x-x0)·(x-x1)·…·(x-x(n-1)) = an· ∏ (x − x j )
j=0

Y puesto que qn(x) = pn(x) – pn-1(x) se obtiene que:

(n −1)
∀x ∈ {x0 ,...,xn−1} : pn(x) – pn-1(x) = an· ∏ (x − x j ) ⇒
j=0

pn (x) − pn−1(x)
⇒ an = (n −1)
∀x ∉ {x 0 ,...,xn−1}
∏ (x − x )
j=0
j

En particular para x = xn se tiene que:

pn (xn ) − pn−1(xn ) fn − pn−1(xn )


an = (n −1)
= (n−1)
∏ (xn − x j ) ∏ (xn − x j )
j= 0 j=0

Con esta expresión de an resulta finalmente que:


f − p (x ) (n−1)
pn (x) = pn−1(x) + (nn−1) n−1 n ·∏ (x − x j )
∏ (xn − x j ) j=0
j=0

Definición (Diferencias divididas)


Se denomina diferencia dividida de la función f(x) en el soporte {x0, ..., xn-1,
xn}, y se representa por f[x0, ..., xn-1, xn], al valor del coeficiente an previamente
obtenido, es decir:
f − pn−1(xn )
f [ x 0 ,x1,...,xn−1,xn ] = n
(n −1)

∏ (x
j =0
n − xj )

46
Programación y Métodos Numéricos Interpolación polinómica

Denotemos por f[xi] = fi (i = 0, 1, ..., n). Según el desarrollo anterior, si se


considera un soporte formado por el punto {x0} se verifica que p0(x0) = a0 = f0
(= f[x0]). A partir de este polinomio, si se añade un nuevo punto al soporte para
tener {x0, x1} se tendrá que:

p1(x)= p0(x) + f[x0, x1]·(x-x0) = f[x0] + f[x0, x1]·(x-x0)

Añadiendo ahora al soporte el punto x2 para tener {x0, x1, x2} resultará que:

p2(x)= p1(x) + f[x0, x1, x2]·(x-x0)·(x-x1) =

= f[x0] + f[x0, x1]·(x-x0) + f[x0, x1, x2]·(x-x0)·(x-x1)

En general se tendrá que:

pn(x)= pn-1(x) + f[x0, x1,…, xn-1, xn]·(x-x0)·(x-x1)·...(x-xn-1) =

n ⎛ (i−1)

= f[x 0 ] + ∑ ⎜ f [ x 0 ,...,xi ]·∏ (x − x j ) ⎟
i=1 ⎝ j= 0 ⎠

La fórmula anterior se conoce como fórmula de interpolación de Newton. Su


uso, por el momento, sólo plantearía la dificultad de calcular las diferencias
divididas que en ella intervienen.

Demostremos algunas propiedades de las diferencias divididas que nos


permitirán desarrollar una forma más cómoda de calcularlas.

Propiedad 1.
Sea {i0, i1, ..., im-1, im} un conjunto de (m+1) índices diferentes del conjunto de
(n+1) índices {0, 1, ...., n} y sea {j0, j1, ... , jm-1, jm} cualquier otro conjunto de m
índices obtenido como una permutación del conjunto de índices {i0, i1, ..., im-1,
im}. Se verifica que:
f ⎡⎣ xi1 ,xi2 ,...,xim −1 ,xim ⎤⎦ = f ⎡⎣ x j1 ,x j2 ,....,x jm −1 ,x jm ⎤⎦
Demostración:
Según el proceso antes descrito, el cálculo del polinomio
interpolador de Lagrange mediante la fórmula de Newton se puede ir
{ }
realizando, sobre el soporte xi0 ,xi1 ,...,xim , de la forma siguiente:

47
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

{ }
Sobre xi0 : p0(x) = fi0 = f ⎡⎣ xi0 ⎤⎦

{
Sobre xi0 ,xi1 : } ( )
p1(x)=p0+ f ⎡⎣ xi0 ,xi1 ⎤⎦· x − xi0 = f ⎡⎣ xi0 ⎤⎦ + f ⎡⎣ xi0 ,xi1 ⎤⎦· x − xi0 ( )

{
Sobre xi0 ,xi1 ,xi2 : } p2(x) = p1(x) + f ⎡⎣ xi0 ,xi1 ,xi2 ⎤⎦· x − xi0 ·( x − xi1 ) =
( )
= f ⎡⎣ xi0 ⎤⎦ + f ⎡⎣ xi0 ,xi1 ⎤⎦· x − xi0 + f ⎡⎣ xi0 ,xi1 ,xi2 ⎤⎦· x − xi0 ·( x − xi1 )
( ) ( )
........

{ }
Sobre xi0 ,xi1 ,...,xim : pm(x) = f ⎡⎣ xi0 ⎤⎦ + f ⎡⎣ xi0 ,xi1 ⎤⎦· x − xi0 (+ )
+ f ⎡⎣ xi0 ,xi1 ,xi2 ⎤⎦· x − xi0 ·( x − xi1 ) +
( )
+....+ f ⎡⎣ xi0 ,xi1 ,...,x im ⎤⎦· x − x i0 ·( x − xi1 )·...·( x − xim −1 )
( )

Si ahora se considera el mismo soporte pero reordenado en la forma


{ }
x j0 ,x j1 ,...,x jm −1 ,x jm puede repetirse el proceso obteniendo como polinomios
interpoladores:

{ }
Sobre x j0 : q0(x) = f j0 = f ⎡⎣ x j0 ⎤⎦

{
Sobre x j0 ,x j1 :} ( ) (
q1(x)=q0+ f ⎡⎣ x j0 ,x j1 ⎤⎦· x − x j0 = f ⎡⎣ x j0 ⎤⎦ + f ⎡⎣ x j0 ,x j1 ⎤⎦· x − x j0 )

{ }
Sobre x j0 ,x j1 ,x j2 : q2(x) = q1(x) + f ⎡⎣ x j0 ,x j1 ,x j2 ⎤⎦· x − x j0 ·( x − x j1 ) =
( )
= f ⎡⎣ x j0 ⎤⎦ + f ⎡⎣ x j0 ,x j1 ⎤⎦· x − x j0 + f ⎡⎣ x j0 ,x j1 ,x j2 ⎤⎦· x − x j0 ·( x − x j1 )
( ) ( )
........

{ } (
Sobre x j0 ,x j1 ,...,x jm : qm(x) = f ⎡⎣ x j0 ⎤⎦ + f ⎡⎣ x j0 ,x j1 ⎤⎦· x − x j0 + )
+ f ⎡⎣ x j0 ,x j1 ,x j2 ⎤⎦· x − x j0 ·( x − x j1 ) +
( )
+....+ f ⎡⎣ x j0 ,x j1 ,...,x jm ⎤⎦· x − x j0 ·( x − x j1 )·...·( x − x jm −1 )
( )

En virtud del teorema 1 en el que se demostró la existencia y unicidad del


polinomio interpolador de Lagrange, se verifica que qm(x) y pm(x) son el mismo
polinomio pues interpolan a f(x) sobre el mismo soporte (aunque ordenado de

48
Programación y Métodos Numéricos Interpolación polinómica

formas distintas). Identificando los coeficientes que multiplican a xm en ambos


coeficientes se tiene que:

f ⎡⎣ xi0 ,xi1 ,...,x im ⎤⎦ = f ⎡⎣ x j0 ,x j1 ,...,x jm ⎤⎦


c.q.d.

Propiedad 2
Sea {i0, i1, ..., im-1, im} un conjunto de m índices diferentes del conjunto de (n+1)
índices {0, 1, ...., n}. Se verifica que:

f ⎡ x i ,...,xim −1 ,xim ⎤⎦ − f ⎡⎣ xi0 ,xi1 ,...,xim −1 ⎤⎦


f ⎡⎣ x i 0 ,x i1 ,...,x im −1 ,x im ⎤⎦ = ⎣ 1
xim − x i0

donde f[xk] = f(xk) (k = i0, i1, ..., im).

Demostración:
Según los desarrollos realizados para obtener la fórmula de Newton, si se
{ }
considera el soporte xi 0 ,xi1 ,...,x im −1 ,x im se tendrá que el polinomio interpolador

de Lagrange de f(x) (que será de grado menor o igual que m) responde a la


expresión:

pm(x) = pm-1(x) + f ⎡⎣ xi 0 ,xi1 ,...,xim −1 ,xim ⎤⎦ · x − xi0 ·( x − xi1 )·...·( x − xim −1 ) =


( )

= f ⎣⎡ xi0 ⎦⎤ + f ⎣⎡ xi0 ,xi1 ⎦⎤·(x − xi0 ) + f ⎣⎡ xi0 ,xi1 ,xi2 ⎦⎤·(x − xi0 )·(x − xi1 ) + ….+

+ f ⎡⎣ xi 0 ,xi1 ,...,xim −1 ,xim ⎤⎦ · x − xi0 ·( x − xi1 )·...·( x − xim − 2 )(


( ) · x − xim −1 )

{
Si el soporte se considera en orden inverso, xi m ,xim −1 ,...,x i1 ,xi0 , los sucesivos }
polinomios interpoladores que se irán obteniendo serán:

Sobre {xim } : q0(x) = fim = f ⎡⎣ xim ⎤⎦

Sobre {xim ,xim −1 } : q1(x) = q0(x) + f ⎡⎣ xim ,xim −1 ⎤⎦·( x − xim ) =

49
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

= f ⎡⎣ xim ⎤⎦ + f ⎡⎣ xim ,xim −1 ⎤⎦·( x − xim )

Sobre {xim ,xim −1 ,,xim − 2 } :q2(x) = q1(x)+ f ⎡⎣ xim ,xim −1 ,xim − 2 ⎤⎦·( x − xim )(
· x − xim −1 ) =

= f ⎡⎣ xim ⎤⎦ + f ⎡⎣ xim ,xim −1 ⎤⎦·( x − xim ) + f ⎡⎣ xim ,xim −1 ,xim − 2 ⎤⎦·( x − xim )(
· x − xim −1 )
........

{
Sobre xim ,xim−1 ,,xim − 2 ,...,xi0 : }
qm(x)= f ⎡⎣ xim ⎤⎦ + f ⎡⎣ xim ,xim −1 ⎤⎦·( x − xim ) + f ⎡⎣ xim ,xim −1 ,xim − 2 ⎤⎦·( x − xim )(
· x − xim −1 ) +

+ .... + f ⎡⎣ xim ,xim −1 ,xim − 2 ,...,x i1 ⎤⎦·( x − xim )(


· x − xim −1 )·...·( x − xi2 ) +

+ f ⎡⎣ xim ,xim −1 ,xim − 2 ,...,xi1 ,xi0 ⎤⎦·( x − xim )(


· x − xim−1 )·...·( x − xi2 )(
· x − xi1 )

En virtud del teorema 1 (de existencia y unicidad del polinomio interpolador de


Lagrange) el polinomio interpolador de f(x) sobre el soporte de (m+1) puntos
{ }
xi 0 ,xi1 ,...,x im −1 ,x im es único y no depende del orden en que se tomen los puntos.

Por tanto qm(x) = pm(x). Identificando los coeficientes de xm en las expresiones


de pm(x) y qm(x) se tiene que:

f ⎡⎣ xi 0 ,xi1 ,...,xim −1 ,xim ⎤⎦ = f ⎡⎣ xim ,xim −1 ,xim − 2 ,...,xi1 ,xi0 ⎤⎦

Identificando ahora los coeficientes que multiplican a xm-1 se tiene que:

( )
f ⎡⎣ xi0 ,xi1 ,...,xim −1 ,xim ⎤⎦· − xi0 − xi1 − ... − xim −1 + f ⎡⎣ xi0 ,xi1 ,...,xim −1 ⎤⎦ =

= f ⎡⎣ xim ,xim −1 ,...,x i1 ,xi0 ⎤⎦·( − xim − xim −1 − ... − xi1 ) + f ⎡⎣ xim ,xim −1 ,...,xi1 ⎤⎦

Y puesto que, en virtud de la propiedad anterior el orden en que se tomen los


puntos no altera el valor de la diferencia dividida, la igualdad anterior se puede
rescribir en la forma:
( )
f ⎡⎣ xi0 ,xi1 ,...,xim −1 ,xim ⎤⎦ · xim − xi0 = f ⎡⎣ xi1 ,xi2 ,...,x im ⎤⎦ − f ⎡⎣ xi0 ,xi1 ,...,xim −1 ⎤⎦

50
Programación y Métodos Numéricos Interpolación polinómica

de donde:
f ⎡ x i ,...,xim −1 ,xim ⎤⎦ − f ⎡⎣ xi0 ,xi1 ,...,xim −1 ⎤⎦
f ⎡⎣ x i 0 ,xi1 ,...,xim −1 ,xim ⎤⎦ = ⎣ 1
xim − x i0
c.q.d.

La propiedad anterior permite calcular fácilmente las diferencias divididas


ordenando los cálculos en la forma recogida en la tabla siguiente (construida
para un soporte de 5 puntos) en la que los cálculos se irán realizando columna
a columna:

x0 → f [ x0 ] → f [ x 0 ,x1 ] → f [ x 0 , x1, x 2 ] → f [ x 0 ,x1,x 2 , x 3 ] → f [ x 0 , x1, x 2 ,x 3 ,x 4 ]


x1 → f [ x1 ] → f [ x1,x 2 ] → f [ x1,x 2 , x 3 ] → f [ x1, x 2 , x 3 ,x 4 ]
x2 → f [ x 2 ] → f [ x 2 ,x 3 ] → f [ x 2 ,x 3 ,x 4 ]
x3 → f [ x3 ] → f [ x3 , x 4 ]
x4 → f [x4 ]

Esta forma de proceder es la que se recoge en el siguiente algoritmo de


construcción de la tabla de diferencias divididas sobre un soporte de (n+1)
puntos.

Algoritmo de construcción de la tabla de diferencias divididas20.

Datos: n, {x0, x1, ...., xn } y {f0, f1, ...., fn}

Para i desde i = 0 hasta i = n con paso 1 hacer:


f[xi] = fi
Fin bucle en i.

Para j desde j = 1 hasta j = n con paso 1 hacer:


Para i desde i = 0 hasta i = (n-j) , con paso 1, hacer:
f[xi, ..., xi+j] = (f[xi+1, ..., xi+j]- f[xi, ..., xi+j-1]) /(xi+j – xi)
Fin bucle en i.
Fin bucle en j.

Fin algoritmo.

20
En la programación de este algoritmo es habitual almacenar los valores de las diferencias
divididas en una matriz de dimensiones (n+1, n+1) en las que los elementos Ai,1 almacenan los
valores f[xi-1] (i= 1, ..., n+1) y los elementos Ai,j almacenan los valores de f[xi-1, ..., xi+j-2] (j = 2,
..., n+1; i = 1, ...., n+2-j).

51
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Ejemplos:
1º) Utilícese la fórmula de Newton para obtener la expresión del polinomio
interpolador de Lagrange de la función f(x) = 2·x·e-(4·x+2) sobre el soporte
{x0 = 0, x1 = 1/3, x2 = ½, x3 = 1}.

Se tiene que:
f0 = f(0) = 0 = f[x0], f1 = f(1/3) ≈ 0.02378266 = f[x1],

f2 = f(1/2) ≈ 0.01831564 = f[x2] , f3 = f(1) ≈ 0.00495750 = f[x3]

Con estos valores y utilizando la relación de recurrencia:


f [ xi+1,..., xi+k −1,xi+k ] − f [ xi ,xi+1,..., xi+k −1 ]
f [ xi ,...,xi+k ] =
x i+k − x i

se puede construir la tabla de diferencias divididas:

i xi f[xi] f[xi,xi+1] f[xi,xi+1,xi+2] f[xi,xi+1,xi+2, xi+3]

0 0 0 0.07134799 -0.20830025 0.21742906

1 1/3 0.02378266 -0.03280214 0.00912881

2 1/2 0.01831564 -0.02671627

3 1 0.00495750

por lo que utilizando la fórmula de Newton se tiene que:

p3(x) = 0 + 0.07134799·(x-0) + (-0.20830025)·(x-0)·(x – 1/3) +

+ 0.21742906·(x-0)·(x-1/3)·(x-1/2) =

= 0.1770195813· x - 0.3894911370·x2 + 0.2174290601·x3

La figura siguiente recoge la gráfica de la función f(x) (en trazo discontinuo) y


del polinomio interpolador de Lagrange.

52
Programación y Métodos Numéricos Interpolación polinómica

f(x)

p3(x)

2º) Calcúlese la expresión del polinomio interpolador de Lagrange de la


misma función que en el ejercicio anterior, f(x) = 2·x·e-(4·x+2) sobre el soporte
{ 0, 1/3, 1/2 , 2/3, 1}.

El soporte de interpolación es el del ejercicio anterior añadiéndole el punto 2/3.


Si denotamos por x0 = 0, x1 = 1/3, x2 = ½, x3 = 1 y x4 = 2/3 puede
completarse la tabla de diferencias divididas como sigue (se han escrito en
cursiva los nuevos valores que ha sido necesario calcular):

i xi f[xi] f[xi,xi+1] f[xi,xi+1,xi+2] f[xi,xi+1,xi+2, xi+3] f[x0,x1,x2, x3, x4]

0 0 0 0.07134799 -0.20830025 0.21742906 -0.25991085

1 1/3 0.02378266 -0.03280214 0.00912881 0.044155155

2 1/2 0.01831564 -0.02671627 0.02384719

3 1 0.00495750 -0.02274174

4 2/3 0.01253808

por lo que f[x0, x1,x2, x3, x4] = - 0.25991085 y el nuevo polinomio interpolador
estará dado por:

53
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

p4(x) = p3(x) + (-0.25991085)·(x-0)·(x-1/3)·(x-1/2)·(x-1) =

= 0.1770195813· x - 0.3894911370·x2 + 0.2174290601·x3 –

-0.25991085 · (x-0)·(x-1/3)·(x-1/2)·(x-1) =

= 0.22033805·x – 0.64940199·x2 + 0.69393230·x3 –0.25991085·x4

f(x)

p4(x)

Propiedad 3
Si f ∈ Cn ( ( a,b ) ) , para todo soporte de (n+1) puntos distintos {x0, x1, ..., xn}
pertenecientes al intervalo [a, b] existe un punto ξ ∈ ( a,b ) verificando que:
f (n (ξ)
f [ x 0 ,x1,...,xn ] =
n!
Demostración:
Consideremos el soporte {x0, x1, ..., xn-1} y designemos por pn-1(x) al polinomio
interpolador de f(x) sobre él. Según la fórmula del error de interpolación de
Lagrange (proporcionada en el teorema 2 del apartado 2.2.) si f ∈ Cn ((a,b)) se
verifica que:
f (n (ξ) n−1
∀x ∈ (a,b) ∃ξ=ξ(x) / f(x)-pn-1(x) = ·∏ (x − x j )
n! j=0
En particular, si con esta fórmula se evalúa el error en el punto xn se tendrá
que:
f (n (ξ) n−1
∃ξ=ξ(xn ) / f(x n )-pn-1(xn ) = ·∏ (xn − x j )
n! j=0
de donde:

54
Programación y Métodos Numéricos Interpolación polinómica

f(x n )-pn-1(xn ) f (n (ξ)


∃ξ=ξ(x n ) / n −1
=
n!
∏ (x
j=0
n − xj)

siendo el lado izquierdo de la igualdad anterior la diferencia dividida en {x0, ..,


xn}. En resumen si f ∈ Cn ((a,b)) , para todo soporte de (n+1) puntos distintos {x0,
.., xn} de (a, b), se vrifica que:

f (n (ξ)
∃ξ / f [ x 0 ,x1,...,xn−1,xn ] =
n!
c.q.d.

Una consecuencia inmediata de la propiedad anterior es que si f(x) es una


función polinómica de grado m, las diferencias divididas construidas sobre más
de (m+1) puntos serán nulas (pues la derivada de orden (m+1) de un polinomio
de grado m siempre es nula)21.

El error de interpolación también puede expresarse en términos de diferencias


divididas. Esto es lo que se hace en el siguiente teorema

Teorema 4
Siendo f ∈ C(n+1) ((a,b)) y denotando por pn(x) al polinomio interpolador de
Lagrange de f(x) construido sobre un soporte genérico de (n+1) puntos distintos
{x0, ..., xn} pertenecientes al intervalo (a, b), se verifica que:

n
∀x* ∈ (a,b) / x* ∉ {x 0 ,...,xn } : E(x*) = f(x*) - pn (x*) = f[x 0 ,x1,...,xn ,x*]·∏ (x * − x j )
j=0

Demostración:
Por definición de la diferencia dividida en {x0, ..., xn, x*} se tiene que:

f(x*) − pn (x*)
f [ x 0 ,...,xn ,x * ] = n

∏ (x * − x )
j= 0
j

21
A la misma conclusión podría haberse llegado considerando que el polinomio interpolador de
una función polinómica de grado m es ella misma y que por tanto, si se usa la fórmula de
Newton para expresar el polinomio interpolador deben ser nulas todas las diferencias divididas
construidas sobre (m+1) puntos o más ya que multiplican a productos de más de m binomios.

55
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

de donde:
n
f(x*) − pn (x*) = f [ x 0 ,...,x n ,x * ]·∏ (x * − x j )
j=0

c.q.d.

Ejemplo:
Una de las aplicaciones de las técnicas de interpolación polinomial es la
búsqueda de expresiones simplificadas de sumatorios (obviamente cuando
dichas expresiones sean polinómicas). Ilustraremos este proceso con la
n
determinación de la expresión del sumatorio: ∑ i·(i − 1)·(i − 2) .
i= 2
La forma de

proceder se sustenta en considerar que si el sumatorio tiene una expresión


polinómica de grado “m”, es decir si

n
f(n) = ∑ i·(i − 1)·(i − 2) = a0 + a1·n + ... + am·nm
i= 2

podemos interpolar el polinomio f(x) en un soporte formado por abscisas


enteras y la fórmula buscada se obtendrá evaluándolo en x = n. Además por
ser f(x) un polinomio de grado m, todas sus diferencias divididas construidas
sobre más de (m+1) puntos se anularán. Por ello si se interpola con más de
(m+1) puntos (entendidos aquí como abscisas enteras) se obtendrá el
polinomio buscado.

El problema “a priori” es conocer cuál es el valor de “m”22. Para ello, puesto que
en el sumatorio aparecen tres productos en los que interviene “i” es razonable
pensar que el polinomio resultante al menos será de grado 3 por lo que
actuaremos en principio con 4 puntos. Tomemos, por ejemplo el soporte {2, 3,
4, 5} y construyamos la tabla de diferencias divididas.

xi f[xi] f[xi,xi+1] f[xi,..,xi+2] f[xi,..,xi+3]


2 0 6 9 3
3 6 24 18
4 30 60
5 90

22
En el subapartado siguiente veremos la forma en que se puede determinar el valor de “m” sin
necesidad de realizar pruebas con distintos valores como aquí se hace.

56
Programación y Métodos Numéricos Interpolación polinómica

¿Será suficientemente alto el número de puntos del soporte? En principio no


podemos estar seguros de ello pues las últimas diferencias divididas no se han
anulado. Para salir de dudas añadamos uno más y modifiquemos la tabla:

xi f[xi] f[xi,xi+1] f[xi,..,xi+2] f[xi,..,xi+3] f[xi,..,xi+4]


2 0 6 9 3 ¼
3 6 24 18 4
4 30 60 30
5 90 120
6 210

La tabla anterior nos muestra que, al menos, se necesitan 5 puntos para


obtener la expresión exacta del sumatorio (pues la última diferencia dividida
obtenida no es nula). Pero ¿serán necesarios más puntos?. Añadamos uno
más y reconstruyamos la tabla:

xi f[xi] f[xi,xi+1] f[xi,..,xi+2] f[xi,..,xi+3] f[xi,..,xi+4] f[xi,..,xi+5]


2 0 6 9 3 ¼ 0
3 6 24 18 4 ¼
4 30 60 30 5
5 90 120 45
6 210 210
7 420

La última de las diferencias divididas halladas ya tiene el valor 0. Ello parece


indicar que el polinomio buscado podrá determinarse con 5 puntos de soporte.
No obstante para asegurarnos de que lo anterior no es una casualidad
podemos variar el último de los puntos escogidos (sustituyendo “7” por ejemplo
por “9”). Si así se hace obtenemos que:
xi f[xi] f[xi,xi+1] f[xi,..,xi+2] f[xi,..,xi+3] f[xi,..,xi+4] f[xi,..,xi+5]
2 0 6 9 3 ¼ 0
3 6 24 18 4 ¼
4 30 60 30 11/2
5 90 120 115/2
6 210 350
9 1260

57
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Al volver a ser nula la última diferencia dividida podemos tener alguna


esperanza de que el polinomio buscado sea de grado 4 (suposición que
deberemos verificar a posteriori). Aplicando la fórmula de Newton se tiene que:

f(n) = 0+ 6·(n-2) +9·(n-2)·(n-3) + 3·(n-2)·(n-3)·(n-4) + (¼)·(n-2)·(n-3)·(n-4)·(n-5) =


2·n − n2 − 2·n3 + n4
=
4
En resumen,
n
2·n − n2 − 2·n3 + n4

i= 2
i·(i − 1)·(i − 2) =
4

Para verificar esta expresión se calcularán los valores del sumatorio y de f(n)
para diferentes valores de “n”. En la gráfica siguiente se recogen los valores
2·x − x 2 − 2·x 3 + x 4
calculados y el grafo de f(x) = observándose que en las
4
abscisas enteras la función coincide con los valores del sumatorio
correspondientes

Ejercicios propuestos:
1º) Demostrar que se verifica que:
⎛ ⎞
⎜ ⎟
n ⎜ ⎟
fi
f [ x 0 ,x1,....,xn−1,xn ] = ∑ ⎜ n ⎟
⎜⎜ ∏
i= 0 ⎜ ⎟
(x − x )
j =0
i j
⎟⎟
⎝ j ≠i ⎠

58
Programación y Métodos Numéricos Interpolación polinómica

2º) a) Utilícese la fórmula de Newton para calcular el polinomio interpolador de


Lagrange de la función f(x) = x5 sobre el soporte {-2, -1, 0, 1, 2}.

b) Calcúlese el nuevo polinomio interpolador de Lagrange de f(x) = x5, si al


soporte anterior se le añade un nuevo punto x5.

3º) Calcúlese la expresión polinómica en la variable entera “n” que proporciona


el valor del sumatorio:
n

∑ i ·(i − 2)
i=1
2 3

4º) En el método de Gauss para la resolución de sistemas de n ecuaciones


lineales con n incógnitas se realizan:

(n −1) (n −1)

∑ (i2 + i) +
i=1
∑ (n − i) sumas,
i=1
(n −1) (n −1)

∑ (i
i=1
2
+ i) + ∑ (n − i) productos
i=1
y
(n −1)
n+ ∑ i divisiones
i=1

Obténgase la expresión polinómica en la variable entera n que proporciona el


número total de operaciones y demuéstrese que cuando n es elevado el
número total de operaciones es del orden de (2·n3/3).

5º) En el método de Cholesky para la resolución de sistemas definidos


positivos de n ecuaciones lineales con n incógnitas se realizan:

(n −1) (n −1)

∑ i·(n − i) + 2· ∑ (n − i) sumas,
i=1 i=1
(n −1) (n −1)

∑ i·(n − i) + 2· ∑ (n − i) productos
i=1 i=1
(n −1)
2·n+ ∑ i divisiones y
i=1

n raíces cuadradas

59
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Obténgase la expresión polinómica en la variable entera n que proporciona el


número total de operaciones y demuéstrese que cuando n es elevado el
número total de operaciones es del orden de (n3/3).

6º) En el método LDLT para factorizar una matriz simétrica de n filas y


columnas puede programarse realizándose el siguiente número de
operaciones:

n
⎛ (i−1) ⎞ n
∑ ⎜∑
i=1 ⎝ j=1
( j − 1) ⎟ + ∑ (i − 1) sumas,
⎠ i=1
n
⎛ (i−1) ⎞ n
2·∑ ⎜ ∑ ( j − 1) ⎟ + 2·∑ (i − 1) productos y
i=1 ⎝ j=1 ⎠ i=1
(n −1)

∑ i divisiones
i=1

Obténgase la expresión polinómica en la variable entera n que proporciona el


número total de operaciones y demuéstrese que cuando n es elevado el
número total de operaciones es del orden de (n3/2).

60
Programación y Métodos Numéricos Interpolación polinómica

2.4. Interpolación con soportes equidistantes: Fórmulas con diferencias


finitas.
Por la simplicidad que representa es muy frecuente trabajar con soportes de
interpolación equidistantes. Recuérdese que se denominaban así aquellos
soportes en los que la distancia entre dos puntos consecutivos era siempre la
misma. Más concretamente, denotando por h a la distancia entre puntos
consecutivos del soporte, se define un soporte equidistante de (n+1) como
aquel en el que sus puntos se generan a partir del primero, x0, mediante la
expresión: xi = x0 + i·h (i = 1, …, n).

Cuando se desea calcular el polinomio interpolador de Lagrange de una


función f(x) sobre un soporte equidistante de (n+1) puntos, pueden utilizarse los
métodos vistos para el caso general (resolución de un sistema de (n+1)
ecuaciones con (n+1) incógnitas, fórmula de Lagrange o fórmula de Newton).
Pero el número de cálculos a realizar puede reducirse si en lugar de aquellos
se emplean métodos en diferencias finitas como los que desarrollaremos en
este subapartado.
Comencemos definiendo que entendemos por diferencias finitas. Para ello
supondremos en todo este subapartado que el soporte {x0, x1, ...., xn} es un
soporte equidistante y que la distancia entre puntos consecutivos del soporte
es h. Asimismo denotaremos por fi al valor de la función que se desea
interpolar f(x) en el punto xi: fi = f(xi) (i = 0, 1, ..., n).

Definición (Diferencia finita progresiva de primer orden)


Se denomina diferencia finita progresiva (o en adelanto) de primer orden de
la función f(x) en el punto xi, y se representa por Δfi, al valor:
Δfi = fi+1 – fi (i = 0, 1, ..., (n-1))

De forma más general se proporciona la siguiente definición:

Definición (Diferencia finita progresiva de orden k)


Siendo k un entero superior o igual a 1 e inferior a (n+1), se denomina
diferencia finita progresiva (o en adelanto) de orden k de la función f(x) en el
punto xi, y se representa por Δkfi, al valor:
Δkfi = Δ(k-1)fi+1 – Δ(k-1)fi (1 < k < n), (i = 0, 1, ..., (n-k))

donde Δ0fi = fi (i = 0, 1, ..., n)

61
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

De manera análoga pueden definirse diferencias finitas regresivas tal cual se


hace en las siguientes definiciones:

Definición (Diferencia finita regresiva de primer orden)


Se denomina diferencia finita regresiva (o en retroceso) de primer orden de
la función f(x) en el punto xi, y se representa por ∇fi, al valor:

∇fi = fi – fi-1 (i = 1, ..., n)

Definición (Diferencia finita regresiva de orden k)


Siendo k un entero superior o igual a 1 e inferior a (n+1), se denomina
diferencia finita regresiva (o en retroceso) de orden k de la función f(x) en el
punto xi, y se representa por ∇kfi, al valor:

∇kfi = ∇ (k-1)fi+1 – ∇ (k-1)fi (1 < k < n), (i = k, ..., n)

donde Δ0fi = fi (i = 0, 1, ..., n).


Al igual que sucedía para las diferencias divididas, el cálculo de las diferencias
finitas (progresivas o regresivas) puede realizarse de forma cómoda mediante
tablas como las que se ilustran a continuación (para el caso de soportes con 7
puntos). En ambas tablas los cálculos se desarrollan columna a columna.

x0 f0 Δf0 Δ 2 f0 Δ 3 f0 Δ 4 f0 Δ 5 f0 Δ 6 f0
x1 f1 Δf1 Δ 2 f1 Δ 3 f1 Δ 4 f1 Δ 5 f1
x2 f2 Δf2 Δ 2 f2 Δ 3 f2 Δ 4 f2
x3 f3 Δf3 Δ 2 f3 Δ 3 f3
x4 f4 Δf4 Δ 2 f4
x5 f5 Δf5
x6 f6

Tabla de diferencias finitas progresivas

62
Programación y Métodos Numéricos Interpolación polinómica

x0 f0
x1 f1 ∇f1
x2 f2 ∇f2 ∇ 2 f2
x3 f3 ∇f3 ∇ 2 f3 ∇3 f3
x4 f4 ∇f4 ∇ 2 f4 ∇3 f4 ∇ 4 f4
x5 f5 ∇f5 ∇ 2 f5 ∇3 f5 ∇ 4 f5 ∇5 f5
x6 f6 ∇f6 ∇ 2 f6 ∇3 f6 ∇ 4 f6 ∇5 f6 ∇ 6 f6

Tabla de diferencias finitas regresivas

Ejemplo:
Consideremos la función f(x) = x2 + x3 – 2·x4 y calculemos la tabla de
diferencias finitas progresivas de esta función en el soporte {0, 1, 2, 3, 4, 5}.

xi fi Δfi Δ2fi Δ3fi Δ4fi Δ5fi


0 0 0 -20 -66 -48 0
1 0 -20 -86 -114 -48
2 –20 -106 -200 -162
3 –126 -306 -362
4 –432 -668
5 –1100

Asimismo, la tabla de diferencias finitas regresivas será

xi fi ∇fi ∇ 2f i ∇ 3f i ∇ 4f i ∇ 5f i
0 0
1 0 0
2 –20 -20 -20
3 –126 -106 -86 -66
4 –432 -306 -200 -114 -48
5 –1100 -668 -362 -162 -48 0

Como puede apreciarse en las tablas del ejemplo anterior, los valores de las
diferencias finitas progresivas y regresivas son los mismos pero colocados de
forma diferente. Esto no es una casualidad ya que:

63
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Propiedad 1
Entre las diferencias finitas progresivas y las diferencias finitas regresivas de
una función f(x) en un soporte equidistante {x0, x1, ...., xn} se verifican las
igualdades:
Δfi = ∇fi+1 (i = 0, 1, …., (n-1))

Δkfi = ∇kfi+k (2 < k < n), (i = 0, 1, ..., (n-k))

Demostración:
Demostremos en primer lugar la primera igualdad. Según las definiciones de
diferencia progresiva y regresiva de primer orden se verifica que:

Δfi = fi+1 - fi = ∇fi+1 (i = 0, 1, …, (n-1))

Para demostrar la segunda igualdad dada en la propiedad procederemos por


inducción. Para ello supongamos que para algún valor (k-1) se verifique que:

Δ (k-1)fi = ∇(k-1)fi+k-1 (i = 0, 1, ..., (n-k+1))

Obsérvese que, al menos para (k-1) = 1 la igualdad es cierta pues se reduce a


la primera de las igualdades recogidas en la propiedad y que hemos
demostrado previamente.

Con esta hipótesis se tiene que para todo entero i tal que 0 < i < (n-k) se
verifica:

Δkfi = Δ(k-1)fi+1 - Δ(k-1)fi = ∇(k-1)fi+1+k-1 - ∇(k-1)fi+k-1 =

= ∇(k-1)fi+k - ∇(k-1)fi+k-1= ∇kfi+k


c.q.d.

La fórmula de interpolación de Newton presentada en el subapartado 2.3.


puede rescribirse en términos de diferencias finitas. Ello se realiza de forma
sencilla apoyándose en la siguiente propiedad:

64
Programación y Métodos Numéricos Interpolación polinómica

Propiedad 2
Dado el soporte equidistante {x0, x1, ..., xn} y denotando por h a la distancia
entre puntos consecutivos del soporte, se verifica que la diferencia progresiva
de orden k en el punto xi y la diferencia dividida f[xi, xi+1, …, xi+k] se relacionan
mediante la igualdad:

Δkfi = k!·hk·f[xi, xi+1, …, xi+k] (0 < k < n), (i = 0, 1, .., (n-k))

Demostración:
Procedamos por inducción. Para k = 0 la igualdad anterior queda en la forma:

Δ0fi = 0!·h0·f[xi] = fi (i = 0, 1, …, n)

por lo que la igualdad es cierta para k = 0.

Admitiendo entonces que se verifica la propiedad para algún valor (k-1)


demostremos que también es cierta para el valor k. Por verificarse para (k-1) se
tendrá que:
Δ (k-1)fi = (k-1)!·h(k-1)·f[xi, xi+1, …, xi+k-1] (i = 0,1, …, (n-k+1))

y por tanto, para cualquier valor del índice i tal que 0 < i < (n-k), se tendrá que:
Δkfi = Δ (k-1)fi+1 - Δ (k-1)fi = (k-1)!·h(k-1)·f[xi+1, …,xi+k] - (k-1)!·h(k-1)·f[xi, …, xi+k-1] =
= (k-1)!·h(k-1)· (f[xi+1, …,xi+k] - f[xi, …, xi+k-1]) =
= (k-1)!·h(k-1)·f[xi,xi+1, …,xi+k]·(xi+k – xi) =
= (k-1)!·h(k-1)·f[xi,xi+1, …,xi+k]·k·h =
= k!·hk· f[xi,xi+1, …,xi+k]

c.q.d.

Análogamente las diferencias finitas regresivas se relacionan con las


diferencias divididas según la igualdad que se recoge en la siguiente
propiedad:

65
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Propiedad 3
Dado el soporte equidistante {x0, x1, ..., xn} y denotando por h a la distancia
entre puntos consecutivos del soporte, se verifica que la diferencia progresiva
de orden k en el punto xi y la diferencia dividida f[xi, xi+1, …, xi+k] se relacionan
mediante la igualdad:

∇kfi = k!·hk·f[xi-k, xi-k+1, …, xi] (0 < k < n), (i = k, k+1, .., n)

Demostración:
Combinando las dos propiedades anteriores se tiene que:
∇kfi = Δkfi-k = k!·hk·f[xi-k, xi-k+1, …, xi] (0 < k < n), (i = k, k+1, .., n)
c.q.d.

Utilizando la propiedad 2 la fórmula de Newton puede ser escrita en la forma:


n⎛ (i−1)
⎞ n ⎛ Δi f0 (i−1) ⎞
pn(x) = f0 + ∑ ⎜ f [ x 0 ,...,xi ]·∏ (x − x j ) ⎟ = Δ0f0 + ∑ ⎜ i ·∏ (x − x j ) ⎟
i=1 ⎝ j= 0 ⎠ i=1 ⎝ i!·h j= 0 ⎠

La fórmula anterior es utilizada en ocasiones realizando el cambio de variable:


x = x0 + t·h
con lo que:
(x – xj) = (x0 + t·h) – (x0 + j·h) = (t – j)·h
y podemos escribir la denominada fórmula de interpolación de Newton-
Gregory progresiva:
n ⎛ Δi f0 (i−1) ⎞ n ⎛t⎞ i
pn(x) = ∑ ⎜ i∏ ·
i=0 ⎝ i!·h j= 0
(t − j)·h ⎟ = ∑ ⎜ ⎟ Δ f0
⎠ i=0 ⎝ i ⎠
⎛t⎞
donde se ha utilizado el número combinatorio ⎜ ⎟ dado por:
⎝i⎠

⎧ 1 si i = 0
⎛t⎞ ⎪
=
⎜ ⎟ ⎨ t·(t − 1)·(t − 2)·....·(t − i + 1)
⎝i⎠ ⎪ si i > 0
⎩ i!

66
Programación y Métodos Numéricos Interpolación polinómica

Ejemplo:
Determinemos el valor del polinomio interpolador de Lagrange de la función
⎧ π π⎫
f(x) = sen(x) sobre el soporte ⎨0, , ⎬ en el punto x = π/3. En este soporte se
⎩ 4 2⎭
1
tiene que h = π/4 y f0 = 0, f1 = y f2 = 1. Por tanto la tabla de diferencias
2
finitas progresivas será:
i xi Δ0fi Δfi Δ2fi

1
0 0 0 (1 - 2 )
2

1 1
1 π/4 (1 - )
2 2

2 π/2 1

por lo que el polinomio interpolador, utilizando la fórmula de Newton, será:


1
(1 − 2) ⎛ π⎞ 4· 2 − 2 8·(1 − 2) 2
p2(x) = 0 + 2 ·(x-0) + 2 (
· x − 0 )·⎜ x − ⎟ = ·x + ·x
π ⎛ π ⎞ ⎝ 4 ⎠ π π 2
1!· 2!·⎜ ⎟
4 ⎝4⎠
2·(1 + 2· 2)
por lo que: sen(π/3) ≈ p2(π/3) = = 0.85076158...
9
Si se deseara utilizar la fórmula de Newton-Gregory hubiéramos procedido de
la forma siguiente:
π
π π 4
= 0 + t· ⇒ t = 3 =
3 4 π 3
4
por lo que:
2
⎛4 / 3⎞ i ⎛ 4 / 3⎞ ⎛ 4 / 3⎞ 1 ⎛ 4 / 3⎞
p2(π/3) = ∑ ⎜ ⎟ Δ f0 = ⎜ ⎟·0 + ⎜ ⎟· +⎜ ⎟·(1 − 2) =
i= 0 ⎝ i ⎠ ⎝ 0 ⎠ ⎝ 1 ⎠ 2 ⎝ 2 ⎠
⎛4⎞ ⎛ 4⎞⎛ 1⎞
⎜ 3 ⎟ 1 ⎜ 3 ⎟·⎜ 3 ⎟ 4 1 4 2·(1 + 2· 2)
= ⎝ ⎠· + ⎝ ⎠ ⎝ ⎠·(1 − 2) = · + ·(1 − 2) =
1! 2 2! 3 2 18 9

67
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

De forma análoga, utilizando la propiedad 3 la fórmula de Newton puede ser


escrita en la forma:
n ⎛ (i−1)
⎞ n ⎛ ∇i fi (i−1) ⎞
pn(x) = f0 + ∑ ⎜ f [ x 0 ,...,x ]
i ∏ (x − x j ) ⎟ = Δ f0 +
· 0
∑ ⎜ i ·∏ (x − x j ) ⎟
i=1 ⎝ j=0 ⎠ i=1 ⎝ i!·h j= 0 ⎠

La fórmula anterior es utilizada en ocasiones realizando el cambio de variable:


x = x0 + t·h
con lo que:
(x – xj) = (x0 + t·h) – (x0 + j·h) = (t – j)·h

y podemos escribir la denominada fórmula de interpolación de Newton-


Gregory regresiva:
n ⎛ ∇i fi (i−1) ⎞ n ⎛t⎞
pn(x) = ∑ ⎜ i ·∏ (t − j)·h ⎟ = ∑ ⎜ ⎟ ∇i fi
i= 0 ⎝ i!·h j=0 ⎠ i=0 ⎝ i ⎠

⎛t⎞
donde nuevamente se utiliza el número combinatorio ⎜ ⎟ dado por:
⎝i⎠
⎧ 1 si i = 0
⎛t⎞ ⎪
⎜ ⎟ = ⎨ t·(t − 1)·(t − 2)·....·(t − i + 1)
⎝i⎠ ⎪ si i > 0
⎩ i!

Ejemplo:
De una función f(x) se conoce la siguiente tabla de valores:

i 0 1 2 3 4 5
xi 0 2 4 6 8 10
fi 0 5 30 91 204 385

Determinemos, usando la fórmula de Newton-Gregory regresiva, el valor de su


polinomio interpolador de Lagrange en el punto x = 3. Para ello comenzamos
construyendo la tabla de diferencias finitas regresivas:

68
Programación y Métodos Numéricos Interpolación polinómica

xi ∇ 0f i ∇fi ∇ 2f i ∇ 3f i ∇ 4f i ∇ 5f i
0 0
2 5 5
4 30 25 20
6 91 61 36 16
8 204 113 52 16 0
10 385 181 68 16 0 0

Puesto que en el soporte considerado se verifica que h = 2, se tiene que:

3 = 0 + t·2 ⇒ t = 3/2 = 1.5

por lo que:
⎛ 1.5 ⎞ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞
p(5) = 0·⎜ ⎟ + 5·⎜ ⎟ + 20·⎜ ⎟ + 16·⎜ ⎟ + 0·⎜ ⎟ + 0·⎜ ⎟ =
⎝ 0 ⎠ ⎝ 1 ⎠ ⎝ 2 ⎠ ⎝ 3 ⎠ ⎝ 4 ⎠ ⎝ 5 ⎠
⎛ 1.5 ⎞ ⎛ 1.5 ⎞ ⎛ 1.5 ⎞
= 5·⎜ ⎟ + 20·⎜ ⎟ + 16·⎜ ⎟=
⎝ 1 ⎠ ⎝ 2 ⎠ ⎝ 3 ⎠
1.5 1.5·(1.5 − 1) 1.5·(1.5 − 1)·(1.5 − 2)
= 5· + 20· + 16· =
1! 2! 3!
8
= 7.5 + 7.5 + ·(1.5)·(0.5)·( −0.5) = 7.5 + 7.5 – 1 = 14
3


Una consecuencia de las propiedades 2 y 3 (junto con la propiedad 3 del
subapartado anterior) es que si f(x) es una función polinómica de grado m
serán nulas las diferencias finitas progresivas o regresivas de orden m y
superior, cualquiera que sea el soporte equidistante sobre el que se evalúen.

Ejemplo:
Calcúlese la expresión polinómica en “n” que proporciona el valor de:

∑ i·(n − i)
i=0

69
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Para conocer “a priori” el grado de la expresión polinómica que se está


buscando podemos razonar de la forma que sigue. Siendo m un entero
cualquiera se verificará que:
m +1 m m +1 m +1 m +1 m m
Δfm = fm+1 − fm = ∑ i·(m + 1 − i) − ∑ i·(m − i) = ∑ m·i + ∑ i − ∑ i2 − ∑ m·i + ∑ i2 =
i= 0 i=0 i= 0 i=0 i=0 i=0 i= 0

⎛ m+1 m ⎞ m+1 ⎛ m+1 m


⎞ m +1
= m·⎜ ∑ i − ∑ i ⎟ + ∑ i − ⎜ ∑ i2 − ∑ i2 ⎟ = m·(m + 1) + ∑ i − (m + 1)2 =
⎝ i = 0 i =0 ⎠ i =0 ⎝ i= 0 i= 0 ⎠ i=0

(m +1) (m +1)
= m2 + m + ∑
i= 0
i − m2 − 2·m − 1 = ∑ i − m −1
i=0

(m + 2)
Sustituyendo m por (m+1) se tendrá que: Δfm+1 = ∑ i − m − 2 , y por tanto:
i= 0

(m + 2) (m +1)
Δ 2 fm = Δfm+1 − Δfm = ∑
i=0
i−m−2− ∑ i + m + 1 = (m + 2) − 1 = m + 1
i= 0

Sustituyendo m por (m+1) se tiene que: Δ 2 fm+1 = m + 2 por lo que:


Δ 3 fm = m + 2 − m − 1 = 1

Luego, en un soporte formado por los números naturales, todas las diferencias
finitas progresivas de orden 3 toman valor 1. Ello nos indica que las de orden
mayor o igual a 4 serán todas nulas. Por tanto la expresión polinómica buscada
es de grado 3 y con cuatro puntos de soporte será suficiente para determinarla.
n
Consideremos por ello el soporte {0, 1, 2, 3}. Los valores de f(n) = ∑ i·(n − i)
i=0

en estos puntos son: f0 = 0, f1 = 0, f2 = 1 y f3 = 4 y la tabla de diferencias finitas


progesivas es:
xi ∇ 0f i ∇fi ∇ 2f i ∇ 3f i
0 0 0 1 1
1 0 1 2
2 1 3
3 4
Usando la fórmula de Newton-Gregory progresiva, el valor interpolado en el
entero “n” es

⎛n⎞ ⎛n⎞ ⎛n⎞ ⎛ n ⎞ n·(n-1) n·(n-1)·(n-2) n3 − n


0· ⎜ ⎟ +0· ⎜ ⎟ +1· ⎜ ⎟ +1· ⎜ ⎟ = + =
⎝0⎠ ⎝ 1⎠ ⎝ 2⎠ ⎝3⎠ 2! 3! 6

70
Programación y Métodos Numéricos Interpolación polinómica

lo que nos permite concluir que:


n
n3 − n
∑ i·(n − i) =
i=0 6

En ocasiones los soportes equidistantes se toman, además, centrados. Más


concretamente, un soporte equidistante centrado con (2·n+1) puntos se
genera a partir de un punto x0 considerándose los demás puntos del soporte en
la forma:
xi = x 0 + i·h (i = -n, -n+1, ...., -2, -1, 1, 2, …, n-1, n)

y donde h es la distancia entre dos puntos consecutivos del soporte.

Cuando se trabaja con este tipo de soportes puede tener ventajas utilizar un
tercer tipo de diferencias finitas, llamado diferencias finitas centradas, que
definimos a continuación.

Definición (Diferencia finita centrada de primer orden)


Se denomina diferencia finita centrada (o central) de primer orden de la
función f(x) en el punto xi+1/2, y se representa por δfi+1/2, al valor:
δfi+1/2 = fi+1 - fi (i = -n, -n+1, ..., -1, 0, 1, …, n-1)


La definición de las diferencias finitas centradas de mayor orden se realiza a
continuación.

Definición (Diferencia finita centrada de orden k)


Siendo k un número natural tal que 1 < k < 2·n:
• Si k es par se denomina diferencia finita centrada (o central) de orden
k de la función f(x) en el punto xi, y se representa por δkfi, al valor:
δkfi = δ(k-1)fi+1/2 - δ(k-1)fi-1/2 (i = -n+(k/2), ..., 0, …, n-(k/2))
• Si k es impar se denomina diferencia finita centrada (o central) de
orden k de la función f(x) en el punto xi+1/2, y se representa por δkfi+1/2, al
valor:
δkfi+1/2 = δ(k-1)fi+1 - δ(k-1)fi-1 (i = -n+(k-1)/2,...,0,…, n-(k+1)/2)

En el caso k = 0 se define δ0fi = fi (i = -n, ...., 0, ..., n).

71
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

El cálculo de las diferencias finitas centradas puede organizarse también en


una tabla como la que se recoge a continuación para un soporte con 9 puntos y
en la que los cálculos se realizan columna a columna.
x-4 f-4
δf-7/2
x-3 f-3 δ2f-3
δf-5/2 δ3f-5/2
x-2 f-2 δ2f-2 δ4f-2
δf-3/2 δ3f-3/2 δ5f-3/2
x-1 f-1 δ2f-1 δ4f-1 δ6f-1
δf-1/2 δ3f-1/2 δ5f-1/2 δ7f-1/2
x0 f0 δ2f0 δ4f0 δ6f0 δ8f0
δf1/2 δ3f1/2 δ5f1/2 δ7f1/2
x1 f1 δ2f1 δ4f1 δ6f1
δf3/2 δ3f3/2 δ5f3/2
x2 f2 δ2f2 δ4f2
δf5/2 δ3f5/2
x3 f3 δ2f3
δf7/2
x4 f4

Ejemplo:
La tabla de diferencias finitas centradas de la función f(x) = x7 –2·x3 +x2 – 1 en
el soporte {-2, -1, 0, 1, 2} es la siguiente

-2 -109
110
-1 1 -112
-2 114
0 -1 2 0
0 114
1 -1 116
116
2 115

72
Programación y Métodos Numéricos Interpolación polinómica

Los valores de las diferencias finitas centradas son los mismos que los que se
obtendrían en las tablas de diferencias finitas progresivas o regresivas (aunque
ordenados y denotados de diferente manera). Más concretamente:

Propiedad 4
Entre las diferencias finitas progresivas y las diferencias finitas centradas de
una misma función f(x) sobre un soporte equidistante centrado de la forma {x-n,
...., x0, ..., xn} se verifica la relación:
δkfi+k/2 = Δkfi (0 < k < 2·n) ,(i = -n, ..., n-k)
Demostración:
Según las definiciones de diferencia finita progresiva y centrada de orden 0,
para k = 0 se tiene que:
δ0fi = fi =Δ0fi (i = - n, ….., n)
por lo que la propiedad es cierta para k = 0.

Procedamos entonces por inducción suponiendo que para algún valor entero
(k-1), no negativo y menor que 2·n, se verifica la igualdad que queremos
demostrar y comprobemos que en ese caso también es cierta para el entero k.
En efecto, si la igualdad es cierta para (k-1) se tendrá que:
δ(k-1)fi+(k-1)/2 = Δ(k-1)fi (i = -n, ..., n-k+1)
y, para cualquier valor del índice i comprendido entre –n y (n-k) se tendrá que:
Δkfi = Δ(k-1)fi+1 - Δ(k-1)fi = δ(k-1)fi+1+(k-1)/2 - δ(k-1)fi+(k-1)/2 =

= δ(k-1)fi+(k+1)/2 - δ(k-1)fi+(k-1)/2 = δ(k-1)fi+k/2

Por tanto, al ser cierta la igualdad para k = 0, también lo será para k = 1. Y ello
implica que también lo será para k =2. Y ello a su vez implica que lo sea para el
valor k = 3, ..... y para k = 2·n.
c.q.d.

Asimismo se entre las diferencias finitas regresivas y las centradas existe la


relación recogida en la propiedad siguiente:

73
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Propiedad 5
Entre las diferencias finitas regresivas y las diferencias finitas centradas de una
misma función f(x) sobre un soporte equidistante centrado de la forma {x-n, ....,
x0, ..., xn} se verifica la relación:
δκφι+κ/2 = ∇kfi+k (0 < k < 2·n) ,(i = -n, ..., n-k)
Demostración:
Evidente pues es una combinación de las propiedades 1ª y 4ª demostradas en
este subapartado.

c.q.d.
La propiedad 4ª (o si se prefiere la 5ª) puede utilizarse para, junto a la
propiedad 2ª (respectivamente la propiedad 3ª), determinar la relación entre
las diferencias finitas centradas y las diferencias divididas. Dicha relación es la
que se detalla a continuación

Propiedad 6
Entre las diferencias divididas y las diferencias finitas centradas de una misma
función f(x) sobre un soporte equidistante centrado de la forma {x-n, ...., x0, ...,
xn} se verifica la relación:
δkfi+k/2 = k!·hk·f[xi, …, xi+k ] (0 < k < 2·n) ,(i = -n, ..., n-k)
Demostración:
Es una consecuencia inmediata de las propiedades 2ª y 4ª demostradas
anteriormente en este subapartado.
c.q.d.
La relación anterior nos permite, a partir de la fórmula de interpolación de
Newton, obtener distintas fórmulas de interpolación utilizando diferencias finitas
centradas. La más típica es la que se obtiene si la fórmula de interpolación de
Newton se utiliza sobre el soporte: {x0, x1, x-1, x2, x-2, ..., xn., x-n}. En ese caso:
p2·n(x) = f[x0] + f[x0, x1]·(x-x0) + f[x0, x1,x-1]·(x-x0)·(x-x1) +

+ f[x0, x1,x-1,x2]·(x-x0)·(x-x1)·(x-x-1) + …. +

+ f[x0, x1,x-1,x2, …, xn, x-n]·(x-x0)·(x-x1)·(x-x-1)·….(x-xn)


y puesto que:

74
Programación y Métodos Numéricos Interpolación polinómica

δf1/ 2 δ2 f1/ 2
f[x0] =δ0f0 , f[x0, x1] = , f[x0, x1,x-1] = f[x-1,x0, x1] = , …..
h 2!·h2
δ2·n f0
f[x0, x1,x-1,x2, …, xn, x-n] = f[x-n,…,x-2,x-1,x0, x1,x2, …, xn] =
(2·n)!·h2·n

se tiene que:

p2·n(x) = δ0 f0 + δf1/ 2 ·
( x − x 0 ) + δ2 f ·( x − x0 )·( x − x1 ) +
0
1!·h 2!·h2

+ δ3 f1/ 2 ·
( x − x0 )·( x − x1 )·( x − x −1 ) + .........+
3!·h3

+ δ2·n f0 ·
( x − x0 )·( x − x1 )·( x − x −1 )·...·(x − x −n )
(2·n)!·h2·n

que es la denominada fórmula de interpolación de Gauss progresiva.

Otra fórmula equivalente puede obtenerse considerando el soporte ordenado


de la forma: {x0, x-1, x1, x-2, x2, ..., x-n., xn}. En este caso la fórmula de Newton
será:
p2·n(x) = f[x0] + f[x0, x-1]·(x-x0) + f[x0,x-1, x1]·(x-x0)·(x-x-1) +

+ f[x0, x-1,x1,x-2]·(x-x0)·(x-x-1)·(x-x1) + …. +

+ f[x0, x-1,x1,x-2, …, x-n, xn]·(x-x0)·(x-x-1)·(x-x1)·….(x-x-n)

lo que nos conduciría a la fórmula de interpolación de Stirling (también


denominada fórmula de interpolación de Gauss regresiva) siguiente:

p2·n(x) = δ0 f0 + δf−1/ 2 ·
( x − x0 ) + δ2 f ·( x − x0 )·( x − x −1 ) +
0
1!·h 2!·h2

+ δ3 f−1/ 2 ·
( x − x0 )·( x − x −1 )·( x − x1 ) + .........+
3!·h3

+ δ2·n f0 ·
( x − x0 )·( x − x −1 )·( x − x1 )·...·(x − xn )
(2·n)!·h2·n

75
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Ejemplo:
Calculemos mediante la fórmula de interpolación de Stirling el polinomio
interpolador de la función f(x) = x7 –2·x3 +x2 – 1 en el soporte {-2, -1, 0, 1, 2}.
La tabla de diferencias finitas centradas de esta función fue calculada en uno
de los ejemplos anteriores y es la que se recoge a continuación (resaltándose
los valores a utilizar en la fórmula de interpolación de Stirling):

-2 -109
110
-1 1 -112
-2 114
0 -1 2 0
0 114
1 -1 116
116
2 115

Por tanto:
x −0 (x − 0)·(x − ( −1)) (x − 0)·(x − ( −1))·(x − 1)
p4(x) = -1 + (-2) · + (2) · 2
+ 114· =
1!·1 2!·1 3!·13
= 19·x3 + x2 –20·x –1
El mismo polinomio sería calculado mediante la fórmula de interpolación de
Gauss progresiva utilizando los valores resaltados en la tabla siguiente:

-2 -109
110
-1 1 -112
-2 114
0 -1 2 0
0 114
1 -1 116
116
2 115

lo que nos conduciría a:

76
Programación y Métodos Numéricos Interpolación polinómica

x −0 (x − 0)·(x − 1) (x − 0)·(x − 1)·(x + 1)


p4(x) = -1 + (0) · + (2) · 2
+ 114· =
1!·1 2!·1 3!·13

= 19·x3 + x2 –20·x –1

La figura siguiente recoge los grafos de f(x) = = x7 –2·x3 +x2 – 1 (en trazo
discontinuo) y de su polinomio interpolador p4(x) = 19·x3 + x2 –20·x –1 en trazo
continuo.

f(x)
p4(x)

Ejercicios propuestos:
1º) Sea f(m) la función definida sobre el conjunto de números enteros no
negativos mediante la expresión:
m
f (m) = ∑ i2 .(m − i)2
i=0
Hállese el polinomio interpolador de Lagrange de dicha función:

a) Sobre el soporte {0, 1, 2, 3, 4} usando la fórmula de Newton-Gregory


progresiva.
b) Sobre el soporte {0, 1, 2, 3, 4, 5} usando la fórmula de Newton-Gregory
regresiva

77
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

c) Sobre el soporte {0, 1, 2, 3, 4, 5, 6} usando la fórmula de Gauss progresiva.

d) Según los resultados anteriores, señálese si se puede escribir con ellos la


m
expresión exacta, dependiente sólo de m, del valor que toma ∑ i 2 .(m − i)2 . En
i=0
caso afirmativo justifíquese el motivo de ello. Y en caso negativo indíquese
cual, entre las obtenidas en las opciones anteriores, se aproximará más a la
expresión exacta y cual es la cota del error que se comete.

2º) De una función f(x) se conocen los siguientes valores:


x -1 0 1 2 3
f(x) 7 1 -1 -17 -41

Utilícese la fórmula de Stirling para obtener el polinomio interpolador de


Lagrange de la función f(x) en el soporte {-1,0,1,2, 3}. Obténgase, además, una
1
cota del error de interpolación de esta función sabiendo que Sup f (v (x) = .
x∈( −1,3 ) 2

3º) Para el caso de interpolaciones con soportes equidistantes:


a) Obténgase una expresión del error de interpolación en un punto x* en la
que intervengan las diferencias finitas progresivas de una función.
b) Idem con diferencias finitas regresivas.
c) Idem con diferencias centradas.

78
Programación y Métodos Numéricos Interpolación polinómica

3. Interpolación polinómica de Hermite.


El problema de interpolación polinómica de Lagrange, tratado en el apartado
anterior, consiste en determinar un polinomio pn(x), de grado menor o igual que
n, que en los puntos de un soporte de (n+1) puntos tome los valores de la
función f(x) que se interpola. Nada obliga a que los valores de las derivadas de
f(x) en los puntos del soporte coincidan con los de las derivadas del polinomio
interpolador. Es por ello que el problema de interpolación polinomial puede
plantearse en un marco más amplio, conocido con el nombre de problema
interpolación polinómica de Hermite. Más concretamente, puede formularse el
siguiente problema:

Problema de Interpolación Polinómica de Hermite


“Dados (n+1) puntos distintos {x0 , x1 , ... , xi ,... , xn} y (n+1)
valores enteros no negativos {α0, α1, ..., αi, ..., αn}, siendo
n
m = n + ∑ αi y conocidos los (m+1) valores
i= 0

{f(0
0 ,f0(1,...,f0( α0 ,f1(0 ,f1(1,...,f1( α1 ,..........,fn(0 ,fn(1 ,...,fn( αn }

encontrar un polinomio pm(x), de grado menor o igual que m,


verificando las (m+1) igualdades:

(k
pm (xi ) = fi(k (i = 0, 1, ...., n) , (k = 0, …, αi) “

Si los valores fi(k se consideran como el valor de la k-ésima derivada de una


cierta función f(x) en el punto del soporte xi, fi(k = f (k (xi ) , al polinomio pm(x)
solución del problema anterior se le denomina “polinomio interpolador de
Hermite sobre el soporte {x0 , x1 , ... , xi ,... , xn} para los enteros {α0, α1, ..., αi,
{
..., αn} y para los valores f0(0 ,f0(1,...,f0( α0 ,f1(0 ,f1(1,...,f1( α1 ,..........,fn(0 ,fn(1,...,fn( αn ”. }
Cuando esté claro el soporte sobre el que se trabaja y los enteros que se
utilizan, simplemente diremos que pm(x) es el polinomio interpolador de Hermite
de la función f(x).

Obsérvese que el problema de interpolación polinómica de Lagrange es un


caso particular de este en el que α0 = α1 = .... = αn = 0.

79
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Ejemplos:
6 2 4 3
1º) El polinomio p4(x) = 1 − ·x + 3 ·x es el polinomio interpolador de Hermite
π2 π
⎧ π ⎫
de la función f(x) = cos(x) sobre el soporte ⎨0, , π ⎬ para los enteros {1, 0, 1}.
⎩ 2 ⎭
En efecto, es un polinomio de grado menor o igual que 4 verificando:

p4(0) = 1 (=cos(0)), p’4(0) = 0 (= cos’(0) = -sen(0) )


⎛π⎞
p4 ⎜ ⎟ = 0 ( = cos(π/2) )
⎝2⎠
p4(π) = -1 ( = cos(π) ), p’4(π) = 0 (= cos’(π) = -sen(π) )

Una primera forma de determinar el polinomio interpolador de Hermite consiste


en considerar que pm(x) es un polinomio de la forma pm(x) = β0 + β1·x + β2·x2 +
... + βm·xm para, a continuación, obtener un sistema de (m+1) ecuaciones
lineales a partir de las igualdades que proporcionan los valores que debe tomar
el polinomio interpolador y sus derivadas en los puntos del soporte. Más
concretamente:

pm(x0) = f0(0 ⇔ β0 + β1·x 0 + β2 ·x 02 + .... +βm ·xm0 = f0(0


p’m(x0) = f0(1 ⇔ β1 + 2·β2 ·x 0 + .... +m·βm ·xm0 −1 = f0(1
p”m(x0) = f0(2 ⇔ 2·β2 + .... +m·(m − 1)·βm ·xm0 −2 = f0(2
…….. ……………………………………
( α0
pm (x0)= f0 ⇔ α0 !·βα0 + ... + m·(m − 1)·...·(m − α 0 + 1)·βm ·xm0 −α0 = f0( α0
( α0

pm(x1) = f1(0 ⇔ β0 + β1·x1 + β2 ·x12 + .... +βm ·x1m = f1(0


p’m(x1) = f1(1 ⇔ β1 + 2·β2 ·x1 + .... +m·βm ·x1m−1 = f1(1
p”m(x1) = f1(2 ⇔ 2·β2 + .... +m·(m − 1)·βm ·x1m−2 = f1(2
…….. ……………………………………
p(mα1 (x1)= f1( α1 ⇔ α1 !·βα1 + ... + m·(m − 1)·...·(m − α1 + 1)·βm ·x1m−α1 = f1( α1
…….. ……………………………………
…….. ……………………………………
pm(xn) = fn(0 ⇔ β0 + β1·xn + β2 ·xn2 + .... +βm ·xnm = fn(0
p’m(xn) = fn(1 ⇔ β1 + 2·β2 ·xn + .... +m·βm ·xnm−1 = fn(1
p”m(xn) = fn(2 ⇔ 2·β2 + .... +m·(m − 1)·βm ·xnm−2 = fn(2
…….. ……………………………………
( αn ( αn
pm (xn)= fn ⇔ αn !·βαn + ... + m·(m − 1)·...·(m − αn + 1)·βm ·xnm−αn = fn( αn

80
Programación y Métodos Numéricos Interpolación polinómica

Si, como se ha supuesto, los puntos del soporte son distintos entre sí, la matriz
del sistema anterior es una matriz regular y por tanto el sistema anterior admite
una única23 solución (es decir que el polinomio buscado queda definido de
forma única a través de sus coeficientes obtenidos como solución del sistema
planteado).

Ejemplo:
Determinemos la expresión del polinomio interpolador de Hermite de la función
⎧ π ⎫
f(x) = cos(x) sobre el soporte ⎨0, , π ⎬ para los enteros {1, 0, 1}.
⎩ 2 ⎭

En x0 =0 se tiene que: f0(0 = f(0) = 1 y f0(1 = f '(0) = 0


π ⎛π⎞
En x1 = : f1(0 = f ⎜ ⎟ = 0
2 ⎝2⎠
Y en x2 = π: f2 = f( π) = −1 y f2(1 = f '( π) = 0
(0

Al haber 5 condiciones se podrán determinar 5 coeficientes y por ello se


interpolará mediante un polinomio de grado menor o igual a 4 que es de la
forma:
p4(x) = β0 + β1·x + β2·x2 + β3·x3 + β4·x4
y debe verificar:

p4(x0) = f0(0 ⇔ β0 =1

p’4(x0) = f0(1 ⇔ β1 =0

2 3 4
π ⎛π⎞ ⎛π⎞ ⎛π⎞
p4(x1) = f(0
1 ⇔ β0 + β1· + β 2· ⎜ ⎟ + β 3· ⎜ ⎟ + β 4· ⎜ ⎟ =0
2 ⎝2⎠ ⎝2⎠ ⎝2⎠

p4(x2) = f2(0 ⇔ β0 + β1·π + β2·π2 + β3· π3 + β4· π4 = -1

p’4(x2) = f2(1 ⇔ β1 + 2·β2·π + 3·β3· π2 + 4·β4· π3 =0

23
No nos detenemos a demostrar esta afirmación pues la existencia y unicidad del polinomio
interpolador de Hermite será demostrada posteriormente por otros métodos. No obstante el
lector interesado en conocer esta demostración puede encontrarla, por ejemplo, en la
referencia F. Michavila & C. Conde (1987) “Métodos de Aproximación”, Ed. Depto. de
Matemática Aplicada y Métodos Informáticos – ETSI Minas – Universidad Politécnica de Madrid

81
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

−6 4
Del sistema anterior se obtiene que: β0 = 1, β1 = 0, β2 = , β3 = 3 , β3 = 0.
π 2
π
6 2 4 3
Por tanto: p4(x) = 1 − ·x + 3 ·x
π2 π

La figura siguiente recoge las gráficas de f(x) y de p4(x) en el intervalo [-1, 4]


pudiendo observarse la “buena concordancia” entre la función f(x) y p4(x) en el
intervalo [0, π].

f(x)
p4(x)


Ejercicio propuesto:
Plantéese el sistema de ecuaciones que permite calcular el polinomio
⎧ π π⎫
interpolador de Hermite de la función f(x) = sen(x) sobre el soporte ⎨0, , ⎬ y
⎩ 4 2⎭
para los enteros {0, 1, 2}. Resuélvase dicho sistema y escríbase la expresión
del polinomio interpolador.

Esta forma de calcular el polinomio interpolador de Hermite, mediante la


resolución de un sistema de (m+1) ecuaciones con (m+1) incógnitas, es útil
cuando se trabaja con un soporte formado por un número de puntos
relativamente bajo. En caso de no ser así exige realizar un gran esfuerzo
computacional para resolver el sistema de ecuaciones al que se llega.

Pero además, esta forma de proceder tiene menos interés que otras que
analizaremos a continuación cuando se piensa en aplicarlas a los métodos de
resolución numérica de problemas de contorno (y en concreto al método de
elementos finitos) que se aborda en otras asignaturas. Por ello, en los
subapartados que siguen, se estudiarán otras técnicas de cálculo del
polinomio interpolador de Hermite.

82
Programación y Métodos Numéricos Interpolación polinómica

3.1. Interpolación de Hermite de primer orden: la fórmula de interpolación


de Hermite.
Por simplicidad en la exposición, comenzaremos ocupándonos del problema de
determinar un polinomio p2·n+1(x) de grado menor o igual a (2·n+1) que en los
puntos de un soporte formado por (n+1) puntos distintos {x0, x1, ..., xn} verifique
las (2·n+2) condiciones siguientes:

p2·n+1(xi) = fi(0 (i = 0, 1, ..., n)


p'2·n+1(xi ) = fi(1 (i = 0, 1, ..., n)

{ }
donde f0(0 ,f0(1,f1(0 ,f1(1,...,fn(0 ,fn(1 son valores conocidos (y que supondremos que
los que tienen superíndice “(0” se corresponden con los valores de una cierta
función f(x) en los puntos del soporte y los que tienen superíndice “(1” son los
valores de la primera derivada de esta función, f’(x), en los puntos del soporte).
El problema anterior se denomina problema de interpolación polinómica de
Hermite de primer orden y podemos resumirlo en la búsqueda de un polinomio
de grado menor o igual a (2·n+1) que tanto él como su primera derivada tome
valores predeterminados en los puntos del soporte. Este problema admite una
solución única, hecho este que, junto a una forma de determinar el polinomio
buscado, se demuestra en el teorema siguiente:

Teorema 5
Siendo {x0, x1, ... , xi, ..., xn} un soporte formado por (n+1) puntos distintos y
{ }
dados (2n+2) valores f0(0 ,f0(1,f1(0 ,f1(1,...,fn(0 ,fn(1 , existe un único polinomio p2·n+1(x)
de grado menor o igual que (2·n+1) verificando las (2·n+2) igualdades:
p2·n+1(xi) = fi(0 , p'2·n+1(xi ) = fi(1 (i = 0, 1, 2, ..., n) (1)
Además dicho polinomio puede calcularse mediante la fórmula de
interpolación de Hermite:
n n n
⎛ 1 ⎞
p2·n+1(x) = ∑ fi(0 ·H0,i (x) + ∑ fi(1·H1,i (x) = ∑ ⎜ ∑ fi(k ·Hk,i (x) ⎟ (2)
i= 0 i=0 i= 0 ⎝ k = 0 ⎠
donde los polinomios H0,i(x) y H1,i(x) se denominan polinomios de base de
Hermite y están dados por las expresiones:
H0,i (x) = (1 − 2·(x − x i )·L'i (x i ) )·(Li (x) )
2
(i = 0, 1, ..., n) (3)
H1,i (x) = (x − xi )·(Li (x))
2
(i = 0, 1, ..., n) (4)
siendo Li(x) el i-ésimo polinomio de base de Lagrange:

Li (x) = ∏
n
(x − xj )
j=0 ( x i − x j )
j≠i

83
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Demostración:
a) Comencemos demostrando que el polinomio dado por la expresión (2) es el
polinomio interpolador de Hermite de f(x).

Para ello, en primer lugar, observemos que puesto que los polinomios de base
de Lagrange, Li(x), son polinomios de grado n, los polinomios de base de
Hermite, H0,i(x) y H1,i(x), son todos ellos polinomios de grado (2·n+1). Por tanto
el polinomio p2·n+1(x) dado por la expresión (2) es un polinomio de grado menor
o igual que (2·n+1) ya que es una combinación lineal de los anteriores.

Por otra parte, remplazando en (3) y (4) “x” por “xk” y recordando que:
⎧0 si i ≠ k
Li(xk) = δik = ⎨ (i, k = 0, 1, …, n),
⎩ 1 si i = k

es evidente que los polinomios de base de Hermite satisfacen que:


⎧0 si i ≠ k
H0,i(xk) = δik = ⎨ (i, k = 0, 1, …, n)
⎩ 1 si i = k
H1,i(xk) =0 (i, k = 0, 1, …, n)
Por tanto:
n n
p2·n+1(xk ) = ∑ fi(0 ·H0,i (xk ) + ∑ fi(1·H1,i (xk ) = fk(0
i=0 i= 0

Además, para cualquier par de índices 0 < i, k < n se tiene que :


H'0,i (x) = −2·L'i (xi )·(Li (x) ) + 2·(1 − 2·(x − x i )·L'i (x i ) )·Li (x)·L'i (x) ⇒
2

( )
⇒ H'0,i (x k ) = −2·L'i (xi )·(Li (x k ) ) + 2· 1 − 2·(x k − xi )·L'i (x i ) ·Li (x k )·L'i (x) ⇒
2

( )
⇒ H'0,i (x k ) = −2·L'i (x i )·(Li (xk ) ) + 2· 1 − 2·(xk − x i )·L'i (xi ) ·Li (xk )·L'i (xk ) ⇒
2

⇒ H'0,i (xk ) = 0
y:
H1,i' (x) = (Li (x) ) + 2·(x − xi )·Li (x)·L'i (x) ⇒
2

⇒ H1,i' (xk ) = (Li (x k ) ) + 2·(x k − x i )·Li (x k )·L'i (xk ) ⇒


2

⎧0 si i ≠ k
⇒ H1,i' (xk ) = δik = ⎨
⎩ 1 si i = k

84
Programación y Métodos Numéricos Interpolación polinómica

por lo que:
n n
p'2·n+1(xk ) = ∑ fi(0 ·H0,i
'
(xk ) + ∑ fi(1·H1,i' (xk ) = fk(1
i=0 i=0

Ello demuestra que el polinomio p2·n+1(x) dado por (2) es el polinomio


interpolador de Hermite.

b) Demostremos ahora, por reducción al absurdo, la unicidad del polinomio


interpolador de Hermite.

Supongamos que hubiera dos polinomios distintos, p2·n+1(x) y q2·n+1(x), de grado


menor o igual que (2·n+1) verificando:
p2·n+1(xi) = fi(0 , p'2·n+1(xi ) = fi(1 (i = 0, 1, 2, ..., n)
q2·n+1(xi) = fi(0 , q'2·n+1(xi ) = fi(1 (i = 0, 1, 2, ..., n)

Denotemos entonces por r(x) al polinomio definido mediante:


r(x) = p2·n+1(x) - q2·n+1(x)

Este polinomio será de grado menor o igual a (2·n+1) ya que es la diferencia de


dos polinomios de grado menor o igual a (2·n+1). Además este polinomio
verificará que:
r(xi) = p2·n+1(xi) – q2·n+1(xi) = 0 (i = 0, 1, ..., n)

r '(xi ) = p'2·n+1(xi ) − q'2·n+1(xi ) = 0 (i = 0, 1, ..., n)

lo que nos indica que cada punto del soporte es una raíz, al menos de
multiplicidad doble, del polinomio r(x). Contando cada raíz tantas veces como
su multiplicidad, lo anterior nos indica que r(x) tiene, al menos, (2·n+2) raíces.
Pero el único polinomio de grado menor o igual a (2·n+1) que posee más de
(2·n+1) raíces es el polinomio idénticamente nulo. Ello nos conduce a que:

r(x) ≡ 0 ⇔ p2·n+1(x) − q2·n+1(x) ≡ 0 ⇔ p2·n+1(x) ≡ q2·n+1(x)

en contra de la suposición inicial de que eran dos polinomios distintos. Por


tanto es absurdo suponer que exista más de un polinomio interpolador de
Hermite.
c.q.d.

85
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Ilustremos el método de cálculo que proporciona el teorema anterior con un


ejemplo.

Ejemplo:
Calculemos el polinomio interpolador de Hermite de una función f(x) de la que
se sabe que:
f(0) = 0, f(1) = 1, f(2) = 8

3 3
f’(0) = 0, f’(1) = , f’(2) =
2 2

En primer lugar se tiene que los polinomios de base de Lagrange sobre el


soporte {0, 1, 2} son:
x 2 − 3·x + 2 x2 − x
L0 (x) = , L1(x) = − x 2 + 2·x , L 2 (x) =
2 2
y:
−3 3
L’0(0) = , L’1(1) = 0, L’2(2) =
2 2

Con estos valores podemos calcular los polinomios de base de Hermite como
sigue:
3·x 5 − 17·x 4 + 33·x 3 − 23·x 2 + 4
H0,0 (x) = (1 − 2·(x − 0)·L0 (0))·(L0 (x)) =
' 2

4
H0,1(x) = (1 − 2·(x − 1)·L1(1))·(L1(x)) = x − 4·x + 4·x 2
' 2 4 3

−3·x 5 + 13·x 4 − 17·x 3 + 7·x 2


H0,2 (x) = (1 − 2·(x − 2)·L'2 (2))·(L 2 (x))2 =
4
y:

x 5 − 6·x 4 + 13·x 3 − 12·x 2 + 4·x


H1,0 (x) = (x − 0)·(L0 (x))2 =
4

H1,1(x) = (x − 1)·(L1(x))2 = x 5 − 5·x 4 + 8·x 3 − 4·x 2

x 5 − 4·x 4 + 5·x 3 − 2·x 2


H1,2 (x) = (x − 2)·(L 2 (x))2 =
4

86
Programación y Métodos Numéricos Interpolación polinómica

Las figuras siguientes recogen los gráficos de estos polinomios de base de

Hermite.

H0,0(x)

H0,1(x)

H0,2(x)

π/4 rad H1,0(x)

H1,1(x)

H1,2(x)

Con estos polinomios de base de Hermite se tiene finalmente que el polinomio


interpolador de Hermite está dado por:

n n
p5 (x) = ∑ fi(0 ·H0,i (x) + ∑ fi(1·H1,i (x) = 0·H00 (x) + 1·H01(x) + 8·H02 (x) +
i=0 i=0

3 3
+0·H10 (x) + ·H11(x) + ·H12 (x) =
2 2
⎛3 9 ⎞ 5 ⎛ 13 ⎞ ⎛ 52 ⎞ 3 ⎛ 11 ⎞
=⎜ − ⎟·x + ⎜ 5· 2 − ⎟·x 4 + ⎜ 8 − ⎟·x + ⎜ − 2 ⎟·x 2
⎝ 2 4· 2 ⎠ ⎝ 2 ⎠ ⎝ 4· 2 ⎠ ⎝ 2· 2 ⎠

87
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Una función f(x) para la que se toman los valores de los que se ha partido en
este ejercicio es la función f(x) = x3/2 .La figura siguiente recoge esta función
f(x) junto al polinomio interpolador p5(x).

f(x)
p5(x)


Demostremos algunas propiedades del los polinomios de base de Hermite

Propiedad 1
• El polinomio de base H0,i(x) definido sobre el soporte {x0, ..., xi, ... ,xn} es
el único polinomio de grado menor o igual que (2·n+1) que verifica:
⎧0 si i ≠ k
H0,i(xk) = δik = ⎨ , H'0,i (xk ) = 0 (k = 0, .., n)
⎩ 1 si i = k

• El polinomio de base H1,i(x) definido sobre el soporte {x0, ..., xi, ... ,xn} es
el único polinomio de grado menor o igual que (2·n+1) que verifica:
⎧0 si i ≠ k
H1,i(xk) = 0 , H1,i' (xk ) = δik = ⎨ (k = 0, .., n)
⎩ 1 si i = k

Demostración:
Es una consecuencia inmediata del teorema anterior, pues sólo habrá un
polinomio interpolador de Hermite (H0,i(x)) de grado menor o igual a (2·n+1) que
en el soporte {x0, ..., xi, ... ,xn} tome los valores:

Abscisa x0 ... xi-1 xi xi+1 .... xn


f(0 0 ... 0 1 0 .... 0
f(1 0 ... 0 0 0 .... 0

88
Programación y Métodos Numéricos Interpolación polinómica

Análogamente sólo habrá un polinomio de grado menor o igual a (2·n+1) que


en el soporte {x0, ..., xi, ... ,xn} tome los valores:

Abscisa x0 ... xi-1 xi xi+1 .... xn


f(0 0 ... 0 0 0 .... 0
f(1 0 ... 0 1 0 .... 0
c.q.d.

Propiedad 2
Si p(x) es una función polinómica de grado m, y n es un entero estrictamente
positivo tal que m < (2·n+1), el polinomio interpolador de Hermite p2·n+1(x) de la
función p(x) sobre cualquier soporte formado por (n+1) puntos distintos es la
propia función p(x).

Demostración:
El grado del polinomio interpolador de Hermite sobre un soporte formado por
(n+1) puntos debe ser menor o igual que (2·n+1). La función p(x) se ha
supuesto que es un polinomio de grado m < (2·n+1) por lo que verifica la
condición sobre el grado exigido al polinomio interpolador de Hermite. Puesto
que obviamente el valor de la función p(x) en los puntos del soporte coincide
con el valor p(xi) y el valor de la primera derivada p’(x) en los puntos del
soporte también coincide con p’(xi) se puede concluir que p(x) es el polinomio
interpolador de Hermite de ella misma. Y como, en virtud del teorema anterior,
el polinomio interpolador de Hermite es único puede concluirse que
p2·n+1(x) ≡ p(x).
c.q.d.

Propiedad 3
Dado el soporte {x0, x1, ..., xi, ..., xn}, los polinomios de base de Hermite
asociados a dicho soporte:

( )
H0,i (x) = 1 − 2·(x − x i )·L'i (x i ) ·(Li (x) )
2
(i = 0, 1, ...., n)
verifican que:
n

∑H
i=0
i,0 (x) = 1 ∀x

Demostración:

89
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Sea f(x) la función unidad: f ≡ 1. Obviamente en los puntos de cualquier soporte


se verifica que: fi(0 = f(xi ) = 1 y fi(1 = f '(xi ) = 0 (i = 0, 1, ..., n). Además como
esta función es un polinomio de grado 0 (perteneciente a cualquier espacio
formado por los polinomios de grado menor o igual que (2·n+1) sea cual sea n)
se verifica que el polinomio interpolador de Hermite, p2·n+1(x), de f(x) es la
propia función. Por tanto:
n n n
∀x : 1 ≡ p2·n+1(x) = ∑ 1·H0i (x) + ∑ 0·H1i (x) = ∑ H01(x)
i=0 i=0 i= 0

c.q.d.

Ejercicios propuestos:
1º) Demostrar que siendo H0,i(x) y H1,i(x) (i = 0, 1, ..., n) los polinomios de base
de Hermite asociados al soporte {x0, ..., xn} se verifica que:
n n

∑ xi·H0,i (x) + ∑ H1,i (x) = x


i=0 i=0

2º) Demostrar que siendo H0,i(x) y H1,i(x) (i = 0, 1, ..., n) los polinomios de base
de Hermite asociados al soporte {x0, ..., xn} y dado el entero m cumpliendo la
condición 0 < m < 2·n+1, se verifica que:
n n

∑x
i=0
m
i ·H0,i (x) + m·∑ xi(m−1) ·H1,i (x) = xm
i= 0

3º) Determínese el polinomio interpolador de Hermite de la función f(x) = x4


sobre el soporte {0, 1, 3} a partir de los valores de la función y de su primera
derivada en los puntos del soporte. ¿Cuál es el error de interpolación en el
punto x = 2.5, es decir cual es el valor de |f(2.5) – p5(2.5)| ?.

4º) Utilícese la fórmula de interpolación de Hermite para determinar el


polinomio interpolador de Hermite de la función cos(x) sobre el soporte
⎧ π π⎫
⎨0, , ⎬ a partir de los valores de la función de su primera derivada en los
⎩ 6 2⎭
puntos del soporte. Represéntense las gráficas de los polinomios de base
asociados a este soporte e indíquese el valor interpolado que aproximaría
cos(π/4).

5º) Demuéstrese que los polinomios de base de Hermite asociados al soporte


{x0, x1, ..., xi, ..., xn} forman una base del espacio vectorial P2·n+1 formado por
todos los polinomios (de variable y coeficientes reales) de grado menor o igual
que (2·n+1).

90
Programación y Métodos Numéricos Interpolación polinómica

3.2. Interpolación polinómica de Hermite: caso general.


Ocupémonos ya del problema general de interpolación polinómica de Hermite.
Este problema, según se describió anteriormente, puede formularse en la
forma:

Problema de Interpolación Polinómica de Hermite


“Dados (n+1) puntos distintos {x0 , x1 , ... , xi ,... , xn}, (n+1)
valores enteros no negativos {α0, α1, ..., αi, ..., αn}, siendo
n
m = n + ∑ αi y conocidos los (m+1) valores
i= 0

{f(0
0 ,f0(1,...,f0( α0 ,f1(0 ,f1(1,...,f1( α1 ,..........,fn(0 ,fn(1 ,...,fn( αn }

encontrar un polinomio pm(x), de grado menor o igual que m,


verificando las (m+1) igualdades:

(k
pm (xi ) = fi(k (i = 0, 1, ...., n) , (k = 0, …, αi) “

En otros términos buscamos un polinomio de grado menor o igual que m y tal


que en cada punto xi del soporte él y sus αi primeras derivadas tomen valores
predeterminados. La existencia y unicidad del polinomio interpolador de
Hermite, así como una manera de construirlo, se justifican con el siguiente
teorema.

Teorema 6
Dados:
• Un soporte formado por (n+1) puntos distintos {x0, x1, ..., xn}
• Los (n+1) enteros no negativos {α0, α1, ..., αn}
n
• Los (m+1) valores, con m = n + ∑ α , {f
i=0
i
(0
0 ,...,f0( α0 ,f1(0 ,...,f1( α1 ,...,fn(0 ,...,fn( αn }
existe un único polinomio de grado menor o igual que m verificando las (m+1)
igualdades:
m (x i ) = fi
p(k (i = 0, 1, ..., n), (k = 0, ..., αi)
(k
(1)

Además dicho polinomio está dado por la expresión:

91
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

n
⎛ αi (k ⎞
pm (x) = ∑ ⎜ ∑ fi ·Hk,i (x) ⎟
i=0 ⎝ k =0 ⎠

donde los polinomios Hk,j(x), llamados polinomios de base de Hermite, pueden


construirse mediante el proceso recursivo siguiente:

Hαi ,i (x) = hαi ,i (x) (i = 0, 1, ..., n)

αi
Hk,i (x) = hk,i (x) − ∑h
j=k +1
(j
k,i (xi )·Hj,i (x) (k = αi-1, αi-2, …, 0), (i = 0, 1, …, n)

siendo denotados por hk,j(x) los polinomios dados por:

α j +1
(x − xi )k n ⎛ x − x j ⎞
hk,i (x) = ·∏ ⎜ ⎟⎟ (k = 0, 1, …,αi), (i = 0, 1, …, n)
k! ⎜
j=0 ⎝ x i − x j ⎠
j≠i

y por h(k,ij (xi ) al valor en el punto xi de la j-ésima derivada del polinomio hk,i(x).

Demostración:
a) Demostremos que el polinomio dado en el enunciado de este teorema es
solución del problema de interpolación de Hermite.

Para ello, en primer lugar observemos que, para 0 < i < n, el polinomio hk,i(x)
n
es un polinomio de grado: k + n + ∑α
j=0
j = m – αi + k , y como 0 < k < ai se
j≠i

puede concluir que todos los polinomios hk,i(x) son de grado menor o igual que
m. Más concretamente:

grado(hαi ,i (x)) = m , grado(hαi −1,i (x)) = m − 1, .... , grado(h0,i (x)) = m − αi

Ello, a su vez implica que, para 0 < i < n, los polinomios Hαi ,i (x) = hαi ,i (x) sean
de grado: grado(Hαi ,i (x)) = m .

En cuanto a los polinomios Hαi −1,i (x) = hαi −1,i (x) − h(ααi −i 1,i (x i )·Hαi ,i (x) su grado será
menor o igual que m pues son una combinación lineal del polinomio hαi −1,i (x)
(cuyo grado es m-1) y del polinomio Hαi ,i (x) (cuyo grado es m).

92
Programación y Métodos Numéricos Interpolación polinómica

Por el mismo motivo, para i = 0, 1, 2, ..., n, todos los polinomios:

Hαi −2,i (x) = hαi − 2,i (x) − h(ααi −i −2,i1 (x i )·Hαi −1,i (x) − h(ααi −i 2,i (x i )·Hαi ,i (x)

tienen grado menor o igual que m pues son una combinación lineal del
polinomio hαi −2,i (x) (cuyo grado es m-2), del polinomio Hαi −1,i (x) (cuyo grado es
menor o igual que m) y del polinomio Hαi ,i (x) (cuyo grado es m).

Razonando de forma recursiva se concluye que todos los polinomios Hk,i (x) ,
con 0 < k < αi y 0 < i < n, son polinomios de grado menor o igual que m.

Y puesto que pm(x) es a su vez una combinación lineal de los polinomios Hk,i (x)
puede concluirse que grado(pm(x)) < m.

Por otra parte, fácilmente se verifica por inducción que:

⎧ 1 si i = j y j = k
H(k,ij (x s ) = δis ·δ jk = ⎨ (0 < j, k < αs) , (0 < i, s < n)
⎩0 en otro caso

lo que implica que:

n
⎛ αi (k ( j ⎞
p (x s ) = ∑ ⎜ ∑ fi ·Hk,i (x s ) ⎟ = fs( j ·H(j,sj (x s ) =fs( j
(j
m (0 < j < αs) , (0 < s < n)
i= 0 ⎝ k =0 ⎠

y por tanto que pm(x) es solución del problema de interpolación de Hermite.

b) Demostremos ahora, por reducción al absurdo, que el polinomio pm(x) es la


única solución del problema de Hermite.

Supongamos que hubiera dos polinomios distintos, pm(x) y qm(x), de grado


menor o igual que m y verififcando:

m (x i ) = fi
p(k (0 < k < αi) , (0 < i < n)
(k

m (x i ) = fi
q(k (0 < k < αi) , (0 < i < n)
(k

93
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Denotando por r(x) al polinomio definido mediante: r(x) = pm(x) – qm(x) se tiene
que r(x) es otro polinomio de grado menor o igual que m para el que se verifica
que:
r (k (xi ) = 0 (0 < k < αi) , (0 < i < n)

En otros términos cada punto xi del soporte es una raíz de multiplicidad (αi +1)
de r(x). Ello implica que, contando cada raíz tantas veces como su
multiplicidad, el polinomio r(x) tiene, al menos, (m+1) raíces. Puesto que el
único polinomio de grado menor o igual que m con más de m raíces es el
polinomio idénticamente nulo, se puede concluir que r(x) ≡ 0. De ello se infiere
que p(x) ≡ q(x) en contra de lo inicialmente supuesto. Por tanto es absurdo
suponer que existe más de un polinomio interpolador de Hermite.
c.q.d.

Ejemplo:
Calculemos el polinomio interpolador de Hermite de la función de Runge
f(x) = (1 + x2)-1 sobre el soporte {-8, 0, 10} para los enteros { 3, 0, 2}.

Comencemos evaluando la función y sus derivadas en los puntos del soporte

• En x0 = -8:

1 16
f0(0 = f( −8) = , f0(1 = f '( −8) = ,
65 4225

382 12096
f0(2 = f "( −8) = , f0(3 = f '''( −8) =
274625 17850625

• En x1 = 1: f1(0 = f(0) = 1

• En x2 = 10:

1 −20 598
f2(0 = f(10) = , f2(1 = f '(10) = , f2(2 = f "(10) =
101 10201 1030301

Evaluemos ahora los polinomios hk,i(x) dados en el teorema anterior:

94
Programación y Métodos Numéricos Interpolación polinómica

“Asociados a x0”:

3 3
⎛ x − x1 ⎞ ⎛ x − x 2 ⎞ x ⎛ x − 10 ⎞ 1
h0,0(x) = ⎜ ⎟·⎜ ⎟ = ·⎜ ⎟ = ·x·(x − 10)3 =
⎝ x 0 − x1 ⎠ ⎝ x 0 − x 2 ⎠ −8 ⎝ −18 ⎠ 46650

1 5 25 2 125
= ·x 4 − ·x 3 + ·x − ·x
46656 7776 3888 5832

3
⎛ x − x1 ⎞ ⎛ x − x 2 ⎞
h1,0(x) = (x − x 0 )·⎜ ⎟·⎜ ⎟ =
x
⎝ 0 − x 1⎠⎝ 0x − x 2 ⎠

3
x ⎛ x − 10 ⎞ 1
= (x + 8)· ·⎜ ⎟ = ·(x + 8)·x·(x − 10)3 =
−8 ⎝ −18 ⎠ 46650

1 11 5 175 2 125
= ·x 5 − ·x 4 + ·x3 + ·x − ·x
46656 23328 3888 5832 729

3
(x − x 0 )2 ⎛ x − x1 ⎞ ⎛ x − x 2 ⎞
h2,0(x) = ·⎜ ⎟·⎜ ⎟ =
2! x
⎝ 0 − x 1 ⎠⎝ 0x − x 2 ⎠

3
(x + 8)2 x ⎛ x − 10 ⎞ 1
= · ·⎜ ⎟ = ·(x + 8)2 ·x·(x − 10)3 =
2 −8 ⎝ −18 ⎠ 93912

1 7 29 235 3 25 2 500
= ·x 6 − ·x 5 − ·x 4 + ·x + ·x − ·x
93312 46656 23328 11664 729 729

3
(x − x 0 )3 ⎛ x − x1 ⎞ ⎛ x − x 2 ⎞
h3,0(x) = ·⎜ ⎟·⎜ ⎟ =
3! x
⎝ 0 − x 1⎠⎝ 0x − x 2 ⎠

3
(x + 8)3 x ⎛ x − 10 ⎞ 1
= · ·⎜ ⎟ = ·(x + 8)3 ·x·(x − 10)3 =
6 −8 ⎝ −18 ⎠ 279936

1 1 19 119 4 95 3 100 2 4000


= ·x 7 − ·x 6 − ·x 5 + ·x + ·x − ·x − ·x
279936 46656 23328 34992 1458 729 2187

95
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

“Asociados a x1”:

4 3 4 3
⎛ x − x0 ⎞ ⎛ x − x2 ⎞ ⎛x+8⎞ ⎛ x − 10 ⎞ 1
h0,1(x) = ⎜ ⎟ ·⎜ ⎟ =⎜ ⎟ ·⎜ ⎟ = ·(x + 8)4 ·(x − 10)3 =
⎝ x1 − x 0 ⎠ ⎝ x1 − x 2 ⎠ ⎝ 8 ⎠ ⎝ −10 ⎠ 4096000

1 1 69 109 101 3 21 2 1
=− ·x 7 − ·x 6 + ·x 5 + ·x 4 − ·x − ·x + ·x + 1
4096000 2048000 1024000 512000 16000 800 5

“Asociados a x2”:

4 4
⎛ x − x 0 ⎞ ⎛ x − x1 ⎞ ⎛ x + 8 ⎞ ⎛ x ⎞ 1
h0,2(x) = ⎜ ⎟ ·⎜ ⎟ =⎜ ⎟ ·⎜ ⎟ = ·(x + 8)4 ·x =
⎝ x 2 − x 0 ⎠ ⎝ x 2 − x1 ⎠ ⎝ 18 ⎠ ⎝ 10 ⎠ 1049760

1 1 4 64 128
= ·x 5 + ·x 4 + ·x 3 + ·x 2 + ·x
1049760 32805 10935 32805 32805

4
⎛ x − x0 ⎞ ⎛ x − x1 ⎞
h1,2(x) = (x − x 2 )·⎜ ⎟ ·⎜ ⎟=
⎝ x2 − x0 ⎠ ⎝ x1 − x1 ⎠

4
⎛x+8⎞ x 1
= (x − 10)·⎜ ⎟ · = ·(x − 10)·(x + 8)4 ·x =
⎝ 18 ⎠ 10 1049760

1 11 2 56 512 2 256
= ·x 6 + ·x 5 + ·x 4 − ·x 3 − ·x − ·x
1049760 524880 32805 32805 32805 6561

4
(x − x 2 )2 ⎛ x − x 0 ⎞ ⎛ x − x1 ⎞
h2,2(x) = ·⎜ ⎟ ·⎜ ⎟=
2! ⎝ x2 − x0 ⎠ x
⎝ 2 − x 1⎠

4
(x − 10)2 ⎛ x + 8 ⎞ ⎛ x ⎞ 1
= ·⎜ ⎟ ·⎜ ⎟ = ·(x − 10)2 ·(x + 8)4 ·x =
2 ⎝ 18 ⎠ ⎝ 10 ⎠ 2099520

1 1 13 38 8 128 2 1280
= ·x 7 + ·x 6 − ·x 5 − ·x 4 + ·x 3 + ·x + ·x
2099520 174960 174960 32805 10935 2187 6561

96
Programación y Métodos Numéricos Interpolación polinómica

Evaluemos ahora los valores de las derivadas que intervendrán en el cálculo de


los polinomios de base de Hermite:

−7
h'''2,0 (x 0 ) = h'''2,0 ( −8) =
8

−7 13
h"1,0 (x 0 ) = h"1,0 ( −8) = , h'''1,0 (x 0 ) = h'''1,0 ( −8) =
12 72

−7 13
h'0,0 (x 0 ) = h'0,0 ( −8) = , h"0,0 (x 0 ) = h"0,0 ( −8) = ,
24 216

−31
h'''0,0 (x 0 ) = h'''0,0 ( −8) =
3888

29
h"1,2 (x 2 ) = h''1,2 (10) =
45

29 11
h'0,2 (x 2 ) = h'0,2 (10) = , h"0,2 (x 2 ) = h''0,2 (10) =
90 135

Tras los cálculos previos anteriores ya se pueden determinar los polinomios de


base de Hermite utilizando las expresiones dadas en el teorema anterior:

“Asociados” a x0 = -8:

H3,0(x) = h3,0(x) =

1 1 19 119 4 95 3 100 2 4000


= ·x 7 − ·x 6 − ·x 5 + ·x + ·x − ·x − ·x
279936 46656 23328 34992 1458 729 2187

H2,0 (x) = h2,0 (x) − h'''2,i (x 0 )·H3,0 (x) =

7 1 161 485 25 3 125 2 5000


= ·x 7 − ·x 6 − ·x 5 + ·x 4 + ·x − ·x − ·x
2239488 124416 186624 279936 324 1458 2187

97
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

H1,0 (x) = h1,0 (x) − h"1,0 (x 0 )·H2,0 (x) − h'''1,0 (x 0 )·H3,0 (x) =

95 11 2249 755 3625 3 125 2 23125


= ·x 7 − ·x 6 − ·x 5 − ·x 4 + ·x + ·x − ·x
80621568 13436928 6718464 10077696 104976 26144 19683

H0,0 (x) = h0,0 (x) − h'0,0 (x 0 )·H1,0 (x) − h"0,0 (x 0 )·H2,0 (x) − h'''0,0 (x 0 )·H3,0 (x) =

3205 215 75763 168865


= ·x 7 + ·x 6 − ·x 5 − ·x 4 +
17414258688 2902376448 1451188224 2176782336

120275 3 67375 2 128125


+ ·x + ·x − ·x
22674816 5668704 531441

“Asociado” a x1 = 0:
H0,1(x) = h0,1(x) =

1 1 69 109 101 3 21 2 1
=− ·x 7 − ·x 6 + ·x 5 + ·x 4 − ·x − ·x + ·x + 1
4096000 2048000 1024000 512000 16000 800 5

“Asociados” a x2 = 10:
H2,2(x) = h2,2(x) =

1 1 13 38 8 128 2 1280
= ·x 7 + ·x 6 − ·x 5 − ·x 4 + ·x 3 + ·x + ·x
2099520 174960 174960 32805 10935 2187 6561

H1,2 (x) = h1,2 (x) − h"1,2 (x 2 )·H2,2 (x) =

−29 43 271 1192 1072 3 5248 2 9728


= ·x 7 − ·x 6 + ·x 5 + ·x 4 − ·x − ·x − ·x
94478400 15746400 3936600 1476225 492075 98415 59049

H0,2 (x) = h0,2 (x) − h'0,2 (x 2 )·H1,2 (x) − h"0,2 (x 2 )·H2,2 (x) =

511 587 10753 8989


= ·x 7 + ·x 6 − ·x 5 − ·x 4 +
8503056000 1417176000 708588000 66430125

22324 63616 2 109184


+ ·x 3 + ·x + ·x
22143375 4428675 2657205

98
Programación y Métodos Numéricos Interpolación polinómica

Antes de construir el polinomio interpolador verifiquemos que los polinomios de


base de Hermite satisfacen:
⎧ 1 si i = s y j = j
H(k,ij (x s ) = δ jk ·δis = ⎨ ( 0 < j,k < αs) , ( 0 < i, s < 2)
⎩0 en otro caso

Ello se puede comprobar en las tablas siguientes que recogen los valores de
las funciones Hk,i(x) y de sus tres primeras derivadas en los puntos del soporte.
En ella los valores que se muestran resaltados se corresponden con aquellos
que permiten verificar las igualdades anteriores.

Tabla de valores de H00(x)


Función 1ª derivada 2ª derivada 3ª derivada
x0 1 0 0 0

−128125 67375 120275


x1 0
531441 2834352 3779136

23725
x2 0 0 0
248832

Tabla de valores de H10(x)


Función 1ª derivada 2ª derivada 3ª derivada
x0 0 1 0 0

−23125 125 3625


x1 0
19683 13122 17496

1925
x2 0 0 0
3456

Tabla de valores de H20(x)


Función 1ª derivada 2ª derivada 3ª derivada
x0 0 0 1 0

−5000 −125 25
x1 0
2187 729 54

125
x2 0 0 0
96

99
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Tabla de valores de H30(x)


Función 1ª derivada 2ª derivada 3ª derivada
x0 0 0 0 1

−4000 −200 95
x1 0
2187 729 243

5
x2 0 0 0
4

Tabla de valores de H01(x)


Función 1ª derivada 2ª derivada 3ª derivada
x0 0 0 0 0

1 −21 −303
x1 1
5 400 8000

−19683
x2 0 0 0
128000

Tabla de valores de H02(x)


Función 1ª derivada 2ª derivada 3ª derivada
x0 0 0 0 0

109184 127232 44648


x1 0
2657205 4428675 7381125

7099
x2 1 0 0
121500

Tabla de valores de H12(x)


Función 1ª derivada 2ª derivada 3ª derivada
x0 0 0 0 0

−9728 −10496 −2144


x1 0
59049 98415 164025

−511
x2 0 1 0
1350

100
Programación y Métodos Numéricos Interpolación polinómica

Tabla de valores de H22(x)


Función 1ª derivada 2ª derivada 3ª derivada
x0 0 0 0 0

1280 256 16
x1 0
6561 2187 3645

29
x2 0 0 1
30

Las figuras siguientes recogen los grafos de estos polinomios de base (en el
intervalo [-11, 11]:

H0,0(x)
H0,1(x)
H0,2(x)

H1,0(x)

H1,2(x)

101
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

H2,0(x)

H2,2(x)

H3,0(x)

Por último, con los polinomios de base de Hermite y los valores de la función
f(x) y sus derivadas en los puntos del soporte se puede calcular el polinomio
interpolador de Hermite mediante:

3 2
p7 (x) = ∑ f0(k ·Hk,0 (x) + f1(0 ·H0,1(x) + ∑ f2(k ·Hk,2 (x) =
k =0 k =0

27699871744 19112886821 2 21826921472 3


=1+ ·x − ·x − ·x +
147132134305 735660671525 3678303357625

3908797597 1162926472 9254121 4204394


+ ·x 4 + ·x 5 − ·x 6 − ·x 7
18391516788125 18391516788125 18391516788125 18391516788125

La figura siguiente recoge, en el intervalo [-11, 11] el grafo de la función de


Runge (en trazo discontinuo) y del polinomio interpolador de Hermite hallado
(en trazo continuo). Como puede apreciarse, después de los largos cálculos
anteriores, existe una buena aproximación entre el polinomio hallado y la

102
Programación y Métodos Numéricos Interpolación polinómica

función que se interpola en los entornos de los puntos del soporte no


sucediendo lo mismo en puntos alejados de los del soporte. Y al estar los
puntos del soporte “alejados” entre sí se aprecian zonas en las que la precisión
del polinomio interpolador es bastante pobre. En los ejercicios propuestos se
encontrarán casos en los que el polinomio interpolador tiene un
comportamiento más parecido a la función que interpola.


Ejercicios propuestos

1º) Determínese, sobre el soporte {0, 1, 2} y para los enteros {2, 1, 2}, el
polinomio interpolador de Hermite de la función f(x) = 1 + 3·x . Represéntense
gráficamente, en el intervalo [0, 2], los polinomios de base de Hermite, el
polinomio interpolador de Hermite y la función f(x).

2º) Constrúyase el polinomio interpolador de Hermite de la función de Runge


f(x) = (1+x2)-1 sobre el soporte {-2, 0, 2} para los enteros {2, 2, 2}.
Represéntense gráficamente, en el intervalo [-2, 2], los polinomios de base de
Hermite, el polinomio interpolador de Hermite y la función f(x).

3º) Demuéstrese que siendo Hk,i(x) (k = 0, ..., αi), (i = 0, ..., n) los polinomios de
base de Hermite construidos sobre el soporte {x0, ..., xn} y para los enteros {α0,
..., αn}, se verifica que:
n

∑H
i=0
0,i (x) = 1

103
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

4º) Demuéstrese que el polinomio de base de Hermite Hk,i(x) (0 < k < αi) , (0 < i
< n), construido sobre el soporte {x0, ..., xn} y para los enteros {α0, ..., αn}, es los
n
único polinomio de grado menor o igual que m = n + ∑α
i=0
i para el que se

verifican las igualdades:

⎧ 1 si s = i y j = k
H(k,ij (x s ) = ⎨ (0 < j < as) , (0 < s < n)
⎩0 en caso contrario

5º) Demuéstrese que siendo Hk,i(x) (k = 0, ..., αi), (i = 0, ..., n) los polinomios de
base de Hermite construidos sobre el soporte {x0, ..., xn} y para los enteros {α0,
n
..., αn}, y siendo j un entero no negativo inferior o igual a m = n + ∑ α , se
i=0
i

verifica que:
n ⎛ inf( j,αi ) ⎛ j ⎞ ( j−k ) ⎞
∑ ⎜ ∑ k!·⎜ ⎟·x i ·Hk,i (x) ⎟ = x
j

i=0 ⎝ k = 0 ⎝k ⎠ ⎠

104
Programación y Métodos Numéricos Interpolación polinómica

3.3. Análisis del error en la interpolación de Hermite.


Al igual que se señaló en el caso de la interpolación de Lagrange puede
definirse el error de interpolación de Hemite como sigue:

Definición
Siendo pm(x) el polinomio interpolador de Hermite de la función f(x) sobre el
soporte {x0, x1, ...., xn} y para los enteros {α0, α1, ..., αn}, se denomina error de
interpolación (de Hermite) a la función E(x) que a todo punto x le asocia el valor
E(x) = f(x) – pm(x).

En general, si sobre la función f(x) que se está interpolando sólo se conocen


los valores de ella y algunas de sus derivadas en los puntos del soporte, poco
se puede decir sobre el error de interpolación (salvo que será nulo en los
puntos del soporte). Pero si se admite una cierta regularidad de la función f(x),
más concretamente, si se admite que tanto la función f(x) como sus primeras
derivadas son continuas y acotadas, es posible obtener cotas de la función
error de interpolación en el intervalo (a, b) al que pertenezcan los puntos del
soporte. De forma más concreta, demostremos el siguiente:

Teorema 7
Dados el soporte de (n+1) puntos distintos {x0, x1, ...., xn} de un intervalo (a, b) y
n
los enteros no negativos {α0, α1, ..., αn}, denotando por m = n + ∑α
i=0
i y por

pm(x) al polinomio interpolador de Hermite, sobre el soporte considerado y para


los enteros dados, de una función f(x) de clase C(m+1)((a, b)), para todo punto
x*∈(a, b) se puede encontrar algún punto ξ * ∈(a, b), dependiente del punto x*
que se escoja, verificando que el error de interpolación de Hermite en x* está
dado por la expresión:

f (m+1 ( ξ * ) n
E(x*) = f(x*) − pn (x*) = ·∏ (x * − xi )αi +1
(m + 1)! i=0

Demostración:
Si el punto x* coincidiera con alguno de los puntos del soporte la igualdad
anterior es evidente pues el error sería nulo y el productorio que aparece en la
expresión del error también se anularía.

Consideremos pues que x* ∉{x0, x1,..., xn}. En ese caso se puede definir el
polinomio:

105
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

f(x*) − pm (x*) n
q(x) = pm(x) + n
·∏ (x − x i )αi +1
∏ (x * − x )
i= 0
i
αi +1 i=0

El polinomio q(x) es un polinomio de grado menor o igual que (m+1), pues es la


suma de un polinomio de grado menor o igual que m (pm(x)) más otro polinomio
n
de grado (m+1) (el polinomio ∏ (x − x )
i=0
i
αi +1
) multiplicado por la constante

f(x*) − pm (x*)
n
.
∏ (x * − x )
i=0
i
αi +1

Además dicho polinomio verifica que:

q(j(xi) = p(jm(xi) = f(j(xi) (i = 0, ..., n), (j = 0, ..., αi)

f(x*) − pn (x*) n
q(x*) = pn(x*) + n
·∏ (x * − xi ) = pn(x*)+ f(x*) - pn(x*) = f(x*)
∏ (x * − xi ) i=0
i=0

Por tanto q(x) es el polinomio interpolador de Hermite de la función f(x) sobre el


soporte formado por los (n+2) puntos: {x0, x1,..., xn, x*} y para los enteros {α0,
α1, ..., αn, 0}.

Definimos entonces la función F(x) = f(x) – q(x). Esta función es continua y será
de clase C(m+1)((a, b)), pues es la diferencia de dos funciones de dicho espacio.
Además la función F(x) admite a cada punto del soporte xi como una raíz de
multiplicidad, al menos, αi y al punto x* como una raíz, al menos, simple. Es
decir que, contando cada raíz tantas veces como su multiplicidad indique, la
función F(x) admite en (a, b), al menos, (m+2) raíces. Aplicando
sucesivamente el teorema de Rolle24 se tiene entonces que F’(x) admitirá, al
menos, (m+1) raíces en (a, b), F”(x) admitirá, al menos, m raíces en (a, b),
F’’’(x) admitirá, al menos, (m-1) raíces en (a, b), ...... y F(m+1(x) admitirá, al
menos, una raíz en (a, b). Denotemos por ξ * a alguna de dichas raíces de
F(m+1(x) en (a, b). Se tiene entonces que:

0 = F(m+1( ξ * ) = f(m+1( ξ * ) – q(n+1( ξ * ) =


24
Teorema de Rolle: “Si una función g(x) continua en el intervalo [a, b] es derivable en (a, b) y
además verifica que f(a) = f(b), entonces existe al menos un punto c∈(a, b) en el que se verifica
que f’(c) = 0”.

106
Programación y Métodos Numéricos Interpolación polinómica

(m +1
f(x*) − pm (x*) ⎛ n ⎞
=f (m+1
(ξ *) – p (m +1
m (ξ*) − n ·⎜ ∏ (x − xi )αi +1 ⎟ =
∏ (x * −xi )αi +1 ⎝ i=0
i=0

f(x*) − pm (x*)
= f(m+1( ξ * ) – 0 – n
·(m + 1)! ⇒
∏ (x * − x )
i= 0
i
αi +1

f (m+1(ξ*) n
⇒ f(x*) – pm(x*) = ·∏ (x * − x i )αi +1
(m + 1)! i=0
c.q.d.

Con la misma notación que la utilizada en el teorema precedente, una


consecuencia inmediata es que si f(x) es una función polinómica de grado
menor o igual que m, el error que se comete al interpolarla es nulo (pues la
derivada de orden (m+1) de un polinomio de grado menor o igual que m es la
función nula).

En la práctica el teorema anterior se utiliza para obtener cotas del error de


interpolación. En efecto, una consecuencia inmediata de dicho teorema es que
si se denota por M al valor:
M = Sup f (n+1(x)
x∈( a,b )

se verificará que:
n
M
∀x ∈ (a,b) : |E(x)| = |f(x) – pm(x)| ≤ · ∏ (x − xi )αi +1
(m + 1)! i=0
de donde:
n
M
∀x ∈ (a,b) : |E(x)| = |f(x) – pm(x)| ≤ ·Sup ∏ (x − xi )αi +1
(m + 1)! x∈(a,b ) i=0

Si se denota por h a la longitud del intervalo (a, b) es evidente que, para todo
punto x interior a dicho intervalo se verificará que: |x-xi| < h. Ello nos permite
expresar la cota de error en la forma:
M
∀x ∈ (a,b) : |E(x)| = |f(x) – pm(x)| ≤ ·h(m+1)
(m + 1)!

Las desigualdades anteriores recogen cotas superiores del máximo del valor
absoluto de la función de error de interpolación. Tales cotas pueden ser

107
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

alcanzadas o no por la función de error (siendo frecuente que el error real de


interpolación sea ostensiblemente menor que la cota así calculada). Por ello el
interés de estas acotaciones se encuentra cuando la cota calculada es
suficientemente pequeña, pues en ese caso se pueden asegurar errores de
interpolación pequeños. Cuando la cota tiene un valor alto poco se puede
asegurar sobre el error de interpolación.

Por otra parte debe señalarse que las desigualdades anteriores pueden inducir
al lector que aborda por primera vez el estudio de la interpolación de Hermite a
sacar conclusiones erróneas. Por ejemplo es frecuente que a la vista de esta
expresión se piense (erróneamente) que un incremento en el número de puntos
del soporte o del número de derivadas de f(x) y del polinomio interpolador que
se hacen coincidir en cada punto del soporte, sin incrementar la longitud del
intervalo, conduce a un menor error de interpolación ya que al aumentar m
crece el valor de (m+1)!. Ello no siempre sucede así pues, aunque es cierto
que el factorial (m+1)! acaba creciendo con m más rápidamente que el valor
de hm, debe tenerse en cuenta que el valor de M = Sup f (m+1(x) no es
x∈( a,b )

independiente de m. Por otra parte el incremento del número de puntos del


soporte puede conducir a polinomios interpoladores de alto grado que
presenten oscilaciones muy pronunciadas lo cual no siempre será acorde con
la naturaleza de la función f(x) que se interpole.

Ejemplo:
Consideremos la función de Runge f(x) = (1+x2)-1 , el soporte {-1, 1} y los
enteros {1, 1}. El polinomio interpolador de Hermite en esta situación será de
grado m = 3. El error de interpolación, según el teorema precedente, estará
dado por la expresión:

f (iv (ξ*)
∀x* ∈ [ −1,1] ∃ξ*=ξ(x*) / E(x*) = ·(x * +1)2 ·(x * −1)2
4!

Busquemos una cota del error. Para ello se tiene que:

(iv 384·x 4 288·x 2 24


f (x) = − +
(1 + x ) (1 + x )
2 5 2 4
(1 + x 2 )3
cuyo máximo valor absoluto se alcanza en x = 0 y es: |f(iv(0)| = 24. Por tanto:

108
Programación y Métodos Numéricos Interpolación polinómica

24
∀x ∈ [ −1,1] : E(x) ≤ · sup (x + 1)2 ·(x − 1)2 = sup ⎡⎣(x + 1)2 ·(x − 1)2 ⎤⎦
4! x∈( −1,1) x∈( −1,1)

Determinemos el máximo de q(x) = (x+1)2·(x-1)2 =(x2 – 1)2.Puesto que:

q’(x) =4·x·(x2 –1)


se tiene que la primera derivada de q(x) se anula en los puntos x(1) = -1, x(2) = 0
y x(3) = 1. Puesto que q(-1) = q(1) = 0 y q(0) = 1 puede concluirse que:

sup ⎡⎣(x + 1)2 ·(x − 1)2 ⎤⎦ = 1


x∈( −1,1)

lo que nos conduce a la acotación de error siguiente:

∀x ∈ [ −1,1] : E(x) ≤ 1

Pero esta acotación es muy “pobre” si se tiene en cuenta que el máximo valor
de la función f(x) es 1.

Determinemos el error realmente cometido y su máximo valor. Para ello


debemos determinar el polinomio interpolador de Hermite. Dejamos al lector la
tarea de realizar los cálculos detallados que nos conducen a que:

1
·(3 – x2)
p3(x) =
4
Por tanto, al disponer de la expresión de la función que se está interpolando, la
función de error es:

1 1
E(x) = f(x) − p3 (x) = − ·(3 − x 2 )
1+ x 2
4

Su primera derivada está dada por:

−2·x x 1
E’(x) = + = ·x·((1 + x 2 )2 − 4)
(1 + x )
2 2
2 2·(1 + x )
2 2

que se anula en x = 0 y en la solución de (1+x2)2 – 4 = 0, es decir:

(1+x2)2 – 4 = 0 ⇒ (1 + x2) = ±2

109
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

lo que proporciona como raíces rales los valores x = -1 y x = 1. Puesto que


3 1
E(-1) = E(1) = 0 y E(1) = 1 − = puede concluirse que:
4 4

1
max E(x) = E(0) =
x∈( −1,1) 4

Los razonamientos anteriores demuestran que el máximo valor del error de


interpolación es, en este caso, la cuarta parte de la cota obtenida.

La figura siguiente recoge los grafos de f(x) y de p3(x).

f(x) = (1+x2)-1

p3(x) = (¼)·(3-x2)

Ejercicio propuesto:
a) Dertermínese la expresión del error de interpolación de Hermite que se
comete al interpolar f(x) = sen(x) en el soporte {0, π/2 , π} y para los
enteros {1, 0, 1}.
b) Obténgase a partir de la expresión anterior una cota del error en el
intervalo [0, π].
c) Determínese el polinomio interpolador de Hermite, p(x), que interpola a
f(x) en el soporte {0, π/2 , π} y para los enteros {1, 0, 1}.
d) Hállese el máximo valor de |f(x) – p(x)| y comparese este resultado con
la cota obtenida en el apartado b).

110
Programación y Métodos Numéricos Interpolación polinómica

3.4. Interpolación de Hermite: la fórmula de interpolación de Newton.


3.4.1. Planteamiento
Las dos maneras presentadas anteriormente para determinar el polinomio
interpolador de Hermite (a través de la resolución del correspondiente sistema
de ecuaciones o mediante la fórmula de interpolación de Hermite en la que se
utilizan los polinomios de base de Hermite) no son los únicos caminos posibles.
En efecto, la fórmula de Newton que se presentó en el subapartado 2.3. para el
cálculo del polinomio interpolador de Lagrange puede generalizarse al caso de
la interpolación de Hermite. Pero para ello es necesario generalizar el concepto
de diferencia dividida. Todo ello es el objetivo de este subapartado.

En todo cuanto sigue se considerará que se trabaja en un soporte formado por


(n+1) puntos distintos {x0, x1, .., xn} y que en cada punto xi se conoce el valor de
una cierta función f(x) así como el de sus αi primeras derivadas. A tales
valores, se les denotará indistintamente por fi(0 , fi(1 , ..., fi( αi o por f(xi), f’(xi), ...,
n
f ( αi (xi ) . Además denotaremos por m al valor obtenido mediante: m = n + ∑α .
i=0
i

Este número entero no negativo indica, como se ha visto en apartados


anteriores, el grado del polinomio interpolador de Hermite de f(x) sobre el
soporte {x0, x1, .., xn} y para los enteros {α 0 , α1,..., αn } .

La idea básica de la fórmula de Newton consiste en expresar el polinomio


interpolador de Hermite, pm(x), en la forma:
( α0 )
0 + a0 ·(x − x 0 ) + a 0 ·(x − x 0 ) + ... + a0
pm(x) = a(0) (1) (2) 2
·(x − x 0 )α0 +

( )
+ a1(0) + a1(1) ·(x − x1 ) + a1(2) ·(x − x1 )2 + ... + a1( α1 −1) ·(x − x1 )α1 ·(x − x 0 )( α0 +1) +

+ …….. +
n −1

( αn
n + an ·(x − x n ) + an ·(x − x n ) + ... + an ·(x − x n )
a(0) (1) (2) 2 αn
)
·∏ (x − x j )
j=0
( α j +1)
=

n ⎛
⎛ αi (k ) k ⎞ α j +1 ⎞
α0 (i−1)

∑ 0 ( i) ∑ ⎜⎜∑ i ( i ) ⎟ ∏(x − xj )
k
= a (k )
· x − x + a · x − x · ⎟
k =0 i=1 ⎝ ⎝ k = 0 ⎠ j=0 ⎠
De esta manera los coeficientes a(k
i
)
((k = 0, .., αi) , (i = 0, ..., n) ) pueden
determinarse fácilmente a partir de las igualdades que debe satisfacer el
polinomio interpolador. Antes de continuar con este proceso, ilustremos lo
anterior con dos sencillos ejemplos en los que se esboza el proceso de cálculo
de los coeficientes del polinomio.

111
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Ejemplos:
1º) Considérese el problema de interpolación de Hermite planteado sobre un
soporte de 2 puntos {x0, x1} y para los enteros {1, 1}. La fórmula de Newton
consistiría básicamente en buscar el polinomio interpolador p3(x) en la forma:

0 + a0 ·(x − x 0 ) + a1 ·(x − x 0 ) + a1 ·(x − x 0 ) ·(x − x1 )


p3(x) = a(0) (1) (0) 2 (1) 2

lo que nos permitirá razonar como sigue:

p3(x0) = f0(0 ⇒ a(0)


0 = f0
(0
( que denotaremos como f[x0])

p’3(x0) = f0(1 ⇒ a(1)


0 = f0
(1
(que denotaremos como f[x0, x0] )

f1(0 − f0(0
− f0(1
f1(0 − f0(0 f0(1 (x1 − x 0 ) f[x 0 ,x1 ] − f [ x 0 ,x 0 ]
p3(x1) = f1(0 ⇒ a1(0) = − = =
(x1 − x 0 ) (x1 − x 0 )
2
(x1 − x 0 ) (x1 − x 0 )
(que denotaremos como f[x0, x0, x1] )

f1(1 − f[x 0 ,x 0 ] 2·f [ x 0 ,x 0 ,x1 ]


p’3(x1) = f1(1 ⇒ a1(1) = −
(x1 − x 0 )2 ( x1 − x 0 )
lo que, denotando por f[x1, x1] al valor f1(1 se puede
expresar como:

f[x1,x1 ] − f[x 0 ,x 0 ] f[x 0 ,x1 ] − f[x 0 ,x 0 ]



a1(1) =
( x1 − x 0 ) −
( x1 − x 0 ) =
(x1 − x 0 ) ( x1 − x 0 )

f[x1,x1 ] − f[x 0 ,x1 ] f[x 0 ,x1 ] − f[x 0 ,x 0 ]

=
( x1 − x 0 ) −
( x1 − x 0 ) =
(x1 − x 0 ) ( x1 − x 0 )

f[x 0 ,x1,x1 ] f [ x 0 ,x 0 ,x1 ]


= − = f[x0, x0, x1, x1]
(x1 − x 0 ) ( x1 − x0 )

El procedimiento de cálculo de estos coeficientes puede realizarse de forma


simple si se organizan en una tabla como la que a continuación se detalla. En
ella, los valores resaltados en letra negrita se corresponden con los
coeficientes y los valores que se proporcionan en cursiva se corresponden con

112
Programación y Métodos Numéricos Interpolación polinómica

datos del problema. El resto se calcula de forma similar a como se detalló para
las diferencias divididas

x0 f0( 0

x0 --- f0( 1 = f[x0, x0]

x1 f1( 0 f[x0, x1] f[x0, x0, x1]

x1 -- f1(1 = f[x1, x1] f[x0, x1, x1] f[x0, x0, x1, x1]

2º) Consideremos ahora el problema de interpolación de Hermite planteado


sobre un soporte de 2 puntos {x0, x1} y para los enteros {2, 1}. La fórmula de
Newton consistiría básicamente en buscar el polinomio interpolador p4(x) en la
forma:
0 + a0 ·(x − x 0 ) + a0 ·(x − x 0 ) + a1 ·(x − x 0 ) + a1 ·(x − x 0 ) ·(x − x1 )
p4(x) = a(0) (1) (2) 2 (0) 3 (1) 3

lo que nos permitirá razonar como sigue:

p4(x0) = f0(0 ⇒ a(0)


0 = f0
(0
( que denotaremos como f[x0])

p’4(x0) = f0(1 ⇒ a(1)


0 = f0
(1
(que denotaremos como f[x0, x0] )

f0(2
p”4(x0) = f0(2 ⇒ a(2)
0 = (que denotaremos como f[x0, x0, x0] )
2
f0(2
f − f0
(0 (0 (1
f0 2
p4(x1) = f1(0 ⇒ a1(0) = 1 − − =
(x1 − x 0 ) (x1 − x 0 )2 (x1 − x 0 )
3

f1(0 − f0(0 f0(2


− f0(1
(x − x 0 ) 2
= 1 − =
(x1 − x 0 )2
(x1 − x 0 )

f [ x 0 ,x1 ] − f [ x 0 ,x 0 ] f [ x 0 ,x 0 ,x 0 ]
= − =
(x1 − x 0 ) 2
(x1 − x 0 )

f [ x 0 ,x 0 ,x1 ] − f [ x 0 ,x 0 ,x 0 ]
=
(x1 − x 0 )
(que denotaremos como f[x0, x0, x0, x1] )

113
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

f1(1 − f[x 0 ,x 0 ] 2·f [ x 0 ,x 0 ,x 0 ] 3·f [ x 0 ,x 0 ,x 0 ,x1 ]


p’4(x1) = f(1
⇒a (1)
= − − =
( x1 − x0 )
1 1
(x1 − x 0 )3 2
(x1 − x 0 )

f [ x 0 ,x 0 ,x1 ] − f [ x 0 ,x 0 ,x 0 ]
f [ x1,x1 ] − f[x 0 ,x 0 ] 2·f [ x 0 ,x 0 ,x 0 ] (x1 − x 0 )
− − 3· =
(x1 − x 0 ) ( x1 − x 0 ) (x1 − x 0 )
3 2

f [ x1,x1 ] − f[x 0 ,x 0 ] f [ x 0 ,x 0 ,x 0 ] 3·f [ x 0 ,x 0 ,x1 ]


= + − =
(x1 − x 0 )3 ( x1 − x0 ) (x1 − x 0 )2
2

f [ x 0 ,x1 ] − f [ x 0 ,x 0 ]
f [ x1,x1 ] − f[x 0 ,x 0 ] f [ x 0 ,x 0 ,x 0 ] (x1 − x 0 )
= + − 3· =
(x1 − x 0 ) ( x1 − x 0 ) (x1 − x 0 )2
3 2

f [ x1,x1 ] − f[x 0 ,x1 ] f [ x 0 ,x 0 ,x 0 ] f [ x 0 ,x1 ] f [ x 0 ,x 0 ]


= + − 2· + 2· =
(x1 − x 0 )3 ( x1 − x0 ) (x1 − x 0 )3 (x1 − x 0 )3
2

f [ x 0 ,x1,x1 ] f [ x 0 ,x 0 ,x 0 ] f [ x 0 ,x 0 ,x1 ]
= + − 2· =
(x1 − x 0 ) ( x1 − x0 ) (x1 − x 0 )2
2 2

f [ x 0 ,x1,x1 ] − f [ x 0 ,x 0 ,x1 ] f [ x 0 ,x 0 ,x1 ] − f [ x 0 ,x 0 ,x 0 ]


= − =
(x1 − x 0 )2 ( x1 − x0 )
2

f [ x 0 ,x 0 ,x1,x1 ] f [ x 0 ,x 0 ,x 0 ,x1 ]
= −
(x1 − x 0 ) ( x1 − x 0 )

(que denotaremos como f[x0, x0, x0, x1, x1]).

Al igual que en el ejemplo anterior, el procedimiento de cálculo de estos


coeficientes puede realizarse de forma simple si se organizan en una tabla
como la que a continuación se detalla. En ella, los valores resaltados en letra
negrita se corresponden con los coeficientes y los valores que se proporcionan
en cursiva se corresponden con datos del problema. El resto se calcula de
forma similar a como se detalló para las diferencias divididas

114
Programación y Métodos Numéricos Interpolación polinómica

x0 f0( 0

x0 --- f0( 1 = f[x0, x0]

f0( 2
x0 --- --- = f[x0, x0, x0]
2

x1 f1( 0 f[x0, x1] f[x0, x0, x1] f[x0, x0, x0, x1]

x1 -- f1(1 = f[x1, x1] f[x0, x1, x1] f[x0, x0, x1, x1] f[x0, x0, x0, x1, x1]

Las tablas de los ejemplos anteriores permiten vislumbrar la simplicidad del


proceso de aplicación la fórmula de Newton al cálculo del polinomio
interpolador de Hermite: basta con modificar las “primeras” columnas de la
tabla para ir calculando los coeficientes del polinomio interpolador de forma
similar al caso de la interpolación de Lagrange.

Pero en los ejemplos anteriores han aparecido diferencias divididas en las que
aparecen puntos repetidos y que conviene definir adecuadamente. A ello
dedicaremos el siguiente subapartado. Como en él consideraremos el caso
general, para evitar confusiones con el número de veces que se repite un
mismo punto en una diferencia dividida en adelante indicaremos dicho número
escribiéndolo entre paréntesis a continuación del punto. Así, por ejemplo
escribiremos f[x0(2), x1(3), x2(1)] en lugar de f[x0, x0, x1, x1, x1, x2].

115
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

3.4.2. Generalización del concepto de diferencia dividida

Consideremos, en primer lugar, un soporte de k puntos distintos {x0, x1, ..., xk-1}
con k > 0, y supongamos que en cada punto xi se conoce el valor que toman
una cierta función f(x) así como sus αi primeras derivadas. Denotemos además
k −1 k −1
por mk-1 al número entero positivo dado por: mk −1 = ∑ (αi + 1) − 1 = k − 1 + ∑ α i y
i=0 i=0

por pmk −1 (x) al polinomio interpolador de Hermite de la función f(x) sobre el


soporte {x0, x1, ..., xk-1} y para los enteros {α0 , α1,..., αk −1} . Se verifica entonces
que pmk −1 (x) es un polinomio de grado inferior o igual a mk-1 que satisface las
(mk-1 + 1) igualdades:

p(mj k −1 (xi ) = f ( j (xi ) ( 0 ≤ j ≤ αi ; 0 ≤ i ≤ k − 1)

Procedamos a añadir un nuevo punto, xk, al soporte anterior y denotemos por


mk al entero positivo mk = mk −1 + 1 . El nuevo polinomio interpolador de Hermite
de f(x) sobre el soporte {x0, x1, ..., xk-1, xk} para los enteros {α0 , α1,..., αk −1,0} ,
que denotaremos por pmk (x) , será el (único) polinomio de grado inferior o igual
a mk que satisfaga las (mk+1) igualdades:

p(mj k (xi ) = f ( j (xi ) ( 0 ≤ j ≤ αi ; 0 ≤ i ≤ k − 1) (1.1.)

pmk (xk ) = f(xk) (1.2.)

La determinación de pm(x) puede realizarse a partir de pm-1(x) según se indica


en la propiedad siguiente:

Propiedad 1.
Con la notación anterior, el polinomio de grado menor o igual a mk que
satisface las igualdades (1.1.) y (1.2.) puede expresarse como:

k −1
pmk (x) = pmk −1 (x) + C·∏ (x − x i )αi +1
i=0

donde la constante C que aparece en la expresión anterior está dada por:

116
Programación y Métodos Numéricos Interpolación polinómica

f(xk ) − pmk −1 (xk )


C= k −1

∏(x − xi )
αi +1
k
i=0

Demostración:
El grado del polinomio pmk (x) será, a lo sumo, el mayor de los grados de los
dos polinomios cuya suma lo define en el enunciado de la propiedad. El grado
de pmk −1 (x) es mk-1. El del segundo polinomio que interviene en la definición es:

k −1 k −1

∑ ( αi + 1) = k + ∑ αi = mk −1 + 1 = mk
i=0 i= 0

Por tanto el grado de pmk (x) es el que se afirma en la propiedad.


Por otra parte las igualdades (1.1.) son evidentes pues:

∀(s, j) / {0 ≤ j ≤ α s ,0 ≤ i ≤ k − 1} :
d j ⎛ k −1 ⎞
j ⎜∏
p(mj k (x s ) = p(mj k −1 (x s ) + C· (x − xi )αi +1 ⎟ = p(mj k −1 (x s ) = f ( j (x s )
dx ⎝ i=0 ⎠ x = xs

Además, en el punto xk se verifica la igualdad (1.2) pues:

k −1 f(xk ) − pmk −1 (xk ) k −1


pmk (xk ) = pmk −1 (xk ) + C·∏ (xk − xi )αi +1 = pmk −1 (xk ) + k −1
·∏ (xk − xi )αi +1 =
∏ ( x k − x i ) i i=0
i=0 α +1

i=0

= pmk −1 (xk ) + f(xk ) − pmk −1 (xk ) = f(xk )


c.q.d.

Definición 1.
Con la notación utilizada anteriormente, se denomina diferencia dividida de la
función f(x) en los puntos {x i }i=0 , repitiendo ( αi +1) veces el punto xi para
k

0 < i < k-1 y el punto xk una vez, al valor:

f(xk ) − pmk −1 (xk )


C= k −1

∏(x − xi )
αi +1
k
i=0

A esta diferencia dividida la denotaremos por:

117
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

f [ x0 (α0 + 1),x1(α1 + 1),...,xk −1(αk −1 + 1),xk (1)] .



Sea ahora {β0 ,.., βk ,..., βr } un conjunto de (r+1) enteros no nulos siendo, al
⎛ r ⎞
menos, jk>0. Denotemos por m al valor m = r + ⎜ ∑ βk ⎟ − 1 y por pm (x) al
⎝ i=0 ⎠
polinomio interpolador de Hermite de funa función f(x) sobre el soporte {x0, ...,
xk-1, xk, xk+1, ..., xr} y para los enteros {β0 ,.., βk −1, ( βk − 1) , βk +1,..., βr } . Dicho
polinomio es el único de grado menor o igual que m que satisface las (m + 1)
igualdades:

p(mj (x i ) = f ( j (x i ) ( 0 ≤ j ≤ βi; i = 0,...,k − 1,k + 1,...,r )


p(mj (x k ) = f ( j (x k ) ( 0 ≤ j ≤ βk − 1)

Procedamos entonces a determinar el polinomio interpolador de Hermite de f(x)


sobre el mismo soporte {x0, ..., xk-1, xk, xk+1, ..., xr} pero añadiendo una
condición más en las derivadas que deben hacerse coincidir en xk, es decir
para los enteros {β0 ,.., βk −1, βk , βk +1,..., βr } . Dicho polinomio, que denotaremos por
pm+1(x), es el único polinomio de grado inferior o igual a (m+1) que satisface las
(m+2) condiciones:

p(mj +1(xi ) = f ( j (x i ) ( 0 ≤ j ≤ αi; i = 0,...,k − 1,k + 1,...,n ) (2.1.)

p(mj +1(x k ) = f ( j (x k ) ( 0 ≤ j ≤ βk − 1) (2.2.)

p(mβ+k 1+1(xk ) = f ( βk +1(xk ) (2.3.)

La determinación de pm+1(x) puede realizarse según se indica en la siguiente


propiedad.

Propiedad 2.
Con la notación anterior, el polinomio de grado (m+1) que satisface las
igualdades (2.1.), (2.2.) y (2.3.) puede expresarse como:

118
Programación y Métodos Numéricos Interpolación polinómica

⎛ r ⎞
pm+1(x) = pm (x) + C·⎜ ∏ (x − xi )βi +1 ⎟·( x − xk ) k
β

⎜⎜ i=0 ⎟⎟
⎝ i≠ k ⎠

donde la constante C que aparece en la expresión anterior está dada por:

f ( βk (xk ) − p(mβk (xk )


C= r
βk !·∏ ( xk − xi )
αi +1

i =0
i ≠k

Demostración:
El grado del polinomio pm+1(x) será, a lo sumo, el mayor de los grados de los
dos polinomios cuya suma interviene en su expresión dada en el enunciado. El
grado de pm(x) es m. El del segundo polinomio que interviene en la definición
es:

r r r
βk + ∑ ( βi + 1) = βk + r + ∑ βi = n + ∑ βi = m + 1
i= 0 i= 0 i=0
i≠ k i≠ k

Por tanto el grado de pm+1(x) es el que se afirma en la propiedad.

Por otra parte las igualdades (2.1.) son evidentes pues:

∀(s, j) / {0 ≤ j ≤ βs ,s ∈ {0,...,k − 1,k + 1,...,r}} :

⎛ ⎞
d( j ⎜ r
βi +1 ⎟
p (j
(x s ) = p (x s ) + C· j (x − xk ) ·∏ (x − xi )
(j βk
= pm( j (x s ) = f ( j (x s )
dx ⎜⎜ ⎟
m +1 m
i=0 ⎟
⎝ i≠k ⎠ x = xs

Asimismo las igualdades (2.2.) también se satisfacen pues:

∀j ∈ {0,..., βk − 1} :
⎛ ⎞
dj ⎜ r
βi +1 ⎟
(xk ) = p (xk ) + C· j ( x − xk ) ∏ (x − xi )
βk
p (j (j
= pm( j (x s ) = f ( j (x s )
m +1 m
dx ⎜⎜ i=0


⎝ i≠k ⎠ x = xk

119
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Además también se verifica la igualdad (2.3.) pues:

r
p(mβ+k 1(xk ) = pm(βk (xk ) + C·( βk !)·∏ (xk − xi )βi +1 =
i= 0
i≠ k

f ( βk (xk ) − p(mβkk−1 (xk ) r


( βk
= p (x k ) +
m r
·(βk !)·∏ (xk − x i )βi +1 =
βk !·∏ ( xk − xi )
βi +1 i=0
r ≠k
i= 0
r ≠k

= p(mβk (xk ) + f (βk (xk ) − p(mβk (xk ) = f (βk (xk )


c.q.d.
Definición 2.
Con la notación utilizada anteriormente, se denomina diferencia dividida de la
función f(x) en los puntos {x i }i=0 repitiendo ( βi + 1) veces el punto xi para
r

i ∈ {0,...,k − 1,k,k + 1,...,n} , al valor:

f ( βk (xk ) − p(mβk (xk )


C= r
βk !·∏ ( xk − xi )
βi +1

i=0
i≠k

A esta diferencia dividida la denotaremos por:

f [ x0 (α0 + 1),...,xk −1(αk −1 + 1),xk (βk + 1),xk +1(αk +1 + 1),...,xn (αn + 1)]

Las propiedades 1 y 2 muestran una forma de calcular el polinomio interpolador


de Hermite. De ella nos ocuparemos en el subapartado siguiente. Pero antes
de ello será necesario que examinemos algunas de las propiedades de las
diferencias divididas. La primera propiedad, que se demuestra en el teorema
siguiente, asegura la unicidad del valor de la diferencia dividida con
independencia del orden en que se tomen los puntos con que se define. Más
concretamente:

Teorema 8
Sea {j0, j1, ..., jn} una permutación cualquiera de los índices {0, 1, ..., n}. Se
verifica que:

120
Programación y Métodos Numéricos Interpolación polinómica

f [ x 0 (α 0 + 1),x1(α1 + 1),...,xn (αn + 1)] = f ⎡⎣ x j0 (α j0 + 1),x j1 (α j1 + 1),...,x jn (α jn + 1)⎤⎦

Demostración:
n
Si denotamos por m al valor m’ = n − 1 + ∑ αi el polinomio interpolador de
i= 0

Hermite de la función f(x) sobre el soporte {x0, x1, ..., xn} para los enteros { α 0 ,
..., αn − 1 } será un polinomio pm’(x) de grado m’. Según la propiedad 2 antes
demostrada, el polinomio interpolador de Hermite de la función f(x) sobre el
soporte {x0, x1, ..., xn} para los enteros { α 0 , ..., αn } será el polinomio pm(x) de
grado m = m’+1 dado por la expresión:

n
pm (x) = pm ' (x) + f [ x 0 (α 0 + 1),...,xn (αn + 1)] ∏ (x − xi )αi +1
i=0

Obsérvese que en este polinomio el coeficiente del término de mayor grado es:

f [ x 0 (α 0 + 1),...,x n (αn + 1)]

Denotemos ahora por qm’(x) al polinomio interpolador de Hermite de la función


f(x) sobre el mismo soporte ordenado en la forma x j0 ,x j1 ,...,x jn y para los { }
enteros {α j0 }
, α j1 ,..., α jn − 1 . Según la propiedad 2 antes demostrada, el

polinomio interpolador de Hermite de la función f(x) sobre el soporte


{ } { }
x j0 ,x j1 ,...,x jn para los enteros α j0 , α j1 ,..., α jn será el polinomio qm(x) de grado

m = m’+1 dado por la expresión:

n
qm (x) = qm ' (x) + f ⎡⎣ x j0 (α j0 + 1),...,x jn (α jn + 1)⎤⎦ ∏ (x − x ji ) ji
α +1

i=0

Obsérvese que en este polinomio el coeficiente del término de mayor grado es:

f ⎡⎣ x j0 (α j0 + 1),...,x jn (α jn + 1)⎤⎦

Por la unicidad del polinomio interpolador de Hermite puede concluirse que


qm (x) ≡ pm (x) y por consiguiente los coeficientes de los términos del mismo
grado deben coincidir. Por tanto:

f [ x 0 (α 0 + 1),...,x n (αn + 1)] = f ⎡⎣ x j0 (α j0 + 1),...,x jn (α jn + 1)⎤⎦

c.q.d.

121
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

El teorema siguiente nos proporciona una forma cómoda de calcular las


diferencias divididas con puntos repetidos y en las que interviene más de un
punto.

Teorema 9
Sean “i” y “k” dos índices distintos y pertenecientes al conjunto de índices {0, 1,
..., n}. Considérense además los enteros no negativos {j0, ..., ji, ..., jk,..., jn}. Se
verifica que:

(x k − x i )·f [ x 0 ( j0 + 1),...,xi ( ji + 1),...,xk ( jk + 1),...,x n ( jn + 1)] =

= f [ x 0 ( j0 + 1),...,xi ( ji ),...,x k ( jk + 1),...,xn ( jn + 1)] −

− f [ x 0 ( j0 + 1),...,x i ( ji + 1),...,xk ( jk ),...,xn ( jn + 1)]


Demostración:
n
Sea m = n + ∑ ji y denotemos por pm-2(x) al polinomio de grado (m-2) que
i= 0

interpola en el sentido de Hermite a la función f(x) para los enteros {j0, ... , ji-1
,(ji-1), ji+1, ..., jk-1, (jk-1), jk+1 ..., jn}. Si incrementamos en una unidad el orden de
derivación que se hace coincidir en xi entre f(x) y el polinomio interpolador de
Hermite, se tendrá el polinomio:

⎛ ⎞
⎜ n ⎟
qm−1(x) = pm−2 (x) + Ci ⎜ ∏ ( x − x s ) ⎟·( x − xi ) i ·( x − xk ) k
js +1 j j

⎜ s =0 ⎟
⎜ ss≠≠ik ⎟
⎝ ⎠
donde:

Ci = f [ x 0 ( j0 + 1),..., xi−1(ji−1 + 1),xi ( ji + 1),xi+1( ji+1 + 1),..., xk −1( jk −1 + 1), xk ( jk ), xk +1(jk +1 + 1),..., xn ( jn + 1)]

Incrementando ahora en una unidad el orden de derivación que se hace


coincidir en xk se tendrá el polinomio:

122
Programación y Métodos Numéricos Interpolación polinómica

⎛ ⎞
⎜ n ⎟ ⎛ n ⎞
js +1 ji jk ⎜
qm (x) = pm−2 (x) + Ci ·⎜ ∏ ( x − x s ) ⎟·( x − xi ) ·( x − xk ) + Ck ∏ ( x − x s )
js +1 ⎟
·( x − xk ) k
j

⎜ s =0 ⎟ ⎜⎜ s=0 ⎟⎟
⎜ ss≠≠ik ⎟ ⎝ s ≠k ⎠
⎝ ⎠

donde:

Ck = f [ x 0 ( j0 + 1),..., xi−1( ji−1 + 1),xi ( ji + 1),xi+1( ji+1 + 1),...,xk −1( jk −1 + 1), xk +1( jk +1 + 1),xk +1( jk +1 + 1),..., xn ( jn + 1)]

Podemos repetir este mismo proceso, a partir de pm-2(x), pero incrementando


primero el orden de derivación en xk y posteriormente en xi. Se tendrían así los
polinomios:
⎛ ⎞
⎜ n ⎟
rm−1(x) = pm−2 (x) + C'k ⎜ ∏ ( x − x s ) ⎟·( x − xi ) i ·( x − xk ) k
js +1 j j

⎜ s =0 ⎟
⎜ ss≠≠ik ⎟
⎝ ⎠
⎛ ⎞
⎜ n ⎟ ⎛ n ⎞
js +1 ji jk ⎜
rm (x) = pm−2 (x) + C'k ⎜ ∏ ( x − x s ) ⎟·( x − xi ) ·( x − xk ) + C'i ∏ ( x − x s )
js +1 ⎟
·( x − xi ) i
j

⎜ s =0 ⎟ ⎜
⎜ s =0 ⎟

⎜ ss≠≠ik ⎟ ⎝ s ≠i ⎠
⎝ ⎠

donde:
C'k = f [ x 0 ( j0 + 1),..., xi−1( ji−1 + 1), xi ( ji ), xi+1( ji+1 + 1),...,xk −1 ( jk −1 + 1), xk +1 ( jk +1 + 1), xk +1( jk +1 + 1),..., xn ( jn + 1)]

C'i = f [ x 0 ( j0 + 1),..., xi−1( ji−1 + 1),xi ( ji + 1),xi+1( ji+1 + 1),..., xk −1( jk −1 + 1),xk +1( jk +1 + 1), xk +1( jk +1 + 1),..., xn ( jn + 1)]

Los polinomios qm(x) y rm(x) son el mismo polinomio pues ambos están
determinados sobre el mismo soporte y para el mismo juego de grados de
derivación. Por tanto los coeficientes de sus términos del mismo grado deben
coincidir. Igualando los términos en xm se tiene que Ck = C’i lo que nos indica
que el valor de la diferencia dividida de f(x) en x0 repetido (j0+1) veces, x1
repetido (j1+1) veces, .... y xn repetido (jn+1) veces es independiente de cual
sea el orden seguido para hacer coincidir en cada punto xi las ji primeras
derivadas del polinomio interpolador y de la función que se interpola.

Identificando ahora los coeficientes de los términos en xm-1, y teniendo en


cuenta que como se acaba de demostrar Ck = C’i, se tiene que:

123
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

⎛ n
⎞ ⎛ n

Ci − Ck jk ·xk + ∑ ( js + 1)·x s = C'k − C'i ji ·xi + ∑ ( js + 1)·x s ⎟ ⇒
⎜ ⎟ ⎜
⎜⎜ s =0
⎟⎟ ⎜⎜ s =0
⎟⎟
⎝ s ≠k ⎠ ⎝ s ≠i ⎠

⎛ n
⎞ ⎛ n

⇒ C'k − Ci = Ck ⎜ ji ·xi + ∑ ( js + 1)·x s ⎟ − Ck ⎜ jk ·xk + ∑ ( js + 1)·x s ⎟ ⇒
⎜⎜ s =0
⎟⎟ ⎜⎜ s =0
⎟⎟
⎝ s ≠i ⎠ ⎝ s ≠k ⎠

⎛ ⎞
⎜ n n ⎟
⇒ C'k − Ci = Ck ⎜ ji ·xi + ( jk + 1)·xk + ∑ ( js + 1)·x s − jk ·xk − ( ji + 1)·xi − ∑ ( js + 1)·x s ⎟ ⇒
⎜ s =0 s =0 ⎟
⎜ s ≠i s ≠i ⎟
⎝ s ≠k s ≠k ⎠

C'k − Ci
⇒ C'k − Ci = Ck ( xk − x i ) ⇒ Ck =
(x k − x i )

Sustituyendo Ck, C’k y Ci por sus expresiones como diferencias divididas


escritas anteriormente, se tiene demostrado este teorema.
c.q.d.

Hasta aquí hemos prestado atención a las diferencias divididas definidas sobre
más de un punto (repetidos cada uno de ellos (ji + 1) veces). También
conocemos de lo desarrollado en la interpolación de Lagrange que las
diferencias divididas en un único punto repetido una sóla vez coinciden con el
valor que la función toma en dicho punto: f[xi] = f[xi(1)] = f(xi). Pero para acabar
de definir las posibles diferencias divididas que se utilizarán es necesario
contemplar también las diferencias divididas en un único punto xi repetido (ji+1)
veces. Este objetivo puede lograrse de dos formas diferentes. Una de ellas,
que desarrollaremos en el anexo a este apartado, consiste en considerar un
soporte con (ji+1) puntos, plantearse la expresión de la diferencia dividida en
ellos (repetidos una sola vez) y posteriormente hacer tender las distancias
entre puntos hacia cero.

La segunda forma de proceder, que desarrollamos a continuación, consiste en


seguir el mismo proceso con el que se han definido las diferencias divididas en
este apartado. Para ello comencemos determinando, en el teorema siguiente,

124
Programación y Métodos Numéricos Interpolación polinómica

la expresión del polinomio interpolador cuando se tiene un único punto {xi} en el


soporte y se conocen en él los valores de una función f(x) y los de sus βi
primeras derivadas.

Teorema 1025
El polinomio interpolador de Hermite de f(x) sobre el soporte {xi} para el entero
βi es:
1 1 ( βi
pβi (x) = f(xi ) + f '(xi )·(x − xi ) + f "(xi )·(x − xi )2 + ... + f (xi )·(x − xi )βi
2! βi !
Demostración:
Se verifica fácilmente que:
βi
1
p(βji (x) = ∑ f (k (xi )·(x − xi )(k − j) (0 ≤ j ≤ βi )
k = j (k − j)!

por lo que:
p(βji (xi ) = f ( j (xi ) (0 ≤ j ≤ βi )
c.q.d.

El teorema anterior, para el caso en que βi = 0 nos conduce a que p0(x) = f(xi)
que, con la notación de diferencias divididas, se expresa en la forma:

p0(x) = f[xi(1)]

Si ahora contemplamos el caso en que βi = 1 el nuevo polinomio interpolador


estará dado por p1(x) = f(xi) + f’(xi)·(x-xi). Si, por analogía con el proceso
seguido anteriormente, buscamos expresar este polinomio en la forma:

p1(x) = p0(x) + f[xi(2)]·(x-xi) = f(xi) + f[xi(2)]·(x-xi)

deberemos definir la diferencia dividida f[xi(2)] como f[xi(2)] = f’(xi), con lo que:

p1(x) = f[xi(1)] + f[xi(2)]·(x-xi)

25
El polinomio interpolador que se define en este teorema coincide con el polinomio resultante
de considerar los (βi+1) primeros términos del desarrollo en serie de Taylor de f(x) en torno al
punto xi. Por ello dicho polinomio se conoce también con el nombre de polinomio de Taylor de
la función f(x) de orden βi en xi. Por el mismo motivo el proceso de interpolar con un único
punto de soporte en el que se conoce el valor de una función y el de sus βi primeras derivadas
se denomina también interpolación de Taylor.

125
Interpolación polinómica. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Procedamos por recurrencia, admitiendo26 que para algún valor (k-1) el


polinomio interpolador de Hermite de f(x) sobre el soporte {xi} para el entero
(k-1):

1
pk −1(x) = f(xi ) + f '(xi )·(x − xi ) + ... + f (k −1(xi )·(x − xi )k −1
(k − 1)!
puede expresarse en la forma:
k −1
pk −1(x) = ∑ f ( j [xi ( j + 1)]·(x − xi ) j
j= 0

Se tiene entonces que el polinomio interpolador de Hermite de f(x) sobre el


soporte {xi} para el entero k:

1 1
pk (x) = f(xi ) + f '(xi )·(x − xi ) + ... + f (k −1(xi )·(x − xi )k −1 + f (k (xi )·(x − xi )k
(k − 1)! k!
puede expresarse en la forma:

βi
pβi (x) = ∑ f ( j [xi ( j + 1)]·(x − xi ) j = pβi −1 + f[xi (βi + 1)]·(x − xi )βi
j=0

sin más que denominar diferencia dividida f[xi(k+1)] al valor:

1 (k
f [ xi (k)] = f (xi )
k!

Las definiciones y propiedades anteriores justifican el uso de tablas de


diferencias divididas análogas a las desarrolladas para el cálculo del polinomio
interpolador de Lagrange mediante la fórmula de Newton. En la página
siguiente se recoge un ejemplo de tal tipo de tablas, para el caso concreto de
una interpolación de Hermite sobre un soporte con tres puntos {x0, x1, x2} y para
los valores {3, 1, 2}.

En el subapartado siguiente, tras concretar la fórmula generalizada de Newton


desarrollaremos algún ejemplo concreto.

26
Obsérvese que, según lo anterior esto sucede, al menos, para k = 2.

126
Programación y Métodos Numéricos Interpolación polinómica

x0 f(x0)

x0 ---- f’(x0)

1
x0 ---- ---- f "(x 0 )
2

1
x0 ---- ---- ---- f "(x 0 )
3!

x1 f(x1) f[x0(1),x1(1)] f[x0(2),x1(1)] f[x0(3),x1(1)] f[x0(4),x1(1)]

x1 ---- f’(x1) f[x0(1),x1(2)] f[x0(2),x1(2)] f[x0(3),x1(2)] f[x0(4),x1(2)]

x2 f(x2) f[x1(1),x2(1)] f[x1(2),x2(1)] f[x0(1),x1(2),x2(1)] f[x0(2),x1(2),x2(1)] f[x0(3),x1(2),x2(1)] f[x0(4),x1(2),x2(1)]

x2 ---- f’(x2) f[x1(1),x2(2)] f[x1(2),x2(2)] f[x0(1),x1(2),x2(2)] f[x0(2),x1(2),x2(2)] f[x0(3),x1(2),x2(2)] f[x0(4),x1(2),x2(2)]

1
x2 ---- ---- f "(x 2 ) f[x1(1),x2(3)] f[x1(2),x2(3)] f[x0(1),x1(2),x2(3)] f[x0(2),x1(2),x2(3)] f[x0(3),x1(2),x2(3)] f[x0(4),x1(2),x2(3)]
2

127
Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

3.4.3. La fórmula de Newton para el cálculo del polinomio interpolador de


Hermite.
El uso del teorema 10 del subapartado anterior así como el uso reiterado de las
propiedades 1ª y 2ª allí demostradas nos permite expresar el polinomio
interpolador de Hermite de una función f(x) sobre el soporte {x0, x1, x2, ..., xn}
para los enteros {α 0 , α1, α 2 ,..., αn } en la forma:

pm (x) = f [ x 0 (1)] + f [ x 0 (2)]·(x − x 0 ) + f [ x 0 (3)]·(x − x 0 )2 + ... + f [ x 0 (α 0 + 1)]·(x − x 0 )α0 +

+ f [ x 0 (α 0 + 1),x1(1)]·( x − x 0 ) + f [ x 0 (α 0 + 1),x1(2)]·( x − x 0 )
α0 +1 α0 +1
(x − x1 ) + ... +

+ f [ x 0 (α 0 + 1),x1(α1 + 1)]·( x − x 0 )
α0 +1
(x − x1 )α1 +

+ f [ x 0 (α 0 + 1),x1(α1 + 1),x 2 (1)]·( x − x 0 )


α0 +1
(x − x1 )α1 +1 +

+ f [ x 0 (α 0 + 1),x1(α1 + 1),x 2 (2)]·( x − x 0 )


α0 +1
(x − x1 )α1 +1(x − x 2 ) +

+ f [ x 0 (α 0 + 1),x1(α1 + 1),x 2 (3)]·( x − x 0 )


α0 +1
(x − x1 )α1 +1(x − x 2 )2 + .... +

+ f [ x 0 (α 0 + 1),x1(α1 + 1),x 2 (α 2 + 1)]·( x − x 0 )


α0 +1
(x − x1 )α1 +1(x − x 2 )α2 +

+ ............................................................................................. +

n −1
+ f [ x 0 (α 0 + 1),x1(α1 + 1),...,xn−1(αn−1 + 1),xn (1)]·∏ ( x − x 0 )
αi +1
+
i=0

⎛ n−1 α +1 ⎞
+ f [ x 0 (α 0 + 1),x1(α1 + 1),...,x n−1(αn−1 + 1),xn (2)]·⎜ ∏ ( x − x 0 ) i ⎟·(x − xn ) +
⎝ i=0 ⎠

⎛ n−1 α +1 ⎞
+ f [ x 0 (α 0 + 1),x1(α1 + 1),...,xn−1(αn−1 + 1),xn (3)]·⎜ ∏ ( x − x 0 ) i ⎟·(x − xn )2 +
⎝ i=0 ⎠

+ ..................................................................................................+

⎛ n−1 α +1 ⎞
+ f [ x 0 (α 0 + 1),x1(α1 + 1),...,xn−1(αn−1 + 1),xn (αn + 1)]·⎜ ∏ ( x − x 0 ) i ⎟·(x − xn )αn
⎝ i=0 ⎠

128
Programación y Métodos Numéricos Interpolación polinómica

La fórmula anterior puede escribirse más abreviadamente como:

α0
pm (x) = ∑ f [ x 0 (k + 1)]·( x − x i ) +
k

k =0
n ⎛ α j +1 ⎞
⎛ αi k ⎞
(i−1)
+ ∑ ⎜⎜ ⎜ ∑ f [ x 0 (α 0 + 1),...,xi−1(αi−1 + 1),xi (k + 1)]·( x − xi ) ⎟·∏ ( x − x j ) ⎟⎟
i=1 ⎝ ⎝ k =0 ⎠ j= 0 ⎠

que se conoce con el nombre de fórmula de Newton para el cálculo del


polinomio interpolador de Hermite (o fórmula generalizada de interpolación
de Newton).

En ella puede apreciarse que los únicos valores de la tabla de diferencias


divididas que intervienen son los ubicados en el extremo derecho de cada fila.
Los restantes valores de la tabla sólo son utilizados para calcular los que
intervienen en esta fórmula.

Ilustremos el uso de la fórmula con un ejemplo:

Ejemplo:
Calculemos el polinomio interpolador de Hermite de la función sen(x) sobre
el soporte {-π/2, 0, π/2} para los enteros { 3, 0, 2}. Para ello podemos calcular
los valores:

f(-π/2) = -1 (= f[x0(1)]), f’(-π/2) = 0 (= f[x0(2)]) , (½)·f”(-π/2) = ½ (= f[x0(3)])

( 13! ) f '''( −π 2 ) = 0 (= f[x0(4)])


f(0) = 0 (= f[x1(1)])

f(π/2) = 1 (= f[x2(1)]) , f’(π/2) = 0 (= f[x2(2)]), (½)·f”(π/2) = -½ (= f[x2(3)])

Con estos valores podemos calcular las diferencias divididas:

f [ x1(1)] − f [ x 0 (1)] 0 − ( −1) 2


f [ x 0 (1),x1(1)] = = =
x1 − x 0 π
2 π
f [ x 0 (1),x1(1)] − f [ x 0 (2)] (2π) − 0 = 4
f [ x 0 (2),x1(1)] = =
x1 − x 0 π
2 π2

129
Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

f [ x 0 (3),x1(1)] =
f [ x 0 (2),x1(1)] − f [ x 0 (3)]
=
( )−( ) =
4
π2
1
2 8 1

x1 − x 0 π
2 π3 π

f [ x 0 (4),x1(1)] =
f [ x 0 (3),x1(1)] − f [ x 0 (4)]
=
( 8
π3
− 1π ) − 0
=
16 2

x1 − x 0 π
2 π 4 π2

f [ x 2 (1)] − f [ x1(1)] 1− 0 2
f [ x1(1),x 2 (1)] = = =
x1 − x 0 π
2 π

f [ x1(1),x 2 (1)] − f [ x 0 (1),x1(1)] ( 2π) − (2π) = 0


f [ x 0 (1),x1(1),x 2 (1)] = =
x 2 − x0 π

f [ x 0 (1),x1(1),x 2 (1)] − f [ x 0 (2),x1(1)] 0 − ( 4 π2 ) 4


f [ x 0 (2),x1(1),x 2 (1)] = = =−
x2 − x0 π π3

f [ x 0 (3),x1(1), x 2 (1)] =
f [ x 0 (2), x1(1),x 2 (1)] − f [ x 0 (3), x1(1)]
=
(− ) − (
4
π3
8
π3
− 1
π ) = − 12 + 1
x 2 − x0 π π 4
π2

f [ x 0 (4),x1(1), x 2 (1)] =
f [ x 0 (3),x1(1), x 2 (1)] − f [ x 0 (4), x1(1)]
=
( −12
π4
+ 1
π2 )−( 16
π4
− 2
π2 ) = − 28 + 3
x 2 − x0 π π5 π3

f [ x 2 (2)] − f [ x1(1),x 2 (1)] (0) − ( 2 π ) = − 4


f [ x1(1),x 2 (2)] = =
x 2 − x1 π
2 π2

f [ x 0 (1),x1(1),x 2 (2)] =
f [ x1(1),x 2 (2)] − f [ x 0 (1),x1(1),x 2 (1)]
=
(− ) − 0 = − 4
4
π2

x2 − x0 π π3

f [ x 0 (2),x1(1),x 2 (2)] =
f [ x 0 (1),x1(1),x 2 (2)] − f [ x 0 (2),x1(1),x 2 (1)]
=
(− ) − (− ) = 0
4
π3
4
π3

x2 − x0 π

f [ x 0 (2), x1(1),x 2 (2)] − f [ x 0 (3),x1(1),x 2 (1)] 0 − ( − 12 π4 + 1


) = 12 − 1
f [ x 0 (3),x1(1), x 2 (2)] = = π2

x 2 − x0 π π 5
π3

f [ x 0 (4),x1(1), x 2 (2)] =
f [ x 0 (3), x1(1), x 2 (2)] − f [ x 0 (4), x1(1), x 2 (1)]
=
( 12
π5
− 1
π3 ) − (− 28
π5
+ 3
π3 ) = 40 − 4
x2 − x0 π π 6
π4

f [ x 2 (3)] − f [ x1(1),x 2 (2)] ( − 12 ) − ( − 4 π ) 8 1


f [ x1(1),x 2 (3)] =
2
= = −
x 2 − x1 π
2 π3 π

130
Programación y Métodos Numéricos Interpolación polinómica

f [ x 0 (1),x1(1), x 2 (3)] =
f [ x1(1),x 2 (3)] − f [ x 0 (1),x1(1), x 2 (2)]
=
( 8
π3
− 1π ) − ( − 4 π3 )
=
12 1

x 2 − x0 π π 4 π2

f [ x 0 (2),x1(1), x 2 (3)] =
f [ x 0 (1), x1(1),x 2 (3)] − f [ x 0 (2),x1(1),x 2 (2)]
=
( 12
π4
− 1
π2 ) − 0 = 12 − 1
x2 − x0 π π 5
π3

f [ x 0 (3),x1(1), x 2 (3)] =
f [ x 0 (2), x1(1),x 2 (3)] − f [ x 0 (3),x1(1), x 2 (2)]
=
( 12
π5
− 1
π3 )−( 12
π5
− 1
π3 ) =0
x2 − x0 π

f [ x 0 (3), x1(1),x 2 (3)] − f [ x 0 (4), x1(1),x 2 (2)] 0 − ( 30 π6 − 4


) = − 40 + 4
f [ x 0 (4),x1(1), x 2 (3)] = = π4

x2 − x0 π π7 π5

La tabla siguiente recoge los valores numéricos de estas diferencias divididas.

−π
2 -1
−π
2 − 0
−π
2 − − 12
−π
2 − − − 0
0 0 2 π 4 π2 8
π3
− 1π 16
π4
- 2
π2
π
2 1 2
π 0 −4
π3
−12
π4
+ 1
π2
-28 + 3 π3
π5
π
2 − 0 −4
π2
−4
π3
0 12
π5
− 1π3 40
π6
- 4 π4
π
2 − − −1
2
8
π3
− 1π 12
π4
− 1
π2
12
π5
− 1π3 0 -40
π7
+ 4 π5

A partir de la tabla anterior, usando la formula de Newton, se obtiene el


polinomio interpolador de Hermite de la función sen(x) sobre el soporte
{−π 2 ,0, π 2} y para los enteros {3, 0, 1} :

p7 (x) = -1 + 0·( x + π 2 ) + 12·( x + π 2 ) + 0·( x + π 2 ) + ( 16 π4 − )·( x + )


2 3 4
2
π2
π
2 +

+ ( -28 π5 + )·( x + ) ·x + ( − 4 π4 )·( x + π 2 ) ·x·( x − π 2 ) +


4 4
3 π 40
π3 2 π6

+ ( -40 π7 + )·( x + ) ·x·( x − ) 4 2


4
π5
π
2
π
2 ⇒

⇒ p7 (x) = -1 + 12·( x + π 2 ) +
2

+ ( x + π 2 ) ·⎡⎢( 16 π4 − 2 π2 ) + x·
4

⎣ {( -28
π5
+ 3
π3 )+( 40
π6
− 4 π4 )·( x − π 2 ) + ( 40 π7 − 4 π5 )·( x − π 2 ) ⎤⎥
2

⎦ }

131
Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

La figura siguiente muestra el grafo de sen(x) y de p7(x) observándose en ella


la “buena coincidencia” en el intervalo [ −π 2 , π 2 ] entre la función sen(x) y su
polinomio interpolador.

sen(x)
p7(x)

Para poder apreciar mejor la diferencia (sen(x) – p7(x)) se recoge en la figura


siguiente la gráfica de este error (inferior en valor absoluto a 3·10-5 en todo el
intervalo [ −π 2 , π 2 ] ).

132
Programación y Métodos Numéricos Interpolación polinómica

Ejercicio propuesto:

Escribe un programa (en MAPLE, MATLAB, FORTRAN, C++, o en el lenguaje


de programación que mejor conozcas) para:
a) Calcular la tabla de diferencias finitas generalizadas

b) Calcular el polinomio interpolador de Hermite sobre un soporte de (n+1)


puntos y para (n+1) enteros no negativos dados

c) Utiliza dicho programa para calcular el polinomio interpolador de Hermite


de la función de Runge f(x) = (1 + x2)-1 sobre el soporte {-8, -4, 0, 5, 10}
para los enteros { 1, 2, 3, 2, 1}.

d) Representa en el intervalo [-10, 10] la función de Runge y su polinomio


interpolador.

e) Obtén una cota del error de interpolación válida en todo punto del
intervalo [-10, 10].

133
Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

3.4.4. ANEXO: Otra forma de definir las diferencias divididas con puntos
repetidos.
Como se señaló en el subapartado 3.4.2. las diferencias divididas en las que
aparece un punto repetido pueden ser definidas a partir de las diferencias
divididas clásicas considerando un soporte formado por puntos distintos y
haciendo tender hacia cero la distancia entre algunos de ellos. Por ello
dedicaremos este anexo a detallar este proceso.

Consideraremos en todo este subapartado que f(x) es una función diferenciable


en todos los puntos de un intervalo (a, b). Comencemos considerando un punto
x* de (a, b) y, siendo h un valor no nulo, un soporte formado por los dos puntos
{x*, x*+h}. Según se definió en el apartado 5º la diferencia dividida (clásica) en
este soporte está dada por:

f(x * +h) − f(x*)


f[x*, x*+h] =
h

por lo que:

f(x * +h) − f(x*)


f[x*,x*] = lim f[x*,x * +h] = lim = f '(x*)
h →0 h→0 h

De esta forma es natural introducir la definición siguiente:

Definición
Siendo f(x) una función diferenciable en el punto xi, se denomina diferencia
dividida de primer orden en el punto xi (o diferencia dividida en xi repetido
2 veces) y se representa por f[xi, xi] (o por f[xi(2)]) al valor:

f[xi, xi] = f’(xi)


Generalicemos el proceso anterior suponiendo ahora que la función f(x) es n


veces diferenciable en el intervalo (a, b) y, siendo h un valor no nulo,
consideremos el soporte formado por los (n+1) puntos {x0 = x*, x1 = x*+h, ....,
xn = x*+n·h} todos ellos pertenecientes al intervalo (a, b). Se tiene, por
recursión que:

134
Programación y Métodos Numéricos Interpolación polinómica

f [ x*,x * +h,...,x * +(n − 1)·h,x * +n·h] =

f [ x * +h,...,x * +(n − 1)·h,x * +n·h] − f [ x*,x * +h,...,x * +(n − 1)·h,]


= =
n·h

1 ⎡ f [ x * +2·h,...,x * +n·h] − f [ x * +h,...,x * +(n − 1)·h]


= ·⎢ −
n·h ⎣ (n − 1)·h

f [ x * +h,...,x * +(n − 1)·h] − f [ x*,...,x * +(n − 2)·h] ⎤


− ⎥ =
(n − 1)·h ⎦

1
= ·⎡ f [ x * +2·h,...,x * +n·h] − 2·f [ x * +h,...,x * +(n − 1)·h] +
n·(n − 1)·h2 ⎣
+ f [ x*,...,x * +(n − 2)·h]⎤⎦ =

1 1⎛ n ⎛n⎞ ⎞
= ....... = · n ·⎜ ∑ ( −1)i ⎜ ⎟·f(x * +(n − i) * h) ⎟ (1)
n! h ⎝ i=0 ⎝i⎠ ⎠

Por otra parte, al haber supuesto que f era n veces continuamente


diferenciable, la fórmula del desarrollo en serie de Taylor nos permite escribir
que:

n-1
(n − i) j ·h j (j (n − i)n ·hn (n
∃ξi ∈ [ x*,x * +(n − i)·h] / f(x*+(n-i)·h)=f(x*)+∑ ·f (x*) + ·f (x*)
j=1 j! n!

Entrando con estos desarrollos en la expresión de la diferencia dividida se tiene


que:

n!· f [ x*,x * +h,...,x * +(n − 1)·h,x * +n·h] =

n −1
1 ⎛ n n! (n − i) j ⎞ ( j n −1
n! (n − i)n (n
= ∑
j=1 h
n− j ⎜ ∑
· ( −1)i
· ·
i!·(n − i)! j! ⎠
⎟·f (x*) + ∑ ( − 1)i
· ·
i!·(n − i)! n!
·f (ξi ) (2)
⎝ i=0 i= 0

En la expresión anterior los coeficientes de f(j(x*) ( 0 < j < n) son nulos. Por no
interrumpir el desarrollo que se está realizando, realizaremos la demostración
de este hecho en el Lema 1º (un poco más adelante). Ello nos permite escribir:

135
Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

n −1
n! (n − i)n (n
n!· f [ x*, x * +h,...,x * +(n − 1)·h,x * +n·h] = ∑ ( −1)i · · ·f (ξi )
i=0 i!·(n − i)! n!

Si se hace tender h hacia 0, todos los puntos xi = x*+i·h tenderán a x* y además


todos los puntos ξi ∈ [ x*,x * +(n − i)·h] también tenderán a x*. Ello nos conduce
a que, tomando límites, se verifica:

⎛ n−1 n! (n − i)n ⎞ (n
n!·f[x*, x*, …..,x*,x*] = ⎜ ∑ ( −1)i · · ⎟·f (x*)
⎝ i=0 i!·(n − i)! n! ⎠
(n+1) veces

Por otra parte se verifica (y también se deja la demostración para ser realizada
en el lema 2º un poco más adelante) para todo valor de n tal que n > 1, que:

⎛ n−1 n! (n − i)n ⎞
⎜∑ − ⎟ =1
i
( 1) · ·
⎝ i=0 i!·(n − i)! n! ⎠

por lo que, finalmente se tiene que:


f (n (x*)
f[x*, x*, …..,x*,x*] =
n!
(n+1) veces

De esta forma es natural introducir la definición siguiente:

Definición
Siendo f(x) una función diferenciable en el punto xi, se denomina diferencia
dividida de orden k el punto xi (o diferencia dividida en xi repetido (k+1)
veces) y se representa por f[xi, xi,...., xi] (o por f[xi(k+1)]), al valor:

f (n (xi )
f[xi, xi, ….., xi, xi] = f[xi(k+1)] =
k!

Una vez introducidas las diferencias divididas en las que todos sus argumentos
son el mismo punto repetido, podemos proceder a definir las diferencias
divididas en forma más general como se hace en la siguiente definición

136
Programación y Métodos Numéricos Interpolación polinómica

Definición
Siendo {i0 < i1 < i2 < …. < ik-1 < ik} un conjunto de (k+1) índices enteros no
negativos (pudiendo repetirse algunos de ellos o no) se denomina diferencia
dividida de orden k: f ⎡⎣ xi0 ,xi1 ,xi2 ,...,x ik −1 ,xik ⎤⎦ al valor obtenido de la manera
siguiente:
f (n (xi )
Si i0 = ik = i: f[xi, xi, ….., xi, xi] =
n!
f ⎡ xi ,....,xik −1 ,xik ⎤⎦ − f ⎡⎣ xi0 ,xi1 ,....,xik −1 ⎤⎦
Si i0 < ik: f ⎡⎣ xi0 ,xi1 ,....,xik −1 ,xik ⎤⎦ = ⎣ 1
x ik − x i0

NOTA:
Como se demostró en el apartado 3.2., el orden en que se tomen los puntos, repetidos o no, no
influye en el valor de la diferencia dividida. No obstante, en la definición anterior, se ha optado
por considerar los índices de los puntos del soporte ordenados de menor a menor a mayor,
agrupando de esta manera los que se repitan, para facilitar el seguimiento del proceso que se
ha descrito.

Ocupémonos, por último, de demostrar los lemas utilizados anteriormente para


definir la diferencia dividida f[xi(k+1)].

Lema 1º
Siendo n un número entero positivo se verifica que:
n
n!

i=0
( −1)i ·
i!·(n − i)!
=0

Además, para todo entero no negativo j tal que 0 < j < n se verifica que:

n
n! (n − i) j
∑ (−1)i·
i=0
·
(n − i)!·i! j!
=0

Demostración:
Para cualquier entero m que sea estrictamente positivo la fórmula del binomio
de Newton17, nos asegura que:

17
Recordemos que la fórmula del binomio de Newton es:
n
⎛n⎞ ⎛m⎞ m!
(a + b)n = ∑ ⎜ ⎟·a( n − i ) ·b i donde ⎜ ⎟=
i =0 ⎝ i ⎠ ⎝ i ⎠ ( m − i )!·i !

137
Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

m
⎛m⎞ m
m!
0 = (1 – 1)m = ∑ ( −1)i ·⎜ ⎟ = ∑ (−1) ·(m − i)!·i!
i
(3)
i=0 ⎝ i⎠ i=0

Particularizando esta expresión para m = n se tiene que:

n
n!
∑ (−1) ·(n − i)!·i!
i=0
i
=0

lo que demuestra la primera de las igualdades de esta propiedad.

Obsérvese además que la igualdad que se acaba de demostrar es un caso


particular de la segunda igualdad dada en el enunciado (obtenida para j = 0).

Ello nos permite proceder por inducción, suponiendo que para un algún valor
“(j-1)” la igualdad es cierta y demostrando que en ese caso también es cierta
para el valor j. En efecto, si se supone que para cualquier valor m entero y
superior a 1 y para algún valor (j-1) < (m-1) se verifica:

m
m! (m − i)( j−1) 1 m m!
∑ (−1)i·
i=0
·
(m − i)!·i! ( j − 1)!
=0⇔ ·∑ ( −1)i ·
( j − 1)! i=0 (m − i)!·i!
·(m − i)( j−1) = 0 ⇔

m
m!
⇔ ∑ ( −1)i · ·(m − i)( j−1) = 0
i= 0 (m − i)!·i!

se tendrá que:

n
n! (n − i) j 1 n n!
∑ ( −1) ·
i
· = ·∑ ( −1)i · ·(n − i) j−1·(n − i) =
i=0 (n − i)!·i! j! j! i=0 (n − i)!·i!

n n n! 1 n n!
= ·∑ ( −1)i · ·(n − i) j−1 − ·∑ ( −1)i ·i· ·(n − i) j−1
j! i=0 (n − i)!·i! j! i=0 (n − i)!·i!

en donde, habida cuenta de la suposición realizada, en el caso m = n, el primer


sumatorio es nulo por lo que:

138
Programación y Métodos Numéricos Interpolación polinómica

n
n! (n − i) j 1 n n!
∑ (−1)i· · = − ·∑ ( −1)i ·i· ·(n − i) j−1 =
i=0 (n − i)!·i! j! j! i=0 (n − i)!·i!

1 n n! 1 n n!
= ·∑ ( −1)i−1·i· ·(n − i) j−1 = ·∑ ( −1)i−1· ·(n − i) j−1 =
j! i=1 (n − i)!·i! j! i=1 (n − i)!·(i − 1)!

1 (n−1) 1
= ·n!· ∑ ( −1)i−1· ·(n − i − 1) j−1 =
j! i= 0 (n − i − 1)!·(i)!

(n −1)
1 1
= ·n·(n − 1)!· ∑ ( −1)i−1· ·((n − 1) − i) j−1 =
j! i=0 ((n − 1) − i)!·i!

1 (n−1) (n − 1)!
= ·n· ∑ ( −1)i−1· ·((n − 1) − i) j−1
j! i=0 ((n − 1) − i)!·i!

en donde, volviendo a utilizar la suposición de la que se partió, ahora con


m = (n-1), se puede concluir que:

n
n! (n − i) j
∑ (−1)i·
i=0
·
(n − i)!·i! j!
= 0

c.q.d.

NOTA:
Obsérvese que en la demostración anterior se partía del hecho de que para
todo valor de m > 1 se verificaba que si j = 0
m
m! (m − i) j
entonces ∑ ( −1)i · · = 0 . Esta igualdad nos sirvió para hacer la
i=0 (m − i)!·i! j!
hipótesis de que para todo valor de m > 1 existía algún valor (j-1) < m para el
que:

m
m! (m − i)( j−1)
∑ (−1)i·
i=0
·
(m − i)!·i! ( j − 1)!
=0

igualdad que, en el proceso de inducción seguido, se utilizó para m = n y para


m = (n-1). Ello nos obliga a que n sea mayor o igual que 2 (pues si n fuese 1 la
hipótesis no sería cierta ya que estaríamos admitiendo que 00 = 0). Es por ello
que, detallando el proceso de inducción para los primeros valores de n se tiene:

139
Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

n = 1: j = 0
n = 2: j = 0 j=1
n=3j=0 j=1 j=2
n=4j=0 j=1 j=2 j=3

Ello justifica que en la igualdad de la propiedad anterior los valores de j deban


estar comprendidos entre 0 < j < (n-1). Para el caso j = n el valor del sumatorio
correspondiente se recoge en el lema siguiente.

Lema 2º.
Siendo n un número entero positivo se verifica que:

n
n! (n − i)n
∑ (−1)i·
i=0
·
(n − i)!·i! n!
=1

Demostración:
Para n = 1 la igualdad anterior se reduce a que:

1
1! (1 − i) 1 1 1! 0
∑ (−1) ·(1 − i)!·i!·
i=0
i

1!
= 1· · − 1·
1!0! 1!
· =1
0!·1! 1!

Procedamos nuevamente por inducción suponiendo que para algún valor (n-1)
se verifica que:
(n −1)
(n − 1)! ((n − 1) − i)(n−1)

i=0
( −1)i
·
((n − 1) − i)!·i!
·
(n − 1)!
=1

Se tendrá entonces que:


n
n! (n − i)n n
n! (n − i)(n−1)

i=0
( −1)i
· ·
(n − i)!·i! n!
= ∑ (−1)i·
i=0 (n − i)!·i!
·
n!
·(n − i) =

n
n! (n − i)(n−1) n n! (n − i)(n−1)
= ∑ ( −1)i · · − ∑ ( −1)i ·i· ·
i= 0 (n − i)!·i! (n − 1)! i=0 (n − i)!·i! n!

Por el lema 1º demostrado anteriormente resultará que el primer sumatorio de


la expresión anterior es nulo. Por tanto:

n
n! (n − i)n n
n! (n − i)(n−1)
∑ (−1)i·
i=0
·
(n − i)!·i! n!
= −∑ ( −1)i ·i·
i= 0 (n − i)!·i!
·
n!
=

140
Programación y Métodos Numéricos Interpolación polinómica

n
1 (n − i)(n−1) n
(n − 1)! (n − i)(n−1)
= ∑ ( −1)(i−1) ·i· · = ∑ (−1)(i−1)· · =
i= 0 (n − i)!·i! 1 i=0 (n − i)!·(i − 1)! (n − 1)!

n −1
(n − 1)! (n − i)(n−1) n−1 (n − 1)! ((n − 1) − i)(n−1)
= ∑ ( −1)(i−1) · · = ∑ ( −1)(i) · ·
i= 0 (n − i)!·(i − 1)! (n − 1)! i=1 ((n − 1) − i)!·i! (n − 1)!

lo que, según la hipótesis que hemos realizado, demuestra que:

n
n! (n − i)n n −1
(n − 1)! ((n − 1) − i)(n−1)
∑ (−1)i·
i=0
·
(n − i)!·i! n!
= ∑ (−1)(i)·
i=1 ((n − 1) − i)!·i!
·
(n − 1)!
=1

Por tanto, como la hipótesis era cierta para n = 1, la igualdad es cierta para el
valor n = 2. Y, al ser cierta para n = 2, también es cierta para n = 3. Y por ser
cierta para n = 3 también lo es para n = 4. Y en general lo será para cualquier
valor de n entero positivo que se considere.
c.q.d.

141
Interpolación polinómica Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

BIBLIOGRAFÍA SOBRE EL TEMA

[1] Burden, R.L. y Fiares, J.D. (1998). Análisis Numérico. Ed. International
Thomsom Editores

[2] Crouzeix, M. et Mignot, A.L. (1983) Analyse numérique des équations


differentielles. Ed. Masson.

[3] Gasca, M. (1995) Cálculo Numérico I. Ed. Universidad Nacional de


Educación a Distancia (UNED).

[4] Michavila, F. y Conde, C. (1987) Métodos de Aproximación. Ed. Depto. de


Matemática Aplicada y Métodos Informáticos – ETSI Minas – Universidad
Politécnica de Madrid.

[5] Sanz-Serna, J.M (1998 ) Diez lecciones de análisis numérico. Secretariado


de Publicaciones de la Universidad de Valladolid

[6] Shampine, L.F., Allen Jr., R.C. and Pruess, S. (1997) Fundamentals of
numerical computing. Ed. John Wiley & Sons, Inc.

[7] Stoer, J. and Bulirsch, R. (1993) Introduction to numerical analysis (2nd


edition). Ed. Springer

[8] Viaño, J.M. y Burguera, M. (2000) Lecciones de Métodos Numéricos, 3:


Interpolación. Ed. Tórculo

142
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: INTERPOLACIÓN DE LAGRANGE


POLINÓMICA POR TRAMOS
Prof. Carlos Conde Lázaro
Prof. Arturo Hidalgo López
Prof. Alfredo López Benito

Marzo, 2007
ÍNDICE
Pág.
1. MOTIVACIÓN. ………………………………………………………… 1

2. INTERPOLACIÓN DE LAGRANGE POLINÓMICA POR TRAMOS. 9


2.1. Espacios de Lagrange de funciones polinómicas por
tramos. ………………………………………………………. 9
2.2. Interpolación de Lagrange con funciones polinómicas de
primer grado por tramos. …………………………………. 28
2.3. Interpolación de Lagrange con funciones polinómicas de
segundo grado por tramos. ………………………………. 50
2.3. Interpolación de Lagrange con funciones polinómicas por
tramos: caso general. …….………………………………. 78

BIBLIOGRAFÍA SOBRE EL TEMA. …………………………………….. 91

ii
Programación y Métodos Numéricos Interpolación polinómica por tramos

1. Motivación

Considérese la función f(x) = (1+x2)-1/2 . El grafo de esta función en el


intervalo [-8, 8] se recoge en la figura siguiente:

Su polinomio interpolador de Lagrange, p4(x), sobre un soporte


equidistante que esté formado por los 5 puntos {-8, -4, 0, 4, 8} tiene el grafo
que se muestra en la figura siguiente:

La menor cota del valor absoluto del error de interpolación en el intervalo


[-8, 8] es |f(x) – p4(x)| ≤ 0.3768.... ≈ 0.38 ∀x ∈ [−8,8 ] .

1
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Podría pensarse que, al ser la función f(x) considerada una función muy
regular, la cota del error de interpolación puede disminuirse fácilmente sin más
que considerar soportes formados por más puntos. En ese sentido las figuras
siguientes recogen los grafos (limitando el dibujo a la ventana [-8, 8]× [-5, 1]) de
los polinomios p8(x) y p16(x) que se obtendrían actuando respectivamente con
los soportes {-8, -6, -4, -2, 0, 2, 4, 6, 8} y {-8, -7, -6, -5, -4, -3, -2, -1, 0, 1, 2, 3, 4,
5, 6, 7, 8} .

2
Programación y Métodos Numéricos Interpolación polinómica por tramos

Estas figuras ponen de manifiesto que en este caso un aumento del


número de puntos del soporte de interpolación, lejos de disminuir la cota del
error de interpolación, conduce a cotas de error que son mayores que en el
caso del soporte con 5 puntos. El motivo de que así suceda radica en que los
polinomios de grado elevado pueden presentar comportamientos muy
oscilantes si poseen un número “elevado” de raíces en intervalos relativamente
“pequeños”. En este sentido parece aconsejable evitarlos cuando se interpolan
funciones que tengan un comportamiento “suave”.

Pero incluso cuando se interpolan funciones con comportamientos


oscilatorios también pueden ser desaconsejables los polinomios de grado
elevado. Ejemplo de ello son los polinomios representados en la figura
siguiente que interpolan a la función f(x) = sen( π·x 2 ) (dibujada en rojo) en el
intervalo [0, π ] utilizando soportes equidistantes con 5 , 9 y 17 puntos y en los
que el primer punto es siempre 0 y el último π .

Nuevamente puede apreciarse como el incremento del número de


puntos del soporte de interpolación no implica reducciones en la cota de error si
no, al contrario, incrementa dicha cota.

3
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Para mejorar la precisión, tal y como se indicó en el tema dedicado al


estudio de la interpolación polinómica de Lagrange hay dos vías: 1ª) ubicar los
puntos del soporte de manera más eficiente (como se logra, por ejemplo,
utilizando los soportes de Chebyshev introducidos al estudiar la interpolación
de Lagrange), y 2ª) realizar el proceso de interpolación por tramos. Esta
segunda forma de proceder es la que se desarrolla en el presente tema.

Antes de profundizar en ella observemos que la función considerada


inicialmente, f(x) = (1+x2)-1/2 , es interpolada sobre el soporte {-8, -4} por el
1 ⎛⎜ 1 ⎞ 1 ⎛⎜ 1 ⎞
polinomio v (1) (x) = − ⎜⎜ x + 1⎟⎟⎟ + ⎜⎜ x + 2⎟⎟⎟ . Representando el gráfico de
65 ⎝ 4 ⎠ 17 ⎝ 4 ⎠
f(x) y de v(1)(x) en el intervalo [-8, 4] se tiene la figura siguiente:

Análogamente el polinomio v(2)(x) que interpola a f(x) sobre el soporte


1 ⎛⎜ 1 ⎞⎟ ⎛⎜ x ⎞
⎜⎜ x⎟⎟ + ⎜⎜ + 1⎟⎟⎟ . Las gráficas de f(x) y de v (x) en el
(2)
{-4, 0} es v (2) (x) = −
17 ⎝ 4 ⎠ ⎝ 4 ⎠
intervalo [-4, 0] son la que se muestran en la figura siguiente:

4
Programación y Métodos Numéricos Interpolación polinómica por tramos

Por otra parte, el polinomio v(3)(x) que interpola a f(x) sobre el soporte
⎛ x⎞ 1 ⎛⎜ x ⎞⎟
{0, 4} es v (3) (x) = ⎜⎜1− ⎟⎟⎟ + (3)
⎜⎜ ⎟⎟ . Las gráficas de f(x) y de v (x) se muestran
⎝⎜ 4 ⎠ ⎝
17 4 ⎠
en la figura siguiente.

Finalmente, el polinomio v(4)(x) que interpola a f(x) sobre el soporte {4, 8}


1 ⎛⎜ x⎞ 1 ⎛⎜ x ⎞⎟
⎜⎜2 − ⎟⎟⎟ +
(4)
es v (4) (x) = ⎜⎜ − 1⎟⎟ y las gráficas de f(x) y de v (x) son las
17 ⎝ 4⎠ 65 ⎝ 4 ⎠
que se recogen en la figura siguiente:

Si consideramos entonces una función v(x) definida por tramos en el


intervalo [-8, 8] de la forma:

5
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid


⎪ v (1) (x) = 117 ( x 4 + 2) − 165 ( x 4 + 1) si x ∈ [−8,−4 ]




⎪v (x) = ( 4 − 1) − 17 ( 4) si x ∈ [−4,0 ]
(2) x 1 x
v(x) = ⎨ (3)

⎪ v (x) = (1− x 4) + 117 ( x 4) si x ∈ [ 0,4 ]



⎩v (x) = 17 (2 − 4) + 65 ( 4 − 1) si x ∈ [ 4,8 ]
(4)


1 x 1 x

es evidente que dicha función satisface v(xi) = f(xi) ∀x i ∈ {−8,−4,0,4,8} . En


otros términos la función v(x) interpola en el sentido de Lagrange a f(x) sobre el
soporte {-8, -4, 0, 4, 8}.

Obsérvese que la función v(x) no es un polinomio. Cada uno de los 4


tramos usados para definirla es un polinomio de primer grado, pero en su
conjunto la función v(x) no lo es. Asimismo podemos observar que v(x) es una
función continua (no presenta “saltos”) en el intervalo ]-8 , 8[ .

La figura siguiente recoge, en el intervalo [-8, 8] los gráficos de v(x) y de


f(x), gráficos que pueden considerarse la “unión” de los 4 gráficos anteriores.

La cota del error de interpolación |E(x)| = |f(x) – v(x)| en el intervalo [0, 8]


se determinará en este caso como la mayor de las cotas de los errores de
interpolación en cada tramo. Así es fácil demostrar que:

6
Programación y Métodos Numéricos Interpolación polinómica por tramos

|f(x) – v(1)(x) | ≤ 0.02 ∀x ∈ [−8,−4 ]


|f(x) – v(2)(x) | ≤ 0.18 ∀x ∈ [−4,0 ]
|f(x) – v(3)(x) | ≤ 0.18 ∀x ∈ [0,4 ]
|f(x) – v(1)(x) | ≤ 0.02 ∀x ∈ [ 4,8 ]

por lo que:
|E(x)| ≤ Sup f(x) − v(x) =
x∈[−8,8 ]

⎪⎧ ⎪⎫
= Sup ⎪⎨ Sup f(x) − v (1) (x) , Sup f(x) − v (2) (x) ,Sup f(x) − v (3) (x) ,Sup f(x) − v (4) (x) ⎪⎬ =
⎪⎩⎪x∈[−8,−4] x∈[−4,0] x∈[0,4] x ∈[ 4,8] ⎪⎭⎪

= Sup {0.02, 0.18, 0.18, 0.02} = 0.18

Puede comprobarse como, actuando por tramos, hemos logrado reducir


la cota de error de interpolación obteniendo una función que, pese a no ser un
polinomio, es fácil de manipular (pues en cada uno de los tramos está definida
por una expresión polinómica) y muy sencilla de calcular (pues en cada tramo
el cálculo de su expresión se reduce a seguir un proceso de interpolación con
un “bajo” número de puntos de soporte).

El ejemplo que se acaba de desarrollar es un caso particular de lo que


se conoce como interpolación polinómica por tramos (o “a trozos”). En
general se denomina así a todo proceso de interpolación (ya sea de Lagrange
o ya sea de Hermite) en el que la función interpoladora se define por tramos a
partir de los polinomios interpoladores resultantes en cada uno de los
subintervalos en que se subdivida el intervalo al que pertenezcan los puntos del
soporte original. Si los subintervalos que se escojan no tienen por extremos
puntos del soporte no se garantizará la continuidad de la función interpoladora.
Si por el contrario los subintervalos se construyen de forma tal que sus
extremos son puntos del soporte, la función interpoladora v(x) será continua
(aun en el caso de que la función que se interpola, f(x), no lo sea). En estos
apuntes nos consideraremos sólo esta segunda situación, es decir que nos
centraremos en la búsqueda de funciones interpoladoras que sean continuas
en el intervalo en el que se interpola.

Por otra parte, el grado de las expresiones polinómicas que definen a la


función interpoladora v(x) en cada tramo se relacionará con el número de
puntos de soporte en cada subintervalo y con las condiciones (igualdades de

7
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

valor de las funciones, de sus derivadas hasta un orden dado, ...) que se
impongan en ellos1. Por ello, en general, el grado de cada uno de los
polinomios que define a la función interpoladora en cada uno de sus tramos no
tiene por qué ser el mismo.

En los apartados que siguen analizaremos el proceso de interpolación


por tramos, refiriéndonos al caso de interpolación de Lagrange en el que sólo
se obliga a que la función a interpolar, f(x), y la función interpoladora, v(x),
tomen los mismos valores en los puntos del soporte. Este tipo de interpolación
puede generalizarse con interpolación de tipo Hermite (en el que en cada punto
del soporte se hacen coincidir el valor de f(x) y de v(x) así como el de las
derivadas de ambas funciones hasta un grado prefijado). También existen otros
tipos de interpolación por tramos que no contemplamos en estos apuntes como
es la interpolación spline, en la que obligando a la coincidencia de valor de las
funciones f(x) y v(x) en todos los puntos del soporte más a alguna coincidencia
del valor de las primeras derivadas en alguno de los puntos del soporte se
pueden obtener funciones polinómicas por tramos continuas y con mayor
regularidad (como por ejemplo con las primeras derivadas de la función
interpoladora continuas en todo el intervalo en el que se realice la
interpolación).

El planteamiento general de la interpolación por tramos nos obligará a


tener que complicar la notación con subíndices y superíndices. Esperamos que
esta complejidad en la notación no hagan perder al lector la simplicidad de la
idea que subyace en el proceso de interpolación por tramos y que hemos
intentado plasmar en el ejemplo de motivación desarrollado anteriormente:
realizar en cada tramo una interpolación de Lagrange o Hermite con pocos
puntos del soporte.

1
Consúltese el tema anterior para mayor detalle.

8
Programación y Métodos Numéricos Interpolación polinómica por tramos

2. Interpolación de Lagrange polinómica por tramos.

2.1. Espacios de Lagrange de funciones polinómicas por tramos.


Al estudiar los procesos de interpolación polinómica en el tema anterior
buscábamos polinomios interpoladores del grado “adecuado”, es decir
funciones interpoladoras que pertenecieran al espacio vectorial formado por
todos los polinomios de grado menor o igual que un cierto valor entero “m”. De
forma análoga, al enfrentarnos ahora al proceso de interpolación de Lagrange
por tramos debemos concretar, en primer lugar, los espacios vectoriales en los
que se buscarán las funciones interpoladoras.

Una diferencia notable entre los procesos de interpolación polinómica


abordados en el tema anterior y los de interpolación polinómica por tramos que
consideraremos aquí es que mientras los espacios de polinomios están
formados por funciones (los polinomios) definidas sobre toda la recta real los
espacios de funciones interpoladores que consideraremos en este tema están
formados por funciones definidas sólo en un cierto intervalo [x0, xn] y vinculados
a una “partición” de dicho intervalo. Es por ello que antes de introducir estos
espacios recordaremos algunos aspectos sobre las particiones.

Dado un intervalo I = [x0, xn] denominaremos partición de I a cualquier


subdivisión del mismo en k subintervalos I1 = [x0, a1] , I2 = [a1, a2], ......,
Ik = [ak-1, xn] tales que:

k
• su unión coincida con [x0, xn]: ∪ Ij ≡ [ x 0 ,xn ]
j=1

• la intersección del interior de dos subintervalos distintos cualesquiera


sea siempre vacía: I j ∩ Ii = {∅} 1 ≤ i, j ≤ k, i ≠ j .

Entre las infinitas particiones posibles que se podrían realizar en un


intervalo [x0, xn] nos interesaremos sólo por aquellas que se realizan utilizando
como extremos de los subintervalos Ij puntos de un soporte {x0, x1, ..., xn}
previamente definido en [x0, xn]. A tales particiones las denotaremos como
∆ = {I1, I2, ..., Ik}.

Por otra parte en todo este tema, para aligerar la terminología, fijado un
intervalo [x0, xn] usaremos el término función para referirnos a la restricción de
una función al intervalo [x0, xn]. Dicho de otra forma, sólo nos interesaremos por

9
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

la expresión de la función en ese intervalo sin importarnos lo que suceda fuera


de él. En ese sentido consideraremos como la misma función a todas aquellas
que tengan la misma expresión en [x0, xn] aunque difieran fuera de este
intervalo (2).

Comencemos definiendo el espacio que denotaremos por L1(∆) . Para


ello sea {x0, x1,....., xn} un soporte formado por (n+1) puntos distintos que
supondremos ordenados de menor a mayor y consideremos la partición del
intervalo [x0, xn] dada por:

∆ = {I1 = [ x 0 ,x1 ],I2 = [ x1,x 2 ],...,Ii = [ xi−1,xi ],...,In = [ xn−1,xn ]}

Para esta partición ∆ denominaremos espacio de Lagrange asociado a


la partición ∆, y lo representaremos como L1(∆), al conjunto formado por
todas las funciones continuas(3) en [x0, xn] tales que en cada intervalo
Ii (i = 1, ..., n) tienen una expresión polinómica de grado menor o igual a
uno(4). En otros términos el espacio L1(∆) está formado por todas aquellas
funciones u(x) que son continuas en [x0, xn] y tales que, para todo valor del
índice “i” comprendido entre 1 y n, existe algún polinomio de grado inferior o
igual a 1, p1,i(x), verificando que la expresión de u(x) en el intervalo Ii coincide
con la de p1,i(x):

L1(∆) = {u(x) ∈ C0 ([ x 0 ,xn ]) / ∀x ∈ Ii : u(x) ≡ p1,i (x) ∈ P1 (1 ≤ i ≤ n)}

2
Si quisiéramos ser rigurosos deberíamos hablar de clases de funciones formadas mediante la
relación de equivalencia “ser iguales en el intervalo [x0, xn]. Pero para no abrumar al lector con
“detalles” preferimos perder parte del rigor en aras a un más fácil seguimiento de la ya de por sí
engorrosa terminología y notación.
3
Al haber considerado el intervalo [x0, xn] cerrado, entenderemos la continuidad en x0 como la
igualdad entre el valor de la función en x0 y el valor del límite de dicha función cuando se hace
tender x hacia x0 por la derecha. Análogamente entenderemos la continuidad en xn como la
igualdad entre el valor de la función en xn y el valor del límite de dicha función cuando se hace
tender x hacia xn por la izquierda.
4
En la notación usada, L1(∆), ∆ hace referencia a la partición de [x0, xn] utilizada y el subíndice
“1” a que en cada subintervalo Ii de la partición las funciones del espacio se expresan mediante
polinomios de grado inferior o igual a 1. Hemos utilizado la letra “L” para indicar que con las
funciones de este espacio se realizará una interpolación de Lagrange. Esperamos que esta
notación no confunda al lector con los espacios de Lebesgue Lp(Ω) que se utilizan en Análisis
Funcional.

10
Programación y Métodos Numéricos Interpolación polinómica por tramos

De una forma más gráfica, el espacio L1(∆) está formado por todas
aquellas funciones continuas tales que en cada intervalo Ii (i = 1, ..., n) su grafo
es un segmento rectilíneo. Es decir, todas las funciones cuyos grafos sean
líneas quebradas continuas de tramos rectilíneos en cada subintervalo. En
otros términos los k polinomios p1,i(x) que definen en cada intervalo Ii a una
función v(x) de L1(∆) pueden ser distintos o no y la única condición que deben
cumplir es que p1,i(xi) = p1,i+1(xi) (i = 1, ..., n).

Ilustrémoslo con algunos ejemplos.

Ejemplos:
En los ejemplos que siguen, consideraremos el soporte {0, 1, 3, 4, 7, 9} y
la partición de [0, 9]:
∆ = {I1 = [0, 1], I2 = [1,3], I3 = [3, 4], I4 = [4, 7], I5 = [7, 9]}

1º) La función f(x) = x es una función de L1(∆) pues es continua en [0, 9] y en


cada uno de los subintervalos Ii ( I = 1, 2, 3, 4, 5) su expresión es un polinomio
de grado 1 (el polinomio p1,i(x) = x).

2º) La función f(x) = x2 no pertenece a L2(∆) pues aunque es continua en [0, 9]


su expresión en cada subintervalo no es un polinomio de grado menor o igual
que 1(en todos los subintervalos es el polinomio de 2º grado x2).

11
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

⎧⎪ 1− x x ∈ [0,4 ]
3º) La función f(x) = ⎪⎨ es una función de L1(∆) pues es una
⎪⎪5 − 2x x ∈ ]4,9 ]

función continua que en cada subintervalo Ii tiene expresiones polinómicas de
grado menor o igual que 1. Más concretamente:

⎧⎪1− x si x ∈ [0,1]
⎪⎪
⎪⎪1− x si x ∈ [1,3 ]

f(x) = ⎪⎨1− x si x ∈ [3,4 ]
⎪⎪
⎪⎪5 − 2x si x ∈ [ 4,7 ]
⎪⎪
⎪⎩5 − 2x si x ∈ [7,9 ]

⎧⎪2 − x si x ∈ [0,1]
⎪⎪
⎪⎪x si x ∈ ]1,3 ]

4º) La función f(x) = ⎪ ⎨9 − 2x si x ∈ ]3,4 ] es una función de L1(∆) pues es una
⎪⎪
⎪⎪1 si x ∈ ]4,7 ]
⎪⎪
⎪⎩−6 + x si x ∈ ]7,9 ]
función continua que en cada subintervalo I1 se define mediante un polinomio
de grado inferior o igual a 1.

⎧⎪ 3 − x si x ∈ [0,3]⎫⎪⎪
5º) La función f(x) = ⎪⎨ ⎬ no es una función de L1(∆) pues
⎪⎩⎪1+ 2x si x ∈]3,9] ⎪⎭⎪
aunque su expresión en cada subintervalo es un polinomio de primer grado, la

12
Programación y Métodos Numéricos Interpolación polinómica por tramos

función no es continua en [0, 9] al presentar un “salto” entre el límite por la


izquierda y el límite por la derecha cuando x tiende a 3.

⎧⎪1+ x si x ≤ 2⎫⎪⎪
6ª) La función f(x) = ⎪ ⎨ ⎬ no es una función de L1(∆) pues,
⎪⎩⎪5 − x si x > 2⎪⎪⎭
aunque es continua, su expresión en el intervalo [1, 3] no es un polinomio de
grado menor o igual a 1.

Obsérvese que la gráfica en [1, 3] de f(x) no es una línea recta sino una línea
quebrada compuesta por dos tramos rectos.

La partición considerada para definir el espacio L1(∆) utiliza subintervalos


Ii = [xi-1, xi] (i = 1, ..., n) tales que en cada uno de ellos sólo hay dos puntos del
soporte, precisamente sus extremos xi-1 y xi. El hecho de que sólo existan dos
puntos del soporte en cada subintervalo obliga a que en cada uno de ellos sólo
se pueda interpolar con polinomios de grado menor o igual que 1.

Pero, obviamente, podrían considerarse otras particiones diferentes. En


efecto, supongamos por ejemplo que n es un número par y consideremos la
partición ∆ siguiente:

∆ = {I1 = [ x 0 ,x 2 ],I2 = [ x 2 ,x 4 ],...,Ii = ⎡⎢⎣ x 2(i−1) ,x 2i ⎤⎥⎦ ,...,In 2 = [ xn−2 ,xn ]}

13
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Ahora en cada subintervalo Ii = [x2(i-1) , x2i] (i = 1, ..., n/2) existen tres


puntos del soporte: x2(i-1), x2(i-1) y x2i. Por ello en cada subintervalo podremos
interpolar con un polinomio de grado menor o igual que 2. Es por ello natural
definir espacio de Lagrange asociado a la partición ∆, que representaremos
por L2(∆), como el espacio formado por todas las funciones continuas(5) en el
intervalo [x0, xn] tales que en cada intervalo Ii (i = 1, ..., n/2) tienen una
expresión polinómica de grado menor o igual a dos(6). En otros términos el
espacio L2(∆) está formado por todas aquellas funciones u(x) que son
continuas en [x0, xn] y tales que, para todo valor del índice “i” comprendido
entre 1 y n/2, existe algún polinomio de grado inferior o igual a 2, p2,i(x),
verificando que la expresión de u(x) en el intervalo Ii coincide con la de p2,i(x):

L 2 (∆) = {u(x) ∈ C0 ([ x 0 ,xn ]) / u(x) ≡ p2,i (x) ∈ P2 ∀x ∈ Ii , 1 ≤ i ≤ n 2}

De una forma más gráfica, el espacio L2(∆) está formado por todas
aquellas funciones continuas tales que en cada intervalo Ii (i = 1, ..., n/2) su
grafo es un segmento rectilíneo o parabólico. En otros términos los n/2
polinomios p2,i(x) que definen en cada intervalo Ii a una función v(x) de L2(∆)
pueden ser distintos o no y la única condición que deben cumplir es que p2,i(x2i)
= p2,i+1(x2i) (i = 1, ..., (n/2)-1). Ilustrémoslo con algunos ejemplos.

Ejemplos:
En los ejemplos que siguen, consideraremos el soporte {0, 1, 3, 4, 7, 9,
10} y la partición:
∆ = {I1 = [0, 3], I2 = [3, 7], I3 = [7, 10] }

1º) La función f(x)= x es una función de L2(∆) pues es continua en [0, 10] y su
expresión en los tres subintervalos de la partición ∆ es un polinomio de grado
menor o igual que 2 (en los tres es el polinomio “x” que es de grado 1).

5
Al igual que antes entenderemos la continuidad en x0 como la igualdad entre el valor de la
función en x0 y el valor del límite de dicha función cuando se hace tender x hacia x0 por la
derecha. Análogamente entenderemos la continuidad en xn como la igualdad entre el valor de
la función en xn y el valor del límite de dicha función cuando se hace tender x hacia xn por la
izquierda.
6
En la notación usada, L2(∆), ∆ hace referencia a la partición de [x0, xn] utilizada y el subíndice
“2” a que en cada subintervalo Ii de la partición las funciones del espacio se expresan mediante
polinomios de grado inferior o igual a 2. No debe confundirse este espacio con el espacio de
Lebesgue L2(Ω).

14
Programación y Métodos Numéricos Interpolación polinómica por tramos

2º) La función f(x) = x2 –3x es una función de L2(∆) pues es continua en [0, 10]
y su expresión en los tres subintervalos de la partición ∆ es un polinomio de
grado menor o igual que 2 (en los tres es “x2-3x ” que es de grado 2).

⎧⎪ 1− x si x < 3⎫⎪⎪
3º) La función f(x) = ⎪⎨ ⎬ es una función de L2(∆) pues es
⎪⎩⎪7 − 6x + x 2 si x ≥ 3⎪⎭⎪
continua en [0, 9] y además en cada uno de los tres subintervalos de la
partición puede expresarse mediante un polinomio de grado menor o igual a 2:

⎧⎪1− x si x ∈ [0,3 ]
⎪⎪
f(x) = ⎪⎨7 − 6x + x 2 si x ∈ [3,7 ]
⎪⎪
⎪⎪⎩7 − 6x + x 2 si x ∈ [7,10 ]

⎧⎪ 3 − x si x < 4⎫⎪⎪
4º) La función f(x) = ⎪⎨ ⎬ no es una función de L2(∆) pues
⎪⎩⎪7 − 6x + x 2 si x ≥ 4⎪⎭⎪
aunque es continua en el intervalo [0, 10] su expresión en el subintervalo
I2 = [3, 7] no coincide con la expresión de un único polinomio (cambia su
expresión en el punto “x = 4” que es interior al intervalo I2) .

⎪⎧ 3 − x si x < 3⎪⎫⎪
5º) La función f(x) = ⎪⎨ ⎬ no es una función de L2(∆) pues,
⎪⎩⎪7 − 6x + x si x ≥ 3⎪⎭⎪
2

aunque su expresión en cada uno de los tres subintervalos es un polinomio de

15
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

grado menor o igual que dos, no es continua en el intervalo [0, 10]


(presentando un “salto” en el punto x = 3).

Obviamente existen muchas otras posibilidades para realizar la partición


del intervalo [x0, xn]. En general, siendo k un entero positivo, y dados k enteros
positivos m1, m2, ... y mk, tales que su suma sea n, supondremos que en el
soporte {x0, ..., xn} hay (m1 + m2 + ... + mk +1) = (n+1) puntos distintos y
ordenados de menor a mayor, escribiendo, según convenga en cada caso, el
soporte con alguna de las tres notaciones equivalentes siguientes:

{x , x ,...,x
0 1 m1 ,xm1 +1,....,xm1 +m2 , xm1 +m2 +1,..., xm1 +m2 +m3 ,......, xm1 +m2 +...+mk−1 ,xm1 +m2 +...+mk−1 +1,...,xm1 +m2 +...+mk−1 +mk }

{x 0,1,x1,1,...,xm1,1,x1,2 ,...,xm2 ,2 ,x1,3 ,...,xm3 ,3 ,.....,xmk−1,k−1,x1,k ,...,xmk ,k }

{x ,x1,1,...,x 0,2 ,x1,2 ,...,x 0,3 ,x1,3 ,...,x 0,4 ,.....,x 0,k−1,x1,k ,...,xmk ,k }
0,1

Obsérvese que la diferencia entre las dos últimas notaciones es que,


para 1 < j < k, denotaremos indistintamente a los puntos xm1+m2 +..+mj como xm j ,j
o como x 0,j+1 según consideremos que dicho punto es el último punto del
soporte del intervalo Ij o el primero de los puntos del soporte de Ij+1.

Con estas notaciones designaremos por ∆ a la partición del intervalo


[ x 0 ,xn ] en los k subintervalos Ij = ⎡⎢⎣ x 0,j ,xmj ,j ⎤⎥⎦ (j = 1, ..., k). De esta manera al
subintervalo Ij pertenecen (mj + 1) puntos del soporte.

La figura siguiente ilustra estas notaciones en el caso de un soporte con 16


puntos y una partición en la que el intervalo se subdivide en k = 6 subintervalos

16
Programación y Métodos Numéricos Interpolación polinómica por tramos

habiendo 4 puntos en el primero, 2 en el segundo, 5 en el tercero, 3 en el


cuarto, 4 en el quinto y 3 en el sexto (es decir que m1 = 3, m2 = 1, m3 = 4,
m4 = 2, m5 = 3 y m6 = 2).

I1 I2 I3 I4 I5 I6

x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11 x12 x13 x14 x15


x0,1 x1,1 x2,1 x3,1 x0,3 x1,3 x2,3 x3,3 x4,3 x0,5 x1,5 x2,5 x3,5
x0,2 x1,2 x0,4 x1,4 x2,4 x0,6 x1,6 x2,6

Con la partición ∆ así formada en el subintervalo Ij = ⎡⎢ x 0,j ,xm j ,j ⎤⎥ ( j = 1, ..,


⎣ ⎦
k) puede interpolarse en el sentido de Lagrange con un polinomio de grado
menor o igual que mj. Por ello denominaremos espacio de Lagrange
asociado a la partición ∆, y lo representaremos por Lm1 ,m2 ,..,mk ( ∆ ) , al espacio
formado por todas las funciones continuas en el intervalo [ x 0 ,x n ] tales que
en cada intervalo Ij (j = 1, ..., k) tienen una expresión polinómica de grado
menor o igual a mj. En el caso en que todos los índices m1, m2 , ..., mk tengan
el mismo valor (m1= m2 = ...= mk = m) el espacio se denotará más brevemente
por Lm(∆).

De una forma más gráfica, el espacio Lm1,m2 ,..,mk (∆) está formado por
todas aquellas funciones continuas tales que en cada intervalo Ij (j = 1, ..., k) su
grafo es un segmento polinómico de grado menor o igual a mj. En otros
términos los k polinomios pj(x) que definen en cada intervalo Ii a una función
v(x) de Lm1,m2 ,..,mk (∆) no tienen por qué ser el mismo y las únicas condiciones
que deben cumplir es que su grado sea inferior o igual a mj y que
p j (xm j ,j ) = p j+1(xm j ,j ) (i = 1, ..., k). Ilustrémoslo con un ejemplo.

Ejemplo:
Si se considera el soporte {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} y la
partición del intervalo [0, 15] dada por:
∆ = {[0, 3] , [3, 4], [4, 8], [8, 10] , [10, 13], [13, 15]}

el número de puntos del soporte existente en cada subintervalo y el grado


máximo de los polinomios interpoladores de Lagrange que con ellos se pueden
obtener se recogen en la tabla siguiente:

17
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Intervalo Nº de puntos soporte Grado polinomio


I1 = [0, 3] 4 3
I2 = [3, 4] 2 1
I3 = [4, 8] 5 4
I4 = [8, 10] 3 2
I5 = [10, 13] 4 3
I6 = [13, 15] 3 2

Por tanto el espacio L3,1,4,2,3,2(∆) será el espacio formado por todas aquellas
funciones continuas en [0, 15] y que

• en [0, 3] se definan con un polinomio de grado menor o igual que 3,


• en [3, 4] se definan con un polinomio de grado menor o igual que 1,
• en [4, 8] se definan con un polinomio de grado menor o igual que 4,
• en [8, 10] se definan con un polinomio de grado menor o igual que 2,
• en [10, 13] se definan con un polinomio de grado menor o igual que 3, y
• en [13, 15] se definan con un polinomio de grado menor o igual a 2.

Por ejemplo, la función

⎪⎧⎪sen(x) x≤0 ⎫


⎪⎪ 2 ⎪

⎪⎪ x 0 < x ≤ 3 ⎪
⎪⎪−12 + 7x ⎪

⎪⎪ 3 < x ≤ 4 ⎪


f(x) = ⎪⎨2.6 + x 2 − (13 1280) x 4 4 < x ≤ 8 ⎪⎬
⎪⎪ ⎪
⎪⎪85 − 7.5x 8 < x ≤ 10 ⎪


⎪⎪ 2 ⎪

⎪⎪ 120 − 21x + x 10 < x ≤ 15⎪
⎪⎪1/(20 − x) ⎪

⎩⎪ 15 < x ⎪

de la que se recoge su grafo en la figura siguiente, es una función del espacio


L3,1,4,1,3,2(∆) pues es continua en el intervalo [0, 15] (obsérvese que sus únicos
puntos de discontinuidad se producen por la diferencia entre el valor de f(15) y
el límite cuando x tiende a 15 por la derecha y en x = 20, estando ambos casos
fuera del intervalo [0, 15]) y en cada uno de los subintervalos de la partición ∆
tiene una expresión polinómica de grado menor o igual a los señalados

18
Programación y Métodos Numéricos Interpolación polinómica por tramos

anteriormente (obsérvese que las expresiones no polinómicas tienen lugar


fuera de [0, 15])(7).

Una vez introducidos los espacios de funciones polinómicas por tramos


que se utilizan en la interpolación de Lagrange examinemos algunas
propiedades de ellos. En primer lugar demostremos que estos espacios de
funciones tienen efectivamente una estructura de espacio vectorial(8).

Propiedad 1ª
Siendo ∆ una partición de un intervalo [x0 , xn] en k subintervalos I1, I2,
...., Ik , el espacio Lm1,m2 ,...,mk (∆) formado por todas las funciones continuas en
[x0, xn] y tales que en cada intervalo Ij ( j = 1, ..., k) tienen una expresión
polinómica de grado menor o igual que mj, tiene estructura de espacio vectorial.

Demostración:
Para demostrar que Lm1,m2 ,...,mk (∆) es un espacio vectorial bastará con
demostrar que cualquier combinación lineal de dos funciones cualesquiera del
espacio conducen a otra función del espacio. Para ello sean λ y µ dos
números reales cualesquiera y u(x) y v(x) dos funciones cualesquiera de
Lm1,m2 ,...,mk (∆) . Las expresiones polinómicas de cada una de estas funciones en
los distintos subintervalos de la partición serán denotadas por:

7
En este ejemplo se han proporcionado expresiones de la función fuera del intervalo en el que
se producirá el proceso de interpolación ([0, 15]) para reforzar el comentario que se realizó al
comienzo de este subapartado en el sentido de que nos despreocupábamos de lo que sucede
fuera del intervalo de estudio. En este sentido recordamos que estamos considerando bajo el
nombre de función a las restricciones de las funciones al intervalo que se considere en cada
caso (en este ejemplo el intervalo [0, 15]).
8
Recordamos al lector que el que un conjunto tenga estructura de espacio vectorial equivale a
decir que cualquier combinación lineal de elementos de dicho conjunto conduce a otro
elemento del mismo conjunto.

19
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid


⎪u(1) (x) x ∈ I1 ⎫⎪⎪ ⎧⎪v (1) (x) x ∈ I1 ⎫⎪⎪

⎪ ⎪ ⎪⎪ ⎪
⎪ (2)
⎪u (x) x ∈ I2 ⎪⎪ ⎪⎪v (2) (x) x ∈ I2 ⎪⎪
u(x) = ⎨ ⎬ y v(x) = ⎨ ⎬

⎪...... ..... ⎪⎪ ⎪⎪...... ..... ⎪⎪

⎪ ⎪ ⎪⎪ (k ) ⎪
(k )
⎩u (x)

⎪ x ∈ Ik ⎪⎪⎪⎭ ⎪⎪⎩v (x) x ∈ Ik ⎪⎪⎪⎭

Designemos entonces por w(x) a la función que se obtiene mediante:


w(x) = λ·u(x) + µ·v(x) . Obviamente w(x) es una función continua(9). Además en
cualquier subintervalo Ij (j = 1, ..., k) de la partición ∆ la función w(x) estará
definida por:
w ( j) (x) = λ·u( j) (x) + µ·v ( j) (x) ∀x ∈ I j

Y puesto que el producto de un escalar (λ o µ ) por un polinomio de


grado menor o igual que mj (u(j)(x) o v(j)(x) respectivamente) es un polinomio de
grado menor o igual que mj y la suma de dos polinomios de grado menor o
igual que mj ( (λ·u( j) (x)) y (µ·v ( j) (x)) ) es otro polinomio de grado menor o igual
que mj, podemos concluir que w(j)(x) es un polinomio de grado menor o igual
que mj. Por tanto w(x) ∈ Lm1,m2 ,...,mk (∆) .
c.q.d.

Propiedad 2ª
Siendo ∆ una partición de un intervalo [x0 , xn] en los k subintervalos I1,
I2, ...., Ik , la dimensión del espacio Lm1,m2 ,...,mk (∆) , formado por todas las
funciones continuas en [x0, xn] y tales que en cada intervalo Ij ( j = 1, ..., k)
tienen una expresión polinómica de grado menor o igual que mj, es:

dim (Lm1,m2 ,...,mk ) = n + 1


k
donde n = ∑ mk
j=1

Demostración:
Recordando que todo polinomio de grado menor o igual que “s” se define
con “s+1” coeficientes (o en otros términos que el espacio de polinomios de
grado menor o igual que “s” tiene (s+1) grados de libertad) puede concluirse
que la concreción de la expresión de una función u(x) del espacio en el
subintervalo Ij ofrece (mj+1) grados de libertad. Pero si se elige libremente una
expresión u(1)(x) para el intervalo I1, aparece una restricción a la hora de elegir

9
Recuérdese que el producto de un escalar por una función continua es otra función continua y
que la suma de dos funciones continuas es otra función continua.

20
Programación y Métodos Numéricos Interpolación polinómica por tramos

la expresión u(2)(x) para el tramo I2 pues en el punto que separa ambos


subintervalos debe garantizarse la igualdad de valor. Este razonamiento
muestra que en conjunto habrá tantas restricciones como extremos comunes
de subintervalos contiguos, es decir (k-1). En resumen, la funciones del
⎡ k ⎤ ⎡ k ⎤
espacio Lm1,m2 ,...,mk (∆) presentan ⎢⎢ ∑ (m j + 1) − (k − 1)⎥⎥ = ⎢⎢ ∑ (m j ) + 1)⎥⎥ grados de
⎣ j=1 ⎦ ⎣ j=1 ⎦
k
libertad por lo que llamando n = ∑ mk queda demostrado que la dimensión
j=1

del espacio es n+1.


c.q.d.

El hecho de que Lm1,m2 ,...,mk (∆) sea un espacio vectorial de dimensión


(n+1) implica que toda función de dicho espacio podrá expresarse como una
combinación lineal de una base de Lm1,m2 ,...,mk (∆) formada por (n+1) funciones.
En este sentido el teorema siguiente nos determina una base de Lm1,m2 ,...,mk (∆)
que nos será de utilidad en los apartados siguientes.

Teorema 1.
Dado el soporte de (n+1) puntos distintos {x0, x1, ..., xn}, que
supondremos ordenados de menor a mayor, sean m1, m2, …, mk un conjunto
k
de k enteros estrictamente positivos tales que n = ∑ mk . Sea ∆ la partición de
j=1

[ x0, xn] en los k subintervalos:

I1 = ⎡⎢ x 0 ,xm1 ⎤⎥ , I2 = ⎡⎢ xm1 ,xm1+m2 ⎤⎥ , .….., Ik = ⎡⎢ xm1+m2 +...+mk −1 ,xn ⎤⎥


⎣ ⎦ ⎣ ⎦ ⎣ ⎦

En estas condiciones una base de Lm1,m2 ,...,mk (∆) está formada por las funciones
{ϕ0 (x), ϕ1(x),..., ϕn } de Lm ,m ,...,m (∆) que verifican las igualdades:
1 2 k


⎪1 si j = i
ϕ j (xi ) = ⎪
⎨ (0 < i < n ; 0 < j < n)

⎩0 si j ≠ i

Demostración:
a) Demostremos en primer lugar que efectivamente existen (n+1) funciones
{ϕ j (x)}j=0
n
en el espacio Lm1,m2 ,...,mk (∆) tales que:

21
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid


⎪1 si j = i
ϕ j (xi ) = ⎪
⎨ (0 < i < n ; 0 < j < n)

⎩0 si j ≠ i

En efecto, para ello escogido cualquier valor del índice “j” comprendido
entre 0 y n, distinguiremos dos situaciones posibles: 1ª) que el punto xj sea
interior a uno de los subintervalos de la partición (que denotaremos como Is ) o
2ª) que el punto xj sea el punto común que tienen dos subintervalos contiguos
(que denotaremos como Is-1 e Is).

En la primera de estas situaciones se verificará que (m1+...+ms-1) < j <


(m1+...+ms-1 + ms) y basta con considerar que los polinomios p j,r (x) que definen
a la función ϕ j (x) en los intervalos Ir son todos nulos si r ≠ s mientras que
pj,s(x) es el polinomio interpolador de Lagrange obtenido al interpolar sobre el
soporte {xm1+...+ms−1 ,...,x j−1,x j ,x j+1,...,xm1+...+ms−1+ms } cualquier función que en

dichos puntos tome los valores {0, ..., 0, 1, 0, ..., 0}. Dicho polinomio tendrá
grado menor o igual que ms y se anulará en los extremos de Is, por lo que la
función ϕ j (x) es evidente que pertenecerá al espacio Lm1,m2 ,...,mk (∆) .

En la segunda de las situaciones se verificará que (m1+...+ms-1) = j y basta con


considerar que los polinomios p j,r (x) que definen a la función ϕ j (x) en los
intervalos Ir son todos nulos si r ∉ {s-1, s} mientras que pj,s-1(x) es el polinomio
interpolador de Lagrange obtenido al interpolar sobre el soporte
{xm1+...+ms−2 ,...,xm1+...+ms−1+ms−1−1,xm1+...+ms−1+ms−1 } cualquier función que en dichos
puntos tome los valores {0, ..., 0, 1} y pj,s(x) es el polinomio interpolador de
Lagrange obtenido al interpolar sobre el soporte
{xm1+...+ms−1 ,xm1+...+ms−1+1,...,xm1+...+ms−1+ms } cualquier función que en dichos puntos
tome los valores {1, 0 ..., 0} . Estos polinomio tendrán respectivamente grados
menores o iguales que ms-1 y que ms. Además por la forma en que se han
construido se verifica que:

p j,s−1(x m1+...+ms−2 ) = 0
p j,s−1(xm1+...+ms−2 +ms−1 ) = p j,s (x m1+...+ms−2 +ms−1 ) = 1
p j,s (x m1+...+ms−2 +ms−1+ms ) = 0

Esto implica que la función ϕ j (x) pertenece al espacio Lm1,m2 ,...,mk (∆) .

22
Programación y Métodos Numéricos Interpolación polinómica por tramos

En resumen, en cualquier caso existen (n+1) funciones del espacio que


toman los valores dados en el enunciado.

b) Demostremos ahora que las (n+1) funciones {ϕ j (x)}


n
consideradas en el
j=0

enunciado son una base del espacio Lm1,m2 ,...,mk (∆) . Ello es equivalente a

{ϕ j (x)}j
n
demostrar que ninguna de las funciones puede expresarse como
=0

combinación lineal de las demás. Y esto es obvio sin más que considerar que,
para cualquier valor permitido del índice “j”, la función ϕ j (x) es la única que no
se anula en el punto xj por lo que cualquier combinación lineal de las demás
funciones nos conducirá a una función que tome valor nulo en xj y que, por
tanto no podrá coincidir con ϕ j (x) .
c.q.d.

Definición
{ϕ j (x)}j
n
La base determinada en el teorema anterior se denomina
=0

base de Lagrange del espacio Lm1,m2 ,...,mk (∆) asociada al soporte {x0, ..., xn}. A
⎧⎪1 si i = j
la función ϕi (x) que verifica ϕi (x j ) = ⎪⎨ se la denomina función de
⎪⎪⎩0 si i ≠ j
base de Lagrange asociada al nodo xi.

Una de las ventajas de conocer una base de un espacio vectorial es que


cualquier elemento del espacio queda definido de forma única por las
coordenadas(10) que tiene en dicha base. La ventaja que, frente a otras bases,
nos aporta trabajar con la base de Lagrange del espacio Lm1,m2 ,...,mk (∆) es que
las coordenadas de cualquier función u(x) del espacio en dicha base son
precisamente los valores de u(x) en los puntos del soporte {x0, ..., xn} (que a
partir de ahora denominaremos valores nodales de u(x) en el soporte y
denotaremos por {u0, u1, ..., un}). Este hecho se demuestra en el teorema
siguiente:

10
Las coordenadas de un elemento “u” de un espacio vectorial V de dimensión “m” en una
base de V denotada por B = {v1, ..., vm}, son los escalares que intervienen en la combinación
lineal de los elementos de B que tiene por resultado el elemento “u”. Es decir que {a1, a2, ..., an}
son las coordenadas de “u” en la base B si se verifica que u = a1·v1 + a2·v2 + .... + an·vn.

23
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Teorema 2.
Dado el soporte de (n+1) puntos distintos {x0, x1, ..., xn}, que supondremos
ordenados de menor a mayor, sean m1, m2, …, mk un conjunto de k enteros
k
estrictamente positivos tales que n = ∑ mk . Sea ∆ la partición de [ x0, xn] en
j=1

los k subintervalos:
I1 = ⎡⎢ x 0 ,xm1 ⎤⎥ , I2 = ⎡⎢ xm1 ,xm1+m2 ⎤⎥ , .….., Ik = ⎡⎢ xm1+m2 +...+mk −1 ,xn ⎤⎥
⎣ ⎦ ⎣ ⎦ ⎣ ⎦

Con esta notación, siendo {u0, u1, ..., un} un conjunto de (n+1) escalares y
n
{ϕi (x)}i=0 la base de Lagrange del espacio Lm1,m2 ,...,mk (∆) asociada al soporte
{x0, x1, ..., xn}, existe una única función u(x) del espacio Lm1,m2 ,...,mk (∆)
verificando que u(xi) = ui (i = 0, 1, ..., n). Además dicha función está dada por la
expresión :
n
u(x) = ∑ u j ·ϕ j (x)
j=0

Demostración:
⎛ n ⎞
La función u(x) = ⎜⎜⎜∑ u j ·ϕ j (x)⎟⎟⎟ es una función de Lm1,m2 ,...,mk (∆) pues es
⎜⎝ j=0 ⎠⎟
una combinación lineal de elementos de dicho espacio. Además, en virtud del
teorema 1, se verifica que:

n
u(xi ) = ∑ u j ·ϕ j (xi ) = ui ·ϕi (xi ) = ui (i = 0, ..., n)
j=0

Por tanto u(x) es una función de Lm1,m2 ,...,mk (∆) que toma los valores
nodales prescritos.

Demostremos que además es la única función que toma estos valores


nodales. Para ello supongamos que hubiera alguna otra función v(x), diferente
a u(x), que tomase estos mismos valores nodales. En dicho caso se verificaría
que la función w(x) = u(x) – v(x) sería una función de Lm1,m2 ,...,mk (∆) con valores
nodales w(xi) = v(xi) – w(xi) = 0 (i = 0, ..., n). Ello equivaldría a que el polinomio
p(s)(x) de grado menor o igual que ms que define w(x) en el intervalo Is (s = 1,
..., k), toma valores nulos en los (ms+ 1) puntos del soporte que pertenecen al
subintervalo Is (es decir en los puntos del soporte
{xm1+...+ms−1 ,xm1+...+ms−1+1,...,xm1+...+ms−1+ms } ). Pero el único polinomio de grado menor
o igual que ms que admite (ms +1) raíces es el polinomio idénticamente nulo.

24
Programación y Métodos Numéricos Interpolación polinómica por tramos

Ello implica que w(x) ≡ 0 ∀x ∈ [x 0 ,xn ] y por tanto u(x) ≡ v(x) ∀x ∈ [x 0 ,xn ] en
contra de la suposición de que u(x) y v(x) eran dos funciones diferentes del
espacio. Por tanto es absurdo suponer que existe más de una función de
Lm1,m2 ,...,mk (∆) con los mismos valores nodales.
c.q.d.

Los teoremas 1 y 2 resumen el proceso de interpolación de Lagrange


polinómica por tramos. En los subapartados 2.2. y 2.3. concretaremos este
aspecto en los dos casos particulares correspondientes a trabajar en L1(∆) y en
L2(∆)(11). Pero antes de ello utilicémoslos para inferir una propiedad más de las
funciones de base de Lagrange.

Propiedad 3.
Dado el soporte de (n+1) puntos distintos {x0, x1, ..., xn}, que
supondremos ordenados de menor a mayor, sean m1, m2, …, mk un conjunto
k
de k enteros estrictamente positivos tales que n = ∑ mk . Sea ∆ la partición de
j=1

[ x0, xn] en los k subintervalos:

I1 = ⎡⎢ x 0 ,xm1 ⎤⎥ , I2 = ⎡⎢ xm1 ,xm1+m2 ⎤⎥ , .….., Ik = ⎡⎢ xm1+m2 +...+mk −1 ,xn ⎤⎥


⎣ ⎦ ⎣ ⎦ ⎣ ⎦

n
Con esta notación, siendo {ϕi (x)}i=0 la base de Lagrange del espacio
Lm1,m2 ,...,mk (∆) se verifica:
n
a) ∑ ϕ (x) = 1
j=0
j ∀x ∈ [ x 0 ,x n ]
n
b) ∑ x ·ϕ (x) = x
j=0
j j ∀x ∈ [ x 0 ,x n ]

Demostración:
a) La función u(x) = 1 es una función del espacio Lm1,m2 ,...,mk (∆) ya que en cada
tramo Ij de la partición puede definirse con el polinomio (de grado 0) p(x) = 1.
Por ello sus (n+1) valores nodales son {1, 1, ..., 1}. Aplicando el teorema 2 a
esta función se tiene que
n

∑ ϕ (x) = u(x) = 1
j=0
j ∀x ∈ [ x 0 ,x n ]

11
Si bien es cierto que estos casos no son los únicos posibles no es menos cierto que son los
más utilizados en la práctica.

25
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

b) La función v(x) = x es una función del espacio Lm1,m2 ,...,mk (∆) ya que en cada
tramo Ij de la partición puede definirse con el polinomio (de grado 1) p(x) = x, y
como en cada subintervalo habrá al menos dos puntos, este polinomio siempre
será de grado menor o igual que mj (j = 1, ..., k). Los (n+1) valores nodales de
v(x) son {x0, x1, ..., xn}. Aplicando el teorema 2 a la función v(x) se tiene que:

∑ x ·ϕ (x) = x
j=0
j j ∀x ∈ [ x 0 ,x n ]

c.q.d.

El 4º de los ejercicios propuestos a continuación generaliza la propiedad


anterior.

Ejercicios propuestos:
1º. Sea {x0 < x1 < x2 < ... <xn} un soporte formado por (n+1) puntos y denotemos
por ∆1 a la partición ∆1 = { [x0, x1], [x1, x2], ..., [xn-1, xn] } y por ∆2 a la partición
∆2 = {[x0, x2] , [x2 , x4] , ...., [xn-2 , xn] }. Razona la veracidad o falsedad de la
siguiente inclusión: L1 (∆1) ⊂ L 2 (∆2 ) .

2º. Considérese el soporte {0, 1, 2, 3, 4, 5, 6, 7} y la partición:

∆ = { [0, 2], [2, 6], [6, 7]}


Determina de forma razonada qué funciones entre las siguientes pertenecen al
espacio L2,4,1(∆)


⎪cos(x) si x < 0
a) f(x) = ⎪


⎩ 1+ x si x ≥ 0

b) f(x) = x2


⎪ x2 si x ≤ 2

⎪ 3
c) f(x) = ⎪
⎨x si 2 < x ≤ 6



⎩x
⎪ si 6 < 2


⎪0 si x ≤ 2


d) f(x) = ⎪⎨(x − 2) si 2 < x ≤ 6
3


⎩22 + 7x si 6 < 2

26
Programación y Métodos Numéricos Interpolación polinómica por tramos

3º. Sea ∆ una partición de un intervalo [x0 , xn] en k subintervalos I1, I2, ...., Ik ,
y consideremos el espacio Lm1,m2 ,...,mk (∆) formado por todas las funciones
continuas en [x0, xn] y tales que en cada intervalo Ij ( j = 1, ..., k) tienen una
expresión polinómica de grado menor o igual que mj. Denotemos por Ps al
espacio de todos los polinomios de grado menor o igual que s. Con esta
notación, razona la veracidad o falsedad de las dos afirmaciones siguientes:

a) Pmj ⊂ Lm1,m2 ,...,mk (∆) (1 < j < k)


b) P Inf (m j ) ⊂ Lm1,m2 ,...,mk (∆)
1≤ j≤k

c) P1 ⊂ Lm1,m2 ,...,mk (∆)

4º. Dado el soporte de (n+1) puntos distintos {x0, x1, ..., xn}, que supondremos
ordenados de menor a mayor, sean m1, m2, …, mk un conjunto de k enteros
k
estrictamente positivos tales que n = ∑ mk . Denotemos por m al inferior de los
j=1

enteros (m1, m2, ..., mk) y sea ∆ la partición de [ x0, xn] en los k subintervalos:
I1 = ⎡⎢ x 0 ,xm1 ⎤⎥ , I2 = ⎡⎢ xm1 ,xm1+m2 ⎤⎥ , .….., Ik = ⎡⎢ xm1+m2 +...+mk −1 ,xn ⎤⎥
⎣ ⎦ ⎣ ⎦ ⎣ ⎦

n
Con esta notación, siendo {ϕi (x)}i=0 la base de Lagrange del espacio
Lm1,m2 ,...,mk (∆) demuestra que se verifica:
n

∑ x ϕ (x) = x
j=0
i
j j
i
∀x ∈ [ x 0 ,x n ] 0 ≤ i ≤ m

27
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

2.2. Interpolación de Lagrange con funciones polinómicas de primer


grado por tramos.
Consideremos un soporte formado por (n+1) puntos distintos {x0, x1, .....,
xn} que supondremos ordenados de menor a mayor. En el intervalo [x0, xn] al
que pertenecen todos los puntos del soporte realizaremos la partición ∆ de la
forma:
∆ = {I1 = [ x 0 ,x1 ],I2 = [ x1,x 2 ],...,Ii = [ xi−1,xi ],...,In = [ xn−1,xn ]}

y denotaremos por L1(∆) al espacio de Lagrange asociado a la partición ∆.

Comencemos explicitando la base de Lagrange de L1(∆) asociada al


soporte {x0, x1, ....., xn}.

Propiedad 4.
La base de Lagrange de L1(∆) asociada al soporte {x0, x1, ....., xn} es la
formada por las (n+1) funciones:

⎧ x − x1


⎪ si x ∈ [ x 0 ,x1 ]
ϕ 0 (x) = ⎨ x 0 − x1



⎩ 0
⎪ en caso contrario

⎪⎧ x − x j−1 ⎪⎫
⎪⎪⎪ si x ∈ ⎣⎢⎡ x j−1,x j ⎦⎥⎤ ⎪⎪⎪
⎪⎪ x j − x j−1 ⎪⎪
⎪⎪ ⎪⎪
⎪ x − x j+1 ⎪⎪
ϕ j (x) = ⎪⎨ si x ∈ ⎡⎢⎣ x j ,x j+1 ⎤⎥⎦ ⎬ (j = 1, ..., n-1)
⎪⎪ x j − x j+1 ⎪⎪
⎪⎪ ⎪⎪
⎪⎪ ⎪
⎪⎪0 en caso contrario⎪⎪⎪
⎪⎩⎪ ⎪⎭⎪

⎪⎧⎪ x − xn−1
⎪ si x ∈ [ x n−1,xn ]
ϕn (x) = ⎨ xn − xn−1
⎪⎪
⎪⎪⎩ 0 en caso contrario

Demostración:
Con las expresiones dadas en el enunciado se tiene que:

⎪⎧1 si i = 0 ⎧⎪1 si i = j ⎧⎪1 si i = n


ϕ 0 (xi ) = ⎪⎨ , ϕ j (xi ) = ⎪⎨ (0 < j < n), ϕn (xi ) = ⎪⎨
⎪⎪⎩0 si i ≠ 0 ⎪⎪⎩0 si i ≠ j ⎪⎪⎩0 si i ≠ n

28
Programación y Métodos Numéricos Interpolación polinómica por tramos

lim ϕ 0 (x) = 1, lim ϕ 0 (x) = 0 ( 0 < i < n) , lim− ϕ 0 (x) = 0


x → x+
0
x → xi x → xn

∀j ∈ {1,..,n − 1} : lim ϕ j (x) = 0 ,


x → x+
0

⎪⎧1 si i = j
lim ϕ j (x) = ⎪⎨ (0 < i < n),
x → xi ⎪⎪⎩0 si i ≠ j

lim ϕ j (x) = 0
x → x−
n

y:
lim ϕn (x) = 0 , lim ϕn (x) = 0 ( 0 < i < n) , lim− ϕn (x) = 1
x → x+
0
x → xi x → xn

por lo que puede concluirse que las funciones {ϕ j (x)}


n
son continuas en el
j=0

intervalo [x0, xn].

Por otra parte en cada subintervalo Ii = [xi-1 , xi] (i = 1, ..., n) la expresión


{ϕ j (x)}j
n
de todas las funciones es un polinomio de grado 0 (caso de que
=0

tomen en él el valor nulo) o de grado 1 (en los tramos en que no se anulan).

Todo ello nos permite afirmar que son funciones del espacio L1(∆), y
⎪⎧1 si i = j
además, al verificarse que ϕ j (xi ) = ⎪⎨ , el teorema 1 demostrado en el
⎪⎪⎩0 si i ≠ j

{ϕ j (x)}j
n
subapartado 2.1. nos garantiza que las funciones son la base de
=0

Lagrange del espacio L1(∆).


c.q.d.

Las figuras siguientes recogen los grafos de las funciones de la base de


Lagrange.

1
Función ϕ 0 (x) :
x0 x1 ... xj ... xn

1
Función ϕ j (x) ( j = 1, ..., n-1):
x0 ... xj-1 xj xj+1 ... xn

Función ϕn (x) 1

x0 ....... xj ... xn-1 xn

29
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Obsérvese que la función ϕ j (x) es la única función de la base de


Lagrange que toma valor no nulo en el nodo xj. En ese sentido diremos que la
función ϕ j (x) es la función de la base de Lagrange asociada al nodo xj.

Ejemplo:
Determinemos las funciones de la base de Lagrange del espacio L1(∆)
asociado al soporte {0, 1, 3, 5}.

La partición ∆ correspondiente a este soporte es:


∆ = { I1 = [0, 1], I2 = [1, 3], I3 = [3, 5]}
y las 4 funciones de la base de Lagrange estarán dadas por:
⎧⎪ x − 1
⎪ = 1− x si x ∈ [0,1]
ϕ 0 (x) = ⎪⎨ 0 − 1
⎪⎪
⎪⎩ 0 en caso contrario
⎧⎪ x − 0
⎪⎪ =x si x ∈ [0,1]
⎪⎪ 1− 0
⎪⎪
x −3 3 1
ϕ1(x) = ⎪⎨ = − x si x ∈ [1,3 ]
⎪⎪ 1− 3 2 2
⎪⎪
⎪⎪0 en caso contrario
⎪⎪⎩
⎧⎪ x − 1 1 1
⎪⎪ = x− si x ∈ [1,3 ]
⎪⎪ 3 − 1 2 2
⎪⎪
x −5 5 3
ϕ 2 (x) = ⎪⎨ = − x si x ∈ [3,5 ]
⎪⎪ 3 − 5 2 2
⎪⎪
⎪⎪0 en caso contrario
⎪⎪⎩
⎧⎪ x − 3 1 3
⎪⎪ = x− si x ∈ [3,5 ]
ϕ 3 (x) = ⎨ 5 − 3 2 2
⎪⎪
⎪⎩ 0 en caso contrario
Los grafos de estas funciones de base se recogen en la figura siguiente:

30
Programación y Métodos Numéricos Interpolación polinómica por tramos

Determinada la base de Lagrange asociada al soporte {x0, ..., xn} del


espacio L1(∆), el teorema 2 demostrado en el apartado 2.1. nos indica cómo
calcular la función de dicho espacio que interpola en el sentido de Lagrange a
cualquier función f(x) de la que se conozcan sus valores en los puntos del
soporte. La forma de proceder para ello se concreta en el teorema siguiente:

Teorema 3.
Dado el soporte {x0, ..., xn} y denotando por fj = f(xj) ( j = 0, .., n) a los
valores que toma una función f(x) en los puntos del soporte y por {ϕ j (x)}
n
a
j=0

las funciones que forman la base de Lagrange del espacio L1(∆) que está
asociada a este soporte, se verifica que la función:

n
u(x) = ∑ f j ·ϕ j (x)
j=0

es la única función de L1(∆) que satisface las igualdades:

u(xj) = f(xj) ( j = 0,..., n)

A dicha función u(x) se la denomina función interpoladora de Lagrange de


f(x) del espacio L1(∆) sobre el soporte {x0, ..., xn}.

Demostración:
Es una consecuencia inmediata de aplicar el teorema 2 del apartado 2.1.
al espacio L1(∆).
c.q.d.
Ejemplo:
Dado el soporte {0, 1, 3, 5} calculemos la función del espacio L1(∆)
correspondiente que interpola a la función f(x) = sen( π ·x/2).

Las funciones de la base de Lagrange de L1(∆) asociadas a este soporte


ya fueron calculadas en el ejemplo anterior de este apartado.

Por otra parte, los valores de la función en los puntos del soporte son los
siguientes:

f0 = sen (0) = 0, f1 = sen( π /2) = 1, f2 = sen(3· π /2) = -1, f3 = sen(5 π /2) = 1.

Por tanto: u(x) = 0·ϕ 0 (x) + 1·ϕ1(x) − 1·ϕ 2 (x) + 1·ϕ 3 (x) = ϕ1(x) − ϕ 2 (x) + ϕ 3 (x)

31
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Detallemos el resultado de la combinación lineal que conduce a u(x).


{ϕ j (x)}j
3
Puesto que las funciones de base están definidas por tramos las
=0

operaciones correspondientes deben ser realizadas tramo a tramo. Más


concretamente:

• En el intervalo I1 = [0, 1] se tiene que:


ϕ 0 (x) = 1− x , ϕ1(x) = x , ϕ 2 (x) = 0 y ϕ 3 (x) = 0
por lo que en dicho tramo:
u(x) = ϕ1(x) − ϕ 2 (x) + ϕ 3 (x) = x – 0 + 0 = x
• En el intervalo I2 = [1, 3] se tiene que:
3 1 1 1
ϕ 0 (x) = 0 , ϕ1(x) = − x , ϕ 2 (x) = x − y ϕ 3 (x) = 0
2 2 2 2
por lo que en dicho tramo:
⎛3 1 ⎞ ⎛ 1 1⎞
u(x) = ϕ1(x) − ϕ 2 (x) + ϕ 3 (x) = ⎜⎜ − x⎟⎟⎟ − ⎜⎜ x − ⎟⎟⎟ = 2 − x
⎝⎜ 2 2 ⎠ ⎝⎜ 2 2⎠
• Finalmente en el intervalo [3, 5] se tiene que:
5 3 1 3
ϕ 0 (x) = 0 , ϕ1(x) = 0 , ϕ 2 (x) = − x y ϕ 3 (x) = x −
2 2 2 2
por lo que en dicho tramo:
⎛5 3 ⎞ ⎛ 1 3⎞
u(x) = ϕ1(x) − ϕ 2 (x) + ϕ 3 (x) = −⎜⎜ − x⎟⎟⎟ + ⎜⎜ x − ⎟⎟⎟ = −4 + x
⎜⎝ 2 2 ⎠ ⎝⎜ 2 2⎠
Resumiendo:
⎧⎪x si x ∈ [0,1]
⎪⎪

u(x) = ⎨2 − x si x ∈ [1,3 ]
⎪⎪
⎪⎪⎩−4 + x si x ∈ [3,5 ]
Gráficamente:

Tramo I1 Tramo I2 Tramo I3


32
Programación y Métodos Numéricos Interpolación polinómica por tramos

Puesto que el grado de todos los tramos polinómicos de las funciones de


L1(∆) es 0 ó 1, la propiedad 3 (también demostrada en 2.1.) nos garantiza que:
n n

∑ ϕ (x) = 1
j=0
j ∀x ∈ [ x 0 ,xn ] y ∑ x ·ϕ (x) = x
j=0
j j ∀x ∈ [ x 0 ,xn ]

Ambas igualdades se pueden resumir en la siguiente propiedad:

Propiedad 5.
Para todo valor de los escalares α y β , siendo {ϕ j (x)}
n
las funciones
j=0

de base del espacio L1(∆) asociadas al soporte {x0, x1, ..., xn}, se verifica que:
n

∑ (α + βx )·ϕ (x) = α + βx
j=0
j j ∀x ∈ [ x 0 ,xn ]

Demostración:
Es una consecuencia inmediata de la propiedad 3ª demostrada en el
apartado 2.1.
c.q.d.

La propiedad anterior garantiza que las (restricciones a [x0, xn] de las)


funciones f(x) que en [x0, xn] sean polinomios de grado menor o igual que
1 tienen como función interpoladora en L1(∆) la misma (restricción de la )
función f(x). Es más, el teorema 3 demostrado anteriormente nos permite
afirmar que si f(x) es una función de L1(∆) su función interpoladora es ella
misma.

Aún puede refinarse más este resultado con la propiedad siguiente:

Propiedad 6.
Dado el soporte {x0, ..., xn}, sea ∆ la partición de [x0, xn] dada por :

∆ = {I1 = [x0, x1], ..., Ij = [xj-1, xj], ..., In = [xn-1, xn] }

denotemos por f(x) a una función cualquiera y por u(x) a su función


interpoladora del espacio L1(∆). Considerando que estas funciones, en cada
tramo, estén definidas por las expresiones:

33
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid


⎪ f1(x) si x ∈ I1 = [ x 0 ,x1 ] ⎧⎪u (x) si x ∈ I1 = [ x 0 ,x1 ]

⎪ ⎪⎪ 1

⎪ ⎪⎪

⎪.... ..................... ⎪⎪.... .....................

⎪ ⎪⎪
f(x) = ⎪
⎨f j (x) si x ∈ Ij = ⎣⎢⎡ x j−1,x j ⎦⎥⎤ , u(x) = ⎨⎪u j (x) si x ∈ Ij = ⎣⎢⎡ x j−1,x j ⎦⎥⎤

⎪ ⎪⎪

⎪.... ..................... ⎪⎪.... .....................

⎪ ⎪⎪

⎪ ⎪⎪
⎪ f (x) si x ∈ In = [ xn−1,xn ] ⎪⎪⎩un (x) si x ∈ In = [ xn−1,xn ]

⎩n

si para algún valor del índice “j” tal que 1 < j < n la expresión fj(x) es un
polinomio de grado menor o igual que 1 entonces se verifica que uj(x) = fj(x).

Demostración:
Si fj(x) es un polinomio de grado menor o igual que 1 coincidirá con el
polinomio interpolador de Lagrange (12) de f(x) sobre el soporte {xj-1, xj}. En otros
términos, si fj(x) es un polinomio de grado menor o igual que 1 resultará que
fj(x) es el único polinomio de grado menor o igual que 1 que verifica las
condiciones: fi(xi-1) = f(xi-1) y fi(xi) = f(xi). Y puesto que ui(x) debe ser un
polinomio de grado menor o igual que 1 verificando ui(xi-1) = f(xi-1) y ui(xi) = f(xi)
puede concluirse que ui(x) = fi(x).
c.q.d.

Ilustremos la propiedad anterior con un ejemplo.

Ejemplo:
Determinemos la función del espacio L1(∆) que interpola sobre el soporte de
7 puntos {0,1, 2, 3, 4,5, 6} a la función f(x) definida por:

⎪⎧ ⎛ π⎞
⎪⎪⎪sen ⎜⎜⎜ x ⎟⎟⎟ si x ≤ 3
⎪ ⎝ 2⎠



f(x) = ⎪ ⎨−7 + 2x si 3 < x < 4



⎪ ⎛ ⎞
⎪⎪cos ⎜⎜ x π ⎟⎟ si 4 ≤ x

⎪⎪⎩ ⎝⎜ 2 ⎠⎟
El grafo de la función f(x) que queremos interpolar se recoge en la figura
siguiente:

12
Puede consultarse el tema anterior la interpolación polinómica de Lagrange para tener una
demostración de esta afirmación

34
Programación y Métodos Numéricos Interpolación polinómica por tramos

Calculemos la función de L1(∆) que la interpola. Para ello partimos de que


los valores nodales de f(x) son:
⎛π⎞
f0 = f(0) = sen(0) = 0, f1 = f(1) = sen ⎜⎜ ⎟⎟⎟ = 1 , f2 = f(2) = sen (π) = 0,
⎜⎝ 2 ⎠
⎛ π⎞ ⎛ π⎞
f3 = f(3) = sen ⎜⎜3 ⎟⎟⎟ = -1, f4 = f(4) = cos (2π) = 1, f5 = f(5) = cos ⎜⎜5 ⎟⎟⎟ = 0
⎜⎝ 2 ⎠ ⎜⎝ 2 ⎠
f6 = f(6) = cos (3π) = -1

Por tanto, en virtud del teorema 3 la función interpoladora que nos proporciona
u(x) puede calcularse mediante la expresión:
u(x) = 0·ϕ 0 (x) + 1·ϕ1(x) + 0·ϕ 2 (x) − 1·ϕ 3 (x) + 1·ϕ 4 (x) + 0·ϕ 5 (x) − 1·ϕ 6 (x) =
= ϕ1(x) − ϕ 3 (x) + ϕ 4 (x) − ϕ 6 (x)

Las expresiones de las funciones de la base de Lagrange, según la propiedad


4, están dadas por(13):

⎧⎪1− x si x ∈ [0,1] 1
ϕ 0 (x) = ⎪⎨
⎪⎪⎩ 0 en otro caso 0 1 2 3 4 5 6


⎪ x si x ∈ [0,1]


1
ϕ1(x) = ⎪
⎨2 − x si x ∈ [1,2]

⎪ 0 1 2 3 4 5 6

⎩0
⎪ en otro caso

13
Calculamos, para que practique el lector, las 7 funciones de base aunque en este caso nos
bastaría con calcular sólo las funciones ϕ1(x), ϕ3(x), ϕ4(x) y ϕ6(x).

35
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

⎧⎪x − 1 si x ∈ [1,2]
⎪⎪ 1
ϕ 2 (x) = ⎪⎨3 − x si x ∈ [ 2,3 ]
⎪⎪ 0 1 2 3 4 5 6
⎪⎪⎩0 en otro caso
⎧⎪x − 2 si x ∈ [ 2,3 ]
⎪⎪ 1
ϕ 3 (x) = ⎪⎨4 − x si x ∈ [3,4 ]
⎪⎪ 0 1 2 3 4 5 6
⎪⎪⎩0 en otro caso
⎧⎪x − 3 si x ∈ [3,4 ]
⎪⎪ 1
ϕ 4 (x) = ⎪⎨5 − x si x ∈ [ 4,5 ]
⎪⎪ 0 1 2 3 4 5 6
⎪⎪⎩0 en otro caso
⎧⎪x − 4 si x ∈ [ 4,5 ]
⎪⎪ 1
ϕ 5 (x) = ⎪⎨6 − x si x ∈ [5,6 ]
⎪⎪
⎪⎪⎩0 en otro caso 0 1 2 3 4 5 6

⎧⎪x − 5 si x ∈ [5,6 ] 1
ϕ 6 (x) = ⎪⎨
⎪⎪0 en otro caso 0 1 2 3 4 5

Con estas expresiones se tiene que:


u(x) = ϕ1(x) − ϕ 3 (x) + ϕ 4 (x) − ϕ 6 (x)

que operando tramo a tramo nos conduce a:

• En [0, 1]: ϕ1(x) = x , ϕ 3 (x) = ϕ 4 (x) = ϕ 6 (x) = 0 por lo que:


u(x) =x ∀ ∈ [0,1]
• En [1, 2]: ϕ1(x) = 2 − x , ϕ 3 (x) = ϕ 4 (x) = ϕ 6 (x) = 0 por lo que:
u(x) = 2 - x ∀ ∈ [1,2]
• En [2, 3]: ϕ1(x) = 0 , ϕ 3 (x) = x − 2 , ϕ 4 (x) = ϕ 6 (x) = 0 por lo que:
u(x) = 2 - x ∀ ∈ [ 2,3 ]
• En [3, 4]: ϕ1(x) = 0 , ϕ 3 (x) = 4 − x , ϕ 4 (x) = x – 3, ϕ 6 (x) = 0 por lo que:
u(x) = 2x - 7 ∀ ∈ [3,4 ]
• En [4, 5]: ϕ1(x) = ϕ 3 (x) = 0 , ϕ 4 (x) = 5 – x, ϕ 6 (x) = 0 por lo que:
u(x) = 5 - x ∀ ∈ [ 4,5 ]
• En [5, 6]: ϕ1(x) = ϕ 3 (x) = ϕ 4 (x) = 0 , ϕ 6 (x) = x − 5 por lo que:
u(x) = 5 - x ∀ ∈ [5,6 ]

Puede observase como en el intervalo [3, 4] la función interpoladora u(x) tiene


la misma expresión que la función f(x), lo cual concuerda con lo que afirma la
propiedad 6.

36
Programación y Métodos Numéricos Interpolación polinómica por tramos

Teniendo en cuenta que en los tramos [1, 2] y [2, 3] la función u(x) tiene la
misma expresión y que en [4, 5] y [5, 6] ocurre lo mismo podemos concluir que:
⎧⎪x si x ∈ [0,1]
⎪⎪
⎪⎪2 − x si x ∈ [1,3 ]
u(x) = ⎨
⎪⎪−7 + 2x si x ∈ [3,4 ]
⎪⎪
⎪⎪⎩5 − x si x ∈ [ 4,6 ]

La representación gráfica en [0, 6] de f(x) y de u(x) se recoge en la figura


siguiente:

Se deja propuesto al lector comprobar que la suma de las 7 funciones de la


base de Lagrange conduce a la función unidad en el intervalo [0, 6].

Existen formas menos laboriosas de calcular la expresión de la función
interpoladora que la que hasta aquí se ha desarrollado pues ¡al fin y al cabo
sólo se están sustituyendo tramos de la función f(x) por segmentos rectilíneos!.
De forma más precisa podemos decir que el proceso descrito en el teorema 3
nos permite calcular la función interpoladora globalmente, es decir, es una
expresión válida sobre todo el intervalo [x0, xn]. Pero si se determina la función
interpoladora localmente, es decir, “subintervalo a subintervalo” el proceso
puede simplificarse pues se reduce a calcular tramos de polinomios
interpoladores sobre soportes de dos puntos. Las propiedades siguientes
recogen dos formas de determinar la función interpoladora(14) localmente.
14
Es muy frecuente que nuestros alumnos se formen la impresión de que al usar métodos
distintos para determinar la función interpoladora las funciones que se obtienen de una u otra
forma son diferentes. En este sentido debe tenerse siempre presente que la función
interpoladora es única y que cualquiera de los métodos que se utilicen para determinarla
conducen a la misma función interpoladora.

37
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Propiedad 7.
Dado el soporte {x0, ..., xn}, denotando por fj = f(xj) ( j = 0, .., n) a los valores
que toma una función f(x) en los puntos del soporte y por:
x − xj x − x j−1
L(0j) (x) = y L(1j) (x) = (j = 1, ..., n)
x j−1 − x j x j − x j−1
a los polinomios de base de Lagrange asociados al soporte {xj-1, xj} se verifica
que las funciones de la base de Lagrange del espacio L1(∆) pueden definirse
mediante las expresiones :
⎧⎪L(1) (x) si x ∈ [ x 0 ,x1 ]
ϕ 0 (x) = ⎪⎨ 0
⎪⎪⎩ 0 en otro caso
⎧⎪L( j−1) (x) si x ∈ ⎡ x ,x ⎤

⎪ 1 ⎢⎣ j−1 j ⎥⎦

ϕ j (x) = ⎨⎪L(0j) (x) si x ∈ ⎡⎣⎢ x j ,x j+1 ⎤⎦⎥ (j = 1, ...., n-1)



⎪ 0 en otro caso


⎧⎪L(n) (x) si x ∈ [ x n−1,x n ]
ϕn (x) = ⎪⎨ 1
⎪⎪⎩ 0 en otro caso

Además la función interpoladora de Lagrange de f(x) del espacio L1(∆)


sobre el soporte {x0, ..., xn} queda definida por la expresión:

⎪ f0 ·L(1) (1)
si x ∈ I1 = [ x 0 ,x1 ]
⎪ 0 + f1·L1 (x)



⎪........................ ....



u(x) = ⎨⎪f j−1·L(0j) + fj ·L(1j) (x) si x ∈ Ij = ⎡⎢⎣ x j−1,x j ⎤⎥⎦



⎪........................ ....




⎪ f ·L(n) + fn ·L(n) 1 (x) si x ∈ In = [ xn−1,xn ]

⎩ n−1 0
Demostración:
Según las expresiones dadas para las funciones de base de Lagrange en la
propiedad 4ª las expresiones aquí dadas para ellas son inmediatas. Además,
según estas expresiones, es evidente que en Ij = [xj-1, xj] todas las funciones de
la base de Lagrange son nulas salvo las funciones ϕ j−1(x) y ϕ j (x) que, en ese
subintervalo, están dadas por:
∀x ∈ Ij = ⎡⎢⎣ x j−1,x j ⎤⎥⎦ : ϕ j−1(x) = L(0j) (x), ϕ j (x) = L(1j) (x)
por lo que:
n
∀x ∈ Ij = ⎡⎢⎣ x j−1,x j ⎤⎦⎥ : u(x) = ∑ fi ·ϕi (x) = fj−1·ϕ j−1(x) + fj ·ϕ j (x) = fj−1·L(0j) (x) + fj ·L(1j) (x)
i=0

c.q.d.

38
Programación y Métodos Numéricos Interpolación polinómica por tramos

Obsérvese que el tramo de la función interpoladora en Ij (j = 1, ..., n) puede


ser calculado, según la propiedad 7ª, utilizando la fórmula de Lagrange para
calcular el polinomio interpolador de Lagrange sobre el soporte {xj-1, xj}. Ahora
bien, según se detalló en el tema dedicado a la interpolación polinómica, el
polinomio interpolador de Lagrange también puede calcularse mediante la
fórmula de Newton. En este sentido, la propiedad que sigue proporciona las
expresiones correspondientes a calcular localmente la función interpoladora
utilizando la fórmula de interpolación de Newton.

Propiedad 8.
Dado el soporte {x0, ..., xn} y denotando por fj = f(xj) ( j = 0, .., n) a los valores
que toma una función f(x) en los puntos del soporte se verifica que la función
interpoladora de Lagrange de f(x) del espacio L1(∆) sobre el soporte {x0, ..., xn}
está dada por la expresión:
⎧⎪f + f [ x ,x ]·(x − x ) si x ∈ I1 = [ x 0 ,x1 ]
⎪⎪ 0 0 1 0
⎪⎪
⎪⎪............................ ....
⎪⎪
u(x) = ⎪⎨f j−1 + f ⎡⎣⎢ x j−1,x j ⎤⎦⎥·(x − x j−1 ) si x ∈ Ij = ⎡⎣⎢ x j−1,x j ⎤⎦⎥
⎪⎪
⎪⎪............................ ....
⎪⎪
⎪⎪
⎪⎪⎩fn−1 + f [ xn−1,xn ]·(x − xn−1 ) si x ∈ In = [ xn−1,xn ]
donde f[xj-1, xj] es la diferencia dividida de la función f(x) en los puntos {xj-1, xj}
dada por:
f(x j ) − f(x j−1 )
f ⎡⎣⎢ x j−1,x j ⎤⎦⎥ =
x −x
j j−1

Demostración:
Según las expresiones de las funciones de la base de Lagrange del
espacio L1(∆), en un intervalo cualquiera de la partición, el intervalo Ij , las
únicas funciones de base no nulas son ϕ j−1(x) y ϕ j (x) . Las expresiones de
estas funciones de base en el intervalo Ij son:
x − xj x − x j−1
∀x ∈ Ij = ⎡⎢⎣ x j−1,x j ⎤⎥⎦ : ϕ j−1(x) = , ϕ j (x) =
x −x
j−1 j x j − x j−1

por lo que la función u(x) de L1(∆) que interpola a f(x) queda definida en Ij por la
expresión:
x − xj x − x j−1
∀x ∈ Ij = ⎡⎢⎣ x j−1,x j ⎤⎥⎦ : u(x) = fj−1·ϕ j−1(x) + fj ·ϕ j (x) = f j−1· + fj ·
j−1 x −x
j jx −x
j−1

39
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Puesto que
x − xj (x − x j−1 ) + (x j−1 − x j ) x − x j−1
f j−1· = fj−1· = f j−1 − fj−1·
x j−1 − x j x j−1 − x j x j−1 − x j
podemos rescribir la expresión local de la función interpoladora como:
f −f
∀x ∈ Ij = ⎡⎢⎣ x j−1,x j ⎤⎥⎦ : u(x) = fj−1 + j j−1 (x − x j−1 )
x −x j j−1

de donde:
∀x ∈ Ij = ⎡⎢⎣ x j−1,x j ⎤⎥⎦ : u(x) = fj−1 + f ⎡⎢⎣ x j−1,x j ⎤⎥⎦·(x − x j−1 )
c.q.d.

Ocupémonos ahora del error de interpolación. Para ello denotemos por


f(x) a una cierta función y por u(x) a la función de L1(∆) que la interpola sobre el
soporte {x0, x1, ..., xn}. Puesto que los valores nodales de f(x) y de u(x) son los
mismos es obvio que en los puntos del soporte se verificará que u(xj) = f(xj) (j =
0, ..., n). Pero esta coincidencia de valor no tiene por qué producirse en
cualquier otro punto x perteneciente al intervalo [x0, xn]. El teorema siguiente
nos muestra una expresión del error local de interpolación cometido en cada
punto, vinculándolo al error de interpolación polinómica de Lagrange con
soportes de 2 puntos.

Teorema 4.
Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio
L1(∆) sobre el soporte {x0, ..., xn} y suponiendo que para algún valor del índice j
( con 1 < j < n) se verifica que f ∈ C2 ((x j−1,x j )) y que f(x) es continua por la
derecha en xj-1 y que f(x) es continua por la izquierda en xj, entonces:
f " (ξ j )
∀x ∈ ⎤⎥⎦ x j−1,x j ⎡⎢⎣ ∃ξ j =∈ ⎤⎥⎦ x j−1,x j ⎡⎢⎣ / E(x) = f(x) − u(x) = (x − x j−1 )·(x − x j )
2

Demostración:
Puesto que la expresión anterior es válida para todo punto interior al
intervalo Ij, el error (f(x) – u(x)) coincide con el error entre f(x) y el polinomio
p(j)(x) que define a la función interpoladora en el subintervalo Ij. Y como este
polinomio es el polinomio que interpola a f(x) sobre el soporte {xj-1, xj} basta con
aplicar el teorema que nos proporcionaba la expresión del error de
interpolación polinómica(15) a este caso particular.
c.q.d.

15
Vése el teorema 2 del apartado 2.2. del tema anterior dedicado a la interpolación polinómica.

40
Programación y Métodos Numéricos Interpolación polinómica por tramos

Una primera consecuencia del teorema anterior es la ratificación de la


propiedad 6ª. En efecto si en el subintervalo Ij la función f(x) tuviera una
expresión polinómica de grado menor o igual a 1, será nula su segunda
derivada en cualquier punto interior a Ij y en consecuencia el error en todo
punto de Ij es nulo. En otros términos, en ese caso la función f(x) coincidirá con
la función interpoladora en todo punto del intervalo Ij.

Pero el teorema anterior también nos permite obtener cotas locales del error
de interpolación. Algunas de ellas son las recogidas a continuación.

Corolario 1
Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio L1(∆)
sobre el soporte {x0, ..., xn} y suponiendo que para algún valor del índice j ( con
1 < j < n) se verifica que f ∈ C2 (]x j−1,x j [) y que f(x) es continua por la derecha en
xj-1 y que f(x) es continua por la izquierda en xj , entonces:
1
a) ∀x ∈ ⎤⎦⎥ x j−1,x j ⎡⎣⎢ : E(x) = f(x) − u(x) ≤ Mj · Sup (x − x j−1 )·(x − x j )
2 x∈⎤⎦⎥ x j−1,x j ⎡⎣⎢
donde Mj = Sup f "(x)
x∈⎤⎥ x j−1,x j ⎡⎢
⎦ ⎣
1
b) ∀x ∈ ⎤⎦⎥ x j−1,x j ⎡⎣⎢ : E(x) = f(x) − u(x) ≤ Mj ·h2j , donde Mj = Sup f "(x)
8 x∈⎤⎥ x j−1,x j ⎡⎢
⎦ ⎣

y hj = |xj – xj-1|.

Demostración:
a) La primera acotación es inmediata pues basta con tomar valor absoluto
en la expresión del error y sustituir el valor de |f”(ξj)| por el supremo de
|f”(x)| en el intervalo ]xj-1, xj[ y el valor de |(x-xj-1)·(x-xj)| por su supremo
en ]xj-1, xj[.

b) La segunda acotación concreta la primera. En efecto, siendo hj la


longitud del intervalo [xj-1, xj], la distancia de un punto de dicho intervalo
al extremo izquierdo xj-1 puede expresarse como α hj para algún valor de
α tal que 0 < α < 1. Con esta notación es obvio que |x – xj| = (1- α )hj y
por tanto:
|(x – xj-1)·(x - xj)| = |(x – xj-1)|·|(x - xj)| = α ·(1- α )·(hj)2
El mayor valor de |(x – xj-1)·(x - xj)| en el intervalo ]xj-1, xj[ se alcanzará
entonces para aquel valor α * que maximice el valor de la función
g( α ) = α ·(1- α ) cosa que sucede en el punto en que se anule g’( α ).
Resolviendo g’( α *) = 0 se tiene que:

41
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

1
- α * + 1 - α * = 0 ⇒ α* =
2
En ese punto g(1/2) = ¼ y por tanto:
1
∀x ∈ ⎤⎥⎦ x j−1,x j ⎡⎢⎣ : ( x − x j−1 )(
· x − x j ) ≤ h2j
4

Introduciendo este valor en la expresión de la acotación a) se obtiene


finalmente que:
1
∀x ∈ ⎤⎦⎥ x j−1,x j ⎡⎣⎢ : E(x) = f(x) − u(x) ≤ Mj ·h2j
8
c.q.d.

Obsérvese que la expresión del error local, y por tanto de las


acotaciones realizadas a partir de ella, sólo son válidas bajo las hipótesis de
regularidad de f(x) en el intervalo [xj-1, xj] que se recogen en el teorema 4 o en
su corolario. Cuando la función f(x) no verifica tales condiciones, el error debe
ser expresado como (f(x) – u(x)) y sus cotas locales deben obtenerse
maximizando el valor absoluto de dicha expresión.

De las acotaciones locales anteriores pueden extraerse acotaciones


globales sin más que considerar que la cota global del error en [x0, xn] será la
mayor de las cotas locales que se obtengan en cada intervalo. En este sentido
el corolario siguiente recoge acotaciones globales.

Corolario 2
a) Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio
L1(∆) sobre el soporte {x0, ..., xn} y suponiendo que para todo valor del
índice j ( con 1 < j < n) se verifica que f ∈ C2 (]x j−1,x j [) y que f(x) es
continua por la derecha en xj-1 y que f(x) es continua por la izquierda en
xj, entonces:
1
∀x ∈ [ x 0 ,xn ] : E(x) = f(x) − u(x) ≤ Max (Mj ·h2j )
8 1≤ j≤n
donde Mj = Sup f "(x) y hj = |xj – xj-1|.
x∈⎤⎥ x j−1,x j ⎡⎢
⎦ ⎣

b) Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio


L1(∆) sobre el soporte {x0, ..., xn} y suponiendo que para todo valor del
índice j ( con 1 < j < n) se verifica que f ∈ C2 (]x j−1,x j [) y que f(x) es
continua por la derecha en xj-1 y que f(x) es continua por la derecha en
xj, entonces:

42
Programación y Métodos Numéricos Interpolación polinómica por tramos

1
∀x ∈ [ x 0 ,xn ] :
E(x) = f(x) − u(x) ≤ M·h2
8
donde Mj = Sup f "(x) , hj = |xj – xj-1|, M = Max {Mj } y h = Max {h j } .
x∈⎤⎥ x j−1,x j ⎡⎢ 1≤ j≤n 1≤ j≤n
⎦ ⎣

c) Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio


L1(∆) sobre el soporte {x0, ..., xn} y suponiendo que f ∈ C2 (]x 0 ,xn [) y que
f(x) es continua por la derecha en x0 y que f(x) es continua por la
derecha en xn, entonces:
1
∀x ∈ [ x 0 ,xn ] : E(x) = f(x) − u(x) ≤ K·h2
8
donde K = Sup f "(x) , hj = |xj – xj-1| y h = Max {h j } .
x∈]x0 ,xn [ 1≤ j≤n

Demostración:
Las tres acotaciones realizadas son inmediatas a partir de las recogidas
en el corolario 1. Se dejan los detalles como ejercicio propuesto al lector.
c.q.d.
Ejemplos:
1º La función del espacio L1(∆) que interpola sobre el soporte de 7 puntos {0,1,
2, 3, 4,5, 6} a la función f(x) definida por:

⎪ ⎛ π⎞

⎪sen ⎜⎜ x ⎟⎟⎟ si x ≤ 3

⎪ ⎝⎜ 2 ⎠



f(x) = ⎪ ⎨−7 + 2x si 3 < x < 4




⎪ ⎛ π⎞

⎪cos ⎜⎜ x ⎟⎟⎟ si 4 ≤ x
⎪⎪⎩ ⎝⎜ 2 ⎠
es (véase uno de los ejemplos anteriores desarrollados en este apartado):

⎪ x si x ∈ [0,1]



⎪2 − x si x ∈ [1,3 ]
u(x) = ⎨

⎪−7 + 2x si x ∈ [3,4 ]


⎩5 − x

⎪ si x ∈ [ 4,6 ]
Puesto que f(x) es continua en todo punto interior a cualquiera de los
subintervalos I0 = [0, 1], I1 = [1, 2], I2 = [2, 3], I3 = [3,4], I4 = [4,5] e I5 = [5, 6] se
puede aplicar el teorema 4 para obtener que:
π2
∀x ∈ ]0,1[ ∃ξ1 / E(x) = − sen(ξ1 )·x·(x − 1)
8
2
π
∀x ∈ ]1,2[ ∃ξ 2 / E(x) = − sen(ξ 2 )·(x − 1)·(x − 2)
8

43
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

π2
∀x ∈ ]2,3[ ∃ξ3 / E(x) = − sen(ξ3 )·(x − 2)·(x − 3)
8
∀x ∈ ]3,4[ E(x) = −0·(x − 2)·(x − 3) = 0
π2
∀x ∈ ]4,5[ ∃ξ5 / E(x) = − cos(ξ5 )·(x − 4)·(x − 5)
8
π2
∀x ∈ ]5,6[ ∃ξ 6 / E(x) = − cos(ξ 6 )·(x − 5)·(x − 6)
8

Obsérvese que al ser f(x) una función polinómica de primer grado en el


intervalo ]3, 4[, el error de interpolación es nulo en dicho intervalo.

Puesto que:
⎛ ⎛ π⎞ ⎞ ⎛ ⎛ π⎞ ⎞ ⎛ ⎛ π⎞ ⎞
Sup ⎜⎜⎜ sen ⎜⎜ x ⎟⎟⎟ ⎟⎟⎟ = Sup ⎜⎜⎜ sen ⎜⎜ x ⎟⎟⎟ ⎟⎟⎟ = Sup ⎜⎜⎜ sen ⎜⎜ x ⎟⎟⎟ ⎟⎟⎟ = 1
x∈]0,1[ ⎜
⎝ ⎜⎝ 2 ⎠ ⎠⎟ x∈]1,2[ ⎝⎜ ⎜⎝ 2 ⎠ ⎠⎟ x∈]2,3[ ⎝⎜ ⎜⎝ 2 ⎠ ⎠⎟

y:
⎛ ⎛ π⎞ ⎞ ⎛ ⎛ π⎞ ⎞ ⎛ ⎛ π⎞ ⎞
Sup ⎜⎜⎜ cos ⎜⎜ x ⎟⎟⎟ ⎟⎟⎟ = Sup ⎜⎜⎜ cos ⎜⎜ x ⎟⎟⎟ ⎟⎟⎟ = Sup ⎜⎜⎜ cos ⎜⎜ x ⎟⎟⎟ ⎟⎟⎟ = 1
x∈]0,1[ ⎜
⎝ ⎜⎝ 2 ⎠ ⎠⎟ x∈]1,2[ ⎝⎜ ⎝⎜ 2 ⎠ ⎠⎟ x∈]2,3[ ⎝⎜ ⎝⎜ 2 ⎠ ⎠⎟

y la longitud de todos los subintervalos es la unidad, las expresiones locales del


error pueden acotarse aplicando el corolario 1º por:
π2 π2 π2
∀x ∈ ]0,1[ : E(x) ≤ , ∀x ∈ ]1,2[ : E(x) ≤ , ∀x ∈ ]2,3[ : E(x) ≤
32 32 32
2
π π2
∀x ∈ [3,4 ] : E(x) = 0 , ∀x ∈ ]4,5[ : E(x) ≤ , ∀x ∈ ]5,6[ : E(x) ≤
32 32

π2
Las cotas anteriores nos permiten afirmar que: ∀x ∈ [0,6 ] : E(x) ≤ .
32
Verifiquémoslo. La función de error está dada por:

⎪ ⎛ π⎞

⎪sen ⎜⎜ x ⎟⎟⎟ − x si x ∈ [0,1]

⎪ ⎝⎜ 2 ⎠


⎪ ⎛ π⎞

⎪sen ⎜⎜ x ⎟⎟⎟ − (2 − x) si x ∈ [1,3 ]
⎪ ⎜⎝ 2 ⎠
E(x) = f(x) – u(x) = ⎪


⎪⎪0
⎪ si x ∈ [3,4 ]



⎪ ⎛ ⎞

⎪cos ⎜⎜ x π ⎟⎟ − (5 − x) si x ∈ [ 4,6 ]

⎪ ⎜⎝ 2 ⎠⎟

La figura siguiente recoge las gráficas de la función f(x) y la función
interpoladora u(x) (figura de la izquierda) y la gráfica del error E(x).

44
Programación y Métodos Numéricos Interpolación polinómica por tramos

En el intervalo [0, 1] los extremos de E(x) se alcanzarán el los puntos x1*


en que se anule la primera derivada del error, es decir:
2 ⎛ 2⎞
E’(x1*) = ( π 2 ).cos(x1 * . π 2 ) − 1 = 0 ⇒ x1 * = arc cos ⎜⎜ ⎟⎟⎟
π ⎜
⎝π⎠
en donde se tiene que: E(x1*) = 0.210... < 0.211.

En el intervalo [1, 3] los extremos de E(x) se alcanzarán en los puntos x2* del
intervalo [1, 3] en los que:
2⎡ ⎛ 2 ⎞⎤
E’(x2*) = ( π 2 ).cos(x 2 * . π 2 ) + 1 = 0 ⇒ x 2 * = ⎢π ± arc cos ⎜⎜ ⎟⎟⎟⎥
π ⎢⎣ ⎝⎜ π ⎠⎥⎦
En dichos puntos se tiene que: |E(x2*)| = 0.210... < 0.211.

Finalmente en el intervalo [4, 6] los extremos de E(x) se alcanzarán en los


puntos x3* del intervalo [4, 6] en los que:

⎪ 2 ⎛ 2⎞

⎪ 4 + arcsin ⎜⎜ ⎟⎟⎟
⎪ π ⎜⎝ π ⎠
E’(x3*) = −( π 2 ).sin(x 3 * . π 2 ) + 1 = 0 ⇒ x 2 * = ⎪


⎪ 2 ⎛ 2 ⎞⎟
⎪ 6 − arcsin ⎜

⎪ π ⎜⎝ π ⎠⎟⎟


En dichos puntos se tiene que: |E(x3*)| = 0.210... < 0.211.

En resumen el máximo de la función |E(x)| en [0, 6] es 0.210 .....

La cota hallada anteriormente fue π2


32 ≈ 0.308... que, efectivamente, es
mayor que el máximo valor que toma el error.

Ejercicio resuelto:
Considérese el soporte equidistante formado por los 7 puntos:
{x0 = 0, x1 = 1, x2 = 2, x3 = 3, x4 = 4, x5 = 5, x6 = 6}

45
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

a) Denotando por ∆ a la partición del intervalo [0, 6] en los subintervalos:


∆ = { [0, 1], [1, 2] , [2, 3] , [3, 4], [4, 5], [5, 6] }

y por L1(∆) al espacio de las funciones a trozos que en cada subintervalo de la


partición ∆ pueden definirse mediante un polinomio de grado menor o igual que
1, se pide determinar las funciones ϕ5(x) y ϕ6(x) que pertenecen a la base de
Lagrange de L1(∆) asociada al soporte antes dado y que verifican ϕ5(5) = 1 y
ϕ6(6) = 1 respectivamente. También se pide representar la gráfica de ambas
funciones de base en el intervalo [0, 6].

b) Siendo {ϕi(x)}0<i<6 las 7 funciones de base de Lagrange del espacio L1(∆)


considerado en el apartado a) y que están asociadas al soporte dado {xi}0<i<6,
se pide razonar de forma detallada la veracidad o falsedad de la siguiente
expresión:
6
∀x : ∑ (i + 1)·ϕ ' (x) = 1
i= 0
i

c) Sea g(x) la función:


⎧6 − x si x < 3
g(x) = ⎨
⎩ x − 1 si x ≥ 3

y denotemos por v(x) a la función interpoladora de Lagrange de g(x) sobre el


soporte dado perteneciente al espacio L1(∆) considerado en el primer apartado.
Indíquese de forma razonada si se verifica que:

v(x) = g(x) ∀x ∈ [0,6] .

d) Sea f(x) la función f(x) = 2 + 3·x – x2. Determínese la expresión de la función


u(x) del espacio L1(∆) que interpola a f(x) y hállese una cota del error de
interpolación que sea válida en todo punto del intervalo [0, 6].

Solución:
a) ϕ5(x)
⎧ x − 4 si x ∈ [ 4,5] 1

ϕ5 (x) = ⎨6 − x si x ∈ [5,6] 0 1 2 3 4 5 6
⎪ 0 si x ∉ [ 4,6]

ϕ6(x)
⎧⎪ 0 si x ∉ [5,6] 1
ϕ6 (x) = ⎨
⎪⎩ x − 5 si x ∈ [5,6] 0 1 2 3 4 5 6

46
Programación y Métodos Numéricos Interpolación polinómica por tramos

6
b) La función ∑ (i + 1)·ϕ (x)
i =0
i es la función de L1(∆) que interpola en el sentido de

Lagrange, sobre el soporte dado, a la función (x+1). Puesto que la función


(x+1) es un polinomio de primer grado sobre toda la recta real también lo es en
cada uno de los subintervalos de la partición ∆. Por tanto (x+1) es una función
de L1(∆) lo cual garantiza, debido a la unicidad de la función interpoladora, que:
6
∀x ∈ [0,6] : ∑ (i + 1)·ϕ (x) = 1 + x
i
i=0

y por tanto, denotando por S al conjunto de los puntos del soporte, se tiene
que:
'
⎛ 6 ⎞ 6
∀x ∈ ]0,6[ / x ∉ S : ⎜ ∑ (i + 1)·ϕi (x) ⎟ = ∑ (i + 1)·ϕ 'i (x) = 1
⎝ i=0 ⎠ i= 0
En resumen la expresión dada es correcta para todos los puntos de ]0, 6[ que
no pertenezcan al soporte.

No obstante la expresión anterior no sería correcta fuera del intervalo [0,


6] pues, para 0 < i < 6, las funciones de base ϕi(x) no están definidas fuera del
intervalo de interpolación. Tampoco sería correcta la igualdad en los puntos del
soporte pues en el punto xi , para 0 < i < 6, la función de base ϕi(x) no es
derivable. En dichos puntos sólo se podría afirmar que:
'
⎛ 6 ⎞
∀x ∈ S : ⎜ ∑ (i + 1)·ϕi (x) ⎟ = 1
⎝ i=0 ⎠
c) La función g(x) es una función cuya restricción a cada uno de los
subintervalos de ∆ es un polinomio de grado menor o igual que 1. No obstante,
la función g(x) no es una función del espacio L1(∆) ya que no es continua en
todos los puntos de [0, 6]. En efecto en x = 3 se tiene que:
lim− g(x) = lim− (6 − x) = 3 ≠ lim+ g(x) = lim+ (x − 1) = 2
x →3 x →3 x →3 x →3

Puesto que la función interpoladora v(x) sí que pertenece a L1(∆) (y por tanto es
continua en todo [0, 6]) no podrá coincidir con g(x). En resumen la igualdad que
se pedía analizar en el apartado c) es falsa.

NOTA: Aunque no hace falta calcular la función v(x) para responder lo que se
pide en el ejercicio, es fácil ver que la función v(x) coincidirá con g(x) en todos
los puntos de [0, 6] salvo en los pertenecientes al intervalo [2, 3] en donde v(x)
tiene la expresión de la recta que pasa por (2, 4) y (3, 2). Más concretamente:
⎧ g(x) x ∈ [0,2] ∪ [3,6]
v(x) = ⎨
⎩8 − 2·x x ∈ [2,3]

47
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

d) Utilicemos la fórmula de Newton para calcular los tramos de la función


interpoladora. Para ello con f(x) = 2 + 3x – x2 se tiene que:
f(0) = 2
f[0, 1] = 2
f(1) = 4
f[1, 2] = 0
f(2) = 4
f[2, 3] = -2
f(3) = 2
f[3, 4] = -4
f(4) = -2
f[4 , 5] = -6
f(5) = -8
f[5, 6] = -8
f(6) = -16

Por tanto
• En [0, 1]: u(x) = 2 + 2·(x-0) = 2 + 2·x cometiéndose un error de
interpolación dado por: E1(x) = f(x) - u(x) = 2 + 3x – x2 – 2 – 2x = x – x2
cuyo máximo en [0, 1] se alcanza para x = ½ y tiene el valor ¼ .

• En [1, 2]: u(x) = 4 + 0·(x-1) = 4 cometiéndose un error de interpolación


dado por: E1(x) = f(x) - u(x) = 2 + 3x – x2 – 4 = -2 +3x – x2 cuyo máximo
en [1, 2] se alcanza para x = 3 2 y tiene el valor ¼ .

• En [2, 3]: u(x) = 4 -2·(x-2) = 8–2x cometiéndose un error de interpolación


dado por: E1(x) = f(x) - u(x) = 2 + 3x – x2 – 8 + 2x = -6 +5·x – x2 cuyo
máximo en [2, 3] se alcanza para x = 5 2 y tiene el valor ¼ .

• En [3, 4]: u(x) = 2 - 4·(x - 3) = 14 – 4x cometiéndose un error de


interpolación dado por: E1(x) = f(x) - u(x) = 2 + 3·x – x2 – 14 + 4·x =
-12 +7·x – x2 cuyo máximo en [3, 4] se alcanza para x = 7 2 y tiene el
valor ¼ .

• En [4, 5]: u(x) = -2 - 6·(x - 4) = 22 – 6x cometiéndose un error de


interpolación dado por: E1(x) = f(x) - u(x) = 2 + 3·x – x2 – 22 + 6·x =
-20 +9·x – x2 cuyo máximo en [4, 5] se alcanza para x = 9 2 y tiene el
valor ¼ .

48
Programación y Métodos Numéricos Interpolación polinómica por tramos

• En [5, 6]: u(x) = -8 - 8·(x - 5) = 32 – 8x cometiéndose un error de


interpolación dado por: E1(x) = f(x) - u(x) = 2 + 3·x – x2 – 32 + 8·x =
-30 +11·x – x2 cuyo máximo en [5, 6] se alcanza para x = 112 y tiene el
valor ¼ .

En resumen la función interpoladora buscada es:


⎧2 + 2·x si x ∈ [0,1]

⎪4 si x ∈ [1,2]
⎪⎪8 − 2·x si x ∈ [ 2,3]
u(x) = ⎨
⎪14 − 4·x si x ∈ [3,4]
⎪22 − 6·x si x ∈ [ 4,5]

⎪⎩32 − 8·x si x ∈ [5,6]

y el máximo valor que alcanza el error en [0, 6] es 0’25.

Las figuras siguientes recogen la gráfica de f(x), u(x) y de la función de error.

49
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Ejercicios propuestos:

1º. a) Determinar la función interpoladora en L1(∆) de f(x) = x2 para el soporte


de 5 puntos: { x0 = -3, x1 = 1, x2 = 0, x3 = 1, x4 = 3}.
b) Calcular y dibujar las funciones de la base de Lagrange del espacio
usado en el apartado anterior.
c) Determinar una cota del error de interpolación válida en el intervalo
[-3, 3].

2º. a) Determinar la función interpoladora de L1(∆) para la partición de [0, 2] con


los puntos de soporte {x0 = 0, x1 = ½ , x2 = 1, x3 = 3 2 , x4 = 2} de la
función f(x) = |e-x – ½ |. Hallar una cota de error válida en todo el intervalo
[0, 2].
b) Razónese si las funciones de base de Lagrange del espacio L1(∆) usado en
2
⎛ 4 ⎞
el apartado anterior verifican ∫ ⎜ ∑ i·ϕi (x) ⎟ dx = 4 .
0 ⎝ i=0 ⎠

50
Programación y Métodos Numéricos Interpolación polinómica por tramos

2.3. Interpolación de Lagrange con funciones polinómicas de segundo


grado por tramos.
Siendo k un número entero positivo, consideremos un soporte formado
por (2k+1) puntos distintos {x0, x1, ....., x2k} que supondremos ordenados de
menor a mayor. En el intervalo [x0, x2k] al que pertenecen todos los puntos del
soporte utilizaremos en todo este subapartado la partición ∆ de la forma:

∆ = {I1 = [ x 0 ,x 2 ],I2 = [ x 2 ,x 4 ],...,Ij = ⎡⎣⎢ x 2( j−1) ,x 2 j ⎤⎦⎥ ,...,Ik = ⎡⎢⎣ x 2(k−1) ,x 2k ⎤⎦⎥ }

y denotaremos por L2(∆) al espacio de Lagrange asociado a la partición ∆.


Obsérvese que a cada subintervalo Ij (j = 1, ..., k) de la partición ∆ pertenecen
los tres puntos del soporte {x2(j-1), x2j-1, x2j}. Y nótese además que dim(L2(∆)) =
2k+1. Comencemos explicitando la base de Lagrange de L2(∆) asociada al
soporte {x0, x1, ....., x2k}.

Propiedad 9.
La base de Lagrange de L2(∆) asociada al soporte {x0, x1, ....., x2k} es la
formada por las (2k+1) funciones:

⎪ ( x − x1)( x − x 2 )

⎪ si x ∈ [ x 0 ,x 2 ]

ϕ 0 (x) = ⎨( x 0 − x1)( x 0 − x 2 )




⎩ 0 en caso contrario

⎧ (x − x
2( j−1) )( x − x 2 j )

⎪⎪ ⎪⎫
si x ∈ ⎡ x 2( j−1) ,x 2 j ⎤ ⎪⎪
ϕ 2 j−1(x) = ⎪ ⎢⎣ ⎥⎦ ⎪ (j = 1, ..., k)
⎨( x 2 j−1 − x 2( j−1) )( x 2 j−1 − x 2 j ) ⎬

⎪ ⎪


⎪ 0 en caso contrario ⎪

⎩ ⎭

⎧⎪ ( x − x
2( j−1) )( x − x 2 j−1 )
⎫⎪
⎪⎪⎪ si x ∈ ⎡⎢⎣ x 2( j−1) ,x 2 j ⎤⎥⎦ ⎪


⎪⎪( x 2 j − x 2( j−1) )( x 2 j − x 2 j−1 ) ⎪⎪
⎪⎪ ⎪⎪
⎪⎪ ( x − x )( x − x ⎪⎪
2( j+1) )
ϕ 2 j (x) = ⎪⎨ si x ∈ ⎡⎢⎣ x 2 j ,x 2( j+1) ⎤⎥⎦ ⎪⎬
2 j+1
(j = 1, ..., k-1)
⎪⎪( x 2 j − x 2 j+1 )( x 2 j − x 2( j+1) ) ⎪

⎪⎪ ⎪

⎪⎪ ⎪

⎪⎪0 en caso contrario ⎪

⎪⎪ ⎪

⎩⎪ ⎪

⎧⎪ ( x − x
⎪⎪ 2(k−1) )( x − x 2k −1 )
si x ∈ ⎡⎣⎢ x 2(k−1) ,x 2k ⎤⎦⎥
ϕ 2k (x) = ⎨⎪( x 2k − x 2(k−1) )( x 2k − x 2k−1)
⎪⎪
⎪⎪ 0 en caso contrario

51
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Demostración:
Con las expresiones dadas en el enunciado se tiene que:

⎧1 si i = 0
⎪ ⎧1 si i = j
⎪ ⎧1 si i = 2k

ϕ 0 (xi ) = ⎪
⎨ , ϕ j (xi ) = ⎪
⎨ (0 < j < 2k-1), ϕ 2k (xi ) = ⎪


⎩0 si i ≠ 0
⎪ ⎪
⎩0 si i ≠ j
⎪ ⎪
⎩0 si i ≠ 2k

lim ϕ 0 (x) = 1, lim ϕ 0 (x) = 0 ( 0 < i < 2k) , lim− ϕ 0 (x) = 0


x → x+
0
x → xi x → x 2k

∀j ∈ {1,..,2k − 1} : lim ϕ j (x) = 0 ,


x → x+
0


⎪1 si i = j
lim ϕ j (x) = ⎪
⎨ (0 < i < 2k),
x → xi ⎪
⎩0 si i ≠ j

lim ϕ j (x) = 0
x → x−
2k

y:

lim ϕ 2k (x) = 0 , lim ϕ 2k (x) = 0 ( 0 < i < 2k) , lim− ϕ 2k (x) = 1


x → x+
0
x → xi x → x 2k

por lo que puede concluirse que las funciones {ϕ j (x)}


2k
son continuas en el
j=0

intervalo [x0, x2k].

Por otra parte en cada subintervalo Ii = [x2(i-1) , x2i] (i = 1, ..., k) la


expresión de todas las funciones {ϕ j (x)}
n
es un polinomio de grado 0 (caso
j=0

de que tomen en él el valor nulo) o de grado 2 (en los tramos en que no se


anulan).

Todo ello nos permite afirmar que son funciones del espacio L2(∆), y

⎪1 si i = j
además, puesto que ϕ j (xi ) = ⎪
⎨ (0 < i, j < 2k), en virtud del teorema 1

⎩0 si i ≠ j

{ϕ j (x)}j=0
n
demostrado en el subapartado 2.1., nos garantiza que las funciones

son la base de Lagrange del espacio L1(∆).


c.q.d.

52
Programación y Métodos Numéricos Interpolación polinómica por tramos

Las figuras siguientes recogen los grafos de las funciones de la base de


Lagrange.

Función ϕ 0 (x) : 1

x0 x1 x2 ... xj ... x2k

Función ϕ 2 j−1(x) ( j = 1, ..., k): 1

x0 ... x2(j-1) x2j-1 x2j x2j+1 x2(j+1) ... x2k

Función ϕ 2 j (x) ( j = 1, ..., k-1):


1

x0 ... x2(j-1) x2j-1 x2j x2j+1 x2(j+1) ... x2k

1
Función ϕ 2k (x)
x0 ....... xj ... x2(k-1) x2k-1 x2k

Obsérvese que la función ϕ j (x) es la única función de la base de


Lagrange que toma valor no nulo en el nodo xj. En ese sentido diremos que la
función ϕ j (x) es la función de la base de Lagrange de L2(∆) asociada al
nodo xj.

Ejemplo:
Determinemos las funciones de la base de Lagrange del espacio L2(∆)
asociado al soporte {0, 1, 3, 5, 6}.

La partición ∆ correspondiente a este soporte es:

∆ = { I1 = [0, 3], I2 = [3, 6]}

y las 5 funciones de la base de Lagrange están dadas por:

53
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid


⎪ ( x − 1)( x − 3) 4 1

⎪ = 1− x + x 2 si x ∈ [0,3 ]

ϕ 0 (x) = ⎨(0 − 1)(0 − 3) 3 3




⎩ 0 en caso contrario


⎪ ( x − 0)( x − 3) 3 1

⎪ = x − x2 si x ∈ [0,3 ]

ϕ1(x) = ⎨ (1− 0)(1− 3) 2 2




⎩ 0 en caso contrario

⎧⎪ ( x − 0)( x − 1) 1 1
⎪⎪ = − x + x2 si x ∈ [0,3 ]
⎪⎪ (3 − 0)(3 − 1) 6 6
ϕ 2 (x) = ⎪⎨
⎪⎪( x − 5)( x − 6) 11 1
⎪⎪ = 5 − x + x2 si x ∈ [3,6 ]
⎪⎪⎩(3 − 5)(3 − 6) 6 6


⎪ ( x − 3)( x − 6) 9 1

⎪ = −9 + x − x 2 si x ∈ [3,6 ]

ϕ 3 (x) = ⎨(5 − 3)(5 − 6) 2 2




⎩ 0 en caso contrario


⎪ ( x − 3)( x − 5) 8 1

⎪ = 5 − x + x2 si x ∈ [3,6 ]

ϕ 4 (x) = ⎨(6 − 3)(6 − 5) 3 3




⎩ 0 en caso contrario

Los grafos de estas funciones de base se recogen en la figura siguiente:

ϕ1 ϕ2 ϕ3
ϕ0 ϕ4

I1 I2

Determinada la base de Lagrange asociada al soporte {x0, ..., x2k} del


espacio L2(∆), el teorema 2 demostrado en el apartado 2.1. nos indica cómo

54
Programación y Métodos Numéricos Interpolación polinómica por tramos

calcular la función de dicho espacio que interpola en el sentido de Lagrange a


cualquier función f(x) de la que se conozcan sus valores en los puntos del
soporte. La forma de proceder para ello se concreta en el teorema siguiente:

Teorema 5.
Dado el soporte {x0, ..., x2k} y denotando por fj = f(xj) ( j = 0, .., 2k) a los
valores que toma una función f(x) en los puntos del soporte y por {ϕ j (x)}
2k
a
j=0

las funciones que forman la base de Lagrange del espacio L2(∆) que está
asociada a este soporte, se verifica que la función:

2k
u(x) = ∑ f j ·ϕ j (x)
j=0

es la única función de L2(∆) que satisface las igualdades:

u(xj) = f(xj) ( j = 0,..., 2k)

A dicha función se la denomina función interpoladora de Lagrange de f(x)


del espacio L2(∆) sobre el soporte {x0, ..., x2k}.

Demostración:
Es una consecuencia inmediata de aplicar el teorema 2 del apartado 2.1.
al espacio L2(∆).
c.q.d.

Ejemplo:
Dado el soporte {0, 1, 3, 5, 6} calculemos la función del espacio L2(∆)
correspondiente que interpola a la función f(x) = sen( π ·x/2).

Las funciones de la base de Lagrange de L2(∆) asociadas a este soporte ya


fueron calculadas en el ejemplo anterior de este apartado.

Por otra parte, los valores de la función en los puntos del soporte son los
siguientes:

f0 = sen (0) = 0, f1 = sen( π /2) = 1, f2 = sen(3· π /2) = -1,

55
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

f3 = sen(5 π /2) = 1, f4 = sen(6 π /2) = 0

Por tanto:

u(x) = 0·ϕ 0 (x) + 1·ϕ1(x) − 1·ϕ 2 (x) + 1·ϕ 3 (x) + 0·ϕ 4 (x) = ϕ1(x) − ϕ 2 (x) + ϕ 3 (x)

Detallemos el resultado de la combinación lineal que conduce a u(x). Puesto


{ϕ j (x)}j=0
4
que las funciones de base están definidas por tramos las

operaciones correspondientes deben ser realizadas tramo a tramo. Más


concretamente:

• En el intervalo I1 = [0, 3] se tiene que:

4 1 3 1 1 1
ϕ 0 (x) = 1− x + x2 , ϕ1(x) = x − x 2 , ϕ 2 (x) = − x + x 2 ,
3 3 2 2 6 6

ϕ 3 (x) = 0 y ϕ 4 (x) = 0

por lo que en dicho tramo:

3 1 ⎛ 1 1 ⎞ 5 2
u(x) = ϕ1(x) − ϕ 2 (x) + ϕ 3 (x) = x − x 2 − ⎜⎜− x + x 2 ⎟⎟⎟ = x − x 2
2 2 ⎜
⎝ 6 6 ⎠ 3 3

• En el intervalo I2 = [3, 6] se tiene que:

11 1
ϕ 0 (x) = 0 , ϕ1(x) = 0 , ϕ 2 (x) = 5 − x + x2 ,
6 6
9 1 8 1
ϕ 3 (x) = −9 + x − x2 y ϕ 4 (x) = 5 − x + x 2
2 2 3 3

por lo que en dicho tramo:

u(x) = ϕ1(x) − ϕ 2 (x) + ϕ 3 (x) =

⎛ 11 1 ⎞ ⎛ 9 1 ⎞ 19 2
= 0 − ⎜⎜5 − x + x 2 ⎟⎟⎟ + ⎜⎜−9 + x − x 2 ⎟⎟⎟ = −14 + x − x2
⎝⎜ 6 6 ⎠ ⎝⎜ 2 2 ⎠ 3 3
Resumiendo:

56
Programación y Métodos Numéricos Interpolación polinómica por tramos


⎪ 5 2

⎪ x − x2 si x ∈ [0,3 ]
⎪ 3 3
u(x) = ⎪


⎪ 19 2
⎪−14 + x − x2 si x ∈ [3,6 ]


⎩ 3 3

La representación gráfica de f(x) (en color negro) y de u(x) (su primer


tramo en azul y su segundo tramo en rojo) se recoge en la figura siguiente:

Tramo I1 Tramo I2


Puesto que el grado de todos los tramos polinómicos de las funciones de
L2(∆) es 0 ó 1 ó 2, la propiedad 3 (también demostrada en 2.1.) nos garantiza
que:
2k 2k

∑ ϕ j (x) = 1 ∀x ∈ [ x0 ,x 2k ] ,
j=0
∑ x ·ϕ (x) = x
j=0
j j ∀x ∈ [ x 0 ,x 2k ]
2k
y: ∑ x ·ϕ (x) = x
j=0
2
j j
2
∀x ∈ [ x 0 ,x 2k ]

Ambas igualdades se pueden resumir en la siguiente propiedad:

Propiedad 10.
{ϕ j (x)}j=0 las
2k
Para todo valor de los escalares α , β y γ , siendo

funciones de base del espacio L2(∆) asociadas al soporte {x0, x1, ..., x2k}, se
verifica que:
2k

∑ (α + βx
j=0
j + γx 2j )·ϕ j (x) = α + βx + γx 2 ∀x ∈ [ x 0 ,x 2k ]

Demostración:
Es una consecuencia inmediata de la propiedad 3ª demostrada en el
apartado 2.1.
c.q.d.

57
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

La propiedad anterior garantiza que las (restricciones a [x0, x2k] de las)


funciones f(x) que en [x0, x2k] sean polinomios de grado menor o igual que
2 tienen como función interpoladora en L2(∆) la misma (restricción de la )
función f(x). Es más, el teorema 5 demostrado anteriormente nos permite
afirmar que si f(x) es una función de L1(∆) su función interpoladora es ella
misma.
Aún puede refinarse más este resultado con la propiedad siguiente:

Propiedad 11.
Dado el soporte {x0, ..., x2k}, sea ∆ la partición de [x0, x2k] dada por :

∆ = {I1 = [x0, x2], ..., Ij = [x2(j-1), x2j], ..., Ik = [x2(k-1), x2k] }

y denotemos por f(x) a una función cualquiera y por u(x) a su función


interpoladora del espacio L2(∆). Considerando que estas funciones, en cada
tramo, estén definidas por las expresiones:


⎪ f1(x) si x ∈ I1 = [ x 0 ,x 2 ] ⎧
⎪u1(x) si x ∈ I1 = [ x 0 ,x 2 ]

⎪ ⎪


⎪ ⎪


⎪.... ..................... ⎪
⎪.... .....................

⎪ ⎪

f(x) = ⎪
⎨f j (x) si x ∈ Ij = ⎡⎢⎣ x 2( j−1) ,x 2 j ⎤⎥⎦ , u(x) = ⎪
⎨u j (x) si x ∈ Ij = ⎡⎢⎣ x 2( j−1) ,x 2 j ⎤⎥⎦

⎪ ⎪


⎪.... ..................... ⎪
⎪.... .....................

⎪ ⎪


⎪ ⎪

⎪ f (x) si x ∈ Ik = ⎡⎢⎣ x 2(k−1) ,x 2k ⎤⎥⎦ ⎪u (x) si x ∈ Ik = ⎡⎢⎣ x 2(k−1) ,x 2k ⎤⎥⎦

⎩k ⎪
⎩ k

si para algún valor del índice “j” tal que 1 < j < k la expresión fj(x) es un
polinomio de grado menor o igual que 2 entonces se verifica que uj(x) = fj(x).

Demostración:
Si fj(x) es un polinomio de grado menor o igual que 2 coincidirá con el
polinomio interpolador de Lagrange (16) de f(x) sobre el soporte {x2(j-1), x2j}. En
otros términos, si fj(x) es un polinomio de grado menor o igual que 2 resultará
que fj(x) es el único polinomio de grado menor o igual que 2 que verifica las tres
igualdades: fi(x2(j-1)) = f(x2(j-1)) , fi(x2j-1) = f(x2j-1) y fi(x2j) = f(x2j). Y puesto que
ui(x) debe ser un polinomio de grado menor o igual que 2 verificando que
ui(x2(j-1)) = f(x2(j-1)) , ui(x2j-1) = f(x2j-1) y ui(x2j) = f(x2j), puede concluirse que los
polinomios ui(x) y fi(x) son el mismo.

16
Puede consultarse el tema anterior la interpolación polinómica de Lagrange para tener una
demostración de esta afirmación

58
Programación y Métodos Numéricos Interpolación polinómica por tramos

c.q.d.

Ilustremos la propiedad anterior con un ejemplo.


Ejemplo:
Determinemos la función del espacio L2(∆) que interpola sobre el soporte de
7 puntos {0,1, 2, 3, 4,5, 6} a la función f(x) definida por:


⎪ 1

⎪ x si x ≤ 2

⎪ 2


f(x) = ⎪
⎨cos (πx) si 2 < x < 4





⎪25 − 10x + x 2 si 4 ≤ x


El grafo de la función f(x) que queremos interpolar se recoge en la figura


siguiente:

Calculemos la función de L2(∆) que la interpola. Para ello sabemos que los
valores nodales de f(x) son:

f0 = f(0) = 0, f1 = f(1) = ½ , f2 = f(2) = 1, f3 = f(3) = cos(3π)= -1,

f4 = f(4) = 25 – 10·4 + 42= 1, f5 = f(5) = 25 – 10·5 + 52= 0

f6 = f(6) = 25 – 10·6 + 62= 1

Por tanto, en virtud del teorema 5 la función interpoladora que nos proporciona
u(x) puede calcularse mediante la expresión:

59
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

u(x) = 0·ϕ 0 (x) + ( 12 )·ϕ1(x) + 1·ϕ 2 (x) − 1·ϕ 3 (x) + 1·ϕ 4 (x) + 0·ϕ 5 (x) + 1·ϕ 6 (x) =

= ( 12 )ϕ1(x) + ϕ 2 (x) − ϕ 3 (x) + ϕ 4 (x) + ϕ 6 (x)

Las expresiones de las funciones de la base de Lagrange, según la propiedad


9, están dadas por(17):

⎧⎪ 3
⎪⎪1− x + 1 x 2 si x ∈ [0,2] ⎧⎪2x − x 2 si x ∈ [0,2]
ϕ 0 (x) = ⎨ 2 2 , ϕ1(x) = ⎪⎨
⎪⎪ ⎪⎪⎩ 0 en otro caso
⎪⎩ 0 en otro caso

⎧⎪ 1
⎪⎪− x + 1 x 2 si x ∈ [0,2]
⎪⎪ 2 2
⎪⎪ 7 1 ⎧⎪−8 + 6x − x 2 si x ∈ [ 2,4 ]
ϕ 2 (x) = ⎪⎨6 − x + x 2 si x ∈ [ 2,4 ] , ϕ 3 (x) = ⎪⎨
⎪⎪ 2 2 ⎪⎪⎩ 0 en otro caso
⎪⎪
⎪⎪0 en otro caso
⎪⎪⎩

⎧⎪
⎪⎪3 − 5 x + 1 x 2 si x ∈ [ 2,4 ]
⎪⎪ 2 2
⎪⎪ 11 1 ⎧⎪−24 + 10x − x 2 si x ∈ [ 4,6 ]
ϕ 4 (x) = ⎪⎨15 − x + x 2 si x ∈ [ 4,6 ] , ϕ 5 (x) = ⎪⎨
⎪⎪ 2 2 ⎪⎪⎩ 0 en otro caso
⎪⎪
⎪⎪0 en otro caso
⎪⎪⎩

⎧⎪
⎪⎪10 − 9 x + 1 x 2 si x ∈ [ 4,6 ]
ϕ 6 (x) = ⎨ 2 2
⎪⎪
⎪⎩ 0 en otro caso

La figura siguiente recoge las gráficas de estas funciones de base.

17
Calculamos, para que practique el lector, las 7 funciones de base aunque en este caso nos
bastaría con calcular sólo las funciones ϕ1(x), ϕ3(x), ϕ4(x) y ϕ6(x).

60
Programación y Métodos Numéricos Interpolación polinómica por tramos

Con estas expresiones se tiene que:

u(x) = ( 12 )ϕ1(x) + ϕ 2 (x) − ϕ 3 (x) + ϕ 4 (x) + ϕ 6 (x)


que operando tramo a tramo nos conduce a:
1 1
• En [0, 2]: ϕ1(x) = 2x − x 2 , ϕ 2 (x) = − x + x 2 , ϕ 3 (x) = 0 , ϕ 4 (x) = 0 y
2 2
ϕ 6 (x) = 0 por lo que:

u(x) = x –( ½)x2 + (-½)x + ( ½)x2 = ( ½)x ∀ ∈ [ 0,2]

7 1
• En [2, 4]: ϕ1(x) = 0 , ϕ 2 (x) = 6 − x + x 2 , ϕ 3 (x) = −8 + 6x − x 2 ,
2 2
5 1
ϕ 4 (x) = 3 − x + x 2 y ϕ 6 (x) = 0 por lo que:
2 2

u(x) = (6 – (-8) +3) + ( − 7 2 − 6 − 5 2 ) x + ( 12 − ( −1) + 12 ) x 2 =

= 17 – 24x+2x2 ∀ ∈ [ 2,4 ]

11 1
• En [4, 6]: ϕ1(x) = 0 , ϕ 2 (x) = 0 , ϕ 3 (x) = 0 , ϕ 4 (x) = 15 − x + x2 , y
2 2
9 1
ϕ 6 (x) = 10 − x + x 2 por lo que:
2 2

u(x) =(15 + 10) – (112 + 9 2 ) x + ( 12 + 12 ) x 2 = 25 – 10x + x2 ∀ ∈ [ 4,6 ]

61
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Puede observase como en [0, 2] y en [4, 6] la función interpoladora u(x) tiene la


misma expresión que la función f(x), tal cual nos asegura la propiedad 11(18).

En resumen:
⎧⎪ 1
⎪⎪ x si x ∈ [0,2]
⎪⎪ 2
⎪⎪
u(x) = ⎪⎨17 − 12x + 2x 2 si x ∈ [ 2,4 ]
⎪⎪
⎪⎪
⎪⎪25 − 10x + x 2 si x ∈ [ 4,6 ]
⎪⎪⎩

La representación gráfica en [0, 6] de f(x) y de u(x) se recoge en la


figura siguiente:

Se deja al lector comprobar que la suma de las 7 funciones de la base de


Lagrange proporciona como resultado la función unidad en el intervalo [0, 6].

Al igual que se señaló en el caso de funciones polinómicas a trozos de


primer grado, existen formas menos laboriosas de calcular la expresión de la
función interpoladora. En efecto, el proceso descrito en el teorema 5 nos
proporciona una expresión global de la función interpoladora, es decir, una
expresión válida sobre todo el intervalo [x0, x2k]. Pero si se determina la función
interpoladora localmente, es decir, “subintervalo a subintervalo” el proceso
puede simplificarse pues se reduce a calcular tramos de polinomios

18
De hecho aquí hemos hallado detalladamente los tramos de la función interpoladora en [0, 2]
y en [4, 6] para ilustrar la propiedad 11. En la práctica los tramos en que f(x) sea un polinomio
de grado menor o igual que 2 no exigirían ningún cálculo para ser interpolados en L2(∆).

62
Programación y Métodos Numéricos Interpolación polinómica por tramos

interpoladores sobre soportes de tres puntos. Las propiedades siguientes


recogen dos formas de determinar la función interpoladora(19) localmente.

Propiedad 12.
Dado el soporte {x0, ..., x2k}, denotando por fj = f(xj) (j = 0, .., 2k) a los
valores que toma una función f(x) en los puntos del soporte y por
:
(x − x 2 j−1)( x − x 2 j )
L(0j) (x) = (j = 1, ..., k)
( x 2( j−1) − x 2 j−1)( x 2( j−1) − x 2 j )
( x − x 2( j−1) )( x − x 2 j )
L(1j) (x) = (j = 1, ..., k)
(x 2 j−1 − x 2( j−1) )( x 2 j−1 − x 2 j )
(x − x 2( j−1) )(x − x 2 j−1)
y L(2j) (x) = (j = 1, ..., k)
( x 2 j − x2( j−1) )( x 2 j − x 2 j−1)

a los polinomios de base de Lagrange asociados al soporte {x2(j-1), x2j-1, x2j} se


verifica que las funciones de la base de Lagrange del espacio L2(∆) pueden
definirse mediante las expresiones :

⎧⎪L(1) (x) si x ∈ [ x 0 ,x 2 ]
ϕ 0 (x) = ⎪⎨ 0
⎪⎪⎩ 0 en otro caso

⎪⎧⎪L(1j) (x) si x ∈ ⎡⎢ x 2( j−1) ,x 2 j ⎤⎥


ϕ 2 j−1(x) = ⎨ ⎣ ⎦ (j = 1, ..., k)
⎪⎪ 0 en otro caso

⎧⎪L( j−1) (x) si x ∈ ⎡ x ⎤


⎪⎪ 2 ⎢⎣ 2( j−1) ,x 2 j ⎥⎦

ϕ 2 j (x) = ⎨⎪L(0j) (x) si x ∈ ⎢⎣⎡ x 2 j ,x 2( j+1) ⎥⎦⎤ (j = 1, ...., k-1)
⎪⎪
⎪⎪0 en otro caso
⎪⎩

⎪⎧⎪L(k2 ) (x) si x ∈ ⎡⎢ x 2(k−1) ,x 2k ⎤⎥


ϕ 2k (x) = ⎨ ⎣ ⎦
⎪⎪ 0 en otro caso

19
Es muy frecuente que nuestros alumnos se formen la impresión de que al usar métodos
distintos para determinar la función interpoladora las funciones que se obtienen de una u otra
forma son diferentes. En este sentido debe tenerse siempre presente que la función
interpoladora es única y que cualquiera de los métodos que se utilicen para determinarla
conducen a la misma función interpoladora.

63
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Además la función interpoladora de Lagrange de f(x) del espacio L2(∆)


sobre el soporte {x0, ..., xn} queda definida por las expresiones:

⎧⎪f ·L(1) + f ·L(1) (x) + f ·L(1) (x) si x ∈ I1 = [ x 0 ,x 2 ]


⎪⎪ 0 0 1 1 2 2
⎪⎪
⎪⎪........................ ....
⎪⎪
u(x) = ⎪⎨f2( j−1) ·L(0j) + f2 j−1·L(1j) (x) + f2 j ·L(2j) (x) si x ∈ Ij = ⎡⎢⎣ x 2( j−1) ,x 2 j ⎤⎥⎦
⎪⎪
⎪⎪........................ ....
⎪⎪
⎪⎪
f ·L(k ) + f2k−1·L(k1 ) (x) + f2k ·L(k2 ) (x) si x ∈ Ik = ⎡⎢⎣ x 2(k−1) ,x 2k ⎤⎥⎦
⎪⎩⎪ 2(k−1) 0

Demostración:
Según las expresiones dadas para las funciones de base de Lagrange en la
propiedad 9 las expresiones aquí dadas para ellas son inmediatas.

Además, según estas expresiones, es evidente que en Ij = [x2(j-1), x2j] todas


las funciones de la base de Lagrange son nulas salvo las funciones ϕ 2( j−1) (x) ,
ϕ 2 j−1(x) y ϕ 2 j (x) que, en ese subintervalo, están dadas por:

∀x ∈ Ij = ⎡⎢⎣ x 2( j−1) ,x 2 j ⎤⎦⎥ : ϕ 2( j−1) (x) = L(0j) (x), ϕ 2 j−1(x) = L(1j) (x), ϕ 2 j (x) = L(2j) (x)

por lo que:

2k
∀x ∈ Ij = ⎡⎢⎣ x 2( j−1) ,x 2 j ⎤⎥⎦ : u(x) = ∑ fi ·ϕi (x) = f2( j−1) ·ϕ 2( j−1) (x) + f2 j−1·ϕ 2 j−1(x) + f2 j ·ϕ 2 j (x) =
i=0

= f2( j−1) ·L(0j) (x) + f2 j−1·L(1j) (x) + f2 j ·L(2j) (x)


c.q.d.

Obsérvese que el tramo de la función interpoladora en Ij (j = 1, ..., k) puede


ser calculado, según la propiedad 12ª, utilizando la fórmula de Lagrange para
calcular el polinomio interpolador de Lagrange sobre el soporte {x2(j-1), x2j-1, x2j}.
Ahora bien, según se detalló en el tema dedicado a la interpolación polinómica,
el polinomio interpolador de Lagrange también puede calcularse mediante la
fórmula de Newton. En este sentido, la propiedad que sigue proporciona las
expresiones correspondientes a calcular localmente la función interpoladora
utilizando la fórmula de interpolación de Newton.

64
Programación y Métodos Numéricos Interpolación polinómica por tramos

Propiedad 13.
Dado el soporte {x0, ..., x2k} y denotando por fj = f(xj) ( j = 0, .., 2k) a los
valores que toma una función f(x) en los puntos del soporte se verifica que la
función interpoladora de Lagrange de f(x) del espacio L2(∆) sobre el soporte {x0,
..., x2k} está dada por la expresión:

⎧⎪f + f [ x ,x ]·(x − x ) + f [ x ,x ,x ]·(x − x )·(x − x ) si x ∈ I1 = [ x 0 ,x 2 ]


⎪⎪ 0 0 1 0 0 1 2 0 1
⎪⎪
⎪⎪............................ ....
⎪⎪
u(x) = ⎪⎨f2( j−1) + f ⎡⎢⎣ x 2( j−1) ,x 2 j−1 ⎤⎥⎦·(x − x 2( j−1) ) + f ⎡⎢⎣ x 2( j−1) ,x 2 j−1,x 2 j ⎤⎥⎦·(x − x 2( j−1) )·(x − x 2 j−1 ) si x ∈ Ij = ⎡⎢⎣ x 2( j−1) ,x 2 j ⎤⎥⎦
⎪⎪
⎪⎪............................ ....
⎪⎪
⎪⎪
⎡ ⎤ ⎡ ⎤ si x ∈ Ik = ⎡⎢⎣ x 2(k −1) ,x 2k ⎤⎦⎥
⎪⎪⎩f2(k −1) + f ⎣⎢ x 2(k −1) ,x 2k −1 ⎦⎥·(x − x 2(k −1) ) + f ⎣⎢ x 2(k −1) ,x 2k −1,x 2k ⎦⎥·(x − x 2(k −1) )·(x − x 2k −1 )

donde f[x2(j-1), x2j-1] y f[x2(j-1), x2j-1, x2j] son las diferencias divididas:

f(x 2 j−1 ) − f(x 2( j−1) )


f ⎡⎣⎢ x 2( j−1) ,x 2 j−1 ⎤⎦⎥ =
x 2 j−1 − x 2( j−1)

f(x 2 j ) − f(x 2 j−1 ) f(x 2 j−1 ) − f(x 2( j−1) )



x 2 j − x 2 j−1 x 2 j−1 − x 2( j−1)
f ⎡⎢⎣ x 2( j−1) ,x 2 j−1,x 2 j ⎤⎥⎦ =
x 2 j − x 2( j−1)

Demostración:
La demostración de esta propiedad es una consecuencia inmediata de
aplicar la fórmula de Newton para el cálculo del polinomio interpolador al tramo
de la función en cada subintervalo Ij al que pertenecen los puntos {x2(j-1), x2j-1,
x2j}.
c.q.d.

Denotemos por f(x) a una cierta función y por u(x) a la función de L2(∆) que
la interpola sobre el soporte {x0, x1, ..., x2k}. Puesto que los valores nodales de
f(x) y de u(x) son los mismos es obvio que en los puntos del soporte se
verificará que u(xj) = f(xj) (j = 0, ..., 2k). Pero esta coincidencia de valor no se
producirá en general en cualquier otro punto x perteneciente al intervalo
[x0, x2k]. El teorema siguiente nos muestra una expresión del error local de
interpolación cometido en cada punto, vinculándolo al error de interpolación
polinómica de Lagrange con soportes de 3 puntos.

Teorema 6.

65
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio L2(∆)


sobre el soporte {x0, ..., x2k} y suponiendo que para algún valor del índice j ( con
1 < j < k) se verifica que f ∈ C3 ((x 2( j−1) ,x 2 j )) y que f(x) es continua por la derecha
en x2(j-1) y que f(x) es continua por la izquierda en x2j, entonces:
∀x ∈ ⎤⎥⎦ x 2( j−1) ,x 2 j ⎡⎢⎣ ∃ξ j =∈ ⎤⎥⎦ x 2( j−1) ,x 2 j ⎡⎢⎣ / E(x) = f(x) − u(x) =
f ''' ( ξ j )
= (x − x 2( j−1) )·(x − x 2 j−1 )·(x − x 2 j )
6
Demostración:
Puesto que la expresión anterior es válida para todo punto interior al
intervalo Ij, el error (f(x) – u(x)) coincide con el error entre f(x) y el polinomio
p(j)(x) que define a la función interpoladora en el subintervalo Ij. Y como este
polinomio es el polinomio que interpola a f(x) sobre el soporte {x2(j-1), x2j-1, x2j}
basta con aplicar el teorema que nos proporciona la expresión del error de
interpolación polinómica(20) a este caso particular.
c.q.d.
Una primera consecuencia del teorema anterior es la ratificación de la
propiedad 11ª. En efecto si en el subintervalo Ij la función f(x) tuviera una
expresión polinómica de grado menor o igual a 2, será nula su tercera derivada
en cualquier punto interior a Ij y en consecuencia el error en todo punto de Ij es
nulo. En otros términos, en ese caso la función f(x) coincidirá con la función
interpoladora en todo punto del intervalo Ij.

Pero el teorema anterior también nos permite obtener cotas locales del error
de interpolación. Algunas de ellas son las recogidas a continuación.

Corolario 3
Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio L2(∆)
sobre el soporte {x0, ..., x2k} y suponiendo que para algún valor del índice j ( con
1 < j < k) se verifica que f ∈ C3 ((x 2( j−1) ,x 2 j )) y que f(x) es continua por la derecha
en x2(j-1) y que f(x) es continua por la izquierda en x2j , entonces:

a)
1
∀x ∈ ⎤⎥⎦ x 2( j−1) ,x 2 j ⎡⎢⎣ : E(x) = f(x) − u(x) ≤ M j· Sup (x − x 2( j−1) )·(x − x 2 j−1)·(x − x 2 j )
6 x∈⎤⎥⎦ x 2( j−1) ,x 2 j ⎡⎢⎣
donde Mj = Sup f '''(x)
x∈⎤⎥ x 2( j−1) ,x 2 j ⎡⎢
⎦ ⎣

20
Vése el teorema 2 del apartado 2.2. del tema anterior dedicado a la interpolación polinómica.

66
Programación y Métodos Numéricos Interpolación polinómica por tramos

2
b) ∀x ∈ ⎤⎦⎥ x 2( j−1) ,x 2 j ⎡⎣⎢ : E(x) = f(x) − u(x) ≤ Mj ·h3j , donde Mj = Sup f '''(x)
81 x∈⎤⎥ x 2( j−1) ,x 2 j ⎡⎢
⎦ ⎣

y hj = |x2j – x2(j-1)|.

Demostración:
a) La primera acotación es inmediata pues basta con tomar valor absoluto
en la expresión del error y sustituir el valor de |f’’’(ξj)| por el supremo de
|f’’’(x)| en el intervalo ]x2(j-1), x2j[ y el valor de |(x-x2(j-1))·(x-x2j-1)·(x-x2j)| por
su supremo en ]x2(j-1), x2j[.

b) La segunda acotación concreta la primera especificando una cota de


|(x-x2(j-1))·(x-x2j-1)·(x-x2j)|. En efecto, dicha cota se busca para x diferente
a los puntos del soporte (pues en ellos la expresión que se quiere acotar
se anula) y denotando por hj a la longitud del intervalo [x2(j-1), x2j], y a la
distancia del punto x de dicho intervalo al extremo izquierdo x2(j-1) por
α hj donde α es algún valor tal que 0 < α < 1. Con esta notación es
obvio que |x – x2j| = (1- α )hj. En cuanto a la distancia de x al punto del
soporte interior, x2j-1, es evidente que se verificará, una de las dos
desigualdades siguientes:
b-1ª) Si x > x2j-1 entonces |x – x2j-1| < α hj por lo que:
|(x-x2(j-1))·(x-x2j-1)·(x-x2j)| ≤ α·α·(1 − α )h3j = α 2 ·(1 − α )h3j

Los extremos de la función g(α ) = α 2 ·(1 − α ) se alcanzan para los


valores α * tales que g'(α*) = 0 , es decir:
⎧ α* = 0
2α *·(1 − α *) − ( α * ) = 0 ⇒ ⎨
2

⎩α * = 2 3
La solución nula no presenta interés (conduce a un punto x que
coincide con x2(j-1) en donde ya sabemos que el error que es nulo)
mientras que la otra solución nos permite escribir que:
41 4 3
|(x-x2(j-1))·(x-x2j-1)·(x-x2j)| ≤ α 2 ·(1 − α )h3j ≤ · ·h3j = hj
93 27

b-2ª) Si x < x2j-1 entonces |x – x2j-1| < (1−α ) hj por lo que:


|(x-x2(j-1))·(x-x2j-1)·(x-x2j)| ≤ α·(1 − α )·(1 − α )h3j = α·(1 − α )2 h3j

Los extremos de la función g(α ) = α·(1 − α )2 se alcanzan para los


valores α * tales que g'(α*) = 0 , es decir:
⎧ α* = 1
(1 − α*)2 − 2·α *·(1 − α * ) = 0 ⇒ ⎨
⎩α * = 13

67
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

La solución unidad no presenta interés (conduce a un punto x que


coincide con x2j en donde ya sabemos que el error es nulo) mientras
que la otra solución nos permite escribir que:
14 4 3
|(x-x2(j-1))·(x-x2j-1)·(x-x2j)| ≤ α·(1 − α )2 h3j ≤ · ·h3j = hj
39 27
En ambos casos:
4 3
∀x ∈ ⎤⎦ x 2( j−1) ,x 2 j ⎡⎣ : |(x-x2(j-1))·(x-x2j-1)·(x-x2j)| ≤ hj
27
Introduciendo esta desigualdad en la expresión de la acotación a) se
obtiene finalmente que:

2
∀x ∈ ⎤⎥⎦ x j−1,x j ⎡⎢⎣ : E(x) = f(x) − u(x) ≤ Mj ·h3j
81
c.q.d.
Obsérvese que la expresión del error local, y por tanto de las
acotaciones realizadas a partir de ella, sólo son válidas bajo las hipótesis de
regularidad de f(x) en el intervalo [xj-1, xj] que se recogen en el teorema 4 o en
su corolario. Cuando la función f(x) no verifica tales condiciones, el error debe
ser expresado como (f(x) – u(x)) y sus cotas locales deben obtenerse
maximizando el valor absoluto de esta expresión.

De las acotaciones locales anteriores pueden extraerse acotaciones


globales sin más que considerar que la cota del error global en [x0, xn] será la
mayor de las cotas locales que se obtengan en cada intervalo. En este sentido
el corolario siguiente recoge acotaciones globales.

Corolario 4
a) Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio
L2(∆) sobre el soporte {x0, ..., x2k} y suponiendo que para todo valor del
índice j ( con 1 < j < k) se verifica que f ∈ C3 ((x 2( j−1) ,x 2 j )) y que f(x) es
continua por la derecha en x2(j-1) y que f(x) es continua por la izquierda
en x2j, entonces:
2
∀x ∈ [ x 0 ,x 2k ] : E(x) = f(x) − u(x) ≤ Max (Mj ·h3j )
81 1≤ j≤k
donde Mj = Sup f '''(x) y hj = |x2j – x2(j-1)|.
x∈⎤⎥ x 2( j−1) ,x 2 j ⎡⎢
⎦ ⎣

b) Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio


L2(∆) sobre el soporte {x0, ..., x2k} y suponiendo que para todo valor del
índice j ( con 1 < j < k) se verifica que f ∈ C3 ((x 2( j−1) ,x 2 j )) y que f(x) es

68
Programación y Métodos Numéricos Interpolación polinómica por tramos

continua por la derecha en x2(j-1) y que f(x) es continua por la izquierda


en x2j, entonces:
2
∀x ∈ [ x 0 ,x 2k ] : E(x) = f(x) − u(x) ≤ M·h3
81
donde Mj = Sup f '''(x) , hj =|x2j–x2(j-1)|, M = Max {Mj } y h = Max {h j } .
x∈⎤⎥ x 2( j−1) ,x 2 j ⎡⎢ 1≤ j≤k 1≤ j≤k
⎦ ⎣

c) Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio


L2(∆) sobre el soporte {x0, ..., x2k} y suponiendo que f ∈ C3 (]x 0 ,x 2k [) y
que f(x) es continua por la derecha en x0 y que f(x) es continua por la
izquierda en x2k, entonces:
2
∀x ∈ [ x 0 ,x 2k ] : E(x) = f(x) − u(x) ≤ M·h3
81

donde M = Sup f '''(x) , hj = |x2j – x2(j-1)| y h = Max {h j } .


x∈]x0 ,x 2k [ 1≤ j≤k

Demostración:
Las tres acotaciones realizadas son inmediatas a partir de las recogidas
en el corolario 3. Se dejan los detalles como ejercicio propuesto al lector.
c.q.d.

Ejemplos:
1º La función del espacio L2(∆) que interpola sobre el soporte de 7 puntos
{x0 = 0, x1 = 1, x2 = 2, x3 = 3, x4 = 4, x5 = 5, x6 = 6} a la función f(x) definida por:
⎧⎪ 1
⎪⎪⎪ 2 x si x ≤ 2
⎪⎪

f(x) = ⎪⎨cos (πx) si 2 < x < 4
⎪⎪
⎪⎪
⎪⎪25 − 10x + x 2 si 4 ≤ x
⎪⎪⎩
es (véase uno de los ejemplos anteriores desarrollados en este apartado):
⎧⎪ 1
⎪⎪ x si x ∈ [0,2]
⎪⎪ 2
⎪⎪
u(x) = ⎪⎨17 − 12x + 2x 2 si x ∈ [ 2,4 ]
⎪⎪
⎪⎪
⎪⎪25 − 10x + x 2 si x ∈ [ 4,6 ]
⎪⎪⎩
Puesto que f(x) es continua en todo punto interior a cualquiera de los
subintervalos I0 = [0, 2], I1 = [2, 4] e I2 = [4, 6], se puede aplicar el teorema 6
para obtener que:

69
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

∀x ∈ ]0,2[ : E(x) = 0

−π3 sin(πξ)
∀x ∈ ]2,4[ ∃ξ / E(x) = ·(x − 2)·(x − 3)·(x − 4)
6

∀x ∈ ]4,6[ : E(x) = 0
Obsérvese que en los intervalos ]0, 2[ y ]4, 6[, al ser f(x) en él una función
polinómica de grado menor o igual a 2, el error de interpolación es nulo.

Puesto que:
Sup ( sen ( xπ) ) = 1
x∈]2,4[

y que la longitud de todos los subintervalos es 2, las expresión local del error
en ]2, 4[ puede acotarse por:
2 16 3
∀x ∈ ]2,4[ : E(x) ≤ π3 ·23 = π
81 81

Y dado que en los demás subintervalos el error es nulo, puede afirmarse que:
16
∀x ∈ [0,6 ] : E(x) ≤ π3 .
81

Verifiquémoslo. La función de error en ]2, 4[ está dada por:

E(x) = f(x) – u(x) = cos(πx) – 17+ 12x – 2x2

La figura siguiente recoge las gráficas de la función f(x) y la función


interpoladora u(x) (figura de la izquierda) y la gráfica del error E(x).

70
Programación y Métodos Numéricos Interpolación polinómica por tramos

En el intervalo [2, 4] los extremos de E(x) se alcanzarán en los puntos21


en que se anule la primera derivada del error, es decir:

x1* = 2.32733971... , x *2 = 3 , y x 3* = 3.67266028...

en donde se tiene que:

E(x1*) = 0.611273... < 0.612, E(x2*) = 0 y E(x3*) = 0.611273... < 0.612

En resumen el máximo de la función |E(x)| en [0, 6] es 0.6112....

La cota hallada anteriormente fue 16·π3


81 ≈ 6.124... que, efectivamente, es
mayor que el máximo valor que toma el error.

Ejercicios resueltos:
1º. Considérese el soporte equidistante formado por los 7 puntos:

S = {x0 = 0, x1 = 1, x2 = 2, x3 = 3, x4 = 4, x5 = 5, x6 = 6}

a) Denotando por ∆ a la partición del intervalo [0, 6] en los 3 subintervalos:

∆ = { [0, 2], [2, 4] , [4, 6] }

y por L2(∆) al espacio de las funciones continuas definidas por tramos en cada
subintervalo de la partición ∆ mediante un polinomio de grado menor o igual
que 2, determínese las funciones ϕ2(x) y ϕ5(x) que pertenecen a la base de
Lagrange de L2(∆) asociada al soporte S y que verifican ϕ2(2) = 1 y ϕ5(5) = 1
respectivamente. Represéntese la gráfica de ambas funciones de base en el
intervalo [0, 6].

b) Siendo {ϕi(x)}0<i<6 las 7 funciones de base de Lagrange del espacio L2(∆)que


están asociadas al soporte S, razónese de forma detallada la veracidad o
falsedad de la siguiente expresión:
6
⎛ 6 2 ⎞
∫0 ⎜⎝ ∑
i=0
i ·ϕi (x) ⎟ dx = 72

21
Se deja como ejercicio propuesto al lector aplicar alguno de los métodos de resolución de
ecuaciones vistos en otros temas de la asignatura para determinar los puntos en que el Error
toma sus valores extremos.

71
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

c) Siendo f(x) la función:


⎧2 − 10·x + 4·x 2 si x ≤ 2
f(x) = ⎨
⎩ 14 − 2·x si x > 2

determínese la función u(x) del espacio L2(∆) considerado en el primer


apartado que interpola a f(x) sobre el soporte S. Asimismo dedúzcase de forma
razonada una cota del error de interpolación válida para todos los puntos del
intervalo [0, 6].

Solución:
⎧ x(x − 1)
⎪ si x ∈ [0,2]
2

⎪ (x − 3)(x − 4) ⎧⎪(x − 4)(6 − x) x ∈ [ 4,6]
a) ϕ2 (x) = ⎨ si x ∈ [ 2,4] ϕ5 (x) = ⎨
⎪ 2 ⎪⎩0 x ∉ [ 4,6]
⎪ 0 si x ∉ [0,4]

ϕ2(x) ϕ5(x)

Gráficas de las funciones de base pedidas

b) En primer lugar observemos que con el soporte S dado puede escribirse


que:
6 6
v(x) = ∑ i2 ·ϕi (x) = ∑ xi2 ·ϕi (x)
i= 0 i=0

72
Programación y Métodos Numéricos Interpolación polinómica por tramos

La expresión anterior se corresponde con la función de L2(∆) que interpola


sobre el soporte S a la función f(x) = x2. Pero la propia función f(x) = x2
pertenece al espacio L2(∆) (ya que evidentemente es una función continua y en
cada uno de los tramos de ∆ es un polinomio de segundo grado). Por tanto
v(x) ≡ f(x) ∀x ∈ [0,6] lo que implica que:

6 6
⎛ 6 2 ⎞ 1
∫0 ⎜⎝ ∑
i=0
i ·ϕi (x) ⎟ dx = ∫ x 2dx = 63 = 72
⎠ 0
3

En resumen la expresión dada es correcta.

c) La función f(x) es una función cuya restricción al intervalo [0, 6] puede


definirse en cada uno de los subintervalos de ∆ por un polinomio de grado
menor o igual que 2. No obstante, la función f(x) no es una función del espacio
L2(∆) ya que no es una función continua en [0, 6] pues:

lim f(x) = lim− (2 − 10x + 4x 2 ) = −2 ≠ lim+ f(x) = lim+ (14 − 2x) = 10


x → 2− x →2 x →2 x →2

La función interpoladora u(x) coincidirá con la expresión de f(x) en el intervalo


[0,2] y en el intervalo [4, 6]. Por tanto en dichos intervalos el error de
interpolación será nulo. En el intervalo [2, 4] la función es continua en todos
sus puntos interiores pero no es continua por la derecha en el extremo
izquierdo x = 2 ( en dicho punto la función toma el valor –2 mientras que su
límite por la derecha es 10). Por ello no son aplicables a dicho intervalo ni el
teorema 6 ni sus corolarios 3 y 4 que trataban sobre el error de este tipo de
interpolación. El error de interpolación deberemos tratarlo entonces
determinando la función de error como E(x) = f(x) – u(x). Para ello, en el
intervalo [2, 4], con el soporte {2, 3, 4} se tiene que:

f(2) = -2, f(3) = 8, f(4) = 6

por lo que la tabla de diferencias divididas correspondiente es:

xi fi f[,] f[,,]
2→ −2 → 10 → −6
3 → 8 → −2
4→ 6

73
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

siendo el polinomio interpolador en este tramo:


-2 +10(x-2) –6(x-2)(x-3) = -58 + 40x – 6x2

por lo que la función interpoladora es:


⎧ 2 − 10x + 4x 2 x ∈ [0,2]

u(x) = ⎨−58 + 40x − 6x 2 x ∈ [2,4]
⎪ 14 − 2x x ∈ [ 4,6]

De esta forma, en el subintervalo ]2, 4[ el error de interpolación está dado por:


E(x) = (14 – 2x) – (-58 + 40x – 6x2) = 6x2 – 42x + 72

Este error de interpolación tiene un punto crítico en la abscisa para la que se


anula E’(x) es decir en x* = 42 / 12 = 3.5. En dicho punto E(x) = -1.5.

Por otra parte cuando x tiende a los extremos del intervalo ]2, 4[ se tiene que:

lim+ E(x) = lim+ ( 6x 2 − 42x + 72 ) = 12


x →2 x →2

lim E(x) = lim− ( 6x 2 − 42x + 72 ) = 0


x → 4− x→4

Comparando el valor supremo del error con su valor mínimo, podemos concluir
que la cota de error de interpolación buscada es:
|E(x)| < 12 ∀x ∈ [0,6]

La figura siguiente recoge la gráfica del valor absoluto de la función de error:

74
Programación y Métodos Numéricos Interpolación polinómica por tramos

2º. La deformación transversal w(x) de una viga doblemente empotrada sobre


la que actúa una fuerza constante f viene dada por la función:
2M0 - f.L2 2 f.L2 3 f
w(x) = x + x - x4
4.b 6.b 24.b
donde L es la longitud de la viga, b es la resistencia a la flexión (producto del
módulo de elasticidad por el momento de inercia) y M0 es el momento flector en
el extremo izquierdo de la viga. En un cierto sistema de unidades y para una
viga determinada los valores de los parámetros anteriores son:
M0 = 4, f = 2, b = 1, L = 6
Siendo u(x) la función polinómica a trozos de segundo grado que interpola a
12
w(x) sobre un soporte de 13 puntos equidistantes {x i }i=0 , tales que se verifica:
0 = x0 < x1 < x2 < ..... < x12 = L
se pide:
a) evalúese el error que se comete en la interpolación realizada en el punto
11·L
x* = .
24
b) Obténgase una cota del error de interpolación válida en todo [0, L]

Solución:
a) Con los datos del problema x* = 11·L/26 = 11·6/24 = 11/4. Además la
distancia entre dos puntos consecutivos del soporte será:
L 6 1
H= = =
n 12 2
por lo que los 13 puntos del soporte son:
{x0 = 0, x1 = 12 , x 2 = 1, x3 = 3 2 , x 4 = 2, x5 = 5 2 , x 6 = 3,
x 7 = 7 2 , x 8 = 4, x 9 = 9 2 , x10 = 5, x11 = 112 , x12 = 6}

y la partición de [0, 6] a considerar es:


∆ = {I1 = [0,1], I2 = [1,2], I3 = [ 2,3], I4 = [3,4], I5 = [ 4,5], I6 = [5,6]}

75
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Puesto que lo único que se pide es el error cometido en x* = 11/4 y este


punto pertenece al subintervalo I3 = [2, 3], será suficiente con determinar el
polinomio de grado no mayor que 2 que define a la función u(x) de L2(∆) que
interpola a w(x) en el intervalo [2, 3]. Para ello sabemos que, con los datos del
enunciado, w(x) = -16·x2 + 12·x3 – (1/12)·x4 y por tanto:

w4 = w(x4) = w(2) = 92
3

16175 92

w[x4, x5] = 192 3 = 3429
1 32
2
w5 = w(x5) = w( 5 2 ) = 16175
192

693 16175

w[x5, x6] = 4 192 = 17089
1 96
2
w6 = w(x6) = w(3) = 693
4

17089 3429

w[x4, x5, x6] = 96 32 = 3401
1 48

Ello, utilizando la fórmula de Newton para el cálculo del polinomio interpolador,


nos conduce a que:
92 3429 3401
∀ ∈ I3 = [ 2,3] : u(x) = + (x − 2) + (x − 2)·( x − 5 2 )
3 32 48

En particular en x* se verifica que:

92 3429 11 3401 11 95477


u* = u ( 114 ) = + ( 4 − 2) + ( 4 − 2 )·(114 − 5 2 ) =
3 32 48 768

380303
Finalmente, como w ( 114 ) = se tiene que el error de interpolación en x*
3072
es:
535
E ( 114 ) = w ( 114 ) − u ( 114 ) = − = −0.52246....
1024

b) Para obtener una cota del error de interpolación válida en el intervalo [0, 6]
puede procederse a

76
Programación y Métodos Numéricos Interpolación polinómica por tramos

• calcular todos los tramos de la función interpoladora u(x) y tras ello


obtener el máximo en [0, 6] de la función |E(x)| = |w(x) – u(x)| o,

• sin necesidad de calcular la función u(x) y puesto que w(x) es una


función de clase C3( R ), aplicar la última de las expresiones de acotación
del error presentadas en el corolario 4.

Siguiendo este último camino se tiene que:

w(x) = -16·x2 + 12·x3 – (1/12)·x4 Æ w’(x)= -32·x + 36·x2 – (1/3)·x3 Æ

Æ w”(x)= -32 + 72·x –x2 Æ w’’’(x)= 72 –2x

por lo que: M = Sup ( w '''(x) ) = 72 .


x∈]0,6[

Ello unido a que la longitud de todos los subintervalos de la partición es la


unidad nos lleva a que:

2 2 144
∀x ∈ [0,6 ] : E(x) = f(x) − u(x) ≤ M·h3 = ·72·1 = = 1.7777....
81 81 81

Ejercicios propuestos:
1º. a) Determinar la función interpoladora en L2(∆) de f(x) = 1/(1+x2) para el
soporte de 5 puntos: {-3, 1, 0, 1, 3}.

b) Calcular y dibujar las funciones de la base de Lagrange del espacio


usado en el apartado anterior.

c) Determinar una cota del error de interpolación válida en todo [-3, 3].

2º. a) Determinar la función interpoladora de L2(∆) para la partición de [0, 2] con


los puntos de soporte {0, ½ , 1, 3 2 , 2} de la función f(x) = |e-x – ½ |. Hallar una
cota de error válida en todo el intervalo [0, 2]. Comparar los resultados con los
obtenidos en el 2º ejercicio propuesto del apartado 2.2.

77
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

b) Razónese si las funciones de base de Lagrange del espacio L2(∆) usado en


4
el apartado anterior verifican ∑ i·ϕ ' (x) = 2
i ∀x ∈ [0,2] .
i=0

3º. Demuestra, a apartir del teorema 6, el siguiente corolario:

Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio L2(∆)


sobre el soporte {x0, ..., x2k} y suponiendo que para algún valor del índice j ( con
1 < j < k) se verifica que f ∈ C3 ((x 2( j−1) ,x 2 j )) , que f(x) es continua por la
derecha en x2(j-1) , que f(x) es continua por la izquierda en x2j , y que
(x2j – x2j-1) = (x2j-1 – x2(j-1)) entonces:

2
∀x ∈ ⎤⎦⎥ x 2( j−1) ,x 2 j ⎡⎣⎢ : E(x) = f(x) − u(x) ≤ Mj ·h3j ,
72 3

donde Mj = Sup f '''(x) y hj = |x2j – x2(j-1)|.


x∈⎤⎥ x 2( j−1) ,x 2 j ⎡⎢
⎦ ⎣

78
Programación y Métodos Numéricos Interpolación polinómica por tramos

2.4. Interpolación de Lagrange con funciones polinómicas por tramos:


caso general.
Ocupémonos ahora de generalizar el proceso de interpolación por
tramos que, en los dos subapartados anteriores, se realizó en los espacios
L1(∆) y L2(∆). Para ello siendo k un entero positivo, y dados k enteros positivos
m1, m2, ... y mk, tales que su suma sea n, supondremos que en el soporte {x0,
..., xn} hay (m1 + m2 + ... + mk +1) = (n+1) puntos distintos y ordenados de
menor a mayor, escribiéndolo según convenga, al igual que se hizo en el
subapartado 2.1., con alguna de las tres notaciones equivalentes siguientes:

{x , x ,...,x
0 1 m1 ,xm1 +1,....,xm1 +m2 , xm1 +m2 +1,..., xm1 +m2 +m3 ,......, xm1 +m2 +...+mk−1 ,xm1 +m2 +...+mk−1 +1,...,xm1 +m2 +...+mk−1 +mk }

{x 0,1 ,x1,1,...,xm1,1,x1,2 ,...,xm2 ,2 ,x1,3 ,...,xm3 ,3 ,.....,xmk−1,k−1,x1,k ,...,xmk ,k }

{x 0,1,x1,1,...,x 0,2 ,x1,2 ,...,x 0,3 ,x1,3 ,...,x 0,4 ,.....,x 0,k−1,x1,k ,...,xmk ,k }

Con esta notación designaremos en todo este subapartado por ∆ a la


partición del intervalo [ x 0 ,x n ] en los k subintervalos Ij = ⎡⎢ x 0,j ,xm j ,j ⎤⎥ (j = 1, ..., k).
⎣ ⎦
De esta manera al subintervalo Ij pertenecen (mj + 1) puntos del soporte.

Además, para aligerar la notación, denotaremos simplemente por L(∆) al


espacio Lm1,m2 ,..,mk (∆) , formado por todas las funciones continuas en el intervalo
[ x 0 ,xn ] tales que en cada intervalo Ij (j = 1, ..., k) tienen una expresión
polinómica de grado menor o igual a mj.

Puesto que, para cada valor entero del


índice “j” comprendido entre 1 y k, al intervalo
Ij = ⎡⎢ x 0,j , x m j ,j ⎤⎥ pertenecen los (mj + 1) puntos del
⎣ ⎦ xm
j-1
,j-1 xm j+1,j+1
soporte {x 0,j , x1,j , ...., xmj ,j } pueden definirse los
x0,j x1,j xm ,j
j
polinomios de la base de Lagrange asociados a
Ij
estos puntos. Tales polinomios los denotaremos
por:
mj
( x − x s,j )
Li (x) = ∏
( j)
(i = 0, ..., mj)
s=0 ( x i,j − x s,j )
m≠i

79
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Con esta notación el teorema siguiente explicita las expresiones de las


funciones de base de Lagrange del espacio L(∆).

Propiedad 14
Con la notación introducida anteriormente, la base de Lagrange de L(∆)
asociada al soporte {x 0 , x1, ..., x m1 , ..., xm1+m2 , ......, xm1+m2 +...+mk } está formada por
las (m1 + m2 + ... + mk + 1) funciones siguientes:

⎧⎪L(1) (x) si x ∈ I1
ϕ 0 (x) = ⎪⎨ 0
⎪⎪⎩ 0 en otro caso

⎧⎪L(i j) (x) si x ∈ Ij
∀s / x s ≡ xi,j con 0 < i < m j : ϕ s (x) = ⎪⎨ (j = 1, ..., k)
⎪⎪ 0 en otro caso

⎧⎪L( j) (x) si x ∈ I ⎫

⎪⎪ m j j ⎪

⎪ ( j+1)
⎪ ⎪

∀s / x s ≡ xm j ,j : ϕ s (x) = ⎨L0 (x) si x ∈ Ij+1 ⎬ (j = 1, ..., k-1)
⎪⎪ ⎪

⎪⎪0 en otro caso⎪

⎩⎪ ⎪

⎧⎪L(km) (x) si x ∈ Ik
ϕn (x) = ⎪⎨ k
⎪⎪ 0 en otro caso

Demostración:
{ϕ j (x)}j=0
n
Al estar definidas las funciones anteriores a partir de los

polinomios de base de Lagrange asociados al número de puntos de soporte


existentes en cada subintervalo es evidente que toda función de base es sobre
cualquier subintervalo Ij o bien la función nula o bien un polinomio de grado
menor o igual que mj. En resumen el tramo de cada función de base en Ij es un
polinomio de grado menor o igual que mj. Por otra parte si xs no es un nodo
común a dos subintervalos, ϕ s (x) será una función que coincide con un
polinomio que se anula en los extremos del intervalo al que pertenezca el nodo
xs y será nula fuera de dicho subintervalo. Por tanto en ese caso ϕ s (x) es
continua. Y si xs es un nodo común a los subintervalos Ij e Ij+1, entonces
ϕ s (x) será una función que coincide con un polinomio que se anula en el
extremo izquierdo de Ij y en el extremo derecho de Ij+1, tomando valor unidad
en el extremo común de ambos intervalos, y anulándose en los demás
subintervalos. Por tanto también en ese caso ϕ s (x) es continua.

80
Programación y Métodos Numéricos Interpolación polinómica por tramos

Por tanto las funciones {ϕ j (x)}


n
son (n+1) funciones de L(∆). Además,
j=0

según se han definido, verifican que si xs = xi,j:

ϕ s (x s ) = L(i j) (x i,j ) = 1 , ϕ s (xr ) = 0 si s ≠ r

Por tanto, en virtud del teorema 1 demostrado en el apartado 2.1., puede


concluirse que {ϕ j (x)}
n
forman la base de Lagrange de L(∆).
j=0

c.q.d.

Ejemplo:
Si se considera el soporte {0, 1, 2, 3, 4, 5, 6, 7, 8} y la partición del intervalo
[0, 8] dada por:
∆ = {[0, 3] , [3, 4], [4, 8] }

denotaremos por L(∆) al espacio L3,1,4(∆) formado por las funciones continuas
en ]0, 8[ y tales que en [0, 3] están definidas por algún polinomio de grado
menor o igual que 3, en [3, 4] por algún polinomio de grado no superior a 1 y
en [4, 8] por polinomios de grado menor o igual que 4.

En el intervalo I1 = [0, 3], al que pertenecen los puntos del soporte {0, 1, 2, 3}
consideramos los polinomios de base de Lagrange:

( x − 1)(· x − 2)(· x − 3) −1 3 2 11
L(1)
0 (x) = = x + x − x +1
(0 − 1)(· 0 − 2)(· 0 − 3) 6 6

( x − 0)(· x − 2)(· x − 3) 1 3 5 2
L(1)
1 (x) = = x − x + 3x
(1− 0)(· 1− 2)(· 1− 3) 2 2

( x − 0)(· x − 1)(· x − 3) 1 3
L(1)
2 (x) = = − x 3 + 2x 2 − x
(2 − 0)(· 2 − 1)(· 2 − 3) 2 2

( x − 0)(· x − 1)(· x − 2) 1 3 1 2 1
L(1)
3 (x) = = x − x + x
(3 − 0)(· 3 − 1)(· 3 − 2) 6 2 3

81
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

En el intervalo I2 = [3, 4], al que pertenecen los puntos del soporte {3, 4}
consideramos los polinomios de base de Lagrange:

( x − 4)
L(2)
0 (x) = = −x + 4
(3 − 4)

( x − 3)
L(2)
1 (x) = = x −3
(4 − 3)

En el intervalo I3 = [4, 8], al que pertenecen los puntos del soporte {4, 5, 6, 7, 8}
consideramos los polinomios de base de Lagrange:

( x − 5)(· x − 6)(· x − 7)(· x − 8) 1 4 13 3 251 2 533


L(3)
0 (x) = = x − x + x − x + 70
(4 − 5)(· 4 − 6)(· 4 − 7)(· 4 − 8) 24 12 24 12
( x − 4)(· x − 6)(· x − 7)(· x − 8) 1 25 3 115 2 460
L(3)
1 (x) = = − x4 + x − x + x − 224
(5 − 4)(· 5 − 6)(· 5 − 7)(· 5 − 8) 6 6 3 3
( x − 4)(· x − 5)(· x − 7)(· x − 8) 1 4 211 2
L(3)
2 (x) = = x − 6x 3 + x − 201x + 280
(6 − 4)(· 6 − 5)(· 6 − 7)(· 6 − 8) 4 4
( x − 4)(· x − 5)(· x − 6)(· x − 8) 1 23 3 97 2 356
L(3)
3 (x) = = − x4 + x − x + x − 160
(7 − 4)(· 7 − 5)(· 7 − 6)(· 7 − 8) 6 6 3 3
( x − 4)(· x − 5)(· x − 6)(· x − 7) 1 4 11 3 179 2 319
L(3)
4 (x) = = x − x + x − x + 35
(8 − 4)(· 8 − 5)(· 8 − 6)(· 8 − 7) 24 12 24 12

82
Programación y Métodos Numéricos Interpolación polinómica por tramos

Con ayuda de estos polinomios de base podemos definir las funciones de la


base de Lagrange de L(∆) como sigue:

⎧⎪ (1)
⎪⎪L0 (x) = − 1 x 3 + x 2 − 11 x + 1 si x ∈ [0,3 ]
ϕ 0 (x) = ⎨ 6 6
⎪⎪
⎪⎩ 0 en otro caso

⎧⎪ (1)
⎪⎪L1 (x) = 1 x 3 − 5 x 2 + 3x si x ∈ [0,3 ]
ϕ1(x) = ⎨ 2 2
⎪⎪
⎪⎩ 0 en otro caso

⎧⎪ (1)
⎪⎪L 2 (x) = − 1 x 3 + 2x 2 − 3 x si x ∈ [0,3 ]
ϕ 2 (x) = ⎨ 2 2
⎪⎪
⎪⎩ 0 en otro caso

⎧⎪ (1)
⎪⎪L3 (x) = 1 x 3 − 1 x 2 + 1 x si x ∈ [0,3 ]
⎪⎪ 6 2 3
⎪⎪
ϕ 3 (x) = ⎪⎨L(2) (x) = −x + 4 si x ∈ [3,4 ]
⎪⎪ 0
⎪⎪
⎪⎪0 en otro caso
⎪⎪⎩

⎧⎪ (2)
⎪⎪L1 (x) = x − 3 si x ∈ [3,4 ]
⎪⎪
⎪⎪ 1 4 13 3 251 2 533
ϕ 4 (x) = ⎪⎨L(3) 0 (x) = x − x + x − x + 70 si x ∈ [ 4,8 ]
⎪⎪ 24 12 24 12
⎪⎪
⎪⎪0 en otro caso
⎪⎪⎩

83
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

⎧⎪ (3)
⎪⎪L1 (x) = − 1 x 4 + 25 x 3 − 115 x 2 + 460 x − 224 si x ∈ [ 4,8 ]
ϕ 5 (x) = ⎨ 6 6 3 3
⎪⎪
⎪⎩ 0 en otro caso

⎧⎪ (3)
⎪⎪L 2 (x) = 1 x 4 − 6x 3 + 211 x 2 − 201x + 280 si x ∈ [ 4,8 ]
ϕ 6 (x) = ⎨ 4 4
⎪⎪
⎪⎩ 0 en otro caso

⎧⎪ (3)
⎪⎪L3 (x) = − 1 x 4 + 23 x 3 − 97 x 2 + 356 x − 160 si x ∈ [ 4,8 ]
ϕ 7 (x) = ⎨ 6 6 3 3
⎪⎪
⎪⎩ 0 en otro caso
y:
⎧⎪ (3)
⎪⎪L 4 (x) = 1 x 4 − 11 x 3 + 179 x 2 − 319 x + 35 si x ∈ [ 4,8 ]
ϕ 8 (x) = ⎨ 24 12 24 12
⎪⎪
⎪⎩ 0 en otro caso

La figura siguiente recoge las gráficas de estas funciones de base.

Al igual que en el caso de interpolación con funciones polinómicas por


tramos de grado no superior a 2, en el caso general la función interpoladora
también puede expresarse de forma única como combinación de las funciones
de base de Lagrange. Más concretamente:

84
Programación y Métodos Numéricos Interpolación polinómica por tramos

Teorema 7.
Dado el soporte {x , x , ..., x
0 1 m1 , ..., xm1+m2 , ......, xm1+m2 +...+mk } y siendo
k
n = ∑ m j denotando por fj = f(xj) ( j = 0, .., n) a los valores que toma una
j=1

{ϕ j (x)}j=0
n
función f(x) en los puntos del soporte y por a las funciones que

forman la base de Lagrange del espacio L(∆) que está asociada a este soporte,
se verifica que la función:
n
u(x) = ∑ f j ·ϕ j (x)
j=0

es la única función de L(∆) que satisface las igualdades:

u(xj) = f(xj) ( j = 0,..., n)

A dicha función se la denomina función interpoladora de Lagrange de f(x)


del espacio L(∆) sobre el soporte {x0, ..., xn}.

Demostración:
Es una consecuencia inmediata de aplicar el teorema 2 del apartado 2.1.
al espacio L(∆).
c.q.d.

Ejemplo:
Dado el soporte {0, 1, 2, 3, 4, 5, 6, 7, 8} y la partición del intervalo [0, 8]:

∆ = {[0, 3] , [3, 4], [4, 8] }

se calcularon en el ejemplo anterior las 9 funciones de la base de Lagrange del


espacio L(∆) correspondiente. La función u(x) de L(∆) que interpola en el
sentido de Lagrange a f(x) = sen(xπ/2) está dada por:

9
u(x) = ∑ f( j)·ϕ j (x)
j=0

y como f(0) = f(2) = f(4) = f(6) = f(8) = 0 , f(1) = f(5) = 1 y f(3) = f(7) = -1
resulta que:
u(x) = ϕ1(x) − ϕ 3 (x) + ϕ 5 (x) − ϕ 7 (x)

Determinemos, subintervalo a subintervalo, la función u(x).

85
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

1 3 5 2 1 1 1
• En I1 = [0, 3]: ϕ1(x) = x − x + 3x , ϕ 3 (x) = x 3 − x 2 + x y
2 2 6 2 3
ϕ 5 (x) = ϕ 7 (x) = 0 por lo que:
1 5 ⎛1 1 1 ⎞
∀x ∈ [0,3 ] : u(x) = x 3 − x 2 + 3x − ⎜⎜ x 3 − x 2 + x⎟⎟⎟ =
2 2 ⎜
⎝6 2 3 ⎠
1 8
= x 3 − 2x 2 + x
3 3

• En I2 = [3, 4]: ϕ1(x) = 0 , ϕ 3 (x) = −x + 4 y ϕ 5 (x) = ϕ 7 (x) = 0 por lo que:


∀x ∈ [3,4 ] : u(x) = −(−x + 4) = x − 4

• En I3 = [0, 3]: ϕ1(x) = ϕ 3 (x) = 0 ,


1 25 3 115 2 460
ϕ 5 (x) = − x 4 + x − x + x − 224 , y
6 6 3 3
1 23 3 97 2 356
ϕ 7 (x) = − x 4 + x − x + x − 160 por lo que:
6 6 3 3

1 25 3 115 2 460
∀x ∈ [ 4,8 ] : u(x) = − x 4 + x − x + x − 224 −
6 6 3 3

⎛ 1 23 3 97 2 356 ⎞
−⎜⎜− x 4 + x − x + x − 160⎟⎟⎟ =
⎜⎝ 6 6 3 3 ⎠

1 3 104
= x − 6x 2 + x − 64
3 3

En resumen:
⎧⎪ 1 3
⎪⎪ x − 2x 2 + 8 x si x ∈ [0,3 ]
⎪⎪ 3 3
⎪⎪
u(x) = ⎪⎨x − 4 si x ∈ [3,4 ]
⎪⎪
⎪⎪
⎪⎪ 1 x 3 − 6x 2 + 104 x − 64 si x ∈ [ 4,8 ]
⎪⎪⎩ 3 3

La figura siguiente recoge el grafo de f(x) – en color negro - y el grafo de u(x)


–en colores azul, rojo y verde según los respectivos tramos-.

86
Programación y Métodos Numéricos Interpolación polinómica por tramos

Propiedad 16.
n
Dado el al soporte {x 0 , x1, ..., x m1 , ..., xm1+m2 , ......, xm1+m2 +...+mk } , con n = ∑ m j ,
j=1

sea ∆ la partición de [x0, xn] dada por :


{
∆ = I1 = ⎡⎢ x 0 ,xm1 ⎤⎥ ,...,Ij = ⎡⎢ x m1+..+mj−1 ,x m1+..+m j−1+m j ⎤⎥ ,...,Ik = ⎡⎢ xm1+..+mk−1 ,xm1+..+mk−1+mk ⎤⎥
⎣ ⎦ ⎣ ⎦ ⎣ ⎦ }
y denotemos por f(x) a una función cualquiera y por u(x) a su función
interpoladora del espacio L(∆) correspondiente. Considerando que estas
funciones, en cada tramo, estén definidas por las expresiones:
⎧⎪f1(x) si x ∈ I1 ⎧⎪u1(x) si x ∈ I1
⎪⎪ ⎪⎪
⎪⎪.... .......... ⎪⎪.... ...........
⎪⎪ ⎪⎪
f(x) = ⎪⎨f j (x) si x ∈ Ij , u(x) = ⎪⎨u j (x) si x ∈ Ij
⎪⎪ ⎪⎪
⎪⎪.... ........... ⎪⎪.... ..........
⎪⎪ ⎪⎪
⎪⎪fk (x) si x ∈ Ik ⎪⎪uk (x) si x ∈ Ik
⎩ ⎩

si para algún valor del índice “j” tal que 1 < j < k la expresión fj(x) es un
polinomio de grado menor o igual que mj entonces se verifica que uj(x) = fj(x).

Demostración:
Usando la notación m0 = 0, si fj(x) es un polinomio de grado menor o igual
que mj coincidirá con el polinomio interpolador de Lagrange (22) de f(x) sobre el
soporte:
{x m0 +..+m j−1 ,xm0 +..+m j−1+1,....,x m0 +..+m j−1+mj }
22
Puede consultarse el tema anterior la interpolación polinómica de Lagrange para tener una
demostración de esta afirmación

87
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

En otros términos, si fj(x) es un polinomio de grado menor o igual que mj


resultará que fj(x) es el único polinomio de grado menor o igual que mj que
verifica las (mj+1) igualdades: f(xs) = f(xs) ( s = m0+ ... + mj-1 , ......,
m0+...+mj-1+mj). Y puesto que ui(x) debe ser un polinomio de grado menor o
igual que mj verificando que u(xs) = f(xs) ( s = m0+...+mj-1 , ..., m0+...+mj-1+mj),
puede concluirse que los polinomios ui(x) y fi(x) son el mismo.
c.q.d.

La expresión de la función interpoladora dada en el teorema 7 es una


expresión global (es decir, es válida para todo el intervalo [x0, xn]). No obstante,
existen expresiones locales, que nos permiten definirla en cada subintervalo Ij
de la partición, como son las que se recogen en la propiedad siguiente:

Propiedad 17.
n
Dado el al soporte {x 0 , x1, ..., x m1 , ..., xm1+m2 , ......, xm1+m2 +...+mk } , con n = ∑ m j ,
j=1

sea ∆ la partición de [x0, xn] dada por :

{
∆ = I1 = ⎡⎢ x 0 ,xm1 ⎤⎥ ,...,Ij = ⎡⎢ x m1+..+mj−1 ,x m1+..+m j−1+m j ⎤⎥ ,...,Ik = ⎡⎢ xm1+..+mk−1 ,xm1+..+mk−1+mk ⎤⎥
⎣ ⎦ ⎣ ⎦ ⎣ ⎦ }
Sea además m0 = 0. En cada uno de los subintervalos de la partición el
polinomio de grado menor o igual a mj que define a la función interpoladora de
una función cualquiera f(x) puede calcularse por cualquiera de las expresiones
siguientes:

mj

( )
a) ∀x ∈ Ij : u(x) = ∑ f xm0 +...+m j−1+i ·L(i j) (x) , donde L(i j) (x) es el i-ésimo
i=0

polinomio de base de Lagrange asociado al soporte


{x m0 +..+m j−1 ,xm0 +..+m j−1+1,....,x m0 +..+m j−1+mj }

b)
⎛ mj i−1 ⎞
( ) (
∀x ∈ Ij : u(x) = f xm0 +...+m j−1 + ∑ ⎜⎜f ⎡⎢ xm0 +...+m j−1 ,...,xm0 +...+m j−1+i ⎤⎥·∏ x − xm0 +...+mj−1+s
⎜ ⎣
i=1 ⎝
⎦ s=0 )⎠⎟⎟⎟
donde f ⎡⎢ xm0 +...+mj−1 ,...,xm0 +...+mj−1+i ⎤⎥ es la diferencia dividida de la función f(x) en
⎣ ⎦
{
los puntos x m0 +..+m j−1 ,xm0 +..+m j−1+1,....,xm0 +..+m j−1+i }

88
Programación y Métodos Numéricos Interpolación polinómica por tramos

Demostración:
Las dos expresiones son consecuencia inmediata de aplicar la fórmula
de interpolación polinómica de Lagrange o de Newton, respectivamente, para
calcular el polinomio interpolador de la función f(x) sobre el soporte de (mj+1)
{ }
puntos x m0 +..+m j−1 ,xm0 +..+m j−1+1,....,xm0 +..+m j−1+mj . Se dejan los detalles al lector.

c.q.d.

Ocupémonos ahora de analizar el error de la interpolación de Lagrange


por tramos en el caso general.

Teorema 8.
Sea el soporte {x , x , ..., x
0 1 m1 , ..., xm1+m2 , ......, xm1+m2 +...+mk } y denotemos por ∆ a
la partición del intervalo ⎡⎢ x 0 , xm1+...+mk ⎤⎥ en los k subintervalos:
⎣ ⎦
{
∆ = I1 = ⎡⎢ x 0 ,xm1 ⎤⎥ ,...,Ij = ⎡⎢ x m1+..+mj−1 ,x m1+..+m j−1+m j ⎤⎥ ,...,Ik = ⎡⎢ xm1+..+mk −1 ,xm1+..+mk−1+mk ⎤⎥
⎣ ⎦ ⎣ ⎦ ⎣ ⎦ }
Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio L(∆)
correspondiente a esta partición, y suponiendo que para algún valor del índice j
D
( con 1 < j < k) se verifica que f ∈ C3 (I j ) y que f(x) es continua por la derecha
en el extremo izquierdo de Ij y que f(x) es continua por la izquierda en el
extremo derecho de Ij, entonces:
∀x ∈ ⎤⎥ xm0 +m1+...+mj−1 ,x m1+...+m j ⎡⎢ ∃ξ j =∈ ⎤⎥ x m0 +m1+...+m j−1 ,x m1+...+mj ⎡⎢ /
⎦ ⎣ ⎦ ⎣
f
(m j +1
( ξ j ) mj
E(x) = f(x) − u(x) =
(m j + 1)! i=0
(
∏ x − xm0 +...+mj−1+i )
donde m0 = 0.

Demostración:
Puesto que la expresión anterior es válida para todo punto interior al
intervalo Ij, el error (f(x) – u(x)) coincide con el error entre f(x) y el polinomio
p(j)(x) que define a la función interpoladora en el subintervalo Ij. Y como este
polinomio es el polinomio que interpola a f(x) sobre el soporte de (mj+1) puntos
{x 0+m1 +..+m j−1 ,x m1+..+mj−1+1,....,x m1+..+mj−1+m j } basta con aplicar el teorema que nos

89
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

proporciona la expresión del error de interpolación polinómica23 a este caso


particular. c.q.d.
Una primera consecuencia del teorema anterior es la ratificación de la
propiedad 16ª. En efecto si en el subintervalo Ij la función f(x) tuviera una
expresión polinómica de grado menor o igual a mj, será nula su derivada de
orden (mj+1) en cualquier punto interior a Ij y en consecuencia el error en todo
punto de Ij es nulo. En otros términos, en ese caso la función f(x) coincidirá con
la función interpoladora en todo punto del intervalo Ij. Pero el teorema anterior
también nos permite obtener cotas locales del error de interpolación como la
que se indica en el corolario siguiente:

Corolario 5
Sea el soporte {x 0 , x1, ..., x m1 , ..., xm1+m2 , ......, xm1+m2 +...+mk } y denotemos por ∆
a la partición del intervalo ⎡⎢ x 0 , xm1+...+mk ⎤⎥ en los k subintervalos:
⎣ ⎦
{
∆ = I1 = ⎡⎢ x 0 ,xm1 ⎤⎥ ,...,Ij = ⎢ x m1+..+mj−1 ,x m1+..+m j−1+m j ⎤⎥ ,...,Ik = ⎡⎢ xm1+..+mk −1 ,xm1+..+mk−1+mk ⎤⎥
⎣ ⎦

⎣ ⎦ ⎣ ⎦ }
Siendo u(x) la función interpoladora de Lagrange de f(x) en el espacio L(∆)
correspondiente a esta partición, y suponiendo que para algún valor del índice j
D
( con 1 < j < k) se verifica que f ∈ C3 (I j ) y que f(x) es continua por la derecha
en el extremo izquierdo de Ij y que f(x) es continua por la izquierda en el
extremo derecho de Ij, entonces:
m
D 1
( )
j

∀x ∈ I j : E(x) = f(x) − u(x) ≤ Mj ·Sup ∏ x − xm0 +...+m j−1+i


(m j + 1)! D
x∈ I j i=0
(m j +1
donde m0 = 0 y Mj = Sup f (x)
D
x∈ I j

Demostración:
Es inmediata pues basta con tomar valor absoluto en la expresión del error
y sustituir el valor de f j (ξ j ) por el supremo de f j ( x) en el intervalo
(m +1 (m +1

mj

I j = ⎤⎥ xm0 +...´+mj−1 , x m0 +...´+m j−1+mj ⎡⎢ y el valor de


⎦ ⎣ ∏( x − x
i=0
m0 +...+m j−1 +i ) por su supremo
en I j = ⎤⎥ xm0 +...´+mj−1 , x m0 +...´+m j−1+mj ⎡⎢ .
⎦ ⎣
c.q.d.

23
Véase el teorema 2 del apartado 2.2. del tema anterior dedicado a la interpolación
polinómica.

90
Programación y Métodos Numéricos Interpolación polinómica por tramos

A partir de las cotas de error en cada subintervalo puede obtenerse una cota
global del error como la mayor de las cota locales en cada subintervalo.

Ejercicio propuesto:
Siendo k un número entero positivo se considera un soporte formado por los
(3k+1) puntos {x0 , x1, x2, x3 , ...., x3(j-1), x3j-2 , x3j-1, x3j, ...., x3(k-1), x3k-2 , x3k-1, x3k}
en el que se supondrá que los puntos están ordenados de menor a mayor.
Además se denota por ∆ a la partición de [x0, x3k] en los k subintervalos:

∆ = { I1 = [x0, x3], ..., Ij = [x3(j-1), x3j] , …, Ik = [x3(k-1), x3k] }

y por L3(∆) al espacio de las funciones polinómicas de tercer grado a tramos


asociado a dicha partición.

Se pide:
a) Determínese la expresión de las funciones de base de Lagrange de
L3(∆) y representa el grafo de ellas.
b) Determínese la expresión global de la función u(x) que interpola a una
función cualquiera f(x) en L3(∆).
c) Determínese las expresiones polinómicas que definen localmente a la
función interpoladora, a partir de la fórmula de interpolación polinómica
de Lagrange.
d) Determínese las expresiones polinómicas que definen localmente a la
función interpoladora, a partir de la fórmula de interpolación polinómica
de Newton.
e) Determínese la expresión local del error, indicando las condiciones de
regularidad que debe satisfacer la función f(x) para que dicha expresión
sea válida.
f) Demuéstrese que si los puntos {x3(j-1), x3j-2, x3j-1, x3j} son equidistantes
una cota local del error de interpolación en Ij = [x3(j-1), x3j] , bajo
condiciones de regularidad suficientes, es:
1
∀x ∈ ⎤⎥⎦ x 3( j−1) ,x 2 j ⎡⎢⎣ : E(x) = f(x) − u(x) ≤ Mj ·h4j ,
1944
(iv
donde Mj = Sup f (x) y hj = |x3j – x3(j-1)|.
x∈⎤⎥ x3( j−1) ,x3 j ⎡⎢
⎦ ⎣

91
Interpolación polinómica por tramos. Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid

Dedúzcase a partir del resultado anterior una cota global del error de
interpolación.

92
Programación y Métodos Numéricos Interpolación polinómica por tramos

BIBLIOGRAFÍA SOBRE EL TEMA

[1] Burden, R.L. y Fiares, J.D. (1998). Análisis Numérico. Ed. International
Thomsom Editores

[2] Crouzeix, M. et Mignot, A.L. (1983) Analyse numérique des équations


differentielles. Ed. Masson.

[3] Gasca, M. (1995) Cálculo Numérico I. Ed. Universidad Nacional de


Educación a Distancia (UNED).

[4] Michavila, F. y Conde, C. (1987) Métodos de Aproximación. Ed. Depto. de


Matemática Aplicada y Métodos Informáticos – ETSI Minas – Universidad
Politécnica de Madrid.

[5] Sanz-Serna, J.M (1998 ) Diez lecciones de análisis numérico. Secretariado


de Publicaciones de la Universidad de Valladolid

[6] Shampine, L.F., Allen Jr., R.C. and Pruess, S. (1997) Fundamentals of
numerical computing. Ed. John Wiley & Sons, Inc.

[7] Stoer, J. and Bulirsch, R. (1993) Introduction to numerical analysis (2nd


edition). Ed. Springer

[8] Viaño, J.M. y Burguera, M. (2000) Lecciones de Métodos Numéricos, 3:


Interpolación. Ed. Tórculo

93
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
Pág.
1. INTRODUCCIÓN Y MOTIVACIÓN. ………………………………… 1

2. FÓRMULAS DE DERIVACIÓN NUMÉRICA. ………..…………… 4

3. FÓRMULAS DE DERIVACIÓN NUMÉRICA DE TIPO INTERPO-


LATORIO PARA APROXIMAR LA PRIMERA DERIVADA DE
UNA FUNCIÓN. ……………………………………………….. 10

4. EXPRESIONES DEL ERROR EN LAS FÓRMULAS DE DERIVA-


CIÓ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 PRIME-
RAS DERIVADAS ……………………………………………….. 29
5.1. Fórmulas con dos puntos de soporte. ……………………. 29
5.1.1. Casos particulares. ………………………………. 31
5.2. Fórmulas con tres puntos de soporte. ……………………. 33
5.2.1. Casos particulares con soporte equidistante. . 36

6. OTROS MÉTODOS PARA LA OBTENCIÓN DE FÓRMULAS DE


DERIVACIÓN NUMÉRICA DE TIPO INTERPOLATORIO. …. 39
6.1. Mediante la combinación de desarrollos en serie
de Taylor. ……………………………………..…………… 39
6.2. Método de coeficientes indeterminados. …………………. 43

7. FÓRMULAS DE DERIVACIÓN NUMÉRICA DE TIPO INTERPO-


LATORIO PARA LA APROXIMACIÓN DE DERIVADAS DE
ORDEN SUPERIOR. ……………………………………………. 47
7.1. Obtención de fórmulas de derivación de tipo interpolato-
rio mediante el método de los coeficientes indetermi-
nados. ………………………………………………………. 63

8. MEJORA DE LA PRECISIÓN DE LAS FÓRMULAS DE DERIVA-


CIÓN NUMÉRICA. MÉTODO DE EXTRAPOLACIÓN DE
RICHARDASON. …………………………………………………… 67

BIBLIOGRAFÍA SOBRE EL TEMA. …………………………………….. 74

ii
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:
n
f’(x*) ≈ f*' = c0.f(x0) + c1.f(x1)+ …. + cn.f(xn) = ∑ 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:
n
f’(x*) ≈ f*' = ∑ 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
f(x1) = f(x0+h) = f(x0) + h.f’(x0) + .f "(x 0 + θ.h) θ ∈ (0,1)
2
de donde:
f ( x0 ) − f ( x1 ) h
f '( x0 ) = − .f "( x0 + θ .h ) θ ∈ (0,1)
h 2
Por tanto:
h
Rf ( x0 ) = f '( x0 ) − f0' = − .f "( x0 + θ .h ) θ ∈ (0,1)
2
expresión que puede acotarse por:

5
Programación y Métodos Numéricos Derivación Numérica

. S up { f "( x ) }
h
Rf ( x0 ) = f '( x0 ) − f0' ≤
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
f0' = 0 = 2.x0 + h
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.
n
Se dice que la fórmula de derivación numérica f’(x*) ≈ f*' = ∑ 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(x1 ) − f(x 0 ) −1 1
f(x*) ≈ f* ' = = ·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:

−1 2 1 2
2 = f '(1) = f* ' = ·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
ϕ'j (x*) = ∑ c i .ϕ j (xi ) ∀x* ∈ [ x 0 ,xn ] (j = 0, ..., k)
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
⎛ n ⎞ n ⎛ k ⎞ 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:


R f (x*) = 0 ∀x* ∈ [ x 0 ,xn ]

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:

f(x 0 + h) − f(x 0 ) 1 − 1
fx' = = = 0 = f '(x) ∀x ∈ [ x 0 ,x 0 + h]
h h
Asimismo para la función g(x) = x se tiene que:

g(x 0 + h) − g(x 0 ) x 0 + h − x 0
g'x = = = 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:

8
Derivación Numérica Carlos Conde, Arturo Hidalgo, Alfredo López
ETSI Minas de la Universidad Politécnica de Madrid
.
q(x 0 + h) − q(x 0 ) (x 0 + h)2 − x 02
q'x = = = 2 ⋅ x 0 + h ≠ q'(x) ∀x ∈ [ x 0 ,x 0 + h]
h 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
base de Lagrange {Li (x)}i=0 es:
n

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:

⎛ n ⎞ ⎛ n ⎞
Recuérdese que: Li (x) = ⎜ ∏ (x − x j ) ⎟ ⎜ (x − x ) ⎟
⎜∏
3
(i = 0, 1, ..., n)
⎜ j=0 ⎟ i j ⎟
⎜ ⎟ ⎜ j=0 ⎟
⎝ j≠i ⎠ ⎝ j≠i ⎠

11
Programación y Métodos Numéricos Derivación Numérica

'
n n n
⎛ 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 ⎠

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

⎜ ∑ i ⎟ ∑ Li (x) = 0
= ∀x
'
L (x)
⎝ i=0 ⎠ i=0

En particular para el punto x* se tendrá que:


n n

∑ L'i (x*) = ∑ ci = 0
i=0 i=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) ∀x

por lo que f’(x) = p’n(x) ∀x . En particular para cualquier punto x* se


tendrá que:

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

∑ ci .p(xi ) = ∑ L'i (x*).p(xi )


i =0 i=0

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
de base de Lagrange construidos sobre el soporte {xi }i=0 . Recordemos
n

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 n

∑ c .L
i =0
i 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

∑ ci .L1(xi ) = ∑ L'i (x*).L1(xi ) ⇒ c1 = L'1(x*)


i =0 i= 0

Y en general al particularizar para cualquier polinomio de base Lj(x)


obtendremos que:
n n

∑ ci .L j (xi ) = ∑ L'i (x*).L j (xi ) ⇒ c j = L' j (x*)


i =0 i=0

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:

(x − x1 ) (x − x 0 )
p1 (x) = f(x 0 ). + f(x1 ).
(x 0 − x1 ) (x1 − x 0 )

La derivada de este polinomio es:

1 1 f(x1 ) − f(x 0 )
p1' (x) = f(x 0 ). + 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(x1 ) − f(x 0 )
f '(x*) ≈ fx*' =
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 = k·( x * )
k k −1
i i (k = 1, ...n)
i =1

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 = k·( x * )
k k −1
i i ( 0 < k < n)
i=1

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]


g’(x)= lim = lim f[x 0 ,x1,....,x n ,x,x + h]
h →0 (x + h) − x h →0

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
4
Recuérdese que la expresión obtenida era: .∏ (x − xi ) donde ξ x era un
ε(x) =
(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
n
ε(x) = f[x 0 , x1 ,..., xn , x] ⋅ ∏ (x − xi ) .
i=0

19
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 ⎞⎞
⎜ ⎜ ⎟
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 ⎟⎟
⎝ ⎝ ⎠⎠
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