Está en la página 1de 7

SPLINES

Table of Contents
Spline Lineal............................................................................................................................................................. 1
Spline Cúbico............................................................................................................................................................2
Comando spline de Matlab....................................................................................................................................... 4
Actividad................................................................................................................................................................... 5
Funciones en Matlab................................................................................................................................................ 6

Spline Lineal
x=[1 2 3 4]

x = 1×4
1 2 3 4

y=[1 3 2 5]

y = 1×4
1 3 2 5

%S0
s0=polyfit([1 2],[1 3],1)

s0 = 1×2
2.0000 -1.0000

%S1
s1=polyfit([2 3],[3,2],1)

s1 = 1×2
-1.0000 5.0000

%S2
s2=polyfit([3 4],[2 5],1)

s2 = 1×2
3.0000 -7.0000

%Graficando
xx1=linspace(1,2,50);
yy1=polyval(s0,xx1);
xx2=linspace(2,3,50);
yy2=polyval(s1,xx2);
xx3=linspace(3,4,50);
yy3=polyval(s2,xx3);
plot(xx1,yy1,'r',xx2,yy2,'b',xx3,yy3,'m')
grid on

1
Spline Cúbico
Dada la función para . Halle el spline cúbico.

x=[0 1 2 3]

x = 1×4
0 1 2 3

y=x.^4

y = 1×4
0 1 16 81

S=splinenatural(x,y)

M = 2×1
2.4000
74.4000
M = 1×4
0 2.4000 74.4000 0

2
S = 3×4
0.4000 0 0.6000 0
12.0000 1.2000 1.8000 1.0000
-12.4000 37.2000 40.2000 16.0000

Aproxime

S2=S(3,1)*poly([2 2 2])+[0 S(3,2)*poly([2 2])]+[0 0 S(3,3)*poly([2])]+[0 0 0 S(3,4)]

S2 = 1×4
-12.4000 111.6000 -257.4000 183.6000

dS2=polyder(S2)

dS2 = 1×3
-37.2000 223.2000 -257.4000

d2S2=polyder(dS2)

d2S2 = 1×2
-74.4000 223.2000

value=polyval(d2S2,2)

value = 74.4000

Aproxime

S2=S(3,1)*poly([2 2 2])+[0 S(3,2)*poly([2 2])]+[0 0 S(3,3)*poly([2])]+[0 0 0 S(3,4)]

S2 = 1×4

3
-12.4000 111.6000 -257.4000 183.6000

dS2=polyder(S2)

dS2 = 1×3
-37.2000 223.2000 -257.4000

d2S2=polyder(dS2)

d2S2 = 1×2
-74.4000 223.2000

value=polyval(d2S2,2.5)

value = 37.2000

Comando spline de Matlab


x=[0 1 2 3]

x = 1×4
0 1 2 3

y=x.^4

y = 1×4
0 1 16 81

xx=linspace(0,3,50);
yy=spline(x,y,xx);
plot(xx,yy,'r')
grid on

4
Actividad
Cunstruya mediante spline cúbicos el contorno de la siguiente figura

Realice lo siguiente:

Primero, se realiza la toma de datos usando una malla cuadriculada sobre la figura:

5
Luego, los datos se tabulan. Los datos del contorno superior son:

Finalmente completar con los datos del contorno inferior.

Funciones en Matlab
function S=splinenatural(x,y)
n=length(x)-1;
h=diff(x);
dd=diff(y)./h;
diagsupinf=h(2:n-1);
diagprinc=2*(h(1:n-1)+h(2:n));
M0=0; Mn=0;
H=diag(diagprinc)+diag(diagsupinf,1)+diag(diagsupinf,-1);
dy=6*diff(dd');
M=H\dy
M=[M0 M' Mn]
for i=1:n
S(i,1)=(M(i+1)-M(i))/(6*h(i));
S(i,2)=M(i)/2;
S(i,3)=dd(i)-h(i)*(M(i+1)+2*M(i))/6;
S(i,4)=y(i);
end
for i=1:n
xx=[x(i):0.01:x(i+1)];

6
yy=S(i,1)*(xx-x(i)).^3+S(i,2)*(xx-x(i)).^2+S(i,3)*(xx-x(i))+S(i,4);
plot(xx,yy)
hold on
end
grid on
hold off
end

También podría gustarte