Phát triển từ code chương trình “Rơi tự do” ta mở rộng bài toán thành chuyển động hai chiều của vật trong trường trọng lực đều.
Xét một vật bị ném từ độ cao 20 m, tức vị trí ban đầu: \(x=0,y=20\), với vận tốc đầu 30 m/s chếch 60 độ theo phương ngang. Trạng thái ban đầu ấy được cho như sau:
1 2 3 4 5 6 7 8 9 | %% INPUT DATA x = 0; y = 20; v = 30; alpha = 60; t = 0; dt = 0.01; |
Phạm vi quan sát ta cài đặt ở tầm xa 100 m và độ cao 70 m:
1 2 3 4 5 6 7 8 |
Vòng lặp tính toán gia tốc, vận tốc và toạ độ theo phương pháp chuỗi Taylor:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | %% CALCULATION alpha = alpha/180*pi; vx = v*cos(alpha); vy = v*sin(alpha); while y>-0.01 t = t+dt; ax = 0; ay = -g; vx = vx+ax*dt; vy = vy+ay*dt; x = x+vx*dt+0.5*ax*dt.^2; y = y+vy*dt+0.5*ay*dt.^2; plot(x,y,'o','markersize',0.5,'color','k'); set(fig_quanang,'xdata',x,'ydata',y); set(ht,'string',sprintf('t = %0.2f s',t)); pause(0.002); 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 | function chuyen_dong_nem_xien clc close all clear all %% CONSTANTS g = 9.81; %% INPUT DATA x = 0; y = 20; v = 30; alpha = 60; t = 0; dt = 0.01; %% FIGURE figure('name','Nem xien','color','white','numbertitle','off'); hold on fig_quanang = plot(x,y,'ro','MarkerSize',10,'markerfacecolor','r'); ht = title(sprintf('t = %0.2f s',t)); axis equal axis([-1 100 -1 70]); %% CALCULATION alpha = alpha/180*pi; vx = v*cos(alpha); vy = v*sin(alpha); while y>-0.01 t = t+dt; ax = 0; ay = -g; vx = vx+ax*dt; vy = vy+ay*dt; x = x+vx*dt+0.5*ax*dt.^2; y = y+vy*dt+0.5*ay*dt.^2; plot(x,y,'o','markersize',0.5,'color','k'); set(fig_quanang,'xdata',x,'ydata',y); set(ht,'string',sprintf('t = %0.2f s',t)); pause(0.002); end end |