Está en la página 1de 5

EJERCICIO 6.

2:

Desarrollar en MATLAB un programa que dado un conjunto de n puntos los


interpole mediante.
a) Splines cúbicos fijando las velocidades de paso.
b) Splines cúbicos utilizando una expresión para definir las velocidades de
paso.
Utilizarlos para la secuencia de punto dado por
t 0 1 2 4 5 6 7
q 2 6 4 3 8 9 5
qd 0 -1 3 0 3 -3 0

Donde los valores de qd se utilizan solo para el apartado A, representar la


trayectoria obtenida con ambas opciones.
Solución:
La función I_cubico (q, t, qd) permite obtener los coeficientes de los splines
cúbicos que definen a tramos una trayectoria que pasa por los n puntos q en
los instantes t. en caso de que se especifiquen las velocidades de paso por los
puntos qd, estas son tenidas en cuenta para calcular los coeficientes. Las
velocidades de paso se calculan de acuerdo a la siguiente expresión.

(imagen 1)
La función retorna una matriz de dimensión (n-1,6), con n-1 filas
correspondientes a los n-1 intervalos, cada una de las cuales contiene la
información correspondiente a: ti, ti+1, a, b, c, d asociado al polinomio:
q(t)= a + b (t-ti) + c(t-ti)2 + d(t-ti)3 ti ˂ t ˂ ti+1
i-cubico
función P=i_cubico (q, t, qd)
% Obtiene los coeficientes de los splines cúbicos
% que interpolan los valores q en los instantes t
% con las velocidades de paso qd
% Las velocidades de paso pueden ser especificadas
% o en caso contrario se utiliza la expresión [6.6]
% Retorna un vector con una fila por cada tramo
% con [ti,tf,a,b,c,d] siendo el polinomio:
% q(t)= a +b(t-ti) +c(t-ti) ^2+d(t-ti) ^3 para ti<t<tf
%
n= length(q);
if n~=length(t)
error (‘ERROR en i_cubico: Las dimensiones de q y t deben ser iguales’)
end
if nargin~= 3 % qd no definida. La obtiene según [6.6]
qd (1) =0;
qd (n)=0;
for i=2: n-1
if (sign(q(i)-q(i-1)) == sign (q(i+1)-q(i))) ...
|q(i)==q(i+1) ...
|q(i-1) ==q(i) qd(i)=0.5*((q(i+1)-q(i)) /(t(i+1)-t(i)) + ...
+(q(i)-q(i-1)) /(t(i)-t(i-1)));
else
qd(i)=0;
end
end
end
% obtiene los coeficientes de los polinomios
for i=1: n-1
ti=t(i);
tii=t(i+1);
if tii<=ti error (‘ERROR en i_cubico. Los tiempos deben estar ordenados:
t(i) debe ser < t(i+1)’)
end
T=tii-ti;
TT (: i) =[ti;tii];
a(i)=q(i);
b(i)=qd(i);
c(i)= 3/T^2*(q(i+1)-q(i)) - 1/T *(qd(i+1) +2*qd(i));
d(i)=-2/T^3*(q(i+1)-q(i)) + 1/T^2*(qd(i+1) +qd(i));
end
P= [TT;a; b; c; d]’;
Con la ayuda de esta función se construye la función p_cubico, que dibuja la
trayectoria definida por la secuencia de splines, junto con los puntos de paso. A
la función se le pasan los mismos parámetros que a la anterior (i_cubica)
Además, la función p_cubico devuelve una matriz con los valores del tiempo, la
trayectoria y su primera y segunda derivada (t, q, qd, qdd) pudiendo ser
posteriormente dibujados. El número de puntos con que la trayectoria definida
por los splines se muestra en cada intervalo, se define dentro de la misma
función (puede ser cambiado en caso de que se estime conveniente)
p-cubico
función PL=p_cubico(q,t,qd)
%Dibuja el resultado de interpolar mediante spline cubico los valores q en
%los instantes tt con las velocidades de paso qd.
% Devuelve un vector con 1 fila por punto con los
% resultados (t, q, qd, qdd) de muestrear el polinomio interpolador
% Utiliza la funcion i_cubico que obtiene los valores de los coeficientes
% Las velocidades de paso pueden ser expecificadas o en caso contrario se
% utiliza la expresión [6.6]
npuntos=200; %número de puntos a pintar por intervalo
n=length(q); % número de intervalos
PL= [];
clf
hold on
% Obtiene los coeficientes de los splines cubicos
% [ti,tf,a,b,c,d] para cada intervalo
if nargin==3
P=i_cubico(q,t,qd);
else
P=i_cubico(q,t);
end
for intervalo=1: n-1
ti =P(intervalo,1);
tf =P(intervalo,2);
a =P(intervalo,3);
b =P(intervalo,4);
c =P(intervalo,5);
d =P(intervalo,6);
inc=(tf-ti) /npuntos;
for tt=ti:inc:tf
qt=a+b*(tt-ti) +c*(tt-ti) ^2+d*(tt-ti) ^3;
qdt=b+2*c*(tt-ti) +3*d*(tt-ti) ^2;
qddt=2*c+6*d*(tt-ti); plot(tt, qt,’k’);
PL=vertcat (PL, [tt,qt,qdt,qddt]);
end
end
plot(t,q,’o’)
grid
hold off
se muestra a continuación las gráficas de la trayectoria de q para el caso en
que no se fijen explícitamente las velocidades de paso en la figura y para el
caso de que estas queden fijadas de acuerdo a los valores de enunciado en la
figura.

También podría gustarte