Matlab - Ayuda Interpolacion Spline Cubico

   
Vista:

Ayuda Interpolacion Spline Cubico

Publicado por Emmanuel (6 intervenciones) el 13/12/2013 06:37:32
Espero que me pueda ayudar con lo siguiente, ya llevo días con esto y no logro resolver el problema. Presentaré 2 programas y al final pondré mi consulta.
Programa 1
1
2
3
4
5
6
x=1:10;
y=[8 2.5 -2 0 5 2 4 7 4.5 2];
hold on
x2=1:0.5:10
y2=interp1(x,y,x2,'spline')
plot(x,y,'o',x2,y2);

Programa 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
function [a,b,c,d]=spline3Original_Consultar(X)
 
%Pasos básicos del algoritmo obtenidos del libro Análisis Numérico de 
%Richard Burden, 2a. Edición, Grupo Editorial Iberoamérica.
 
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.5:X(1,i+1);
    m=length(x);
    fprintf('Siguientes %1.0f nodos de x \n',m);
    disp(x)
        y=a(i)+b(i)*(x-X(1,i))+c(i)*(x-X(1,i)).^2+d(i)*(x-X(1,i)).^3;
    fprintf('Imagenes de los  %1.0f nodos de x \n',m);
    disp(y)
 
    hold on;
    grid on;
    plot(x,y,'b'); %Plotea todos los segmentos
end
 
 
for i=1:n;
    hold on;
    plot (X(1,i),X(2,i),'*','MarkerEdgeColor','r','LineWidth',1);
    title('Interpolación por "splines" de orden 3.');
end

CONSULTA
El progama 1 y 2, ambos son para hacer la interpolación por SPLINE CUBICOS. El programa 1, hace la interpolación usando la sentencia propia del matlab y al ejecutarlo me genera un total de 19 resultados. Por otro lado, al ejecutar el programa 2, me genera 27 resultados, pero 8 son repetidos (en los extremos, esto es por el método), así que en total también tengo 19 resultados. Sin embargo, estos 19 resultados no coinciden con los 19 resultados del programa 1. Los puntos en el lugar par, tienen imágenes diferentes, en los demás puntos si coinciden. ¿Cómo puedo hacer para que los valores de las imágenes coincidan?
Espero me puedan ayudar, ya llevo varios días con este problema y no logro resolverlo.
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Dave

Ayuda Interpolacion Spline Cubico

Publicado por Dave correa.dave30@gmail.com (934 intervenciones) el 13/12/2013 11:27:51
Hola Emmanuel;

Trate de revisar tu algoritmo, parte por parte, empieza por hacer pruebas con los ejemplos del libro, hasta donde recuerdo en ese libro hay algunos ejemplos de interpolación, verifica que coinciden tus resultados con los del libro.

Espero que sea de alguna ayuda.

Saludos
Dave Correa
correa.dave30@gmail.com
Servicios de Programación Matlab
http://fismatlab.blogspot.com/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Interpolacion Spline Cubico

Publicado por Emmanuel (6 intervenciones) el 14/12/2013 18:31:06
Resulta que en el burden, no hay ejemplo con splin cubico sujeto. Hay con spline cubico natural, mas con sujeto (el que estoy usando) no hay. Otro dato que en el libro sólo hay ejemplos pero como resultado te arroja los coeficientes del polinomio, pero las imágenes sobre los que puntos que voy a interpolar no hay. El código lo he revisado y la verdad que no veo donde hay error :(
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO

Ayuda Interpolacion Spline Cubico

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 13/12/2013 13:14:05
Con que datos lo ejecutas?

Saludos.
JOSE JEREMÍAS CABALLERO
Asesorías en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com


http://matlabcaballero.blogspot.com


http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda Interpolacion Spline Cubico

Publicado por Emmanuel (6 intervenciones) el 14/12/2013 18:34:29
El programa 2 lo ejecuto con los datos del programa 1. Es decir el vector X=[1:10;8 2.5 -2 0 5 2 4 7 4.5 2].
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar