ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍMINH TRƯỜNG ĐẠI HỌC BÁCH KHOA KHOA KHOA HỌC ỨNG DỤNG BÁO CÁO BÀI TẬP LỚN MÔN VẬT LÝ 1 ĐỀ TÀI VẼ QUỸ ĐẠO CHUYỂN ĐỘNG NÉM XIÊN TRONG TRỌNG TRƯỜNG BỎ QUA LỰ
Trang 1ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ
MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA
KHOA KHOA HỌC ỨNG DỤNG
BÁO CÁO BÀI TẬP LỚN
MÔN VẬT LÝ 1
ĐỀ TÀI
VẼ QUỸ ĐẠO CHUYỂN ĐỘNG NÉM XIÊN TRONG TRỌNG TRƯỜNG BỎ QUA LỰC CẢN
VÀ XÁC ĐỊNH MỘT VÀI THÔNG SỐ LIÊN
QUAN
LỚP L01 – NHÓM 07 – HK 241
Trang 2Thành phố Hồ Chí Minh – 2024
MỤC LỤC
LỜI MỞ ĐẦU 1
LỜI CẢM ƠN 2
CHƯƠNG 1: MỞ ĐẦU 3
1.1 Đề tài 3
1.2 Yêu cầu 3
1.3 Điều kiện 3
1.4 Nhiệm vụ 3
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT 3
2.1 Chuyển động ném xuyên 3
2.2 Phương trình chuyển động 4
2.3 Quỹ đạo và phương trình quỹ đạo 4
2.4 Bài toán 5
CHƯƠNG 3: CODE PYTHON VÀ GIẢI THÍCH 5
3.1 Đề bài 5
3.2 Đoạn code hoàn chỉnh 6
CHƯƠNG 4: KẾT QUẢ 8
TÀI LIỆU THAM KHẢO 13
Trang 3LỜI MỞ ĐẦU
Vật lý đại cương 1 là môn học đại cương có tầm quan trọng đối với sinh viên ĐH Bách Khoa TPHCM nói riêng và sinh viên các ngành khối khoa học kỹ thuật – công nghệ nói chung Do đó, việc dành cho môn học này một khối lượng thời gian nhất định
và thực hành là điều tất yếu để giúp cho sinh viên có được cơ
sở vững chắc về các môn KHTN và làm tiền đề để học tốt các môn khác trong chương trình đào tạo
Sự phát triển của toán tin ra đời đã hỗ trợ rất lớn trong quá trình phát triển của các môn học vật lý Việc ứng dụng tin học trong quá trình giải thích các cơ sở dữ liệu của vật lý, giải các bài toán vật lý đã làm cho thời gian bỏ ra được rút ngắn lại và mang hiệu quả cao hơn Như ta đã biết, phần mềm ứng dụng Python đã giải quyết được các vấn đề đó Vì thế việc tìm hiểu Python và ứng dụng Python trong việc thực hành môn học vật
lý đại cương 1 rất quan trọng và có tính cấp thiết cao
Ở bài tập lớn này, nhóm thực hiện nội dung “Vẽ quỹ đạo chuyển động ném xiên trong trọng trường bỏ qua lực cản và xác định một vài thông số liên quan” thông qua phần mềm Python Đây là một dạng bài toán khá quan trọng của phần Cơ học nói riêng và vật lý nói chung
Sau đây là nội dung tìm hiểu bài tập lớn của nhóm!
Trang 4LỜI CẢM ƠN
Lời đầu tiên, nhóm chúng em xin trân trọng cảm ơn Trường Đại Học Bách Khoa, Đại Học Quốc Gia Thành Phố Hồ Chí Minh, cảm ơn các thầy cô khoa Khoa Học Ứng Dụng đã tạo điều kiện cho chúng em được tìm hiểu thêm về các kiến thức vật lí mới
mẻ Nhóm em cũng trân trọng cảm ơn thầy Lý Anh Tú và thầy
Lê Quốc Khải - giảng viên phụ trách giảng dạy môn Vật Lý 1 cho chúng em Các thầy đã tận tâm giảng dạy, dành nhiều thời gian giúp đỡ và đưa ra những ý kiến đóng góp giúp nhóm chúng em hiểu rõ hơn về đề tài để có thể hoàn thành bài báo cáo này Một lần nữa chúng em muốn cảm ơn những kiến thức nền tảng và kinh nghiệm thực tiễn mà các thầy đã truyền đạt cho chúng em trong suốt thời gian qua
Trong quá trình thực hiện đề tài, nhóm đã vận dụng những kiến thức tích lũy, đồng thời kết hợp với việc học hỏi và nghiên cứu những kiến thức mới từ thầy, bạn bè cũng như nhiều nguồn tài liệu tham khảo để từ đó chúng em có thể hoàn thành bài báo cáo một cách tốt nhất Tuy nhiên, các thành viên đều chưa
có nhiều kinh nghiệm, vốn kiến thức còn hạn hẹp nên chắc chắn bài báo cáo còn nhiều thiếu sót, chúng em kính mong nhận được sự góp ý, chỉ bảo từ các thầy để hoàn thiện bài báo cáo tốt hơn và có thể áp dụng vào các đề tài khác trong tương lai
Trang 5Lời cuối cùng, nhóm chúng em xin gửi đến các thầy lời cảm ơn sâu sắc và chân thành nhất, chúc các thầy dồi dào sức khỏe và thành công trên con đường sự nghiệp của mình
CHƯƠNG 1: MỞ ĐẦU
1.1 Đề tài
Vẽ quỹ đạo chuyển động ném xiên trong trọng trường
bỏ qua lực cản và xác định một vài thông số liên quan
1.2 Yêu cầu
Sử dụng Matlab để giải bài toán sau: “Từ độ cao 20m
so với mặt đất, người ta ném thẳng đứng một vật A với vận tốc v , đồng thời thả rơi tự do vật B Bỏ qua sức cản không0
khí Tính v để vật A rơi xuống đất chậm hơn 2 giây so với0
vật B và vẽ hình Lấy g = 10m/s 2
1.3 Điều kiện
- Sinh viên cần có kiến thức về lập trình cơ bản trong MATLAB hoặc PYTHON
- Tìm hiểu các lệnh MATLAB hoặc PYTHON liên quan symbolic và đồ họa
Trang 61.4 Nhiệm vụ
Xây dựng chương trình Matlab
- Nhập các giá trị ban đầu (những đại lượng đề cho)
- Thiết lập các phương trình tương ứng Sử dụng các lệnh symbolic để giải hệ phương trình
- Vẽ hình
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Chuyển động ném xuyên
Chuyển động ném xiên là chuyển động của một vật được ném lên với vận tốc đầu hợp với phương ngang một góc (gọi là góc ném) Vật ném xiên chỉ chịu tác dụng của trọng lực
Theo phương ngang vật không chịu tác dụng của vật nào, chuyển động của vật là chuyển động thẳng đều
Theo phương thẳng đứng:
+€ Giai đoạn 1: Vật chuyển động đi lên đến độ cao cực đại chịu tác dụng của trọng lực hướng xuống và vật chuyển động chậm dần đều với gia tốc
+€ Giai đoạn 2: Vật chuyển động đi xuống lúc này chuyển động của vật tương đương với chuyển động ném ngang
Độ lớn của lực không đ•i€ thời gian vật chuyển động đi lên đến độ cao cực đại bằng với thời gian vật chuyển động đi xuống ngang với vị trí ném.€
2.2 Phương trình chuyển động
Để xác định chuyển động của một chất điểm chúng ta cần biết vị trí của chất điểm tại những thời điểm khác nhau Nói cách khác, chúng ta cần biết sự phụ thuộc theo thời gian của vectơ bán kính của chất điểm:
Phương trình này biểu diễn vị trí của chất điểm theo thời gian và gọi là phương trình chuyển động của chất điểm Trong
Trang 7hệ tọa độ Đề-các, phương trình chuyển động của chất điểm là một hệ gồm ba phương trình:
Tương tự, trong hệ tọa độ cầu, phương trình chuyển động của chất điểm là:
2.3 Quỹ đạo và phương trình quỹ đạo
Khi chuyển động, các vị trí của chất điểm ở các thời điểm khác nhau vạch ra trong không gian một đường cong liên tục nào đó gọi là quĩ đạo của chuyển động Phương trình mô tả đường cong quỹ đạo gọi là phương trình quỹ đạo Trong hệ tọa
độ Đề-các phương trình quĩ đạo có dạng:
Trong đó f (x,y,z) là một hàm nào đó của các tọa độ và C là một hằng số
2.4 Bài toán
- Quy ước gốc tọa độ O ở mặt đất
- Chọn chiều dương thẳng đứng hướng lên
Trang 8- Chuyển động của vật A gồm 2 giai đoạn:
+ Giai đoạn 1: A đi từ (1) đến (2) thì vật chuyển động chậm dần đều và dừng lại ở (2), và vận tốc tại (2)
+ Giai đoạn 2: A đi từ (2) đến (3) thì vật được xem như thả tự
do từ (2)
- Chuyển động của vật B là rơi tự do tại (1) ở độ cao 20m, với vận tốc đầu
- Trong quá trình chuyển động cả 2 vật đều có gia tốc bằng gia tốc trọng trường.€
CHƯƠNG 3: CODE PYTHON VÀ GIẢI THÍCH
3.1 Đề bài
€ “Từ độ cao 20m so với mặt đất, người ta ném thẳng đứng một vật A với vận tốc v , đồng thời thả rơi tự do vật B.0
Bỏ qua sức cản không khí Tính v để vật A rơi xuống đất0
chậm hơn 2 giây so với vật B và vẽ hình Lấy g =10m/s ”2
3.2 Đoạn code hoàn chỉnh
import time
import numpy as np
Trang 9import matplotlib pyplot as plt
from matplotlib animation import FuncAnimation
h , , g dt map ( float ,input( "Nhập các giá trị h, g và deltat:
" ) split ())
tB , tA = np sqrt ( * / h g ), np sqrt ( * / h g ) + dt
v = 0.5 * g tA /tA
print( "Vận tố/ c v0 để2 vật A rơi xuố/ ng đấ/ t chậm hơn {:.3f} s so với vật B
là {:.3f} m/s" format( dt , v ))
hmax , vmax = h + 0.5 v** 2 / g , 1.2 * max( g tB * , , v - + * tA )
neverdone , neverdone2 , neverdone3 = False , False , False
t = np linspace( , tA , 200 )
hA , hB = h + v t - 0.5 * * ** g t 2 , h - 0.5 * g t** 2
hB = np clip( hB , 0 , ) h
vA , vB = v - g t , - * g t
vB = np where ( vB <= - * g tB , 0 , vB )
delta_v_threshold = 0.5 g * tB
delta_v np abs ( np diff( vB ))
large_step_indices = np where ( delta_v delta_v_threshold )[ 0 ] + 1
vBd vB copy()
vBd large_step_indices [ ] = np nan
fig , ax plt subplot_mosaic (
A A """
A A AB
A A AC
A A AD
A A """ ,
A A constrained_layout= True ,
A A height_ratios= 1 , , 1 1 ],
A A width_ratios= 2 , 1 ],
A A figsize ( 8 8 ),
)
xlim [[ - 2 2 , ], [ 0 1.25 * tA ],[ 0 , 1.25 * tA ],[ , ]] 0 1
ylim [[ 0 1.2 * hmax ], [ 0 , 1.2 * hmax ], [ - vmax , vmax ],[ , ]] 0 1
xlabel [ = "" , "Thời gian (s)" , "Thời gian (s)" , "" ]
ylabel [ = "ĐỘ CAO (m)" , "độ cao (m)" , "vận tố/ c (m/s)" , "" ]
title [ = "Hình vẽ" , "ĐốO thị độ cao-thời gian" "ĐốO , thị vận tố/ c-thời gian" , "Ba 2ng số/ liệu" ]
Trang 10for axd_name , axd in ax items():
A A index = ord( axd_name ) - 65
A A axd set_xlim( xlim [ index ])
A A axd set_ylim( ylim [ index ])
A A axd set_xlabel( xlabel [ index ], weight = 'light' )
A A axd set_ylabel( ylabel [ index ], weight = 'light' )
A A axd set_title( title [ index ], weight = 'bold' )
font1 { = 'style' : 'italic' 'weight' , : 'light' 'size' , : } 8
c = { 'va' : 'center' , 'ha' : 'center' }
ax [ "A" ] tick_params ( bottom = False , labelbottom = False )
ax [ "B" ] grid ()
ax [ "C" ] grid ()
ax [ "D" ] tick_params ( bottom = False , left False , labelbottom = False ,
labelleft= False )
A = ax [ "A" ] scatter ([], [], c = 'r' , s 16 , zorder = 2
B = ax [ "A" ] scatter ([], [], c = 'b' , = 16 , zorder = 2
ax [ "A" ] legend ([ "Vật A" , "Vật B" ], loc ='upper right' )
ax [ "A" ] hlines( , h - , , 2 'gray' ' ' , , lw 0.2 )
ax [ "A" ] text ( 1.9 , 1.02 h , 'h = {:.1f} m' format ( h ), c ='gray' , fontdict
= font1 , ha = 'right' )
hm = ax [ "A" ] scatter ([],[], s = 16 , c ='m' )
hmt ax [ "A" ].text( 1 , 1.02 * hmax , "" , ='m' , fontdict = font1 , ha = 'center' )
ahA , = ax [ "B" ].plot([],[], 'r' )
ahB , = ax [ "B" ].plot([],[], 'b' )
avA , = ax [ "C" ].plot([],[], 'r' )
avB , = ax [ "C" ].plot([],[], 'b' )
velocity_text = ax [ "D" ] text ( 0.5 , 0.8 , 'v0 = {:.5f}
m/s' format( ), c = 'r' , fontdict )
time_text = ax [ "D" ] text ( 0.5 , 0.6 , "ĐốO ng hốO " , fontdict )
timeA_text = ax [ "D" ] text ( 0.5 , 0.2 , "" , c 'r' , fontdict = c
timeB_text = ax [ "D" ] text ( 0.5 , 0.4 , "" , c 'b' , fontdict = c
def animate( frame ):
A A global neverdone , neverdone2 , neverdone3
A A if np logical_and ( frame == , neverdone2 ):
Trang 11A A A A neverdone , neverdone2 , neverdone3 = False , False , False
A A A A hm set_offsets ([ 3 0 ])
A A A A hmt set_text( "" )
A A A A time sleep( )
A A A set_offsets ([ - , hA frame [ ]])
A A B set_offsets ([ 1 , hB [ frame ]])
A A ahA set_data( [: t frame+ ], hA [: frame+ ])
A A ahB set_data( [: t frame+ ], hB [: frame+ ])
A A avA set_data( [: t frame+ ], vA [: frame+ ])
A A avB set_data( [: t frame+ ], vBd [: frame+ ])
A A if t frame ] <=tA :
A A A A timeA_text set_text( 'tA = {:.5f} s' format ( [ t frame ]))
A A A A if t frame ] == tA :
A A A A A A neverdone2 = True
A A A A
A A if not neverdone :
A A A A timeB_text set_text( 'tB = {:.5f} s' format ( [ t frame ]))
A A A A if t frame ] >tB :
A A A A A A timeB_text set_text( 'tB = {:.5f} s' format ( tB ))
A A A A A A neverdone = True
A A if np logical_and ( vA [ frame ] 0 , not neverdone3 ):
A A A A hm set_offsets ([ - , hmax ])
A A A A hmt set_text( 'hmax = {:.3f} m' format ( hmax ))
A A A A neverdone3 = True
A A
A A return , , A B ahA , ahB , avA , avB , timeA_text , timeB_text , hm , hmt animation = FuncAnimation ( fig , animate, frames = len( ), t interval ,
blit True , repeat = True )
plt show()
CHƯƠNG 4: KẾT QUẢ
- Nhập các giá trị ban đầu:
Trang 13- Chọn gốc tọa độ tại mặt đất: + Chiều dương hướng lên
Trang 14- Kết quả chuyển động: Nhập giá trị ban đầu:
Kết quả:
Đồ thị:
Trang 16TÀI LIỆU THAM KHẢO
[1]Basic tutorial for Python, [Online] Available:
https://www.youtube.com/watch?
v=Z1Yd7upQsXY&ab_channel=CSDojo
[2]Giáo trình Vật lý đại cương A1, Trường Đại học Bách Khoa
- Đại học Quốc gia Thành Phố Hồ Chí Minh