Sei sulla pagina 1di 22

ULPGC

Tutorial de Análisis Numérico


Informática
Interpolación : Splines cúbicos
Página Web

Jesús Garcı́a Quesada


Página de Inicio
Departamento de Informática y Sistemas
Universidad de Las Palmas de Gran Canaria
Contenido
35017 Campus de Tafira, España
Email : jgarcia@dis.ulpgc.es JJ II
2 de Octubre de 2000, v0.3
J I

Página 1 de 22

Volver

Pantalla completa

Cerrar

Salir
ULPGC

Índice General
1 INTERPOLACIÓN POR SPLINES CÚBICOS 3

2 PROBLEMAS 16 Informática
Soluciones a los Problemas 19 Página Web

Página de Inicio

Contenido

JJ II

J I

Página 2 de 22

Volver

Pantalla completa

Cerrar

Salir
ULPGC

1. INTERPOLACIÓN POR SPLINES CÚBICOS


Supongamos que tenemos los n + 1 puntos:

Pk (xk , yk ), donde yk = f (xk ), k = 0, 1, . . . , n Informática


en los cuales se quiere interpolar la función f . Las abcisas no es necesario que sean
Página Web
equidistantes, pero se suponen ordenados, o sea,

x0 < x 1 < x 2 < · · · < x n Página de Inicio

En ésta sección trataremos de la interpolación polinómica a trozos. La idea es encon-


Contenido
trar polinomios cúbicos qk (x) que interpolen la función f en el subintervalo [xk , xk+1 ], k =
0, 1, . . . , n − 1.
JJ II
Definición 1. La función s(x) se llama cúbica a trozos en [x0 , xn ] si existen polinomios
cúbicos q0 (x), q1 (x), . . . , qn−1 (x) tales que :
J I
s(x) = qk (x) en [xk , xk+1 ], para k = 0, 1, . . . , n − 1
Página 3 de 22
Para que s(x) interpole en los puntos P0 , P1 , . . . , Pn los qk (x) han de verificar :
( Volver
qk (xk ) = yk
(1)
qk (xk+1 ) = yk+1 , k = 0, 1, . . . , n − 1 Pantalla completa

Cerrar

Salir
ULPGC

Informática
q (x) q (x) qn-1
(x)
0 1 q (x) solo existe en [x k , xk+1]
k
Página Web
Pn-1

P1 P2 Página de Inicio
Pk
P0
P3 Contenido
Pk+1 Pn

JJ II

J I

Página 4 de 22
x0 x1 x2 x3 . . . . . . xk xk+1 . . . . . . . . . xn-1 xn
Volver

Figura 1: Interpolación polinómica a trozos.


Pantalla completa

Cerrar

Salir
ULPGC

lo cual supone 2n condiciones. Llamaremos a s(x) spline cúbico, o simplemente spline,


si los polinomios qk (x) tienen la misma pendiente y la misma concavidad en los nodos
que las unen, o sea :
(
0
qk−1 (xk ) = qk0 (xk ) Informática
00
(2)
qk−1 (xk ) = qk00 (xk ), k = 1, 2, . . . , n − 1
Página Web
lo cual supone 2(n − 1) condiciones a cumplir. Al tener que verificar las condiciones
(1) y (2) se asegura que s(x) tiene su primera y segunda derivadas continuas en [x0 , xn ].
En éste caso se dice que s(x) es un spline interpolador para P0 , P1 , . . . , Pn . Página de Inicio
Si s(x) es cúbica a trozos en el intervalo [x0 , xn ], su derivada segunda s00 (x) es lineal en
el mismo intervalo e interpola en los puntos (xk , s00 (xk )) y (xk+1 , s00 (xk+1 )) en [xk , xk+1 ]. Contenido
Por tanto, qk (x) es un polinomio de grado uno que interpola en los puntos (xk , s00 (xk )) y
(xk+1 , s00 (xk+1 )): JJ II
x − xk+1 x − xk
qk00 (x) = s00 (xk ) + s00 (xk+1 ) , para k = 0, 1, . . . , n − 1 J I
xk − xk+1 xk+1 − xk
Denotando con Página 5 de 22
hk = xk+1 − xk , k = 0, 1, . . . , n − 1
y Volver
σk = s00 (xk ), k = 0, 1, . . . , n
tenemos : Pantalla completa
σk σk+1
qk00 (x) = (xk+1 − x) + (x − xk ), para k = 0, 1, . . . , n − 1 (3) Cerrar
hk hk

Salir
ULPGC

donde hk y σk son constantes (σk a determinar). Integrando dos veces :

σk (xk+1 − x)3 σk+1 (x − xk )3


qk (x) = + + Ck + Dk x (4)
hk 6 hk 6
donde el término lineal lo podemos escribir como : Informática

Ck + Dk x = Ak (x − xk ) + Bk (xk+1 − x) Página Web

siendo Ak y Bk constantes arbitrarias, quedando entonces :


Página de Inicio
3 3
σk (xk+1 − x) σk+1 (x − xk )
qk (x) = + + Ak (x − xk ) + Bk (xk+1 − x) (5)
hk 6 hk 6 Contenido

Aplicando a (5) las condiciones (1) :


JJ II
σk h3k σk+1 σk
yk = + 0 + Ak .0 + Bk hk = h2k + Bk hk (6)
hk 6 hk 6 J I
σk+1 3 σk+1 2
yk+1 = hk + Ak hk = h + Ak hk (7)
hk 6 k Página 6 de 22

Volver

Pantalla completa

Cerrar

Salir
ULPGC

y despejando de aquı́ Ak y Bk y sustituyendo en (5) resulta :


" #
σk (xk+1 − x)3
qk (x) = − hk (xk+1 − x)
6 hk
" # Informática
σk+1 (x − xk )3 (8)
+ − hk (x − xk )
6 hk Página Web
k+1 − x
hx i hx − x i
k
+ yk + yk+1 , para k = 0, 1, . . . , n − 1
hk hk Página de Inicio
que es la ecuación del spline qk (x).
Nos falta aún conocer los valores σ0 , σ1 , . . . , σn (n+1 incógnitas) para lo cual usamos Contenido
(2); derivando en (8) tenemos :

σk h −3(xk+1 − x)2 i σ h 3(x − x)2


k+1 k
i y
k+1 − yk
JJ II
qk0 (x) = + hk + − hk +
6 hk 6 hk hk
Por tanto :
J I

σk σk+1 yk+1 − yk
qk0 (xk ) = (−2hk ) + (−hk ) + (9) Página 7 de 22
6 6 hk
σk σk+1 yk+1 − yk Volver
qk0 (xk+1 ) = (hk ) + (2hk ) + (10)
6 6 hk
Pantalla completa

Cerrar

Salir
ULPGC

0
Reemplazando k por k − 1 en (10) para obtener qk−1 (xk ) e igualando a (9) nos da :

y
k+1− yk yk − yk−1 
hk−1 σk−1 + 2 (hk−1 + hk ) σk + hk σk+1 = 6 − , para k = 1, 2, . . . , n − 1
hk hk−1
(11) Informática
o también
Página Web
∆ y ∆ yk−1 
k
hk−1 σk−1 + 2 (hk−1 + hk ) σk + hk σk+1 = 6 − , para k = 1, 2, . . . , n − 1
hk hk−1 Página de Inicio
(12)
o incluso Contenido
 
hk−1 σk−1 + 2 (hk−1 + hk ) σk + hk σk+1 = 6 f [xk , xk+1 ] − f [xk−1 , xk ] , para k = 1, 2, . . . , n − 1 JJ II
(13)
Como el ı́ndice k varı́a de 1 a n − 1, se producen n − 1 ecuaciones lineales con n + 1 J I
incógnitas σ0 , σ1 , . . . , σn , lo cual produce un sistema subdeterminado que tiene infinitas
soluciones.
Página 8 de 22
Existen varias estrategias para eliminar σ0 de la primera ecuación y σn de la (n-1)-
ésima produciendo un sistema tridiagonal de orden (n-1) en las variables σ1 , σ2 , . . . , σn−1 .
Volver
ALTERNATIVA I Especificar el valor de s00 (x) en los puntos extremos : σ0 = s00 (x0 )
y σn = s00 (xn ). Si se pone σ0 = 0, σn = 0 se denomina spline cúbico natural.
Pantalla completa
ALTERNATIVA II Suponer que s00 (x) es constante en los extremos : σ0 = σ1 y
σn = σn−1 Cerrar

Salir
ULPGC

ALTERNATIVA III Suponer que s00 (x) es lineal cerca de los extremos : σ0 = 1
h1
(h0 +

h1 )σ1 − h0 σ2 y
1

σn = hn−2 − hn−1 )σn−2 + (hn−2 + hn−1 )σn−1

ALTERNATIVA IV Especificar el valor de s0 (x) en los puntos extremos : Informática


σ0 = h30 ∆y0 − s0 (x0 ) − 12 σ1 y
 
Página Web
3
 0
s (xn ) − ∆yn−1 − 12 σn−1

σn = hn−1
Página de Inicio
Si hay que calcular muchas veces s(z) entonces es preferible hacer la sustitución :

xk+1 − z = (xk+1 − xk ) − (z − xk ) = hk − (z − xk ) Contenido

en qk (z) y entonces expresar éste en potencias de z − xk para obtener : JJ II

qk (z) = yk + α1 (z − xk ) + α2 (z − xk )2 + α3 (z − xk )3 J I
= yk + (z − xk )(α1 + (z − xk )(α2 + (z − xk )α3 ))
Página 9 de 22
evaluado con sólo 4 sumas/restas y 3 productos, donde
Volver
hk σk σk+1 − σk
α1 = f [xk , xk+1 ] − (σk+1 + 2σk ), α2 = , α3 =
6 2 6hk
Pantalla completa
En forma matricial, el sistema tridiagonal que resulta es (caso de spline cúbico natu-
ral):
Cerrar

Salir
ULPGC

  
2 (h0 + h1 ) h1 ··· 0 σ1

 h1 2 (h1 + h2 ) ··· 0 
 σ2 

 0 h2 ··· 0  σ3 =


 .. ..

 ..  Informática
 . . 2 (hn−3 + hn−2 ) hn−2  . 
0 0 hn−2 2 (hn−2 + hn−1 ) σn−1 Página Web
 
f [x1 , x2 ] − f [x0 , x1 ] Página de Inicio

 f [x2 , x3 ] − f [x1 , x2 ] 

=6 
 f [x3 , x4 ] − f [x2 , x3 ] 
Contenido

 .. 
 . 
f [xn−1 , xn ] − f [xn−1 , xn−2 ]
JJ II
o también
J I
 ∆y1 ∆y0


  
2 (h0 + h1 ) h1 ··· 0 σ1 h1 h0 Página 10 de 22
∆y2 ∆y1

 h1 2 (h1 + h2 ) ··· 0   σ2




 h2
− h1


∆y3 ∆y2
0 h2 ··· 0   σ3 −
 
 = 6
 
h3 h2 Volver
  
 .. ..   ..   .. 
 . . 2 (hn−3 + hn−2 ) hn−2  .  
 .


0 0 hn−2 2 (hn−2 + hn−1 ) σn−1 ∆yn−1 ∆yn−2
hn−1
− hn−2 Pantalla completa

Cerrar

Salir
ULPGC

Ejemplo.
Interpolar por splines cúbicos la función f (x) = 1/x en x = 1.5 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).
Solución:
Informática
h0 = 0.2 − 0.1 = 0.1 h3 = 2.0 − 1.0 = 1.0
h1 = 0.5 − 0.2 = 0.3 h4 = 5.0 − 2.0 = 3.0 Página Web
h2 = 1.0 − 0.5 = 0.5 h5 = 10.0 − 5.0 = 5.0
Página de Inicio
El sistema que resulta es

  Contenido
2−5 5 − 10
0.1 σ0 + 2 (0.1 + 0.3) σ1 + 0.3 σ2 = 6 −
0.5 − 0.2 0.2 − 0.1
  JJ II
1−2 2−5
0.3 σ1 + 2 (0.3 + 0.5) σ2 + 0.5 σ3 = 6 −
1.0 − 0.5 0.5 − 0.2
  J I
0.5 − 1.0 1−2
0.5 σ2 + 2 (0.5 + 1.0) σ3 + 1.0 σ4 = 6 −
2.0 − 1.0 1.0 − 0.5
  Página 11 de 22
0.2 − 0.5 0.5 − 1.0
1.0 σ3 + 2 (1.0 + 3.0) σ4 + 3.0 σ5 = 6 −
5.0 − 2.0 2.0 − 1.0
  Volver
0.1 − 0.2 0.2 − 0.5
3.0 σ4 + 2 (3.0 + 5.0) σ5 + 5.0 σ6 = 6 −
1.0 − 5.0 5.0 − 2.0
Pantalla completa
Poniendo σ0 = σ6 = 0 tenemos
Cerrar

Salir
ULPGC

    
0.8 0.3 0 0 0 σ1 40

 0.3 1.6 0.5 0 0 
 σ2 


 8 


 0 0.5 3.0 1.0 0 
 σ3 =6


 1.5 

 0 0 1.0 8.0 3.0  σ4   0.4 
Informática
0 0 0 3.0 16.0 σ5 0.08
de donde se obtienen Página Web

σ1 = 311.65398570643 σ2 = −31.077295217152 Página de Inicio


σ3 = 8.4549532710280 σ4 = −.82621220450797
σ5 = 0.18491478834524 Contenido
Para x = 1.5 habrá que elegir q3 (x)
JJ II
(2.0 − x)3 σ4 (x − 1.0)3
   
σ3
q3 (x) = − 1.0 (2.0 − x) + − 1.0 (x − 1.0) +1.0(2.0−x)+0.5(x−1.0) J I
6 1.0 6 1.0

y su valor q3 (x) = 0.27320367097855 es una mejor estimación que la obtenida por Página 12 de 22
interpolación polinómica (ver figura 2).
Volver

Pantalla completa

Cerrar

Salir
ULPGC

Los diferentes splines que resultan son:

q0 (x) =519.423309x3 − 155.826993x2 − 39.611534x + 15


q1 (x) = − 190.406267x3 + 270.070753x2 − 124.791083x + 20.678637
q2 (x) =13.177416x3 − 35.304772x2 + 27.896679x − 4.769324 Informática
q3 (x) = − 1.546861x3 + 8.868059x2 − 16.276152x + 9.954953
Página Web
q4 (x) = + 0.0561737x3 − 0.750148x2 + 2.960264x − 2.869324
q5 (x) = − 0.00616383x3 + 0.1849148x2 − 1.715052x + 4.922870
Página de Inicio

q0 (x) , si x ∈ [0.1, 0.2], (también (−∞, 0.2])
Contenido


q1 (x) , si x ∈ [0.2, 0.5],





q (x) ,
2 si x ∈ [0.5, 1.0],
s(x) = JJ II


q3 (x) , si x ∈ [1.0, 2.0],
x ∈ [2.0, 5.0],

q4 (x) , si
J I



q5 (x) , si x ∈ [5.0, 10.0], (también [5.0, +∞))

En el intervalo [1.0, 2.0], la representación de ambas funciones es la que aparece en la Página 13 de 22


figura 2.
 Volver
2
Ejemplo. Interpolar por splines cúbicos la función f (x) = 1/(x + 1) en el intervalo
0 6 x 6 1 tomando los seis puntos de abcisas xk = k/5, k = 0, 1, 2, 3, 4, 5. Pantalla completa
Solución:
Por cálculo directo tenemos : Cerrar

Salir
ULPGC

1
1/x
8.4575/6*((2-x)**3-(2-x))-0.8334/6*((x-1)**3-(x-1))+(2-x)+0.5*(x-1) Informática
0.9

Página Web
0.8

0.7 Página de Inicio

0.6
Contenido

0.5
JJ II
0.4
J I
0.3

0.2 Página 14 de 22
1 1.2 1.4 1.6 1.8 2
Volver
Figura 2: La función 1/x y q3 (x) en el intervalo [1.0,2.0].

Pantalla completa

Cerrar

Salir
ULPGC

y0 = 1.00000000 y3 = 0.73529412
y1 = 0.96153846 y4 = 0.60975610
y2 = 0.86206896 y5 = 0.50000000
Informática
y es h0 = h1 = h2 = h3 = h4 = 1/5 = h y poniendo σ0 = σ5 = 0 y multiplicando
ambas partes por 6/h :
Página Web
      
4 1 0 0 σ1 y2 − 2 y1 + y0 −9.151194
 1 4 1 0  σ2 
 6  y3 − 2 y2 + y1  =  −4.095801 
    Página de Inicio
  =
 0 1 4 1  σ3  h2  y4 − 2 y3 + y2   0.185523 
0 0 1 4 σ4 y5 − 2 y4 + y3 2.367288 Contenido
y resolviendo σ1 = −2.165814, σ2 = −0.487920, σ3 = 0.022536, σ4 = 0.581866 y
tabulando la función entre 0 y 1.0 con paso 0.002 la gráfica de f(x) y el spline cúbico son JJ II
indistinguibles (error máximo ' 0.0040 que se produce entre 0 y 0.2).
 J I

Página 15 de 22

Volver

Pantalla completa

Cerrar

Salir
ULPGC

2. PROBLEMAS
Problema 1. Construir el spline cúbico natural que interpola a partir de los datos:
x 0 1 2 2.5 3 4
y 1.4 0.6 1.0 0.65 0.6 1.0 Informática

Problema 2. Considerando los datos: Página Web

x 0.15 0.76 0.89 1.07 1.73 2.11


y 0.3495 0.2989 0.2685 0.2251 0.0893 0.0431 Página de Inicio

obtener el spline cúbico natural que interpola en dichos puntos. Contenido

JJ II

J I

Página 16 de 22

Volver

Pantalla completa

Cerrar

Salir
ULPGC

Referencias
[Act90] F.S. Acton. Numerical Methods That (Usually) Work. The Mathematical As-
sociation of America, Washington, 1990.

[Atk89] K. E. Atkinson. An Introduction to Numerical Analysis. John Wiley, New York, Informática
2nd. edition, 1989.
Página Web
[BF80] R.L. Burden and D. Faires. Análisis Numérico. Grupo Editorial Iberoameri-
cana, México, 1980. Página de Inicio

[CC89] S.C. Chapra and R.P. Canale. Numerical Methods for Engineers. McGraw-Hill
International, New York, second edition, 1989. Contenido

[CdB80] S. D. Conte and C. de Boor. Elementary Numerical Analysis: An Algorithmic JJ II


Approach. McGraw–Hill, New York, third edition, 1980.

[DB74] Germund Dahlquist and Åke Björck. Numerical Methods. Prentice-Hall, En- J I
glewood Cliffs, New Jersey, 1974.
Página 17 de 22
[Fad59] V.N. Faddeeva. Computational Methods of Linear Algebra. Dover Publications,
Inc, New York, 1959.
Volver
[Frö79] C.-E. Fröberg. Introduction to Numerical Analysis. Adison–Wesley, Reading,
Massachusetts, 2nd. edition, 1979.
Pantalla completa
[GW89] C.F. Gerald and P.O. Wheatley. Applied Numerical Analysis. Addison–Wesley
Publishing Co., Reading, Massachusets, fourth edition, 1989. Cerrar

Salir
ULPGC

[Hen72] P. Henrici. Elementos de Análisis Numérico. Ed. Trillas, México, 1972.

[Hil74] F. B. Hildebrand. Introduction to Numerical Analysis. McGraw–Hill, New


York, second edition, 1974.

[KC94] D. Kincaid and W. Cheney. Análisis Numérico : las matemáticas del cálculo Informática
cientı́fico. Addison-Wesley Iberoamericana, 1994.
Página Web
[Mar87] M. J. Maron. Numerical Analysis: A Practical Approach. Macmillan Publishing
Co., New York, second edition, 1987. Página de Inicio

[ML91] M. J. Maron and R. J. Lopez. Numerical Analysis: A Practical Approach.


Wadsworth, Belmont, California, third edition, 1991. Contenido

[RR78] Anthony Ralston and Philip Rabinowitz. A First Course in Numerical Analysis.
JJ II
McGraw-Hill, New York, 2nd. edition, 1978.

[Sch89] H.R. Schwarz. Numerical Analysis. John Wiley & Sons, Chichester, 1989. J I
[Wer84] W. Werner. Mathematics of Computation, 43:205–217, 1984.
Página 18 de 22
[YG73a] David M. Young and R.T. Gregory. A Survey of Numerical Mathematics, vol-
ume I. Dover Publications, New York, 1973. Volver

[YG73b] David M. Young and R.T. Gregory. A Survey of Numerical Mathematics, vol-
ume II. Dover Publications, New York, 1973. Pantalla completa

Cerrar

Salir
ULPGC

Soluciones a los Problemas


Problema 1. El sistema es:
    
4 1 0 0 σ1 7.2
Informática
 =  −6.6 
 1 3 0.5 0   σ2   
 
 0 0.5 2 0.5   σ3   3.6 
Página Web
0 0 0.5 3 σ4 3
de donde se obtienen Página de Inicio

σ1 = 2.6788381742739 σ2 = −3.5153526970954
Contenido
σ3 = 2.5344398340249 σ4 = 0.57759336099585
Los diferentes splines son:
JJ II
3
q0 (x) = + 0.44647303x − 1.24647303x + 1.4
q1 (x) = − 1.03236514x3 + 4.436514523x2 − 5.68298755x + 2.87883817 J I
q2 (x) = + 2.01659751x3 − 13.85726141x2 + 30.90456432x − 21.51286307
q3 (x) = − 0.65228216x3 + 6.15933610x2 − 19.13692946x + 20.18838174 Página 19 de 22

q4 (x) = − 0.09626556x3 + 1.15518672x2 − 4.12448133x + 5.17593361


Volver

Pantalla completa

Cerrar

Salir
ULPGC



q0 (x) , si x ∈ [0, 1], (también (−∞, 0])

q1 (x) , si x ∈ [1, 2],



s(x) = q2 (x) , si x ∈ [2, 2.5],



q3 (x) , si x ∈ [2.5, 3], Informática


q (x) ,
4 si x ∈ [3, 4], (también [3, +∞)) Página Web
J
Página de Inicio

Contenido

JJ II

J I

Página 20 de 22

Volver

Pantalla completa

Cerrar

Salir
ULPGC

Problema 2. El sistema es ahora:


    
1.48 0.13 0 0 σ1 −0.905372005
 =  −0.0435897436 
 0.13 0.62 0.18 0   σ2   
 
 0 0.18 1.68 0.66   σ3   0.212121212 
Informática
0 0 0.66 2.08 σ4 0.50507177
obteniéndose: Página Web

σ1 = −0.61616885710569 σ2 = 0.050445411325263
Página de Inicio
σ3 = 0.029089182290732 σ4 = 0.23359274520339
Los diferentes splines son: Contenido
q0 (x) = − 0.16835215x3 + 0.075758466x2 − 0.0316707558x + 0.35311424
q1 (x) = + 0.85463368x3 − 2.25664921x2 + 1.74095908x − 0.095951989 JJ II
q2 (x) = − 0.019774286x3 + 0.078020050x2 − 0.33689656x + 0.52047852
q3 (x) = + 0.051642314x3 − 0.15122724x2 − 0.091601967x + 0.43299011 J I
q4 (x) = − 0.10245296x3 + 0.64852723x2 − 1.47517719x + 1.23085182
Página 21 de 22


q0 (x) , si x ∈ [0.15, 0.76], (también (−∞, 0.15])

q1 (x) , si x ∈ [0.76, 0.89], Volver



s(x) = q2 (x) , si x ∈ [0.89, 1.07],



q3 (x) , si x ∈ [1.07, 1.73], Pantalla completa


q (x) , si x ∈ [1.73, 2.11], (también [1.73, +∞))
4
Cerrar

Salir
J

Potrebbero piacerti anche