Rơi tự do

Áp dụng thuật toán vừa nêu ra ở bài “Phương trình Newton“, ta giải bài toán chuyển động rơi tự do dưới tác dụng của trọng lực đều. Xét một vật bắt đầu rơi từ độ cao \(h_0=50\) m, lấy mặt đất làm gốc toạ độ, chiều dương hướng lên. Chương trình sau đây cho phép mô phỏng sự rơi ấy ngay trên màn hình máy tí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
function su_roi_cua_vat
clc
close all
clear all

%% CONSTANTS
g = 9.81;

%% INPUT DATA
h0 = 50;
v = 0;

t = 0;
dt = 0.01;

%% FIGURE
x = 0;
y = h0;

figure('name','Vat roi','color','white','numbertitle','off');
hold on
fig_quanang = plot(x,y,'ro','MarkerSize',20,'markerfacecolor','r');

axis equal
axis([-10 10 -1 60]);

%% CALCULATION
while y>0
t = t+dt;
a = -g;
v = v+a*dt;
y = y+v*dt+0.5*a*dt.^2;

set(fig_quanang,'xdata',x,'ydata',y);
pause(0.002);
end
end

Kết quả mô phỏng:

 

Các lệnh nằm trong khối INPUT DATA tạo ra trạng thái ban đầu cho vật. Các lệnh trong khối FIGURE tạo ra khung đồ hoạ, đồng thời vẽ ra vật tại thời điểm đầu tiên. Khối lệnh while-end trong khối CALCULATION tạo vòng lặp cho thuật toán giải “Phương trình Newton“, trong đó điều kiện

1
while y>0

giúp giới hạn việc tính toán mô phỏng chỉ khi nào vật còn ở trên mặt đất. Lệnh

1
fig_quanang = plot(x,y,'ro','MarkerSize',20,'markerfacecolor','r');

giúp vẽ một hình tròn có viền màu đỏ (‘ro’), có nền màu đỏ (‘markerfacecolor’,’r’) ở toạ độ \((x,y)\) với kích thước bằng 20. Lệnh này được đặt tên tuỳ ý, ví dụ fig_quanang. Lệnh

1
2
axis equal
axis([-10 10 -1 60]);

có tác dụng giới hạn phạm vi khảo sát, từ -10 đến 10 theo chiều ngang, từ -1 đến 60 theo chiều thẳng đứng. Điều này cho phép quan sát vật rơi từ độ cao 50 m. Lệnh

1
set(fig_quanang,'xdata',x,'ydata',y);

có tác dụng gán lại các giá trị \(x\) và \(y\) cho hàm vẽ vật vốn được đặt tên fig_quanang từ trước. Đây là điều mấu chốt giúp tạo ra sự chuyển động của vật trên màn hình, bởi vì sau mỗi vòng lặp, các toạ độ \(x\) và \(y\) đã được tính lại. Lệnh

1
pause(0.002);

có tác dụng tạm dừng chương trình, làm chương trình tính toán chậm lại theo từng bước và biểu diễn giúp người quan sát có thể theo dõi chuyển động.