Академический Документы
Профессиональный Документы
Культура Документы
4. Interpolación polinomial
En muchos casos de experimentación o de análisis de datos, se tienen
mediciones, mediciones que de antemano no tienen o siguen una tendencia
definida, aún más, se desconoce la función que la rige. Ejemplos de esto
pueden ser: medir la temperatura a lo largo de un dı́a en intervalos de una
hora, medir la evolución de los precios a lo largo de los meses, medir el tiempo
de enfriamiento de un material expuesto a distintas condiciones, etc. Todos
estos casos de experimentación tienen el objetivo de conocer, investigar y en
muchos casos inferir nuevos valores, pues se pretende buscar un modelo que
permita conocer o aproximar una función que describa el comportamiento de
los distintos fenómenos, con el fin de evitar una experimentación “infinita”,
pues dependiendo los casos de estudios puede llegar a ser muy costosa.
Bajo este escenario, la mejor forma de determinar una posible función
que describa el comportamiento de datos experimentales, es a través de los
llamdos métodos de interpolación polinomial. Estos métodos tienen la idea
básica de buscar un polinómio P (x) que aproxime el comportamiento de los
distintos datos (puntos).
Y
Figura 2: Gráfico
Método de Lagrange.
Método de Newton.
3
sin que haya dos en la misma recta vertical
17 pℵ m
Métodos numéricos
Método de spline.
4.2.1. Ejemplo
En base a los datos mostrados en la cuadro 1 , determinar un polinomio
que los interpole.
X Y
0 1
0.6 0.8253
1.2 0.3623
Cuadro 1: Datos para contruir un polinonio interpolador.
18 pℵ m
Métodos numéricos
2
!
P2 (x) = f (xk )L2,k (x)
k=0
= f (x0 )L2,0 (x) + f (x1 )L2,1 (x) + f (x2 )L2,2 (x)
= 1 × L2,0 (x) + 0,8253 × L2,1 (x) + 0,3623 × L2,2 (x)
# $ # $
(x − 0,6)(x − 1,2) (x − 0)(x − 1,2)
= 1× + 0,8253 ×
(0 − 0,6)(0 − 1,2) (0,6 − 0)(0,6 − 1,2)
# $
(x − 0)(x − 0,6)
+0,3623 ×
(1,2 − 0)(1,2 − 0,6)
= 1,38(x − 0,6)(x − 1,2) + 2,29(x − 0)(x − 1,2) + 0,50(x − 0)(x − 0,6).
w = length(x);
n = w-1;
L = zeros(w,w);
for k=1:n+1
V = 1;
for j = 1:n+1
if k ~= j
V = conv(V,poly(x(j)))/(x(k)-x(j));
end
end
L(k,:) = V;
end
C = y;
C = C .* L;
Observaciones:
La instrucción poly produce un vector cuyas componentes son los coefi-
cientes de un polinomio del que se especifican las raices.
19 pℵ m
Métodos numéricos
4.2.3. Tareas
1. Determine en los siguientes casos, el polinomio interpolador de La-
grange par aproximar la función f (x) = x3
2. Modificar el código dado para que realice el gráfico de los nodos (pun-
tos) y el polinomio interpolador.
H T
13 18
14 18
15 17
16 16
17 15
18 14
Cuadro 2: Datos de la temperatura medida durante 5 horas.
20 pℵ m
Métodos numéricos
PN (x) = a0 +a1 (x−x0 )+. . .+aN (x−x0 )(x−x1 )(x−x2 ) · · · (x−xN −1 ), (13)
siendo ak = f [x0 , x1 , . . . , xN ] y
(x − x0 )(x − x1 ) · · · (x − xN )f N +1 (c)
EN (x) = (14)
(N + 1)!
con c ∈ [a, b].
Observación: Al término f [x0 , x1 , . . . , xN ] se le conoce como las diferen-
cias divididas de f (x).
Definición 2 (Diferencias divididas). Las diferencias divididas de una fun-
ción f (x) se definen como:
f [xk ] = f (xk ),
f [xk ] − f [xk−1 ]
f [xk−1 , xk ] = ,
xk − xk−1
f [xk−1 , xk ] − f [xk−2 , xk−1 ]
f [xk−2 , xk−1 , xk ] = ,
xk − xk−2
f [xk−2 , xk−1 , xk ] − f [xk−3 , xk−2 , xk−1 ]
f [xk−3 , xk−2 , xk−1 , xk ] = ,
xk − xk−3
.. .. ..
. . .
f [xk−j+1, . . . , xk ] − f [xk−j , . . . , xk−1 ]
f [xk−j , xk−j+1, . . . , xk ] =
xk − xk−j
4.3.1. Ejemplo
Sea f (x) = x3 − 4x y los nodos x0 = 1, x1 = 2, ..., x5 = 6. Se busca
determinar los polinomios interpoladores de Newton P1 (x), P2 (x) y P3 (x),
para los nodos indicados.
21 pℵ m
Métodos numéricos
Desarrollo
En primer lugar, establezcamos explı́citamente los polinomios que debe-
mos determinar, basándonos en la ecuación (13), estos son:
P1 (x) = a0 + a1 (x − x0 )
P2 (x) = a0 + a1 (x − x0 ) + a2 (x − x0 )(x − x1 )
P3 (x) = a0 + a1 (x − x0 ) + a2 (x − x0 )(x − x1 ) + a3 (x − x0 )(x − x1 )(x − x2 ).
P1 (x) = −3 + 3(x − 1)
P2 (x) = −3 + 3(x − 1) + 6(x − 1)(x − 2)
P3 (x) = −3 + 3(x − 1) + 6(x − 1)(x − 2) + 1(x − 1)(x − 2)(x − 3).
% Entrada: x y y vectores
% Salida: C coeficientes del polinomio de Newton,
% D tabla de diferencias divididas
n = length(x);
D = zeros(n,n);
D(:,1) = Y’;
for j=2:n
for k=j:n
22 pℵ m
Métodos numéricos
D(k,j) = (D(k,j-1)-D(k-1,j-1))/(x(k)-x(k-j+1));
end
end
C = D(n,n);
for k=n-1:-1:1
C = conv(C,poly(x(k)));
m = length(C);
C(m) = C(m) + D(k,k);
end
Observaciones:
La instrucción poly produce un vector cuyas componentes son los coefi-
cientes de un polinomio del que se especifican las raices.
La instrucción conv proporciona un vector cuyas componentes son los
coeficientes de un polinomio que es el producto de otros dos dados.
4.3.3. Tareas
1. En base a las funciones y datos que se muestran a la cuadro 3, realizar:
k xk f (xk ) k xk f (xk )
0 4 2 0 0 0
1 5 2.23 1 1 0.75
2 6 2.44 2 2 2.25
3 7 2.64 3 3 3.00
4 8 2.82 4 4 2.25
23 pℵ m
Métodos numéricos
PN (xk ) = yk parak = 0, 1, . . . , M.
for j=1:N
for k=N:-1:j
A(k) = (A(k)-A(k-1))/(x(k)-x(k-j));
end
end
4
Por comprobar se entiende al hecho de demostrar razonada y justificadamente las
afirmaciones o negaciondes realizadas.
24 pℵ m
Métodos numéricos
sΓ (x− i ) = sΓ (x+ i ), ∀i = 1, . . . , n − 1
s′Γ (x− i ) = s′Γ (x+ i ), ∀i = 1, . . . , n − 1
.. .. .. ..
. . . .
sm−1
Γ (x− m−1 +
i ) = sΓ (xi ), ∀i = 1, . . . , n − 1
25 pℵ m
Métodos numéricos
Observación
Si llamanos sm Γ al conjunto de splines de orden m definidos sobre la par-
tición Γ del intervalo [a, b], se puede demostrar que tiene una estructura de
espacio vectorial con las operaciones usuales de suma de funciones y producto
por escalares.
En lo que sigue, nos centraremos en la interpolación spline lineal y cuadrática,
aunque desarrollaremos con mayor detalle la lineal.
X
a b
Figura 3: Gráfico de la poligonal
26 pℵ m
Métodos numéricos
4.4.3. Ejemplo
En una aplicación gráfica se quiere derivar la fórmula que implementa
un prototipo gráfico en el intervalo [−1, 1], pasando por los puntos (−1, 0)
y (1, 0) con una altura variable h en 0. Dicha curva está definida por una
función continua que adopta la forma de polı́gonos de grado 1 en los subin-
tervalos dados. Dar la expresión de dichos patrones.
Desarrollo
La función pedida, s(x), es una spline de grado 1 en [−1, 1], asociada a
la partición Γ = {x0 = −1, x1 = 0, x2 = 1}. Utilizando la ecuación (15),
tendremos que la función pedida es:
)
s0 (x), x ∈ [−1, 0[
s(x) =
s1 (x), x ∈ [0, 1],
donde
y1 − y0
s0 (x) = y0 + (x − x0 ), x ∈ [x0 , x1 [
x1 − x0
h−0
= 0+ (x − (−1))
0 − (−1)
= h(x + 1)
y
y2 − y1
s1 (x) = y1 + (x − x1 ), x ∈ [x1 , x2 [
x2 − x1
0−h
= h+ (x − 0)
1−0
= h(1 − x).
En resumen )
h(x + 1), x ∈ [−1, 0[
s(x) =
h(1 − x), x ∈ [0, 1],
27 pℵ m
Métodos numéricos
function [m,b]=spline(X)
n=length(X(1,:));
for i=1:n-1;
m(i)=(X(2,i+1)-X(2,i))/(X(1,i+1)-X(1,i));
b(i)=X(2,i);
x=X(1,i):X(1,i+1);
y=m(i)*(x-X(1,i))+b(i);
hold on;
plot(x,y,’b’);
end
for i=1:n;
hold on;
plot (X(1,i),X(2,i),’*’,’MarkerEdgeColor’,’r’,’LineWidth’,1);
title(’Interpolación por "splines" de orden 1.’);
end
Por ejemplo, para los datos {(1, 0), (2, 3), (3, 4), (4, −6), (5, 2), (6, 4), (7, 0), (8, 4), (9, 3)},
se escribe en el Command Window:
X=[1 2 3 4 5 6 7 8 9; 0 3 4 -6 2 4 0 4 3];
[m,b]=spline(X).
m = 3 1 -10 8 2 -4 4 -1
b = 0 3 4 -6 2 4 0 4
28 pℵ m
Métodos numéricos
Encontrar s ∈ P2
tal que s(xi ) = yi , 0≤i≤n
Si sk es el polinomio cuadrático que se obtiene al restringir sk ∈ P2 al
intervalo [xk , xk+1 ], k = 1, 2, . . . , n − 1, entonces
4.4.6. Ejemplo
Se desea modelar la cubierta de un edificio simétrico describiendo el perfil
de su sección con un spline de grado 2 (ver figura 4.4.6). Los datos de los que
se dispone son las alturas del edificio en varios puntos, según se indica en la
tabla
x 0 1 2
Altura y0 y1 y2
Desarrollo
Sea s(x) el spline pedido en el intervalo [0, 2] correspondiente a la partición
{0, 1, 2} y que interpola los datos que se muestran a continuación:
s(0) = y0
s(1) = y1
s(2) = y2
29 pℵ m
Métodos numéricos
s′ (0) = 0.
Ese último dato numérico, junto con los anteriores, nos va a permitir
calcular unı́vocamente el spline en función de los datos y0 , y1 e y2 .
Luego de este análisis se debe construir dos polinomios p y q, de grado
dos, en los intervalos [0, 1] y [1, 2], respectivamente:
)
p(x), x ∈ [0, 1]
s(x) =
q(x), x ∈ [1, 2],
de forma que s y s′ sean continuas, es decir, se cumpla que:
1. s(0) = y0 ⇔ p(0) = y0
3. s(2) = y2 ⇔ q(2) = y2
4. s′ (0) = 0 ⇔ p′ (0) = 0
30 pℵ m
Métodos numéricos
4.4.7. Tareas
1. Construir un programa para la interpolación spline de grado 2.
2. Consultar y desarrollar una metodologı́a para las funciones spline cúbi-
cas.
3. Implementar un algoritmo para la interpolación spline cúbica.
4. Resolver:
a) Interpolar por splines de grado 1, 2 y 3 la función f (x) = x1
en tomando los puntos (0,1; 10), (0,2; 5), (0,5; 2), (1; 1), (2; 0,5),
(5; 0,2) y (10; 0,1).
b) Interpolar por splines cúbicos la función f (x) = x21+1 en el inter-
valo 0 ≤ x ≤ 1 tomando los seis puntos de las abcisas xk = k5 ,
k = 0, 1, 2, 3, 4, 5.
5. Se considera la función polinomial a trozos
)
x3 , x ∈ [0, 1[
r(x) = 3 2
0,5(x − 1) + a(x − 1) + b(x − 1) + c x ∈ [1, 3],
31 pℵ m