Documente Academic
Documente Profesional
Documente Cultură
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:
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
, 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
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.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
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
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.
L x
x 2.5x 4 x 6.5x 10
n,0 2 0.52 4
L x
x 2x 4 4 x 24x 32
n,1 2.5 22.5 4 3
L x
x 2x 2.5 x 4.5x 5
n,2 4 24 2.5 3
f n1 x
f x0 Px 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)
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 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 xi21 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 )
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).
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
hi 1 zi 1 2hi hi 1 zi hi zi 1 yi 1 yi 6 yi yi 1
6
hi 1 hi 1
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
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
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