Gesoestadística

13
Ejercicios prácticos: Interpolaciones y funciones de base radial 1D (RBF) en MATLAB (a entregar) I) Interpolación 1D 1) Considere el siguiente conjunto de datos: x y 0 2.3 1 5.8 2 8.9 3 12.5 4 14.7 5 18.7 6 20.5 7 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 métodos de interpolación: a) Lineal (por defecto). b) De vecinos mas cercanos (‘nearest’) c) ‘spline’ d) ‘pchip’ e) ‘cubic’ f) ‘v5cubic’ Grafique los datos y el modelo interpolado en la misma figura por cada método de interpolación. Compare sus resultados. Solucion: Los modelos que ajustan los datos con el método lineal, de vecinos cercanos y cubico (Matlab V5) no pueden extrapolar.

description

Interpolaciones en matlab

Transcript of Gesoestadística

  • Ejercicios prcticos: Interpolaciones y funciones de base radial 1D (RBF) en

    MATLAB

    (a entregar)

    I) Interpolacin 1D

    1) Considere el siguiente conjunto de datos:

    x y

    0 2.3

    1 5.8

    2 8.9

    3 12.5

    4 14.7

    5 18.7

    6 20.5

    7 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) Lineal (por defecto).

    b) De vecinos mas cercanos (nearest)

    c) spline

    d) pchip

    e) cubic

    f) v5cubic

    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)

    b)

    0 1 2 3 4 5 6 7 8 9 100

    5

    10

    15

    20

    25

    30

    x

    y

    interpolacin de datos 1D

    datos

    modelo lineal

    0 1 2 3 4 5 6 7 8 9 100

    5

    10

    15

    20

    25

    30

    x

    y

    interpolacin de vecinos mas cercanos

    datos

    modelo nearest

    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

    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)

    d)

    0 1 2 3 4 5 6 7 8 9 100

    20

    40

    60

    80

    100

    120

    140

    160

    x

    y

    interpolacin spline

    datos

    modelo spline

    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

  • e)

    0 1 2 3 4 5 6 7 8 9 100

    5

    10

    15

    20

    25

    30

    35

    40

    x

    y

    interpolacin pchip

    datos

    modelo piecewise cubic hermite interpolation

    0 1 2 3 4 5 6 7 8 9 100

    5

    10

    15

    20

    25

    30

    35

    40

    x

    y

    interpolacin cubica

    datos

    modelo cubico

    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

    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)

    ****************************************************************************

    II) Interpolacin 2D usando funciones de base radial

    A partir de la siguiente funcin y utilizando MATLAB:

    () = (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;

    0 1 2 3 4 5 6 7 8 9 100

    5

    10

    15

    20

    25

    30

    x

    yinterpolacin cubica en MATLAB V5

    datos

    modelo cubico

    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

  • 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')

    (*) Nota: recuerde que el ptimo es cercano a la distancia entre los nodos de

    interpolacin.

    2) Calcule la funcin de aproximacin gaussiana usando un parmetro

    suavizador =0.1 y =0.5. Compare estos dos resultados. Grafique la funcin

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 2-0.5

    -0.4

    -0.3

    -0.2

    -0.1

    0

    0.1

    0.2

    0.3

    0.4

    0.5

    Nodos de interpolacin

    funcin

    Interpolacin Gausiana RBF

  • (), los nodos de interpolacin usados y la aproximacin Gaussiana RBF Compare estos resultados con los de la interpolacin del ejercicio (1).

    %EJERCICIO 2 % Interpolacin vs suavizado

    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_s=0.1; fi=rbfinterp(xi, rbfcreate(x, y,'RBFFunction', 'gaussian', 'RBFConstant',

    param)); %interpola gi=rbfinterp(xi, rbfcreate(x, y,'RBFFunction', 'gaussian', 'RBFSmooth',

    param_s));%suaviza figure(5),plot(x,y,'o',xi,yi, xi, fi, xi,gi); legend('Nodos de

    interpolacin', 'funcin', 'Interpolacin Gausiana RBF','Aproximacin

    Gausiana RBF')

    3) Calcule la interpolacin multicuadrtica (mulitiquadric) RBF y la

    interpolacin cbica y estime sus errores. Grafique la funcin (), los nodos

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 2-0.5

    -0.4

    -0.3

    -0.2

    -0.1

    0

    0.1

    0.2

    0.3

    0.4

    0.5

    Nodos de interpolacin

    funcin

    Interpolacin Gausiana RBF

    Aproximacin Gausiana RBF

  • de interpolacin usados, la interpolacin multicuadrtica RBF y la

    interpolacin cbica. Compare estos resultados.

    %EJERCICIO 3 %interpolacin cbica x = -2:0.5:2; xi = -2:0.01:2; y = x.*exp(-x.*x); yi = xi.*exp(-xi.*xi); %1D Interpolation cubica usando RBF ym = interp1(x,y,xi,'cubic');

    fi=rbfinterp(xi, rbfcreate(x, y,'RBFFunction', 'multiquadric'));

    %interpola cuadratico figure(6),plot(x,y,'o', xi,yi, xi,fi, xi,ym); legend('Nodos de interpolacin', 'funcin', 'Interpolacin RBF

    multiquadric', 'Interpolacin cbica del Matlab') figure(7),plot( xi, abs(fi-yi), xi, abs(ym-yi)); legend('Error de interpolacin RBF','Error de interpolacin cbica

    MATLAB');

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 2-0.5

    -0.4

    -0.3

    -0.2

    -0.1

    0

    0.1

    0.2

    0.3

    0.4

    0.5

    Nodos de interpolacin

    funcin

    Interpolacin RBF multiquadric

    Interpolacin cbica del Matlab

  • A partir de la siguiente funcin y utilizando MATLAB:

    () = (22)

    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');

    -2 -1.5 -1 -0.5 0 0.5 1 1.5 20

    0.005

    0.01

    0.015

    0.02

    0.025

    0.03

    0.035

    0.04

    0.045

    Error de interpolacin RBF

    Error de interpolacin cbica MATLAB

  • %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');

    Conclusiones: el mtodo cubico no extrapola y las interpolaciones resultantes de los dos mtodos difieren porque la una arroja una interpolacin cubica (la obtenida con las funcin griddata) y la otra arroja una interpolacin multicuadrtica (la obtenida con las funciones de base radial). Esto se ve reflejado en los errores de interpolacin que son mas altos altos al utilizar el mtodo cbic (del orden de 10-2) comparados el del metodo multicuadratico (10-3). Si utlizaramos el metodo cubico con las FBR entonces estos errores aumentaran.

  • -2-1

    .5-1

    -0.5

    00.5

    11.5

    2-2

    -1.5-1

    -0.50

    0.51

    1.52

    Inte

    rpola

    tion u

    sin

    g M

    atlab function g

    riddata

    (meth

    od=

    cubic

    )

    10

    20

    30

    40

    50

    60

    70

    80

    10

    20

    30

    40

    50

    60

    70

    80

    griddata

    (meth

    od=

    cubic

    ) in

    terp

    ola

    tion e

    rror

    0.0

    2

    0.0

    4

    0.0

    6

    0.0

    8

    0.1

    -2-1

    .5-1

    -0.5

    00.5

    11.5

    2-2

    -1.5-1

    -0.50

    0.51

    1.52

    RB

    F inte

    rpola

    tion

    10

    20

    30

    40

    50

    60

    70

    80

    10

    20

    30

    40

    50

    60

    70

    80

    RB

    F inte

    rpola

    tion e

    rror

    1234567x 1

    0-3

  • -2-1

    01

    2

    -2

    -1

    0

    1

    2-0

    .50

    0.5

    Inte

    rpola

    tion u

    sin

    g M

    atlab function g

    riddata

    (meth

    od=

    cubic

    )

    10

    20

    30

    40

    50

    60

    70

    80

    10

    20

    30

    40

    50

    60

    70

    80

    griddata

    (meth

    od=

    cubic

    ) in

    terp

    ola

    tion e

    rror

    0.0

    2

    0.0

    4

    0.0

    6

    0.0

    8

    0.1

    -2-1

    01

    2

    -2

    -1

    0

    1

    2-0

    .50

    0.5

    RB

    F inte

    rpola

    tion

    10

    20

    30

    40

    50

    60

    70

    80

    10

    20

    30

    40

    50

    60

    70

    80

    RB

    F inte

    rpola

    tion e

    rror

    1234567x 1

    0-3