Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабораторные работы / Лабораторные работы 3 и 4

.docx
Скачиваний:
0
Добавлен:
30.01.2024
Размер:
403.96 Кб
Скачать

Московский авиационный институт

(национальный исследовательский университет)

Институт № 1 «Авиационная техника»

Лабораторная работа №3 и №4

по курсу «Теоретическая механика»

Анимация системы

Выполнил студент группы М1О-204С-20

Селютин Евгений Олегович

Преподаватель: Рачков Алексей Андреевич

Москва, 2021

Лабораторная работа №3

Задание

Проинтегрировать систему дифференциальных уравнений движения системы с двумя степенями свободы с помощью средств программы OCTAVE. Построить анимацию движения системы, а также графики законов движения системы и указанных в задании реакций.

Уравнения движения системы:

Уравнения реакций опор:

Текст Программы

global m M R l c b g %Задаём параметры

m = 0.5; % задаём значения параметров

M = 1;

R = 1;

l = 1;

c = 50;

b = 1;

g = 9.81;

tstep = 0.01; %задаём сетку по времени, в которой будет проходить интегрирование

tfin = 10;

tout = 0:tstep:tfin;

y0 = [0 pi/3 0 0]; % задание начальных условий для наших переменных

[t,y] = ode45(@U,tout,y0); %вызов решателя уравнений

Psi = y(:,1); % интегрируем углы

Phi = y(:,2);

Psit = y(:,3);

Phit = y(:,4);

for i=1:length(t) %Вторые производные

Res = U(t(i),y(i,:));

Psitt(i,1) = Res(3);

Phitt(i,1) = Res(4);

x(i) = sin(Psi(i,1));

KOF(i) = atan((0.85*cos(Phi(i,1)+pi/2)-R*cos(Psi(i,1)))/(0.85*sin(Phi(i,1)+pi/2)-sin(Psi(i,1))));

end

Rx = -(m + M)*R*Psitt - M*R*cos(pi-Phi).*((Psitt + Phitt).*cos(Psi+Phi+(pi-Phi))-(Psit+Phit).^2.*sin(Psi+Phi+(pi-Phi))); %считаем необходимые реакции

Ry = -(M + m)*g - M*R*cos(pi-Phi).*((Psitt + Phitt).*cos(Psi+Phi+(pi-Phi))+(Psit.+Phit).^2.*sin(Psi+Phi+(pi-Phi)));

figure % Строим графики зависимости координат и реакций от времени

subplot(4,1,1) %команда рисует несколько графиков в одном окне

plot(t,Psi) % subplot(4,1,1) означает, что в окне 4 строки и один столбец

title('Psi(t)'); % последняя цифра означает окно, где всё это рисуется

subplot(4,1,2)

plot(t,Phi)

title('Phi(t)');

subplot(4,1,3)

plot(t,Rx)

title('Rx(t)');

subplot(4,1,4)

plot(t,Ry)

title('Ry(t)');

psi=Psi;

phi=Phi;

%Начинаем рисовать систему

h=4; %Задаём необходимые параметры

L1=9;

Z=10;

r=0.7;

b=0.5;

a=4;

N=10;

Figure %создаём окно

axis equal

xlim([-1 10])

ylim([-2 6])

xlim manual

ylim manual

hold on

plot([0 0],[0 h],'color',[0 0 0],'lineWidth',2); %рисуем стену

plot([0 L1],[0 0],'color',[0 0 0],'lineWidth',2); %рисуем пол

q=0:0.1:6.3; % шаблон для окружностей

Xk0=R*cos(q)+4*R;

Yk0=R*sin(q);

K0=plot(Xk0+x(1),Yk0+R,'color',[1 0 0]);

%задаём координаты точек

xo=4*R;

yo=R;

xA=xo+R*sin(psi);

yA=yo+R*cos(psi);

PointA=plot(xA(1)+x(1),yA(1),'o','markersize',5,'markerFaceColor',[0 1 0],'color',[0 0 0]); %точка А

Pointo=plot(xo(1),yo,'o','markersize',3,'markerFaceColor',[0 0 0],'color',[0 0 0]); % точка о

xD=xo+R*sin(pi-Phi);

yD=yo+R*cos(pi-Phi);

PointD=plot(xD(1)+x(1),yD(1),'o','markersize',2,'markerFaceColor',[0 0 0],'color',[0 0 0]); %точка D

xB=xo-R*sin(pi-Phi);

yB=yo+R*cos(pi-Phi);

PointB=plot(xB(1)+x(1),yB(1),'o','markersize',2,'markerFaceColor',[0 0 0],'color',[0 0 0]); %точка B

BD=plot([xB(1)+x(1) xD(1)+x(1)+x(1)],[yB(1),yD(1)],'color',[0 0 0]); %линия BD

for i=1:N %создаём пружину в цикле

if i==1 %задаём длину 1 с домножением на х

Xpr(i)=0;

Ypr(i)=0;

elseif i==N

Xpr(i)=1;

Ypr(i)=0;

else

Xpr(i)=1/(N-1)*(i-1);

Ypr(i)=b*(-1)^i;

end

end

Pruzzhina=plot(Xpr+x(1),Ypr,'color',[0 0.5 0]); %рисуем пружину

Pr0=plot(0,Ypr(1),'o','color',[0 0.5 0],'markerFaceColor',[0 1 0]);

Pr1=plot(x(1),Ypr(N),'o','color',[0 0.5 0],'markerFaceColor',[0 1 0]);

for i=1:length(t) %Делаем возможным движение конструкции

NewXpr=Xpr*l(i);

NewPr=Ugol([NewXpr;Ypr],(KOF(i)+pi));

NewXpr=NewPr(1,:)+(4+0.85*sin(Phi(i,1)+pi/2)+x(i)-NewPr(1,1));

NewYpr=NewPr(2,:)+(1+0.85*cos(Phi(i,1)+pi/2)-NewPr(2,1));

set(K0,'Xdata',Xk0+x(i));

set(PointA,'Xdata',4+x(i));

set(PointB,'Xdata',xB(i)+x(i),'Ydata',yB(i))

set(PointD,'Xdata',xD(i)+x(i),'Ydata',yD(i))

set(BD,'Xdata',[xA+x(i) xB(i)+x(i)],'Ydata',yB(i));

set(Pruzzhina,'Xdata',NewXpr,'Ydata',NewYpr);

pause(0.01);

end

Функция U

function yt = U(t,y)

global m M R l c b g;

yt(1)=y(3);

yt(2)=y(4);

a11 = (M+2*m)*R^2+M*((R*cos(pi-y(2)))^2+(l^2/12)+2*R*R*cos(pi-y(2))*cos(y(1)+y(2)+(pi-y(2))));

a12 = M*((R*cos(pi-y(2)))^2+(l^2/12)+R*R*cos(pi-y(2))*cos(y(1)+y(2)+(pi-y(2))));

b1 = M*R*cos(pi-y(2))*(R*(y(3)+y(4))^2+g)*sin(y(1)+y(2)+(pi-y(2)));

a21 = M*((R*cos(pi-y(2)))^2+(l^2/12)+R*R*cos(pi-y(2))*cos(y(1)+y(2)+(pi-y(2))));

a22 = M*((R*cos(pi-y(2)))^2+(l^2/12));

b2 = M*g*R*cos(pi-y(2))*sin(y(1)+y(2)+(pi-y(2))) - c*(2*R*sin(y(2)/2)-b)*R*cos(y(2)/2);

A=[a11 a12;a21 a22];

A1=[b1 a12;b2 a22];

A2=[a11 b1;a21 b2];

yt(3)=det(A1)/det(A);

yt(4)=det(A2)/det(A);

yt=yt';

Функция Ugol

function PovorotPryjini=Ugol(Tochka,KOF);

PovorotPryjini(1,:)=Tochka(1,:)*cos(KOF)-Tochka(2,:)*sin(KOF);

PovorotPryjini(2,:)=Tochka(1,:)*sin(KOF)+Tochka(2,:)*cos(KOF);

end

Результат работы

Лабораторная работа №4

Исходные данные:

m = 0.5;

M = 1;

R = 1;

l = 1;

c = 50;

b = 1;

g = 9.81;

Увеличение жёсткости пружины

Увеличение массы стержня

Увеличение массы обода

Начальная длина пружины больше обода

Начальная длина пружины меньше обода