Contents

clear
close all

options=optimset('Display','off','LargeScale','off'); % Necessary for 'fsolve'

Definir los parámetros geométricos constantes y el vector de tiempo

paso=0.1;
Tin=0;
Tfi=12;
tiempo=Tin:paso:Tfi;
L2=1;
L3=2;
w=30*pi/180;
t20=0;

Definir un valor inicial para q

q=[0 1.5 0 3]';

Utilizar una estructura 'for' para el cálculo de la cinemática

for i=1:length(tiempo)
% Tomar el valor de tiempo
t=tiempo(i);
% Usar 'fsolve' para obtener las posiciones q.
[q] = fsolve('pos',q,options,L2,L3,t20,w,t);

% Almacenar las posiciones y actualizar el valor inicial de q
almQ(:,i)=q;

% Resolver y guardar las velocidades qp
Ft=[0 0 0 -w]';
Fq = [L2*sin(q(1)) 1 0 0;
    -L2*cos(q(1)) 0 1 0;
    0 2*q(2)-2*q(4) 2*q(3) 2*q(4)-2*q(2);
    1 0 0 0];
qp=Fq\-Ft;

almQp(:,i)=qp;

% Resolver y guardar las aceleraciones qpp
Gama = [(qp(1))^2*L2*cos(q(1));
    (qp(1))^2*L2*sin(q(1));
    2*qp(2)*(qp(2)-qp(4))+2*(qp(3))^2+2*qp(4)*(qp(4)-qp(2));
    0];
qpp=-Fq\Gama;
almQpp(:,i)=qpp;

end

Empezar otro 'for' para el dibujo

for i=1:length(tiempo)
           t=tiempo(i);
    subplot(221) % Dibujo del sistema multicuerpo
    cla % Clear axis
    title('sistema multicuerpo')
    hold on
    % Escribir aquí el código de dibujo
    q(3)=almQ(3,i);
    q(2)=almQ(2,i);
    q(4)=almQ(4,i);
            p1=plot([0,q(2),q(4)],[0,q(3),0],'bo-');

    p1.LineWidth=2;
      axis equal
    axis([-1.5 4 -1.5 1.5])

    e=0.3; %Diensiones cuadrado
   % hold on
    p2=plot([q(4)-e,q(4)-e,q(4)+e,q(4)+e,q(4)-e],[-e,e,e,-e,-e],'g.-');
    p2.LineWidth=2;
   p3=plot([1-e,3+e],[-e-0.03,-e-0.03],'k-');

   hold off
    pause(0.00001)

    subplot(222)
    cla
    title('Posición')
    hold on
    grid on
    % Escribir aquí el código de dibujo
     axis([0 12 1 3])
         % if i==1
     %Xp=0
    % Yp=0
   %  end
%      Xp=[Xp,t];
%      Yp=[Yp,q(4)];
%
%      posi=plot([Xp],[Yp],'b-');

Xp(:,i)=t;
Yp(:,i)=q(4);
  posi=plot(Xp,Yp,'b-');


    xlabel('Tiempo')
    ylabel('Posición de la deslizadera')

    subplot(223)
    cla
    title('Velocidad')
    hold on
    grid on
    % Escribir aquí el código de dibujo
    xlabel('Tiempo')
    ylabel('Velocidad de la deslizadera')

    Xv(:,i)=t;
    Yv(:,i)=almQp(4,i);
    velocidad= plot(Xv,Yv,'b-');

    axis([0 12 -0.6 0.6])

    subplot(224)
    cla
    title('Aceleración')
    hold on
    grid on
    % Escribir aquí el código de dibujo

    Xa(:,i)=t;
    Ya(:,i)=almQpp(4,i);
    aceleracion= plot(Xa,Ya,'b-');
    axis([0 12 -0.4 0.22])
    xlabel('Tiempo')
    ylabel('Aceleración de la deslizadera')

end