Upload
others
View
8
Download
0
Embed Size (px)
Citation preview
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 1
1.- Dada la tabla de valores:
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:
ix 0 1 2 3 4 5 6 7
iy 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.
Paso 1 2 3 4 5 6
x 1 1 4 4 7 7
y 1 4 4 1 1 4
La trayectoria se obtiene interpolando los puntos dados ( )kk y,x mediante funciones p y q
tales que (p(t), q(t)) es la posición del brazo en el instante t [ ]1,0∈ y (p(tk), q(tk)) = ( )kk y,x , siendo tk = 0.2 k, k = 0,1,…,5. Representar
gráficamente la trayectoria obtenida si p y q son:
ix -1 0 1
iy 13 7 9
1
2 3
4 5
6
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 2
a) Los polinomios de interpolación de ( )kk x,t y ( )kk y,t , 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:
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.
x 0 1 3
f (x) 1 5 -17
f ’(x) 3 5 -15
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 3
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):
ix 4
−π
0
4
π
iy -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:
ix 3
−π
4
−π
6
−π
0
6
π
4
π
3
π
iy 3− -1 3
3−
0 3
3
1 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
4−π
y 4
π (es decir, las dos primeras piezas del spline son el mismo polinomio, al
igual que las dos últimas).
10.- Para la tabla de valores:
ix 1 2 3 4 5 6 7 8 9 10
iy 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: Hallar el polinomio de Newton que se ajusta a los tres nodos.
Hora 10 13 17 Temp. ºC 7 17 11
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 4
12.- Se considera el polinomio a trozos:
S(x) =
( ) [ )( ) [ )( ) [ )
20
21
22
-1 x 1,0
2 -1 x 0,1
2 +8x-5 x 1,2
= ∈ − = ∈ = − ∈
S x x
S x x
S x x
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:
S(x) = ( ) [ )( ) [ )
30
3 21
2 1,0
( 1) +6( 1) +b( 1)+c 1, 2
S x x x
S x a x x x 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:
ix 1 2 2.5 3 4
iy 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.
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 5
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.
b. Aproximar el valor de cos 11
4
π utilizando el polinomio anterior y acotar el
error cometido en dicha aproximación. c. Hallar un spline completo que se ajuste a esa nube de puntos y aproximar con él
el valor de cos 11
4
π. Dibujarlo en la misma figura que el polinomio de
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:
ix 0 1 2
iy 1 e 2e 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:
Interpolar el valor en x = 1.5.
21.- Dada la tabla de valores siguiente, correspondiente a la función f(x) = sen x:
ix 0 4
π
2
π
iy 0 2
2 1
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.
ix -2 -1 1 2
iy 10 4 6 3
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 6
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:
ix 0 4
π
2
π
iy 1 2
2 0
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:
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.
hora 8 9 10 11 12 13 14
viajeros 41 35 21 9 11 17 32
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 7
1.- Dada la tabla de valores:
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:
a) ( ) ( ) ( ) ( ) [ ]( ) ( ) ( ) ( ) [ ]
⇔
∈+−+−+−=∈+−+−+−=
=21111
211
3111
100002
003
000
x,xx dxxcxxbxxaxS
x,xx dxxcxxbxxaxS)x(S
( ) ( ) ( ) ( ) [ ]( ) [ ]
∈+++=−∈++++++=
=1 ,0x dxcxbxaxS
0 ,1x d1xc1xb1xaxS)x(S
112
13
11
002
03
00
( ) ( ) ( ) [ ]( ) [ ]
∈++=−∈++++=
=1 ,0x cxb2xa3x'S
0 ,1x c1xb21xa3x'S)x(' S
112
11
002
00
( ) ( ) [ ]( ) [ ]
∈+=−∈++=
=1 ,0x b2xa6x''S
0 ,1x b21xa6x''S)x('' S
111
000
Imponemos las 4n - 2 = 6 condiciones para que sea un spline cúbico:
( )( )( )( )( ) ( )( ) ( )
==+===++=
=+++===
=+++===−
11000
110000
11111
11
00000
00
b20''Sb2a60''S
c0'Scb2a30'S
9dcba1S
7d0S
7dcba0S
13d1S
Además, por tratarse de un spline natural, ha de verificarse:
( )( )
=+===−
0b2a61''S
0b21''S
111
00
ix -1 0 1
iy 13 7 9
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 8
Los coeficientes del spline son, por tanto, las soluciones del sistema lineal:
0 0
0 0
0 0
0 0
1
1
1
1
0 0 0 1 0 0 0 0 13
1 1 1 1 0 0 0 0 7
0 0 0 0 0 0 0 1 7
0 0 0 0 1 1 1 1 9
3 2 1 0 0 0 1 0 0
6 2 0 0 0 2 0 0 0
0 2 0 0 0 0 0 0 0
0 0 0 0 6 2 0 0 0
a ab bc cd da abcd
= ⇒ −
−
1
1
1
1
2
0
8
13
2
6
2
7
bcd
− = ⇒ − −
( ) ( ) [ ][ ]
∈+−+−
−∈++−+=
1 ,0x 7x2x6x2
0 ,1x 131x81x2)x(S
23
3
b) Por ser un spline natural, se verifica: ( )( )
===−=01'' Sr
01'' Sr
2
0
El sistema tridiagonal tiene n-1 = 1 ecuación con una incógnita, que es ( )0'' Sr1 = :
00
01110 r
6
heer
3
hh−−=
+ ,
siendo 1h i = , 610
137
xx
yye
01
010 −=
+−
=−−
= , 201
79
xx
yye
12
121 =
−−
=−−
= . Sustituyendo:
( ) ( )0'' S12r806
162r
3
211 ==⇒=−−−=
El spline tiene por ecuación:
( ) ( ) ( ) ( ) [ ]( ) [ ]
∈+++=−∈++++++=
=1 ,0x dxcxbxaxS
0 ,1x d1xc1xb1xaxS)x(S
112
13
11
002
03
00 ,
siendo: i
i1ii h6
rra
−= + ,
2
rb i
i = , ii1i
i
i1ii h
3
r
6
r
h
yyc
+−
−= ++ , ii yd = .
26
rra 01
0 =−
= , 02
rb 0
0 == , 8h3
r
6
r
h
yyc 0
01
0
010 −=
+−
−= , 13yd 00 == ;
26
rra 12
1 −=−
= , 62
rb 1
1 == , 2h3
r
6
r
h
yyc 1
12
1
121 −=
+−
−= , 7yd 11 == .
( ) ( ) [ ][ ]
3
3 2
2 x 1 8 x 1 13 x 1, 0S(x)
2x 6x 2x 7 x 0, 1
+ − + + ∈ −= − + − + ∈
.
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 9
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: ( ) ( ) 131x101x4 2 ++−+ . Representamos el polinomio con Matlab:
>> xx=-1:0.2:1;
>> yy=spline(x,y,xx);
>> plot(x,y,’*’,xx,yy)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 16
7
8
9
10
11
12
13
d) Utilizamos de nuevo la misma función de Matlab, “spline”, añadiendo las dos
condiciones del spline completo:
>> x=[-1 0 1]; >> y=[13 7 9];
>> xx=-1:0.2:1; >> zz=spline(x,[-5 y 5],xx);
>> plot(x,y,’*’,xx,zz)
-1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 16
7
8
9
10
11
12
13
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 10
2.- Se quiere construir la línea fronteriza entre dos poblaciones a partir de los datos que
figuran en la siguiente tabla:
ix 0 1 2 3 4 5 6 7
iy 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) ans = 47.3867 >> % obien: >> p=polyfit(x,y,7); >> polyval(p,2.5)
ans = 47.3867 >> % Dibujo: >> hold on >> xx=0:0.2:7; >> yy=polyval(p,xx); >> plot(x,y,'*',xx,yy)
0 1 2 3 4 5 6 7-20
0
20
40
60
80
100
120
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 11
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)
0 1 2 3 4 5 6 7-20
0
20
40
60
80
100
120
>> 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:
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 12
0 1 1
01 1 2 21 0 0
1
2 2 12 3 32
3 3 2
43 3 4 4 34
5 5 4
4 5 54 6 66 5 7
5 5 6
0 0 0 03 6
0 0 0 66 3 6
0 0 06 3 6
0 0 06 3 6
0 0 06 3 6 6
0 0 0 06 3
h h h
hh h h h e e rrr e eh h hhr e erh h h e ehr e e
h h hh r he e r
h h h
+ + − − −+
− = + − − + − −
+
i1ii xxh −= + = 1, i = 0, …, 6.
i1i
i1ii xx
yye
−−
=+
+ , i = 0, …, 6
ix 0 1 2 3 4 5 6 7
iy 0 25 34 72 115 92 71 65
ie 25 9 38 43 -23 -21 -6
1
2
3
4
5
6
2 10 0 0 0
3 61 2 1
0 0 0 166 3 6291 2 1
0 0 056 3 6
1 2 1 660 0 0
6 3 6 21 2 1 150 0 06 3 6
1 20 0 0 0
6 3
rrrrrr
− ⇔ = ⇔ −
1 1
2 2
3 3
4 4
5 5
6 6
35.61254 1 0 0 0 0 96
46.45001 4 1 0 0 0 174
23.81240 1 4 1 0 0 30
111.69980 0 1 4 1 0 396
26.98660 0 0 1 4 1 12
15.75330 0 0 0 1 4 90
r rr rr rr rr rr r
= −− = == ⇒ = −− = =
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 13
A partir de las derivadas segundas se calculan los coeficientes del spline:
i
i1ii h6
rra
−= + ,
2
rb i
i = , ii1i
i
i1ii h
3
r
6
r
h
yyc
+−
−= ++ , ii yd = , i = 0, …, 6
tales que ( ) ( ) ( ) ( ) iii2
ii3
iii dxxcxxbxxaxS +−+−+−= , [ ]1ii x,xx +∈ ,
i = 0, …, 6.
Se obtiene el spline:
( ) 30 5.9354 30.9354S x x x= − +
( ) ( ) ( ) ( )3 2
1 13.6771 1 17.8063 1 13.1292 1 25S x x x x= − − − + − +
( ) ( ) ( ) ( )3 2
2 3.7729 2 23.2250 2 18.5479 2 34S x x x x= − − + − + − +
( ) ( ) ( ) ( )3 2
3 22.5854 3 11.9062 3 53.6791 3 72S x x x x= − − + − + − +
( ) ( ) ( ) ( )3 2
4 23.1144 4 55.8499 4 9.7355 4 115S x x x x= − − − + − +
( ) ( ) ( ) ( )3 2
5 1.8722 5 13.4933 5 32.6211 5 92S x x x x= − − + − − − +
( ) ( ) ( ) ( )3 2
6 2.6256 6 7.8767 6 11.2511 6 71S x x x x= − − + − − − +
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 14
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.
Paso 1 2 3 4 5 6
x 1 1 4 4 7 7
y 1 4 4 1 1 4
La trayectoria se obtiene interpolando los puntos dados ( )kk y,x mediante funciones p y q
tales que (p(t), q(t)) es la posición del brazo en el instante t [ ]1,0∈ y (p(tk), q(tk)) =
( )kk y,x , 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 ( )kk x,t y ( )kk y,t , 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)
1
2 3
4 5
6
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 15
-1 0 1 2 3 4 5 6 7 8 90
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
b)
>> % Splines no nodo >> tt=0:0.01:1; >> xx=spline(t,x,tt); >> yy=spline(t,y,tt); >> plot(x,y,'*',xx,yy)
-1 0 1 2 3 4 5 6 7 8 90
0.5
1
1.5
2
2.5
3
3.5
4
4.5
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);
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 16
>> yy=spline(t,[0 y 0],tt); >> plot(x,y,'*',xx,yy)
0 1 2 3 4 5 6 7 80
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
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.
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 17
4.- Dada la tabla de valores:
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) =
= ‐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)
x 0 1 3
f (x) 1 5 -17
f ’(x) 3 5 -15
21202
101
2101
200
2010
21 y)xx)(xx(
)xx)(xx(y
)xx)(xx(
)xx)(xx(y
)xx)(xx(
)xx)(xx(
−−−−
+−−−−
+−−−−
=
)17()13)(03(
)1x)(0x(5
)31)(01(
)3x)(0x(1
)30)(10(
)3x)(1x(−
−−−−
+−−−−
+−−−−
=
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 18
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
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 19
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 =
-5.0000 9.0000 1.0000
>> xx=[0:0.1:3];
>> yy=polyval(ans,xx);
>> plot(x,y,'*',xx,yy)
>> hold on
>> H=[1 -6 9 -3 3 1];
>> polyval(H,xx);
>> zz=polyval(H,xx);
>> 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.
0 0.5 1 1.5 2 2.5 3-20
-15
-10
-5
0
5
10
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 20
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.
0.1(3)y' ,1.0)3('yx1
1)x('y
2==−⇒
+=
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): >> xx=-3:0.1:3;
>> yy=ppval(ps,xx);
>> plot(x,y,'*',xx,atan(xx))
>> hold on
>> plot(x,y,'*',xx,yy,'--')
-3 -2 -1 0 1 2 3
-1.5
-1
-0.5
0
0.5
1
1.5
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 21
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;
>> plot(x,y,'*',xx,atan(xx))
>> hold on
>> yynn=ppval(psnn,xx);
>> plot(x,y,'*',xx,yynn,'--')
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):
>> xx=-3:0.1:3;
>> dif1=atan(xx)-ppval(ps,xx);
>> dif2=atan(xx)-ppval(psnn,xx);
>> plot(xx,dif1,':');hold on
>> plot(xx,dif2)
Se observa en la figura que la
diferencia máxima con ambos
splines es muy similar. El spline
completo se adapta mejor en el
sentido de que en las piezas extremas tiene la misma convexidad que la función.
-3 -2 -1 0 1 2 3-0.04
-0.03
-0.02
-0.01
0
0.01
0.02
0.03
0.04
-3 -2 -1 0 1 2 3-1.5
-1
-0.5
0
0.5
1
1.5
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 22
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
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 23
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) = −+−+⋅−⋅ −− 8910115127 x35883.3 x132068.0x 00334229.0x1091669.4x1019446.3
31250 x116223 x159651 x3.90158 x9.27882 x5.5335 x375.672 x4934.57 234567 +−+−+−+−Lo dibujamos junto con los nodos:
>> hh=0:0.1:24;
>> MMW=polyval(p,hh);
>> plot(h,MW,'*',hh,MMW)
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
0 5 10 15 20 250
0.5
1
1.5
2
2.5
3
3.5
4x 10
4
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 24
>> 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:
>> hh1=0:0.1:12;
>> MMW1=polyval(p1,hh1);
>> hh2=12:0.1:24;
>> MMW2=polyval(p2,hh2);
>>
plot(h,MW,'*',hh1,MMW1,':',hh2,
MMW2,'-')
Los sistemas a resolver en este caso
no son tan mal condicionados.
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
0 5 10 15 20 252.4
2.6
2.8
3
3.2
3.4
3.6
3.8
4x 10
4
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 25
-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);
>> plot(h,MW,'*',hh,MWs)
>>
0 5 10 15 20 252.5
3
3.5
4x 10
4
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.
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 26
7.- Dada la tabla de valores (funciones de Bessel):
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
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
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 27
>> 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.
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 28
8.- Dada la tabla de valores siguiente, correspondiente a la función f(x) = tg (x):
ix 4
−π
0
4
π
iy -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:
( )
( )
22 2 1 0
2
2 2 1 0
2 0
2
2 2 1 0
14 16 4
0 0
14 16 4
= + +
π π π − = + − + = −
= =
π π π = + + =
P x a x a x a
P a a a
P a
P a a a
Por tanto, para hallar los coeficientes del polinomio, hay que resolver el sistema:
( )
2
2 2
1 1 2
20 0
01116 4
4 40 0 1 1
101
16 4
a aa a P x xa a
π π− − = ⇔ = ⇒ = ≈ π π π π
1.2732x
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:
( ) [ ] [ ]( ) [ ]( )( )2 0 0 1 0 0 1 2 0 1, , ,= + − + − −P x f x f x x x x f x x x x x x x
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 29
xi f(xi) Dif. Div. de orden1 Dif. Div. de orden2
x0 =4
−π
f [x0] = -1
1 0
0 11 0
[ ] [ ][ , ]
−= =
−f x f xf x x
x x4π
x1 = 0 f [x1] = 0 1 2 0 1
0 1 22 0
[ , ] [ , ][ , , ]
−= =
−f x x f x xf x x x
x x0
2 11 2
2 1
[ ] [ ] 4[ , ]
−= =
−f x f xf x x
x x π
x2 = 4
π f [x2] = 1
Luego, ( ) ( )2
40 1
4 4 4
π π π = + + + + − = − + + π P x x x x x4
-1 0π
c) 2
4 1
8 8 2
π π = ⋅ = π P
Con Matlab:
>> p=polyfit(x,y,2);
>> polyval(p,pi/8)
ans = 0.5000
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 30
9.- Para la función f(x) = tg (x), se considera la tabla de valores:
ix 3
−π
4
−π
6
−π
0
6
π
4
π
3
π
iy 3− -1 3
3−
0 3
3
1 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
4−π
y 4
π (es decir, las dos primeras piezas del spline son el mismo polinomio, al
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:
( )
22
2
22
1 1'( ) 4
3 1cos ( )3 21
'( ) '1 1cos
'( ) 43 1cos ( )
3 2
− = = = − = = ⇒ = = =
f
f x tgxx f
ππ
ππ
>> 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 =
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 31
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
0
2
5.5340 6.0469 4.0000 1.732 ,3 3 3 3 4
1, x = + + + −
− + − ∈ − S x x x xπ π π π π
( )3 2 3
1 1.2815 1.7005 1 ,4 4 4
.9718 1.0000, 6
x4
= + + + −
− + − ∈ − S x x x xπ π π π π
( )3 2
2 0.4418 0.6939 1 .3 ,06 6
449 6 6
0.5774, x − + = + + + −
− ∈ S x x x xπ π π π
( ) 3 23 0.4418 0.0 0,
6000 0.9815 , x= + − ∈
S x x x x π
( )3 2
4 1.2815 0.6939 1 .3449 0.5774 ,6 6 6 6
, x4
= − + − + − +
∈ S x x x xπ π π π π
( )3 2
5 5.5340 1 .7005 1 .9718 1 .000 ,4 4 4 4 3
0, x = − + − + − +
∈ S x x x xπ π π π π
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
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 32
Luego, el spline no nodo es:
( )3
0
2
2.1084 3.9131 3.6762 1.732 ,3 3 3 3 4
1, x = + + + −
− + − ∈ − S x x x xπ π π π π
( )3 2 3
1 2.1084 2.2571 ,4 4 4
2.0608 1.0000, 6
x4
= + + + −
− + − ∈ − S x x x xπ π π π π
( )3 2
2 0.3827 0.6012 1.3125 0.5774, x
,06
6
6
6
= + + + −
− + − ∈ S x x x xπ π π π
( ) 3 23 0.3827 0.0000 0.9977 , x 0,
6= + − ∈
S x x x x π
( )3 2
4 2.1084 0.6012 1 .3125 0.5774, x ,6 6 6 6 4
= − + − + − +
∈
S x x x xπ π π π π
( )3 2
5 2.1084 2.2571 2.0608 1 .000 ,4 4 4 4 3
0, x = − + − + − +
∈ S x x x xπ π π π π
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 33
10.- Para la tabla de valores:
ix 1 2 3 4 5 6 7 8 9 10
iy 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
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 34
-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:
( ) ( ) ( ) ( ) [ ]3
0
22.5916 5.2748 1 .3168 1 1 1 2. 1,20000, x= − + − − +− + ∈S x x x x
c) Gráficas en la misma ventana:
>> xx=[1:0.1:10];
>> yy=polyval(p,xx);
>> plot(xx,yy)
>> hold on
>> plot(x,y,'*')
>> zz=ppval(sn,xx);
>> plot(xx,zz,'--')
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.
1 2 3 4 5 6 7 8 9 10-150
-100
-50
0
50
100
150
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 35
11.- A lo largo de un día se han recogido los siguientes datos de temperaturas:
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:
0 0 1 0 0 1 2 0 1( ) ( ) [ , ]( ) [ , , ]( )( )
10 297 ( 10) ( 10)( 13)
3 42
= + − + − − =
= + − − − − =
P n f x f x x x x f x x x x x x x
x x x
229 269 2438
42 14 21− − +x x
Hora 10 13 17
Temp. ºC 7 17 11
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 36
12.- Se considera el polinomio a trozos:
S(x) =
( ) [ )( ) [ )( ) [ )
20
21
22
-1 x 1,0
2 -1 x 0,1
2 +8x-5 x 1,2
= ∈ − = ∈ = − ∈
S x x
S x x
S x x
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.
( )( )( )
( )( )( )
( )( )( )
20 0 0
21 1 1
22 22
-1 ' 2 '' 2
2 -1 ' 4 '' 4
' 4 +8 '' 42 +8x-5
= = = = ⇒ = ⇒ = = − = −= −
S x x S x x S x
S x x S x x S x
S x x S xS x x
( )( )( )( )( )( )
0 1
1 2
0 1
1 2
0 1
1 2
0 1 (0)
1 1 (1)
' 0 0 '(0)
' 1 4 '(1)
'' 0 2 4 ''(0)
'' 1 4 4 ''(1)
= − =
= = = =
= = = ≠ = = ≠ − =
S S
S S
S S
S S
S S
S S
Luego, no es un spline cúbico sobre esos puntos pues S’’(x) no es una función continua en
[ ]1,2−
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 37
13.- Se considera el polinomio a trozos:
S(x) = ( ) [ )( ) [ )
30
3 21
2 1,0
( 1) +6( 1) +b( 1)+c 1, 2
S x x x
S x a x x x 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]
( )( )
( )( )
20 0
211
' 6 ''' 12
'' 6 ( 1)+12' 3 ( 1) +12( 1)+b
S x x S x x
S x a xS x a x x
= = ⇒ = −= − −
( ) ( )( ) ( )( ) ( )
0 1
0 1
0 1
1 2 1
' 1 6 ' 1
'' 1 12 '' 1
S c S
S b S
S S
= = =
= = = = =
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.
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 38
14.- Para la tabla de valores siguiente:
ix 1 2 2.5 3 4
iy 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 1.5 2 2.5 3 3.5 40.4
0.6
0.8
1
1.2
1.4
1.6
1.8
En la parte central son bastante coincidentes las gráficas. En los nodos extremos presenta algo menor fluctuación el spline no nodo.
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 39
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:
0 0 1 0 0 1 2 0 1 0 1 3 0 1 2( ) ( ) [ , ]( ) [ , , ]( )( ) [ , , ]( )( )( )P n 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= + − + − − + − − − =
3 16 4( 2) ( 2)( 1) ( 2)( 1)( 0)
2 2x x x x x x= − + + + + − + + − = 31 1
12 2
x x− − +
31 1(0,5) 0,5 0,5 1 0,6875
2 2f = − − + =
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:
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 40
>> 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,'--')
7
6
5
4
3
2
1
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.
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 41
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 ans = -158.1959 179.0980 -66.3278 10.0000 -158.1959 131.6392 -35.2541 5.0000 9.4083 -10.7371 1.0165 2.0000 -1.2109 3.3753 -2.6644 1.0000 0.0243 -0.2574 0.4535 0.5000 0.0243 -0.0386 -0.4347 0.2000 >>holdon >>yynn=ppval(psnn,xx); >>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.
0 1 2 3 4 5 6 7 8 9 10-2
0
2
4
6
8
10
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 42
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.
b) Aproximar el valor de cos 11
4
π utilizando el polinomio anterior y acotar el error
cometido en dicha aproximación. c) Hallar un spline completo que se ajuste a esa nube de puntos y aproximar con él el
valor de cos 11
4
π. Dibujarlo en la misma figura que el polinomio de interpolación
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 =
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 43
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 , k=0,...,9kS , que conforman el spline expresados en potencias de ( )− kx x .
>>ppval(sp,11*pi/4) ans = -0.6641 >>zz=ppval(sp,xx); >>plot(xx,zz,'--') >>rr=cos(xx); >>plot(xx,rr,':')
0 2 4 6 8 10 12 14 16 18 20-1.5
-1
-0.5
0
0.5
1
1.5
2
2.5
3
3.5
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.
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 44
18.- a) Hallar, aplicando la definición, el polinomio interpolador para los siguientes
datos:
ix 0 1 2
iy 1 e 2e
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) = 2
2 1 0a x a x a+ + . Como el polinomio ha de pasar por los nodos, se ha de verificar: 1
0 2 2
2 1 0 1 12 22
0 02 1 0
1 0 0 1 1 0 0 1 1 1.4762
1 1 1 1 1 1 0.2420
4 2 1 4 2 1 14 2
a a aa a a e a e a e
a e a ea a a e
− = + + = ⇔ = ⇒ = = + + =
Obteniéndose: P2(x) = 21.4762 0.2420 1x x+ + .
Estos cálculos se han realizado con Matlab: >> A=[0 0 1;1 1 1;4 2 1]; >> B=[1;exp(1);exp(2)]; >> A\B ans = 1.4762 0.2420 1.0000 Con el comando polyfit de Matlab: >> x=[0 1 2]; >> y=[1 exp(1) exp(2)]; >> p= polyfit(x,y,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)
b) Interpolar el valor de f en 1
2:
21 1 1
1.4762 0.2420 1 1.49012 2 2
f = + + ≈
>> 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) 2e ( )( )( )( )
( )( )( )( )
21 2
00 1 0 2
1 2 3 2( )
0 1 0 2 2
x x x x x x x xL xx x x x− − − − − +
= = =− − − −
0 0.2 0.4 0.6 0.8 1 1.2 1.4 1.6 1.8 20
1
2
3
4
5
6
7
8
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 45
( )( )( )( )
( )( )( )( )
0 2 21
1 0 1 2
0 2( ) 2
1 0 1 2
x x x x x xL x x x
x x x x− − − −
= = = −− − − −
( )( )( )( )
( )( )( )( )
20 1
22 0 2 1
0 1( )
2 0 2 1 2
x x x x x x x xL xx x x x− − − − −
= = =− − − −
Sustituyendo en el polinomio y operando, queda:
P2(x) 2 21 1
2 2e e x = − + +
21 3
22 2
e e − + −
x + 1
Es fácil comprobar que efectivamente P2(0) = 1, P2(1) = e y P2(2) = 2e
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 46
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 Columns 8 through 10 0.0000 1.0000 0.0000 >> z=polyval(p,x); >> hold on >> plot(x,y,'*') >> plot(x,z)
b) E = 1| ( ) ( ) | ( )( 1)!
nn
Mf x P x b an
+− ≤ −+
, siendo 1)| ( ) |nf x M+ ≤ .
Es inmediato que, en este caso, es 10)| ( ) | 1f x ≤ para todo x ∈ [0, 1], luego:
E = 109
1 1| ( ) ( ) | (1 0)
10! 10!f x P x− ≤ − = < 72.8 10−×
0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 10
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 47
20.- Hallar el polinomio interpolador de Newton para los siguientes nodos:
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
= -2 f [x0] = 10
1 0
0 11 0
[ ] [ ][ , ]
f x f xf x xx x−
=−
= -6
x1
= -1 f [x1] = 4
02
1021210 xx
]x,x[f]x,x[f]x,x,x[f
−−
=
=7/3
12
1221 xx
]x[f]x[f]x,x[f
−−
=
= 1 03
2103213210 xx
]x,x,x[f]x,x,x[f]x,x,x,x[f
−−
=
= -11/12
x2
= 1 f [x2] = 6
13
2132321 xx
]x,x[f]x,x[f]x,x,x[f
−−
=
= -4/3
23
2332 xx
]x[f]x[f]x,x[f
−−
=
= -3
x3
= 2 f [x3] = 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) = 2
311 23 27
12 2 12 6
xx x= − + + +
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:
ix -2 -1 1 2
iy 10 4 6 3
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 48
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):
0 0
1 1
2 2
3 3
101 0 0 0 10 61 1 0 0 4 71 3 6 0 6 31 5 12 12 3 11
12
a aa aa aa a
− = ⇒ = −
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 49
21.- Dada la tabla de valores siguiente, correspondiente a la función f(x) = sen x:
ix 0 4
π
2
π
iy 0 2
2 1
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:
( )( )
22 2 1 0
2 0
2
2 2 1
2
2 2 1
0 0
2
4 16 4 2
12 4 2
= + +
= =
π π π = + = π π π = + =
P x a x a x a
P a
P a a
P a a
Por tanto, para hallar los coeficientes del polinomio, hay que resolver el sistema:
2
2 22
1 1
2 0 0
8(1 2)00 0 1
2 2(1 2 2)0
16 4 21 0
04 2
a aa aa a
− π π π − − = ⇔ = ⇒ π π π
( ) 2 22 2
8(1 2) 2(1 2 2)0.3357 1.1640P x x x x x− −
= − ≈ − +π π
b) Fórmula de las diferencias divididas de Newton: ( ) [ ] [ ]( ) [ ]( )( )2 0 0 1 0 0 1 2 0 1, , ,= + − + − −P x f x f x x x x f x x x x x x x
xi f(xi) Dif. Div. de orden1 Dif. Div. de orden2 x0 =0 f [x0] = 0
1 0
0 11 0
[ ] [ ][ , ]
−= =
−f x f xf x x
x x2 2π
x1 = 4
π f [x1] =
2
2
( )
1 2
2
0 10 1 2
2 0
[ , ] [ , ][ , , ]
−= =
−
=
f x x f x xf x x xx x
π8 1- 2
2 1
1 22 1
[ ] [ ] 4 2 2[ , ]
− −= =
−f x f xf x x
x x π
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 50
x2 = 2
π f [x2] = 1
Luego, ( ) ( )( )
( )22 0 04
08 1- 22 2
πP x x x x π = + − + − − =
π( ) 2
2
8 1 2 4 2 2x x− −
+ππ
c) ( ) 2
2 2
8 1 2 4 2 2 4 2 1
6 6 6 9P
−π π − π − = + = ≈ π π0.5174
d) 0
6 6 4 6 23!
E
π π π π π − − − ≤ ≈ 0.023924
e) Se trata del spline completo.
f(x) = sen x ⇒ f ’(x) = cosx '(0) 1, ' 02
π ⇒ = =
f f
>> 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:
( ) 230 0.1551 0.0051 1 .0000 , x 0,
4 − − + ∈
= S x x x x π
( )3 2
1 0.0663 0.3706 0.7049 0.70 ,4
71, x4 4 4 2
− − + + = − − −
∈ S x x x xπ π π π π
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 51
22.- Dada la tabla de valores siguiente, correspondiente a la función f(x) = cos x:
ix 0 4
π
2
π
iy 1 2
2 0
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:
( )( )
22 2 1 0
2 0
2
2 2 1 0
2
2 2 1 0
0 1
2
4 16 4 2
02 4 2
= + +
= =
π π π = + + = π π π = + + =
P x a x a x a
P a
P a a a
P a a a
Por tanto, para hallar los coeficientes del polinomio, hay que resolver el sistema:
2
2 22
1 1
2 0 0
8 8 210 0 1
2 4 2 61
16 4 20 1
14 2
a aa aa a
− π π π − = ⇔ = ⇒ π π π
( ) 2 22 2
8 8 2 4 2 61 0.3357 0.1092 1P x x x x x− −
= + + ≈ − − +π π
b) Fórmula de las diferencias divididas de Newton: ( ) [ ] [ ]( ) [ ]( )( )2 0 0 1 0 0 1 2 0 1, , ,= + − + − −P x f x f x x x x f x x x x x x x
xi f(xi) Dif. Div. de orden1 Dif. Div. de orden2 x0 =0 f [x0] = 1
1 0
0 11 0
[ ] [ ][ , ]
−= =
−f x f xf x x
x x2 2 -4π
x1 = 4
π f [x1] =
2
2
( )
1 2
2
0 10 1 2
2 0
[ , ] [ , ][ , , ]
−= =
−
=
f x x f x xf x x xx x
π8 1- 2
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 52
2 1
1 22 1
[ ] [ ] 2 2[ , ]
− −= =
−f x f xf x x
x x π
x2 = 2
π f [x2] = 0
Luego, ( ) ( )( )
( )( )
2 22
2
8 1 2 4 2 60 0 1
4
−π − = + − + − − = + + π π πP x x x x x x1
8 12 - 22 -4π
c) ( )
2
2
2
8 1 2 4 2 6 4 2 11
3 3 3 9P
−π π − π − = + + = ≈ π π0.5174
d) 0
3 3 4 3 23!
E
π π π π π − − − ≤ ≈ 0.023924
e) Se trata del spline completo.
f(x) = cos x ⇒ f ’(x) = - sen x '(0) 0, ' 12
π ⇒ = = −
f f
>> 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:
( ) 30
20.0663 0.5269 1 , 0, 4
x − + ∈= S x x x π
( )3 2
1 0.3706 0.7049 0.7071, 0.1551 ,4 4 4 2
x4
− − + ∈ = − − −
S x x x xπ π π π π
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 53
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:
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.
hora 8 9 10 11 12 13 14
viajeros 41 35 21 9 11 17 32
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 54
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
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 55
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)
Interpolación Polinómica
U. D. de Matemáticas de la ETSITGC Asignatura: Cálculo II 56
-4 -3 -2 -1 0 1 2 3 4-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
>> plot(x,y,'*',xx,psbb)
-4 -3 -2 -1 0 1 2 3 4-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
>> plot(x,y,'*',xx,psaa,xx,psbb)
-4 -3 -2 -1 0 1 2 3 4-0.4
-0.2
0
0.2
0.4
0.6
0.8
1
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)
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.
0 0 1 0 1 11
( ) ( ) [ , ,..., ]( )( )...( )n
n k kk
P x f x f x x x x x x x x x
Siendo las Diferencias divididas
1 0 10 1
0
[ , ] [ , ][ , ,..., ] k k
kk
f x x f x xf x x x
x x
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:
nnnn
nnnn
aa
aa
aa
aaa
aa
,1,
,11,1
3332
232221
1211
000
000
000
00
000
A
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.