Interpolación Polinomica 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 7

Universidad de Sucre & Departamento de Matemáticas

Métodos numéricos, año 2021

Interpolación polinómica
Otro problema estrechamente ligado con el de la interpolación es la aproximación de una función complicada
por una más simple. Si tenemos una función cuyo cálculo resulta costoso, podemos partir de un cierto número
de sus valores e interpolar dichos datos construyendo una función más simple. En general, por supuesto, no
obtendremos los mismos valores evaluando la función obtenida que si evaluamos la función original, si bien
dependiendo de las características del problema y del método de interpolación usado la ganancia en eficiencia
puede compensar el error cometido.
Formalmente, el problema de interpolación consiste en que si conocemos los 𝑁 + 1 puntos:
(𝑥0 , 𝑦0 ), (𝑥1 , 𝑦1 ), … , (𝑥𝑛 , 𝑦𝑛 )
de una función 𝑓(𝑥), donde las abscisas 𝑥𝑘 , se distribuyen en un intervalo [𝑎, 𝑏] de tal manera que
𝑎 ≤ 𝑥0 < 𝑥1 < ⋯ < 𝑥𝑁 ≤ 𝑏 e 𝑦𝑘 = 𝑓(𝑥𝑘 ), 𝑘 = 0,1,2, … , 𝑁

se debe construir una función 𝐹 que los represente y permita calcular 𝑓(𝑥𝑘 ) = 𝐹(𝑥𝑘 ) o 𝑓(𝑥𝑘 ) ≈ 𝐹(𝑥𝑘 )
Si los valores (𝑥𝑘 , 𝑦𝑘 ) tienen un alto grado de precisión, entonces podemos considerar un polinomio 𝑦 = 𝑃(𝑥)
que pase por todos ellos; pero si el error en los valores (𝑥𝑘 , 𝑦𝑘 ) es significativo, entonces es conveniente usar
métodos de regresión. En las imágenes 1 y 2, anexas se muestran los dos casos de interpolación.

8 8
Imagen 1: Interpolación polinómica de ∫1 𝑓(𝑥) 𝑑𝑥 = ∫1 sin (x)ln (𝑥) dx. Imagen 2: Función de regresión 𝑦̂ =
𝑏0 + 𝑏1 𝑋
El polinomio 𝑃(𝑥) y la función de regresión, 𝑦,
̂ pueden luego usarse para interpolar a 𝑓(𝑥) en todo el intervalo
[𝑎, 𝑏] ó estimar un valor 𝑦𝑘 asociado con un valor 𝑥𝑘 , del rango de valores factibles en el experimento.

Los polinomios de interpolación también se utilizan para diseñar algoritmos de aproximación de funciones, para
derivar e integrar numéricamente y para dibujar, mediante un computador, curvas que deben pasar por puntos
especificados de antemano.
Teorema de aproximación de Weierstrass: Para cualquier 𝜖 > 0 y para cualquier función 𝑓 continua sobre
un intervalo [𝑎, 𝑏], existe un polinomio de coeficientes reales, 𝑃, tal que

Este resultado que afirma que las funciones reales continuas, definidas en un intervalo cerrado pueden ser
aproximadas tanto como se quiera por un polinomio. Es decir, los polinomios de coeficientes reales son densos
en el conjunto de las funciones continuas sobre un intervalo cerrado.

1. Polinomio de interpolación en la forma de Lagrange


Teorema: Supongamos que 𝑓 ∈ 𝐶 𝑁+1 [𝑎, 𝑏] y que 𝑥0 , 𝑥1 , . . . , 𝑥𝑁 son 𝑁 + 1 nodos de interpolación. Si 𝑥 ∈
[𝑎, 𝑏], entonces 𝑓(𝑥) = 𝑃𝑁 (𝑥) + 𝐸𝑁 (𝑥), donde 𝑃𝑁 (𝑥) es un polinomio que podemos usar para aproximar
𝑓(𝑥), así:
𝑁

𝑓(𝑥) ≈ 𝑃𝑁 (𝑥) = ∑ 𝑓(𝑥𝑘 ) ∗ 𝐿𝑁,𝑘 (𝑥)


𝑘=0

Los 𝐿𝑁,𝑘 (𝑥) son los polinomios de Lagrange, que se construyen de la forma siguiente:

𝑁
𝑥 − 𝑥𝑗 (𝑥 − 𝑥0 )(𝑥 − 𝑥1 ). . . (𝑥 − 𝑥𝑘−1 )(𝑥 − 𝑥𝑘+1 ). . . (𝑥 − 𝑥𝑁 )
𝐿𝑁,𝑘 (𝑥): = ∏ =
𝑥𝑘 − 𝑥𝑗 (𝑥𝑘 − 𝑥0 )(𝑥𝑘 − 𝑥1 ). . . (𝑥𝑘 − 𝑥𝑘−1 )(𝑥𝑘 − 𝑥𝑘+1 ). . . (𝑥𝑘 − 𝑥𝑁 )
𝑗=0,𝑗≠𝑘

El error, 𝐸𝑁 (𝑥) se puede calcular del modo siguiente:


(𝑥 − 𝑥0 )(𝑥 − 𝑥1 ). . . (𝑥 − 𝑥𝑘−1 )(𝑥 − 𝑥𝑘+1 ). . . (𝑥 − 𝑥𝑁 ) 𝑁+1
𝐸𝑁 (𝑥) = 𝑓 (𝑐), 𝑐 = 𝑐(𝑥), 𝑥 ∈ (𝑎, 𝑏)
(𝑁 + 1)!

Ejemplo 1. Ajuste un polinomio de interpolación de Lagrange de segundo grado para estimar 𝑙𝑜𝑔10 (10) = 1,
teniendo en cuenta que, 𝑙𝑜𝑔10 (8) = 0.9030900, 𝑙𝑜𝑔10 (9) = 0.9542425, 𝑙𝑜𝑔10 (11) = 1.0413927

Solución: 𝑓 definida por 𝑓(𝑥) = 𝑙𝑜𝑔10 (𝑥), es 𝑓 ∈ 𝐶 3 [8,11] y 𝑥0 = 8, 𝑥1 = 9, 𝑥2 = 11, entonces 𝑓(𝑥) =
𝑃2 (𝑥) + 𝐸2 (𝑥), donde 𝑃2 (𝑥) es un polinomio que podemos usar para aproximar 𝑓(𝑥), así

𝑓(𝑥) ≈ 𝑃2 (𝑥) = ∑ 𝑓(𝑥𝑘 ) ∗ 𝐿2,𝑘 (𝑥) = 𝑓(𝑥0 ) ∗ 𝐿2,0 (𝑥) + 𝑓(𝑥1 ) ∗ 𝐿2,1 (𝑥) + 𝑓(𝑥2 ) ∗ 𝐿2,2 (𝑥)
𝑘=0

𝑓(𝑥) ≈ 𝑃2 (𝑥) = 𝑙𝑜𝑔10 (8) ∗ 𝐿2,0 (𝑥) + 𝑙𝑜𝑔10 (9) ∗ 𝐿2,1 (𝑥) + 𝑙𝑜𝑔10 (11) ∗ 𝐿2,2 (𝑥)

donde los 𝐿2,𝑘 (𝑥) son los coeficiente polinomios de Lagrange, y son los siguientes:

(𝑥 − 𝑥1 )(𝑥 − 𝑥2 ) (𝑥 − 9)(𝑥 − 11) 1


𝐿2,0 (𝑥) = = = (𝑥 − 9)(𝑥 − 11) = 0.3333333𝑥 2 − 6.6666667𝑥 + 33
(𝑥0 − 𝑥1 )(𝑥0 − 𝑥2 ) (8 − 9)(8 − 11) 3

(𝑥 − 𝑥0 )(𝑥 − 𝑥2 ) (𝑥 − 8)(𝑥 − 11) 1


𝐿2,1 (𝑥) = = = − (𝑥 − 8)(𝑥 − 11) = −0.5𝑥 2 + 9.5𝑥 − 44
(𝑥1 − 𝑥0 )(𝑥1 − 𝑥2 ) (9 − 8)(9 − 11) 2
(𝑥 − 𝑥0 )(𝑥 − 𝑥1 ) (𝑥 − 8)(𝑥 − 9) 1
𝐿2,2 (𝑥) = = = (𝑥 − 8)(𝑥 − 9) = 0.16666667𝑥 2 − 2.8333333𝑥 + 12
(𝑥2 − 𝑥0 )(𝑥2 − 𝑥1 ) (11 − 8)(11 − 9) 6

Entonces:

𝑙𝑜𝑔10 (8) ∗ 𝐿2,0 (𝑥) = 0.9030900(0.3333333𝑥 2 − 6.6666667𝑥 + 33) = 0.30103𝑥 2 − 6.0206𝑥 + 29.80197
𝑙𝑜𝑔10 (9) ∗ 𝐿2,1 (𝑥) = 0.9542425(−0.5𝑥 2 + 9.5𝑥 − 44) = −0.4771212𝑥 2 + 9.0653037𝑥 − 41.98667
𝑙𝑜𝑔10 (11) ∗ 𝐿2,2 (𝑥) = 1.0413927(0.16666667𝑥 2 − 2.8333333𝑥 + 12)
= 0.1735655𝑥 2 − 2.9506126𝑥 + 12.496712

𝑓(𝑥) ≈ 𝑃2 (𝑥) = (0.30103 − 0.4771212 + 0.1735655)𝑥 2 + (−6.0206 + 9.0653037 − 2.9506126)𝑥 + (29.80197


− 41.98667 + 12.496712)

𝑓(𝑥) ≈ 𝑃2 (𝑥) = −0.0025257𝑥 2 + 0.0940911𝑥 + 0.312012

Ahora podemos interpolar 𝑓(10) = 𝑙𝑜𝑔10 (10) ≈ 𝑃2 (10) = 1.000353

Una cota para el error 𝐸2 (𝑥), se puede calcular del modo siguiente:
(𝑥 − 8)(𝑥 − 9)(𝑥 − 11) 3 𝑙𝑜𝑔10 (𝑒)
𝐸2 (𝑥) = 𝑓 (𝑐), 𝑐 = 𝑐(𝑥), 𝑥 ∈ [8,11], 𝑓 3 (𝑥) = −2
3! 𝑥3
(𝑒) (10−8)(10−9)(10−11)
Haciendo 𝑥 = 8, |𝑓 3 (8)| = | − 2 𝑙𝑜𝑔8103 | = 0.0016965, 𝐸2 (10) ≤ |
3!
𝑓 3 (8)| = 0.0005655 ←Cota
para el error, en 𝑥 = 10

Note que el valor correcto es 1 y el error absoluto es |1 − 𝑃2 (10)| = |1 − 1.000353| = 0.000353 < 0.0005655

En la imagen 1, se muestran las grafica de la función 𝑓(𝑥) = 𝑙𝑜𝑔10 (𝑥), su polinomio de interpolación 𝑃2 (𝑥) y
el punto interpolado.

Imagen 1. Gráfica de la función 𝑓(𝑥) = 𝑙𝑜𝑔10 (𝑥) y el polinomio 𝑃2 (𝑥), en [8, 11]

11
Ejemplo 2: Aproxime el valor de la integral ∫8 𝑙𝑜𝑔10 (𝑥) 𝑑𝑥, mediante el uso de un polinomio en la forma de
Lagrange, 𝑃2 (𝑥).

Solución:
11 11 11
∫ 𝑙𝑜𝑔10 (𝑥) 𝑑𝑥 ≈ ∫ 𝑃2 (𝑥) 𝑑𝑥 = ∫ (−0.0025257𝑥 2 + 0.0940911𝑥 + 0.312012) 𝑑𝑥
8 8 8
11
∫ 𝑙𝑜𝑔10 (𝑥) 𝑑𝑥 ≈ −0.0008419𝑥 3 + 0.04704555𝑥 2 + 0.312012𝑥 |11
8 = 8.00407465 − 5.0759584
8
11
→ ∫ 𝑙𝑜𝑔10 (𝑥) 𝑑𝑥 ≈ 2.92811625
8
La solución exacta es 11 1
∫8 𝑙𝑜𝑔10 (𝑥) 𝑑𝑥 = ln(10) 𝑥(ln(𝑥) − 1)|11
8 = 2.92771619509

Código Scilab para el algoritmo del polinomio de Lagrange

2. Polinomio de interpolación en la forma de Newtón


La interpolación de Lagrange se basa en 𝑁 + 1 puntos de interpolación {(𝑥𝑖 , 𝑦𝑖 )|𝑦𝑖 = 𝑓(𝑥𝑖 ), 𝑖 = 0,1, … , 𝑁},
todos los cuales deben estar disponibles para calcular cada uno de los polinomios base 𝐿𝑁,𝑖 (𝑥). Si se van a
introducir puntos adicionales, todos los polinomios básicos deben recalcularse.
En comparación, en la interpolación de Newton, cuando se adicionan nuevos puntos, se pueden calcular
polinomios básicos adicionales y los coeficientes correspondientes, mientras que todos los polinomios básicos
existentes y sus coeficientes permanecen sin cambios. Debido a los términos adicionales, el grado de polinomio
de interpolación es mayor y el error de aproximación puede reducirse (por ejemplo, al interpolar usando
polinomios de orden superior).
Definición: Diferencias divididas de una función 𝑓(𝑥), estas se definen como:
𝑓[𝑥𝑘 ] = 𝑓(𝑥𝑘 ),
𝑓[𝑥𝑘 ]−𝑓[𝑥𝑘−1 ]
𝑓[𝑥𝑘−1 , 𝑥𝑘 ] = ,
𝑥𝑘 −𝑥𝑘−1

𝑓[𝑥𝑘−1 ,𝑥𝑘 ]−𝑓[𝑥𝑘−2 ,𝑥𝑘−1 ]


𝑓[𝑥𝑘−2 , 𝑥𝑘−1 , 𝑥𝑘 ] = ,
𝑥𝑘 −𝑥𝑘−2

𝑓[𝑥𝑘−2 , 𝑥𝑘−1 , 𝑥𝑘 ] − 𝑓[𝑥𝑘−3 , 𝑥𝑘−2 , 𝑥𝑘−1 ]


𝑓[𝑥𝑘−3 , 𝑥𝑘−2 , 𝑥𝑘−1 , 𝑥𝑘 ] =
𝑥𝑘 − 𝑥𝑘−3
entonces las diferencias divididas de orden superior se obtienen de acuerdo con la siguiente regla recursiva
𝑓[𝑥𝑘−𝑗+1 ,… ,𝑥𝑘 ]−𝑓[𝑥𝑘−𝑗 ,… ,𝑥𝑘−1 ]
𝑓[𝑥𝑘−𝑗 , 𝑥𝑘−𝑗+1 , … , 𝑥𝑘 ] = 𝑥𝑘 −𝑥𝑘−𝑗
, (1)

Las diferencias divididas de la fórmula (1), se pueden calcular con una tabla de diferencias divididas como la que
se muestra a continuación, para 𝑁 = 4.
Tabla de diferencias divididas de Newtón de orden N=4
xk f[xk] f[xk-1,xk] f[xk-2,xk-1,xk] f[xk-3,xk-2,xk-1,xk] f[xk-4, xk-3, xk-2, xk-1, xk]
x0 f[x0]
x1 f[x1] f[x0,x1]
x2 f[x2] f[x1,x2] f[x0,x1,x2]
x3 f[x3] f[x2,x3] f[x1,x2,x3] f[x0,x1,x2,x3]
x4 f[x4] f[x3,x4] f[x2,x3,x4] f[x1,x2,x3,x4] f[x0, x1, x2, x3, x4]

Los coeficientes 𝑎𝑘 del polinomio 𝑃𝑁 (𝑥) dependen de los valores de 𝑓(𝑥𝑗 ), con 𝑗 = 0, 1, … , 𝑘. El siguiente
teorema establece que 𝑃𝑁 (𝑥) puede construirse usando las diferencias divididas, 𝑎𝑘 = [𝑥0 , 𝑥1 , … , 𝑥𝑘 ].
Teorema 2: Polinomio interpolador de Newton: supongamos que 𝑥0 , 𝑥1 , … , 𝑥𝑁 son 𝑁 + 1 números distintos en
[𝑎, 𝑏]. Entonces existe un único polinomio 𝑃𝑁 (𝑥) de grado menor o igual a 𝑁 tal que
𝑓(𝑥𝑗 ) = 𝑃𝑁 (𝑥𝑗 ) para 𝑗 = 0,1, … , 𝑁.
La forma de Newton de este polinomio interpolador es:
𝑃𝑁 (𝑥) = 𝑎0 + 𝑎1 (𝑥 − 𝑥0 ) + ⋯ + 𝑎𝑁 (𝑥 − 𝑥0 )(𝑥 − 𝑥1 ) … (𝑥 − 𝑥𝑁−1 )
Siendo 𝑎𝑘 = 𝑓[𝑥0 , 𝑥1 , … , 𝑥𝑘 ] para 𝑘 = 0, 1, … , 𝑁

Error de aproximación de Newton: supongamos que 𝑃𝑁 (𝑥) es el polinomio interpolador de Newton dado en
el teorema 2 y que lo usamos para aproximar la función𝑓(𝑥), esto es,
𝑓(𝑥) = 𝑃𝑁 (𝑥) + 𝐸𝑁 (𝑥)
Si 𝑓 ∈ 𝐶 [𝑎, 𝑏], entonces para cada 𝑥 ∈ [𝑎, 𝑏] existe un número 𝑐 = 𝑐(𝑥) en (𝑎, 𝑏), tal que el término del
𝑁+1

error puede escribirse como


(𝑥 − 𝑥0 )(𝑥 − 𝑥1 ) … (𝑥 − 𝑥𝑁 ) (𝑁+1)
𝐸𝑁 (𝑥) = 𝑓 (𝑐)
(𝑁 + 1)!
Ejemplo 1. Construya un polinomio de interpolación en la forma de Newton, de segundo grado, para estimar
𝑙𝑜𝑔10 (10), teniendo en cuenta que

𝑙𝑜𝑔10 (8) = 0.9030900, 𝑙𝑜𝑔10 (9) = 0.9542425 𝑦 𝑙𝑜𝑔10 (11) = 1.0413927


a. La forma de Newton de este polinomio interpolador es:
𝑃2 (𝑥) = 𝑎0 + 𝑎1 (𝑥 − 8) + 𝑎2 (𝑥 − 8)(𝑥 − 9)
Siendo 𝑎0 = 𝑓[𝑥0 ], 𝑎1 = 𝑓[𝑥0 , 𝑥1 ], 𝑎2 = 𝑓[𝑥0 , 𝑥1 , 𝑥2 ]
b. Tabla de diferencias divididas para la función 𝑓(𝑥) = 𝑙𝑜𝑔10 (𝑥), 𝑁 = 2
Tabla de diferencias divididas de Newtón de orden N=2 Tabla de diferencias divididas de Newtón de orden N=2
xk f[xk] f[xk-1,xk] f[xk-2,xk-1,xk] xk f[xk] f[xk-1,xk] f[xk-2,xk-1,xk]
x0 f[x0] 8 0.9030900
x1 f[x1] f[x0,x1] 9 0.9542425 0.0511525
x2 f[x2] f[x1,x2] f[x0,x1,x2] 11 1.0413927 0.0435751 -0.0025258

c. Polinomio de interpolación de Newton,


𝑃2 (𝑥) = 0.9030900 + 0.0511525(𝑥 − 8) − 0.0025258(𝑥 − 8)(𝑥 − 9)

d. Interpolación de 𝑙𝑜𝑔10 (10)


𝑃2 (10) = 0.9030900 + 0.0511525(10 − 8) − 0.0025258(10 − 8)(10 − 9) = 1.0003434
Imagen 1. 𝑦 = 𝑙𝑜𝑔10 (𝑥) Interpolada por 𝑃2 (𝑥), sobre [8, 11]

Gráfica: x=8:0.01:11;y=log10(x);y1=0.9030900+0.0511525*(x-8)-0.0025258*(x-8).*(x-9);plot(x,y,'r',x,y1);
xlabel('x');ylabel('y=log10(x)'); title('y=log10(x) Interpolada con P2(x)');

e. Cota para el error: como 𝑓(𝑥) = 𝑙𝑜𝑔10 (𝑥) ∈ 𝐶 3 [8,11], entonces para cada 𝑥 ∈ [8,11] existe un número
𝑐 = 𝑐(𝑥) en (𝑎, 𝑏), tal que el término del error puede escribirse como
(𝑥 − 8)(𝑥 − 9)(𝑥 − 11) (3) 𝑙𝑜𝑔 (𝑒)
𝐸2 (𝑥) = 𝑓 (𝑐); 𝑓3 (𝑐) = 2 103
3! 𝑐
(10−8)(10−9)(10−11) 𝑙𝑜𝑔10 (𝑒)
Haciendo 𝑥 = 10, 𝑐 = 8, se obtiene 𝐸2 (𝑥 = 10) ≤ | 3!
2
83
| ≈ 0.00056548761

→ 𝐸2 (10) = |𝑙𝑜𝑔10 (10) − 𝑃2 (10)| = |1 − 1.0003434| = 0.0003434 < 0.0005655


Ejemplo 2 Construya un polinomio de interpolación de Newton de tercer grado para estimar 𝑙𝑜𝑔10 (10), teniendo en
cuenta que, 𝑙𝑜𝑔10 (8) = 0.9030900, 𝑙𝑜𝑔10 (9) = 0.9542425, 𝑙𝑜𝑔10 (11) = 1.0413927 y 𝑙𝑜𝑔10 (12) =
1.0791812. Hemos adicionado un punto más, ¿éste hecho disminuirá el error en la interpolación?
a. La forma de Newton de este polinomio interpolador es:
𝑃3 (𝑥) = 𝑃2 (𝑥) + 𝑎3 (𝑥 − 8)(𝑥 − 9)(𝑥 − 11)
Note que para obtener 𝑃3 (𝑥) sólo se requiere obtener 𝑎3
Tabla de diferencias divididas de Newtón de orden N=3 Tabla de diferencias divididas de Newtón de orden N=3
xk f[xk] f[xk-1,xk] f[xk-2,xk-1,xk] f[xk-3,xk-2,xk-1,xk] xk f[xk] f[xk-1,xk] f[xk-2,xk-1,xk] f[xk-3,xk-2,xk-1,xk]
x0 f[x0] 8 0.90308999
x1 f[x1] f[x0,x1] 9 0.95424251 0.05115252
x2 f[x2] f[x1,x2] f[x0,x1,x2] 11 1.04139269 0.04357509 -0.002525812
x3 f[x3] f[x2,x3] f[x1,x2,x3] f[x0,x1,x2,x3] 12 1.07918125 0.03778856 -0.001928842 0.000149242

𝑃3 (𝑥) = 𝑃2 (𝑥) + 0.0001492(𝑥 − 8)(𝑥 − 9)(𝑥 − 11)


d. Interpolación de 𝑙𝑜𝑔10 (10), con
𝑃3 (10) = 𝑃2 (10) + 0.0001492(10 − 8)(10 − 9)(10 − 11) = 1.000045
Imagen 1. 𝑦 = 𝑙𝑜𝑔10 (𝑥) Interpolada por 𝑃3 (𝑥), sobre [8, 12]

e. El error es 𝐸3 (10) = |𝑙𝑜𝑔10 (10) − 𝑃3 (10)| = |1 − 1.000045| = 0.0000450 < 𝐸2 (10) = 0.0003434
es decir, al introducir más puntos para la interpolación se disminuye el error.

Código Scilab algoritmo para coeficiente del polinomio de Newtón

Bibliografía
1. https://es.wikipedia.org/wiki/Interpolaci%C3%B3n
2. https://es.wikipedia.org/wiki/Interpolaci%C3%B3n_polin%C3%B3mica_de_Newton

También podría gustarte