2017-01-24 3 views
1

Я пытаюсь реализовать жесткий бар, который тянут с одного конца, в Matlab. Начальными координатами точек являются P1 (1,0) P2 (0,0).Физика для буксируемого бара

Я использую сосредоточенную массовую модель, где вес находится на частицах. Единственными существующими усилиями являются вертикальное усилие в P1 и гравитация. Масса каждой частицы равна 0,05.

Мой код показан в следующем:

L=1; %length of the bar 

Mass1=[1 0; 0 1]; 
Efforts1=[0; 20-9.8*0.05]; 

Mass2=[1 0; 0 1]; 
Efforts2=[0; -9.8*0.05]; 

acel1=Mass1\Efforts1; 

acel2=Mass2\Efforts2; 
dt=0.1; %time step 


%variables creation 
position of mass1 
x1=zeros(100,1); x1(1)=L; x1(2)=L; 
y1=zeros(100,1); 
%position of mass2 
x2=zeros(100,1); 
y2=zeros(100,1); 
%velocities 
x1_dot=zeros(100,1); y1_dot=zeros(100,1); 
x2_dot=zeros(100,1); y2_dot=zeros(100,1); 

for i=2:100 
    %numerical integration of first mass. Accel, vel, pos 
    x1_dot(i)=x1_dot(i-1) + dt*acel1(1); 
    y1_dot(i)=y1_dot(i-1) + dt*acel1(2); 

    x1(i)=x1(i-1) + dt*x1_dot(i); 
    y1(i)=y1(i-1) + dt*y1_dot(i); 

    %numerical integration of first mass. Accel, vel, pos 
    x2_dot(i)=x2_dot(i-1) + dt*acel2(1); 
    y2_dot(i)=y2_dot(i-1) + dt*acel2(2); 

    x2(i)=x2(i-1) + dt*x2_dot(i); 
    y2(i)=y2(i-1) + dt*y2_dot(i); 

    if y2(i)<0 
     y2(i)=0; 
    end 

    X=[x1 x2]; Y=[y1 y2]; 
    plot(X,Y); hold on; 
    pause(0.1); 

end  

Проблема может быть представлена ​​в следующем виде:

lumped mass model

Учитывая, что две массы не затухают и ведут себя как твердый бар (постоянная длина), как я могу моделировать эффект сцепления так, чтобы масса P2 правильно соответствовала P1 под действием силы тяжести?

ответ

0

Я действительно не понимаю проблему. В вашем коде точка с ее координатами, хранящаяся в x1 и y1, фактически равна P2 (1,0), и на этой точке применяется вертикальное усилие. Точка с ее координатами, хранящаяся в x2 и y2, на самом деле P2 (0,0) и является вертикальной. Правильно ли я понимаю? Возможно, проблема не очень хорошо составлена, поскольку она фиксируется только в вертикальном направлении, что может привести к некоторым проблемам в горизонтальном движении.

В данный момент вы применяете силу на P2, и вы вычисляете перемещение/смещение P2. Однако это движение не связано с P1. Если вы хотите рассчитать «связанное» движение, вы должны учитывать внутренние силы. Это можно сделать с помощью Закона о крючках для 1D стержней.

Вам это поможет?

Миха

+0

Я исправил некоторые ошибки в заявлении и добавил изображение так, что я могу сделать сам яснее – galtor

+0

спасибо за фигуру. Если вы хотите физику этой системы, вы должны использовать, как уже упоминалось, Закон о крючках и внутренние силы. Там вы увидите, что невозможно L = 1 через определенное время с текущими граничными условиями. Другой подход заключается в том, чтобы адаптировать смещение точек P1 и P2 после интеграции, чтобы удовлетворить требованиям L = 1. Однако этот подход не связан с физикой и может дать вам совершенно неправильные результаты, даже если L = 1 будет остаются в порядке. –

Смежные вопросы