Está en la página 1de 58

Interpolación Polinómica

1.- Dada la tabla de valores:

xi -1 0 1

yi 13 7 9
a) Encontrar el spline cúbico natural que interpola estos datos, imponiendo las
condiciones requeridas y resolviendo el sistema.
b) Misma cuestión resolviendo previamente el sistema tridiagonal para el cálculo de
las derivadas segundas del spline en los nodos.
c) Calcular el spline “no nodo”, hacer una gráfica de nodos y del spline.
d) Dibujar el spline completo que interpola los datos, suponiendo que las derivadas
primeras del spline en los nodos inicial y final son -5 y 5, respectivamente.

2.- Se quiere construir la línea fronteriza entre dos poblaciones a partir de los datos que
figuran en la siguiente tabla:
xi 0 1 2 3 4 5 6 7

yi 0 25 34 72 115 92 71 65
a) Calcular el polinomio de interpolación que pasa por todos los puntos. Hallar la
ordenada del punto de abscisa 2.5. Representar los datos junto al polinomio que
los interpola, que definiría la frontera entre las poblaciones.
b) Utilizar un spline no nodo para perfilar la frontera. Hallar la ordenada del punto
de la misma de abscisa 2.5. Representar los datos junto al spline que los interpola
en la misma ventana de dibujo que el apartado a).
c) Utilizar un spline natural para perfilar la curva de separación entre las
poblaciones.

3.- Un robot debe tomar un objeto situado en la posición 1 y dejarlo en la posición 6 del
recinto esquematizado en la figura. Para ello recorre una trayectoria definida por los
puntos de la tabla, que tratan de evitar los obstáculos del recinto.

2 3 6 Paso 1 2 3 4 5 6
x 1 1 4 4 7 7
1 y 1 4 4 1 1 4
4 5
La trayectoria se obtiene interpolando los
puntos dados (x k , y k ) mediante funciones p y q
tales que (p(t), q(t)) es la posición del brazo en
el instante t ∈ [0,1] y (p(tk), q(tk)) = (x k , y k ) , siendo tk = 0.2 k, k = 0,1,…,5. Representar
gráficamente la trayectoria obtenida si p y q son:

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 1


Interpolación Polinómica
a) Los polinomios de interpolación de (t k , x k ) y (t k , y k ) , respectivamente.
b) Splines “no nodo”.
c) Splines tales que la velocidad inicial y final del robot es 0.
d) Splines tales que la aceleración inicial y final del robot es 0.
¿En qué casos la trayectoria no choca contra los obstáculos ni las paredes del recinto?

4.- Dada la tabla de valores:


x 0 1 3
f (x) 1 5 -17
f ’(x) 3 5 -15

a) Hallar el polinomio de Lagrange que interpola estos datos.


b) Hallar el polinomio de Hermite que interpola estos datos.
c) Representar los dos polinomios anteriores y comentar el resultado.

5.- Se consideran los valores de la función y = arc tg x en los nodos x = -3, -2, …, 2, 3.
a) Interpolar estos puntos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.
b) Hallar el spline que pasa por dichos puntos y tiene derivada tercera en los nodos
-2 y 2 (es decir, las dos primeras piezas del spline son el mismo polinomio, al igual
que las dos últimas).
c) Compara ambas aproximaciones.

6.- La tabla siguiente refleja la demanda de energía eléctrica en España cada dos horas
de un día de invierno.

Hora 0 2 4 6 8 10 12
MW 31250 28000 26000 26000 34000 37500 38000
Hora 14 16 18 20 22 24
MW 35500 34500 38500 39500 36500 33000
a) Hallar el polinomio de grado 12 que interpola los valores dados. Analizar el
comportamiento del polinomio de interpolación.
b) Se propone mejorar la interpolación dividiendo el intervalo en dos, de 0 a 12 y de
12 a 24, y hallando un polinomio para cada intervalo. Representar los polinomios
obtenidos y comparar el resultado con el del apartado anterior.
c) Interpolar los datos con un spline cúbico y comparar con los ajustes anteriores.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 2


Interpolación Polinómica
7.- Dada la tabla de valores (funciones de Bessel):

x0 x1 x2 x3 x4
x 1 1.3 1.6 1.9 2.2
f (x) 0.7651977 0.620086 0.4554022 0.2818186 0.11036
a) Comparar las aproximaciones de f(1.5) utilizando polinomios de interpolación de
grado 1, 2, 3 y 4. b) Sabiendo que f(1.5) = 0.5118277, ¿con qué polinomio se ha obtenido
la mejor aproximación?

8.- Dada la tabla de valores siguiente, correspondiente a la función f(x) = tg (x):


xi π 0 π

4 4
yi -1 0 1
a) Calcular el correspondiente polinomio de interpolación, aplicando la definición.
b) Calcular a mano el polinomio de Newton con la fórmula de las diferencias
divididas.
π
c) Interpolar el valor de f en .
8

9.- Para la función f(x) = tg (x), se considera la tabla de valores:


xi π π π 0 π π π
− − −
3 4 6 6 4 3
yi − 3 -1 3 0 3 1 3

3 3
a) Hallar el polinomio de interpolación correspondiente a estos datos.
b) Interpolar estos puntos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.
c) Hallar el spline que pasa por dichos puntos y tiene derivada tercera en los nodos
π π
− y (es decir, las dos primeras piezas del spline son el mismo polinomio, al
4 4
igual que las dos últimas).

10.- Para la tabla de valores:


xi 1 2 3 4 5 6 7 8 9 10
yi 2 6 5 10 67 45 23 5 9 1
a) Hallar el polinomio de interpolación.
b) Hallar un spline no nodo para estos datos.
c) Dibujar los dos polinomios en la misma ventana de dibujo. Comentar el resultado.

11.- A lo largo de un día se han recogido los siguientes datos de temperaturas:

Hora 10 13 17
Temp. ºC 7 17 11

Hallar el polinomio de Newton que se ajusta a los tres nodos.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 3


Interpolación Polinómica

12.- Se considera el polinomio a trozos:


=  S0 ( x ) x 2 -1 x ∈ [ −1, 0 )

S(x)==  S1 ( x ) 2 x -1
2
x ∈ [ 0,1)

 S 2 ( x ) =
−2 x 2 +8x-5 x ∈ [1, 2 )
Deducir si S(x) es un spline cúbico o no sobre los puntos {−1, 0,1, 2}

13.- Se considera el polinomio a trozos:


= S0 ( x ) 2 x 3 x ∈ [ −1, 0 )
S(x) = 
a ( x − 1)3 +6( x − 1) 2 +b( x − 1)+c x ∈ [1, 2 )
 S1 ( x ) =
Hallar, si existen, los valores de los parámetros a, b y c para que S(x) sea un spline
cúbico sobre los puntos {0,1, 2} .

14.- Para la tabla de valores siguiente:


xi 1 2 2.5 3 4
yi 1.4 1 0.65 0.6 1
a) Hallar el polinomio de interpolación.
b) Hallar un spline no nodo para estos datos.
c) Dibujar los dos polinomios en la misma ventana de dibujo. Comentar el
resultado.

15.- Sea una función f(x) de la que se conoce su valor en los siguientes puntos:
x -2 -1 0 1
f(x) 6 2 1 0
a) Hallar el polinomio de interpolación que se ajusta a esta nube de puntos y
estimar el valor de f (0.5) utilizando dicho polinomio.
b) Hallar un spline cúbico completo que interpole esos datos, suponiendo que
f ’(-2)=5 y que f ’(1 ) = 4 . Estimar con este método el valor de f (0.5).
c) Dibujar, en la misma ventana, los nodos, el polinomio de interpolación y el
spline utilizados y comentar el resultado.

16.-Se consideran los valores de la función f(x) = 1/x en el intervalo [0.1, 10] tomando los
puntos:
(0.1, 10.0); (0.2, 5.0); (0.5, 2.0); (1.0, 1.0); (2.0, 0.5); (5.0, 0.2); (10.0, 0.1).
a) Interpolar estos puntos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.
b) Hallar el spline que pasa por dichos puntos y tiene derivada tercera en los nodos
0.2 y 5.0 (es decir, las dos primeras piezas del spline son el mismo polinomio, al igual que
las dos últimas).
c) Compara ambas aproximaciones, dibujando los dos splines en la misma ventana,
y comenta el resultado.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 4


Interpolación Polinómica

17.- Sea f(x) = cos x.


a. Hallar el polinomio de grado 9 que interpola f en 10 puntos equidistantes del
intervalo [ 0, 6π ] . Dibujarlo.
 11π 
b. Aproximar el valor de cos   utilizando el polinomio anterior y acotar el
 4 
error cometido en dicha aproximación.
c. Hallar un spline completo que se ajuste a esa nube de puntos y aproximar con él
 11π 
el valor de cos   . Dibujarlo en la misma figura que el polinomio de
 4 
interpolación calculado anteriormente junto con la gráfica de f(x). Comentar el
resultado.

18.- a) Hallar, aplicando la definición, el polinomio interpolador para los siguientes


datos:
xi 0 1 2
yi 1 e e2
haciendo los cálculos y el dibujo de los puntos y del polinomio con Matlab.
b) Interpolar el valor de f en 1/2.
c) Calcular el polinomio interpolador de Lagrange.

19.- Sea f(x) = sen x.


a) Hallar el polinomio de grado 9 que interpola f en 10 puntos equidistantes de [0, 1].
Dibujarlo.
b) Obtener una cota del error que se comete al aproximar f(x) con dicho polinomio

20.- Hallar el polinomio interpolador de Newton para los siguientes nodos:

xi -2 -1 1 2

yi 10 4 6 3

Interpolar el valor en x = 1.5.

21.- Dada la tabla de valores siguiente, correspondiente a la función f(x) = sen x:


π π
xi 0
4 2
2
yi 0 1
2
a) Calcular el polinomio de interpolación, aplicando la definición.
b) Calcular el polinomio de Newton con la fórmula de las diferencias divididas.
π
c) Interpolar el valor de f en .
6
d) Acotar el error cometido en la aproximación anterior.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 5


Interpolación Polinómica
e) Interpolar estos datos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.

22.- Dada la tabla de valores siguiente, correspondiente a la función f(x) = cos x:


π π
xi 0
4 2
2
yi 1 0
2
a) Calcular el polinomio de interpolación, aplicando la definición.
b) Calcular el polinomio de Newton con la fórmula de las diferencias divididas.
π
c) Interpolar el valor de f en .
3
d) Acotar el error cometido en la aproximación anterior.
e) Interpolar estos datos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.

23.- La tabla siguiente proporciona el número de viajeros que suben al metro en una
estación a determinada hora de la mañana:

hora 8 9 10 11 12 13 14
viajeros 41 35 21 9 11 17 32

Hallar el polinomio de Newton que interpola estos datos. ¿Qué número de viajeros se
estima que suben a la estación a las 10:30h?

24.- Se consideran los valores de la función f(x) = cos10(x) en los 9 puntos equidistantes
del intervalo [-4, 4] obtenidos mediante una partición del mismo.
a) Interpolar estos puntos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.
b) Hallar el spline que pasa por dichos puntos y tiene derivada tercera en los nodos -3 y
3 (es decir, las dos primeras piezas del spline son el mismo polinomio, al igual que las
dos últimas).
c) Representar y comparar ambas aproximaciones.
d) Hermite para los tres primeros nodos.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 6


Interpolación Polinómica
1.- Dada la tabla de valores:

xi -1 0 1

yi 13 7 9
a) Encontrar el spline cúbico natural que interpola estos datos, imponiendo las
condiciones requeridas y resolviendo el sistema.
b) Misma cuestión resolviendo previamente el sistema tridiagonal para el cálculo de
las derivadas segundas del spline en los nodos.
c) Calcular el spline “no nodo”, hacer una gráfica de nodos y del spline.
d) Dibujar el spline completo que interpola los datos, suponiendo que las derivadas
primeras del spline en los nodos inicial y final son -5 y 5, respectivamente.
Solución:
S 0 (x ) = a 0 (x − x 0 )3 + b 0 (x − x 0 )2 + c 0 (x − x 0 ) + d 0 x ∈ [x 0 , x 1 ]
a) S( x ) =  ⇔
S1 (x ) = a 1 (x − x 1 ) + b1 (x − x 1 ) + c1 (x − x 1 ) + d 1 x ∈ [x 1 , x 2 ]
3 2

S (x ) = a 0 (x + 1) + b 0 (x + 1) + c 0 (x + 1) + d 0 x ∈ [− 1, 0]
3 2
S( x ) =  0
 S1 (x ) = a 1 x + b1 x + c1 x + d 1
3 2
x ∈ [0, 1]

S 0 ' (x ) = 3a 0 (x + 1)2 + 2b 0 (x + 1) + c 0 x ∈ [− 1, 0]
S ' (x) = 
 S1 ' (x ) = 3a 1 x + 2b1 x + c1
2
x ∈ [0, 1]

S ' ' (x ) = 6a 0 (x + 1) + 2b 0 x ∈ [− 1, 0]
S ' ' (x) =  0
S1 ' ' (x ) = 6a 1 x + 2b1 x ∈ [0, 1]
Imponemos las 4n - 2 = 6 condiciones para que sea un spline cúbico:

S 0 (− 1) = d 0 = 13
S (0 ) = a + b + c + d = 7
 0 0 0 0 0

S1 (0 ) = d 1 = 7

S1 (1) = a 1 + b1 + c1 + d 1 = 9
S 0 ' (0 ) = 3a 0 + 2b 0 + c 0 = S1 ' (0 ) = c1

S 0 ' ' (0 ) = 6a 0 + 2b 0 = S1 ' ' (0 ) = 2b1

Además, por tratarse de un spline natural, ha de verificarse:

S 0 ' ' (− 1) = 2b 0 = 0

S1 ' ' (1) = 6a 1 + 2b1 = 0

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 7


Interpolación Polinómica
Los coeficientes del spline son, por tanto, las soluciones del sistema lineal:

0 0 0 1 0 0 0 0   a0  13   a0   2
         
1 1 1 1 0 0 0 0   b0  7  b0   0
0 0 0 0 0 0 0 1   c0  7  c0   −8 
         
0 0 0 0 1 1 1 1   d0  9  d0   13 
= ⇒ = ⇒
3 2 1 0 0 0 −1 0   a1  0  a1   −2 
         
6 2 0 0 0 −2 0 0   b1  0  b1   6
0 2 0 0 0 0 0 0   c1  0 c   −2 
       1  
0 0 0 0 6 2 0 0   d1  0
d 
 1 7

2(x + 1)3 − 8(x + 1) + 13 x ∈ [− 1, 0]


S( x ) = 
− 2 x 3 + 6 x 2 − 2 x + 7 x ∈ [0, 1]

r = S ' ' (− 1) = 0
b) Por ser un spline natural, se verifica:  0
r2 = S ' ' (1) = 0
El sistema tridiagonal tiene n-1 = 1 ecuación con una incógnita, que es r1 = S ' ' (0 ) :
h 0 + h1 h
r1 = e1 − e 0 − 0 r0 ,
3 6
y − y 0 7 − 13 y − y1 9 − 7
siendo h i = 1 , e 0 = 1 = = −6 , e1 = 2 = = 2 . Sustituyendo:
x1 − x 0 0 +1 x 2 − x1 1 − 0

r1 = 2 − (− 6 ) − 0 = 8 ⇒ r1 = 12 = S ' ' (0 )
2 1
3 6
El spline tiene por ecuación:

S (x ) = a 0 (x + 1) + b 0 (x + 1) + c 0 (x + 1) + d 0 x ∈ [− 1, 0]
3 2
S( x ) =  0 ,
 S1 (x ) = a 1 x + b1 x + c1 x + d 1
3 2
x ∈ [0, 1]

ri +1 − ri r y − yi  ri +1 ri 
siendo: a i = , b i = i , c i = i +1 − + h i , d i = y i .
6h i 2 hi  6 3

r1 − r0 r y − y 0  r1 r0 
a0 = = 2 , b0 = 0 = 0 , c0 = 1 −  + h 0 = −8 , d 0 = y 0 = 13 ;
6 2 h0 6 3
r2 − r1 r y − y1  r2 r1 
a1 = = −2 , b1 = 1 = 6 , c1 = 2 −  + h 1 = −2 , d 1 = y1 = 7 .
6 2 h1  6 3

2 ( x + 1)3 − 8 ( x + 1) + 13 x ∈ [ −1, 0]


S(x) =  .
−2x + 6x − 2x + 7
3 2
x ∈ [ 0, 1]

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 8


Interpolación Polinómica
c) Utilizamos la función “spline” de Matlab para calcular el spline “no nodo”:
>> x=[-1 0 1];
>> y=[13 7 9];
>> spline(x,y)
ans =
form: 'pp'
breaks: [-1 1]
coefs: [4 -10 13]
pieces: 1
order: 3
dim: 1

Como en el spline no nodo los polinomios de los dos primeros intervalos son el mismo, se
trata simplemente del polinomio interpolador de grado 2. Los coeficientes vienen dados
por el campo “coefs” de la respuesta: 4(x + 1) − 10(x + 1) + 13 .
2

Representamos el polinomio con 13


Matlab:
12
>> xx=-1:0.2:1;
11
>> yy=spline(x,y,xx);
>> plot(x,y,’*’,xx,yy) 10

6
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

d) Utilizamos de nuevo la misma función de Matlab, “spline”, añadiendo las dos


condiciones del spline completo:
>> x=[-1 0 1]; 13

>> y=[13 7 9]; 12

>> xx=-1:0.2:1; 11
>> zz=spline(x,[-5 y 5],xx);
10
>> plot(x,y,’*’,xx,zz)
9

6
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 9


Interpolación Polinómica
2.- Se quiere construir la línea fronteriza entre dos poblaciones a partir de los datos que
figuran en la siguiente tabla:
xi 0 1 2 3 4 5 6 7

yi 0 25 34 72 115 92 71 65
a) Calcular el polinomio de interpolación que pasa por todos los puntos. Hallar la
ordenada del punto de abscisa 2.5. Representar los datos junto al polinomio que
los interpola, que definiría la frontera entre las poblaciones.
b) Utilizar un spline no nodo para perfilar la frontera. Hallar la ordenada del punto
de la misma de abscisa 2.5. Representar los datos junto al spline que los interpola
en la misma ventana de dibujo que el apartado a).
c) Utilizar un spline natural para perfilar la curva de separación entre las
poblaciones.
Solución:
a)
>> x=[0:7];
>> y=[0 25 34 72 115 92 71 65];
>> polyfit(x,y,7)
ans =

Columns 1 through 6
-0.1079 2.4944 -22.1222 93.9861 -195.3722 181.5194

Columns 7 through 8
-35.3976 -0.0000

>> polyval(ans,2.5)
120
ans = 47.3867
>> % obien: 100
>> p=polyfit(x,y,7);
>> polyval(p,2.5) 80
ans = 47.3867
>> % Dibujo: 60

>> hold on
40
>> xx=0:0.2:7;
>> yy=polyval(p,xx);
20
>> plot(x,y,'*',xx,yy)
0

-20
0 1 2 3 4 5 6 7

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 10


Interpolación Polinómica
b)
>> % Spline no nodo

>> x=[0:7];

>> y=[0 25 34 72 115 92 71 65];

>> ppval(spline(x,y),2.5)

ans = 48.8484

>> % o bien:

>> spline(x,y,2.5)

ans = 48.8484

>> % Dibujo:

>> xx=0:0.2:7;

>> zz=spline(x,y,xx);

>> plot(x,y,'*',xx,zz)
120

100

80

60

40

20

-20
0 1 2 3 4 5 6 7

>> hold off

c) Utilizar un spline natural para perfilar la curva de separación entre poblaciones.

n = 7, r0 = S’’(0) = 0, r7 = S’’(7) = 0.
Sistema tridiagonal para calcular ri, = S’’(xi) , i = 1, …, 6:

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 11


Interpolación Polinómica
 h0 + h1 h1 
 3 0 0 0 0 
6
  h0 
 h1 h1 + h2 
0   r   e1 − e0 − 6 r0 
h2
0 0
 6  1 
  r  
3 6
 − 
h2 + h3 e e
0    
 0 h2 h3 2 2 1


0
 r3 e3 − e2 
6 3 6  
 
 r  =
h3 h3 + h4 h4  4  e4 − e3 
 0 0 0   
 6 3 6 
 r5  e5 − e4
    
h4 h4 + h5 h5   r   
 0    h
0 0  e6 − e5 − r7 
6 6
 6 3 6   6 
 h5 h5 + h6 
 0 0 0 0 
 6 3 
h i = x i +1 − x i = 1, i = 0, …, 6.
y i +1 − y i
ei = , i = 0, …, 6
x i +1 − x i

xi 0 1 2 3 4 5 6 7

yi 0 25 34 72 115 92 71 65

ei 25 9 38 43 -23 -21 -6

 2 1 
 0 0 0 0
3 6
 
 1 2 1
0   r1
 6 3 6
0 0
   −16 
   r2   
 0
1 2 1
0 0 
   29 
 6 3 6  r3   5 
⇔  r = ⇔

0  4 
1 2 1  66 
 0 0
 6 3 6   r5   2 
 1 2 1  
 
 15  
 0 0 0   r6   
 6 3 6
 1 2
 0 0 0 0 
 6 3
4 1 0 0 0 0   r1   −96   r1 = −35.6125
      r = 46.4500
1 4 1 0 0 0   r2   174   2
0 1 4 1 0 0   r3   30   r3 = 23.8124

 =    ⇒ 
0 0 1 4 1 0   r4   − 396   r4 = −111.6998
0 0 0 1 4 1   r5   12   r5 = 26.9866

 
    
 
 
0 0 0 0 1 4  6
r  90   r6 = 15.7533

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 12


Interpolación Polinómica
A partir de las derivadas segundas se calculan los coeficientes del spline:
ri +1 − ri r y − yi  ri +1 ri 
ai = , b i = i , c i = i +1 − + h i , d i = y i , i = 0, …, 6
6h i 2 hi  6 3

tales que Si (x ) = a i (x − x i ) + b i (x − x i ) + c i (x − x i ) + d i , x ∈ [x i , x i +1 ] ,
3 2

i = 0, …, 6.

Se obtiene el spline:
S0 ( x ) =
−5.9354 x 3 + 30.9354 x

S1 ( x ) 13.6771( x − 1) − 17.8063 ( x − 1) + 13.1292 ( x − 1) + 25


=
3 2

S2 ( x ) =−3.7729 ( x − 2 ) + 23.2250 ( x − 2 ) + 18.5479 ( x − 2 ) + 34


3 2

−22.5854 ( x − 3) + 11.9062 ( x − 3) + 53.6791( x − 3) + 72


S3 ( x ) =
3 2

S 4 ( x ) 23.1144 ( x − 4 ) − 55.8499 ( x − 4 ) + 9.7355 ( x − 4 ) + 115


=
3 2

S5 ( x ) =−1.8722 ( x − 5 ) + 13.4933 ( x − 5 ) − 32.6211( x − 5 ) + 92


3 2

S6 ( x ) =−2.6256 ( x − 6 ) + 7.8767 ( x − 6 ) − 11.2511( x − 6 ) + 71


3 2

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 13


Interpolación Polinómica
3.- Un robot debe tomar un objeto situado en la posición 1 y dejarlo en la posición 6 del
recinto esquematizado en la figura. Para ello recorre una trayectoria definida por los
puntos de la tabla, que tratan de evitar los obstáculos del recinto.

2 3 6 Paso 1 2 3 4 5 6
x 1 1 4 4 7 7
1 y 1 4 4 1 1 4
4 5

La trayectoria se obtiene interpolando los


puntos dados (x k , y k ) mediante funciones p y q
tales que (p(t), q(t)) es la posición del brazo en el instante t ∈ [0,1] y (p(tk), q(tk)) =
(x k , y k ) , siendo tk = 0.2 k, k = 0,1,…,5. Representar gráficamente la trayectoria obtenida
si p y q son:
a) Los polinomios de interpolación de (t k , x k ) y (t k , y k ) , respectivamente.
b) Splines “no nodo”.
c) Splines tales que la velocidad inicial y final del robot es 0.
d) Splines tales que la aceleración inicial y final del robot es 0.
¿En qué casos la trayectoria no choca contra los obstáculos ni las paredes del recinto?
Solución:
a)
>> %Interpolamos las abscisas:
>> t=0:0.2:1;
>> x=[1 1 4 4 7 7];
>> p=polyfit(t,x,5)
p=
1.0e+003 *
-0.6250 1.5625 -1.3750 0.5000 -0.0565 0.0010
>> %Interpolamos las ordenadas:
>> y=[1 4 4 1 1 4];
>> q=polyfit(t,y,5)
q=
-312.5000 781.2500 -625.0000 156.2500 3.0000 1.0000
>> %Representamos conjuntamente la trayectoria:
>> tt=0:0.01:1;
>> xx=polyval(p,tt);
>> yy=polyval(q,tt);
>> plot(x,y,'*',xx,yy)

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 14


Interpolación Polinómica
5

4.5

3.5

2.5

1.5

0.5

0
-1 0 1 2 3 4 5 6 7 8 9

b)
>> % Splines no nodo
>> tt=0:0.01:1;
>> xx=spline(t,x,tt);
>> yy=spline(t,y,tt);
>> plot(x,y,'*',xx,yy)

4.5

3.5

2.5

1.5

0.5

0
-1 0 1 2 3 4 5 6 7 8 9

c)
>> % El interpolante pedido es el spline completo o de frontera sujeta
>> %en el que la derivada primera en los extremos es nula.
>> %Se obtiene con la orden "spline", añadiendo los valores de la
>> %derivada al vector de “imágenes".
>> tt=0:0.01:1;
>> xx=spline(t,[0 x 0],tt);

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 15


Interpolación Polinómica
>> yy=spline(t,[0 y 0],tt);
>> plot(x,y,'*',xx,yy)

4.5

3.5

2.5

1.5

0.5

0
0 1 2 3 4 5 6 7 8

d) El spline pedido es el spline natural cuya derivada segunda se anula en los extremos
del intervalo.
Para calcularlo hay que resolver un sistema tridiagonal del tipo al utilizado en el ejercicio
2 apartado c). Saldría una gráfica muy similar a la del spline completo.

¿En qué casos la trayectoria no choca contra los obstáculos ni las paredes del recinto?
En el caso a) la trayectoria se sale de los límites del recinto.
El spline no nodo roza ligeramente las paredes del recinto.
Los splines con condiciones sobre la primera (spline completo) o segunda derivada (spline
natural) en los extremos se comportan mucho mejor, quedando alejados en todo momento de
los bordes y los obstáculos del recinto.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 16


Interpolación Polinómica
4.- Dada la tabla de valores:
x 0 1 3
f (x) 1 5 -17
f ’(x) 3 5 -15

a) Hallar el polinomio de Lagrange que interpola estos datos.


b) Hallar el polinomio de Hermite que interpola estos datos.
c) Representar los dos polinomios anteriores y comentar el resultado.
Solución:

a) El polinomio de Lagrange que interpola estos tres datos puede hallarse:

1) Con Matlab:
>> x=[0 1 3];
>> y=[1 5 -17];
>> polyfit(x,y,2)
ans = -5.0000 9.0000 1.0000 ( coeficientes del polinomio)
El polinomio pedido es:
P(x) = ‐5 x2+ 9 x + 1

2) A mano:
P(x) = L0(x) f(x0)+ L1(x) f(x1)+ L2(x) f(x2) =
( x − x 1 )( x − x 2 ) ( x − x 0 )( x − x 2 ) ( x − x 0 )( x − x 1 )
= y0 + y1 + y2
( x 0 − x 1 )( x 0 − x 2 ) ( x 1 − x 0 )( x 1 − x 2 ) ( x 2 − x 0 )( x 2 − x 1 )

( x − 1)( x − 3) ( x − 0)( x − 3) ( x − 0)( x − 1)


= 1+ 5+ (−17)
(0 − 1)(0 − 3) (1 − 0)(1 − 3) (3 − 0)(3 − 1)

= ‐5 x2+ 9 x + 1

b) Polinomio de Hermite:
Su grado es 2 n + 1 = 5
H(x) = a0 + a1 (x‐z0) + a2 (x‐z0)(x‐z1) + a3 (x‐z0) (x‐z1) (x‐z2) + a4 (x‐z0) (x‐z1) (x‐z2) (x‐z3) +
+ a5 (x‐z0) (x‐z1) (x‐z2) (x‐z3)(x‐z4)

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 17


Interpolación Polinómica

z f(z) 1ª dif. divididas 2ª dif. divididas 3ª dif. divididas 4ª dif. divididas 5ª dif. divididas

z0=x0=0 f(z0)=f(x0)=1

z1=x0=0 f(z1)=f(x0)=1 f[z0, z1]=f '(x0)=3

z2=x1=1 f(z2)=f(x1)=5 f[z1, z2]=4 f[z0, z1, z2]=1

z3=x1=1 f(z3)=f(x1)=5 f[z2, z3]=f '(x1)=5 f[z1, z2, z3]=1 f[z0, z1, z2, z3]=0

z4=x2=3 f(z4)=f(x2)=-17 f[z3, z4]=-11 f[z2, z3, z4]=-8 f[z1, z2, z3, z4]=-3 f[z0, z1, z2, z3, z4]= ‐1

z5=x2=3 f(z5)=f(x2)=-17 f[z4, z5]=f '(x2)=-15 f[z3, z4, z5]=-2 f[z2, z3, z4, z5]=3 f[z1, z2, z3, z4, z5]=2 f[z0, …, z5]=1

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 18


Interpolación Polinómica
Obteniéndose los coeficientes: a0 = 1, a1 = 3, a2 = 1, a3 = 0, a4 = ‐1, a5 = 1, de donde:
H(x) = 1 + 3 x + x2 - x2 (x-1)2 + x2 (x-1)2 (x-3) = x5 – 6x4 + 9x3 – 3x2 + 3x + 1

c) Gráfico de ambos polinomios:


>> x=[0 1 3];
>> y=[1 5 -17];
>> polyfit(x,y,2)
ans = 10

-5.0000 9.0000 1.0000


5

>> xx=[0:0.1:3];
0
>> yy=polyval(ans,xx);
>> plot(x,y,'*',xx,yy) -5

>> hold on -10

>> H=[1 -6 9 -3 3 1];


-15

>> polyval(H,xx);
-20
>> zz=polyval(H,xx); 0 0.5 1 1.5 2 2.5 3

>> plot(x,y,'*',xx,zz,'- -')

La curva en trazo continuo corresponde a la gráfica del polinomio de Lagrange. La de trazo


discontinuo a la del polinomio de Hermite.
Ambas curvas pasan por los puntos (xi, f(xi)) dados; pero, el polinomio de Hermite cumple
además en cada uno de los tres nodos que H’(xi) = f ’(xi), con lo que tiene en común con la
función la pendiente de la recta tangente en esos puntos y, por tanto, la forma de la gráfica es
más parecida; H(x) es una mejor aproximación de la función.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 19


Interpolación Polinómica
5.- Se consideran los valores de la función y = arc tg x en los nodos x = -3, -2, …, 2, 3.
a) Interpolar estos puntos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.
b) Hallar el spline que pasa por dichos puntos y tiene derivada tercera en los nodos -2 y
2 (es decir, las dos primeras piezas del spline son el mismo polinomio, al igual que las
dos últimas).
c) Compara ambas aproximaciones.
Solución:

a) El interpolante pedido en este apartado es el spline completo, que se obtiene con la


orden “spline” de Matlab, añadiendo a las ordenadas los valores de la derivada de la
función en los nodos inicial y final.
1
y' ( x ) = ⇒ y' (−3) = 0.1, y' (3) = 0.1
1+ x2

x0 x1 x2 x3 x4 x5 x6
-3 -2 -1 0 1 2 3
>> x=-3:3;
>> y=atan(x);
>> ps=spline(x,[0.1 y 0.1]);

Los coeficientes de cada pieza del spline están dados en la siguiente matriz:
>> ps.coefs
ans =
-0.0011 0.0430 0.1000 -1.2490
0.0994 0.0397 0.1827 -1.1071
-0.1126 0.3378 0.5602 -0.7854
-0.1126 -0.0000 0.8980 0
0.0994 -0.3378 0.5602 0.7854
-0.0011 -0.0397 0.1827 1.1071

Dibujamos la función (trazo continuo rojo) y el polinomio segmentario (trazo discontinuo


verde):
1.5

>> xx=-3:0.1:3; 0.5

>> yy=ppval(ps,xx);
0
>> plot(x,y,'*',xx,atan(xx))
-0.5
>> hold on
>> plot(x,y,'*',xx,yy,'--') -1

-1.5
-3 -2 -1 0 1 2 3

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 20


Interpolación Polinómica
b) Se trata de calcular el spline no nodo, con la función spline de Matlab:
>> psnn=spline(x,y);

Los coeficientes de cada pieza del spline están dados en la siguiente matriz:

>> psnn.coefs

ans =
0.0784 -0.1454 0.2089 -1.2490
0.0784 0.0899 0.1534 -1.1071
-0.1084 0.3253 0.5686 -0.7854
-0.1084 0 0.8938 0
0.0784 -0.3253 0.5686 0.7854
0.0784 -0.0899 0.1534 1.1071
Dibujamos la función (trazo continuo rojo) y el spline no nodo (trazo discontinuo verde):
>> xx=-3:0.1:3;
1.5
>> plot(x,y,'*',xx,atan(xx))
1
>> hold on
>> yynn=ppval(psnn,xx); 0.5

>> plot(x,y,'*',xx,yynn,'--') 0

-0.5

-1

-1.5
-3 -2 -1 0 1 2 3

c) Diferencia entre la función y cada uno de los interpoladores (trazo continuo la


diferencia con el spline no nodo y discontinuo con el completo):

0.04
>> xx=-3:0.1:3;
0.03
>> dif1=atan(xx)-ppval(ps,xx);
0.02

>> dif2=atan(xx)-ppval(psnn,xx); 0.01

>> plot(xx,dif1,':');hold on 0

>> plot(xx,dif2) -0.01

Se observa en la figura que la -0.02

diferencia máxima con ambos -0.03

-0.04
splines es muy similar. El spline -3 -2 -1 0 1 2 3

completo se adapta mejor en el


sentido de que en las piezas extremas tiene la misma convexidad que la función.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 21


Interpolación Polinómica
6.- La tabla siguiente refleja la demanda de energía eléctrica en España cada dos horas
de un día de invierno.

Hora 0 2 4 6 8 10 12
MW 31250 28000 26000 26000 34000 37500 38000
Hora 14 16 18 20 22 24
MW 35500 34500 38500 39500 36500 33000
a) Hallar el polinomio de grado 12 que interpola los valores dados. Analizar el
comportamiento del polinomio de interpolación.
b) Se propone mejorar la interpolación dividiendo el intervalo en dos, de 0 a 12 y de
12 a 24, y hallando un polinomio para cada intervalo. Representar los polinomios
obtenidos y comparar el resultado con el del apartado anterior.
c) Interpolar los datos con un spline cúbico y comparar con los ajustes anteriores.
Solución:
a) Utilizamos la función polyfit de Matlab:
>> h=[0:2:24];
>> MW=[31250 28000 26000 26000 34000 37500 38000 35500 34500 38500 39500 36500
33000];
>> p=polyfit(h,MW,12)
Avisa Matlab:
Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the
degree of the polynomial, or try centering and scaling as described in HELP POLYFIT. In
polyfit at 80.
Ocurre que los coeficientes del polinomio buscado varían mucho en magnitud unos de otros:
>> format long
>> p=polyfit(h,MW,12)
Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the
degree of the polynomial, or try centering and scaling as described in HELP POLYFIT. In
polyfit at 80
p=
1.0e+005 *
Columns 1 through 2
0.000000000003194 -0.000000000491669
Columns 3 through 4
0.000000033422949 -0.000001320675776
Columns 5 through 6

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 22


Interpolación Polinómica
0.000033588279532 -0.000574933611469
Columns 7 through 8
0.006723751451460 -0.053355005873978
Columns 9 through 10
0.278829344344224 -0.901583331723715
Columns 11 through 12
1.596506887689424 -1.162227227277939
Column 13
0.312500000735327

Efectivamente se obtiene un polinomio cuyos coeficientes varían mucho de escala:


p(t) = 3.19446 ⋅ 10 −7 x 12 − 4.91669 ⋅ 10 −5 x 11 + 0.00334229 x 10 − 0.132068 x 9 + 3.35883 x 8 −
− 57.4934 x 7 + 672.375 x 6 − 5335.5 x 5 + 27882.9 x 4 − 90158.3 x 3 + 159651 x 2 − 116223 x + 31250
Lo dibujamos junto con los nodos:
4
>> hh=0:0.1:24; 4
x 10

>> MMW=polyval(p,hh); 3.5

>> plot(h,MW,'*',hh,MMW) 3

2.5

1.5

0.5

0
0 5 10 15 20 25

Presenta oscilaciones en los


extremos del intervalo, particularmente en el izquierdo, como se observa en la figura.
b) Interpolamos dos polinomios dividiendo el intervalo por la mitad:
>> p1=polyfit(h(1:7),MW(1:7),6)
p1 =
1.0e+004 *
Columns 1 through 3
0.000122070312500 -0.004280598958333 0.055240885416664
Columns 4 through 6
-0.321158854166649 0.848958333333274 -0.953124999999938
Column 7
3.125000000000038

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 23


Interpolación Polinómica
>> p2=polyfit(h(7:13),MW(7:13),6)
Warning: Polynomial is badly conditioned. Add points with distinct X
values, reduce the degree of the polynomial, or try centering
and scaling as described in HELP POLYFIT.
> In polyfit at 80
p2 =
1.0e+007 *
Columns 1 through 3
-0.000000045572917 0.000005130208333 -0.000237499999996
Columns 4 through 6
0.005780208333237 -0.077911770832061 0.550972083324486
Column 7
-1.592449999974678
Hacemos la gráfica con Matlab: 4
x 10
4
>> hh1=0:0.1:12;
3.8
>> MMW1=polyval(p1,hh1);
3.6
>> hh2=12:0.1:24;
3.4
>> MMW2=polyval(p2,hh2);
>> 3.2

plot(h,MW,'*',hh1,MMW1,':',hh2, 3

MMW2,'-') 2.8

Los sistemas a resolver en este caso 2.6

no son tan mal condicionados. 2.4


0 5 10 15 20 25
Casualmente la unión de los dos
subintervalos es “suave”.
c) Ajustemos un polinomio segmentario cúbico:
Al tratarse de datos experimentales no tenemos información acerca de las derivadas, por lo
que utilizamos un spline no nodo.
>> ps=spline(h,MW);
>> s=ps.coefs
s=
1.0e+004 *
Columns 1 through 3
-0.004723596507750 0.043966579046499 -0.231538772061998

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 24


Interpolación Polinómica
-0.004723596507750 0.015625000000000 -0.112355613969001
0.032992982538749 -0.012716579046499 -0.106538772061998
-0.052248333647246 0.185241316185995 0.238510702216994
0.019750352050235 -0.128248685697481 0.352495963194022
-0.008003074553693 -0.009746573396072 0.076505445006917
0.012261946164539 -0.057765020718232 -0.058517743221691
0.015205289895539 0.015806656269000 -0.142434472120155
-0.029333105746693 0.107038395642232 0.103255631702309
0.002127133091235 -0.068960238837929 0.179411945310917
0.008324573381753 -0.056197440290518 -0.070903412945976
0.008324573381753 -0.006250000000000 -0.195798293527012
Column 4
3.125000000000000
2.800000000000000
2.600000000000000
2.600000000000000
3.400000000000000
3.750000000000000
3.800000000000000
3.550000000000000
3.450000000000000
3.850000000000000
3.950000000000000
3.650000000000000
>> MWs=ppval(ps,hh); 4
4
x 10

>> plot(h,MW,'*',hh,MWs)
>> 3.5

2.5
0 5 10 15 20 25

Los coeficientes del spline están mejor escalados que los del polinomio y la gráfica sugiere
una evolución más razonable de la demanda eléctrica.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 25


Interpolación Polinómica
7.- Dada la tabla de valores (funciones de Bessel):

x0 x1 x2 x3 x4
x 1 1.3 1.6 1.9 2.2
f (x) 0.7651977 0.620086 0.4554022 0.2818186 0.11036

a) Comparar las aproximaciones de f(1.5) utilizando polinomios de interpolación de


grado 1, 2, 3 y 4. b) Sabiendo que f(1.5) = 0.5118277, ¿con qué polinomio se ha obtenido
la mejor aproximación?
Solución:
a) Polinomio de interpolación de grado1: p1
Como 1.5 se encuentra entre los nodos x1 y x2, utilizamos éstos para la interpolación
lineal:
>> format long
>> x=[1.3 1.6];
>> y=[0.620086 0.4554022];
>> p1=polyfit(x,y,1) p1 = -0.548946000000001 1.333715800000002
>> polyval(p1,1.5)
ans = 0.510296800000000
Polinomio de interpolación de grado 2.
Con los nodos x0 , x1 y x2: p2a
>> x=[1 1.3 1.6];
>> y=[0.7651977 0.620086 0.4554022];
>> p2a=polyfit(x,y,2)
p2a = -0.108733888888888 -0.233617722222224 1.107549311111114
>> polyval(p2a,1.5)
ans = 0.512471477777778

Con los nodos x1 , x2 y x3: p2b


>> x=[1.3 1.6 1.9];
>> y=[0.620086 0.4554022 0.2818186];
>> p2b=polyfit(x,y,2) P2b = -0.049443333333334 -0.405560333333330
1.230873666666664
>> polyval(p2b,1.5)
ans = 0.511285666666667

Polinomio de interpolación de grado 3. Con los nodos x0, x1 , x2 y x3: p3a


>> x=[1 1.3 1.6 1.9];
>> y=[0.7651977 0.620086 0.4554022 0.2818186];
>> p3a=polyfit(x,y,3)
P3a = 0.065878395061728 -0.365659629629624
0.094456685185174 0.970522249382723
>> polyval(p3a,1.5)
ans = 0.511812693827161

Polinomio de interpolación de grado 3. Con los nodos x1 , x2 , x3 y x4: p3b


>> x=[1.3 1.6 1.9 2.2];
>> y=[0.620086 0.4554022 0.2818186 0.11036];
>> p3b=polyfit(x,y,3)
P3b = 0.068054320987657 -0.376104074074088
0.110971962962986 0.961922990123445

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 26


Interpolación Polinómica
>> polyval(p3b,1.5)
ans = 0.511830101234568

Polinomio de interpolación de grado 4: p4


>> x=[1 1.3 1.6 1.9 2.2];
>> y=[0.7651977 0.620086 0.4554022 0.2818186 0.11036];
>> p4=polyfit(x,y,4)
= 0.001813271604944 0.055361419753045 -0.343193194444342
0.073527904320876 0.977688298765476
>> polyval(p6,1.5)
ans = 0.511819946913580

b) Sabiendo que f(1.5) = 0.5118277, los errores reales cometidos han sido:
Con p1:
>> abs(0.7848-0.5118277)
ans = 0.272972300000000

Con p2a:
>> abs(0.512471477777778-0.5118277)
ans = 6.437777777780207e-004 = 0.000643777777778

Con p2b:
>> abs(0.511285666666667-0.5118277)
ans = 5.420333333330252e-004 = 0.000542033333333

Con p3a:
>> abs(0.511812693827161-0.5118277)
ans = 1.500617283900496e-005 = 0.000015006172839

Con p3b:
>> abs(0.511830101234568-0.5118277)
ans = 2.401234567961375e-006 = 0.000002401234568

Con p4:
>> abs(0.511819946913580-0.5118277)
ans = 7.753086419981514e-006 = 0.000007753086420

Por tanto, la mejor aproximación es p3b(1.5) con el polinomio de grado 3. Si no se hubiera


conocido el valor real de f(1.5), se hubiera aceptado p4(1.5) como mejor aproximación.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 27


Interpolación Polinómica
8.- Dada la tabla de valores siguiente, correspondiente a la función f(x) = tg (x):
xi π 0 π

4 4
yi -1 0 1

d) Calcular el correspondiente polinomio de interpolación, aplicando la definición.


e) Calcular a mano el polinomio de Newton con la fórmula de las diferencias
divididas.
π
f) Interpolar el valor de f en .
8

Solución:
a) Al tener 3 nodos, el polinomio de interpolación será de grado 2 y ha de pasar por los
tres puntos:

P2 ( x ) = a2 x 2 + a1 x + a0
 π π2  π
P2  −  = a2 + a1  −  + a0 =
−1
 4 16  4
P2 ( 0=
) a=0 0
π π2 π
P2  =
 a2 + a1 + a=
0 1
4 16 4
Por tanto, para hallar los coeficientes del polinomio, hay que resolver el sistema:
 π2 π 
 − 1 0
 16 4   a2   −1  a2   
      4 4
 0 0 1  a1  = 1  ⇔  a1  =  ⇒ P2 ( x ) = x ≈ 1.2732x
 2  a   1  a   π π
 π π
1  0     0  
0

 16 4 

Comprobación con Matlab:


>> x=[-pi/4 0 pi/4];
>> y=[-1 0 1];
>>p= polyfit(x,y,2)
ans =
0 1.2732 0

b) Fórmula de las diferencias divididas de Newton:

) f [ x0 ] + f [ x0 , x1 ] ( x − x0 ) + f [ x0 , x1 , x2 ] ( x − x0 )( x − x1 )
P2 ( x =

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 28


Interpolación Polinómica
xi f(xi) Dif. Div. de orden1 Dif. Div. de orden2
π
x0 = − f [x0] = -1
4
f [ x1 ] − f [ x0 ] 4
=
f [ x0 , x1 ] =
x1 − x0 π

f [ x1 , x2 ] − f [ x0 , x1 ]
x1 = 0 f [x1] = 0 =
f [ x0 , x1 , x2 ] = 0
x2 − x0
f [ x2 ] − f [ x1 ] 4
=
f [ x1 , x2 ] =
x2 − x1 π

π
x2 = f [x2] = 1
4
4 π  π 4 π
Luego, P2 ( x ) =-1 +  x +  + 0  x +  ( x − 0 ) =−1 +  x + 
π 4  4 π 4
π 4 π 1
c) P2   = ⋅ =
8 π 8 2

Con Matlab:
>> p=polyfit(x,y,2);
>> polyval(p,pi/8)
ans = 0.5000

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 29


Interpolación Polinómica
9.- Para la función f(x) = tg (x), se considera la tabla de valores:
xi π π π 0 π π π
− − −
3 4 6 6 4 3
yi − 3 -1
3 0 3 1 3

3 3
d) Hallar el polinomio de interpolación correspondiente a estos datos.
e) Interpolar estos puntos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.
f) Hallar el spline que pasa por dichos puntos y tiene derivada tercera en los nodos
π π
− y (es decir, las dos primeras piezas del spline son el mismo polinomio, al
4 4
igual que las dos últimas).

Solución:
a) Polinomio de interpolación de grado 6 (puesto que hay 7 nodos):

>> x=[-pi/3 -pi/4 -pi/6 0 pi/6 pi/4 pi/3];


>> y=[-sqrt(3) -1 -(sqrt(3))/3 0 (sqrt(3))/3 1 (sqrt(3))];
>> p=polyfit(x,y,6)
p = 0.0000 0.3597 -0.0000 0.1773 0.0000 1.0270 0.0000
Luego, el polinomio de interpolación es:
p (x)= 0.0000 x6 + 0.3597 x5 - 0.0000 x4 + 0.1773 x3 + 0.0000 x2 + 1.0270 x

b) Se trata de un spline completo:

 π 1 1
 f '(− 3 =
)
π
= = 4
2
 cos (− )
2  1 
 
1  3 2
'( x) (=
f= tgx ) ' ⇒ 
2
cos x  f= π 1 1
'( ) = = 4
 3 2 π
2
cos ( )  1 
 3  
 2
>> sc=spline(x,[4 y 4])
sc =
form: 'pp'
breaks: [-1.0472 -0.7854 -0.5236 0 0.5236 0.7854 1.0472]
coefs: [6x4 double]
pieces: 6
order: 4
dim: 1
>> sc.coefs
ans =

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 30


Interpolación Polinómica
5.5340 -6.0469 4.0000 -1.7321
1.2815 -1.7005 1.9718 -1.0000
0.4418 -0.6939 1.3449 -0.5774
0.4418 -0.0000 0.9815 0
1.2815 0.6939 1.3449 0.5774
5.5340 1.7005 1.9718 1.0000
Luego, el spline completo es:
π π π  π π
3 2
  
S0 ( x ) =
5.5340   x +  − 6.0469  x +  +    4.0000   x +  − 1.7321, x ∈  − , − 
 3  3  3  3 4

π π π  π π
3 2 3
  
S1 ( x ) =  x +  −1.7005  x +    1
1.2815   +   .9718  1.0000,
x+  − x ∈ − , − 
 4  4  4  4 6

π π π  π 
3 2
  
S2 ( x ) =  x +  −0.6939  
0.4418    x +  +1 .3449  
 x +  −0.5774, x ∈  − , 0 
 6  6  6  6 
 π
=S3 ( x ) 0.4418  0.0
x 3 − 000   0.9815 
x2 + x, x ∈ 0, 
 6

π π π π π 
3 2
  
( x ) 1.2815   0.6939  
S 4= x−  +  x −  + 1 .3449   0.5774
x− + , x∈ , 
 6  6  6 6 4

π π π π π 
3 2
  
5 ( x)
S= 5.5340   x −  +1 .7005  
 x −  + 1 .9718  
 x −  + 1 .0000, x ∈  , 
 4  4  4 4 3

c) Se pide el spline no nodo:

>> sn=spline(x,y)
sn =
form: 'pp'
breaks: [-1.0472 -0.7854 -0.5236 0 0.5236 0.7854 1.0472]
coefs: [6x4 double]
pieces: 6
order: 4
dim: 1
>> sn.coefs
ans =
2.1084 -3.9131 3.6762 -1.7321
2.1084 -2.2571 2.0608 -1.0000
0.3827 -0.6012 1.3125 -0.5774
0.3827 0.0000 0.9977 0
2.1084 0.6012 1.3125 0.5774
2.1084 2.2571 2.0608 1.0000

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 31


Interpolación Polinómica
Luego, el spline no nodo es:
π π π  π π
3 2
  
S0 ( x ) =
2.1084   x +  − 3.9131 x +  +    3.6762   x +  − 1.7321, x ∈  − , − 
 3  3  3  3 4

π π π  π π
3 2 3
  
S1 ( x ) =  x +  −2.2571 x +     
2.1084   + 2.0608  1.0000,
x+  − x ∈ − , − 
 4  4  4  4 6

π π π  π 
3 2
  
S2 ( x ) =  x +  −0.6012   
0.3827    x +  +1.3125  x +  − 0.5774, x ∈  − , 0 
 6  6  6  6 
      
 π
=S3 ( x ) 0.3827  
x 3 −0.0000   0.9977
x2 + x, x ∈ 0, 
 6

π π π π π 
3 2
  
4 ( x)
S= x−  +  x −  +   .3125    0.5774,
2.1084   0.6012  1 x− + x∈ , 
 6  6  6 6 4

π π π π π 
3 2
  
5 ( x)
S= x−  + x−  +  x −  + 1 .0000, x ∈  , 
2.1084   2.2571   2.0608  
 4  4  4 4 3

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 32


Interpolación Polinómica
10.- Para la tabla de valores:
xi 1 2 3 4 5 6 7 8 9 10

yi 2 6 5 10 67 45 23 5 9 1
a) Hallar el polinomio de interpolación.
b) Hallar un spline no nodo para estos datos.
c) Dibujar los dos polinomios en la misma ventana de dibujo. Comentar el resultado.

Solución:
a) Polinomio de interpolación de grado 9 (puesto que hay 10 nodos):

>> x=[1:10];
>> y=[2 6 5 10 67 45 23 5 9 1];
>> p=polyfit(x,y,9)
Warning: Polynomial is badly conditioned. Add points with distinct X values, reduce the
degree of the polynomial, or try centering and scaling as described in HELP POLYFIT.
> In polyfit at 75
p = 1.0e+04 *
-0.0000 0.0001 -0.0012 0.0141 -0.1040 0.4846 -1.4110 2.4463 -2.2596
0.8308
Luego, el polinomio de interpolación es:
p (x)= -0.0000 x9 + 0.0001 x8 - 0.0012 x7 + 0.0141 x6 - 0.1040 x5 + 0.4846 x4 - 1.4110 x3 +
2.4463 x2 -2.2596 x + 0.8308

b) Spline no nodo:

>> sn=spline(x,y)
sn =
form: 'pp'
breaks: [1 2 3 4 5 6 7 8 9 10]
coefs: [9x4 double]
pieces: 9
order: 4
dim: 1
>> sn.coefs
ans =
-2.5916 5.2748 1.3168 2.0000
-2.5916 -2.5000 4.0916 6.0000
23.9580 -10.2748 -8.6832 5.0000
-47.2405 61.5993 42.6412 10.0000
34.0041 -80.1223 24.1182 67.0000

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 33


Interpolación Polinómica
-9.7757 21.8899 -34.1142 45.0000
9.0989 -7.4373 -19.6616 23.0000
-8.6198 19.8593 -7.2396 5.0000
-8.6198 -6.0000 6.6198 9.0000

Los coeficientes anteriores de cada tramo del spline Si, son coeficientes de las potencias de
(x-xi), i=0,…, 8.
Escribimos, por ejemplo, el primero de ellos:
( x − 1) + 0000, x ∈ [1, 2]
S0 ( x ) −2.5916  ( x − 1) + 5.2748 ( x − 1) +   1 .3168  2.
=
3 2

c) Gráficas en la misma ventana:

150
>> xx=[1:0.1:10];
>> yy=polyval(p,xx);
100
>> plot(xx,yy)
>> hold on
50
>> plot(x,y,'*')
>> zz=ppval(sn,xx);
0
>> plot(xx,zz,'--')
-50

-100

-150
1 2 3 4 5 6 7 8 9 10

Con el spline se han evitado las fluctuaciones del polinomio de interpolación que se producían
debido al grado elevado del polinomio, sobre todo en los subintervalos de los extremos.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 34


Interpolación Polinómica
11.- A lo largo de un día se han recogido los siguientes datos de temperaturas:

Hora 10 13 17
Temp. ºC 7 17 11

Hallar el polinomio de Newton que se ajusta a los tres nodos.


Solución:
x f[x0] Dif. Div. de orden 1 Dif. Div. de orden 2
10 7
(17-7)/(13-10)=10/3
13 17 (-3/2-10/3)/(17-10)= -29/42
(11-17)/(17-13)=-3/2
17 11
Luego el polinomio de Newton pedido es:
P(n=
) f ( x0 ) + f [ x0 , x1 ]( x − x0 ) + f [ x0 , x1 , x2 ]( x − x0 )( x − x1=
)
10 29
=7 + ( x − 10) − ( x − 10)( x − 13) =
3 42
29 269 2438
− x2 − x+
42 14 21

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 35


Interpolación Polinómica
12.- Se considera el polinomio a trozos:
= S0 ( x ) x 2 -1 x ∈ [ −1, 0 )

S(x)==  S1 ( x ) 2 x 2 -1 x ∈ [ 0,1)

 S 2 ( x ) =
−2 x 2 +8x-5 x ∈ [1, 2 )
Deducir si S(x) es un spline cúbico o no sobre los puntos {−1, 0,1, 2}
Solución:
S(x) es un spline cúbico si y sólo si S, S’ y S’’ son funciones continuas en [ −1, 2] . Como se
trata de tres polinomios a trozos, solo hay que comprobar la continuidad en los puntos de
separación de los subintervalos x = 0 y x = 1.

 S0 ( x ) = x 2 -1 =  S0 ' ( x ) 2= x  S0 '' ( x ) 2
  
 S1 ( x ) =2 x -1 ⇒  S1 ' ( x ) =4 x ⇒  S1 '' ( x ) =4
2

  
 S 2 ( x ) = −2 x +8x-5  S 2 ' ( x ) =−4 x +8  S 2 '' ( x ) =−4
2

 S0 ( 0 ) =−1 =S1 (0)



 S1 (1)= 1= S 2 (1)
 S ' 0 = 0= S '(0)
 0 ( ) 1

 S1 ' (1)= 4= S 2 '(1)
 S '' 0 = 2 ≠ 4 = S ''(0)
 0 ( ) 1

 S1 '' (1) = 4 ≠ −4 = S 2 ''(1)



Luego, no es un spline cúbico sobre esos puntos pues S’’(x) no es una función continua en
[ −1, 2]

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 36


Interpolación Polinómica
13.- Se considera el polinomio a trozos:
= S0 ( x ) 2 x
3
x ∈ [ −1, 0 )
S(x) = 
a ( x − 1)3 +6( x − 1) 2 +b( x − 1)+c x ∈ [1, 2 )
 S1 ( x ) =
Hallar, si existen, los valores de los parámetros a, b y c para que S(x) sea un spline
cúbico sobre los puntos {0,1, 2} .
Para que S(x) sea un spline cúbico sobre los puntos {0,1, 2} ha de verificarse que S, S’ y
S’’ sean funciones continuas en [0, 2]
 S0 ' ( x ) 6=x2  S0 ''' ( x ) 12 x
 ⇒ 
 S1 ' ( x ) =
3a ( x − 1) 2 +12( x − 1)+b  S1 ''=( x ) 6a( x − 1)+12
 S0 (1)= 2= c= S1 (1)

 S0 ' (1)= 6= b= S1 ' (1)

 S0 '' (1=
) 12= S1 '' (1)
Luego, para que S(x) sea un spline cúbico sobre esos puntos han de ser b=6, c=2 y “a”
puede tomar cualquier valor.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 37


Interpolación Polinómica
14.- Para la tabla de valores siguiente:
xi 1 2 2.5 3 4
yi 1.4 1 0.65 0.6 1
a) Hallar el polinomio de interpolación.
b) Hallar un spline no nodo para estos datos.
c) Dibujar los dos polinomios en la misma ventana de dibujo. Comentar el
resultado.
Solución:
a) >> x=[1 2 2.5 3 4];y=[1.4 1 0.65 0.6 1];p=polyfit(x,y,4)
p=
-0.1778 1.9111 -7.0222 9.9556 -3.2667
b) >> snn=spline(x,y)
snn =
form: 'pp'
breaks: [1 2 2.5000 3 4]
coefs: [4x4 double]
pieces: 4
order: 4
dim: 1
>> snn.coefs
ans =
0.4889 -1.4222 0.5333 1.4000
0.4889 0.0444 -0.8444 1.0000
-0.2222 0.7778 -0.4333 0.6500
-0.2222 0.4444 0.1778 0.6000
c) >> xx=[1:0.1:4];
>> yy=polyval(p,xx);
>> zz=ppval(snn,xx);
>> plot(x,y,'*',xx,yy)
>> hold on
>> plot(xx,zz,'--')
1.8

1.6

1.4

1.2

0.8

0.6

0.4
1 1.5 2 2.5 3 3.5 4

En la parte central son bastante coincidentes las gráficas. En los nodos extremos presenta algo
menor fluctuación el spline no nodo.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 38


Interpolación Polinómica
15.- Sea una función f(x) de la que se conoce su valor en los siguientes puntos:
x -2 -1 0 1
f(x) 6 2 1 0
a) Hallar el polinomio de interpolación que se ajusta a esta nube de puntos y
estimar el valor de f (0.5) utilizando dicho polinomio.
b) Hallar un spline cúbico completo que interpole esos datos, suponiendo que
f ’(-2)=5 y que f ’(1 ) = 4 . Estimar con este método el valor de f (0.5).
c) Dibujar, en la misma ventana, los nodos, el polinomio de interpolación y el
spline utilizados y comentar el resultado.
Solución:
a)
x f[x0] Dif. Div. de orden 1 Dif. Div. de orden 2 Dif. Div. de orden 3
-2 6
(2-6)/(-1+2)=-4
-1 2 (-1+4)/(0+2)= 3/2
(1-2)/(0+1)=-1 (0-3/2)/(1+2)= -1/2
0 1 (-1+1)/(1+1)=0
(0-1)/(1-0)=-1
1 0
Luego el polinomio de Newton pedido es:
P(n) = f ( x0 ) + f [ x0 , x1 ]( x − x0 ) + f [ x0 , x1 , x2 ]( x − x0 )( x − x1 ) + f [ x0 , x1 , x3 ]( x − x0 )( x − x1 )( x − x2 ) =
3 1 1 1
= 6 − 4( x + 2) + ( x + 2)( x + 1) − ( x + 2)( x + 1)( x − 0) = − x3 − x + 1
2 2 2 2
1 1
f (0,5) =− 0,53 − 0,5 + 1 =0,6875
2 2
Con DERIVE:
>> x=[-2 -1 0 1];y=[6 2 1 0];
>> p=polyfit(x,y,3)
p=
-0.5000 0.0000 -0.5000 1.0000
>> polyval(p,0.5) ans =
0.6875
b)
>> spc=spline(x,[-5 y -4]) spc
=form: 'pp' breaks: [-2 -1 0 1]
coefs: [3x4 double] pieces:
3
order: 4
dim: 1
>> spc.coefs ans =

0.4667 0.5333 -5.0000 6.0000


-0.4000 1.9333 -2.5333 2.0000
-1.8667 0.7333 0.1333 1.0000
Luego el spline pedido es:

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 39


Interpolación Polinómica

>> pval(spc,0.5)
ans =
1.0167
c)
>> plot(x,y,'*')
>> hold on
>> xx=[-2:0.1:1];
>> yy=polyval(p,xx);
>> zz=ppval(spc,xx);
>> plot(xx,yy,xx,zz,'--')

0
-2 -1.5 -1 -0.5 0 0.5 1

La forma de la gráfica de f(x), al menos en los extremos, ha de ser más parecida a la del
spline completo (en trazo discontinuo) al haber obligado a que coincidan las derivadas del
spline con las derivadas de la función en los nodos inicial y final.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 40


Interpolación Polinómica
16.-Se consideran los valores de la función f(x) = 1/x en el intervalo [0.1, 10] tomando los
puntos:
(0.1, 10.0); (0.2, 5.0); (0.5, 2.0); (1.0, 1.0); (2.0, 0.5); (5.0, 0.2); (10.0, 0.1).
a) Interpolar estos puntos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.
b) Hallar el spline que pasa por dichos puntos y tiene derivada tercera en los nodos
0.2 y 5.0 (es decir, las dos primeras piezas del spline son el mismo polinomio, al igual que
las dos últimas).
c) Compara ambas aproximaciones, dibujando los dos splines en la misma ventana,
y comenta el resultado.
Solución:
a) El interpolante pedido en este apartado es el spline completo, que se obtiene con la
orden “spline” de Matlab, añadiendo a las ordenadas los valores de la derivada de la función
en los nodos inicial y final
f ’(x) =
>> x=[0.1,0.2,0.5,1,2,5,10];
>> y=[10,5,2,1,0.5,0.2,0.1];
>>ps=spline(x,[-100 y -1/100]);
>>ps.coefs
ans =
1.0e+03 *
-2.2075 0.7208 -0.1000 0.0100
-0.0608 0.0585 -0.0221 0.0050
-0.0019 0.0038 -0.0034 0.0020
-0.0003 0.0009 -0.0011 0.0010
-0.0000 0.0000 -0.0002 0.0005
-0.0000 0.0000 -0.0000 0.0002
>>xx=0.1:0.1:10;
>>yy=ppval(ps,xx);
>>plot(x,y,'*',xx, yy)
b) Se trata de calcular el spline no nodo, con la función spline de Matlab:
>>psnn=spline(x,y);
>>psnn.coefs 10

ans =
8
-158.1959 179.0980 -66.3278 10.0000
-158.1959 131.6392 -35.2541 5.0000 6

9.4083 -10.7371 1.0165 2.0000


4
-1.2109 3.3753 -2.6644 1.0000
0.0243 -0.2574 0.4535 0.5000 2

0.0243 -0.0386 -0.4347 0.2000


0
>>holdon
>>yynn=ppval(psnn,xx); -2
0 1 2 3 4 5 6 7 8 9 10

>>plot(x,y,'*',xx,yynn,'--')
c) El spline completo aproxima mejor la función, sobre todo en la parte derecha de la gráfica
en la que los nodos están más distanciados.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 41


Interpolación Polinómica
17.- Sea f(x) = cos x.
a) Hallar el polinomio de grado 9 que interpola f en 10 puntos equidistantes del intervalo
[0, 6π ] . Dibujarlo.
 11π 
b) Aproximar el valor de cos   utilizando el polinomio anterior y acotar el error
 4 
cometido en dicha aproximación.
c) Hallar un spline completo que se ajuste a esa nube de puntos y aproximar con él el
 11π 
valor de cos   . Dibujarlo en la misma figura que el polinomio de interpolación
 4 
calculado anteriormente junto con la gráfica de f(x). Comentar el resultado.

Solución:
a)
>> x=linspace(0,6*pi,10);
>> y =cos(x);
>> p=polyfit(x,y,9)
Warning: Polynomialisbadlyconditioned. Addpointswithdistinct X
values, reduce thedegree of thepolynomial, or try centering
andscaling as described in HELP POLYFIT.
> In polyfit at 76

p = Columns 1 through 7
0.0000 -0.0000 0.0002 -0.0063 0.1005 -0.8942 4.3257
Columns 8 through 10
-10.1479 8.0802 1.0000

>>xx=0:0.01:6*pi;
>>yy=polyval(p,xx);
>>plot(x,y,'*',xx,yy)
>>holdon

b)
>>polyval(p,11*pi/4)
ans = -0.6689
>> ((6*pi)^10)/(factorial(10))
ans = 1.5604e+06

c)
>>sp=spline(x,[0 y 0])
sp =
form: 'pp'
breaks: [1x10 double]
coefs: [9x4 double]
pieces: 9
order: 4
dim: 1
>> sp.coefs
ans =
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 42
Interpolación Polinómica
0.1633 -0.6839 0 1.0000
0.0000 0.3420 -0.7162 -0.5000
-0.1633 0.3420 0.7162 -0.5000
0.1633 -0.6839 0.0000 1.0000
0.0000 0.3420 -0.7162 -0.5000
-0.1633 0.3420 0.7162 -0.5000
0.1633 -0.6839 0.0000 1.0000
0.0000 0.3420 -0.7162 -0.5000
-0.1633 0.3420 0.7162 -0.5000

Cada fila de la matriz anterior contiene los coeficientes de cada uno de los polinomios
cúbicos S k , k=0,...,9 , que conforman el spline expresados en potencias de ( x − xk ) .
>>ppval(sp,11*pi/4)
ans = -0.6641

>>zz=ppval(sp,xx);
>>plot(xx,zz,'--')

>>rr=cos(xx);
>>plot(xx,rr,':')
3.5

2.5

1.5

0.5

-0.5

-1

-1.5
0 2 4 6 8 10 12 14 16 18 20

Se observa en la gráfica las fluctuaciones que muestra el polinomio interpolador, sobre todo
en los subintervalos extremos, problema que queda resuelto con el spline.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 43


Interpolación Polinómica
18.- a) Hallar, aplicando la definición, el polinomio interpolador para los siguientes
datos:
xi 0 1 2

yi 1 e e2
haciendo los cálculos y el dibujo de los puntos y del polinomio con Matlab.
b) Interpolar el valor de f en 1/2.
c) Calcular el polinomio interpolador de Lagrange.
Solución:
a) P2(x) = a2 x 2 + a1 x + a0 . Como el polinomio ha de pasar por los nodos, se ha de verificar:
−1
a0 = 1  0 0 1  a2   1   a2   0 0 1  1   1.4762 
             
a2 + a1 + a0= e ⇔  1 1 1  a1 =  e  ⇒  a1 =  1 1 1  e =  0.2420 
  4 2 1  a   e2   a   4 2 1  e 2   1 
4a2 + 2a1 + a0 =e2   0     0      
Obteniéndose: P2(x) = 1.4762 x 2 + 0.2420 x + 1 .
Estos cálculos se han realizado con Matlab:
>> A=[0 0 1;1 1 1;4 2 1];
>> B=[1;exp(1);exp(2)]; 8

>> A\B 7

ans = 6

1.4762 5
0.2420
4
1.0000
3
Con el comando polyfit de Matlab:
>> x=[0 1 2]; 2

>> y=[1 exp(1) exp(2)]; 1

>> p= polyfit(x,y,2) 0
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 2
ans =
1.4762 0.2420 1.0000
Dibujo:
>> hold on
>> plot(x,y,’*’)
>> xx=[0:0.1:2];
>> yy=polyval(p,xx);
>> plot(xx,yy)
1
b) Interpolar el valor de f en :
2
2
1 1 1
=f   1.4762   + 0.2420   + 1 ≈ 1.4901
2 2 2
>> polyval(p,1/2)
ans =
1.4901
c) P2(x) = L0(x) f(x0) + L1(x) f(x1) + L2(x) f(x2)= L0(x) + L1(x) e + L2(x) e 2

=L0 ( x)
( x −=x1 )( x − x2 ) ( x − 1)( x − 2 ) x 2 − 3 x + 2
=
( x0 − x1 )( x0 − x2 ) ( 0 − 1)( 0 − 2 ) 2

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 44


Interpolación Polinómica
L1 ( x=
)
( x − x0 )( x − x2 )= ( x − 0 )( x − 2=) 2 x − x 2
( x1 − x0 )( x1 − x2 ) (1 − 0 )(1 − 2 )
=L2 ( x)
( x −=x0 )( x − x1 ) ( x − 0 )( x − 1) x 2 − x
=
( x2 − x0 )( x2 − x1 ) ( 2 − 0 )( 2 − 1) 2
Sustituyendo en el polinomio y operando, queda:
1 1  1 3
=  e 2 − e +  x 2 +  − e 2 + 2e −  x + 1
P2(x)
2 2  2 2
Es fácil comprobar que efectivamente P2(0) = 1, P2(1) = e y P2(2) = e 2

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 45


Interpolación Polinómica
19.- Sea f(x) = sen x.
a) Hallar el polinomio de grado 9 que interpola f en 10 puntos equidistantes de [0, 1].
Dibujarlo.
b) Obtener una cota del error que se comete al aproximar f(x) con dicho polinomio.
Solución:
>> x=linspace(0,1,10);
>> y=sin(x);
>> p=polyfit(x,y,9)
p=
Columns 1 through 7
0.0000 0.0000 -0.0002 0.0000 0.0083 0.0000 -0.1667
0.9
Columns 8 through 10
0.8
0.0000 1.0000 0.0000 0.7

0.6
>> z=polyval(p,x); 0.5

0.4
>> hold on 0.3
>> plot(x,y,'*') 0.2
>> plot(x,z) 0.1

0
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1

M
b) E = | f ( x) − Pn ( x) |≤ (b − a ) n +1 , siendo | f n +1) ( x) |≤ M .
(n + 1)!
Es inmediato que, en este caso, es | f 10) ( x) |≤ 1 para todo x ∈ [0, 1], luego:
1 1
E = | f ( x) − P9 ( x) |≤ (1 − 0)10 =< 2.8 ×10−7
10! 10!

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 46


Interpolación Polinómica
20.- Hallar el polinomio interpolador de Newton para los siguientes nodos:

xi -2 -1 1 2

yi 10 4 6 3

Interpolar el valor en x = 1.5.


Solución:
xi f(xi) Dif. Div. de orden1 Dif. Div. de orden2 Dif. Div. de orden 3
x0 f [x0]
= -2 = 10
f [ x1 ] − f [ x0 ]
f [ x0 , x1 ] =
x1 − x0
= -6
f [ x1 , x 2 ] − f [ x 0 , x1 ]
x1 f [x1] f [ x 0 , x1 , x 2 ] =
x2 − x0
= -1 =4
=7/3
f [ x 2 ] − f [ x1 ] f [ x1 , x 2 , x 3 ] − f [ x 0 , x1 , x 2 ]
f [ x1 , x 2 ] = f [ x 0 , x1 , x 2 , x 3 ] =
x 2 − x1 x3 − x0
=1 = -11/12
f [ x 2 , x 3 ] − f [ x1 , x 2 ]
x2 f [x2] f [ x1 , x 2 , x 3 ] =
x 3 − x1
=1 =6
= -4/3
f [x 3 ] − f [x 2 ]
f [x 2 , x 3 ] =
x3 − x2
= -3
x3 f [x3]
=2 =3
Por tanto, el polinomio buscado es:
P3(x) = 10 + (-6) (x + 2) + 7/3 (x + 2) (x + 1) + (-11/12) (x + 2) (x + 1) (x - 1) =
11 x 2 23 27
= − x3 + + x +
12 2 12 6

Sustituyendo x por 1.5, se obtiene: P3(1.5) ≈ 5.4063.

O bien con Matlab:


>> p=[-11/2 1/2 23/12 27/6];
>> polyval(p,1.5)
ans =
-10.0625

Nota:

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 47


Interpolación Polinómica
Planteando el sistema que da los coeficientes:
P3(x) = a0 + a1 (x + 2) + a2 (x + 2) (x + 1) + a3 (x + 2) (x + 1) (x - 1)
Ha de verificarse:
P3(-2) = 10 = a0
P3(-1) = 4 = a0 + a1
P3(1) = 6 = a0 + 3 a1 + 6 a2
P3(2) = 3 = a0 + 5 a1 + 12 a2 + 12 a3
Que es un sistema con matriz de los coeficientes triangular inferior (a diferencia de la matriz
de Vandermonde del polinomio interpolador general, que es densa y, en general, mal
condicionada):
 10 
1 0 0 0   a0  10   a0   −6 
  a     a   
 1 1 0 0 1 4
  =   ⇒   = 1  7 
1 3 6 0   a2   6   a2   
3 
       
1 5 12 12   a3   3   a3   − 11 
 
 12 

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 48


Interpolación Polinómica
21.- Dada la tabla de valores siguiente, correspondiente a la función f(x) = sen x:
π π
xi 0
4 2
2
yi 0 1
2
a) Calcular el polinomio de interpolación, aplicando la definición.
b) Calcular el polinomio de Newton con la fórmula de las diferencias divididas.
π
c) Interpolar el valor de f en .
6
d) Acotar el error cometido en la aproximación anterior.
e) Interpolar estos datos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.
Solución:
a) Al tener 3 nodos, el polinomio de interpolación será de grado 2 y ha de pasar por los
tres puntos:
P2 ( x ) = a2 x 2 + a1 x + a0
P2 ( 0=
) a=0 0
π π2 π 2
P2   = a2 + a1 =
4 16 4 2
π π π
2
P2   = a2 + a1 = 1
2 4 2
Por tanto, para hallar los coeficientes del polinomio, hay que resolver el sistema:
   8(1 − 2) 
 0 0 1  0   
 π2 
 2   a2     a2 
π π      −2(1 − 2 2) 
0   a1  = 
2
⇔  a1  =  ⇒
 16 4   2  π
 2  
  a0       
π π 1  a0   0 
 0   
  
 4 2   
8(1 − 2) 2 2(1 − 2 2)
P2 ( x )
= x − x ≈ −0.3357 x 2 + 1.1640 x
π 2
π
b) Fórmula de las diferencias divididas de Newton:
) f [ x0 ] + f [ x0 , x1 ] ( x − x0 ) + f [ x0 , x1 , x2 ] ( x − x0 )( x − x1 )
P2 ( x =
xi f(xi) Dif. Div. de orden1 Dif. Div. de orden2
x0 =0 f [x0] = 0
f [ x1 ] − f [ x0 ] 2 2
=
f [ x0 , x1 ] =
x1 − x0 π
f [ x1 , x2 ] − f [ x0 , x1 ]
=
f [ x0 , x1 , x2 ] =
π x2 − x0
2
( )
x1 = f [x1] =
4 2 8 1- 2
=
π 2

f [ x2 ] − f [ x1 ] 4 − 2 2
=
f [ x1 , x2 ] =
x2 − x1 π

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 49


Interpolación Polinómica
π
x2 = f [x2] = 1
2

Luego, P2 ( x ) =0 +
2 2
( x − 0) +
(
8 1- 2
(
) − ) 

π  8 (1 − 2 ) 2 4 2 − 2
x +
x 0  x  = π2 x
π π2  4 π
( )
 π  8 1 − 2  π  4 2 − 2  π  4 2 − 1 0.5174
c) P2   = 2
2

  +  = ≈
6 π 6 π 6 9
π  π π  π π 
 − 0 −  − 
d) E ≤    6 4   6 2  ≈ 0.023924
6
3!

e) Se trata del spline completo.


π
f(x) = sen x ⇒ f ’(x) = cosx ⇒ f '(0) = 1, f '  = 0
2
>> sc=spline(x,[1 y 0])
sc =
form: 'pp'
breaks: [0 0.7854 1.5708]
coefs: [2x4 double]
pieces: 2
order: 4
dim: 1
>> sc.coefs
ans =
-0.1551 -0.0051 1.0000 0
-0.0663 -0.3706 0.7049 0.7071
Luego, el spline completo es:
 π
S0 ( x ) = −0.1551  x 3 − 0.0051x 2 +   1 .0000  x, x ∈ 0, 
 4
π π π π π 
3 2
  
S1 ( x ) =
−0.0663  0.3706
x−  −  x −    
+ 0.7049   0.70
 x − + 71, x ∈  , 
 4  4  4 4 2

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 50


Interpolación Polinómica
22.- Dada la tabla de valores siguiente, correspondiente a la función f(x) = cos x:
π π
xi 0
4 2
2
yi 1 0
2
a) Calcular el polinomio de interpolación, aplicando la definición.
b) Calcular el polinomio de Newton con la fórmula de las diferencias divididas.
π
c) Interpolar el valor de f en .
3
d) Acotar el error cometido en la aproximación anterior.
e) Interpolar estos datos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.
Solución:
a) Al tener 3 nodos, el polinomio de interpolación será de grado 2 y ha de pasar por los
tres puntos:
P2 ( x ) = a2 x 2 + a1 x + a0
P2 ( 0=
) a=0 1
π π2 π 2
P2  =  a2 + a1 + a= 0
4 16 4 2
π π2 π
P2  =  a2 + a1 + a= 0 0
2 4 2
Por tanto, para hallar los coeficientes del polinomio, hay que resolver el sistema:
   8−8 2 
 0 0 1  1   
 π2 
 2   a2     a2 
π π    2     4 2 −6
1  a1  = ⇔  a1  =  ⇒
 16 4   2  π
 2   a0    a   
 0  
π π  
0

1
 1  
 4 2   
8−8 2 2 4 2 −6
P2 ( x )
= x + x + 1 ≈ −0.3357 x 2 − 0.1092 x + 1
π 2
π
b) Fórmula de las diferencias divididas de Newton:
) f [ x0 ] + f [ x0 , x1 ] ( x − x0 ) + f [ x0 , x1 , x2 ] ( x − x0 )( x − x1 )
P2 ( x =
xi f(xi) Dif. Div. de orden1 Dif. Div. de orden2
x0 =0 f [x0] = 1
f [ x1 ] − f [ x0 ] 2 2 - 4
=
f [ x0 , x1 ] =
x1 − x0 π

f [ x1 , x2 ] − f [ x0 , x1 ]
=
f [ x0 , x1 , x2 ] =
π x2 − x0
2
( )
x1 = f [x1] =
4 2 8 1- 2
=
π 2

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 51


Interpolación Polinómica
f [ x2 ] − f [ x1 ] −2 2
=
f [ x1 , x2 ] =
x2 − x1 π
π
x2 = f [x2] = 0
2

Luego, P2 ( x ) =1 +
2 2 -4
( − ) +
(
8 1- 2
(
) −

) −
π  8 (1 − 2 ) 2 4 2 − 6
x 0 x 0 x = x + x +1
π π2  4 π2 π

c) P2=
( 2
)
 π  8 1− 2  π  4 2 − 6  π  4 2 −1
    +  =
 +1 ≈ 0.5174
3 π 2
3 π 3 9
π  π π  π π 
 − 0 −  − 
d) E ≤    3 4   3 2  ≈ 0.023924
3
3!

e) Se trata del spline completo.


π
f(x) = cos x ⇒ f ’(x) = - sen x ⇒ f '(0) =
0, f '   =
−1
2
>> sc=spline(x,[0 y -1])
sc =
form: 'pp'
breaks: [0 0.7854 1.5708]
coefs: [2x4 double]
pieces: 2
order: 4
dim: 1
>> sc.coefs
ans =

0.0663 -0.5269 0 1.0000


0.1551 -0.3706 -0.7049 0.7071
Luego, el spline completo es:
 π
S0 ( x ) = 0.0663  x 3 − 0.5269 x 2 +   1 , x ∈ 0, 
 4

π π π π π 
3 2
  
S1 ( x ) =  x −  −0.3706  x −    0.7049   
0.1551   −  x −  +0.7071, x ∈  , 
 4  4  4 4 2

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 52


Interpolación Polinómica
23.- La tabla siguiente proporciona el número de viajeros que suben al metro en una
estación a determinada hora de la mañana:
hora 8 9 10 11 12 13 14
viajeros 41 35 21 9 11 17 32

Hallar el polinomio de Newton que interpola estos datos. ¿Qué número de


viajeros se estima que suben a la estación a las 10:30h?
Solución:
P6(x) = f [x0] + f [x0, x1](x-x0) + f [x0, x1, x2] (x-x0)(x-x1) + . . . +
+f [x0, x1, . . . , x6](x-x0)(x-x1) . . . (x-x5)
x f(x) 1ªdif div 2ªdif div 3ªdif div 4ªdif div 5ªdif div 6ªdif div
8 41
-6
9 35 -4
-14 5/3
10 21 1 1/12
-12 2 -1/5
11 9 7 -11/12 61/720
2 -5/3 37/120
12 11 2 5/8
6 5/6
13 17 9/2
15
14 32
El polinomio interpolador de Newton es:
P6(x) = 41 – 6(x-8) -4 (x-8) (x-9)+5/3(x-8) (x-9) (x-10) + 1/12 (x-8) (x-9) (x-10) (x-11) -
-1/5 (x-8) (x-9) (x-10) (x-11) (x-12) + 61/720 (x-8) (x-9) (x-10) (x-11) (x-12) (x-13)
f(10,5)= 13.467773437660071

Luego, a las 10:30h, se estima que el número de viajeros será 14 aproximadamente.

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 53


Interpolación Polinómica
24.- Se consideran los valores de la función f(x) = cos10(x) en los 9 puntos equidistantes
del intervalo [-4, 4] obtenidos mediante una partición del mismo.
a) Interpolar estos puntos mediante un spline cúbico cuya derivada primera en los
extremos coincida con la derivada primera de la función.
b) Hallar el spline que pasa por dichos puntos y tiene derivada tercera en los nodos -3 y
3 (es decir, las dos primeras piezas del spline son el mismo polinomio, al igual que las
dos últimas).
c) Representar y comparar ambas aproximaciones.
d) Hermite para los tres primeros nodos.
Solución:
a) >> % Spline completo (frontera sujeta)
>> x=[-4:4];
>> y=(cos(x).^10)
y=
Columns 1 through 2
0.014236730732349 0.904313532497494
Columns 3 through 4
0.000155763599901 0.002120157917130
Columns 5 through 6
1.000000000000000 0.002120157917130
Columns 7 through 8
0.000155763599901 0.904313532497494
Column 9
0.014236730732349
Derivando la función y particularizando en los extremos, se obtiene:
f ’(-4) = 0.1648358983
f ’(4) = - 0.1648358983

Utilizamos el spline completo:


>> ps=spline(x,[0.1648358993 y -0.1648358993])
ps =
form: 'pp'
breaks: [-4 -3 -2 -1 0 1 2 3 4]
coefs: [8x4 double]
pieces: 8
order: 4
dim: 1
>> ps.coefs
ans =
Columns 1 through 3
-1.423895004342709 2.149135906807854 0.164835899300000
1.026968637435100 -2.122549106220273 0.191422699887581
0.016377188479868 0.958356806085027 -0.972769600247666
-1.002684106803750 1.007488371524629 0.993075577361990
1.002684106803750 -2.000563948886620 0.000000000000000
-0.016377188479868 1.007488371524630 -0.993075577361990
-1.026968637435100 0.958356806085026 0.972769600247666
1.423895004342709 -2.122549106220273 -0.191422699887581

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 54


Interpolación Polinómica
Column 4
0.014236730732349
0.904313532497494
0.000155763599901
0.002120157917130
1.000000000000000
0.002120157917130
0.000155763599901
0.904313532497494
b) Calculamos el spline no nodo:
>> psb=spline(x,y)
psb =
form: 'pp'
breaks: [-4 -3 -2 -1 0 1 2 3 4]
coefs: [8x4 double]
pieces: 8
order: 4
dim: 1
>> psb.coefs
ans =
Columns 1 through 2
0.508516713212872 -2.422667424969983
0.508516713212871 -0.897117285331368
0.157773167813203 0.628432854307245
-1.049816099914862 1.101752357746853
1.049816099914862 -2.047695941997731
-0.157773167813203 1.101752357746853
-0.508516713212871 0.628432854307245
-0.508516713212872 -0.897117285331368
Columns 3 through 4
2.804227513522257 0.014236730732349
-0.515557196779095 0.904313532497494
-0.784241627803219 0.000155763599901
0.945943584250879 0.002120157917130
0.000000000000000 1.000000000000000
-0.945943584250879 0.002120157917130
0.784241627803219 0.000155763599901
0.515557196779095 0.904313532497494
c)
>> xx=[-4:0.1:4];
>> psaa=ppval(ps,xx);
>> plot(x,y,'*',xx,psaa)

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 55


Interpolación Polinómica
1

0.8

0.6

0.4

0.2

-0.2

-0.4
-4 -3 -2 -1 0 1 2 3 4

>> plot(x,y,'*',xx,psbb)
1

0.8

0.6

0.4

0.2

-0.2

-0.4
-4 -3 -2 -1 0 1 2 3 4

>> plot(x,y,'*',xx,psaa,xx,psbb)
1

0.8

0.6

0.4

0.2

-0.2

-0.4
-4 -3 -2 -1 0 1 2 3 4

Se observa cómo las mayores diferencias se dan en los subintervalos extremos que es donde
difieren las condiciones entre ambos splines.
z f(z) 1ªdif div 2ªdif div 3ªdif div 4ªdif div 5ªdif div
-4 0.01423673073
0.1648358983
-4 0.01423673073 0.7252409034
0.8900768017 -2.904385383
-3 0.9043135325 -2.179144480 2.093206289
-1.289067679 1.282027195 -1.23814885
-3 0.9043135325 0.3849099101 -0.3830914165
-0.9041577689 0.5158443619
-2 0.0001557635998 0.9007542721
-0.003403496750
-2 0.0001557635998
H5(x) = 0.01423673073 + 0.1648358983·(x+4) + 0.7252409034·(x+4)2 - 2.904385383·(x+4)2
(x+3) 2.093206289·(x+4)2(x+3)2 - 1.238148852·(x+4)2 (x+3) 2 (x+2)

U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 56


Spline

Sean t0 < t1 < . . . < tn, n+1 puntos (denominados nodos) y k un número natural. Una
función spline de grado k con nodos t0, t1, . . . , tn es una función S que satisface las
siguientes condiciones:
a) en cada intervalo [ti-1, ti], S es un polinomio de grado menor o igual a k,
b) S tiene una derivada de orden (k-1) continua en [t0, t1]
Por consiguiente S es un polinomio continuo a trozos de grado a lo sumo k, que tiene
derivadas continuas hasta el orden k-1.
Nodo

Cada valor de la abscisa xi de los puntos usados en interpolación.

Interpolación

Obtención del valor aproximado de una magnitud o una función en un intervalo cuando
se conocen algunos de los valores que toma a uno y otro lado de dicho intervalo.

Polinomio interpolador de Lagrange


Dados x0, x1, . . . , xn números reales distintos entre sí, y valores arbitrarios y0, y1, . . . ,
yn, existe un único polinomio P(x) de grado menor o igual que n tal que P(xi) = yi (i =
0, . . . , n).

Interpolación de Newton

Al Polinomio de Lagrange obtenido por Diferencias divididas se le conoce con el


nombre de fórmula de diferencias divididas interpolante de Newton.
n
Pn ( x)  f ( x0 )   f [ x0 , x1 ,..., xk ]( x  x0 )( x  x1 )...( x  xk 1 )
k 1

Siendo las Diferencias divididas

f [ x1 , xk ]  f [ x0 , xk 1 ]
f [ x0 , x1 ,..., xk ] 
xk  x0

Interpolación de Hermite

Sea una función, f, con derivada continua en [a, b] y si x0, x1, . . . , xn son valores
distintos del intervalo [a,b] , existe un único polinomio de grado a lo sumo 2n+1, y se
denota H2n+1(x), tal que:
H2n+1(xi) = f(xi), H’2n+1(xi) = f ’(xi), i = 0, . . . , n.
H2n+1(x) es el polinomio de Hermite de grado 2n+1.
Matrices tridiagonales 
En  diversas  aplicaciones  nos  encontramos  con  sistemas  Ax=z  donde  A  es  cuadrada  y  sus 
elementos son todos nulos excepto los de la diagonal principal y algunas de las paralelas a dicha 
diagonal. Estas matrices se denominan matrices banda. 
Un caso particular de matrices banda son las matrices tridiagonales. 
Se llama matriz tridiagonal a las matrices de la forma siguiente: 

 a11 a12 0  0 0 
 
 a 21 a 22 a 23  0 0 
 0 a32 a33  0 0 
A 
      
 0 0 0  a n 1,n 1 a n 1,n 

 0 0 0  a n ,n 1 a n ,n 
  

Para  este  tipo  de  matrices  hay  algoritmos  de  factorización  que  simplifican  el  número  de 
operaciones  a  realizar,  aprovechando  la  gran  cantidad  de  ceros  que  aparecen  siguiendo 
patrones  regulares.  Estos  métodos  son  preferibles  frente  a  los  que  no  tienen  en  cuenta  la 
tridiagonalidad de la matriz. 

También podría gustarte