Vous êtes sur la page 1sur 27

Interpolación

Interpolación lineal
• Es la forma mas común de estimar un punto de datos entre
dos puntos conocidos. Esta función se puede estimar
mediante una línea recta
• La ecuación de una línea recta dibujada entre los dos puntos
conocidos se pueden encontrar y para cualquier valor de X
1 0

8
¿Cuál es el valor de y
para esa x?
6

0 1 2 3 4 5
Interpolación
Grafica de Datos Datos Medidos
1 0 1 4
Punto de
1 2
8 interpolación
1 0
6 8
6
4 4
2
2 0

0 1 2 3 4 5 -1 1 2 3 4 5 6

Matlab función interp1 son los datos x, los datos y, y el nuevo valor x del cual
Se estima y ejem:
Ejemplo:
• X=0:5;
• Y=[15,10,9,6,2,0];
• interp1(X,Y,3.5)

• ans =

• 4
Interpolación cubica
segmentaria
• Utiliza un polinomio de tercer orden (spline)
• Para agregarlo se necesita agregar un cuarto campo a interp1
• Interp1(x,y,3.5,’spline’)
• Este comando regresa una estimación mejorada de y en x
=3.5, donde la respuesta es 3.9417
• X=0:5;
• Y=[15,10,9,6,2,0];
• interp1(X,Y,3.5)
• interp1(X,Y,3.5,'spline')
• new_x=0:0.2:5
• new_y=interp1(X,Y,new_x)
• plot(X,Y,new_x,new_y,'o')
Técnica cubica segmentaria
• Se utiliza para crear un arreglo
de nuevas estimaciones para y;
para cada miembro de un
arreglo de valores x

• %Técnica cubica segmentaria



• interp1(X,Y,3.5,'spline')
• new_x=0:0.2:5
• y_spline=
interp1(X,Y,new_x,'spline');
• plot(X,Y,x,y_spline,'-o')
Opciones de interpolación en la
función interp1
Comando Definición Sintaxis
‘linear’ Interpolación lineal, que interp1(x,y,3.5,’linear’)
es por defecto ans = 4
‘nearest’ Interpolación al vecino interp1(x,y,3.5,’nearest’)
mas cercano ans = 2
‘spline’ Interpolación cúbica interp1(x,y,3.5,’spline’)
segmentaria ans = 3.9417
‘pchip’ Interpolación cúbica que interp1(x,y,3.5,’pchip’)
preserva la forma ans = 3.9048
‘cubic’ Igual que pchip interp1(x,y,3.5,’cubic’)
ans = 3.9048
‘vScubic’ La interpolación cubica interp1(x,y,3.5,’vScubic’)
en Matlab que no ans = 3.9375
extrapolada y usa ‘spline’
si x no esta igualmente
espaciada
• y=2:2:6
• x=1:4
• z=[ 7 15 22 30
• 54 109 164 218
• 403 807 1210 1614]
Encontrar los valores de z en y = 3 para todos los valores de x

new_z=interp1(y,z,3)
new_z= 30.5 62.00 93.00 124.00

Interp1 para encontrar z en y=3 y x=1.5

new_z2=interp1(x,new_z,1.5)
new_z2=46.25

Función de interpolación lineal bidimensional interp2

interp2(x,y,z,1.5,3)
ans = 46.2500
• interp2

Utiliza x,y,z
El arreglo z debe tener el mismo numero de columnas, como el
numero de elementos en x y debe de tener el mismo numero de
filas como el numero de elementos en y.
El cuarto y quinto campo corresponden al valor de x y el valor
de y para el que le gustaría determinar nuevos valores de z

Interp3 para interpolación tridimensional


Ejercicio
x/y -3 -2 -1 0 1 2 3
-3 37.0000 23.0000 11.0000 1.0001 -7.0000 -13.0000 -17.0000
-2 22.0000 13.0003 6.0067 1.0183 -1.9933 -2.9997 -2.0000
-1 13.0000 7.0067 3.1353 1.3679 1.1353 3.0067 7.0000
0 10.0001 5.0183 2.3679 2.0000 2.3679 5.0183 10.0001
1 13.0000 7.0067 3.1353 1.3679 1.1353 3.0067 7.0000
2 22.0000 13.0003 6.0067 1.0183 -1.9933 -2.9997 -2.0000
3 37.0000 23.0000 11.0000 1.0001 -7.0000 -13.0000 -17.0000

Calcular y representar, utilizando interpolación lineal y


cubica bidimensional, el valor estimado de la variable z
sobre un mallado [−3, 3] × [−3, 3] de incremento 0.4.
Solución
• x=[-3:1:3];
• y=x; %datos
• [X,Y]=meshgrid(x,y);
• %Datos para z
• %Z=F(X,Y) para F desconocida. La calculamos por
interpolación
• % Lineal y Cubica
• Z=[
• 37.0000 23.0000 11.0000 1.0001 -7.0000 -13.0000 -
17.0000
• 22.0000 13.0003 6.0067 1.0183 -1.9933 -2.9997 -2.0000
• 13.0000 7.0067 3.1353 1.3679 1.1353 3.0067 7.0000
• 10.0001 5.0183 2.3679 2.0000 2.3679 5.0183 10.0001
• 13.0000 7.0067 3.1353 1.3679 1.1353 3.0067 7.0000
• 22.0000 13.0003 6.0067 1.0183 -1.9933 -2.9997 -2.0000
• 37.0000 23.0000 11.0000 1.0001 -7.0000 -13.0000 -
17.0000
• ];
Solución
• %Realizamos el mallado donde queremos calcular
F
• [XI,YI]=meshgrid(-3:0.4:3,-3:0.4:3);
• subplot(1,2,1)
• %Interpolación Lineal
• ZI=interp2(X,Y,Z,XI,YI);
• mesh(XI,YI,ZI),
• xlabel('x'), ylabel('y'), zlabel('z'),
• title('Interpolación Lineal')
• %Interpolación Cubica
• subplot(1,2,2)
• ZI=interp2(X,Y,Z,XI,YI,'cubic')
• mesh(XI,YI,ZI),
• xlabel('X'), ylabel('Y'), zlabel('Z'),
• title('Interpolacion Cúbica')
Solución
• De modo que la ecuación lineal es:
• Y=-3x+15
• Y_calc= -3.*X+15
• El método de regresión lineal utiliza el enfoque de los mínimos cuadrados.
• Las diferencias entre los valores y reales y calculados se elevan al cuadrado y
se suman.

• suma_de_cuadrados=sum((y-y_calc).^2)
• suma_de_cuadrados = 5
x y(real) y_calculada Diferencia =y-y_calculada
0 15 15 0
1 10 12 -2
2 9 9 0
3 6 6 0
4 2 3 -1
5 0 0 0
Regresión lineal
• Con la función polyfit se requieren de tres campos
• Un vector de valores x
• Un vector de valores y
• Y un entero que indique que orden de polinomio se usaria para
ajustar los datos

• x=0:5
• y=[15, 10, 9,6,2,0]
• polyfit(x,y,1)
• ans= -2.9143 14.2857
Los coeficientes corresponden a las ecuaciones polinomial de
primer orden.
y= -2.9143+14.2857
• Se calcula la suma de cuadrados para encontrar:

best_y= -2.9143*x+14.2857;
new_sum =sum(y-best_y).^2)
new_sum= 3.3714

Dado que el resultado del calculo de la suma de los cuadrado


hechos es menor que el valor encontrado por la linea

plot(x,y,’o’,x,best_y)
• Regresión Lineal
EJERCICIO
• Considere el siguiente conjunto de datos x f(x)
X F(X)
0.1 0.6029196177260
0.2 0.6598675103186
0.3 0.7283500958774
0.4 0.7861317056154
0.5 0.8514267017599
0.6 0.9174968894121
0.7 0.9811441017109
0.8 0.1040720867913

• 1. Construir la aproximación lineal por mínimos cuadrados y


dibujarla frente al conjunto de datos.
• 2. Construir las aproximaciones por mínimos cuadrados
mediante polinomios de segundo y de tercer grado. Representar
gráficamente las curvas y compararlas con el conjunto de puntos.
Regresión polinomial
• Ajustar los datos con un polinomio de orden superior.
• Se utiliza para obtener mejor ajuste al minimizar la suma de los
cuadrados en las desviaciones de los valores calculados.
• La función polifyt regresa los coeficientes de un polinomio que ajusta
mejor los datos., con la base de criterio de regresión.

• x=0:5
• y=[15, 10, 9,6,2,0]
• polifyt(x,y,2)
• 0.0536 -3.1821 14.4643
• y1=(0.0536.*(x.^2))-3.1821.*x+ 14.4643
• suma=sum((y-y1).^2)
• polifyt(x,y,3)
• -0.0648 0.5397 -4.0701 14.6587
• %Generando las siguientes ecuaciones
• y2=-(0.0648.*(x.^3))+ (0.5397.*(x.^2))-4.0701.*x+ 14.658
• suma=sum((y-y2).^2)
Regresión polinomial
• La suma de los cuadrados para determinar si estos modelos
ajustan mejor los datos

• Entre mas términos se agregue a la ecuación, “mejor” es el


ajuste al menos en que se disminuye la distancia entre los
puntos de datos medidos y predichos
Regresión polinomial
• Graficar los las curvas definidas por estas nuevas ecuaciones,
se necesitaran mas de seis puntos usados en el modelo inicial
• Se puede crear mas puntos y graficar las curvas con el
siguiente código.
graficacion lineal

smooth_x=0:0.2:5
smooth_y2=(0.0536.*(smooth_x.^2))-3.1821.*smooth_x+ 14.4643
subplot(1,2,1)
plot(x,y,'o',smooth_x,smooth_y2)
smooth_y3= -(0.0648.*(smooth_x.^3))+ (0.5397.*(smooth_x.^2))-
4.0701.*smooth_x+ 14.658
subplot(1,2,2)
plot(x,y,'o',smooth_x,smooth_y3)
Graficas
Función polyval
• La función polyval requiere de dos entradas.
1. Un arreglo de coeficientes
2. Un arreglo de valores de x

• coef=polyfit(x,y,1)
• y_primer_orden= polyval(coef,x)

• y_primer_orden=polyval(polyfit(x,y,1),x)
• Funciones polyfit y polyval para escribir un programa para
calcular y graficar los ajustes de cuarto y quinto.

• y4=polyval(polyfit(x,y,4),smooth_x)
• y5=polyval(polyfit(x,y,5),smooth_x)
• figure (2)
• subplot(1,2,1)
• plot(x,y,'o',smooth_x,y4)
• axis([0,6,-5,15])

• subplot(1,2,2)
• plot(x,y,'o',smooth_x,y5)
• axis([0,6,-5,15])
Ejercicio
• x es igual al Intervalo de –4 hasta 5
• Evaluar en función de x
• 𝑓 𝑥 = −11𝑥 3 − 27𝑥 2 + 10𝑥 − 24

• Realizar un ajuste en 4 y 5 grado

Vous aimerez peut-être aussi