Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
x x0 x1 ... xn
y y0 y1 ... yn
1. Los polinomios aproximan de manera uniforme a las funciones continuas (dada una
función cualquiera, definida y continua en un intervalo cerrado, existe un polinomio “tan
próximo” a la función como se desee).
Los polinomios de Taylor concentran toda la información en un solo punto x0 (lo que limita
su uso al caso de aproximaciones en puntos cercanos a x0). Normalmente resulta más
conveniente usar métodos que incluyan información en diversos puntos como es el caso de la
interpolación.
Nota: Es fácil probar la existencia y unicidad de solución viendo que la matriz de los
coeficientes del sistema lineal de n ecuaciones con n+1 incógnitas (los coeficientes del
polinomio interpolador) tiene determinante no nulo, por ser un determinante de
Vandermonde.
Aunque existe uno y sólo un polinomio de interpolación de grado menor o igual que n
asociado a los datos de partida, dicho polinomio puede expresarse de maneras distintas y se
Se busca un polinomio de primer grado que interpole los valores de f en dos puntos:
Es el polinomio de grado uno (recta) que pasa por los dos puntos distintos (x0, y0) y (x1, y1).
x − x1 x − x0
L0 ( x) = , L1 ( x) =
x0 − x1 x0 − x0
x − x1 x − x0
y el polinomio P1(x) = L0(x) f(x0) + L1(x) f(x1) = . f(x0) + f(x1)
x0 − x1 x1 − x0
Así, P1(x) = L0(x) f(x0) + L1(x)f(x1) es la única función lineal que pasa por (x0, y0) y (x1, y1).
Generalizamos ahora y construimos un polinomio de grado máximo n que pasa por los n+1
puntos (x0, y0) y (x1, y1)., . . . , (xn, yn).
0 si i ≠ k
Lk ( xi ) =
1 si i = k
( x − x0 )( x − x1 )...( x − x k −1 )( x − x k +1 )...( x − xn )
Lk ( x) =
( xk − x0 )( xk − x1 )...( xk − x k −1 )( xk − x k +1 )...( xk − xn )
Teorema: Si x0, x1, . . . , xn son n+1 números distintos entre sí y si f es una función de la que
se conocen sus valores en dichos números, entonces el polinomio interpolador de Lagrange
viene dado por la expresión:
n
=
P(x) L0 (x)f (x 0 ) + ... + L n (x)f
= (x n ) ∑L
k =0
k (x)f (x k )
n
( x − xi )
donde, para cada k = 0, . . . , n, es Lk ( x) =
=i
∏
0,i ≠ k ( xk − xi )
Nota: El polinomio interpolador de Lagrange tiene más importancia teórica que práctica pues
es relativamente costoso de evaluar y ha de recalcularse completamente para añadir otro punto
más a la interpolación.
Calculamos una cota del error cometido al aproximar una función mediante el polinomio
interpolador de Lagrange.
f n +1) (c ( x ))
f ( x ) = P( x ) + ( x − x 0 )( x − x1 )...( x − x n )
(n + 1)!
Nota: Si la derivada de orden n+1 es una función acotada en [a, b], entonces:
M
| f n +1) ( x ) |≤ M ⇒| f ( x ) − P( x ) |≤ (b − a ) n +1
(n + 1)!
Para disminuir el error puede acortarse la amplitud del intervalo (a, b) o bien aumentar el
número de puntos. Aunque, hay que tener cuidado pues, si los datos tienen errores (humanos,
de redondeo u experimentales), la exactitud disminuye al aumentar n.
Sean (x0, y0), (x1, y1), . . . , (xn, yn) los puntos de interpolación, con abscisas distintas entre sí.
Sea Pn(x) el polinomio interpolador de Lagrange que coincide con la función f en los números
distintos x0, x1, . . . , xn. Pn(x) puede expresarse en la forma:
Pn(x) = a0 + a1 (x-x0) + a2 (x-x0) (x-x1) + . . . + an (x-x0) (x-x1) . . . (x-xn-1),
f (x ) − f (x 0 )
f(x1) = Pn(x1) = f(x0) + a1(x1-x0) ⇒ a1 = 1 = f[x 0 , x1 ]
x1 − x 0
... En general:
Pn(x) = f [x0] + f [x0, x1](x-x0) + f [x0, x1, x2] (x-x0)(x-x1) + . . . + f [x0, x1, . . . , xn](x-x0)(x-x1)
n
. . .(x-xn-1) = f[x 0 ] + ∑ f[x 0 , x1 ,..., x k ](x − x 0 )(x − x1 )...(x − x k −1 )
k =1
x0 f [x0]
f[x1 ] − f[x 0 ]
f[x 0 , x1 ] =
x1 − x 0
f [ x1 , x 2 ] − f [ x 0 , x1 ]
x1 f [x1] f [ x 0 , x1 , x 2 ] =
x2 − x0
f [ x1 , x 2 , x 3 ] − f [ x 0 , x1 , x 2 ]
f [ x 2 ] − f [ x1 ] f [ x 0 , x1 , x 2 , x 3 ] =
f [ x1 , x 2 ] = x3 − x0
x 2 − x1
f [ x 2 , x 3 ] − f [ x1 , x 2 ]
x2 f [x2] f [ x1 , x 2 , x 3 ] =
x 3 − x1
f [x 3 ] − f [x 2 ]
f [x 2 , x 3 ] =
x3 − x2
x3 f [x3]
Definición
Sean x0, x1, . . . , xn , n+1 números distintos de un intervalo [a,b] y m0, . . . , mn, enteros no
negativos. Sea f una función de clase Cm([a,b]) con m = máx(m0, . . . , mn). El polinomio
oscilante que aproxima la función f es el polinomio de menor grado que coincide con f y con
sus derivadas de orden menor o igual que mi en cada xi.
Casos particulares:
(x − x 0 ) 2 ...(x − x n ) 2 2n + 2)
f (x) − H 2n +1 (x) = f (c) para algún c del intervalo (a, b).
(2n + 2)!
Comentarios:
1.- Dados n+1 nodos distintos, el polinomio de Hermite es a lo sumo de grado 2n+1 ya que se
imponen 2n+1 condiciones (dos para cada nodo).
2.- El polinomio de Hermite coincide con f en los puntos x0, . . . , xn; además, como su
primera derivada en esos puntos coincide con la primera derivada de f en ellos, las tangentes
al polinomio en esos puntos son las mismas que las de la función, y el polinomio tendrá
entonces la misma “forma” que la función f en los puntos (xi, f(xi)).
Como z2i = z2i+1 = xi para cada i, no podemos definir f [z2i, z2i+1] a partir de la fórmula de
diferencias divididas (se anularía el denominador); por ello, se toma:
f[z 2 ,z 3 ] = f '( x1 )
f[z 3 ,z 4 ] = f[x1,x 2 ]
2 n +1
H 2 n +1 ( x ) = f [z 0 ] + ∑ f [z 0 ,..., z k ]( x − z 0 )( x − z1 )...( x − z k −1 ).
k =1
b) S tiene derivada de orden k-1 continua en [x0, xn], es decir, S es de clase Ck-1([x0, xn]).
Spline de grado k = 0:
Los splines de grado cero son funciones constantes a trozos. Una forma explícita de presentar
un spline de grado cero es la siguiente:
c 0 x ∈ [x 0 , x 1 ]
c x ∈ [x 1 , x 2 ]
S( x ) = 1
...
c n −1 x ∈ [x n −1 , x n ]
x4
x0 x1 x2 x3
Spline de grado k = 1:
Los splines de grado uno son funciones lineales a trozos que se unen de manera continua:
S 0 (x ) = a 0 x + b 0 x ∈ [x 0 , x 1 ]
S (x ) = a x + b x ∈ [x 1 , x 2 ]
S( x ) = 1 1 1
...
S n −1 (x ) = a n −1 x + b n −1 x ∈ [x n −1 , x n ]
Por ser continua, los polinomios que la conforman se coinciden en los nodos, es decir,
x0 x1 x2 x3 x4
Spline de grado k:
En general, los splines de grado k son polinomios de grado menor o igual que k que se unen
de manera continua ellos y sus derivadas hasta el orden k-1.
x x0 x1 ... xn
y y0 y1 ... yn
se trata de construir un spline cúbico para interpolar la tabla. Para ello hay que hallar los
coeficientes del polinomio cúbico de cada subintervalo determinando simultáneamente los
coeficientes en todos los subintervalos.
Si −1 (x i ) = y i y Si (x i ) = y i , i = 1, 2, …, n-1
Análogamente se obtienen otras n-1 condiciones imponiendo que la derivada segunda S’’ sea
también continua.
Para construir un spline cúbico interpolante a la función f en los nodos x0 < x1 < . . .< xn,
conviene expresar los polinomios cúbicos de la forma:
ya que de esta forma el sistema de ecuaciones que resulta de imponer las condiciones de la
definición es más fácil de resolver.
1) Spline “no nodo”: resulta al imponer la condición de que los polinomios en los dos
primeros intervalos sean iguales, S 0 (x ) = S1 (x ) , y que los dos últimos también,
S n − 2 (x ) = S n −1 (x ) . Esto es equivalente a exigir que el spline tenga tercera derivada en
los nodos segundo y penúltimo.
Cuando se conocen las derivadas segundas en los puntos inicial y final, o bien, se toman:
Nos da el resultado más “suave” posible, en el sentido de curvatura mínima. Hacia los
extremos del intervalo de interpolación, la curva se convierte en una recta.
4) Un caso particular del spline natural: cuando se calculan las derivadas segundas en
los extremos interpolando el valor que toman en los dos nodos más próximos, es decir,
haciendo:
h
S’’(x0) = 1 + 0 S' ' (x1 ) − 0 S' ' (x 2 )
h
h1 h1
h h
S’’(xn) = 1 + n −1 S' ' (x n −1 ) − n −1 S' ' (x n − 2 )
h n −2 h n −2
La evaluación del spline en puntos concretos se efectúa con ppval, que es el análogo
de polyval para polinomios: ppval (spline (x, y), xi).
Si sólo interesan los valores que tome el spline en ciertos puntos xi, se utiliza la misma
función en la forma: yi = spline (x, y, xi).
2) Spline “completo”:
Se calcula con la misma función que se utiliza para el spline “no nodo”, añadiendo al
vector “y” dos valores, uno al principio y otro al final, que son los valores de la
derivada primera del spline en los puntos inicial y final, a=S’(x0) y b=S’(xn),
respectivamente. Sintaxis: spline (x, [a y b]).
3) El cálculo de los coeficientes del spline cúbico natural, se realiza en dos pasos:
3.1.- Primero se resuelve un sistema tridiagonal de n-1 ecuaciones con n-1 incógnitas,
que son las derivadas segundas del spline en los nodos, S’’(xi) = ri,, i = 1, …, n-1.
h 0 + h1 h1
0 0 ... 0 0
3 6 h
h1 + h 2 e1 − e 0 − 0 r0
h1 h2
0 ... 0 0 6
6 3 6 r1 e 2 − e1
h2 + h3 h3
0
h2
... 0 0 r2 = e3 − e2
6 3 6 ... ...
... ... ... ... ... ... ...
0 h n −3 h n −3 + h n − 2 h n −2 rn −1 e n − 2 − e n −3
0 0 0
6 3 6 e − e − h n −1 r
n
h n −2 h n − 2 + h n −1
n −1 n −2
6
0 0 0 0 0
6 3
y i +1 − y i
siendo h i = x i +1 − x i , e i = , i = 0, …, n-1.
x i +1 − x i
3.2.- A continuación, se hallan los coeficientes del spline a partir de las derivadas
segundas en los nodos.
Llamando 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
ri +1 − ri r y − yi ri +1 ri
ai = , b i = i , c i = i +1 − + h i , d i = y i .
6h i 2 hi 6 3
4) Para el caso particular del spline natural con S’’(x0) y S’’(xn) calculadas tal como se
indica en el punto 4) de más arriba, Matlab dispone de la función “interp1”, con la
sintaxis: yi = interp1 (x, y, xi, ‘spline’).
Sean x e y los vectores que contienen respectivamente las abscisas y las ordenadas de los
puntos a interpolar.
1) polyfit (x, y, n), polinomio de interpolación de grado n que se ajusta a n+1 nodos
dados.
2) yi = interp1 (x, y, xi), para interpolación con un spline lineal (aplica interpolación
lineal con un polinomio de grado 1 en cada subintervalo).
3) yi = interp1 (x, y, xi, ‘linear’), es otra forma de escribir la función anterior.
4) Más en general, yi = interp1 (x, y, xi, ‘método’), realiza interpolación mediante el
método elegido: nearest, linear, cubic, v5cubic, spline (tipo 4, caso particular de spline
natural) o pchip.