matlab報(bào)告-用matlab研究拋體運(yùn)動(dòng)_第1頁(yè)
matlab報(bào)告-用matlab研究拋體運(yùn)動(dòng)_第2頁(yè)
matlab報(bào)告-用matlab研究拋體運(yùn)動(dòng)_第3頁(yè)
matlab報(bào)告-用matlab研究拋體運(yùn)動(dòng)_第4頁(yè)
matlab報(bào)告-用matlab研究拋體運(yùn)動(dòng)_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、用matlab研究拋體運(yùn)動(dòng)2. 用matlab研究拋體運(yùn)動(dòng)2.1 引論MATLAB語(yǔ)言是一種集數(shù)值計(jì)算、符號(hào)運(yùn)算、可視化建模、仿真和圖形處理等多種功能的高級(jí)語(yǔ)言。使用MATLAB模擬物理現(xiàn)象為我們解決問(wèn)題提供了一種新的方法,利用其方便的數(shù)值計(jì)算和作圖功能,可以方便的模擬一些物理過(guò)程。對(duì)于處理非線性問(wèn)題,既能進(jìn)行數(shù)值求解,又能繪制有關(guān)曲線,方便實(shí)用,基于其功能強(qiáng)大,界面友善,語(yǔ)言自然,交互性強(qiáng)等優(yōu)點(diǎn),已成為教學(xué)和科研中最基礎(chǔ)的軟件之一,利用其解決復(fù)雜的數(shù)值計(jì)算問(wèn)題,可以減少工作量,節(jié)約時(shí)間,圖形繪制問(wèn)題,真實(shí)直觀,可以加深理解,提高工作效率將物體以一定的初速度向空中拋出,僅在重力作用下物體所作的

2、運(yùn)動(dòng),它的初速度不為零,可分為平拋運(yùn)動(dòng)和斜拋運(yùn)動(dòng)。物理上提出的“拋體運(yùn)動(dòng)”是一種理想化的模型,即把物體看成質(zhì)點(diǎn),拋出后只考慮重力作用,忽略空氣阻力。拋體運(yùn)動(dòng)加速度恒為重力加速度,相等的時(shí)間內(nèi)速度變化量相等,并且速度變化的方向始終是豎直向下的。2.2拋體運(yùn)動(dòng)及應(yīng)用2.2.1、 實(shí)驗(yàn)設(shè)計(jì)思路1、理論分析一般的處理方法是將其分解為水平方向和豎直方向,平拋運(yùn)動(dòng)水平方向是勻速直線運(yùn)動(dòng),豎直方向是自由落體運(yùn)動(dòng),斜拋運(yùn)動(dòng)水平方向是勻速直線運(yùn)動(dòng),豎直方向是豎直上拋運(yùn)動(dòng),在任意方向上分解有正交分解和非正交分解兩種情加速度及位移等進(jìn)行相應(yīng)分析。無(wú)論怎樣分解,都必須把運(yùn)動(dòng)的獨(dú)立性和獨(dú)立作用原理結(jié)合進(jìn)行系統(tǒng)分解,即將

3、初速度、受力情、加速度及位移等進(jìn)行相應(yīng)分析。斜拋運(yùn)動(dòng):水平方向速度 (1)豎直方向速度 (2)水平方向位移 (3)豎直方向位移 (4)平拋運(yùn)動(dòng): 水平方向速度 (5) 豎直方向速度 (6)水平方向位移 (7)豎直方向位移 (8)合速度 (9) 合速度方向與水平夾角: (10)合位移 (11)位移方向與水平夾角: (12) 設(shè)某一拋射體的初速度為,拋射角為,將其運(yùn)動(dòng)在X,Y軸上進(jìn)行正交分解,水平方向速度 (13)豎直方向 (14)質(zhì)點(diǎn)的坐標(biāo)是 (15) (16)從上兩式消去,便得質(zhì)點(diǎn)的軌跡運(yùn)動(dòng)方程 (17)拋射體能達(dá)到的最大高度為 (18)其到達(dá)最大高度所需時(shí)間為 (19)空中飛行時(shí)間為 (20

4、)拋射體的最大射程為 (21)它跟初速度和拋射角有關(guān),在拋射角不變的情況下,射程與成正比,所以射程隨初速度的增大而增大。在初速度不變的情況下,隨著拋射角的增大,射程也增大,當(dāng)度時(shí),射程達(dá)到最大值,以后隨著拋射角的增大,射程減小。 利用MATLAB的繪圖功能,可以更直觀的體現(xiàn)上述結(jié)論。(程序1)程序運(yùn)行結(jié)果如圖1所示。 圖1 射程與拋射角、初速度的關(guān)系對(duì)于最大飛行路徑所對(duì)應(yīng)的拋射角問(wèn)題(空氣阻力忽略不計(jì)),X,Y坐標(biāo)軸分別代表拋射體的射程與射高,在處,設(shè)在某一微小時(shí)段內(nèi)拋射體的路徑變量為,其對(duì)應(yīng)的水平及豎直方向的變量為與,則 (22)設(shè)射程為R,則飛行路徑長(zhǎng)度 (23) 根據(jù)前面的推論, (24

5、)其中為拋射的初始速度,為拋射角,根據(jù)運(yùn)動(dòng)學(xué)原理,有 (25) (26)從(24)、(25)中消除,我們可得到該運(yùn)動(dòng)的拋物線方程: (27)從(24)中可知,為求解L,先得求出,因此在(4)式兩邊同時(shí)對(duì)求導(dǎo),得: (28)將(27)代入式(24),等式兩邊同時(shí)積分,便得到了飛行路徑長(zhǎng)度與拋射角之間的關(guān)系: (29)根據(jù)式(28),為求得L的最大值,將(28)兩邊同時(shí)對(duì)求導(dǎo) (30)令,可得到最大飛行路徑所對(duì)應(yīng)的拋射角的大小,但解此方程是比較困難的。為此,我們采用MATLAB的函數(shù)運(yùn)算功能來(lái)解決這一問(wèn)題。(程序2)程序如下,設(shè)其中的拋射初速度,。運(yùn)行結(jié)果如圖2所示。圖2 拋射角與飛行路徑及其一階

6、導(dǎo)數(shù)曲線圖圖2給出了飛行路徑隨拋射角的變化曲線及飛行路徑曲線的斜度,從圖中可以得到,當(dāng)(弧度)時(shí),即度時(shí),飛行路徑最大,此時(shí) (31)我們知道,在不考慮空氣阻力的情況下,當(dāng)拋射角度時(shí),其射程最遠(yuǎn),但此時(shí)其飛行路徑并不是最遠(yuǎn),而是當(dāng)拋射角度時(shí),其飛行路徑最遠(yuǎn),且其長(zhǎng)度約為,實(shí)際上,由于空氣阻力的存在,拋射體在空中是沿導(dǎo)彈曲線(彈頭飛行時(shí)其重心所經(jīng)過(guò)的路線)飛行的,它與拋物線不同,它的升弧與降弧不對(duì)稱,在重力與空氣阻力的共同影響下,彈道形成不均等的圓弧,升弧較長(zhǎng)而直伸,降弧較短而彎曲.斜拋射出的炮彈的射程和射高都沒(méi)有按拋體計(jì)算得到的值那么大,路線也不是理想曲線。 物體在空氣中受到的阻力,與物體運(yùn)動(dòng)

7、速度大小有密切聯(lián)系,速度越小,越接近理想情況,當(dāng)物體速度低于200米每秒時(shí),阻力與物體速度大小的平方成正比,速度介于400至600米每秒之間時(shí),空氣阻力與速度大小的三次方成正比,在速度很大的情況下,阻力與速度大小的高次方成正比。 將物體用一定的初速度沿水平方向拋出,不考慮空氣的阻力,物體只在重力作用下所做的運(yùn)動(dòng),叫做平拋運(yùn)動(dòng)。 豎直的重力與速度方向有夾角,做曲線運(yùn)動(dòng);水平方向不受外力作用,是勻速運(yùn)動(dòng),速度為Vo;豎直方向受重力作用,沒(méi)有初速度,加速度為重力加速度g,是自由體運(yùn)動(dòng)。即做平拋運(yùn)動(dòng)的物體,在水平方向上由于不受力,將作勻速直線運(yùn)動(dòng);在豎直方向上的物體的初速度為0.且只受到重力作用,物體

8、做自由落體運(yùn)動(dòng),加速度為g。平拋運(yùn)動(dòng)的規(guī)律:(1)拋出t秒末的速度: 一拋出點(diǎn)為坐標(biāo)原點(diǎn),水平方向?yàn)閤軸(正方向和初速度V0的方向相同),豎直方向?yàn)閥軸,正方向向下,則: 水平分速度:Vx=Vo (32)豎直分速度:Vy=gt (33) 合速度:Vt= (34) tan= (35) (2)平拋運(yùn)動(dòng)的物體在任意時(shí)刻t的位置坐標(biāo):水平位移:x=Vot (36)豎直位移:y=g (37)合位移:s= (38) tan= (39)2、實(shí)驗(yàn)步驟(1)運(yùn)用MATLAB編程得到平拋速度隨時(shí)間的變化關(guān)系。(程序3)依據(jù)公示(32),(33),(34),(35) 圖3 平拋運(yùn)動(dòng)速度隨時(shí)間變化關(guān)系(2)運(yùn)用MAT

9、LAB 編程到到平拋物體運(yùn)動(dòng)的曲線運(yùn)用公式(32),(33),(34),(35),(37),(38),(39),我們可以求得物體在任意時(shí)刻的坐標(biāo)并找到物體所在位置后,再用平滑曲線把這些點(diǎn)連起來(lái),就得到平拋運(yùn)動(dòng)的軌跡。(程序4)運(yùn)行結(jié)果如圖4所示 圖4 物體平拋軌跡曲線(3)利用matlab模擬物體斜拋運(yùn)動(dòng)通過(guò)該程序可以畫出在任意位置以初始速度V和拋射角度拋出的軌跡。(程序5)按“run”運(yùn)行時(shí),彈出窗口將圖框中的相關(guān)數(shù)據(jù)更改為:點(diǎn)擊圖框中的“OK”,在“command window”中輸出結(jié)果為:圖5. 物體斜拋運(yùn)動(dòng)曲線(4)試計(jì)算拋射角為90度的特殊拋體運(yùn)動(dòng)任意時(shí)刻的位置和速度一彈性小球,初

10、始高度h=10m,向上初速度v0=15米每秒,與地面碰撞的速度衰減系數(shù)k=0.8,試計(jì)算任意時(shí)刻球的位置和速度。高度與時(shí)間的關(guān)系:, (40)速度與時(shí)間關(guān)系: (41)對(duì)等式兩邊積分,有, (42), (43)由此可得數(shù)學(xué)方程:第一次落地前: (44) (45) (46)第二次落地前: (47) (48) (49) (50)第三次落地前: (51) (52) (53) (54). . . . . .第n次落地前: (55) (56) (57) (58)如用手工進(jìn)行計(jì)算,計(jì)算量極大,利用MATLAB編程(程序6)程序運(yùn)行結(jié)果如圖所示。 圖6. 拋射角為90度的特殊拋體運(yùn)動(dòng)任意時(shí)刻的位置和速度 (

11、5)用matlab研究定點(diǎn)投籃命中率問(wèn)題下圖為過(guò)罰球點(diǎn)P和籃筐中心Q且垂直于地面的平面示意圖。P,Q之間的距離L=4.60cm,Q點(diǎn)的高度H=3.05 cm,籃球直徑d=24.6cm,籃筐直徑D=45.0 cm.某人投籃的出手高度h位1.8-2.1m,出手速度v=8.09.0m/s。問(wèn)題一:考慮球心對(duì)框心的點(diǎn)對(duì)點(diǎn)的投籃,求出手速度和出手方向的范圍 問(wèn)題二:若考慮球的大小和框的大小進(jìn)行投籃,球入筐時(shí)可以偏離框心,求出手速度、角度及其最大偏值示意圖1問(wèn)題一不考慮籃球和籃筐的大小,不考慮空氣阻力大小的影響,從未出手時(shí)的球心P為坐標(biāo)原點(diǎn),x軸為水平方向,y軸為豎直方向,籃球在t=0時(shí)以出手速度v和出手

12、角度投出,可視為質(zhì)點(diǎn)的斜拋運(yùn)動(dòng),其運(yùn)動(dòng)方程為: (59)其中g(shù)是重力加速度,由此可得球心的運(yùn)動(dòng)軌跡如下拋物線(60)以x=L,y=H-h代入(60)式,就得到了球心命中框心的條件(61)可以看出,給定出手速度v和出手高度h,就有兩個(gè)滿足條件,而(61)式有解的前提為:(62)可解得:(63)于是對(duì)于一定的出手高度h,使(63)式等號(hào)成立的v為最小的出手速度示意圖2球入籃筐處的入射角度為,可從下式得到: (64)這里的導(dǎo)數(shù)由(60)式計(jì)算代入后得對(duì)應(yīng),有,設(shè)(65)求解(程序7)表1 對(duì)于不同的出手速度和出手高度的出手角度和入射角度速度 高度 最大出手角1 最小出手角 對(duì)應(yīng)入框角1 對(duì)應(yīng)入框角2

13、8.0000 1.8000 62.4099 53.8763 42.7925 20.92138.0000 1.8500 62.7779 54.8876 41.8430 20.49158.0000 1.9000 63.1174 55.8206 40.9188 20.14318.0000 1.9500 63.4330 56.6865 40.0156 19.86498.0000 2.0000 63.7281 57.4941 39.1300 19.64788.0000 2.0500 64.0054 58.2505 38.2594 19.48478.0000 2.1000 64.2670 58.9615

14、37.4017 19.36988.5000 1.8000 67.6975 62.1726 37.5049 12.62508.5000 1.8500 67.8663 62.6922 36.7546 12.68708.5000 1.9000 68.0288 63.1884 36.0075 12.77538.5000 1.9500 68.1854 63.6632 35.2632 12.88828.5000 2.0000 68.3367 64.1179 34.5214 13.02408.5000 2.0500 68.4829 64.5541 33.7819 13.18118.5000 2.1000 6

15、8.6244 64.9729 33.0444 13.35839.0000 1.8000 71.0697 67.1426 34.1327 7.65509.0000 1.8500 71.1736 67.4756 33.4473 7.90359.0000 1.9000 71.2749 67.7974 32.7614 8.16639.0000 1.9500 71.3736 68.1086 32.0750 8.44289.0000 2.0000 71.4700 68.4098 31.3881 8.73219.0000 2.0500 71.5641 68.7014 30.7006 9.03389.0000

16、 2.1000 71.6561 68.9840 30.0127 9.3472注:速度單位均為m/s,高度單位均為m,角度單位均為問(wèn)題二示意圖3BADO示意圖4考慮籃球和籃筐的大小,如示意圖3,若入射角太小,則球無(wú)法入筐。由圖不難看出,球心命中筐心的條件為 (66)將=24.6cm,=45.0cm 代入得。由此對(duì)表1進(jìn)行篩選,可得下表:表2. 對(duì)于不同的出手速度和出手高度的出手角度和入射角度速度v高度h出手角度入射角度8.00001.800062.409942.79258.00001.850062.777941.84308.00001.900063.117440.91888.00001.9500

17、63.433040.01568.00002.000063.728139.13008.00002.050064.267037.40178.00002.100064.267037.40178.50001.800067.697537.50498.50001.850067.866336.75468.50001.900068.028836.00758.50001.950068.185435.26328.50002.000068.482935.26328.50002.050068.482933.78199.00001.800071.069734.13279.00001.850071.173633.4473

18、由示意圖4看出,球入筐時(shí)球心可以偏前(偏后與偏前一樣)的最大距離為 = (67) 在(60)式中,用代入,可得 (68)對(duì)求導(dǎo)并令,就有 (69)用近似代替左邊導(dǎo)數(shù),即可得到出手角度的偏差與的以下關(guān)系 (70)由和已經(jīng)得到的也可以求得相對(duì)偏差。類似的,(68)式對(duì)求導(dǎo)并令,可得出手速度允許的最大偏差 (71)由(70)和(71)式的相對(duì)偏差為 (72)編程實(shí)現(xiàn)見程序8計(jì)算結(jié)果表3:出手角度和出手速度最大偏差出手速度v高度h出手角度a偏差aa偏差vv相對(duì)偏差|aa/a|相對(duì)偏差|vv/v|8.00001.800062.4099-0.76520.05280.00660.01231.850062.7

19、779-0.74920.05480.00690.01191.900063.1174-0.73490.05670.00710.01161.950063.4330-0.72190.05850.00730.01142.000063.7281-0.71000.06010.00750.01112.050064.0054-0.69890.06160.00770.01092.100064.2670-0.68870.06300.00790.01078.50001.800067.6975-0.56030.06940.00820.00831.850067.8663-0.55520.07050.00830.0082

20、1.900068.0288-0.55030.07150.00840.00811.950068.1854-0.54560.07250.00850.00802.000068.3367-0.54110.07340.00860.00792.050068.4829-0.53670.07430.00870.00782.100068.6244-0.53240.07520.00880.00789.00001.800071.0697-0.45700.08030.00890.00641.850071.1736-0.45420.08110.00900.00641.900071.2749-0.45150.08180.

21、00910.00631.950071.3736-0.44890.08250.00920.00632.000071.4700-0.44630.08320.00920.00622.050071.5641-0.44370.08390.00930.00622.100071.6561-0.44130.08450.00940.00622.2.2 、結(jié)果分析從以上對(duì)拋體運(yùn)動(dòng)的分析可得出這些結(jié)論:1、拋射體的射程與初速度和拋射角有關(guān),在拋射角不變的情況下,射程隨初速度的增大而增大,在拋射角不變的情況下,射程隨拋射角的增大而增大,當(dāng)拋射角達(dá)到四十五度時(shí)射程達(dá)到最大值,之后射程隨著拋射角的增大而減小。2、速度一定

22、時(shí),出手高度越大,出手角度應(yīng)越大,但隨著速度的增加,高度對(duì)角度的影響變小,這種情形在1度左右;出手高度一定時(shí),速度越大,出手角度也應(yīng)越大,速度的影響在79度左右。3、出手角度和出手速度的允許偏差總的來(lái)看,允許偏差都比較?。贿M(jìn)一步分析可知,出手高度一定,速度越大,角度的允許偏差越小,速度的允許偏差越大,且對(duì)角度的要求比對(duì)速度的要求嚴(yán)格,出手速度一定,高度越大,雖然也是高度的允許偏差越小,速度的允許偏差越大,但這時(shí)角度和速度的要求都相對(duì)較低。2.3、程序及其說(shuō)明%程序1(射程與拋射角、初速度的關(guān)系)x=linspace(0,pi/2,100); %產(chǎn)生行向量發(fā)射角g=10; %重力加速度v1=10

23、; %初速度取10v2=15;v3=20; %初速度取20v4=25; %初速度取25y1=v12*sin(2*x)/g; %初速度為10下的射程y2=v22*sin(2*x)/g; %初速度為15下的射程y3=v32*sin(2*x)/g; %初速度為20下的射程y4=v42*sin(2*x)/g; %初速度為25下的射程subplot(2,2,1); %選擇2*2個(gè)區(qū)的一號(hào)區(qū)plot(x,y1); %輸出初速度為10下的射程曲線title(v0=10); %加圖形標(biāo)題text(pi/4,10,射程為10); %在最大射程處加圖形說(shuō)明subplot(2,2,2); %選擇2*2個(gè)區(qū)的二號(hào)區(qū)p

24、lot(x,y2); %輸出初速度為15下的射程曲線title(v0=15); %加圖形標(biāo)題text(pi/4,22.5,射程為22.5); %在最大射程處加圖形說(shuō)明subplot(2,2,3); %選擇2*2個(gè)區(qū)的三號(hào)區(qū)plot(x,y3); %輸出初速度為20下的射程曲線title(v0=20); %加圖形標(biāo)題text(pi/4,40,射程為40); %在最大射程處加圖形說(shuō)明subplot(2,2,4); %選擇2*2個(gè)區(qū)的四號(hào)區(qū)plot(x,y4); %輸出初速度為25下的射程曲線title(v0=25); %加圖形標(biāo)題text(pi/4,62.5,射程為62.5); %在最大射程處加圖

25、形說(shuō)明 %程序2(拋射角與飛行路徑及其一階導(dǎo)數(shù)曲線)x=(0:pi/100:pi/2); %產(chǎn)生行向量xy1=(sin(x)+(cos(x).*cos(x).*log(1+sin(x)./cos(x)*100/9.8; %飛行路徑長(zhǎng)度與拋射角之間的函數(shù)關(guān)系y2=cos(x).*(1-sin(x).*log(1+sin(x)./cos(x)*200/9.8; %飛行路徑對(duì)拋射角的一階導(dǎo)數(shù)的函數(shù)關(guān)系m=(sin(pi/6)+(cos(pi/6)*cos(pi/6)*log(1+sin(pi/6)/cos(pi/6)*100/9.8; %拋射角取某一特定值時(shí)飛行路徑值n=cos(pi/3)*(1-s

26、in(pi/3)*log(1+sin(pi/3)/cos(pi/3)*200/9.8; %拋射角取某一特定值時(shí)飛行路徑一階導(dǎo)的值plot(x,y1,b:); %輸出飛行路徑長(zhǎng)度與拋射角之間的函數(shù)表達(dá)式hold on; %設(shè)置圖形保持狀態(tài)plot(x,y2,k); % 輸出飛行路徑對(duì)拋射角的一階導(dǎo)數(shù)的函數(shù)表達(dá)系hold off; %關(guān)閉圖形保持text(pi/6,m,y1); %在指定位置添加圖例說(shuō)明text(pi/3,n,y2); %在指定位置添加圖列說(shuō)明grid; %網(wǎng)格線控制%程序3(平拋速度隨時(shí)間的變化關(guān)系)t=0:0.01:10; %產(chǎn)生時(shí)間的行向量 Vt=-sqrt(102+9.8*

27、t.2); %求速度 plot(t,Vt); %輸出速度曲線 title(物體速度隨時(shí)間的變化); % 圖形名稱 grid %加網(wǎng)格線%程序4(平拋運(yùn)動(dòng)的軌跡)t=0:0.01:10; %產(chǎn)生時(shí)間行向量s=-sqrt(3*t).2+(0.5*9.8*t.2).2); %求位移plot(t,s,r:); %輸出位移曲線title(物體平拋運(yùn)動(dòng)軌跡); %圖形名稱grid %加網(wǎng)格線%程序5(物體斜拋運(yùn)動(dòng)曲線)clear;clc;global location v0 alpha g;options=初始位置(坐標(biāo)),初始速度v0 ,拋射角度,重力加速度g,;topic=seting;lines=1

28、;def=0,0,20,45,9.8;h=inputdlg(options,topic,lines,def);location=eval(h1);v0=eval(h2);alpha=eval(h3);g=eval(h4);a=location(1);b=location(2);alfa=alpha*pi/180;tEnd=v0*sin(alfa)/g+(v0*sin(alfa)/g)2+2*b/g)0.5;%斜拋物體的運(yùn)動(dòng)時(shí)間t=linspace(0,tEnd);x=v0*cos(alfa)*t+a;%斜拋物體的水平位移y=v0*sin(alfa)*t-0.5*g*t.2+b;%斜拋物體的豎直

29、位移plot(x,y);hold onplot(x(100),y(100),o)xlabel 水平距離/mylabel 高度/mtitle 拋體軌跡%程序6(拋射角為90度的特殊拋體運(yùn)動(dòng)任意時(shí)刻的位置和速度)v0=15; %初速度h=10; %初始高度g=-9.8; %重力加速度k=0.8; %衰減系數(shù)T=0; %落地時(shí)間for t=0:0.05:20 % 產(chǎn)生時(shí)間的行向量 v=v0+g*(t-T); %求速度 y=h+v0*(t-T)+g*(t-T)2/2; %求高度 if y=0 %循環(huán)判斷條件 v0=-k*v; %衰減的速度 T=t; %求球每次落地所用時(shí)間 h=0; %將高度變零 en

30、d %選擇結(jié)構(gòu)結(jié)束 subplot(1,2,1); %選擇1*2中的一號(hào)區(qū) pause(0.1); %延緩 plot(1,y,or,MarkerSize,10,Markerface,1,0,0); %輸出求球的運(yùn)動(dòng)圖像 title(運(yùn)動(dòng)變化圖); %圖形名稱 axis(0,2,0,25); %坐標(biāo)控制 subplot(2,2,2); %選擇2*2中的二號(hào)區(qū) axis(0,20,-25,30); %坐標(biāo)控制 grid on; %不畫網(wǎng)格線 plot(t,v,*r,MarkerSize,2); %畫球的速度曲線 xlabel(時(shí)間t); %坐標(biāo)軸說(shuō)明 ylabel(速度v); %坐標(biāo)軸說(shuō)明 tit

31、le(速度變化趨勢(shì)圖); %圖形名稱 hold on; %設(shè)置圖形保持狀態(tài) subplot(2,2,4); %選擇2*2中的四號(hào)區(qū) axis(0,20,0,25); %坐標(biāo)控制 grid on; %不加網(wǎng)格線 plot(t,y,*b,MarkerSize,2); %畫球的位置曲線 xlabel(時(shí)間t); %坐標(biāo)軸說(shuō)明 ylabel(高度y); %坐標(biāo)軸說(shuō)明 title(位置變化圖); %圖形名稱 grid on %不加網(wǎng)格線 hold on %設(shè)置圖形保持狀態(tài) end %循環(huán)結(jié)束%程序7(不同的出手速度和出手高度的出手角度和入射角度0% 對(duì)于出手速度v=8.09.0m/s和出手高度h=1.8

32、2.1m,由(3)式% 計(jì)算出手角度a1,a2,由(7)式計(jì)算出入射角度b1,b2,結(jié)果見表1clear;clc;H=3.05;h=1.8:0.05:2.1;L=4.6;g=9.8;input(高度 出手角1 出手角2 入框角1 入框角2);% v=sqrt(g*(H-h+sqrt(L*L+(H-L)2);for v=8.0:0.5:9.0; for h=1.8:0.05:2.1; %求球在出手時(shí)球心的出射角 a=atan(v.2/(g*L).*(1+sqrt(1-2*g./v.2.*(H-h+g*L2./(2.*v.2); b=atan(v.2/(g*L).*(1-sqrt(1-2*g./v

33、.2.*(H-h+g*L2./(2.*v.2); a11=max(a,b);a21=min(a,b); a1=180.*a11/pi;a2=180.*a21/pi; %求球入框時(shí)的入射角 b11=atan(tan(a11)-2.*(H-h)/L); b21=atan(tan(a21)-2.*(H-h)/L); b1=180.*b11/pi;b2=180.*b21/pi; R = v h a1 b1 a2 b2 endend%程序8(出手角度和出手速度最大偏差)% 求出手時(shí)最大偏移距離%求出手時(shí)最大偏移角D=0.45;d=0.246;H=3.05;L=4.6;g=9.8;input(出手速度 高

34、度 出手角度 偏差a 偏差v 相對(duì)偏差a 相對(duì)偏差v); for v=8.0:0.5:9 for h=1.8:0.05:2.1a1=atan(v.*v./(g.*L).*(1+sqrt(1-2.*g./(v.*v).*(H-h+g.*L.*L./(2.*v.*v); a=180.*a1/pi; b11=atan(tan(a1)-2.*(H-h)/L); b=180.*b11/pi; xx=D/2-d/sin(b11)/2;%xx為 aa1=(g*L-v.*v.*sin(a1).*cos(a1).*xx./L./(v.*v-g.*L.*tan(a1);%aa為 aa=aa1*180/pi; vv

35、=(g.*L-v.*v.*sin(a1).*cos(a1).*xx.*v/(g*L2);%vv為 A2=v h a aa vv (abs(vv./v) (abs(aa./a) endend4.對(duì)本課的評(píng)述、建議開設(shè)數(shù)學(xué)實(shí)驗(yàn)與Matlab是為讓學(xué)生學(xué)習(xí)“用數(shù)學(xué)”,加強(qiáng)動(dòng)手能力,訓(xùn)練創(chuàng)新思維。數(shù)學(xué)實(shí)驗(yàn)是一種有用的學(xué)習(xí)手段:通過(guò)對(duì)特點(diǎn)例子的計(jì)算和觀察,可幫助我們直觀地理解非常抽象的數(shù)學(xué)內(nèi)容,了解他的應(yīng)用背景,化枯燥為有趣,激發(fā)學(xué)習(xí)數(shù)學(xué)的興趣。數(shù)學(xué)實(shí)驗(yàn)是一種有效的科研方法:講一堆數(shù)據(jù)可視化,或者選擇有代表性的特定實(shí)例進(jìn)行觀察,從而發(fā)現(xiàn)和歸納有意義的規(guī)律并進(jìn)行理論論證。做為初學(xué)者,應(yīng)該有更多機(jī)會(huì)自己動(dòng)手

36、用matlab解決問(wèn)題,從簡(jiǎn)單到復(fù)雜,讓學(xué)生實(shí)際掌握matlab的使用。因此建議讓學(xué)生能有更多的機(jī)會(huì)到機(jī)房上機(jī),學(xué)生在實(shí)際操作中遇到問(wèn)題也能及時(shí)得到老師指點(diǎn)。也許這樣能讓學(xué)生更直觀地掌握matlab。另一方面,希望課程中的內(nèi)容能更多的與我院相關(guān)專業(yè)的知識(shí)聯(lián)系,這樣能更好的體現(xiàn)學(xué)以致用。 5.收獲、體會(huì)和自我評(píng)分通過(guò)這學(xué)期的學(xué)習(xí),我對(duì)MATLAB這門高級(jí)計(jì)算機(jī)語(yǔ)言有了初步的了解,:其具有功能強(qiáng)、效率高、簡(jiǎn)單易行等特點(diǎn)。可靠的數(shù)值計(jì)算和符號(hào)計(jì)算功能、強(qiáng)大的繪圖功能、簡(jiǎn)單易學(xué)的語(yǔ)言體系以及為數(shù)眾多的應(yīng)用工具箱是其區(qū)別于其它科技應(yīng)用軟件的顯著標(biāo)志。還具備很強(qiáng)的開放性,除內(nèi)部函數(shù)外,所有MATLAB基本

37、文件和各工具箱文件都是可讀可改的源文件,用戶可以通過(guò)對(duì)源文件的修改或加入自己編寫的文件去構(gòu)成新的專用工具箱。MATLAB具有程序控制結(jié)構(gòu)、函數(shù)調(diào)用、數(shù)據(jù)結(jié)構(gòu)、輸入輸出、面向?qū)ο蟮瘸绦蛘Z(yǔ)言特征,因此與傳統(tǒng)編程語(yǔ)言一樣,可以進(jìn)行程序設(shè)計(jì),而且簡(jiǎn)單易學(xué),編程效率高。MATLAB以矩陣最為數(shù)據(jù)操作的基本單位,使得矩陣運(yùn)算變得簡(jiǎn)捷、方便、高效,其還提供了十分豐富的數(shù)值計(jì)算函數(shù)、符號(hào)計(jì)算函數(shù)。用其繪圖十分方便,還可對(duì)圖形進(jìn)行修飾和控制。 在綜合實(shí)驗(yàn)報(bào)告的寫作過(guò)程中,我翻閱了數(shù)學(xué)專業(yè)的課本,還有物理課本,同時(shí)也查閱了網(wǎng)上的資料,最終確定了實(shí)驗(yàn)主題。主要覺(jué)得數(shù)學(xué)方面的東西寫起來(lái)內(nèi)容較少,所有選擇了物理方面內(nèi)容

38、雖少但應(yīng)用很廣的拋體運(yùn)動(dòng)。感觸比較大的是,這個(gè)實(shí)驗(yàn)不再是一個(gè)簡(jiǎn)單的物理分析,而是從數(shù)學(xué)的角度定量地求解相關(guān)數(shù)據(jù)。Matlab可靠的數(shù)值計(jì)算和符號(hào)計(jì)算功能、強(qiáng)大的繪圖功能可以說(shuō)表現(xiàn)的淋漓盡致。不使用這種工具,很多問(wèn)題或許只能有定性的結(jié)論甚至是不能有結(jié)論。在Matlab中,物理不再只是物理,數(shù)學(xué)也不只是數(shù)學(xué),多學(xué)科只是結(jié)合才能解決一個(gè)實(shí)際問(wèn)題。當(dāng)然,我做為一個(gè)初學(xué)者,Matlab更多的應(yīng)用還沒(méi)掌握,更復(fù)雜的程序還不能使用。該實(shí)驗(yàn)參考了一些資料,借鑒的一些分析思想和編程格式,絕大部分公式是自己使用編譯器編寫,少部分復(fù)雜公式是套用的。所有程序均經(jīng)過(guò)調(diào)試,能正確運(yùn)行,有幾行程序也是套用。不可否認(rèn),離開這

39、些參考資料,我不能獨(dú)立完成這個(gè)實(shí)驗(yàn),畢竟我沒(méi)有合作伙伴。所以,自我評(píng)定為85分。附錄資料:不需要的可以自行刪除Pascal/C/C+語(yǔ)句對(duì)比(補(bǔ)充版)一、Hello world 先看三種語(yǔ)言的樣例:Pascalbegin writeln(Hello world);end.C#include int main() printf(Hello world!n); return 0;C+#include using namespace std;int main()cout Hello world! endl; return 0; 從這三個(gè)程序可以看到一些最基本的東西。在Pascal中的begin和en

40、d,在C/C+里就是;Pascal主程序沒(méi)有返回值,而C/C+返回0(好像在C中可以為NULL)。在C/C+中,main函數(shù)以前的是頭文件,樣例中C為stdio.h,C+除了iostream還有第二行的using namespace std,這個(gè)是打開命名空間的,NOIP不會(huì)考這個(gè),可以不管,只要知道就行了。 此外說(shuō)明 注釋單行用/,段落的話Pascal為,C/C+為/* */。* 常用頭文件(模板)#include #include #include #include #include #include using namespace std;int main() system(“pause

41、”);return 0;二、數(shù)據(jù)類型及定義 這里只列出常用的類型。1、整型PascalC/C+范圍shortint-128 127integershort-32768 32767longintInt -2147483648 2147483647int64long long-9223372036854775808 9223372036854775807byte-0 255wordunsigned short0 65535longwordunsigned int0 4294967295qwordunsigned long long0 18446744073709551615 * 當(dāng)對(duì)long lo

42、ng 變量賦值時(shí),后要加LLLong long x=6327844632743269843LL* 如果位移 x2LL* Linux: printf(“%lldn”,x);* Windows: printf(“%I64dn”,x);2、實(shí)型PascalC/C+范圍realfloat2.9E-39 1.7E38single-1.5E-45 3.4E38doubledouble5.0E-324 1.7E3083、字符即字符串 字符在三種語(yǔ)言中都為char,C里沒(méi)有字符串,只有用字符數(shù)組來(lái)代替字符串,Pascal和C+均為string。Pascal中字符串長(zhǎng)度有限制,為255,C+則沒(méi)有。 字符串和字

43、符在Pascal中均用單引號(hào)注明,在C/C+中字符用單引號(hào),字符串用雙引號(hào)。4、布爾類型 Pascal 中為 boolean,C/C+ 為 bool。值均為True 或 False。C/C+中除0外bool都為真。5、定義 常量的定義均為 const,只是在C/C+中必須要注明常量的類型。在C/C+中還可以用宏來(lái)定義常量,此時(shí)不注明類型。PascalC/C+const a = 60; b = -a + 30; d = ;const int a = 60;const int b = - a + 30;const string d = “”;define MAXN 501 /這個(gè)是宏 * 宏定義其

44、實(shí)就是直接在程序相應(yīng)的位置替換: #define randomize srand(unsigned time(NULL) #define wait for(int w=0;w a;cout a;cout a endl;特別說(shuō)明C+中cin一個(gè)字符的話會(huì)自動(dòng)跳過(guò)空格和回車,Pascal和C則會(huì)讀入空格和回車。在Pascal中writeln(a:n:m) 表示在n個(gè)字符寬的輸出域上輸出a保留m位小數(shù)。例如:pascal write(a:6) c/c+ printf(“%6d”,a) Pascal write(a:6:2) c/c+ printf(“%6.2f”,a) C+ 如果用 cout ? (

45、繁瑣!) 需要加頭文件 #inlude cout setprecision(2)a; /作用永久 cout setw(6)a; /作用臨時(shí) 以下三個(gè)進(jìn)制設(shè)定都是永久作用: cout deca; 相當(dāng) printf(“%d”,a); /十進(jìn)制 cout hexa; 相當(dāng) printf(“%X”,a); /十六進(jìn)制 cout octa; 相當(dāng) printf(“%o”,a); /八進(jìn)制例如:cout 12hex12oct1212endl;輸出:12c1414 C 的輸入輸出里面的字符串中%表示變量,%后面的字目表示變量類型。下面是類型表:%hd1個(gè)short型整數(shù)%d1個(gè)int型整數(shù)%u1個(gè)unsi

46、gned int型整數(shù)%I64d1個(gè)long long型整數(shù)%c1個(gè)字符%s1個(gè)C字符串%f1個(gè)float型實(shí)數(shù)%lf1個(gè)double型實(shí)數(shù)%10.4f輸出1個(gè)總寬度為10,保留4位小數(shù)的實(shí)數(shù) 文件輸入輸出:Pascalassign(input, test.in);assign(output, test.out);reset(input);rewrite(output);read(a, b);writeln(a, b);close(input);close(output);CFILE *fin = fopen(“test.in”, “r”);FILE *fout = fopen(“test.o

47、ut”, “w”);fscanf(fin, “%d%d”, &a, &b);fprintf(fout, “%d%d”, a, b);fclose(fin); fclose(fout);C+#include using namespace std;ifstream fin(“test.in”);ofstream fout(“test.out”);fin a b;fout a b endl;fin.close(); fout.close();因?yàn)镃+的讀入較慢,個(gè)人建議C+的話使用C的輸入方式。當(dāng)然也有人用C的讀入,C+的輸出的,這種方式我們稱之為城鄉(xiāng)結(jié)合。*中國(guó)計(jì)算機(jī)學(xué)會(huì)競(jìng)賽須知發(fā)布的C讀寫程序

48、:(C+ 也能用,cin,cout,scanf,printf 可混用)#include int main() int a,b; freopen(“sum.in”,”r”,stdin);freopen(“sum.out”,”w”,stdout); scanf(“%d%d”,&a,&b); printf(“%dn”,a+b); return 0; 或者:freopen(“sum.in”,”r”,stdin);freopen(“sum.out”,”w”,stdout);ios:sync_with_stdio(false); 取消同步,cin,cout的速度就不慢了! cinab;couta+bend

49、l; return 0;以下擴(kuò)充c/c+混用是可行的:#include #include using namespace std;int main() int a,b,c,d; freopen(sum.in,r,stdin); freopen(sum.out,w,stdout); scanf(%d%d,&a,&b); cincd; printf(%dn,a+b); couta+b+c+dsn).Cwhile(scanf(%s%d,s,&n)!=EOF).四、賦值語(yǔ)句及運(yùn)算符號(hào) 一一對(duì)應(yīng)的關(guān)系PascalC/C+賦值運(yùn)算賦值:=基本運(yùn)算加+減-乘*除(實(shí)數(shù))/ (double)除法取整div(i

50、nt) / (int)取余mod%比較等于=不等于!=大于大于等于=小于小于等于=邏輯且and&或or|非not!位運(yùn)算左移(*2)shl且and&或or|非not異或xor其他增一inc(x)x+減一dec(x)x- 在C/C+中對(duì)某個(gè)變量自身進(jìn)行運(yùn)算可以簡(jiǎn)寫為 變量名 運(yùn)算符號(hào)= 改變量 如 x += 8 就表示 x = x + 8, 即 inc(x, 8)。 在 C/C+里還存在一種三目運(yùn)算 變量名 = 條件 ? 值A(chǔ) : 值B 如 x = x 0 ? x : -x; /表示若x 0 則取 x, 否則取 x, 同 if x 0 then x := x else x := -x;五、條件語(yǔ)

51、句1、if C/C+中if 語(yǔ)句的條件必須要用括號(hào)括起來(lái),后面不使用then。PascalC/C+if a b then flag := true else flag := false;if (a b) flag = true;else flag = false;2、多種分支 C/C+中為switch,Pascal為case:PascalC/C+case x of 1: inc(x); 2: dec(x); else x := x * x;end;switch (x) case 1: x +; break; case 2: x -; break; default: x *= x; 切記C/C+

52、中一定要寫break,后果你可以去掉break,運(yùn)行看看就知道了。六、循環(huán)語(yǔ)句1、forPascalC/C+for 變量名 := 初始值 to(downto) 終止值 dofor (變量名=初始值;條件;改變方式)for i := 5 to 10 do dec(a);/終止值大于初始值用 tofor i := 5 downto 1 do dec(a);/終止值小于于初始值用 downtofor (i = 5; i = 1; i-) a-;/*只要i 滿足條件就會(huì)一直循環(huán)。C/C+中i是實(shí)數(shù)、指針都可以*/C/C+中for的特殊用法:/變量為實(shí)數(shù)for (double i = 1; i 符號(hào)為間

53、接引用,后面會(huì)提到。for (type1 *p = head - next; p; p = p - next) printf(“%d”, p - k);2、whilePascalC/C+while 條件 dowhile (條件)while i 0 do dec(i);while (i != 0) i-;/也可寫作 while (i) i-;/在C/C+中非0即為真。3、repeat-until & do-whilePascalC/C+repeat 語(yǔ)句 until 結(jié)束條件;do while (運(yùn)行條件)repeat int(i) until i 100;do i+; while (i = 1

54、00);七、數(shù)組 Pascal中數(shù)組的下標(biāo)可以隨意定義,而C/C+下標(biāo)始終為從0開始到(數(shù)組大小1)。PascalC/C+定義a : array 1.100 of integer;b :array 1.10,1.10 of int64;int a100;int b1010;含義a 為大小為100的integer數(shù)組,合法下標(biāo)為1到100b 為大小為10*10的int64數(shù)組,合法下標(biāo)為1,1到10,10a 為大小為100的int數(shù)組,合法下標(biāo)為0到99b 為大小為10*10的int數(shù)組,合法下標(biāo)為0,0到9,9;使用inc(a21);b2,2:=b1,1+b1,2+b2,1;a21+;b11=

55、b01+b00+b10; 數(shù)組清零PascalC/C+Fillchar(a, sizeof(a), 0);memset(a, 0, sizeof(a);/頭文件包含 string.h*如果要填最大: memset(a,127,sizeof(a) (但達(dá)不到 INT_MAX) 如果要填最小: memset(a,128,sizeof(a) (但達(dá)不到 INT_MIN) 如果填0: memset(a,0,sizeof(a) 如果填-1: memset(a,-1,sizeof(a)八、字符串 C風(fēng)格的字符串就是字符數(shù)組。 C+和Pascal的字符串使用基本相同,只是C+中字符串下標(biāo)以0開始,Pasca

56、l以1開始。字符串處理很多這里不一一列舉,只寫最常用的幾個(gè)。PascalC (包含)定義用:char sC+(包含)定義用:string s輸入輸出Readln(s);Writeln(s);Scanf(“%s”,s);Printf(“%sn”,s);注:不能輸入輸出c+的字符串Cins;Couts = s 的區(qū)別: getline(cin,s)cins一次性整行讀入,直至行末尾。只讀入一個(gè)“單詞”,遇空格和行末停止。例如輸入;How are you?s=” How are you?”讀入整串含空格例如輸入;How are you?s=”How”如果三個(gè)都讀:cins1s2s3*C+ 數(shù)字與數(shù)值

57、之間的轉(zhuǎn)換:#include #include #include /必須加入using namespace std;int main() string text = 152; int number; stringstream ss;ss number; /string - int coutnumber+100endl; ss string string str = ss.str(); return 0;九、過(guò)程和函數(shù)1、過(guò)程 在C/C+中沒(méi)有過(guò)程,但可以把返回值為“空”的函數(shù)理解為過(guò)程。PascalC/C+無(wú)參過(guò)程procedure 過(guò)程名;說(shuō)明部分begin 語(yǔ)句部分 end;/說(shuō)明部分、b

58、egin、end語(yǔ)句部分統(tǒng)稱為過(guò)程體void 函數(shù)名(); 主體部分; return ;帶參過(guò)程procedure 過(guò)程名(形參表)過(guò)程體void 函數(shù)名(形參表)過(guò)程體 值傳和址傳:當(dāng)一個(gè)參數(shù)是值傳時(shí),形參在子過(guò)程中相當(dāng)于一個(gè)局部變量,對(duì)它的改變不影響實(shí)在的參數(shù)值。址傳則會(huì)影響。下例中a為值傳,b為址傳。初始a = 5,b = 5,運(yùn)行后a = 5,b = 10;PascalC/C+var a, b:integer;procedure doit(a:integer; var b:integer);begin b := a + b; a := a + b;end;begina := 5;b :

59、= 5;doit(a, b);writeln(a, , b);end.void doit(int a, int &b) HYPERLINK a a認(rèn)為值參,b認(rèn)為變量傳參 b += a; a += b; return ;int main()int a = 5, b = 5;doit(a, b);cout a b;return 0;* 用若干地址傳參可以給調(diào)用者傳回若干值 Void tryit(int &x,int &y,int &z) 調(diào)用時(shí): tryit(a,b,c) ,可以傳回 a,b,c的值。* 用數(shù)組名(也是地址)傳參可以傳回整組的數(shù)據(jù) Void tryit( int a) 調(diào)用時(shí): tryit(x),可以傳回整個(gè)數(shù)組。例如:void tryit(int a) for(int i=0;i=10;i+) ai=i*2; return; int main() int x10; tryit(x); for(int i=0;i=10;i+) coutxiendl; system(pause); return 0;*用指向函數(shù)的指針作為參數(shù),可以執(zhí)行指定的函數(shù)。(略)STL 的兩個(gè)應(yīng)用:* C+ 快排函數(shù)#include Bool co

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論