domingo, 13 de noviembre de 2011

TRAZADORES CUBICOS (SPLINE) - DIBUJANDO A SNOOPY

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


<!--[if gte mso 9]> Normal 0 21 false false false ES-BO X-NONE X-NONE MicrosoftInternetExplorer4

4 comentarios:

  1. hola, intente ejecutar el programa y me da un error en la linea 6

    ResponderEliminar
  2. Siendo mas especifico, es en esta linea el error ---> n=length(X(1,:));

    ResponderEliminar
  3. MIL_GRACIAS__me_sirvio muuucho_
    en-_vez_de_poner
    [a,b,c,d]=spline3(x)
    es
    [a,b,c,d]=spline3(z)

    ResponderEliminar
    Respuestas
    1. disculpa me tira error en la línea #3, sabes el por qué?

      Eliminar