Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2:
(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.