胡宗元
(首都經(jīng)濟貿(mào)易大學(xué) 安全與環(huán)境工程學(xué)院,北京 100070)
·計算機科學(xué)與實驗·
基于Mathematica的阻尼拋體數(shù)值仿真實驗
胡宗元
(首都經(jīng)濟貿(mào)易大學(xué) 安全與環(huán)境工程學(xué)院,北京 100070)
該文基于Mathematica設(shè)計了一個能夠進行阻尼拋物運動仿真試驗的程序。在任意給定的輸入條件下,該程序既可以輸出運動實況動畫和頻閃圖等仿真結(jié)果,又可以輸出阻尼拋物運動的軌跡曲線。
數(shù)值仿真;阻尼拋體;Mathematica;實驗
10.3969/j.issn.1672-4550.2016.05.016
運用計算機來進行探究和設(shè)計是大學(xué)生應(yīng)具備的一項基本功。我國許多非計算機專業(yè)的大學(xué)生的計算機應(yīng)用能力目前還處于較低水平。在教學(xué)中開展數(shù)值仿真實驗,不僅可以幫助學(xué)生更好地掌握專業(yè)知識,同時可以培養(yǎng)學(xué)生的計算機應(yīng)用能力。
常用的科學(xué)計算軟件如Matlab、Maple和Mathematica都可以選作設(shè)計數(shù)值仿真實驗的工具,它們各有特色[1]。Mathematica是美國Wolfram Research公司開發(fā)的數(shù)學(xué)軟件,主要用途是科學(xué)研究與工程技術(shù)中的計算[1]。它簡單易學(xué)、高效多能,一句簡單的Mathematica命令就能完成一些編程軟件需用幾十句才能完成的工作。該軟件除了能進行任意精度的數(shù)值計算,還可以進行微分、積分、冪級數(shù)展開等符號演算。此外,Mathematica還提供了多種方式作圖、發(fā)聲和動畫的命令,使人容易直觀地把握住對象的特性[3]?;谶@些特點,本文選擇Mathematica作為開發(fā)仿真實驗的工具。
下面以阻尼拋體運動實驗為例,具體展示用Mathematica設(shè)計數(shù)值仿真實驗的方法和結(jié)果。
為方便起見,假設(shè)拋體的質(zhì)量為m,可以看成質(zhì)點,在重力和空氣阻力作用下運動。拋體受到的重力為mg,空氣阻尼力為mb,b為阻尼系數(shù),取拋出點的位置為原點建立坐標系,x軸為水平方向,y軸為豎直向上。在初始時刻t=0,物體以速度v0,仰角θ拋出,則由牛頓第二定律[4]得到運動微分方程和初始條件:
由式(1)可解出速度方程:
和運動方程:
式中,v∞=-g/b為垂直方向的收尾速度。
由此可以進一步求出拋體所能達到的最大高度為:
落地時間tmax滿足:
對應(yīng)落地點的水平位置為:
當阻尼系數(shù)足夠小,即b<<1時,有近似結(jié)果tmax≈2v0sinθ/g。
2.1 需求分析
按照仿真要求,阻尼拋體運動仿真實驗需要得出的效果為阻尼拋體運動過程實況、具體記錄運動過程的頻閃圖和由此繪出的運動軌跡圖等。其中,運動過程實況可以通過Mathematica的動畫功能來實現(xiàn);頻閃圖和軌跡圖可以直接調(diào)用Mathematica命令里的Graphics和parametricPlot。
從控制論的角度看,一個具有特定功能的系統(tǒng),需要有適當?shù)妮斎牒洼敵?。作為仿真實驗程序,輸入的是控制變量,輸出的是實驗結(jié)果。按照前面的分析,需要輸入的控制變量應(yīng)該有初速度v0、仰角θ和阻尼系數(shù)b;需要輸出的實驗結(jié)果為阻尼拋體運動過程的動畫顯示、過程的頻閃圖和運動的軌跡圖等。由于存在多種輸出,因此還需要增加一個用以選擇輸出模式的輸入變量——模式變量。
2.2 程序的設(shè)計
仿真程序可以認為是將輸入信息加工為輸出的一種變換。利用輸入的初速度、仰角和阻尼系數(shù),完全確定了運動方程式(3)。這部分內(nèi)容構(gòu)成了程序的基本模塊:
其中,引入兩個內(nèi)部變量g=9.8,vf=-g/b。
在此基礎(chǔ)上,調(diào)用Mathematica命令里的Show、Graphics和parametricPlot可以分別實現(xiàn)運動實況動畫、頻閃圖和軌跡圖的輸出。
物理分析計算提供了計算機模擬的基礎(chǔ),但是要獲得良好的演示效果,還需要注意展示形式。
1)首先是拋體的形狀和大小。由于不計形狀的影響,可以將拋體設(shè)為小球。從演示的效果看,球的半徑不宜過小,不然看不清楚;也不宜過大,不然占據(jù)過多的畫面難以看清運動過程。因此,適當?shù)剡x擇是規(guī)定一個半徑的相對大小,如占整個畫面尺度的5。
2)其次是整個畫面的大小。為了充分利用屏幕空間,應(yīng)當使拋體的運動范圍盡可能地充滿屏幕。按照第1節(jié)中的結(jié)果,拋體中心的運動范圍為x∈[0,xmax],y∈[0,ymax],因此展示范圍應(yīng)該包含上述區(qū)域。如果考慮到拋體的大小,運動范圍還需要適當加大。
還要注意閃光間隔大小的選擇,按照實物實驗的情況,取閃光間隔dt=0.2比較適當。動畫的時間間隔原則上可以選擇任意小,為了節(jié)約計算機資源,選擇閃光間隔的二分之一或者三分之一即可。
3.1 Mathematica源程序
由上面的設(shè)計,不難編寫出相應(yīng)的Mathematica模塊程序如下:
dampingthrowing[v0_,q_,b_,m_Integer]:=
Module[{g,ymax,t0,tmax,xmax,dt,vf},
g=9.8;dt=0.2;vf=-g/b;
x[t_]:=v0*cos[q]*(1-exp[-b* t])/b;
y[t_]:=vf*t+(v0*sin[q]-vf)(1-exp[-b*t])/b;
ymax=v0*sin[q]/b+vf*log[1-v0* sin[q]/vf]/b;
t0=2*v0*sin[q]/g;
tmax=t/.FindRoot[y[t]==0,{t,t0}];
xmax=x[tmax];
Switch[m,0, Table[Show[Graphics[{PointSize[0.03],Point[{x[t],y[t]}]},PlotRange?{{-0.05xmax, 1.05xmax},{-0.05ymax,1.05ymax}}]],{t,0,tmax,dt/3}],
1,Show[Table[Graphics[{PointSize[0.03],Point[{x[t],y[t]}]},Axes? True,PlotRange? {-0.05ymax,1.05ymax}],{t,0,tmax,dt}]],
2,ParametricPlot[{x[t],y[t]},{t,0,tmax},PlotRange? {{0,xmax},{0,ymax}}]
]
]
3.2 程序中的參數(shù)說明
程序中各個參數(shù)說明如下。
輸入?yún)?shù):初速度v0,仰角θ,阻尼系數(shù)b,模式參數(shù)m。
輸出模式:m=0,動畫;m=1,閃光照;m=2,運動軌跡圖。
內(nèi)部變量:重力加速度g=9.8;收尾速度vf;閃光間隔dt=0.2;最大高度ymax;最大時間tmax;最遠距離xmax。
3.3 仿真程序的使用
在應(yīng)用時調(diào)用模塊dampingthrowing,輸入拋體的初速度v0;仰角θ;阻尼系數(shù)b;模式參數(shù)m等參數(shù)后,便可運行。
例設(shè)拋體的初速度v0=20、仰角θ=π/4、阻尼參數(shù)b=2。
如果要得到動畫過程,輸入命令為dampingthrowing[20,π/4,2,0],輸出結(jié)果為阻尼拋體運動實況的仿真動畫;由于動畫效果在文章中無法展示,請讀者自行測試。
如果要得到頻閃圖,輸入命令為dampingthrowing[20,π/4,2,1],輸出結(jié)果如圖1所示。
圖1 阻尼拋體運動的頻閃圖
如果要得到軌跡圖,輸入命令為dampingthrowing[20,π/4,2,2],輸出結(jié)果如圖2所示。
圖2 阻尼拋體運動的軌跡圖
本文介紹了一個阻尼拋物運動仿真模塊的設(shè)計方案和運行效果,為大學(xué)生在專業(yè)學(xué)習(xí)中使用計算機提供了一個可以模仿的案例。該程序主要有以下4個方面的優(yōu)點:
1)輸入?yún)?shù)任意可調(diào),可以按需要進行各種模擬實驗;
2)可以定量地演示阻尼拋物運動現(xiàn)象,仿真程度高;
3)既能夠輸出運動實況,又能夠輸出頻閃照片,演示效果好;
4)源程序簡單,具有開放性,在該模塊的基礎(chǔ)上略加修改,就可以演示高處斜拋或者變阻尼的拋物運動等現(xiàn)象,還可以繪制相空間中的運動軌跡。
[1]彭芳麟,梁穎,忻蓓.計算軟件在計算物理課程中的地位和作用[J].大學(xué)物理,2013(8):7.
[2]洪維恩.數(shù)學(xué)運算大師Mathematica4[M].北京:人民郵電出版社,2002:1-16.
[3]倪致祥.科研的有力工具——Mathematica簡介[J].阜陽師范學(xué)院學(xué)報,2005(2):7.
[4]周衍柏.理論力學(xué)教程[M].2版.北京:高等教育出版社,1986:24-41.
Numerical Simulation Experiment of Damped Projectile Based on Mathematica
HU Zongyuan
(College of Safety and Environment Engineering,Capital University of Economics and Business,Beijing 100070,China)
We design a program to simulate the damping projectile experiment based on Mathematica.The program can output many simulation results such as animation,stroboscopic map and the track curve in coordinate space for given inputs.
numerical simulation;damped projectile;Mathematica;experiment
TP 391.6
A
2015-07-12;修改日期:2015-08-12
北京市自然科學(xué)基金(3144027)。
胡宗元(1984-),男,博士生,實驗師,主要從事微波、天線與電磁環(huán)境方面的教學(xué)與研究。