
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
Programa 2
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
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


0