-->Cin_biela_man

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