Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Practica6 Interpolacion PDF
Practica6 Interpolacion PDF
INTERPOLACIÓN
6.1. Interpolación Polinómica
Datos de interpolación: 8Hxk , fk L<k=0,1,...,n
Conocemos los valores de una función, fk = f Hxk L, en n + 1 puntos distintos, xk , de un intervalo [a,b]
p HxL = a0 + a1 x + a2 x2 + ... + an xn
Problema de interpolación: Determinar los coeficientes a0, a1 , ... , an para que se cumplan las
condiciones de interpolación:
p Hxk L = fk , k = 0, 1, ..., n
Método de Lagrange
Consiste en calcular previamente los polinomios Li HxL, i=0,1,...,n, llamados polinomio de Lagrange o funciones
cardinales de Lagrange, que verifican:
Li Hxi L = 1, Li Ixj M = 0, i ≠ j
Li HxL = ‰
n x − xj
j=0
xi − xj
j≠i
i=0
EJEMPLO 1
Calcular el polinomio que interpola al conjunto de datos
{(-1,2),(2,8),(5,-3), (8,10)}
In[1]:= puntos := 88−1, 2<, 82, 8<, 85, −3<, 88, 10<<
2 Practica6_Interpolacion.nb
In[2]:= x0 = −1; x1 = 2; x2 = 5; x3 = 8;
Hx − x1 L Hx − x2 L Hx − x3 L
L0 @x_D =
Hx0 − x1 L Hx0 − x2 L Hx0 − x3 L
In[4]:=
Hx − x0 L Hx − x2 L Hx − x3 L
L1 @x_D =
Hx1 − x0 L Hx1 − x2 L Hx1 − x3 L
In[5]:=
H−8 + xL H−5 + xL H1 + xL
1
Out[5]=
54
Hx − x0 L Hx − x1 L Hx − x3 L
L2 @x_D =
Hx2 − x0 L Hx2 − x1 L Hx2 − x3 L
In[6]:=
H−8 + xL H−2 + xL H1 + xL
1
Out[6]= −
54
Hx − x0 L Hx − x1 L Hx − x2 L
L3 @x_D =
Hx3 − x0 L Hx3 − x1 L Hx3 − x2 L
In[7]:=
H−5 + xL H−2 + xL H1 + xL
1
Out[7]=
162
In[9]:= Expand@polisoluD
Visualización de resultados
10
Out[12]=
5
2 4 6 8
Los coeficientes Ak , que se denominan diferencias divididas de la función f en los puntos x0 , x1 , ... xk , se denotan por Ak = f
[x0 , x1 , ... xk ] y se generan de forma recursiva mediante la fórmula
partiendo de f[ x0 ]=f(x0 ).
EJEMPLO 2
Calcular el polinomio que interpola al conjunto de datos
8H−5, 1L, H−3, 2L, H2, 10L, H3, 2L, H6, 0L, H8, −3L<
4 Practica6_Interpolacion.nb
Entrada de datos
In[13]:= puntos = 88−5, 1<, 8−3, 2<, 82, 10<, 83, 2<, 86, 0<, 88, −3<<;
In[14]:= n = Length@puntosD − 1;
For@i = 0, i ≤ n, i ++, xi = puntos@@i + 1, 1DD; fi = puntos@@i + 1, 2DDD
Generamos la tabla de diferencias divididas (creamos una matriz rectangular de orden (2n+2)×
(n+2) que llamanos dif y cuyos elementos son de la forma d[i,j], con i=-1,0,…,2n y j=-1,0,…, n.
Ahora rellenamos la primera y segunda filas (fila -1 y fila 0, respectivamente) con los datos de interpolación y ponemos de
cabecera el texto “xk ” y “ fk ” en la posición (-1,-1) y (-1,0) , respectivamente.
In[19]:= d@−1, −1D = "xk "; d@−1, 0D = "fk "; For@i = 0, i ≤ n + 1, i ++, d@2 i, −1D = xi ; d@2 i, 0D = fi D;
Visualizamos el resultado
Out[20]//MatrixForm=
xk fk
−5 1
−3 2
2 10
3 2
6 0
8 −3
FF
d@i + 1, j − 1D − d@i − 1, j − 1D
d@i, jD =
d@i + j, −1D − d@i − j, −1D
Practica6_Interpolacion.nb 5
Out[22]//MatrixForm=
xk fk
−5 1
1
2
11
−3 2 70
8 123
5
− 560
8 9089
2 10 −5 166 320
103 19 897
−8 270
− 2 162 160
11 193
3 2 6
− 2970
− 23 − 13
6 0 − 16
3
−2
8 −3
polisolu = ‚ d@k, kD ‰ Ix − xj M
n k−1
In[23]:=
k=0 j=0
H3 + xL H5 + xL − H−2 + xL H3 + xL H5 + xL +
5+x 11 123
Out[23]= 1+ +
−
166 320 2 162 160
In[24]:= Expand@polisoluD
Visualizamos el resultado (en las variables xmin y xmax, guardamos el valor mínimo y máximo de los nodos)
6 Practica6_Interpolacion.nb
20
15
10
Out[29]=
-4 -2 2 4 6 8
-5
InterpolatingPolynomial[puntos, variable]
Calcula el polinomio de interpolación en la variable especificada para el conjunto de puntos dados en la forma:
EJEMPLO 3
Determinar el polinomio que interpola al conjunto de puntos
In[30]:= puntos := 880, 0<, 83, 2<, 85, 2<, 87, 3<, 89, 5<, 811, 3<<
Calculamos el polinomio
1079 H−9 + xL
H−7 + xL H−5 + xL H−3 + xL x
2 2 31 31
Out[31]= + − + + − −
3 15 840 7560 1 330 560
Practica6_Interpolacion.nb 7
In[32]:= Expand@%D
Visualizamos resultados
Out[35]=
2
2 4 6 8 10
Notaremos por Smk HDL al conjunto de funciones de clase k que son polinomios a trozos de grado m en cada uno de los
intervalos de la partición:
En lo sucesivo notaremos:
D={x0 , x1 , ... , xn } la partición dada por los nodos.
hi = xi+1 - xi , a la amplitud del intervalo [ xi , xi+1 ].
Funciones interpolantes: Splines en S32 HDL. Se trata de funciones de clase 2 definidas a trozos
mediante polinomios de grado 3 en cada intervalo de la partición.
s Hxi L = fi , i = 0, 1, ..., n,
xn . Por ejemplo si el espline satisface s'' Hx0 L = 0 y s'' Hxn L = 0 se dice que es un spline cúbico natural.
y necesitamos imponer además 2 condiciones adicionales en los puntos frontera x0 y
EJEMPLO 4
Calcular el spline cúbico natural que interpola al conjunto de datos :
En este caso el spline será una función de clase 2 definida a trozos, mediante 3 polinomios de tercer grado, que escribiremos
en la forma
In[36]:= puntos = 88−1, 0<, 83, 1<, 85, −3<, 87, 2<<;
Out[40]= a0 0
Out[41]= a1 1
Practica6_Interpolacion.nb 9
Out[42]= a2 −3
Out[43]= a2 + 2 b2 + 4 c2 + 8 d2 2
Out[44]= a0 + 4 b0 + 16 c0 + 64 d0 a1
Out[45]= a1 + 2 b1 + 4 c1 + 8 d1 a2
Out[46]= b0 + 8 c0 + 48 d0 b1
Out[47]= b1 + 4 c1 + 12 d1 b2
Out[48]= 2 c0 + 24 d0 2 c1
Out[49]= 2 c1 + 12 d1 2 c2
10 Practica6_Interpolacion.nb
Out[50]= 2 c0 0
Out[51]= 2 c2 + 12 d2 0
In[52]:= coeficientes =
Solve@8ecu1, ecu2, ecu3, ecu4, ecu5, ecu6, ecu7, ecu8, ecu9, ecu10, ecu11, ecu12<D
::a0 → 0, a1 → 1, a2 → −3, c0 → 0, c1 → −
27 81
Out[52]= , d0 → − ,
92 368
>>
131 193 351 171 1 117
b0 → , b1 → − , c2 → , d1 → , b2 → − , d2 → −
92 92 184 368 23 368
131 H1 + xL
H1 + xL3
27
Out[53]= −
92 368
In[57]:= grafpuntos =
ListPlot@puntos, PlotStyle → PointSize@0.02`D, DisplayFunction → IdentityD;
grafspline = Plot@s@xD, 8x, −1, 7<, DisplayFunction → IdentityD;
Show@grafpuntos, grafspline, DisplayFunction → $DisplayFunctionD
Out[59]= 2 4 6
-1
-2
-3
Ejercicios propuestos
a) Un polinomio