Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Clase Spline
Clase Spline
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 = 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 = 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
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:
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