Try   HackMD

利用反作用力後退

作者:王一哲
日期:2020/1/15


題目

假設有一個裝置本體的質量

M,裝置上載有一些即將被水平拋出的物體,物體的總質量為
m
,且
M>m
。假設總共拋出
N
次,則每次拋出的物體質量
dm=m/N
,被拋出的物體相對於拋出後本體的速度為
v
。請問將所有物體拋出後本體的速度
vt
與拋出次數
N
的關係為何?

理論計算

第1次拋出物體後本體對地速度為

v1,被拋出的物體對地速度為
v+v1
,由動量守恆可知

(M+mdm)v1+dm(v+v1)=0
v1=dmvM+m

第2次拋出物體後本體對地速度為

v2,被拋出的物體對地速度為
v+v2
,由動量守恆可知

(M+m2dm)v2+dm(v+v2)=(M+mdm)v1

v2=dmv+(M+mdm)v1M+mdm=dmvM+mdm+v1=dmv(1M+mdm+1M+m)

第3次拋出物體後本體對地速度為

v3,被拋出的物體對地速度為
v+v3
,由動量守恆可知

(M+m3dm)v3+dm(v+v3)=(M+m2dm)v2

v3=dmv+(M+m2dm)v2M+m2dm=dmvM+m2dm+v2=dmv(1M+m2dm+1M+mdm+1M+m)

N次拋出物體後本體對地速度為
vN
,被拋出物體對地速度為
v+vN
,依照以上的規律可以推測

(M+mNdm)vN+dm(v+vN)=[M+m(N1)dm]vN1

vN=dmv+[M+m(N1)dm]vN1M+m(N1)dm=dmvM+m(N1)dm+vN1=dmvi=1N1M+m(i1)dm


程式1:指定
N
的數值,計算每次拋出後本體的速度

import matplotlib.pyplot as plt M, m, v, N = 2, 1, 3, 10 dm = m/N vi, idx = [0], [0] for i in range(1, N+1, 1): idx.append(i) vi.append((-dm*v + (M+m-(i-1)*dm)*vi[i-1]) / (M+m-(i-1)*dm)) plt.figure(figsize=(6, 4.5), dpi=100) plt.subplots_adjust(left=0.2, right=0.95, top=0.9, bottom=0.15) plt.xlabel('number', fontsize=16) plt.ylabel(r'$v_i ~\mathrm{(m/s)}$', fontsize=16) plt.xticks(fontsize=12) plt.yticks(fontsize=12) plt.grid(color='gray', linestyle='--', linewidth=1) plt.plot(idx, vi, color='red', linestyle='', marker='o', markersize=5) plt.savefig('ThrowBack'+str(N)+'.svg') plt.savefig('ThrowBack'+str(N)+'.png') plt.close

假設

M=2 kg
m=1 kg
v=3 m/s
,手動修改拋出次數
N
,計算每次拋出物體後本體的速度並作圖。從以下的關係圖可以看出,當
N10
時數據點分布的曲線大致上相同,本體的末速約為
1.2 m/s

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
N=3時,每次拋出物體後本體的速度

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
N=5時,每次拋出物體後本體的速度

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
N=10時,每次拋出物體後本體的速度

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
N=20時,每次拋出物體後本體的速度

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
N=100時,每次拋出物體後本體的速度

程式2:計算本體最終速度
vt
與拋出次數
N
的關係

import numpy as np import matplotlib.pyplot as plt M, m, v = 2, 1, 3 def vN(N): dm = m/N vi, idx = [0], [0] for i in range(1, N+1, 1): idx.append(i) vi.append((-dm*v + (M+m-(i-1)*dm)*vi[i-1]) / (M+m-(i-1)*dm)) return N, vi[-1] num = 100 Ns, vs = np.zeros(num), np.zeros(num) for j in range(1, num+1, 1): Ns[j-1], vs[j-1] = vN(j) plt.figure(figsize=(6, 4.5), dpi=100) plt.subplots_adjust(left=0.2, right=0.95, top=0.9, bottom=0.15) plt.xlim(0, max(Ns)+1) plt.xlabel('N', fontsize=16) plt.ylabel(r'$v_t ~\mathrm{(m/s)}$', fontsize=16) plt.xticks(fontsize=12) plt.yticks(fontsize=12) plt.grid(color='gray', linestyle='--', linewidth=1) plt.plot(Ns, vs, color='red', linestyle='', marker='o', markersize=5) plt.savefig('ThrowBackFor.svg') plt.savefig('ThrowBackFor.png') plt.close

將程式1稍微修改一下,使用 for 迴圈計算本體最終速度

vt與拋出總次數
N
的關係並作圖。從以下的關係圖可以看出,當
N
越大時
vt
的量值也會變大,這表示將物體分成較多等份,每次拋出一小塊,這樣可以得到較快的最終速度,但即使分成再多等份,最終速度最快也只能達到大約
1.2 m/s

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
本體最終速度與拋出總次數的關係圖

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
本體最終速度與拋出總次數的關係圖(只畫出N = 1 ~ 10)

結語

這是一個相當經典的高中物理題目,通常會放在高二下學期第6章動量守恆。由於我已經習慣寫 Python 程式,所以我很自然地選擇用程式碼處理這個問題,不想要看到程式碼的同學也可以用試算表軟體做到類似的效果,這是我用 Google 試算表製作的檔案連結

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →
使用 Google 試算表繪製的本體最終速度與拋出總次數的關係圖(只畫出N = 1 ~ 10)


tags:PhysicsPython