Está en la página 1de 38

Interpolacin y aproximacin

polinomial
Programacin Numrica
Definicin
Un polinomio de grado n es una expresin de la forma:
P(x) = a
n
x
n
+ a
n-1
x
n-1
+ ... +a
1
x + a
0

Donde a
n
<> 0
Teorema (teorema de aproximacin de Weierstrass)
Suponga que f est definida y es continua en [a, b]. Para c > 0
existe un polinomio P definido en [a, b], con la propiedad de
que
|f(x) P(x)| < c, para toda x en [a, b]
Desarrollo en series de Taylor
Sea f(x) = e
x
Desarrollando en serie de Taylor alrededor de x = 0
P
0
(x) = 1 P
1
(x) = 1 + x P
2
(x) = 1 + x + x
2
/2
P
3
(x) = 1 + x + x
2
/2 + x
3
/6 P
4
(x) = 1 + x + x
2
/2 + x
3
/6 + x
4
/24
P
5
(x) = 1 + x + x
2
/2 + x
3
/6 + x
4
/24 + x
5
/120
Valores de e
x
x p0(x) p1(x) p2(x) p3(x) p4(x) p5(x) exp(x)
-2.0 1.00000 -1.00000 1.00000 -0.33333 0.33333 0.06667 0.13534
-1.5 1.00000 -0.50000 0.62500 0.06250 0.27344 0.21016 0.22313
-1.0 1.00000 0.00000 0.50000 0.33333 0.37500 0.36667 0.36788
-0.5 1.00000 0.50000 0.62500 0.60417 0.60677 0.60651 0.60653
0.0 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000 1.00000
0.5 1.00000 1.50000 1.62500 1.64583 1.64844 1.64870 1.64872
1.0 1.00000 2.00000 2.50000 2.66667 2.70833 2.71667 2.71828
1.5 1.00000 2.50000 3.62500 4.18750 4.39844 4.46172 4.48169
2.0 1.00000 3.00000 5.00000 6.33333 7.00000 7.26667 7.38906
Valores de las aproximaciones de e
x
con polinomios de Taylor
Expansin de Taylor para 1/x
( )
( )
( )
( ) ( ) ( )

= =
= =
n
k
k k
n
k
k
k
n
x x
k
f
x P
0 0
1 1 1
!
1
n 0 1 2 3 4 5 6 7
Pn(3) 1 -1 3 -5 11 -21 43 -85
Interpolacin polinomial de Newton
Revisaremos solo algunos casos: lineal, de segundo grado y de
tercer grado.
Interpolacin lineal
x
0
x

x
1
f(x
0
)
f
1
(x)
f(x
1
)
f(x)
Utilizando tringulos semejantes
( ) ( ) ( ) ( )
0 1
0 1
0
0 1
x x
x f x f
x x
x f x f

Reordenando
( ) ( )
( ) ( )
( )
0
0 1
0 1
0 1
x x
x x
x f x f
x f x f

+ =
Ejemplo
Estimar ln 2 mediante interpolacin lineal si ln1 = 0 y ln 6 = 1.791759 y ln 4 = 1.386294
( ) ( )
( ) ( )
( )
0
0 1
0 1
0 1
x x
x x
x f x f
x f x f

+ = ( ) ( ) 3583519 . 0 1 2
1 6
0 791759 . 1
1 ln 2
1
=


+ = f
( ) ( ) 4620981 . 0 1 2
1 4
0 386294 . 1
1 ln 2
1
=


+ = f
Valor real ln 2 = 0.6931472
Error relativo porcentual = 33.3%
0 1 2 3 4 5 6 7 8
-1
-0.5
0
0.5
1
1.5
2
2.5
f(x) = ln x
f
1
(x)
Estimaciones lineales
Valor verdadero
Interpolacin cuadrtica
Polinomio cuadrtico
f
2
(x) = b
0
+ b
1
(x x
0
) + b
2
(x x
0
)(x x
1
) (1)
simplificado
f
2
(x) = b
0
+ b
1
x b
1
x
0
+ b
2
x
2
+ b
2
x
0
x
1
b
2
xx
0
b
2
xx
1

Podemos escribirlo como
f
2
(x) = a
0
+ a
1
x + a
2
x
2

Donde
a
0
= b
0
b
1
x
0
+ b
2
x
0
x
1
, a
1
= b
1
b
2
x
0
b
2
x
1
, a
2
=b
2

Podemos evaluar b
0
, b
1
y b
2
sustituyendo x
0
, x
1
y x
2
en la ecuacin (1), se obtiene
b
0
= f(x
0
)
( ) ( )
0 1
0 1
1
x x
x f x f
b

=
( ) ( ) ( ) ( )
0 2
0 1
0 1
1 2
1 2
2
x x
x x
x f x f
x x
x f x f
b

=
ejemplo 2
Calculemos ln 2 con ln 4 y ln 6, los punto que se conocen son:
x
0
= 1 f(x
0
) = 0
x
1
= 4 f(x
0
) = 1.386294
x
0
= 6 f(x
0
) = 1.791759
Aplicando las ecs. anteriores
b
0
= 0
b
1
= (1.386294 0)/(4 1) = 0.4620981
b
2
= ((1.791759 1.386294)
/(6 4) 0.4620981)/(6 1)
= 0.0518731
El polinomio es
f
2
(x) = 0.4620981(x 1) 0.0518731(x 1)(x 4)

f
2
(2) = 0.5658444
0 1 2 3 4 5 6 7 8
-1
-0.5
0
0.5
1
1.5
2
2.5
f(x) = ln x
Estimacin cuadrtica
Valor verdadero
Estimacin lineal
Valor real ln 2 = 0.6931472
Error relativo porcentual = 18.4%
Forma general
Polinomio general
f
n
(x) = b
0
+ b
1
(x x
0
) +...+ b
n
(x x
0
)(x x
1
)... (x x
n1
)
Los coeficientes se calculan con
b
0
= f(x
0
)
b
1
= f [x
1
, x
0
]
b
2
= f [x
2
, x
1
, x
0
]

b
n
= f [,x
n
, x
n1
, ..., x
1
, x
0
]
Donde los parntesis cuadrados se denominan diferencias divididas finitas.
La n-sima diferencia dividida finita es:



Se conoce como polinomio de interpolacin de Newton en diferencias divididas.
| |
| | | |
0
0 2 1 1 1
0 1 1
,..., , ,..., ,
, ,..., ,
x x
x x x f x x x f
x x x x f
n
n n n n
n n

ejemplo 3
Calculemos ln 2 con ln 0, ln 4, ln 5 y ln 6, los punto que se conocen son:
x
0
= 1 f(x
0
) = 0
x
1
= 4 f(x
1
) = 1.386294
x
2
= 6 f(x
3
) = 1.791759
x
3
= 5 f(x
2
) = 1.609438
primeras diferencias
f [x
1
, x
0
] = (1.386294 0)/(4 1) = 0.4602981
f [x
2
, x
1
] = (1.791759 1.386294)/(6 4) = 0.2027326
f [x
3
, x
2
] = (1.609438 1.791759)/(5 6) = 0.1823216
Segundas diferencias
f [x
2
, x
1
, x
0
] = (0.2027326 0.4602981)/(6 1) = 0.05187311
f [x
3
, x
2
, x
1
] = (0.1823216 0.2027326)/(5 4) = 0.02041100
tercera diferencia
f [x
3
, x
2
, x
1
, x
0
] = (0.02041100(0.05187311))/(5 1) = 0.007865529
Polinomio
f
3
(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
f
3
(2) = 0.6287686
Ejemplo 3 (cont.)
0 1 2 3 4 5 6 7 8
-1
-0.5
0
0.5
1
1.5
2
2.5
f(x) = ln x
Valor verdadero
Estimacin cbica
f
3
(x)
Estimacin del error
Rn = f [,x
n+1
, x
n
, ..., x
1
, x
0
](x x
0
) (x x
1
)... (x x
n
)
Para estimar el error requerimos de un datos ms (x
n+1
). La
siguiente frmula puede utilizarse para estimar el error.
Interpolacin y polinomio de
Lagrange
Se trata de encontrar un polinomio de grado n que pase por
los puntos (x
0
, f(x
0
)), (x
1
, f(x
1
)), ... (x
n
, f(x
n
)), se construye un
cociente L
n
,
k
(x
k
) con la propiedad de que
L
n
,
k
(x
i
) = 0 cuando i = k y L
n
,
k
(x
k
) = 1
Se requiere entonces que el numerador contenga
(x x
0
) (x x
1
)... (x x
k1
)(x x
k+1
)... (x x
n
)
El denominador debe coincidir con el numerador cuando x =
x
k
.
( )
( )( ) ( )( ) ( )
( )( ) ( )( ) ( )
( )
( )
[
=
= +
+

=


=
n
k i
i i k
i
n k k k k k k k
n k k
k n
x x
x x
x x x x x x x x x x
x x x x x x x x x x
x L
0 1 1 1 0
1 1 1 0
,


N-simo polinomio interpolante
de Lagrange
Teorema
Si x
0
, x
1
, x
2
, ... x
n
, son n+1 nmeros distintos y si f es una funcin
cuyos valores estn dados en esos nmeros, entonces existe un
polinomio de grado a lo ms n, con la propiedad de que
f(x
k
) = P(x
k
) para cada k = 0, 1, 2, ...n
Este polinomio est dado por

( ) ( ) ( ) ( ) ( ) ( ) ( )

=
= + + =
n
k
k n k n n n n
x L x f x L x f x L x f x P
0
, , 0 , 0

( )
( )( ) ( )( ) ( )
( )( ) ( )( ) ( )
( )
( )
[
=
= +
+

=


=
n
k i
i i k
i
n k k k k k k k
n k k
k n
x x
x x
x x x x x x x x x x
x x x x x x x x x x
x L
0 1 1 1 0
1 1 1 0
,


donde
Aproximacin a 1/x con
interpolantes de Lagrange
P(x) = 0.5*((x6.5)x+10)+0.4*((4x+24)x32)/3+ 0.25*((x + 4.5)x+5)/3
P(x) = (0.05x 0.425)x + 1.15 = 0.05x
2
0.425x + 1.15
f(3) = P(3) = 0.325
Usaremos x
0
= 2, x
1
= 2.5 y x
2
= 4, para obtener un polinomio de grado
2 para 1/x. f(x
0
) = 0.5, f(x
1
)= 0.4 y f(x
2
) = 0.25.
Los polinomios de Lagrange son:
( )
( )( )
( )( )
( )
( )
( )( )
( )( )
( )
( )
( )( )
( )( )
( )
3
5 5 . 4
5 . 2 4 2 4
5 . 2 2
2 ,
3
32 24 4
4 5 . 2 2 5 . 2
4 2
1 ,
10 5 . 6
4 2 5 . 0 2
4 5 . 2
0 ,
+ +
=


=
+
=


=
+ =


=
x x x x
x
n
L
x x x x
x
n
L
x x
x x
x
n
L
Aproximacin 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 interpolacin de
Lagrange
El error en la interpolacin de Lagrange puede calcularse
con
( ) ( )
( ) ( )
( )
( )( ) ( )
n
n
x x x x x x
n
x f
x P x f
+
s
+
...
! 1
1 0
1
0

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 P
2
(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;
Interpolacin 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
interpolacin de grado 2 con los puntos (2, 0.5), (3, 0.3333) y
(4, 0.25) y resolviendo la ecuacin:
f (x) = 0.3 = 1.08333 0.375x + 0.041667x
2
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.
Tambin se pueden usar lneas rectas entre cada par de puntos
para hacer interpolacin lineal entre ellos o polinomios
cuadrticos o cbicos.
Tales interpoladores se llaman trazadores lineales, cuadrticos y
cbicos, respectivamente.
La ventaja de los trazadores es que no presentan el efecto de
oscilacin de los polinomios de alto grado.
f (x)
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 (x
0
) + m
0
(x x
0
) x
0
<= x <= x
1
f (x) = f (x
1
) + m
1
(x x
0
) x
1
<= x <= x
2

f (x) = f (x
0
) + m
n1
(x x
0
) x
n1
<= x <= x
n
Los valores de m
i
se calculan con:
( ) ( )
i i
i i
i
x x
x f x f
m

=
+
+
1
1
ejemplo
x f (x)
3.0 2.5
4.5 1.0
7.0 2.5
9.0 0.5
2 4 6 8 10
2
0
Trazadores cuadrticos
El polinomio en cada intervalo es de la forma:
f
i
(x) = a
i
x
2
+ b
i
x + c
i
Para encontrar los a
i
, b
i
, c
i
se deben cumplir las siguientes condiciones:
1. Los valores de la funcin deben ser iguales en los nodos interiores, 2n
2 ecuaciones.

2. La primera y ltima funcin debe pasar por los extremos, 2 ecuaciones.


3. Las primeras derivadas en los nodos interiores deben ser iguales, n 1
ecuaciones. O sea: 2a
i 1
x
i1
+ b
i 1
= 2a
i
x
i1
+ b
i

4. Suponer derivada 0 en el primer punto. a
1
= 0
) (
) (
1 1
2
1
1 1 1 1
2
1 1


= + +
= + +
i i i i i i
i i i i i i
x f c x b x a
x f c x b x a
) (
) (
2
0 1 0 1
2
0 1
n n n n n n
x f c x b x a
x f c x b x a
= + +
= + +
ejemplo
x f (x)
3.0 2.5
4.5 1.0
7.0 2.5
9.0 0.5
Encontrar f (5)
La condicin 1 genera las siguientes ecuaciones:
20.25a
1
+ 4.5b
1
+ c
1
= 1.0
20.25a
2
+ 4.5b
2
+ c
2
= 1.0
49a
2
+ 7b
2
+ c
2
= 2.5
49a
3
+ 7b
3
+ c
3
= 2.5
La condicin 2 da las siguientes ecuaciones
9a
1
+ 3b
1
+ c
1
= 2.5
81a
3
+ 9b
3
+ c
3
= 0.5
La condicin 3 genera:
9a
1
+ b
1
= 9a
2
+ b
2

14a
2
+ b
2
= 14a
3
+ b
3

(
(
(
(
(
(
(
(
(
(
(

=
(
(
(
(
(
(
(
(
(
(
(

(
(
(
(
(
(
(
(
(
(
(



0
0
5 . 0
5 . 2
5 . 2
5 . 2
1
1
0 1 14 0 1 14 0 0
0 0 0 0 1 9 0 1
1 9 81 0 0 0 0 0
0 0 0 0 0 0 1 3
1 7 49 0 0 0 0 0
0 0 0 1 7 49 0 0
0 0 0 1 5 . 4 25 . 20 0 0
0 0 0 0 0 0 1 5 . 4
3
3
3
2
2
2
1
1
c
b
a
c
b
a
c
b
El sistema resultante es:
La solucin es:
a
1
= 0 b
1
= 1 c
1
= 5.5
a
2
= 0.64 b
2
= 6.67 c
2
= 18.46
a
3
= 1.6 b
3
= 24.6 c
3
= 91.3
f(5) = 0.64(5)
2
6.67(5) +18.46 = 1.11
yi = ppval (pp, xi) - Evala 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 cbicos 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 parmetros, evala el los puntos xi.
Splines cbicos
( ) ( ) ( )
( ) ( ) x x
h z
h
y
x x
h z
h
y
x x
h
z
x x
h
z
x S
i
i i
i
i
i
i i
i
i
i
i
i
i
i
i
i

|
|
.
|

\
|
+
|
|
.
|

\
|
+ +
+ =
+
+ +
+
+
1
1 1
3
1
3
1
6 6
6 6
Aplicando las condiciones de continuidad del spline S y de las
derivadas primera S' y segunda S'', es posible encontrar la
expresin analtica del spline.
Donde h
i
= x
i+1
x
i
y z
0
, z
1
, ,z
n
son incognitas.
Aplicando las condiciones de continuidad se llega a

( ) ( ) ( )
1
1
1
1
1 1 1 1
6 6
2


= + + +
i i
i
i i
i
i i i i i i i
y y
h
y y
h
z h z h h z h
La ecuacin anterior, genera un sistema de n1
ecuaciones lineales con n+1 incgnitas.
|
|
|
|
|
|
|
|
.
|

\
|
=
|
|
|
|
|
|
|
|
.
|

\
|
|
|
|
|
|
|
|
|
.
|

\
|

2
3
2
1
2
3
2
1
1 2
2 2
3 2
2 2 1
1 1
0 0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0 0
n
n
n
n
n
n
v
v
v
v
z
z
z
z
u h
h u
u h
h u h
h u

( )
( )
1
1 1
1
1
1
2
1
1
6
2

=
=
+ =
i
i i
i i i
i i
i
i
i
i
i i i
u
v h
b b v
y y
h
b
u
h
h h u
donde
Los valores del spline S se calculan eficientemente con
( ) ( ) ( ) ( ) | | | |
i i i i i i i i
A x x B x x C x x y x S + + + =
Donde
( )
( )
i i
i
i
i
i
i
i
i
i
i i
i
i
y y
h
z
h
z
h
C
z
B
z z
h
A
+ =
=
=
+ +
+
1 1
1
1
3 6
2
6
1
Los coeficientes de los polinomios se pueden calcular con:
c
1
= y
i
x
i
D
c
2
= D x
i
E
c
3
= E x
i
A
c
4
= A
Para obtener: f
i
(x) = c
1
+ c
2
x + c
3
x
2
+ c
4
x
3
Donde
( )
( )
A x B E
Ax B x C D
y y
h
z
h
z
h
C
z
B
h
z z
A
i
i i
i i
i
i
i
i
i
i
i
i i
2
1
3 6
2
6
2
1 1
1
=
+ =
+ =
=

=
+ +
+
Guin en MatLab
%encuentra los trazadores cbicos 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 cbicos
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
Ejemplo

También podría gustarte