Duda spline
Publicado por Aless (10 intervenciones) el 01/05/2012 19:43:45
Hola, estoy haciendo un .m para obtener y dibujar las splines. Primero introduces los puntos (x,y) que tu quieres.
El siguiente código te permite obtener los coeficientes para cada spline:
De esta manera, se obtiene S=
[ A1 B1 C1 D1; A2 B2 C2 D2;............; AN BN CN DN]
El problema, es que aún teniendo esta matriz, no sé cómo hacer para representar las funciones spline (correspondiente a cada intervalo).
¿Alguien me puede echar una mano? Se lo agradecería mucho.
El siguiente código te permite obtener los coeficientes para cada spline:
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
%Primero hay que introducir el vecto X e Y
N=length(X)-1;
H=diff(X);
E=diff(Y)./H;
diagsupinf=H(2:N-1);
diagprinc=2*(H(1:N-1)+H(2:N));
U=6*diff(E);
% restricciones del spline natural
Minicial=0; Mfinal=0;
% construccion de la matriz de los coeficientes para el calculo de los
% momentos
A=diag(diagprinc)+diag(diagsupinf,1)+diag(diagsupinf,-1);
% construccion del vector independiente para el calculo de los momentos
B=U'; B(1)=B(1)-H(1)*Minicial; B(N-1)=B(N-1)-H(N)*Mfinal;
% resolvemos el sistema y hallamos los momentos
M=A\B;
% a~nadimos los dos momentos naturales extremos y lo escribimos como vector
% fila
M=[Minicial,M',Mfinal];
% calculo de los coeficientes del polinomio cubico i-esimo en potencias
% de (x-x_i)
for i=1:N
S(i,1)=(M(i+1)-M(i))/(6*H(i));
S(i,2)=M(i)/2;
S(i,3)=E(i)-H(i)*(M(i+1)+2*M(i))/6;
S(i,4)=Y(i);
end
De esta manera, se obtiene S=
[ A1 B1 C1 D1; A2 B2 C2 D2;............; AN BN CN DN]
El problema, es que aún teniendo esta matriz, no sé cómo hacer para representar las funciones spline (correspondiente a cada intervalo).
¿Alguien me puede echar una mano? Se lo agradecería mucho.
Valora esta pregunta


0