El programa para dibujar al Snoopy es el siguiente:
function [a,b,c,d]=spline3(X)
n=length(X(1,:));
for i=1:n;
a(i)=X(2,i);
end
for i=1:n-1;
h(i)=X(1,i+1)-X(1,i);
end
for i=2:n-1;
alfa(i)=3/h(i)*(a(i+1)-a(i))-3/h(i-1)*(a(i)-a(i-1));
end
l(1)=1;
mu(1)=0;
z(1)=0;
for i=2:n-1;
l(i)=2*(X(1,i+1)-X(1,i-1))-h(i-1)*mu(i-1);
mu(i)=h(i)/l(i);
z(i)=(alfa(i)-h(i-1)*z(i-1))/l(i);
end
l(n)=1;
z(n)=0;
c(n)=0;
for i=n-1:-1:1;
c(i)=z(i)-mu(i)*c(i+1);
b(i)=(a(i+1)-a(i))/h(i)-h(i)*(c(i+1)+2*c(i))/3;
d(i)=(c(i+1)-c(i))/(3*h(i));
end
for i=1:n-1;
x=X(1,i):0.1:X(1,i+1);
y=a(i)+b(i)*(x-X(1,i))+c(i)*(x-X(1,i)).^2+d(i)*(x-X(1,i)).^3;
hold on;
plot(x,y,'b');
end
for i=1:n;
hold on;
plot (X(1,i),X(2,i),'*','MarkerEdgeColor','r','LineWidth',1);
title('Interpolación por spline');
end
Como enviar los datos en el COMMAND WINDOWS (es en el matlab)
z=[1 2 5 6 7 8 10 13 17 ; 3 3.7 3.9 4.2 5.7 6.6 7.1 6.7 4.5]
[a,b,c,d]=spline3(x)
Explicación
Como ya sabemos enviamos los valores de x e y, en este caso enviamos los puntos de x e y en la variable z, de la siguiente manera:
z=[1 2 5 6 7 8 10 13 17 ; 3 3.7 3.9 4.2 5.7 6.6 7.1 6.7 4.5]
Los puntos de x son : 1 2 5 6 7 8 10 13 17
Los puntos de y son : 3 3.7 3.9 4.2 5.7 6.6 7.1 6.7 4.5
Después llamamos al programa de la siguiente manera
[a,b,c,d]=spline3(x)
donde las variables a,b,c,d son matrices donde se almacenaran los valores de los splines.
y aparecerá una ventana en la cual se dibujan los puntos.
OBSERVACION:
Tenemos que hacer este mismo procedimiento para todas las curvas de la figura, ya que cada curva tendrá sus puntos para ser dibujados.
Datos para dibujar el Snoopy
Los datos que enviaremos son los siguientes:
Para la curva 1 los datos son:
z=[1 2 5 6 7 8 10 13 17 ; 3 3.7 3.9 4.2 5.7 6.6 7.1 6.7 4.5]
Para la curva 2 los datos son:
z=[17 20 23 24 25 27 27.7 ; 4.5 7 6.1 5.6 5.8 5.2 4.1]
Para la curva 3 los datos son:
z=[27.7 28 29 30 ; 4.1 4.3 4.1 3]
Para la curva 4 los datos son:
z=[1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ; 3 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.3 2.5 2.5 2.5 2.5 2.5 2.5 2.5 2.8]
Para la curva 5 los datos son:
z=[17 18 19 20 21 22 23 23.5 24 25 26 27 28 ; 2.8 2.5 2.5 2.5 2.5 2.5 2.5 2.3 2.5 2.5 2.5 2.5 2.8]
Para la curva 6 los datos son:
z=[28 29 30 ; 2.8 2.5 3]
El grafico es el siguiente
hola, intente ejecutar el programa y me da un error en la linea 6
ResponderEliminarSiendo mas especifico, es en esta linea el error ---> n=length(X(1,:));
ResponderEliminarMIL_GRACIAS__me_sirvio muuucho_
ResponderEliminaren-_vez_de_poner
[a,b,c,d]=spline3(x)
es
[a,b,c,d]=spline3(z)
disculpa me tira error en la línea #3, sabes el por qué?
Eliminar