Sunteți pe pagina 1din 43

Interpolación y aproximación

polinomial
Polinomio de Lagrange
INTRODUCCION
En el campo de la matemática aplicada es de gran importancia la manera
como determinar una función o funciones a partir de un conjunto de datos
discretos, i.e., puntos tabulados, situación que siempre se enfrenta
cualquier investigador, para decir generalmente un Ingeniero siempre tiene
al frente esta problemática fenómeno.
Cuando existe un conjunto de datos muy precisos, en este caso se usa lo
que se llama interpolación.
Las funciones de aproximación generalmente es obtenida por combinación
lineal de funciones elementales, que toman la forma de:

an g n ( x)  an1 g n1 ( x)  ........  a1 g1 ( x)  a0 g0 ( x) : 0in

En donde:
ai: Son constantes que deseamos encontrar, i=1,2,...,n
gi(x): Son funciones elementales específicas, i=1,2,...,n
APROXIMACIÓN POLINOMIAL SIMPLE E INTERPOLACIÓN
LINEAL
Podemos decir que la interpolación lineal es el eje para muchos métodos
numéricos y de gran relevancia en la ingeniería, puesto que una gran información
se encuentra en su forma tabular como veremos más adelante y es usado por
una diversidad de métodos numéricos, por ejemplo si integramos este método
tendremos el método de integración trapezoidal.
¿En qué consiste este método?
Supongamos que tenemos los siguientes cuadros:

Puntos 0 1 2 3 4 5 6
f(x) 56 78 113 144 181 205 214
X 1 2 5 10 20 30 40

Puntos 0 1 2 3

f(x) 56 ¿-? 113 181 214


X 1 2 5 20 40
POLINOMIO DE INTERPOLACIÓN DE
,
NEWTON

En esta oportunidad presentaremos los polinomios de llamados de Newton como


previos al proceso recursivo, p0; p1; p2;....; pn,en donde cada pk se obtiene
simplemente añadiendo un término a pk-1 , y al final del proceso pn se encuentra
formado por una suma de términos.

,En otros términos.


Se considera

, siempreque m<0
Los primeros términos de la ecuación son

,
Estos serian los tres primeros polinomios de interpolación de Newton.
Cabe destacar que existe un método muy eficiente para evaluar pk(x) suponiendo conocidos los coeficientes c0, c1,
c2,....ck llamado algoritmo de Horner.
Definición
Un polinomio de grado n es una expresión de la forma:
P(x) = anxn + an-1xn-1 + ... +a1x + a0
Donde an <> 0

Teorema (teorema de aproximación de Weierstrass)


Suponga que f está definida y es continua en [a, b]. Para e > 0
existe un polinomio P definido en [a, b], con la propiedad de
que
|f(x) – P(x)| < e, para toda x en [a, b]
Interpolación polinomial de Newton

Revisaremos solo algunos casos: lineal, de segundo grado y de


tercer grado.
Interpolación lineal
Utilizando triángulos semejantes

f1  x   f  x0  f  x1   f  x0 
 f(x)
x  x0 x1  x0

Reordenando
f(x1)
f x1   f x0  f1(x)
f1 x   f x0   x  x0 
x1  x0
f(x0)

x0 x x1
Ejemplo
Estimar ln 2 mediante interpolación lineal si ln1 = 0 y ln 6 = 1.791759 y ln 4 = 1.386294

1.791759  0 f x1   f x0 


f1 2  ln 1  2  1  0.3583519 f1 x   f x0   x  x0 
6 1 x1  x0
Valor real ln 2 = 0.6931472
1.386294  0
f1 2  ln 1  2  1  0.4620981 Error relativo porcentual = 33.3%
4 1
2.5
f(x) = ln x
2

1.5

Valor verdadero
1

f1(x)
0.5

Estimaciones lineales
-0.5

-1
0 1 2 3 4 5 6 7 8
Interpolación cuadrática
Polinomio cuadrático
f2(x) = b0 + b1(x – x0) + b2(x – x0)(x – x1) (1)
simplificado
f2(x) = b0 + b1x – b1x0 + b2x2 + b2x0 x1 – b2xx0 – b2xx1
Podemos escribirlo como
f2(x) = a0 + a1x + a2x2
Donde
a0 = b0 – b1x0 + b2x0 x1, a1 = b1 – b2x0 – b2x1, a2=b2
Podemos evaluar b0, b1 y b2 sustituyendo x0, x1 y x2 en la ecuación (1), se obtiene
b0 = f(x0)
f x2   f x1  f x1   f x0 

f  x1   f  x0  x2  x1 x1  x0
b1  b2 
x1  x0 x2  x0
ejemplo 2
Calculemos ln 2 con ln 4 y ln 6, los punto que se conocen son:
f(x) = ln x
x0 = 1 f(x0) = 0
x1 = 4 f(x0) = 1.386294 2.5

x0 = 6 f(x0) = 1.791759 2

Aplicando las ecs. anteriores Valor verdadero


1.5

b0 = 0
1
b1 = (1.386294 – 0)/(4 – 1) = 0.4620981
0.5
b2 = ((1.791759 – 1.386294)
0
/(6 – 4) – 0.4620981)/(6 – 1) Estimación cuadrática
= – 0.0518731 -0.5
Estimación lineal
El polinomio es -1
0 1 2 3 4 5 6 7 8

f2(x) = 0.4620981(x – 1) – 0.0518731(x – 1)(x – 4)

f2(2) = 0.5658444 Valor real ln 2 = 0.6931472


Error relativo porcentual = 18.4%
Forma general
Polinomio general
fn(x) = b0 + b1(x – x0) +...+ bn(x – x0)(x – x1)... (x – xn–1)
Los coeficientes se calculan con
b0 = f(x0)
b1 = f [x1, x0]
b2 = f [x2, x1, x0]

bn = f [,xn, xn–1, ..., x1, x0]


Donde los paréntesis cuadrados se denominan diferencias divididas finitas.
La n-ésima diferencia dividida finita es:

f xn , xn 1 ,..., x1   f xn 1 , xn  2 ,..., x0 


f xn , xn 1 ,..., x1 , x0  
xn  x0

Se conoce como polinomio de interpolación de Newton en diferencias divididas.


ejemplo 3
Calculemos ln 2 con ln 0, ln 4, ln 5 y ln 6, los punto que se conocen son:
x0 = 1 f(x0) = 0
x1 = 4 f(x1) = 1.386294
x2 = 6 f(x3) = 1.791759
x3 = 5 f(x2) = 1.609438
primeras diferencias
f [x1, x0] = (1.386294 – 0)/(4 – 1) = 0.4602981
f [x2, x1] = (1.791759 – 1.386294)/(6 – 4) = 0.2027326
f [x3, x2] = (1.609438 – 1.791759)/(5 – 6) = 0.1823216
Segundas diferencias
f [x2, x1, x0] = (0.2027326 – 0.4602981)/(6 – 1) = –0.05187311
f [x3, x2, x1] = (0.1823216 – 0.2027326)/(5 – 4) = –0.02041100
tercera diferencia
f [x3, x2, x1 , x0] = (–0.02041100–(–0.05187311))/(5 – 1) = 0.007865529
Polinomio
f3(x) = 0 + 0.4602981(x – 1) –0.05187311(x – 1) (x – 4) + 0.007865529(x – 1) (x – 4) (x – 6)
Valor calculado con el polinomio
f3(2) = 0.6287686
Ejemplo 3 (cont.)
f3(x)

2.5

Valor verdadero
1.5

1
f(x) = ln x
0.5

-0.5

Estimación cúbica
-1
0 1 2 3 4 5 6 7 8
Estimación del error
Para estimar el error requerimos de un datos más (xn+1). La
siguiente fórmula puede utilizarse para estimar el error.

Rn = f [,xn+1, xn, ..., x1, x0](x – x0) (x – x1)... (x – xn)


POLINOMIO DE APROXIMACIÓN DE
LAGRANGE
El método anterior tiene su punto débil en la aproximación
exacta, al realizar la interpolación, pues se tenía que
solucionar un sistema de ecuaciones que su orden dependía
de la exactitud de la aproximación, con la finalidad de salvar
estos inconvenientes, surgen otros métodos de aproximación
polinomial, que realicen cálculos directos sin desarrollar tales
sistemas de ecuaciones que envuelven cierta dificultad en su
solución. Entre estos métodos tendremos la aproximación
polinomial de LaGrange. El método que consiste en:
Interpolación y polinomio de
Lagrange
Se trata de encontrar un polinomio de grado n que pase por
los puntos (x0, f(x0)), (x1, f(x1)), ... (xn, f(xn)), se construye un
cociente Ln,k(xk) con la propiedad de que
Ln,k(xi) = 0 cuando i  k y Ln,k(xk) = 1
Se requiere entonces que el numerador contenga
(x – x0) (x – x1)... (x – xk–1)(x – xk+1)... (x – xn)
El denominador debe coincidir con el numerador cuando x =
x k.
Ln ,k x  
 x  x0  x  x1  x  xk 1 x  xk 1  x  xn  n

x  xi 
xk  x0 xk  x1 xk  xk 1 xk  xk 1 xk  xn  i 0 xk  xi 
ik
N-ésimo polinomio interpolante
de Lagrange
Teorema
Si x0, x1, x2, ... xn, son n+1 números distintos y si f es una función
cuyos valores están dados en esos números, entonces existe un
polinomio de grado a lo más n, con la propiedad de que
f(xk) = P(xk) para cada k = 0, 1, 2, ...n
Este polinomio está dado por
n
Px   f  x0 Ln ,0  x     f xn Ln ,n x    f xk Ln ,k x 
k 0
donde
Ln ,k x  
 x  x0  x  x1  x  xk 1 x  xk 1  x  xn  n

x  xi 
xk  x0 xk  x1 xk  xk 1 xk  xk 1 xk  xn  i 0 xk  xi 
ik
Aproximación a 1/x con
interpolantes de Lagrange
Usaremos x0 = 2, x1 = 2.5 y x2 = 4, para obtener un polinomio de grado
2 para 1/x. f(x0) = 0.5, f(x1)= 0.4 y f(x2) = 0.25.
Los polinomios de Lagrange son:

L x  
x  2.5x  4  x  6.5x  10
n,0 2  0.52  4
L x  
x  2x  4   4 x  24x  32
n,1 2.5  22.5  4 3

L x  
x  2x  2.5  x  4.5x  5
n,2 4  24  2.5 3

P(x) = 0.5*((x–6.5)x+10)+0.4*((–4x+24)x–32)/3+ 0.25*((x + 4.5)x+5)/3


P(x) = (0.05x – 0.425)x + 1.15 = 0.05x2 – 0.425x + 1.15
f(3) = P(3) = 0.325
Aproximación a 1/x con
interpolantes de Lagrange
P(x) = (0.05x – 0.425)x + 1.15
f(3) = P(3) = 0.325
El error en la interpolación de
Lagrange
El error en la interpolación de Lagrange puede calcularse
con

f n1  x 
f x0   Px   x  x0 x  x1 ...x  xn 
n  1!
Algoritmo en Matlab
function fi = Lagran_(x, f, xi)
fi=zeros(size(xi));
np1=length(f);
for i=1:np1
z=ones(size(xi));
for j=1:np1
if i~=j, z = z.*(xi - x(j))/(x(i)-x(j));end
end
fi=fi+z*f(i);
end
return
Calcula coeficientes de P2(x)
%Calcula el polinomio interpolante de Lagrange
de grado 2
function [a,b,c] =
Lagrange(x0,x1,x2,fx0,fx1,fx2)
t0 = (x0 - x1)*(x0 - x2);
t1 = (x1 - x0)*(x1 - x2);
t2 = (x2 - x0)*(x2 - x1);
a = fx0/t0 +fx1/t1 +fx2/t2;
b = -fx0*(x1 + x2)/t0 - fx1*(x0 + x2)/t1 -
fx2*(x0 + x1)/t2;
c = fx0*x1*x2/t0 + fx1*x0*x2/t1 + fx2*x0*x1/t2;
Interpolación Inversa
Tabla de valores de f (x) = 1/x.

x 1 2 3 4 5 6 7

f (x) 1 0.5 0.3333 0.25 0.2 0.1667 0.1429

Se desea conocer el valor de x tal que f (x) = 0.3.


El problema se resuelve definiendo un polinomio de
interpolación de grado 2 con los puntos (2, 0.5), (3, 0.3333) y
(4, 0.25) y resolviendo la ecuación:
f (x) = 0.3 = 1.08333 – 0.375x + 0.041667x2
Lo que da x = 5.704158 y x = 3.295842, el valor real es 3.333.
Trazadores (Splines)
Dados n +1 puntos podemos construir un polinomio de grado n
para interpolar valores dentro del intervalo.
También se pueden usar líneas rectas entre cada par de puntos
para hacer interpolación lineal entre ellos o polinomios
cuadráticos o cúbicos.
Tales interpoladores se llaman trazadores lineales, cuadráticos y
cúbicos, respectivamente.
La ventaja de los trazadores es que no presentan el efecto de
oscilación de los polinomios de alto grado.
f (x)

f (x)

f (x)

f (x)
Trazadores lineales
Para los trazadores lineales se definen rectas entre cada
intervalo para calcular los valores intermedios.
f (x) = f (x0) + m0(x – x0) x0 <= x <= x1
f (x) = f (x1) + m1(x – x0) x1 <= x <= x2

f (x) = f (x0) + mn–1 (x – x0) xn–1 <= x <= xn


Los valores de mi se calculan con:

f xi 1   f xi 
mi 
xi 1  xi
ejemplo
x f (x)
3.0 2.5
4.5 1.0
2
7.0 2.5
9.0 0.5 0
2 4 6 8 10
Trazadores cuadráticos
El polinomio en cada intervalo es de la forma:
fi(x) = ai x2 + bi x + ci
Para encontrar los ai , bi , ci se deben cumplir las siguientes condiciones:
1. Los valores de la función deben ser iguales en los nodos interiores, 2n –
2 ecuaciones. a x2  b x  c  f (x )
i 1 i 1 i 1 i 1 i 1 i 1

ai xi21  bi xi 1  ci  f ( xi 1 )
2. La primera y última función debe pasar por los extremos, 2 ecuaciones.
a1 x02  b1 x0  c1  f ( x0 )
an xn2  bn xn  cn  f ( xn )

3. Las primeras derivadas en los nodos interiores deben ser iguales, n – 1


ecuaciones. O sea: 2ai –1 xi–1 + bi –1 = 2ai xi–1 + bi
4. Suponer derivada 0 en el primer punto. a1 = 0
ejemplo
x f (x) Encontrar f (5)
3.0 2.5
4.5 1.0
7.0 2.5
9.0 0.5
La condición 1 genera las siguientes ecuaciones:
20.25a1 + 4.5b1 + c1 = 1.0
20.25a2 + 4.5b2 + c2 = 1.0
49a2 + 7b2 + c2 = 2.5
49a3 + 7b3 + c3 = 2.5
La condición 2 da las siguientes ecuaciones
9a1 + 3b1 + c1 = 2.5
81a3 + 9b3 + c3 = 0.5
La condición 3 genera:
9a1 + b1 = 9a2 + b2
14a2 + b2 = 14a3 + b3
El sistema resultante es:
4.5 1 0 0 0 0 0 0  b1   1 
0
 0 20.25 4.5 1 0 0 0  c1   1 
0 0 49 7 1 0 0 0 a2  2.5
    
0 0 0 0 0 49 7 1 b2  2.5

3 1 0 0 0 0 0 
0 c2   2.5
    
0 0 0 0 0 81 9 1  a3  0.5
1 0 9 1 0 0 0 0  b3   0 
    
 0 0 14 1 0  14  1 0  c3   0 

La solución es:
a1 = 0 b1 = –1 c1 = 5.5
a2 = 0.64 b2 = –6.67 c2 = 18.46
a3 = –1.6 b3 = –24.6 c3 = 91.3
f(5) = 0.64(5)2 – 6.67(5) +18.46 = 1.11
yi = ppval (pp, xi) - Evalúa polinomio a trozos pp en
los puntos xi. Si pp.d es un escalar mayor que 1, o un
arreglo, entonces el valor regresado yi será un arreglo
que es d1, d1, ..., dk, length (xi).

pp = spline (x, y) yi = spline (x, y, xi)


Regresa los interpolantes cúbicos de y en los puntos x.
Si se llama con dos argumentos, regresa los trozos
polinomicos pp que ueden ser evaluados con ppval.
Si se llama con tres parámetros, evalúa el los puntos xi.
Splines cúbicos
Aplicando las condiciones de continuidad del spline S y de las
derivadas primera S' y segunda S'', es posible encontrar la
expresión analítica del spline.

Si x   xi 1  x   x  xi 3
zi 3 zi 1
6hi 6hi
 yi 1 zi 1hi   yi zi hi 

  
 x  xi     xi 1  x 
 hi 6   hi 6 

Donde hi = xi+1 – xi y z0, z1, … ,zn son incognitas.


Aplicando las condiciones de continuidad se llega a

hi 1 zi 1  2hi  hi 1 zi  hi zi 1   yi 1  yi   6  yi  yi 1 
6
hi 1 hi 1

La ecuación anterior, genera un sistema de n–1


ecuaciones lineales con n+1 incógnitas.
donde
 u1 h1 0 0 0 0  z1   v1 
     hi21
 h1 u2 h2 0 0 0  z2   v2  ui  2hi  hi 1  
0 h u  0 0      
ui 1
 2 3
  
0 0    0       bi 
6
 yi 1  yi 
0 0 0  u hi
 n2 h2  zn 3   vn 3 
hi 1vi 1
0 0 0 0 h un 1  zn  2   vn  2  vi  bi  bi 1 
 2 ui 1
Los valores del spline S se calculan eficientemente con

Si x   yi  x  xi Ci  x  xi Bi  x  xi Ai 

Donde
Ai 
1
zi 1  zi 
6hi
zi
Bi 
2
zi 1  i zi   yi 1  yi 
hi h 1
Ci  
6 3 hi
Los coeficientes de los polinomios se pueden calcular con:
c1 = yi – xi D
c2 = D – xi E
c3 = E – xi A
c4 = A
Para obtener: fi (x) = c1 + c2 x + c3 x2 + c4 x3
Donde
A
zi 1  zi 
6hi
zi
B
2
C   zi 1  zi   yi 1  yi 
hi hi 1
6 3 hi
D  C  xi B  Axi2
E  B  2 xi A
Guión en MatLab
%encuentra los trazadores cúbicos para un conjunto
de puntos x,y
% x - vector con los n valores de x
% y - vector con los n valores de y
% w - matriz de n-1 por 4 con los coeficientes de
los polinomios cúbicos
function w = spline3(x,y)
[dummy n] = size(x);
for i = 1:n-1
h(i) = x(i+1)-x(i);
b(i) = 6*(y(i+1)-y(i))/h(i);
end
u(2) = 2*(h(1)+h(2));
v(2) = b(2)-b(1);
for i = 3:n-1
u(i) = 2*(h(i)+h(i-1))-h(i-1)^2/u(i-1);
v(i) = b(i)-b(i-1)-h(i-1)*v(i-1)/u(i-1);
end
z(n) = 0;
for i = n-1:-1:2;
z(i) = (v(i)-h(i)*z(i+1))/u(i);
end
z(1) = 0;
for i = 1:n-1
A = (z(i+1)-z(i))/6/h(i);
B = z(i)/2;
C = -h(i)*z(i+1)/6-h(i)*z(i)/3+(y(i+1)-y(i))/h(i);
D = C-x(i)*B+A*x(i)^2;
E = B-2*x(i)*A;
w(i,4) = y(i)-x(i)*D;
w(i,3) = D-x(i)*E;
w(i,2) = E-x(i)*A;
w(i,1) = A;
end
end
DIFERENCIAS DIVIDIDAS

Definición: las diferencias divididas de una función f se definen


 
f xk  f ( xk )
como:

f [ xk ]  f [ xk 1 ]
f [ xk 1 , xk ] 
xk  xk 1
f [ xk 1, xk ]  f [ xk  2 , xk 1 ]
f [ xk  2 , xk 1 , xk ] 
xk  xk  2
f [ xk  2 , xk 1 , xk ]  f [ xk 3 , xk  2 , xk 1 ]
f [ xk 3 , xk  2 , xk 1 , xk ] 
xk  xk  3
Ejemplo: construir la tabla de dif.divididas. Para f(x)=cos(x).

xk f [ xk ]

0.0 1.0000000

1.0 0.5403023
-0.4596977
2.0 -0.4161468 -0.9564491 -0.2483757

3.0 -0.9899925 -0.5738457 0.1913017 0.1465592

4.0 -0.6536436 0.3363499 0.4550973 0.0879318 -0.0146568

P1(x)=1 -0.4596977(x-0)
P2(x)=1 -0.4596977(x-0) -0.2483757(x)(x-1)
P3(x)= 1 -0.4596977(x-0) -0.2483757(x)(x-1)+0.1465592x(x-
1)(x-2)
Ejemplo:
X=
0 0.1000 0.2000 0.3000 0.4000 0.5000
>> Y=cos(X)
Y=
1.0000 0.9950 0.9801 0.9553 0.9211 0.8776
>> newpoly(X,Y)
>> [C,D]=newpoly(X,Y)
C=
-0.0021 0.0428 -0.0003 -0.5000 -0.0000 1.0000
D=

1.0000 0 0 0 0 0
0.9950 -0.0500 0 0 0 0
0.9801 -0.1494 -0.4971 0 0 0
0.9553 -0.2473 -0.4896 0.0249 0 0
0.9211 -0.3428 -0.4773 0.0412 0.0408 0
0.8776 -0.4348 -0.4601 0.0571 0.0397 -0.0021
>> polyval(C,X)
ans =
1.0000 0.9950 0.9801 0.9553 0.9211 0.8776

S-ar putea să vă placă și