Documente Academic
Documente Profesional
Documente Cultură
MATLAB
(a entregar)
I)
Interpolacin 1D
y
2.3
5.8
8.9
12.5
14.7
18.7
20.5
25.8
Interpole los datos de x entre los puntos x=0 y x=10, usando un paso de
x=0.5 y los siguientes mtodos de interpolacin:
a)
b)
c)
d)
e)
f)
Grafique los datos y el modelo interpolado en la misma figura por cada mtodo de
interpolacin. Compare sus resultados.
Solucion:
Los modelos que ajustan los datos con el mtodo lineal, de vecinos cercanos y
cubico (Matlab V5) no pueden extrapolar.
a)
interpolacin de datos 1D
30
25
20
datos
modelo lineal
15
10
5
x
10
yi =
Columns 1 through 10
2.3000 4.0500 5.8000 7.3500 8.9000 10.7000 12.5000 13.6000 14.7000 16.7000
Columns 11 through 20
18.7000 19.6000 20.5000 23.1500 25.8000
NaN
NaN
NaN
NaN
NaN
Column 21
NaN
b)
interpolacin de vecinos mas cercanos
30
25
datos
modelo nearest
20
15
10
5
x
10
yin =
Columns 1 through 10
2.3000 5.8000 5.8000 8.9000 8.9000 12.5000 12.5000 14.7000 14.7000 18.7000
Columns 11 through 20
18.7000 20.5000 20.5000 25.8000 25.8000
NaN
NaN
NaN
NaN
NaN
Column 21
NaN
c)
interpolacin spline
160
140
datos
modelo spline
120
100
80
60
40
20
0
5
x
10
yis =
Columns 1 through 10
2.3000 4.2375 5.8000 7.2625 8.9000 10.8251 12.5000 13.5247 14.7000
16.7262
Columns 11 through 20
18.7000 19.7204 20.5000 22.1546 25.8000 32.5521 43.5268 59.8399
82.6072 112.9446
Column 21
151.9679
d)
interpolacin pchip
40
datos
modelo piecewise cubic hermite interpolation
35
30
25
20
15
10
5
0
5
x
10
yip =
Columns 1 through 10
2.3000 4.1015 5.8000 7.3446 8.9000 10.7750 12.5000 13.5865 14.7000 16.7445
Columns 11 through 20
18.7000 19.5744 20.5000 22.6047 25.8000 29.4390 32.8746 35.4599 36.5479 35.4915
Column 21
31.6437
e)
interpolacin cubica
40
datos
modelo cubico
35
30
25
20
15
10
5
0
5
x
10
yic =
Columns 1 through 10
2.3000 4.1015 5.8000 7.3446 8.9000 10.7750 12.5000 13.5865 14.7000 16.7445
Columns 11 through 20
18.7000 19.5744 20.5000 22.6047 25.8000 29.4390 32.8746 35.4599 36.5479 35.4915
Column 21
31.6437
f)
interpolacin cubica en MATLAB V5
30
25
20
datos
modelo cubico
15
10
5
x
10
yiv5c =
Columns 1 through 10
2.3000 4.1000 5.8000 7.3438 8.9000 10.7563 12.5000 13.5750 14.7000 16.7250
Columns 11 through 20
18.7000 19.5188 20.5000 22.7125 25.8000
NaN
NaN
NaN
NaN
NaN
Column 21
NaN
****************************************************************************
II)
() = ( 2 )
1) Calcule y grafique la interpolacin gaussiana RBF con el parmetro ms
adecuado (*). Grafique la funcin (), los nodos de interpolacin usados y
la interpolacin Gaussiana RBF. Explique su resultado.
Solucin:
%EJERCICIO 1
x = -2:0.5:2; xi = -2:0.01:2;
y = x.*exp(-x.*x);
yi = xi.*exp(-xi.*xi);
%param=10;
param=0.5; %parametro ideal de interpolacin porque es aproximadamente
igual a la distancia entre nodos
%param=0.1;
fi=rbfinterp(xi, rbfcreate(x, y,'RBFFunction', 'gaussian', 'RBFConstant',
param));
figure(4),plot(x,y,'o',xi,yi, xi, fi); legend('Nodos de interpolacin',
'funcin', 'Interpolacin Gausiana RBF')
0.5
0.4
Nodos de interpolacin
funcin
Interpolacin Gausiana RBF
0.3
0.2
0.1
0
-0.1
-0.2
-0.3
-0.4
-0.5
-2
-1.5
-1
-0.5
0.5
1.5
(*) Nota: recuerde que el ptimo es cercano a la distancia entre los nodos de
interpolacin.
-0.3
-0.4
-0.5
-2
-1.5
-1
-0.5
0.5
1.5
-0.3
-0.4
-0.5
-2
-1.5
-1
-0.5
0.5
1.5
0.045
0.04
0.035
0.03
0.025
0.02
0.015
0.01
0.005
0
-2
-1.5
-1
-0.5
0.5
1.5
() = ( 2 2 )
4)
Grafique una malla aleatoria (use la funcin rand tipo seed y la funcin
meshgrid) de 50 puntos en el intervalo entre -2 < x < 2 y -2 < y < 2, a un
paso de 0.05 puntos. A dicha malla asgnele la funcin () e interplela
(use las funciones meshgrid y griddata, este ltimo con una interpolacin
cbica). Interpole los datos utilizando la interpolacin RBF multicuadrtica
(funcin rbfinterp, rbfcreate) con un parmetro =2.0. Grafique en 3D y
compare ambos resultados. Calcule los errores con amabas
interpolaciones y grafquelas. Compare los resultados.
%Ejercicio 4
rand('seed',0)
x = rand(50,1)*4-2; y = rand(50,1)*4-2;
z = x.*exp(-x.^2-y.^2);
ti = -2:.05:2;
[XI,YI] = meshgrid(ti,ti);
%interpolacion cubica con la function griddata
ZIc = griddata(x,y,z,XI,YI,'cubic');
%RBF interpolation
ZI = rbfinterp([XI(:)'; YI(:)'], rbfcreate([x'; y'], z','RBFFunction',
'multiquadric', 'RBFConstant', 2));
%ZI = rbfinterp([XI(:)'; YI(:)'], rbfcreate([x'; y'], z','RBFFunction',
'cubic', 'RBFConstant', 2));
ZI_s = reshape(ZI, size(XI)); %cambia el tamao, en este caso de vector
ZI a matriz
%Plot data
figure(8)
subplot(2,2,1); mesh(XI,YI,ZIc), hold, axis([-2 2 -2 2 -0.5 0.5]);
plot3(x,y,z,'.r'), hold off; title('Interpolation using Matlab function
griddata(method=cubic)');
subplot(2,2,3);
pcolor(abs(ZIc - XI.*exp(-XI.^2-YI.^2))); colorbar;
title('griddata(method=cubic) interpolation error');
subplot(2,2,2);
mesh(XI,YI,ZI_s), hold, plot3(x,y,z,'.r'), hold off; title('RBF
interpolation'); axis([-2 2 -2 2 -0.5 0.5]);
subplot(2,2,4);
pcolor(abs(ZI_s - XI.*exp(-XI.^2-YI.^2))); colorbar; title('RBF
interpolation error');
1.5
10
20
30
40
50
60
10
20
30
40
50
60
70
80
0.02
0.04
0.06
0.08
10
20
30
40
50
60
70
70
0.1
80
80
-2
-2
-1.5
-1.5
-1
-1
0.5
-0.5
-0.5
-0.5
0.5
0.5
-1
-1.5
1.5
1.5
-2
-2
10
20
-1.5
-0.5
30
40
50
-1
60
70
RBF interpolation
80
0.5
-3
x 10
7
1.5
-2
-2
10
20
30
40
50
60
10
20
30
40
50
60
70
0.02
0.04
0.06
0.08
10
20
30
40
50
60
70
70
0.1
80
80
-1
80
-1
-0.5
2
-0.5
2
0.5
0.5
10
20
-1
-2
30
40
50
60
-2
70
80
-1
RBF interpolation
-3
x 10
7