Introducción:
Se trata de obtener un polinomio (polinomio de interpolación) que
cumpla:
f(x )≈ p(x).
en una serie de n puntos x
0
, x
1
, …, x
n
.
Dos casos típicos:
1) Los datos x
0, x
1, … , x
n , se han obtenido experimentalmente.
2) Una función complicada f(x) la aproximamos a un polinomio.
En ambos casos hallamos el polinomio de interpolación p(x) .
Métodos de hallar el polinomio de
interpolación p(x):
* Método de Lagrange
* Método de Newton
G1. Polinomio de interpolación de Lagrange
Sea una función f(x), de tal manera que conozcamos su valor en cada uno de
n+1 puntos: f(x
0
), f(x
1
), …, f(x
n
).
1º. Obtenemos los “multiplicadores o coeficientes de Lagrange”):
0 1 1 1
0 1 1 1
( ) ( ) ... ( ) ( ) ... ( )
( )
( ) ( ) ... ( ) ( ) ... ( )
k k n
k
k k k k k k k n
x x x x x x x x x x
L x
x x x x x x x x x x
Son n+1 coeficientes: con k=0, 1, 2, …, n .
0
( )
( )
( )
n
i
k
i k i
i k
x x
L x
x x
i = 0, 1, 2, …, n
k = 0, 1, 2, …, n
Propiedad de los coeficientes L
k
(x):
El coeficiente L
k(x) se anula en cada punto x
i, excepto en el x
k que tiene el
valor 1 (valor máximo).
Ejemplo: Supongamos como soporte los seis puntos siguientes,
x
0
= 1, x
1
= 3, x
2
= 4, x
3
= 6, x
4
= 8, x
5
= 9.
3
( 1) ( 3) ( 4) ( 8) ( 9)
( )
(6 1) (6 3) (6 4) (6 8) (6 9)
x x x x x
L x
El polinomio de interpolación deLagrange se
obtiene:
0
( ) ( ) ( )
n
k k
k
p x f x L x
EJEMPLO: Sea la función f(x)=e
x
. Supongamos conocido el
valor que toma esta función en los cuatro puntos:
x
0
=2, x
1
=2.5, x
2
=3, x
3
=4,
es decir:
f(x
0
) = 7.3890, f(x
1
) = 12.1825, f(x
2
) = 20.0855, f(x
3
) = 54.5980
Hallemos el polinomio de interpolación de Lagrange:
3 2
0
3 2
1
3 2
2
3
( 2.5)( 3)( 4)
( ) 9.5 29.5 30
(2 2.5)(2 3)(2 4)
( 2)( 3)( 4)
( ) 2.66667 24 69.3333 64
(2.5 2)(2.5 3)(2.5 4)
( 2)( 2.5)( 4)
( ) 2 17 46 40
(3 2)(3 2.5)(3 4)
( 2)( 2
( )
x x x
L x x x x
x x x
L x x x x
x x x
L x x x x
x x
L x
3 2.5)( 3)
0.3333 3.5 6.16667 5
(4 2)(4 2.5)(4 3)
x
x x x
El polinomio de interpolación de Lagrange es:
p(x) = f(x
0
) L
0
(x) + f(x
1
) L
1
(x) + f(x
2
) L
2
(x) + f(x
3
) L
3
(x)
p(x) = 3.12601 x
3
– 17.2259 x
2
+ 39.432 x – 27.5792
G2. Polinomio de interpolación de Newton.
La fórmula de interpolación de Newton viene dada por:
1
0 1
0 0
( ) , ,...,
in
i j
i j
p x f x x x x x
Siendo las llamadas diferencias divididas de f para los
x
0, x
1, …, x
n .
0 1
, ,...,
i
f x x x
0 0
0 1
1 1 0 1 2
1 2 0 1 2 3
2 2 1 2 3
2 3
3 3
( )
,
( ) , ,
, , , ,
( ) , ,
,
( )
x f x
f x x
x f x f x x x
f x x f x x x x
x f x f x x x
f x x
x f x
En el caso de 4 puntos
Algunos ejemplos:
0 0
0 1
1 1 0 1 2
1 2 0 1 2 3
2 2 1 2 3
2 3
3 3
( )
,
( ) , ,
, , , ,
( ) , ,
,
( )
x f x
f x x
x f x f x x x
f x x f x x x x
x f x f x x x
f x x
x f x
2 3 1 2
1 2 3
3 1
, ,
, ,
f x x f x x
f x x x
x x
1 2 3 0 1 2
0 1 2 3
3 0
, , , ,
, , ,
f x x x f x x x
f x x x x
x x
*
*
El polinomio de interpolación de Newton:
0 0 1 0 0 1 2 0 1
0 1 2 3 0 1 2
( ) ( ) , ( ) , , ( )( )
, , , ( )( )( )
p x f x f x x x x f x x x x x x x
f x x x x x x x x x x
Ejemplo: Vamos a obtener el polinomio de interpolación para la
función f(x) = e
x
, en los puntos {2, 2.5, 3, 4}, pero en esta ocasión
por el método de Newton.
0
1
2
3
2.0 7.38906
9.58688
2.5 12.1825 6.21912
15.806 3.1260
3.0 20.0855 12.471133
34.5127
4.0 54.5982
x
x
x
x
p(x) = 7.38906 + 9.58688 (x – 2) + 6.21912 (x – 2) (x – 2.5) +
+ 3.1260 (x – 2) (x – 2.5) (x – 3)
p(x) = 3.126 x
3
– 17.2259 x
2
+ 39.4318 x – 27.5791
G2. Método de los Mínimos Cuadrados (Cuadratura Gaussiana)
Supongamos que al realizar una serie de mediciones de dos variables (x, y) ,
se ha obtenido una distribución de pares de valores o puntos:
(x
1
, y
1
) , (x
2
, y
2
) , … , (x
i
, y
i
) , … , (x
n
, y
n
) .
El método de los mínimos cuadrados busca una curva, como se indica en la
gráfica, de tal manera que se minimice la suma de los cuadrados de los
errores, e
i , cometidos al sustituir los puntos por la ordenada y(x
i).
y = ax
m
+ bx
m-1
+ …+ c
Matemáticamente equivale a un problema de hallar un mínimo para una función
de m+1 variables:
f(a, b, …, c)
EJEMPLO: Apliquemos el método para el caso de un polinomio de
grado 2 (función polinómica), es decir, mediante una parábola:
y = ax
2
+ bx+ c
Si observamos la figura anterior, tenemos:
e
i
= ax
i
2
+ bx
i
+ c – y
i
→ e
i
2
= (ax
i
2
+ bx
i
+ c – y
i
)
2
.
Por tanto la suma de los cuadrados de los errores es:
2
2 2
1 1
( , , )
n n
i i i i
i i
e ax bx c y f a b c
Se trata, pues, de minimizar esta función de tres variables, f(a, b, c).
Las condiciones de extremo se dan allí donde se anulan las derivadas primeras de
f (x):
2 2
1
2
1
2
1
' 2 . 0
' 2 . 0
' 2 .1 0
n
a i i i i
i
n
b i i i i
i
n
c i i i
i
f ax bx c y x
f ax bx c y x
f ax bx c y
2 2
1
2
1
2
1
. 0
. 0
.1 0
n
i i i i
i
n
i i i i
i
n
i i i
i
ax bx c y x
ax bx c y x
ax bx c y
Condiciones de mínimo:
Ejemplo: Hay que hallar un polinomio de interpolación (de grado 2)
para la tabla de datos: x
1 = 1, x
2 = 2, x
3 = 3 .
y
1 = 3, y
2 = 4, y
3 = 6 .
Solución:
O sea,
98 36 14 73 0
36 14 6 29 0
14 6 3 13 0
a b c
a b c
a b c
Soluc.: a = 5, b= -18.5, c = 18
Polinomio de intepolación: p(x) = 5 x
2
– 18.5 x + 18
2 2 2 2 2 2
2 1 2 1 2 1
2 0 2 0 2 0
( .1 .1 3).1 ( .2 .2 4).2 ( .3 .3 6).3 0
( .1 .1 3).1 ( .2 .2 4).2 ( .3 .3 6).3 0
( .1 .1 3).1 ( .2 .2 4).2 ( .3 .3 6).3 0
a b c a b c a b c
a b c a b c a b c
a b c a b c a b c
Spline (“Special Line”) cúbica
Si como polinomio interpolatorio tomamos un polinomio de grado 3:
P(x) = ax
3
+ bx
2
+ cx + d, recibe el nombre de “Spline”.
Interpolación de datos 1-D con MATLAB.
>> yi = interp1(x, y, xi, método);
>> plot(x, y, 'o', xi, yi);
Sean conocidos una tabla de datos:
x = [1, 1.2, 1.3, 1.5, …]
y = [4.254, 3.097, 5.671, …]
Métodos .
- ‘nearest’
- ‘linear’ (por defecto)
- ‘spline’ Cubic spline interpola.
- ‘cubic’
Ejemplo 1:
>> x = 0:10;
>> y = exp(x);
>> xi = 0:0.2:10;
>> yi = interp1(x, y, xi);
>> plot(x, y, 'o‘ , xi, yi);
Ejemplo 2:
Hay que interpolar mediante ‘spline’ los datos de la tabla siguiente:
x 2 2.1 2.6 3 3.2 3.7 4 4.3
y 5 5.3 5.6 5.4 4.9 4.5 3.8 3.3
>> tab = [2 2.1 2.6 3 3.2 3.7 4 4.3; 5 5.3 5.6 5.4 4.9 4.5 3.8 3.3]
>> x = tab(1, :); y = tab(2, :);
>> xi = 2:0.25:4.5;
>> yi = interp1(x, y, xi, 'spline');
>> plot(x, y, 'o', xi, yi)
Ejemplo 3:
Tenemos dos vectores con los censos (por decadas) en el siglo XX, en
millones de personas:
>> t = 1900:10:1990;
>> p = [75.995 91.972 105.711 123.203 131.669...
150.697 179.323 203.212 226.505 249.633];
Por interpolación podemos estimar la población en cualquier año:
>> t = 1900:10:1990;
>> p = [75.995 91.972 105.711 123.203 131.669...
150.697 179.323 203.212 226.505 249.633];
>> interp1(t, p, 1975)
ans =
214.8585
>> t = 1900:10:1990;
>> p = [75.995 91.972 105.711 123.203 131.669...
150.697 179.323 203.212 226.505 249.633];
>> x = 1900:1:2000;
>> y = interp1(t, p, x, 'spline'); plot(t,p,'o',x,y)
Podemos representar la población anual: