# interp2d

função de avaliação spline bicúbica (2d)

## Seqüência de Chamamento

    [zp[,dzpdx,dzpdy[,d2zpdxx,d2zpdxy,d2zpdyy]]]=interp2d(xp,yp,x,y,C [,out_mode])

## Parâmetros

xp, yp

  vetores ou matrizes de reais de mesmo tamanho

x,y,C

  vetores de reais definindo uma função de spline bicúbico ou sub-spline (chamada `s` daqui em diante)

out_mode

  (opcional) string definindo a avaliação de `s` fora de [x(1),x(nx)]x[y(1),y(ny)]

zp

  vetor ou matriz com o mesmo formato que `xp` e `yp`, avaliação elemento a elemento de `s` nestes pontos.

dzpdx, dzpdy

  vetores (ou matrizes) de mesmo formato que `xp` e `yp`, avaliação elemento a elemento das derivadas primeiras de `s` nesses pontos.

d2zpdxx, d2zpdxy, d2zpdyy

  vetores (ou matrizes) de mesmo formato que `xp` e `yp`, eavaliação elemento a elemento das derivadas segundas de `s` nesses pontos.

## Descrição

Dados três vetores `(x,y,C)` definindo uma função de sub-spline ou spline bicúbico (ver splin2d) esta função avalia s (e ds/dx, ds/dy, d2s/dxx, d2s/dxy, d2s/dyy se necessário) em (xp(i),yp(i)) :

          zp(i) = s(xp(i),yp(i))
          dzpdx(i) = ds/dx(xp(i),yp(i))
          dzpdy(i) = ds/dy(xp(i),yp(i))
          d2zpdxx(i) = d2s/dx2(xp(i),yp(i))
          d2zpdxy(i) = d2s/dxdy(xp(i),yp(i))
          d2zpdyy(i) = d2s/dy2(xp(i),yp(i))

O parâmetro `out_mode` define a regra de avaliação para extrapolação, i.e., para (xp(i),yp(i)) fora de [x(1),x(nx)]x[y(1),y(ny)] :

"by_zero"

  uma extrapolação por zero é realizada

"by_nan"

  extrapolação por NaN

"C0"

  Extrapolação definida como segue :

           s(x,y) = s(proj(x,y)) onde  proj(x,y) é o ponto mais próximo
                                 em [x(1),x(nx)]x[y(1),y(ny)] de (x,y)

"natural"

  a extrapolação é realizada utilizando o elemento de área bicúbico mais próximo de (x,y).

"periodic"

  `s` é estendida por periodicidade.

## Exemplos

    // veja os exemplos de splin2d

    // este exemplo mostra características de extrapolações diferentes
    // interpolação de cos(x)cos(y)
    n = 7;  // um grid de interpolação n x n
    x = linspace(0,2*%pi,n); y = x;
    z = cos(x')*cos(y);
    C = splin2d(x, y, z, "periodic");

    // agora avaliando em um domínio maior que [0,2pi]x [0,2pi]
    m = 80; // parâmetro de discretização do grid de avaliação
    xx = linspace(-0.5*%pi,2.5*%pi,m); yy = xx;
    [XX,YY] = ndgrid(xx,yy);
    zz1 = interp2d(XX,YY, x, y, C, "C0");
    zz2 = interp2d(XX,YY, x, y, C, "by_zero");
    zz3 = interp2d(XX,YY, x, y, C, "periodic");
    zz4 = interp2d(XX,YY, x, y, C, "natural");
    clf()
    subplot(2,2,1)
    plot3d(xx, yy, zz1, flag=[2 6 4])
    xtitle("Extrapolação com o outmode C0")
    subplot(2,2,2)
    plot3d(xx, yy, zz2, flag=[2 6 4])
    xtitle("Extrapolação com o outmode by_zero")
    subplot(2,2,3)
    plot3d(xx, yy, zz3, flag=[2 6 4])
    xtitle("Extrapolação com o outmode periodic")
    subplot(2,2,4)
    plot3d(xx, yy, zz4, flag=[2 6 4])
    xtitle("Extrapolação com o outmode natural")
    show_window()

## Ver Também

- splin2d