Escolar Documentos
Profissional Documentos
Cultura Documentos
INTERPOLACION
1. Diferencia entre interpolación y regresión
La regresión es el ajuste de los datos
experimentales a una función que describe el
modelo físico particular. Por ejemplo, en un
experimento de movimiento rectilíneo
uniforme, los datos experimentales (tiempo,
posición del móvil) se ajustan a una línea
recta, ya que la ecuación que describe el
movimiento rectilíneo uniforme es x=x0+v·t
En la interpolación la función pasa por todos los
puntos.
2. Interpolación lineal
Para 2 puntos en general, la interpolación lineal también es
sencilla de entender y programar. Disponemos de pares de
datos (xk,yk) k=1,2...n. Queremos conocer el valor de y para
un valor cualquiera de x en el intervalo x1 a xn. Supongamos
que x está en el intervalo (xk,xk+1) tal como se muestra en la
figura. Trazamos la recta que pasa por los puntos (xk,yk) y
(xk+1,yk+1), cuya ecuación es:
Ejemplo:
%Datos: (0,0), (π/3, sin(π/3)), (2π/3, sin(2π/3)), (π, 0)
x=0:pi/3:pi; %datos
y=sin(x);
x0=[pi/6,pi/2,5*pi/6]; %interpolación lineal
y0=interpola_lineal(x,y,x0);
%y0=interp1(x,y,x0,'linear'); %esta es una función
MATLAB
hold on
fplot('sin(x)',[0,pi])
plot(x,y)
plot(x,y,'bo','markersize',3,'markerfacecolor','b')
plot(x0,y0,'ro','markersize',4,'markerfacecolor','r')
set(gca,'XTick',0:pi/6:pi)
set(gca,'XTickLabel',{'0','\pi/6','\pi/3','\pi/2','2\pi/3','5\pi/6', '\pi'})
hold off
grid on
xlabel('x');
ylabel('y')
title('Interpolación lineal')
3. Interpolación de Lagrange
Queremos obtener los coeficientes de un polinomio de grado N:
a1xN+a2xN-1+...+aNx+aN+1 que pase por todos los pares de datos (x1,y1),
(x2,y2), ..., (xN+1,yN+1). Los coeficientes se pueden obtener resolviendo el siguiente
sistema de ecuaciones: (explicación en la pizarra)
En forma matricial, la matriz se conoce con el nombre de Vandermonde y se construye
con el comando vander(x), como podemos leer utilizando la ayuda (help) de MatLab
A=vander(v)
devuelve una matriz de Vandermonde cuyas columnas son las potencias del vector v,
esto es, A(i,j)=v(i)^(n-j).
Ejemplo:
X 0.97 1.12 2.92 3.00 3.33 3.97 6.10 8.39 8.56 9.44
Y 2.58 0.43 0.06 5.74 7.44 8.07 6.37 2.51 1.44 0.52
x=[0.97 1.12 2.92 3.00 3.33 3.97 6.10 8.39 8.56 9.44];
y=[2.58 0.43 0.06 5.74 7.44 8.07 6.37 2.51 1.44 0.52];
n=length(x); %número de pares de datos
%A=vander(x);
A=zeros(n); %líneas equivalentes a utilizar vander(x)
for j=1:n
A(:,j)=(x').^(n-j);
end
p=A\y' %sistema de ecuaciones lineales, y' es vector columna
p=
1.0e+04 *
0.0000
-0.0003
0.0057
-0.0595
0.3782
-1.4951
3.6430
-5.2142
3.9256
-1.1823
yi = spline(x,y,xi);
Ejemplo:
sin x
y= 2
x +1
x=-4:4;
f=@(x) sin(x)./(1+x.^2);
y=f(x);
%dibuja los puntos
hold on
plot(x,y,'bo','markersize',3,'markeredgecolor','b','markerfacecolor',
'b')
xlabel('x')
ylabel('y')
grid on
title('Interpolación splines')
%g=@(xx) spline(x,y,xx); %interpolación mediante spline
%fplot(g, [x(1),x(end)],'r')
EJERCICIOS
1.
XK 1 2 4 5
FK 0 2 12 21
@(xx)lagrange_3(x,y,xx)
>> hold on
>> plot(x,y,'bo','markersize',4,'markerfacecolor','b')
>> fplot(f,[1 7],'r')
>> f=@(x) ((6.7*(0.5-x))-x^1.5);
>> m=punto_medio(f, 0, 0.5, 1000)
m=
0.4542
n=
0.2332
Equation solved.
x=
fval =
1.0e-08 *
F=
@(x)[x(1)^2-x(2)^2+2*x(3)]
>> W=