Escolar Documentos
Profissional Documentos
Cultura Documentos
CONTENIDO:
Interpolación polinómica. Interpolación. Polinomio de Lagrange y Taylor.
Ajuste de Curvas. Interpolación iterada. Diferencias divididas de Newton.
APROXIMACIÓN POLINOMIAL E INTERPOLACIÓN
Interpolación y extrapolación.
Polinomios de aproximación de Lagrange.
Diferencias divididas.
IDEAS:
Cuando pensamos que dos magnitudes variables x e y, están relacionadas
por una función pero no conocemos su fórmula, es posible partir de los
datos conocidos que las relacionan (x0, y0), (x1, y1), (x2, y2) …. (xn, yn)
para calcular una función polinómica:
y = f (x)
que cumpla:
2
Esta función f(x), cuya regla de correspondencia define al
Polinomio Interpolador, no es exactamente la función que
buscamos pues podría ser exponencial, logarítmica o de
cualquier otro tipo, pero sirve para calcular
aproximadamente otros valores desconocidos de las
variables, especialmente si se encuentran próximos a los
valores conocidos xi.
4
y0=mx0+n , y1=mx1+n
por cualquier método, y sustituirlos en la fórmula de f(x). También es posible usar
la fórmula para calcular la pendiente de la recta dados dos puntos: m= y1−y0 /(x1−x0)
y sustituir su valor en la ecuación
y = m (x – x0 ) + y0.
Observación: Primero calculamos f(x) (Polinomio Interpolador) para luego interpolar
o extrapolar.
5
Ejemplo 1.
En un negocio recién abierto, la primera semana hubo 150 clientes que supusieron
unos ingresos de 3600 soles, y la segunda semana 200 clientes que supusieron
ingresos de 5600 soles.
a) Hallar la función de interpolación lineal que relaciona los
ingresos (y) con el número de clientes (x).
b) ¿Cuántos ingresos generarían 190 clientes?
c) ¿Cuántos clientes se necesitarían para generar 7000 soles de
ingresos?
6
Solución:
Tenemos dos parejas de datos clientes-ingresos ,
(x, y): (150, 3600) y (200, 5600).
a) Calculamos f (x) = y = mx + n
3600=150m+n 5600=200m+n
2000= 50m → m= 2000/ 50 =40
sustituyendo este valor,
3600=150⋅40+n → n=−2400
Por lo tanto,
f(x)=40 x−2400
7
c) f (x)=7000 → 40x − 2400 = 7000
→ x = 7000 + 2400 / 40 = 235
Por lo tanto, extrapolando, harían falta 235 clientes para generar unos ingresos de
7,000 soles.
f (x) = y = ax2 + bx + c
8
y sustituir las soluciones en la fórmula de f(x). Entonces, se usa la función para
interpolar o extrapolar valores desconocidos.
Observación:
El sistema se simplifica mucho si uno de los xi es 0, porque entonces se obtiene
directamente c en la ecuación que corresponde a ese dato. Si los datos xi son años, es
recomendable suponer que el dato menor es el año 0, y el resto calcularlos en la nueva
escala temporal. En otro tipo de datos se debe valorar si conviene o no hacer el cambio
de variable que iguala a 0 uno de los datos (y cambian consecuentemente todos los
demás), porque es posible cometer errores de interpretación.
9
Ejercicio:
Solución:
10
11
12
Observación:
13
Interpolación de grado n :
14
15
Algunas consideraciones:
i)
a.-
b.-
c.-
16
i)
ii)
Nota:
17
Observación:
Por otra parte es evidente que la función interpoladora debe ser
fácil de evaluar, derivar e integrar, dependiendo del tipo de
funciones que se consideren, existen varios tipos de interpolación,
como se señaló anteriormente como pueden ser : polinómica,
trigonométrica, por funciones spline, racionales y exponenciales.
Trataremos en primer lugar la Interpolación de Lagrange que es
de tipo polinomial.
El siguiente resultado implica que existen polinomios que
se aproximan a cualquier función continua.
18
Codificación en Matlab
Sea polinomio 𝑃 𝑥 = 𝑎𝑛 𝑥 𝑛 + 𝑎𝑛−1 𝑥 𝑛−1 + ⋯ + 𝑎1 𝑥 + 𝑎0
La sintaxis para P en Matlab es: p=[𝑎𝑛 , 𝑎𝑛−1 , … , 𝑎1 , 𝑎0 ]
Como ejemplo, escriba el polinomio: 5𝑥 4 − 3𝑥 2 + 6𝑥 − 7:
>>p=[5 0 -3 6 -7]
19
p=poly(r): p es un polinomio que se obtiene a partir de sus raíces definidas en el array r.
AJUSTE DE CURVAS
Ejercicio: Dados los siguientes puntos: (0,18), (1,20), (2,12), (3,0), (4,-10), (5,-12), (6,0), (7,32),
(8,90), (9,180), (10,308). Efectúe un ajuste lineal y cuadrático mostrando las aproximaciones para
x=3.1 y x=3.75 empleando los polinomios involucrados, luego muestre las respectivas gráficas.
Solución:
20
datox=linspace(0,10,11);
datoy=[18,20,12,0,-10,-12,0,32,90,180,308];
tabla=[datox',datoy']
#polinomio de grado 1
poln1=polyfit(datox,datoy,1);
x=linspace(-4,14,100);
aproxpoln1=polyval(poln1,x);
#polinomio de grado 2
poln2=polyfit(datox,datoy,2);
x=linspace(-4,14,100);
aproxpoln2=polyval(poln2,x);
#GRAFICAS
plot(datox,datoy,'o')
hold on
plot(x,aproxpoln1,'r')
plot(x,aproxpoln2,'b')
#APROXIMACIONES
x1=3.1;
x2=3.75;
disp('Aproximaciones lineales:')
y1=polyval(poln1,x1);
y2=polyval(poln1,x2);
[x1,y1;x2,y2]
plot(x1,y1,'*g',x2,y2,'*g')
disp('Aproximaciones Cuadraticas:');
y1=polyval(poln2,x1);
y2=polyval(poln2,x2);
[x1,y1;x2,y2]
plot(x1,y1,'*r',x2,y2,'*r')
legend('Coordenadas dato','Ajuste lineal',...
'Ajuste Cuadratico','Ajuste Lineal',...
'Para x1 y x2','Ajuste Cuadratico',...
'Para x2 y x2')
hold off
25
26
27
28
Teorema: (Unicidad del Polinomio Interpolador)
Demostración:
29
30
31
Ejemplo:
Sean los siguientes puntos: (2,5), (4,6), (5,3). Halle el polinomio
interpolador que incluya estos puntos usando la fórmula de
Lagrange.
32
Solución:
33
Verifique que este polinomio incluye a los 3 puntos dados.
Ejemplo:
Sean los siguientes puntos: (2,5), (4,6), (5,3). Usando la fórmula
de Lagrange, evalúe en x=3, el polinomio de interpolación que
incluye a estos 3 puntos dados.
34
35
36
Implementación Computacional
37
function [p] = lagrange(x, f, v)
n=length(x); %número de puntos dato
syms t; %variable simbólica para el polinomio: t
p=0;
for i=1:n
L=1;
for j=1:n
if i~=j
L=L*(t-x(j))/(x(i)-x(j)); %algoritmo Lagrange
end
end
p=p + L*f(i); % polinomio interpolador de Lagrange simbólico
end
p=expand(p); %simplificación algebraica
if nargin==3 %verifica si existe un parámetro adicional
t=v;
p=eval(p); %evaluación del Polinomio en un valor v
end
38
>> x=[2 4 5];
>> f=[5 6 3];
>> p=lagrange(x,f)
p=
(15*t)/2 - (7*t^2)/6 - 16/3
>> r=lagrange(x,f,4)
r=
6.0000
>> r=lagrange(x,f,4.25)
r=
5.4687
>> plot(x,f,'o'), grid on
>> hold on,
>> ezplot(p,[2,5])
>> plot(x,f,'o'), grid on
>> hold on,
>>ezplot(p,[2,5])
39
40
Ejemplo:
Sea la siguiente nube de datos(xdato,ydato):
xdato=[0 0.2 0.5 0.6 0.9 1]
ydato=[0 0.1987 0.4794 0.5646 0.7833 0.8415].
𝑥−𝑥𝑗
𝐿𝑖 𝑥 = ς𝑛𝑗≠𝑖,𝑗=0
𝑥𝑖 −𝑥𝑗
41
Calculando analíticamente los 𝐿𝑖 𝑥 : Ejercicio
42
b)
Función base para el Polinomio de Lagrange:
function y=fbaselag(x,i,nodos)
%x:valor en donde se interpolará
%y:valor aproximado según el polinomio interpolante
n=length(nodos)-1;
y=1;
for j=0:n
if i~=j
y=y.*(x-nodos(j+1))./(nodos(i+1)-nodos(j+1));
end
end
43
Función para el Polinomio de Lagrange:
function y=plagrange(x,xdato,ydato)
n=length(xdato)-1; y=0;
for i=0:n
y= y + fbaselag(x,i,xdato).*ydato(i+1);
end
%disp(y)%evita escribir la funcion en la consola
end
En la consola de comandos:
>> plagrange(0.3) %salida cuando se le ha quitado el nombre: y , en la
0.2955 %primera linea del function.
>> plagrange(0.71)
0.6518
44
x=linspace(-pi,pi,50);
xdato=[0 0.2 0.5 0.6 0.9 1];
ydato=[0 0.1987 0.4794 0.5646 0.7833 0.8415];
y=plagrange(x,xdato,ydato);
plot(x,y,'--');
hold on
yexacta=sin(x);
plot(x,yexacta,'--k')
plot(xdato,ydato,'or')
hold off
legend('Pol. Interpolante: P(x)','Sol. Exacta:
Sen(x)','Coordenadas Dato:')
xlabel('X')
ylabel('Y')
text(-3,0,'Sen(x)')
text(-3.3,-1,'P(x)')
% title('{\color{red}Interpolacion via:}','{\color[rgb]{.3
.6 .1} El Polinomio de Lagrange}')
title({'{\color{red}Interpolacion via:}','{\color[rgb]{.3
.6 .1} El Polinomio de Lagrange}'})
45
c)
46
Ejercicio:
a) Use los nodos 2, 2.75, 4 para obtener analíticamente el segundo polinomio
de interpolación de Lagrange para f(x)=1/x.
b) Aproxime f(3)=1/3, usando la solución analítica del paso anterior.
Implemente la siguiente tabla, para 𝑥 ∈ 0,10 .
47
c) Complemente la parte (b), generando las gráficas de P(x) y f(x). Use las funciones
de implementación de gráficos (text, title, leyenda, etc).
Solución:
1 35 49
a) 𝑃 𝑥 = 𝑥2 − 𝑥+
22 88 44
b) y c)
clc;
x=0:0.2:10;
P=[1/22 -35/88 49/44];
Polx=polyval(P,x);
plot(x,Polx)
hold on
fx=1./x;
plot(x,fx,'r')
x1=3;
Polx1=polyval(P,x1) %Calcula: 𝑃 3 ≈ f(3) = 29/88 .
fprintf('==========================\n')
fprintf(' x P(x) f(x)=1/x\n')
fprintf('==========================\n')
fprintf('%1.1f %1.4f %1.4f \n', [x; Polx ; fx]);
48
fprintf('==========================\n')
axis square
text(0.1,0.8,'P(x)')
text(0.5,2.6,'f(x)')
xa=3;
y=1/xa;
plot(xa,y,'ok')
xe=3;
y=1/xe;
plot(xe,y,'.g')
text(2.7,0.6,'P(3) ~ f(3)')
legend('P(x)=(1/22)x^2-(35/88)x+(49/44)',
'f(x)=1/x','P(3)=0.3295','f(3)=0.3333')
title('{\color{blue}Interpolacion de 2o.grado de
Lagrange:}')
49
50
Verifique.
51
Ejercicio: Grafique ambas funciones en una misma ventana.
Solución:
x=linspace(0,2,100);
p=[1.4762 0.24204 1];
y=polyval(p,x);
plot(x,y);
z=exp(x);
hold on
plot(x,z,'r');
legend('p(x)= 1.4762x^2 + 0.2420x + 1','f(x)= exp(x)');
xlabel=('X');
ylabel=('Y');
grid on;
title('Aprox. de f(x)=exp(x) por un polinomio de 2o.grado')
64
Definiciones:
65
66
Ejemplo:
Tabule las diferencias finitas correspondientes a los siguientes datos
(1.0, 5), (1.5, 7), (2.0, 10), (2.5, 8).
Solución:
67
68
69
Demostración:
70
71
72
73
74
75
76
77
78
79
80
81