Rơi có ma sát

Xét chuyển động của một vật rơi trong không khí có tính đến tác dụng của lực cản. Thực nghiệm cho thấy trong phần lớn các trường hợp, lực ma sát tăng lên cùng độ lớn vận tốc theo quy luật:

\(F_{ms} = -k_1v-\text{sign}(v)k_2v^2.\)

Vì \(v^2\) luôn mang giá trị không âm nên hàm “\(-\text{sign}(v)\)” xuất hiện ở đây nhằm diễn tả tính ngược chiều vận tốc của lực ma sát. Các hệ số ma sát \(k_1\) và \(k_2\) phụ thuộc vào hình dạng của vật rơi và tính chất của môi trường.

Các lệnh

1
2
3
4
5
%% INPUT DATA
h0 = 60; % Do cao ban dau
m = 1;
k1 = 1;
k2 = 0.01;

giúp khai báo tham số ban đầu về độ cao, khối lượng và các hệ số ma sát. Mỗi khi thời gian tăng lên trong mỗi vòng lặp, gia tốc được tính lại theo theo công thức:

1
a = -g+F_ms(k1,k2,v)/m;

Trong đó hàm số của lực ma sát được viết riêng trong một chương trình con nằm ngay sau chương trình chính:

1
2
3
4
%% Ham luc ma sat
function F = F_ms(k1,k2,v)
F = -k1*v-sign(v)*k2*v.^2;
end

Video minh hoạ

Code chương trình

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
function roi_co_ma_sat
clc
close all
clear all

%% CONSTANTS
g = 9.81;

%% INPUT DATA
h0 = 60; % Do cao ban dau
m = 1;
k1 = 1;
k2 = 0.01;

%%
x = 0;
y = h0;
v = 0;
t = 0;
dt = 0.01;

s = 0;
t_array = t;
s_array = s;
v_array = v;
a_array = g;

%% FIGURE
fig_vatroi = figure('name','Vat roi','color','white','numbertitle','off');
set(gcf,'Units','normalized');
set(gcf,'Position',[0 0.1 0.2 0.8]);
graph_quanang = plot(x,y,'ro','MarkerSize',20,'markerfacecolor','r');

xlabel('X [m]');
ylabel('Y [m]');

axis equal
axis([-0.15*h0 0.15*h0 -0.01*h0 1.2*h0]);

fig_quangduong = figure('name','Quang duong','color','white','numbertitle','off');
set(gcf,'Units','normalized');
set(gcf,'Position',[0.2 0.1 0.3 0.38]);
graph_quangduong = plot(t_array,s_array,'b','linewidth',2);
xlabel('Thoi gian [s]');
ylabel('Quang duong [m]');

fig_vantoc = figure('name','Van toc','color','white','numbertitle','off');
set(gcf,'Units','normalized');
set(gcf,'Position',[0.5 0.1 0.3 0.38]);
graph_vantoc = plot(t_array,v_array,'g','linewidth',2);
xlabel('Thoi gian [s]');
ylabel('Van toc [m/s]');

fig_giatoc = figure('name','Gia toc','color','white','numbertitle','off');
set(gcf,'Units','normalized');
set(gcf,'Position',[0.2 0.5 0.3 0.38]);
graph_giatoc = plot(t_array,a_array,'r','linewidth',2);
xlabel('Thoi gian [s]');
ylabel('Gia toc [m/s^2]');

%% CALCULATION
while y>0
t = t+dt;
t_array = [t_array t];

a = -g+F_ms(k1,k2,v)/m;
v = v+a*dt;
y = y+v*dt+0.5*a*dt.^2;

s_array = [s_array h0-y];
v_array = [v_array abs(v)];
a_array = [a_array abs(a)];

figure(fig_vatroi);
set(graph_quanang,'xdata',x,'ydata',y);
figure(fig_quangduong);
set(graph_quangduong,'xdata',t_array,'ydata',s_array);
figure(fig_vantoc);
set(graph_vantoc,'xdata',t_array,'ydata',v_array);
figure(fig_giatoc);
set(graph_giatoc,'xdata',t_array,'ydata',a_array);
pause(0.002);
end
end

%% Ham luc ma sat
function F = F_ms(k1,k2,v)
F = -k1*v-sign(v)*k2*v.^2;
end

Một vài kết quả

Đồ thị phụ thuộc của quãng đường đi được theo thời gian:

Ban đầu vật rơi khá nhanh, sau đó dần tiến về một tốc độ ổn định và không tăng thêm nữa:

Gia tốc ban đầu của vật bằng gia tốc trọng trường \(9.81 m/s^2\). Sau đó vì tốc độ tăng dần, lực ma sát cũng tăng theo ngược chiều chuyển động làm gia tốc giảm đi. Càng rơi nhanh, lực ma sát càng lớn. Do đó trọng lực dần bị cân bằng bởi lực cản ma sát, gia tốc tiến về 0 và vật chuyển động thẳng đều.