Please note that the recommended version of Scilab is 2025.0.0. This page might be outdated.
See the recommended documentation of this function
interp
função de avaliação de spline cúbico
Seqüência de Chamamento
[yp [,yp1 [,yp2 [,yp3]]]]=interp(xp, x, y, d [, out_mode])
Parâmetros
- xp
vetor ou matriz de reais
- x,y,d
vetores de reais de mesmo tamanho definindo uma função de spline cúbico ou sub-spline (chamado
s
a partir daqui)- out_mode
(opcional) string definido a avaliação de
s
fora do intervalo [x1,xn]- yp
vetor ou matriz de mesmo tamanho que
xp
, avaliação elemento a elemento des
emxp
(yp(i)=s(xp(i) ou yp(i,j)=s(xp(i,j))- yp1, yp2, yp3
vetores (ou matrizes) de mesmo tamanho que
xp
, avaliação elemento a elemento das derivadas sucessivas des
emxp
Descrição
Dados três vetores (x,y,d)
ddefinindo uma função
de spline cúbico ou sup-spline (ver splin)
com yi=s(xi), di = s'(xi)
esta função avalia
s
(e s', s'', s'''
se necessário) em
xp(i)
:
yp(i) = s(xp(i)) ou yp(i,j) = s(xp(i,j)) yp1(i) = s'(xp(i)) ou yp1(i,j) = s'(xp(i,j)) yp2(i) = s''(xp(i)) ou yp2(i,j) = s''(xp(i,j)) yp3(i) = s'''(xp(i)) ou yp3(i,j) = s'''(xp(i,j))
O parâmetro out_mode
ajusta a regra de avaliação
para extrapolação, i.e., para xp(i)
fora de [x1,xn] :
- "by_zero"
uma extrapolação por zero é feita
- "by_nan"
extrapolação por NaN
- "C0"
a extrapolação é definida como segue :
s(x) = y1 para x < x1 s(x) = yn para x > xn
- "natural"
a extrapolação é definida como segue (p_i sendo o polinômio que define
s
em [x_i,x_{i+1}]) :s(x) = p_1(x) para x < x1 s(x) = p_{n-1}(x) para x > xn
- "linear"
a extrapolação é definida como segue :
s(x) = y1 + s'(x1)(x-x1) para x < x1 s(x) = yn + s'(xn)(x-xn) para x > xn
- "periodic"
s
é estendido por periodicidade.
Exemplos
// veja os exemplos de splin e lsq_splin // um exemplo exibindo as continuidades C2 e C1 de um spline e um sub-spline a = -8; b = 8; x = linspace(a,b,20)'; y = sinc(x); dk = splin(x,y); // not_a_knot df = splin(x,y, "fast"); xx = linspace(a,b,800)'; [yyk, yy1k, yy2k] = interp(xx, x, y, dk); [yyf, yy1f, yy2f] = interp(xx, x, y, df); clf() subplot(3,1,1) plot2d(xx, [yyk yyf]) plot2d(x, y, style=-9) legends(["spline não é um nó","sub-spline rápido","pontos de interpolação"],... [1 2 -9], "ur",%f) xtitle("interpolação por spline") subplot(3,1,2) plot2d(xx, [yy1k yy1f]) legends(["spline não é um nó","sub-spline rápido"], [1 2], "ur",%f) xtitle("interpolação por spline (derivadas)") subplot(3,1,3) plot2d(xx, [yy2k yy2f]) legends(["spline não é um nó","sub-spline rápido"], [1 2], "lr",%f) xtitle("interpolação por splines (segundas derivadas)") // aqui está um exemplo mostrando as diferentes possibilidades de extrapolação x = linspace(0,1,11)'; y = cosh(x-0.5); d = splin(x,y); xx = linspace(-0.5,1.5,401)'; yy0 = interp(xx,x,y,d,"C0"); yy1 = interp(xx,x,y,d,"linear"); yy2 = interp(xx,x,y,d,"natural"); yy3 = interp(xx,x,y,d,"periodic"); clf() plot2d(xx,[yy0 yy1 yy2 yy3],style=2:5,frameflag=2,leg="C0@linear@natural@periodic") xtitle(" Modos diferentes de avaliar um spline fora de seu domínio")
Ver Também
Autor
B. Pincon
<< eval_cshep2d | Interpolação | interp1 >> |