第一篇:三體問(wèn)題的仿真與實(shí)現(xiàn)
前 言
1.1 論文的背景
在太陽(yáng)系內(nèi)的天體都可以近似看做球形,并且與他們之間的距離相比,他們的的大小就可以忽略不計(jì),因而他們能被看做質(zhì)點(diǎn)。因此,可以用現(xiàn)代動(dòng)力天文學(xué)的基礎(chǔ)理論來(lái)研究這個(gè)問(wèn)題。這部分的天體力學(xué)以牛頓的萬(wàn)有引力理論開(kāi)始。從1687年的《數(shù)學(xué)原理》出版之時(shí)開(kāi)始,證實(shí)牛頓的理論是否能夠獨(dú)立的提供一個(gè)完整的關(guān)于天體如何在太空中運(yùn)動(dòng)的認(rèn)識(shí)是非常重要的。沿著這個(gè)思路進(jìn)行研究,我們需要根據(jù)牛頓的萬(wàn)有引力定律來(lái)確定彼此吸引的n體之間的相對(duì)運(yùn)動(dòng)。
牛頓曾經(jīng)用幾何學(xué)原理解決了只存在相互引力作用的兩個(gè)球的運(yùn)動(dòng)這一兩體問(wèn)題。在1710年,Johann Bernoulli證明,在兩體問(wèn)題中,一個(gè)粒子相對(duì)于另外一個(gè)粒子的運(yùn)動(dòng)可以被描述為一個(gè)圓錐曲線。在1734年,Daniel Bernoulli因?yàn)樗P(guān)于分析處理兩體問(wèn)題的研究獲得了法國(guó)科學(xué)院獎(jiǎng)。在1744年,這個(gè)問(wèn)題被Euler完全的解決了。同時(shí)對(duì)多維問(wèn)題的研究也已經(jīng)在進(jìn)行中。在需要關(guān)于月球運(yùn)動(dòng)知識(shí)的驅(qū)動(dòng)下,研究人員研究了太陽(yáng),地球和月亮構(gòu)成的三體系統(tǒng),并且月球理論很快就成為了早期研究的問(wèn)題。
在經(jīng)典力學(xué),量子力學(xué)和天文學(xué)中,三體問(wèn)題是一個(gè)出名的,還沒(méi)有解決的問(wèn)題,它被Whittaker描述為在所有動(dòng)力學(xué)問(wèn)題中最出名的問(wèn)題,Hilbert認(rèn)為它是一個(gè)完美數(shù)學(xué)問(wèn)題的標(biāo)準(zhǔn)。天體物理中的三體問(wèn)題可以簡(jiǎn)單的被描述為:三個(gè)天體在他們之間的相互之間的萬(wàn)有引力作用下,給出各個(gè)天體的初始條件,包括三個(gè)天體的質(zhì)量、初始位置和初始速度,確定它們的后續(xù)運(yùn)動(dòng),包括位置和速度隨時(shí)間的變化。
像許多數(shù)學(xué)問(wèn)題一樣,簡(jiǎn)單的問(wèn)題聲明后面往往覆蓋了問(wèn)題解決方法的復(fù)雜性。雖然一體和兩體的問(wèn)題能夠以封閉的形式通過(guò)初等函數(shù)方式來(lái)解決,但是三體問(wèn)題是一個(gè)復(fù)雜的線性問(wèn)題,沒(méi)有相似的解決方法存在。探究三體問(wèn)題的方式大抵能夠分為三類(lèi):第一類(lèi)是分析方法,其基本原理是把天體的坐標(biāo)和速度展開(kāi)為時(shí)間或其它小參數(shù)的級(jí)數(shù)形式的近似解析表達(dá)式,討論天體的坐標(biāo)和軌道要素隨時(shí)間的變化規(guī)律;第二類(lèi)是定性方法,選用微分方程的定性理論來(lái)研究很長(zhǎng)一段時(shí)間內(nèi)三體運(yùn)動(dòng)的宏觀運(yùn)動(dòng)規(guī)律和全局性質(zhì);第三類(lèi)是數(shù)值方法,這是直接依據(jù)微分方程的計(jì)算方式得出天體在特定時(shí)刻的詳細(xì)位置和速度。這三類(lèi)方法各有利弊。
因?yàn)榍蠼馊w問(wèn)題的困難在于它的不確定性和不可預(yù)測(cè)性,可以考慮計(jì)算機(jī)在迭代計(jì)算中的優(yōu)勢(shì),選擇第三類(lèi)方法,基于受力分析和經(jīng)典力學(xué),求其數(shù)值解。1.2 論文相關(guān)的國(guó)內(nèi)外動(dòng)態(tài)及研究?jī)r(jià)值
從三體問(wèn)題被提出的300年間,人們只發(fā)現(xiàn)3族周期性特解。在十八和十九世紀(jì),幾乎所有著名的數(shù)學(xué)家們都曾試圖解決這個(gè)問(wèn)題,但是問(wèn)題的進(jìn)展不大。截止到目前為止,三體問(wèn)題特解的族數(shù)被擴(kuò)充到了16族。與此同時(shí),在失敗的嘗試中,微分方程的理論不斷地發(fā)展成為數(shù)學(xué)的一門(mén)更成熟的分支。
作為一個(gè)能被簡(jiǎn)單描述的問(wèn)題,除了其內(nèi)在的吸引力,三體問(wèn)題與太陽(yáng)系統(tǒng)穩(wěn)定性有著密切的聯(lián)系,這使得對(duì)三體系統(tǒng)的研究成為潛在的解決太陽(yáng)系統(tǒng)穩(wěn)定性問(wèn)題的解決方案。多年來(lái),人們對(duì)這個(gè)問(wèn)題進(jìn)行了大量的研究,從1750年到20世紀(jì)初,關(guān)于這個(gè)問(wèn)題有800多篇援引了許多杰出的數(shù)學(xué)家和天文學(xué)家成果的論文發(fā)表。因此,除了解決一個(gè)重要的難題,更重要的是在解決問(wèn)題的過(guò)程當(dāng)中產(chǎn)生了好幾種嶄新的數(shù)學(xué)思想。這些數(shù)學(xué)理論的進(jìn)步已經(jīng)深入到不同的領(lǐng)域,包括近代動(dòng)力學(xué)問(wèn)題的理論。三體問(wèn)題的研究加深了人們對(duì)天體運(yùn)動(dòng)的認(rèn)識(shí),激勵(lì)了天體力學(xué)和數(shù)學(xué)物理的進(jìn)一步成長(zhǎng),尤其是對(duì)人們研究太空火箭軌道和雙星演變很有幫助。1.3 本文的研究?jī)?nèi)容
本文決定通過(guò)計(jì)算機(jī)的數(shù)值運(yùn)算,利用經(jīng)典力學(xué)中的牛頓三大定律和萬(wàn)有引力定律迭代求解天體運(yùn)動(dòng)中的三體問(wèn)題。
同時(shí),本文利用MATLAB的GUI功能,設(shè)計(jì)出簡(jiǎn)潔友好的界面,并且通過(guò)動(dòng)畫(huà)的方法將天體的位置和速度在空間直角坐標(biāo)系上實(shí)時(shí)的表示出來(lái),作出了天體物理實(shí)驗(yàn)用計(jì)算機(jī)模擬來(lái)進(jìn)行的嘗試。1.4 本文的創(chuàng)新之處
首先:通過(guò)理論與實(shí)踐相結(jié)合的方式生動(dòng)的展示了原本靜態(tài)的文字概念。其次:通過(guò)MATLAB的GUI界面,可以讓用戶(hù)在不必了解程序內(nèi)部實(shí)現(xiàn)的情況下,給出三個(gè)天體的初始條件,包括三個(gè)天體的質(zhì)量、初始位置和初始速度,就可以知道隨著時(shí)間的推移其宏觀的位置和速度以及運(yùn)動(dòng)的宏觀規(guī)律和全局性質(zhì)。同時(shí),還可以在不同的觀察角度了解它們的運(yùn)動(dòng)過(guò)程。模型假設(shè)
1)忽略相對(duì)論效應(yīng)的影響;
2)不考慮其它天體對(duì)系統(tǒng)的作用,所處宇宙空間是各向同性的; 3)忽略宇宙空間粒子、潮汐力的影響; 4)假設(shè)運(yùn)動(dòng)過(guò)程中沒(méi)有能量損失;
5)將天體視為質(zhì)點(diǎn),不考慮它們?cè)谶\(yùn)動(dòng)的過(guò)程中彼此之間的相互碰撞; 模型建立
3.1 具體時(shí)刻的狀態(tài)
因?yàn)槿齻€(gè)天體的位置和速度是隨時(shí)間變化的,現(xiàn)在取很短的時(shí)間間隔t,假定這段時(shí)間間隔內(nèi)系統(tǒng)參數(shù)沒(méi)有變化,則可以考慮從系統(tǒng)每一時(shí)刻的狀態(tài)計(jì)算后下一時(shí)刻的狀態(tài)。在每一時(shí)刻,每一個(gè)天體都有各自的位置與速度,三個(gè)天體總共有六個(gè)未知量,每?jī)蓚€(gè)天體之間應(yīng)用萬(wàn)有引力定律和牛頓第二定律可以列出兩個(gè)方程,總共六個(gè)方程,這六個(gè)方程組成的方程組足可以求解這六個(gè)未知量。如果分割的時(shí)間間隔無(wú)限小,則可以求出精確解,但是在現(xiàn)實(shí)中這是沒(méi)法完成的。因此,我們可以將時(shí)間分成許多小部分,用計(jì)算機(jī)迭代求解,得到隨時(shí)間變化的系統(tǒng)的各個(gè)參量和系統(tǒng)的末狀態(tài)。3.2 受力分析
如圖3-1所示,每個(gè)天體都受到其他兩個(gè)天體的萬(wàn)有引力作用。為方便計(jì)算,將天體1對(duì)天體2的作用,天體2對(duì)天體3的作用,天體3對(duì)天體1的作用分別按直角坐標(biāo)系分解為f12x,f12y,f12z,f23x,f23y,f23z,f31x,f31y,f31z。由于f12=f21,f23=f32,f31=f13,可以用式子右邊等效表示左邊。
在萬(wàn)有引力f12、f23、f31作用下,天體
1、天體
2、天體3的加速度分別為。
圖3-1 三體問(wèn)題受力分析
3.3 運(yùn)動(dòng)規(guī)律及迭代方程
一、萬(wàn)有引力定律
二、牛頓第二定律
三、速度迭代
四、位置迭代
求解時(shí)還須將加速度a,速度迭代方程,位置迭代方程按直角坐標(biāo)系分解如附錄1。
用計(jì)算機(jī)編程求解,即可得任意時(shí)刻三個(gè)天體的位置和速度。模型求解與系統(tǒng)仿真
4.1 編碼與運(yùn)行
(1)系統(tǒng)所需的軟、硬件
系統(tǒng)所用的硬件是普通的PC機(jī)。本程序的編碼和界面設(shè)計(jì)部分用MATLAB進(jìn)行開(kāi)發(fā)。
(2)三體問(wèn)題的編碼
1o三個(gè)天體各個(gè)參數(shù)的初始化部分。
函數(shù)ThreeBodyProblem_OpeningFcn(hObject, eventdata, handles, varargin)是該程序的啟動(dòng)函數(shù)。初始化各個(gè)天體參數(shù)的部分已在程序代碼中標(biāo)注: function ThreeBodyProblem_OpeningFcn(hObject, eventdata, handles, varargin)ThreeBodyProblem的創(chuàng)建函數(shù),此函數(shù)沒(méi)有返回值,詳情請(qǐng)參見(jiàn)OutputFcn hObject
圖形句柄
eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息 varargin
ThreeBodyProblem 的啟動(dòng)參數(shù)(詳情請(qǐng)參見(jiàn) VARARGIN)
初始化第一個(gè)天體的質(zhì)量,位置和速度
handles.FirstBodyMData = 0;handles.FirstBodyXData = 0;handles.FirstBodyYData = 0;handles.FirstBodyZData = 0;handles.FirstBodyUData = 0;handles.FirstBodyVData = 0;handles.FirstBodyWData = 0;
初始化第二個(gè)天體的質(zhì)量,位置和速度
handles.SecondBodyMData = 0;handles.SecondBodyXData = 0;handles.SecondBodyYData = 0;handles.SecondBodyZData = 0;handles.SecondBodyUData = 0;handles.SecondBodyVData = 0;handles.SecondBodyWData = 0;
初始化第三個(gè)天體的質(zhì)量,位置和速度
handles.ThirdBodyMData = 0;handles.ThirdBodyXData = 0;handles.ThirdBodyYData = 0;handles.ThirdBodyZData = 0;handles.ThirdBodyUData = 0;handles.ThirdBodyVData = 0;handles.ThirdBodyWData = 0;
handles.output = hObject;
此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject, handles);
默認(rèn)值按鈕的回調(diào)函數(shù),用于設(shè)置三個(gè)天體的默認(rèn)參數(shù)值,并且將設(shè)置的默認(rèn)參數(shù)值顯示到圖形界面上:
function default_Callback(hObject, eventdata, handles)hObject
default控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
在圖形界面的第一個(gè)天體的文本輸入框內(nèi)顯示默認(rèn)的輸入值,此輸入值為太陽(yáng)的參數(shù)。
set(handles.FirstBodyM,'String',19.89);set(handles.FirstBodyX,'String',0);set(handles.FirstBodyY,'String',0);set(handles.FirstBodyZ,'String',0);set(handles.FirstBodyU,'String',0);set(handles.FirstBodyV,'String',0);set(handles.FirstBodyW,'String',0);將太陽(yáng)的參數(shù)保存為“GUI數(shù)據(jù)”形式,以便共享 handles.FirstBodyMData = 19.89*10^29;handles.FirstBodyXData = 0;handles.FirstBodyYData = 0;handles.FirstBodyZData = 0;handles.FirstBodyUData = 0;handles.FirstBodyVData = 0;handles.FirstBodyWData = 0;在圖形界面的第二個(gè)天體的文本輸入框內(nèi)顯示默認(rèn)的輸入值,此輸入值為地球的參數(shù)。
set(handles.SecondBodyM,'String',59.742);set(handles.SecondBodyX,'String',14.960);set(handles.SecondBodyY,'String',0);set(handles.SecondBodyZ,'String',0);set(handles.SecondBodyU,'String',0);set(handles.SecondBodyV,'String',29.78);set(handles.SecondBodyW,'String',0);將地球的參數(shù)保存為“GUI數(shù)據(jù)”形式,以便共享 handles.SecondBodyMData = 59.742*10^23;handles.SecondBodyXData = 14.960*10^10;handles.SecondBodyYData = 0;handles.SecondBodyZData = 0;handles.SecondBodyUData = 0;handles.SecondBodyVData = 29.78*10^3;handles.SecondBodyWData = 0;在圖形界面的第三個(gè)天體的文本輸入框內(nèi)顯示默認(rèn)的輸入值,此輸入值為月球的參數(shù)。
set(handles.ThirdBodyM,'String',0.7349);set(handles.ThirdBodyX,'String',14.9984);set(handles.ThirdBodyY,'String',0);set(handles.ThirdBodyZ,'String',0);set(handles.ThirdBodyU,'String',0);set(handles.ThirdBodyV,'String',33.7953);set(handles.ThirdBodyW,'String',0);
將月球的參數(shù)保存為“GUI數(shù)據(jù)”形式,以便共享 handles.ThirdBodyMData = 0.7349*10^23;handles.ThirdBodyXData = 14.9984*10^10;handles.ThirdBodyYData = 0;handles.ThirdBodyZData = 0;handles.ThirdBodyUData = 0;handles.ThirdBodyVData = 33.7953*10^3;handles.ThirdBodyWData = 0;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
2o從文本輸入框中按順序輸入三個(gè)天體的各個(gè)參數(shù)。
第一個(gè)天體的各個(gè)文本輸入框的回調(diào)函數(shù),用于獲得文本輸入框內(nèi)輸入的值,代碼的具體解釋已在程序中給出:
function FirstBodyX_Callback(hObject, eventdata, handles)hObject
FirstBodyX 控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.FirstBodyXData=str2double(tempData)*10^10;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function FirstBodyX_CreateFcn(hObject, eventdata, handles)hObject
FirstBodyX 控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function FirstBodyY_Callback(hObject, eventdata, handles)hObject
FirstBodyY控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)
eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.FirstBodyYData=str2double(tempData)*10^10;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function FirstBodyY_CreateFcn(hObject, eventdata, handles)hObject
FirstBodyY 控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function FirstBodyZ_Callback(hObject, eventdata, handles)hObject
FirstBodyZ控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.FirstBodyZData=str2double(tempData)*10^10;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function FirstBodyZ_CreateFcn(hObject, eventdata, handles)hObject
FirstBodyZ 控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function FirstBodyU_Callback(hObject, eventdata, handles)hObject
控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)FirstBodyU eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.FirstBodyUData=str2double(tempData)*10^3;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function FirstBodyU_CreateFcn(hObject, eventdata, handles)設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function FirstBodyX_CreateFcn(hObject, eventdata, handles)hObject
FirstBodyU 控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function FirstBodyV_Callback(hObject, eventdata, handles)hObject
FirstBodyV控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.FirstBodyVData=str2double(tempData)*10^3;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function FirstBodyV_CreateFcn(hObject, eventdata, handles)hObject
FirstBodyV 控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function FirstBodyW_Callback(hObject, eventdata, handles)hObject
FirstBodyW控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.FirstBodyWData=str2double(tempData)*10^3;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function FirstBodyW_CreateFcn(hObject, eventdata, handles)hObject
FirstBodyW 控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function FirstBodyM_Callback(hObject, eventdata, handles)hObject
FirstBodyM控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)
eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.FirstBodyMData=str2double(tempData)*10^29;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function FirstBodyM_CreateFcn(hObject, eventdata, handles)hObject
FirstBodyM 控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
第二個(gè)天體文本輸入框的回調(diào)函數(shù),用于獲得文本輸入框內(nèi)輸入的值,代碼的具體解釋已在程序中給出:
function SecondBodyX_Callback(hObject, eventdata, handles)hObject
SecondBodyX控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.SecondBodyXData=str2double(tempData)*10^10;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function SecondBodyX_CreateFcn(hObject, eventdata, handles)hObject
SecondBodyX控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC和COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function SecondBodyY_Callback(hObject, eventdata, handles)hObject
SecondBodyY控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.SecondBodyYData=str2double(tempData)*10^10;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function SecondBodyY_CreateFcn(hObject, eventdata, handles)hObject
SecondBodyY控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function SecondBodyU_Callback(hObject, eventdata, handles)hObject
SecondBodyU控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.SecondBodyUData=str2double(tempData)*10^3;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function SecondBodyU_CreateFcn(hObject, eventdata, handles)hObject
SecondBodyU控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function SecondBodyV_Callback(hObject, eventdata, handles)hObject
SecondBodyV控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.SecondBodyVData=str2double(tempData)*10^3;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function SecondBodyV_CreateFcn(hObject, eventdata, handles)hObject
SecondBodyV控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function SecondBodyZ_Callback(hObject, eventdata, handles)hObject
SecondBodyZ 控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.SecondBodyZData=str2double(tempData)*10^10;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function SecondBodyZ_CreateFcn(hObject, eventdata, handles)hObject
SecondBodyZ控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建 提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function SecondBodyW_Callback(hObject, eventdata, handles)hObject
SecondBodyW控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.SecondBodyWData=str2double(tempData)*10^3;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function SecondBodyW_CreateFcn(hObject, eventdata, handles)hObject
SecondBodyW控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function SecondBodyM_Callback(hObject, eventdata, handles)hObject
SecondBodyM控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.SecondBodyMData=str2double(tempData)*10^23;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function SecondBodyM_CreateFcn(hObject, eventdata, handles)hObject
SecondBodyM控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
第三個(gè)天體文本輸入框的回調(diào)函數(shù),用于獲得文本輸入框內(nèi)輸入的值,代碼的具體解釋已在程序中給出:
function ThirdBodyX_Callback(hObject, eventdata, handles)hObject
ThirdBodyX控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.ThirdBodyXData=str2double(tempData)*10^10;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function ThirdBodyX_CreateFcn(hObject, eventdata, handles)hObject
ThirdBodyX控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function ThirdBodyY_Callback(hObject, eventdata, handles)hObject
ThirdBodyY控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.ThirdBodyYData=str2double(tempData)*10^10;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function ThirdBodyY_CreateFcn(hObject, eventdata, handles)hObject
ThirdBodyY控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function ThirdBodyZ_Callback(hObject, eventdata, handles)hObject
ThirdBodyZ控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.ThirdBodyZData=str2double(tempData)*10^10;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function ThirdBodyZ_CreateFcn(hObject, eventdata, handles)hObject
ThirdBodyZ控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function ThirdBodyU_Callback(hObject, eventdata, handles)hObject
ThirdBodyU控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.ThirdBodyUData=str2double(tempData)*10^3;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function ThirdBodyU_CreateFcn(hObject, eventdata, handles)hObject
ThirdBodyU控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function ThirdBodyV_Callback(hObject, eventdata, handles)hObject
ThirdBodyV控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)
eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.ThirdBodyVData=str2double(tempData)*10^3;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function ThirdBodyV_CreateFcn(hObject, eventdata, handles)hObject
ThirdBodyV控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function ThirdBodyW_Callback(hObject, eventdata, handles)hObject
ThirdBodyW控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.ThirdBodyWData=str2double(tempData)*10^3;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function ThirdBodyW_CreateFcn(hObject, eventdata, handles)hObject
ThirdBodyW控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
function ThirdBodyM_Callback(hObject, eventdata, handles)hObject
ThirdBodyM控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符 tempData=get(hObject,'String');將字符轉(zhuǎn)換為雙精度數(shù)
handles.ThirdBodyMData=str2double(tempData)*10^23;此前指令更改了handles,必須靠guidata指令才能把更新了的handles加以保存,以供后續(xù)使用
guidata(hObject,handles);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function ThirdBodyM_CreateFcn(hObject, eventdata, handles)hObject
ThirdBodyM控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
3o開(kāi)始計(jì)算三個(gè)天體的實(shí)時(shí)位置和速度
使用三個(gè)天體的各個(gè)參數(shù)進(jìn)行迭代運(yùn)算,同時(shí)畫(huà)出三個(gè)天體的運(yùn)行動(dòng)畫(huà)。這里由于坐標(biāo)值的數(shù)量級(jí)是1010,x,y,z坐標(biāo)軸的范圍為-100~100,所以在畫(huà)圖的時(shí)候,計(jì)算出來(lái)的各個(gè)坐標(biāo)值都要除以1010。如果其中一個(gè)天體的質(zhì)量為0,那么程序?qū)⒆鰞审w問(wèn)題的運(yùn)算:
function OK_Callback(hObject, eventdata, handles)hObject
OK控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
清除坐標(biāo)系原有的內(nèi)容 cla 獲得程序使用者輸入的小球質(zhì)量、剛開(kāi)始小球的位置與速度,設(shè)置萬(wàn)有引力常量默認(rèn)值以及程序的運(yùn)動(dòng)時(shí)間 g = 6.63*10^-11;獲得輸入框中第一個(gè)天體的各個(gè)參數(shù)
m1 = handles.FirstBodyMData;x1 = handles.FirstBodyXData;y1 = handles.FirstBodyYData;z1 = handles.FirstBodyZData;u1 = handles.FirstBodyUData;v1 = handles.FirstBodyVData;w1 = handles.FirstBodyWData;獲得輸入框中第二個(gè)天體的各個(gè)參數(shù)
m2 = handles.SecondBodyMData;x2 = handles.SecondBodyXData;y2 = handles.SecondBodyYData;z2 = handles.SecondBodyZData;u2 = handles.SecondBodyUData;v2 = handles.SecondBodyVData;w2 = handles.SecondBodyWData;獲得輸入框中第三個(gè)天體的各個(gè)參數(shù)
m3 = handles.ThirdBodyMData;x3 = handles.ThirdBodyXData;y3 = handles.ThirdBodyYData;z3 = handles.ThirdBodyZData;u3 = handles.ThirdBodyUData;v3 = handles.ThirdBodyVData;w3 = handles.ThirdBodyWData;
控制迭代時(shí)間 time = 100000;
加網(wǎng)格線 grid on
坐標(biāo)軸顯示的空間范圍
axis([-100 100-100 100-100 100])
當(dāng)m1,m2,m3其中有一個(gè)為0時(shí),程序做兩體運(yùn)動(dòng)。否則,程序做三體運(yùn)動(dòng) if m3 == 0 && m1 ~= 0 && m2 ~=0 設(shè)置天體顏色、點(diǎn)型、大小等參數(shù),每次循環(huán)都重新設(shè)置整個(gè)畫(huà)面 h=line('Color',[1 0 0],'Marker','.','MarkerSize',50,'erasemode','normal');i=line('Color',[0 0 1],'Marker','.','MarkerSize',40,'erasemode','normal');
以0.1的時(shí)間步長(zhǎng)迭代,用k來(lái)控制迭代進(jìn)行的次數(shù) for k=0:0.1:time 設(shè)置步長(zhǎng) t=100000;萬(wàn)有引力定律
f12=g*m1*m2/(sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2))^3*[x1-x2,y1-y2,z1-z2];
以下為對(duì)x軸方向的計(jì)算 牛頓第二定律 ax1=-f12(1)/m1;ax2=f12(1)/m2;坐標(biāo)值迭代
x1=x1+u1*t+1/2*ax1*t^2;x2=x2+u2*t+1/2*ax2*t^2;速度值迭代 u1=u1+ax1*t;u2=u2+ax2*t;
以下為對(duì)y軸方向的計(jì)算 ay1=-f12(2)/m1;ay2=f12(2)/m2;
y1=y1+v1*t+1/2*ay1*t^2;y2=y2+v2*t+1/2*ay2*t^2;
v1=v1+ay1*t;v2=v2+ay2*t;
以下為對(duì)z軸方向的計(jì)算 az1=-f12(3)/m1;az2=f12(3)/m2;
z1=z1+w1*t+1/2*az1*t^2;z2=z2+w2*t+1/2*az2*t^2;
w1=w1+az1*t;w2=w2+az2*t;
重置兩個(gè)小球的位置
set(h,'xdata',x1/10^10,'ydata',y1/10^10,'zdata',z1/10^10);set(i,'xdata',x2/10^10,'ydata',y2/10^10,'zdata',z2/10^10);
刷新畫(huà)面 drawnow
控制速度 pause(0.01)end elseif m1 == 0 && m3 ~= 0 && m2 ~=0 設(shè)置天體顏色、點(diǎn)型、大小等參數(shù),每次循環(huán)都重新設(shè)置整個(gè)畫(huà)面 i=line('Color',[0 0 1],'Marker','.','MarkerSize',40,'erasemode','normal');l=line('Color',[0 1 0],'Marker','.','MarkerSize',40,'erasemode','normal');
以0.1的時(shí)間步長(zhǎng)迭代,用k來(lái)控制迭代進(jìn)行的次數(shù) for k=0:0.1:time 設(shè)置步長(zhǎng) t=100000;萬(wàn)有引力定律
f23=g*m2*m3/(sqrt((x2-x3)^2+(y2-y3)^2+(z2-z3)^2))^3*[x2-x3,y2-y3,z2-z3];
以下為對(duì)x軸方向的計(jì)算 牛頓第二定律 ax2=-f23(1)/m2;ax3=f23(1)/m3;坐標(biāo)值迭代
x2=x2+u2*t+1/2*ax2*t^2;x3=x3+u3*t+1/2*ax3*t^2;速度值迭代 u2=u2+ax2*t;u3=u3+ax3*t;
以下為對(duì)y軸方向的計(jì)算 ay2=-f23(2)/m2;ay3=f23(2)/m3;
y2=y2+v2*t+1/2*ay2*t^2;y3=y3+v3*t+1/2*ay3*t^2;
v2=v2+ay2*t;v3=v3+ay3*t;
以下為對(duì)z軸方向的計(jì)算 az2=-f23(3)/m2;az3=f23(3)/m3;
z2=z2+w2*t+1/2*az2*t^2;z3=z3+w3*t+1/2*az3*t^2;
w2=w2+az2*t;w3=w3+az3*t;
重置三個(gè)小球的位置
set(i,'xdata',x2/10^10,'ydata',y2/10^10,'zdata',z2/10^10);set(l,'xdata',x3/10^10,'ydata',y3/10^10,'zdata',z3/10^10);
刷新畫(huà)面 drawnow
控制速度 pause(0.01)end elseif m2 == 0 && m3 ~= 0 && m1 ~=0 設(shè)置天體顏色、點(diǎn)型、大小等參數(shù),每次循環(huán)都重新設(shè)置整個(gè)畫(huà)面 h=line('Color',[1 0 0],'Marker','.','MarkerSize',50,'erasemode','normal');l=line('Color',[0 1 0],'Marker','.','MarkerSize',40,'erasemode','normal');
以0.1的時(shí)間步長(zhǎng)迭代,用k來(lái)控制迭代進(jìn)行的次數(shù) for k=0:0.1:time 設(shè)置步長(zhǎng) t=100000;萬(wàn)有引力定律
f31=g*m3*m1/(sqrt((x3-x1)^2+(y3-y1)^2+(z3-z1)^2))^3*[x3-x1,y3-y1,z3-z1];
以下為對(duì)x軸方向的計(jì)算 牛頓第二定律 ax1=+f31(1)/m1;ax3=-f31(1)/m3;坐標(biāo)值迭代
x1=x1+u1*t+1/2*ax1*t^2;x3=x3+u3*t+1/2*ax3*t^2;速度值迭代 u1=u1+ax1*t;u3=u3+ax3*t;
以下為對(duì)y軸方向的計(jì)算 ay1=+f31(2)/m1;ay3=-f31(2)/m3;
y1=y1+v1*t+1/2*ay1*t^2;y3=y3+v3*t+1/2*ay3*t^2;
v1=v1+ay1*t;v3=v3+ay3*t;
以下為對(duì)z軸方向的計(jì)算 az1=+f31(3)/m1;az3=-f31(3)/m3;
z1=z1+w1*t+1/2*az1*t^2;z3=z3+w3*t+1/2*az3*t^2;
w1=w1+az1*t;w3=w3+az3*t;
重置三個(gè)小球的位置
set(h,'xdata',x1/10^10,'ydata',y1/10^10,'zdata',z1/10^10);set(l,'xdata',x3/10^10,'ydata',y3/10^10,'zdata',z3/10^10);
刷新畫(huà)面 drawnow
控制速度 pause(0.01)end else
設(shè)置天體顏色、點(diǎn)型、大小等參數(shù),每次循環(huán)都重新設(shè)置整個(gè)畫(huà)面 h=line('Color',[1 0 0],'Marker','.','MarkerSize',50,'erasemode','normal');i=line('Color',[0 0 1],'Marker','.','MarkerSize',40,'erasemode','normal');l=line('Color',[0 1 0],'Marker','.','MarkerSize',40,'erasemode','normal');
以0.1的時(shí)間步長(zhǎng)迭代,用k來(lái)控制迭代進(jìn)行的次數(shù) for k=0:0.1:time 設(shè)置步長(zhǎng) t=100000;萬(wàn)有引力定律
f12=g*m1*m2/(sqrt((x1-x2)^2+(y1-y2)^2+(z1-z2)^2))^3*[x1-x2,y1-y2,z1-z2];
f23=g*m2*m3/(sqrt((x2-x3)^2+(y2-y3)^2+(z2-z3)^2))^3*[x2-x3,y2-y3,z2-z3];
f31=g*m3*m1/(sqrt((x3-x1)^2+(y3-y1)^2+(z3-z1)^2))^3*[x3-x1,y3-y1,z3-z1];
以下為對(duì)x軸方向的計(jì)算 牛頓第二定律
ax1=(-f12(1)+f31(1))/m1;ax2=(f12(1)-f23(1))/m2;ax3=(f23(1)-f31(1))/m3;坐標(biāo)值迭代
x1=x1+u1*t+1/2*ax1*t^2;x2=x2+u2*t+1/2*ax2*t^2;x3=x3+u3*t+1/2*ax3*t^2;速度值迭代 u1=u1+ax1*t;u2=u2+ax2*t;u3=u3+ax3*t;
以下為對(duì)y軸方向的計(jì)算 ay1=(-f12(2)+f31(2))/m1;ay2=(f12(2)-f23(2))/m2;ay3=(f23(2)-f31(2))/m3;
y1=y1+v1*t+1/2*ay1*t^2;y2=y2+v2*t+1/2*ay2*t^2;y3=y3+v3*t+1/2*ay3*t^2;
v1=v1+ay1*t;v2=v2+ay2*t;v3=v3+ay3*t;
以下為對(duì)z軸方向的計(jì)算 az1=(-f12(3)+f31(3))/m1;az2=(f12(3)-f23(3))/m2;az3=(f23(3)-f31(3))/m3;
z1=z1+w1*t+1/2*az1*t^2;z2=z2+w2*t+1/2*az2*t^2;z3=z3+w3*t+1/2*az3*t^2;
w1=w1+az1*t;w2=w2+az2*t;w3=w3+az3*t;
重置三個(gè)小球的位置
set(h,'xdata',x1/10^10,'ydata',y1/10^10,'zdata',z1/10^10);set(i,'xdata',x2/10^10,'ydata',y2/10^10,'zdata',z2/10^10);set(l,'xdata',x3/10^10,'ydata',y3/10^10,'zdata',z3/10^10);
刷新畫(huà)面 drawnow
控制速度 pause(0.01)end end
4o關(guān)閉按鈕的回調(diào)函數(shù),用來(lái)結(jié)束程序,關(guān)閉圖形界面
function Close_Callback(hObject, eventdata, handles)hObject
Close控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
清除清空當(dāng)前畫(huà)圖窗口,以方便畫(huà)新的圖形 clf;關(guān)閉界面 close;
5o改變觀察者的視角,可以從各個(gè)角度觀察三體的運(yùn)行狀態(tài)
用于控制方向角的滑鍵的回調(diào)函數(shù),用于同步方位角文本輸入框中顯示的數(shù)值,同時(shí)改變觀察者的觀察方位角:
function azSlider_Callback(hObject, eventdata, handles)hObject
azSlider控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前滑鍵的值 az=get(hObject,'Value');將字符轉(zhuǎn)換為雙精度數(shù)
el=str2double(get(handles.elEditText,'String'));改變方位角輸入文本框的顯示數(shù)值,此數(shù)值為當(dāng)前滑鍵所代表的值 set(handles.azEditText,'String',num2str(az));改變觀察視角 view([az,el]);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function azSlider_CreateFcn(hObject, eventdata, handles)hObject
azSlider控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 滑塊控件通常有一個(gè)淺灰色的背景
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9.9.9]);end
用于控制方位角的文本輸入框的回調(diào)函數(shù),用于同步方位角滑鍵的值,同時(shí)改變觀察者的方位角:
function azEditText_Callback(hObject, eventdata, handles)hObject
azEditText控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符。同時(shí),將字符轉(zhuǎn)換為雙精度數(shù) az=str2double(get(hObject,'String'));改變方位角滑鍵的值 set(handles.azSlider,'Value',az);獲得當(dāng)前的仰角
el=str2double(get(handles.elEditText,'String'));改變觀察視角 view([az,el]);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function azEditText_CreateFcn(hObject, eventdata, handles)hObject
azEditText控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
用于控制仰角的滑鍵的回調(diào)函數(shù),用于同步仰角文本輸入框中顯示的數(shù)值,同時(shí)改變觀察者的仰角:
function elSlider_Callback(hObject, eventdata, handles)hObject
elSlider控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前滑鍵的值 el=get(hObject,'Value');將字符轉(zhuǎn)換為雙精度數(shù)
az=str2double(get(handles.azEditText,'String'));改變仰角輸入文本框的顯示數(shù)值,此數(shù)值為當(dāng)前滑鍵所代表的值 set(handles.elEditText,'String',num2str(el));改變觀察視角 view([az,el]);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼
function elSlider_CreateFcn(hObject, eventdata, handles)hObject
elSlider控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 滑塊控件通常有一個(gè)淺灰色的背景
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor',[.9.9.9]);end
用于控制仰角的文本輸入框的回調(diào)函數(shù),用于同步仰角滑鍵的值,同時(shí)改變觀察者仰角:
function elEditText_Callback(hObject, eventdata, handles)hObject
elEditText控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
獲得當(dāng)前輸入框的輸入字符。同時(shí),將字符轉(zhuǎn)換為雙精度數(shù) el=str2double(get(hObject,'String'));改變仰角滑鍵的值
set(handles.elSlider,'Value',el);獲得當(dāng)前的方位角
az=str2double(get(handles.azEditText,'String'));改變觀察視角 view([az,el]);
設(shè)置完所有屬性后,在對(duì)象的創(chuàng)建過(guò)程中執(zhí)行以下代碼 function elEditText_CreateFcn(hObject, eventdata, handles)hObject
elEditText控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,它會(huì)在調(diào)用完所有的CreateFcn函數(shù)后創(chuàng)建
提示: 可編輯文本框控件通常在窗口上有一個(gè)白色的背景,更多詳情請(qǐng)參見(jiàn)ISPC 和 COMPUTER.if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');end
用于恢復(fù)默認(rèn)方位角和仰角的默認(rèn)值按鈕的回調(diào)函數(shù),用于將方位角恢復(fù)為默認(rèn)值-37.50,仰角恢復(fù)為默認(rèn)值300,同時(shí)更新方位角滑鍵的值,方位角文本輸入框顯示的值,仰角滑鍵的值,仰角文本輸入框顯示的值: function ViewDefault_Callback(hObject, eventdata, handles)hObject
ViewDefault控件的句柄(詳情請(qǐng)參見(jiàn) GCBO)eventdata
保留在MATLAB里面的參數(shù),它的作用是方便后面的程序使用 handles
GUI界面的句柄,可以通過(guò)它獲取整個(gè)界面的信息(詳情請(qǐng)參見(jiàn)GUIDATA)
設(shè)置方位角滑鍵的數(shù)值為方位角的默認(rèn)值 set(handles.azSlider,'Value',-37.5);設(shè)置方位角文本框中顯示的數(shù)值為方位角的默認(rèn)值 set(handles.azEditText,'String',-37.5);設(shè)置仰角滑鍵的數(shù)值為仰角的默認(rèn)值 set(handles.elSlider,'Value',30);設(shè)置仰角文本框中顯示的數(shù)值為仰角的默認(rèn)值 set(handles.elEditText,'String',30);改變觀察視角 view([-37.5,30]);4.2 基于MATLAB的三體問(wèn)題的運(yùn)行成果
程序的初始圖形界面如圖4-1,在圖形界面右端文本輸入框可以依次輸入程序運(yùn)行所需的各個(gè)參數(shù)值,包括三個(gè)天體的質(zhì)量,初始位置和初始速度。默認(rèn)的參數(shù)值為:m1為太陽(yáng)的質(zhì)量,m2為地球的質(zhì)量,m3為月球質(zhì)量,x2的值為日地的平均距離,v2為地球繞太陽(yáng)公轉(zhuǎn)的平均線速度值,x3的值為日月的平均距離,v3為月球相對(duì)于太陽(yáng)的平均線速度值。同時(shí),文本輸入框內(nèi)標(biāo)注了所輸入數(shù)值的數(shù)量級(jí)。比如:當(dāng)你在m1文本輸入框內(nèi)輸入19.89,那么程序中實(shí)際使用到的數(shù)值是19.89 1029。
圖4-1 輸入?yún)?shù)
點(diǎn)擊“使用默認(rèn)值”按鈕,如圖4-2,界面三個(gè)天體文本輸入框內(nèi)顯示三個(gè)天體各個(gè)參數(shù)的默認(rèn)值。
圖4-2 輸入默認(rèn)值
單擊“開(kāi)始”按鈕,程序開(kāi)始讀取文本輸入框中程序使用者輸入的各個(gè)參數(shù)(如果不作變動(dòng)的話(huà),程序使用默認(rèn)的參數(shù)值),按照萬(wàn)有引力和牛頓第二定律公式進(jìn)行迭代計(jì)算,確定每經(jīng)過(guò)一個(gè)時(shí)間步長(zhǎng)t時(shí),三個(gè)天體的實(shí)時(shí)位置和速度,并且在坐標(biāo)系中即時(shí)顯示,。如圖4-3,我們就可以看到三個(gè)天體運(yùn)動(dòng)的動(dòng)畫(huà)(在某些情況下,天體會(huì)運(yùn)動(dòng)到坐標(biāo)軸外邊去)。
圖4-3 顯示動(dòng)畫(huà)
當(dāng)程序的使用者改變?nèi)齻€(gè)天體的初始位置和速度是,便可以得到各種不同的運(yùn)行結(jié)果。
如圖4-4,在控制視角儀表板中點(diǎn)擊方位角和仰角滑鍵可以改變觀察者的觀測(cè)點(diǎn)。同時(shí),在滑鍵右邊的文本輸入框內(nèi),可以實(shí)時(shí)顯示當(dāng)前的方位角與仰角。在方位角和仰角的文本輸入框內(nèi)輸入方位角和仰角也可以改變觀察者的觀察位置,并且在文本框內(nèi)輸入的數(shù)值可以實(shí)時(shí)的同步到滑鍵上,改變滑鍵的位置。
圖4-4 改變觀察視角
結(jié) 論
本論文先從研究三體問(wèn)題的理論知識(shí)和背景入手,通過(guò)查閱文獻(xiàn)和在互聯(lián)網(wǎng)上搜索關(guān)于三體問(wèn)題的相關(guān)資料,了解到了三體問(wèn)題相關(guān)國(guó)內(nèi)外的最新動(dòng)態(tài)。
在論文中,詳細(xì)介紹了什么是三體問(wèn)題,三體問(wèn)題的背景以及解決三體問(wèn)題所面臨的難題。論文除了對(duì)三體問(wèn)題的基本概念的研究,還設(shè)計(jì)了MATLAB程序,用三體問(wèn)題的數(shù)值解法,作出了三體問(wèn)題的模擬動(dòng)畫(huà)。通過(guò)MATLAB設(shè)計(jì)的GUI界面,可以使使用者在不必考慮程序內(nèi)部實(shí)現(xiàn)的情況下,給出三個(gè)天體的初始條件,包括三個(gè)天體的初始位置和初始速度,模擬三個(gè)天體的運(yùn)動(dòng)情況。
在書(shū)寫(xiě)論文和編譯程序的過(guò)程中,我學(xué)到了很多東西,培養(yǎng)了我分析研究事情嚴(yán)謹(jǐn)?shù)膽B(tài)度和創(chuàng)新精神,增加了我的對(duì)程序開(kāi)發(fā)的動(dòng)手能力,也減少了對(duì)于新知識(shí)新領(lǐng)域的學(xué)習(xí)的恐懼感,非常有利于我現(xiàn)在的學(xué)習(xí)和工作。
參考文獻(xiàn)
[1] A treatise on the analytical dynamics of particles and rigid bodies, 4th edition, E.T Whittaker, Cambridge University Press(1937).[2]李銀山.三體問(wèn)題綜述[D].遼陽(yáng)職業(yè)技術(shù)學(xué)院.111000;
[3] 李明濤,鄭建華,于錫崢等.受攝三體問(wèn)題研究[J].中國(guó)空間科學(xué)技術(shù):2008,6:14108;
[5] 楊遠(yuǎn)玲,聶清香,吳曉梅等.N體問(wèn)題的幾種數(shù)值算法比較[J].計(jì)算物理:2005,23(5):599-602;
[6] Mauri Valtonen,Hannu Karttunen.The Three-Body Problem[M].America:Cambridge University Press.2006;
[7] 李立康, 於崇華, 朱政華.微分方程數(shù)值解法[M].上海: 復(fù)旦大學(xué)出版社, 1999; [8] 彭芳麟, 管靖, 胡靜, 盧圣治.MATLAB 編程應(yīng)用, 理論力學(xué)計(jì)算機(jī)模擬[M].北京: 清華大學(xué)出版社, 2002;
[9] 易照華.天體力學(xué)基礎(chǔ)[J].南京: 南京大學(xué)出版社, 1993 , 39–44;
[10] 黃元義.平面圓型限制性三體問(wèn)題的運(yùn)動(dòng)方程[D].宜賓師專(zhuān)學(xué)報(bào)(自然科學(xué)版), 2(1995);
[11] 易照華, 李廣宇, Gerhard HEINZEL,等.共軌限制性三體問(wèn)題及其應(yīng)用[J].中國(guó)科學(xué): 物理學(xué) 力學(xué) 天文學(xué), 2010, 40: 121 – 127;
第二篇:基于以太網(wǎng)交換機(jī)的仿真教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)(精選)
基于以太網(wǎng)交換機(jī)的仿真教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
摘 要:以太網(wǎng)交換機(jī)是一種標(biāo)準(zhǔn)的局域網(wǎng)技術(shù),其通過(guò)星型拓?fù)浣Y(jié)構(gòu)實(shí)現(xiàn)各功能的運(yùn)用。交換機(jī)是為兩臺(tái)聯(lián)網(wǎng)設(shè)備提供連接點(diǎn)的一種虛電路,可有效避免數(shù)據(jù)傳輸沖突,進(jìn)而提高數(shù)據(jù)的網(wǎng)絡(luò)傳送速度。本文從以太網(wǎng)交換機(jī)的工作原理及功能入手,提出了基于以太網(wǎng)交換機(jī)的仿真教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)。
關(guān)鍵詞:以太網(wǎng)交換機(jī);仿真教學(xué);系統(tǒng);硬件設(shè)計(jì);研究 以太網(wǎng)交換機(jī)的工作原理及功能
1.1 以太網(wǎng)交換機(jī)的工作原理
以太網(wǎng)交換機(jī)是一種數(shù)據(jù)鏈路層備,可對(duì)數(shù)據(jù)包中MAC地址信息進(jìn)行識(shí)別和轉(zhuǎn)發(fā),并將對(duì)應(yīng)的端口和MAC地址記錄在內(nèi)部的地址表內(nèi)。工作流程見(jiàn)下文:(1)某個(gè)端口在接收數(shù)據(jù)包后開(kāi)始取讀該數(shù)據(jù)包內(nèi)的源MAC地址,從而獲取某個(gè)端口上MAC地址的機(jī)器位置;(2)獲取上述內(nèi)容后再對(duì)數(shù)據(jù)包中MAC地址進(jìn)行取讀,查找出與地址表內(nèi)位置相對(duì)應(yīng)的端口;(3)系統(tǒng)將數(shù)據(jù)包直接復(fù)制到符合MAC地址的端口上;(4)將為尋找到符合地址表內(nèi)數(shù)據(jù)的端口時(shí),系統(tǒng)會(huì)將數(shù)據(jù)包廣播至所有端口,交換機(jī)在源機(jī)器和目的機(jī)器進(jìn)行回應(yīng)時(shí),確認(rèn)哪個(gè)端口可與目的MAC地址對(duì)應(yīng),在進(jìn)行下一次的數(shù)據(jù)傳輸時(shí)便不用將數(shù)據(jù)包廣播于各個(gè)端口。
1.2 以太網(wǎng)交換機(jī)的主要功能
以太網(wǎng)交換機(jī)類(lèi)似于一種特殊的計(jì)算機(jī),位于OSI模型內(nèi)的第一層,主要包括RAM(隨機(jī)存儲(chǔ)器)、CPI(中央處理器)及操作系統(tǒng)。其通過(guò)ASIC芯片實(shí)現(xiàn)所有端口對(duì)交換機(jī)速率的并行轉(zhuǎn)發(fā),較二層利用軟件的轉(zhuǎn)發(fā)網(wǎng)橋速度較快。以太網(wǎng)交換機(jī)具有以下功能:(1)實(shí)現(xiàn)網(wǎng)段內(nèi)通信的隔離。網(wǎng)段是在以太網(wǎng)交換機(jī)設(shè)備的作用下劃分而成的小單元,各個(gè)網(wǎng)段均通過(guò)CSMA/CD的訪問(wèn)方式完成系統(tǒng)內(nèi)多個(gè)用戶(hù)的通信交流。該分段方式可實(shí)現(xiàn)不同網(wǎng)段上多個(gè)用戶(hù)的實(shí)時(shí)消息傳送,且對(duì)網(wǎng)絡(luò)速度不造成影響。(2)構(gòu)建更小的沖突域?qū)崿F(xiàn)多個(gè)帶寬的提供,以太網(wǎng)內(nèi)交換機(jī)內(nèi)的2層MAC地址可向一個(gè)及以上端口傳送數(shù)據(jù)報(bào)文,進(jìn)而對(duì)過(guò)濾通信數(shù)據(jù)。更小沖突域的構(gòu)建可有效實(shí)現(xiàn)更多帶寬的提供?;谝蕴W(wǎng)交換機(jī)的仿真教學(xué)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
2.1 教學(xué)系統(tǒng)的硬件功能模塊分解
本文采用MCU+ASIC體系結(jié)構(gòu)實(shí)現(xiàn)教學(xué)系統(tǒng)硬件支持平臺(tái)的構(gòu)建,通過(guò)ASIC專(zhuān)用集成電路的專(zhuān)業(yè)傳用芯片對(duì)各類(lèi)業(yè)務(wù)進(jìn)行處理,以滿(mǎn)足教學(xué)系統(tǒng)硬件實(shí)驗(yàn)及交換機(jī)處理性能的要求。微處理器單元(MCU)的使用可管理教學(xué)系統(tǒng)和通訊各軟件層。該仿真教學(xué)系統(tǒng)開(kāi)發(fā)成本預(yù)算的較低,開(kāi)發(fā)周期適中,具有簡(jiǎn)單、便捷的特點(diǎn)。在硬件體系結(jié)構(gòu)的基礎(chǔ)上對(duì)教學(xué)系統(tǒng)硬件結(jié)構(gòu)進(jìn)行設(shè)計(jì),示意圖見(jiàn)圖1。
2.2 I?C接口、SMI接口及串行接口的設(shè)計(jì)
本文設(shè)計(jì)的仿真教學(xué)系統(tǒng)硬件結(jié)合運(yùn)用了Strapping Pins和EEPROM的初始化配置,使Strapping Pins配置在跳線組的設(shè)置下,通過(guò)一個(gè)或多個(gè)管教組合完成直觀教學(xué)效果的表達(dá)。
軟件層和硬件支持平臺(tái)間的通信接口均通過(guò)RS232串行通信接口進(jìn)行連接。RS232串行口是一種9針異步串行的通信接口,軟件層在解析和轉(zhuǎn)換后的指令均由RS232串行口接收,接收完畢后再將執(zhí)行結(jié)果傳送至軟件層。
2.3 外部接口10M/100Mbps網(wǎng)口的實(shí)現(xiàn)
本文采用的RTL8309SC擁有8個(gè)10M/100Mbps網(wǎng)口,考慮到產(chǎn)品的設(shè)計(jì)性、實(shí)用性和直觀性,本文設(shè)計(jì)系統(tǒng)中的網(wǎng)絡(luò)接口采用的是雙層RJ45 71 F-1201GYD2NL。經(jīng)多次試驗(yàn)表明,此產(chǎn)品的較傳統(tǒng)的分離網(wǎng)格變壓器而言,具有較高的可靠性,在使用過(guò)程中出錯(cuò)率較小,系統(tǒng)內(nèi)部的抗干擾性有所提高。為將各個(gè)網(wǎng)口工作狀態(tài)實(shí)時(shí)提供給學(xué)生用戶(hù),本文設(shè)計(jì)出三組LED顯示出鏈接/通信(Link/ACT)、雙工/沖突(Duplex/Collision)和顯示端口速度的多組合方式。
2.4 驅(qū)動(dòng)設(shè)計(jì)
在對(duì)硬件特點(diǎn)和功能需求進(jìn)行分析后,設(shè)計(jì)出具有結(jié)構(gòu)化程序的驅(qū)動(dòng)程序,將C語(yǔ)言作為開(kāi)發(fā)語(yǔ)言,低功耗模式0表示為L(zhǎng)PM 0,其中LPM 0中斷后便自動(dòng)退出。接收中斷方式被運(yùn)用與串口通信,其中終端處理程序流程圖見(jiàn)表2。
將處理程序中的主體結(jié)構(gòu)設(shè)定為Switch語(yǔ)句,當(dāng)系統(tǒng)內(nèi)數(shù)據(jù)滿(mǎn)足指定條件時(shí),相對(duì)應(yīng)的功能函數(shù)便會(huì)被調(diào)動(dòng),進(jìn)而完成功能函數(shù)定義出的相關(guān)功能。各個(gè)函數(shù)通過(guò)設(shè)置內(nèi)部寄存器完成各種功能的運(yùn)行,系統(tǒng)會(huì)自動(dòng)保存修改后的系統(tǒng)配置,軟件層在結(jié)束程序前會(huì)收到各個(gè)執(zhí)行結(jié)果??偨Y(jié)
本文設(shè)計(jì)和研究出的仿真教學(xué)系統(tǒng)符合高校的網(wǎng)絡(luò)設(shè)備教學(xué)要求,為高校的實(shí)驗(yàn)教學(xué)提供了多種仿真配置方式和界面。以太網(wǎng)交換機(jī)教學(xué)在高校計(jì)算機(jī)網(wǎng)絡(luò)實(shí)驗(yàn)室中的運(yùn)用,為學(xué)生的實(shí)際操作搭建了一個(gè)良好的平臺(tái),具有較強(qiáng)的運(yùn)用意義和較高的性?xún)r(jià)比。
[參考文獻(xiàn)]
[1]肖明彥,竇文華.基于以太網(wǎng)交換機(jī)平臺(tái)的SNMP代理實(shí)現(xiàn)[J].電訊技術(shù),2000,40(4):99-103.[2]張偉華,魏仲慧,何昕.嵌入式通用千兆以太網(wǎng)接口的設(shè)計(jì)與實(shí)現(xiàn)[J].儀表技術(shù)與傳感器,2011(6).116-118.
第三篇:天體的中三體問(wèn)題
天體中的三體問(wèn)題
韓博偉談
三體問(wèn)題算是經(jīng)典力學(xué)里面的天體力學(xué)的老難題了,從牛頓那個(gè)時(shí)候起就是物理學(xué)家和數(shù)學(xué)家的惡夢(mèng)。
先說(shuō)一下什么叫三體。用物理語(yǔ)言來(lái)說(shuō),在一個(gè)慣性參考系中有N個(gè)質(zhì)點(diǎn),求解這N個(gè)質(zhì)點(diǎn)的運(yùn)動(dòng)方程就是N體問(wèn)題。參考系是慣性參考系,也就是說(shuō)不受系統(tǒng)外的力的作用,所有的作用力都來(lái)自于體系內(nèi)的這N個(gè)質(zhì)點(diǎn)之間。在天體力學(xué)里面,我們通常就只考慮萬(wàn)有引力。
用數(shù)學(xué)語(yǔ)言來(lái)說(shuō),經(jīng)典力學(xué)的N體問(wèn)題模型就是,在三維平直空間里有N個(gè)質(zhì)點(diǎn),每個(gè)質(zhì)點(diǎn)的質(zhì)量都已知而且不會(huì)變化。在初始時(shí)刻,所有質(zhì)點(diǎn)的位置和速度都已知。每個(gè)質(zhì)點(diǎn)都只受到來(lái)自其它質(zhì)點(diǎn)的萬(wàn)有引力,引力大小由牛頓的同距離平方成反比的公式描述。要求解的就是,任意一個(gè)時(shí)刻,某個(gè)質(zhì)點(diǎn)的位置。
N=2,就是二體問(wèn)題。N=3,也就是我們要說(shuō)的三體問(wèn)題了。
N=2的情況,早在牛頓時(shí)候就已經(jīng)基本解決了。學(xué)過(guò)中學(xué)物理后,大家都會(huì)知道,兩個(gè)質(zhì)點(diǎn)在一個(gè)平面上繞著共同質(zhì)心作圓錐曲線運(yùn)動(dòng),軌道可以是圓、橢圓、拋物線或者雙曲線。
然而三體運(yùn)動(dòng)的情況就糟糕得多。攻克二體問(wèn)題后,牛頓很自然地開(kāi)始研究三體問(wèn)題,結(jié)果也是十分自然的——頭痛難忍。牛頓自述對(duì)付這種頭痛的方法是:用布帶用力纏緊腦袋,直至發(fā)暈為止—雖則這個(gè)辦法治標(biāo)不治本而且沒(méi)多少創(chuàng)意,然而畢竟還是有效果的。
其實(shí),三體運(yùn)動(dòng)已經(jīng)是對(duì)物理實(shí)際簡(jiǎn)化得很厲害了。比如說(shuō)對(duì)質(zhì)點(diǎn),自轉(zhuǎn)啦、形狀啦我們統(tǒng)統(tǒng)不用考慮。但是只要研究實(shí)際的地球運(yùn)動(dòng),就已經(jīng)比質(zhì)點(diǎn)復(fù)雜得多。比如說(shuō),地球別說(shuō)不是點(diǎn),連球形都不是,粗略看來(lái)是個(gè)赤道上胖出來(lái)一圈的橢球體。于是,在月球引力下,地球的自轉(zhuǎn)軸方向就不固定,北極星也不會(huì)永遠(yuǎn)是那一顆。而考慮潮汐作用時(shí),地球都不能看成是“硬”的了,地球自轉(zhuǎn)也因此越來(lái)越慢。
然而即使是極其簡(jiǎn)化了的三體問(wèn)題,牛頓、拉格朗日、拉普拉斯、泊松、雅可比、龐加萊等等大師們?yōu)檫@個(gè)祭壇獻(xiàn)上了無(wú)數(shù)腦汁也未能將它攻克。
當(dāng)然,努力不會(huì)完全白費(fèi)的,許多有效的近似方法被鼓搗了出來(lái)。對(duì)于太陽(yáng)系,攝動(dòng)理論就是非常有效的解決問(wèn)題的近似方法。而對(duì)于地月系統(tǒng),則可以先把地球和月球看作是二體系統(tǒng),再考慮太陽(yáng)引力的影響?!霸铝晾@著地球轉(zhuǎn),地球繞著太陽(yáng)轉(zhuǎn)”的理論計(jì)算已經(jīng)作得非常精確,上下幾千年的日食月食都能很好地預(yù)測(cè)。而對(duì)一顆受到行星引力干擾的彗星,人們也能算出一段時(shí)間內(nèi)很精確的軌道,比如天文學(xué)家可以提前幾年就預(yù)測(cè)出彗星撞木星。而且,太陽(yáng)系的穩(wěn)定性也在很大程度上得到了證明,比如說(shuō)大行星的軌道變化大體上是周期性的,不會(huì)始終單向變化下去直到行星系統(tǒng)解體。
為了解三體問(wèn)題,那就考慮再簡(jiǎn)化些吧。認(rèn)為一個(gè)質(zhì)點(diǎn)的質(zhì)量非常小,從而它對(duì)其它兩個(gè)質(zhì)點(diǎn)的萬(wàn)有引力可以忽略。這樣一來(lái),三體問(wèn)題就簡(jiǎn)化成了“限制性三體問(wèn)題”。實(shí)際上,這個(gè)簡(jiǎn)化等于是先解一個(gè)二體問(wèn)題,然后再加入一個(gè)質(zhì)量很小的質(zhì)點(diǎn),再解這個(gè)質(zhì)點(diǎn)在二體體系中的運(yùn)動(dòng)方程。
然而,即使這樣也還是太復(fù)雜了。于是,再作簡(jiǎn)化,就得到了“平面限制性三體問(wèn)題”,就是要求三個(gè)質(zhì)點(diǎn)都在同一個(gè)平面上。然而,即使是對(duì)這樣極度簡(jiǎn)化的模型,也還是沒(méi)有解析通解,也就是得到一個(gè)普遍適用的公式是不可能的。
對(duì)“平面限制性三體問(wèn)題”再作簡(jiǎn)化,認(rèn)為兩個(gè)大質(zhì)點(diǎn)作圓周運(yùn)動(dòng),就是“平面圓型限制性三體問(wèn)題”。1772年,拉格朗日在這種限制條件下找到了5個(gè)特解,也就是著名的拉格朗日點(diǎn)。比如下面這張圖上,木星和太陽(yáng)連線上有L1,L2,L3三個(gè)拉格朗日點(diǎn),而在木星軌道上則有L4,L5這兩個(gè)點(diǎn),和太陽(yáng)以及木星構(gòu)成等邊三角形。L1,L2,L3是不穩(wěn)定的,如果小質(zhì)點(diǎn)離開(kāi)這三個(gè)點(diǎn),就會(huì)越跑越遠(yuǎn)。L4,L5則是穩(wěn)定的。
本來(lái),拉格朗日點(diǎn)多少顯得有點(diǎn)象數(shù)學(xué)游戲,但是自然界證明,穩(wěn)定解在太陽(yáng)系里確實(shí)存在實(shí)例。對(duì)于木星來(lái)說(shuō),L4和L5上各有一群小行星,就是著名的特洛伊群和希臘群小行星。
從數(shù)學(xué)方法來(lái)說(shuō),解2體問(wèn)題的方法是解微分方程組,通過(guò)求積分的方式可以圓滿(mǎn)解決,得到解析解。很自然的,物理學(xué)家和數(shù)學(xué)家們也用這種方法去對(duì)付三體問(wèn)題。1772年,拉格朗日就已經(jīng)把三體問(wèn)題的18個(gè)方程簡(jiǎn)化成了只有6個(gè)。然而,進(jìn)步到此為止了。19世紀(jì)末期的研究更是給了數(shù)學(xué)家們一連串打擊。布倫斯(1887),龐加萊(1889)和潘勒斯(1898)年給出了一個(gè)比一個(gè)更嚴(yán)格的證明,堵死了求積分的許多途徑。1941年西格爾干脆證明了代數(shù)積分法的死刑,宣布找到足夠的代數(shù)積分是不可能的。當(dāng)然,三體問(wèn)題的數(shù)學(xué)研究不是除了失敗外就一無(wú)所有,它還是帶來(lái)了許多新發(fā)現(xiàn),比如混沌理論就是從它的廢墟中誕生的。
當(dāng)然,我們還只是談到了牛頓力學(xué)。如果考慮到廣義相對(duì)論的修正,那就更糟糕了,連二體問(wèn)題都只有近似解。而且,廣義相對(duì)論的二體問(wèn)題也不穩(wěn)定,由于發(fā)射引力波損失能量,兩個(gè)星體遲早會(huì)撞在一起,雖說(shuō)要等的時(shí)間可能比宇宙壽命還長(zhǎng)。
在牛頓的經(jīng)典力學(xué)體系里面,對(duì)三體問(wèn)題的簡(jiǎn)化可以用下面這張圖大體表示一下(在這里把月球火箭的軌道計(jì)算作為一個(gè)三體運(yùn)動(dòng)的一個(gè)實(shí)際應(yīng)用的例子,實(shí)際上比三體運(yùn)動(dòng)還要復(fù)雜)
二十世紀(jì)50年代后,數(shù)學(xué)家們多了一個(gè)新幫手:計(jì)算機(jī)。于是,兩個(gè)新辦法出來(lái)了,一個(gè)是用級(jí)數(shù)表示積分(簡(jiǎn)單代數(shù)積分不指望了),另一個(gè)則干脆是使用數(shù)值方法求近似解。
級(jí)數(shù)解在理論上獲得了很大成功,比如在限制性圓型三體問(wèn)題中,已經(jīng)證明了所需要的積分是存在的(但是另一方面早就證明了用代數(shù)公式是不能表達(dá)的)。這些積分可以用冪級(jí)數(shù)表達(dá),而且證明了冪級(jí)數(shù)是收斂的。但是這些冪級(jí)數(shù)收斂得太慢了,比如對(duì)拉格朗日點(diǎn),為了達(dá)到可以接受的精度,至少要取10^80000項(xiàng)!而整個(gè)宇宙中的粒子數(shù)也就10^80個(gè)的樣子。
計(jì)算機(jī)的加盟使人們對(duì)三體問(wèn)題不是那么無(wú)助了。雖然沒(méi)有代數(shù)公式,但用數(shù)值算法硬算的結(jié)果,精確性也不錯(cuò)。比如,發(fā)射飛船去探測(cè)其他行星就是典型的三體問(wèn)題,旅行者2號(hào)說(shuō)去海王星就一定到得了。再比如,太陽(yáng)系大行星4000萬(wàn)年內(nèi)的運(yùn)動(dòng)也算了出來(lái),至少往后這段時(shí)間,太陽(yáng)系的行星系統(tǒng)還不至于散架。
讓我們看看三體問(wèn)題的大致現(xiàn)狀吧:
1.目前的研究主要集中在限制性三體問(wèn)題,因?yàn)楸容^簡(jiǎn)化,而且有實(shí)用價(jià)值。2.對(duì)于限制性三體問(wèn)題,通過(guò)級(jí)數(shù)法證明了解的存在性(這已經(jīng)是非常大的成果了)。而且,天體力學(xué)的定性分析和天文觀測(cè)(比如地球上繁衍了幾十億年的生命)都證明了限制性三體體系的穩(wěn)定解的存在性。
3.用解決二體問(wèn)題的方法,也就是代數(shù)積分的方法被確認(rèn)不可能解決三體問(wèn)題。
4.用計(jì)算機(jī)進(jìn)行較長(zhǎng)期的三體問(wèn)題的數(shù)值計(jì)算是成功的。
5.三體問(wèn)題的算法還大有可改進(jìn)之處。畢竟,10^80000項(xiàng)的計(jì)算是太過(guò)于可怕了。
回到《三體》小說(shuō),有了“秦始皇”的“人計(jì)算機(jī)系統(tǒng)”,算個(gè)簡(jiǎn)化的三體問(wèn)題還是可以的。不過(guò),如果是小說(shuō)中那種三個(gè)太陽(yáng)的質(zhì)量差不多,而且相互距離也差不多的情況,他們面對(duì)的三體問(wèn)題就不能簡(jiǎn)化為限制性三體問(wèn)題,計(jì)算的難度要大很多。不過(guò),用計(jì)算機(jī)算出比較短時(shí)間的預(yù)測(cè)應(yīng)該是可行的。畢竟,天氣預(yù)報(bào)不一定非得要知道明年今天的具體天氣,能比較準(zhǔn)確知道一周天氣就不錯(cuò)了(通常我們還只聽(tīng)聽(tīng)明天是否下雨呢)。三體人知道是不是該“脫水”或者“浸泡”就已經(jīng)很有好處了。用觀測(cè)不斷修正預(yù)測(cè),至少對(duì)小的“亂世代”不用害怕了。
當(dāng)然,如果三體文明只是在I/II類(lèi)文明的層次,不能通過(guò)移走恒星來(lái)釜底抽薪地解決三體問(wèn)題。那么,“但重要的是改變世界”這句話(huà)就仍然是正確到了殘酷的地步,預(yù)測(cè)出“三星凌空”也無(wú)助于逃脫毀滅。
到目前為止,我們一直在用紙、筆還有計(jì)算機(jī)討論三體問(wèn)題,用的都是演繹法。但不要忘了,科學(xué)方法里還有另一件更重要的武器:歸納法。我們可以用觀察和實(shí)驗(yàn),看看實(shí)際中的三體會(huì)是什么樣子。
由于在我們?nèi)粘5某叨壬?,萬(wàn)有引力弱得可以忽略,只有到了天文尺度上,引力才顯出它的威力,比如地球把我們拉在地上不放。所以,在普通的實(shí)驗(yàn)室里面實(shí)現(xiàn)三體系統(tǒng)是不行的。我們只能把視線轉(zhuǎn)向天空,去考察大自然為我們安排了什么樣的實(shí)例。
當(dāng)然,象我們已經(jīng)看到的,在太陽(yáng)系里,已經(jīng)充分表現(xiàn)了限制性三體問(wèn)題是有穩(wěn)定解的。但是,就基本同量級(jí)的三體又如何呢?我們可以來(lái)看看恒星。
銀河系里的恒星不下一千億顆,象太陽(yáng)這樣獨(dú)居的恒星其實(shí)是少數(shù)。恒星們總的來(lái)說(shuō)還是喜歡熱鬧的。雙星的數(shù)量非常多,而且很多都已經(jīng)是幾十億年的老伴侶了(比如下面要談到的南門(mén)二A/B),等于從實(shí)驗(yàn)上證明了二體系統(tǒng)的穩(wěn)定性。
而三合星也不少見(jiàn),但是一般都是一對(duì)雙星再搭上一個(gè)遠(yuǎn)距離的單星。同樣,更多數(shù)量恒星組成的聚星,也多是由雙星和單星組合而成的。應(yīng)該說(shuō)這也強(qiáng)烈地暗示了,大自然也認(rèn)為三體系統(tǒng)是不穩(wěn)定的。畢竟,銀河系里的三體并不是理想的三體系統(tǒng),一則恒星可以相撞而合并,二來(lái),一旦一顆恒星被拋出太遠(yuǎn),它就可能脫離體系而主要由銀河系的整體引力而控制了。通過(guò)這兩種方式,三體系統(tǒng)就變成了穩(wěn)定的二體系統(tǒng)了。當(dāng)然,還有“四邊形聚星”這種系統(tǒng),恒星彼此質(zhì)量相近,距離也都差不多。最著名的一個(gè)例子就是獵戶(hù)座大星云M42中心的四邊形聚星(用5厘米左右的望遠(yuǎn)鏡,放大率50~100倍就可以分辨開(kāi))。值得注意的是,這些四邊形聚星都非常年輕,比如獵戶(hù)座四邊形聚星,年齡就只有幾百萬(wàn)年,對(duì)于天文學(xué)來(lái)說(shuō),這完全是嬰兒期。沒(méi)有發(fā)現(xiàn)年老的四邊形聚星,說(shuō)明大自然認(rèn)為這種構(gòu)型也不穩(wěn)定,總歸會(huì)瓦解掉。
獵戶(hù)座大星云M42的中心區(qū),圖中央的4顆亮星就是獵戶(hù)座四邊形聚星
有意思的是,N值再增大,比如N=100級(jí)別的疏散星團(tuán)或者N=10萬(wàn)級(jí)別的球狀星團(tuán),又是非常穩(wěn)定的力學(xué)體系了,年齡超過(guò)幾十億年乃至百億年的這些星團(tuán)比比皆是。當(dāng)然,過(guò)于密集的結(jié)果就是碰撞很多,球狀星團(tuán)中央就有大量碰撞后合并而成的亮星。
昴星團(tuán)(M45),年齡約5000萬(wàn)年,算是相當(dāng)年輕的疏散星團(tuán),約有100顆成員星
球狀星團(tuán)M13,年齡超過(guò)100億年,成員星約有30萬(wàn)
第四篇:太陽(yáng)帆航天器三維動(dòng)畫(huà)可視化仿真平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)論文
0 引言
太陽(yáng)帆航天器是一種在深空探測(cè)和星際航行等領(lǐng)域極具潛力的新型航天器,利用太陽(yáng)光壓產(chǎn)生持續(xù)推力,給航天器提供持續(xù)動(dòng)力,本身無(wú)需攜帶大量的燃料,因此在深空探測(cè)和星際航行等航天領(lǐng)域具有廣闊的應(yīng)用前景,近年來(lái)受到國(guó)際航天界的廣泛關(guān)注。
美國(guó)宇航局(NASA)、日本宇航局(JAXA)、歐洲航天局(ESA)等多個(gè)世界研究機(jī)構(gòu)正在研制利用太陽(yáng)帆航天器進(jìn)行推進(jìn)任務(wù)(如Pole Site、Geosail、Geostorm等),但是,離利用太陽(yáng)帆進(jìn)行深空探測(cè)及星際航行還有一定的距離,還有一系列的關(guān)鍵技術(shù)需要攻克。針對(duì)太陽(yáng)帆航天器進(jìn)行一次太空航行任務(wù),需要高額的成本,本文提供了一種經(jīng)濟(jì)且有效的方式,研究并開(kāi)發(fā)了一套三維可視化仿真平臺(tái),利用仿真平臺(tái)模擬太陽(yáng)帆航天器的飛行情況,為實(shí)際太陽(yáng)帆航天器飛行提供一定的參考。
截止目前,未發(fā)現(xiàn)有關(guān)太陽(yáng)帆航天器可視化仿真平臺(tái)的文獻(xiàn)。本文利用C++6.0、Multigen Creator/Vega、及MATLAB等軟件相結(jié)合搭建了一個(gè)太陽(yáng)帆三維動(dòng)畫(huà)可視化仿真平臺(tái)。利用視點(diǎn)控制及多通道多視點(diǎn)技術(shù)分別在不同的通道中觀察太陽(yáng)帆的飛行軌跡及姿態(tài)變化;通過(guò)VC++與MATLAB的交互編程,利用MAT文件的仿真數(shù)據(jù)驅(qū)動(dòng)多個(gè)物體同時(shí)移動(dòng);利用Vega和OpenGL混合編程,實(shí)現(xiàn)了飛行軌跡及姿態(tài)信息實(shí)時(shí)顯示的功能。太陽(yáng)帆航天器三維動(dòng)畫(huà)可視化仿真平臺(tái)總體設(shè)計(jì)
三維動(dòng)畫(huà)可視化仿真系統(tǒng)主要由太空飛行仿真場(chǎng)景及視景仿真模型兩大部分構(gòu)成。飛行仿真場(chǎng)景是指太陽(yáng)帆所飛行的具體環(huán)境;視景仿真模型是指太陽(yáng)帆航天器的具體結(jié)構(gòu)模型。
本文首先利用Creator建立太空環(huán)境飛行仿真場(chǎng)景(太空環(huán)境)和太陽(yáng)帆航天器的結(jié)構(gòu)視景仿真模型(flt文件);接著利采用Vega提供的Lynx工具將flt文件導(dǎo)入相應(yīng)的場(chǎng)景中,然后,進(jìn)行一系列的初始化工作,并將其儲(chǔ)存為應(yīng)用程序定義文件(ADF)文件;最后,通過(guò)MATLAB計(jì)算各個(gè)時(shí)刻太陽(yáng)帆的飛行軌跡和姿態(tài)數(shù)據(jù),并通過(guò)載入模型對(duì)象的位置及姿態(tài)數(shù)據(jù),完成對(duì)太陽(yáng)帆的飛行軌跡和姿態(tài)變化的三維可視化仿真。仿真軟件平臺(tái)環(huán)境和開(kāi)發(fā)中的關(guān)鍵技術(shù)
2.1 在Visual C++環(huán)境下Vega應(yīng)用程序的開(kāi)發(fā)
Windows平臺(tái)上Vega應(yīng)用程序的開(kāi)發(fā),利用MFC框架開(kāi)發(fā)程序能夠有效地應(yīng)用Vega函數(shù)庫(kù),可以極大程度地減小程序開(kāi)發(fā)的工作量。本文采用基于MFC開(kāi)發(fā)Vega應(yīng)用程序。
2.2 三維動(dòng)畫(huà)場(chǎng)景和模型的建立
Multigen Creator是一款專(zhuān)業(yè)化的建模軟件工具,可以有效地創(chuàng)建交互式實(shí)時(shí)應(yīng)用的三維模型及場(chǎng)景。本文利用Creator建立太空環(huán)境模型和太陽(yáng)帆航天器的結(jié)構(gòu)模型。太陽(yáng)帆航天器的結(jié)構(gòu)主要包括大面積帆膜、支撐機(jī)構(gòu)及中心控制機(jī)構(gòu)等其它附屬機(jī)構(gòu),模型的正面視圖如圖2所示。將Creator中建好的模型文件導(dǎo)入Vega中,利用Vega所提供的Lynx定義三維動(dòng)畫(huà)場(chǎng)景中的模型元素屬性和相互位置關(guān)系,最后生成用于太陽(yáng)帆航天器三維動(dòng)畫(huà)仿真平臺(tái)的ADF文件,即虛擬場(chǎng)景文件。
2.3 多通道渲染技術(shù)
本文采用多通道技術(shù)實(shí)現(xiàn)在同一時(shí)刻不同位置觀察各角色模型對(duì)象的運(yùn)動(dòng)狀態(tài)。在一個(gè)通道中觀察包括太陽(yáng)帆在內(nèi)的多個(gè)運(yùn)動(dòng)模型的相對(duì)運(yùn)動(dòng)軌跡,而在另外一個(gè)通道中觀察太陽(yáng)帆航天器姿態(tài)的變化過(guò)程,結(jié)合兩個(gè)通道同時(shí)觀察太陽(yáng)帆航天器飛行狀況。
2.4 數(shù)據(jù)驅(qū)動(dòng)
本系統(tǒng)利用仿真數(shù)據(jù)與各模型對(duì)象進(jìn)行關(guān)聯(lián),通過(guò)不斷調(diào)用相關(guān)聯(lián)的數(shù)據(jù)進(jìn)行位置及姿態(tài)的更新,實(shí)現(xiàn)逼真的可視化效果,能夠準(zhǔn)確地展現(xiàn)控制效果。利用MATLAB與VC++之間的交互編程調(diào)用MAT文件,并采用MAT文件的操作方法來(lái)讀取MAT文件,從而實(shí)現(xiàn)利用仿真數(shù)據(jù)驅(qū)動(dòng)太陽(yáng)帆、地球等模型對(duì)象的運(yùn)動(dòng)。仿真實(shí)例
三維可視化仿真平臺(tái)系統(tǒng)界面主要包括菜單欄、主窗口和操作面板。其中主窗口中有兩個(gè)通道,分別顯示各模型對(duì)象飛行的軌跡與太陽(yáng)帆的姿態(tài)變化;操作面板則用來(lái)控制仿真的進(jìn)度,并同時(shí)顯示太陽(yáng)帆、地球等角色對(duì)象的位置、姿態(tài)及速度信息。首先載入使用MATLAB進(jìn)行太陽(yáng)帆航天器軌跡優(yōu)化仿真后保存的MAT數(shù)據(jù)文件,與太陽(yáng)帆、地球等模型綁定其相關(guān)的位姿數(shù)據(jù)。太陽(yáng)帆航天器以一定的位姿出現(xiàn)在仿真環(huán)境中,通過(guò)視點(diǎn)切換,并選擇合適的視點(diǎn)來(lái)觀察太陽(yáng)帆飛行過(guò)程。仿真過(guò)程中可以選擇開(kāi)始仿真、暫停仿真、重啟仿真。結(jié)論
本文通過(guò)Vega和VC++相結(jié)合的方法,設(shè)計(jì)并開(kāi)發(fā)了一套太陽(yáng)帆航天器三維動(dòng)畫(huà)可視化仿真平臺(tái)。利用Creator軟件建立相關(guān)模型;采用多通道多視點(diǎn)技術(shù)分別觀察太陽(yáng)帆航天器的飛行軌跡及姿態(tài)變化,并通過(guò)視點(diǎn)控制技術(shù),可以從任意位置任意角度觀察太陽(yáng)帆航天器的飛行狀態(tài);通過(guò)MATLAB與VC++的交互編程,實(shí)現(xiàn)了多個(gè)運(yùn)動(dòng)體同時(shí)移動(dòng);通過(guò)回調(diào)函數(shù)解決了Vega和OpenGL混合編程問(wèn)題,給系統(tǒng)增加了顯示飛行軌跡及重要數(shù)據(jù)信息的功能。
第五篇:建模與仿真實(shí)驗(yàn)報(bào)告
重 重 慶 慶
大 大 學(xué) 學(xué)
學(xué) 學(xué) 生 生
實(shí) 實(shí) 驗(yàn) 報(bào) 告 實(shí)驗(yàn)課程名稱(chēng)
物流系統(tǒng)建模與仿真
開(kāi)課實(shí)驗(yàn)室
物流工程實(shí)驗(yàn)室
學(xué) 學(xué)
院
自動(dòng)化
年級(jí)
專(zhuān)業(yè)班
程 物流工程 2 班
學(xué) 學(xué) 生 生
姓 姓 名
段競(jìng)男
學(xué)
號(hào)
201 24 912
開(kāi) 開(kāi) 課 時(shí) 間
2014
至15
學(xué)年第 二
學(xué) 學(xué)期 期 總 總
成 成 績(jī) 績(jī)
教師簽名
自動(dòng)化 學(xué)院制 《 物流系統(tǒng)建模與仿真 》實(shí)驗(yàn)報(bào)告
開(kāi)課實(shí)驗(yàn)室:
****年**月**日 日 學(xué)院 自動(dòng)化 年級(jí)、專(zhuān)業(yè)、班 12級(jí)物流工程2班 姓名 段競(jìng)男 成績(jī)
課程 名稱(chēng) 物流系統(tǒng)建模與仿真 實(shí)驗(yàn)項(xiàng)目 名
稱(chēng) 產(chǎn)品測(cè)試工藝仿真與分析實(shí)驗(yàn) 指導(dǎo)教師 張瑩瑩 教師評(píng)語(yǔ)
成績(jī)
一、實(shí)驗(yàn)?zāi)康?通過(guò)建立單存放區(qū)域、單處理工作臺(tái)得簡(jiǎn)單模型,了解 5 個(gè)基本建模步驟。學(xué)習(xí)使用統(tǒng)計(jì)分析工具.二、實(shí)驗(yàn)原理 某工廠車(chē)間對(duì)三類(lèi)產(chǎn)品進(jìn)行檢驗(yàn)。這三種類(lèi)型得產(chǎn)品按照一定得時(shí)間間隔方式到達(dá)。隨后,不同類(lèi)型得產(chǎn)品被分別送往三臺(tái)不同得檢測(cè)機(jī)進(jìn)行檢測(cè),每臺(tái)檢測(cè)機(jī)只檢測(cè)一種特定得產(chǎn)品類(lèi)型.其中,類(lèi)型 1 得產(chǎn)品到第一臺(tái)檢測(cè)機(jī)檢測(cè),類(lèi)型2得產(chǎn)品到第二臺(tái)檢測(cè)機(jī)檢測(cè),類(lèi)型 3 得產(chǎn)品到第三臺(tái)檢測(cè)機(jī)檢測(cè)。產(chǎn)品檢測(cè)完畢后,由傳送帶送往貨架區(qū),再由叉車(chē)送到相應(yīng)得貨架上存放。類(lèi)型 1 得產(chǎn)品存放在第 2 個(gè)貨架上,類(lèi)型 2 得產(chǎn)品存放在第 3 個(gè)貨架上,類(lèi)型 3 得產(chǎn)品存放在第 1 個(gè)貨架上。
三、使用儀器、材料
一臺(tái)PC機(jī),flexsim軟件 四、實(shí)驗(yàn)步驟
1)創(chuàng)建模型布局
使用鼠標(biāo)將需要得對(duì)象從對(duì)象庫(kù)中拖放到正視圖窗口中,根據(jù)需要使用鼠標(biāo)改變對(duì)象位置、大小與轉(zhuǎn)角。
2)連接端口
按下鍵盤(pán)上得“A“鍵,用鼠標(biāo)拖放在對(duì)象間建立輸出端口-輸入端口連接;方向?yàn)閺牧鞒鰧?shí)體得對(duì)象到流入實(shí)體得對(duì)象;模型中得對(duì)象發(fā)出與接收實(shí)體需要這種連接。
3)編輯外觀、設(shè)置對(duì)象行為
(1)參數(shù)窗口(Parameters Window)
雙擊對(duì)象(或在右鍵菜單選擇 Parameters)
;用于對(duì)各種對(duì)象得自身特性得設(shè)置、編輯。
(2)屬性窗口(Properties Window)
右鍵單擊對(duì)象,在彈出菜單中選擇 Properties;用于編輯與查瞧所有對(duì)象都擁有得一般性信息。
(3)模型樹(shù)視圖(Model Tree View)模型中得所有對(duì)象都在層級(jí)式樹(shù)結(jié)構(gòu)中列出;包含對(duì)象得底層數(shù)據(jù)結(jié)構(gòu);所有得信息都包含在此樹(shù)結(jié)構(gòu)中。
4)重置運(yùn)行
(1)重置模型并運(yùn)行
(2)控制仿真速度(不會(huì)影響仿真結(jié)果)
檢測(cè)機(jī)器 1 檢測(cè)機(jī)器 2 檢測(cè)機(jī)器 3 傳送帶 傳送帶 傳送帶 貨架 1 貨架 2 貨架 3 產(chǎn)品 1 產(chǎn)品 2 產(chǎn)品 3
(3)設(shè)置仿真結(jié)束時(shí)間
5)觀察結(jié)果
(1)使用“Statistics”(統(tǒng)計(jì))菜單中得 Reports and Statistics(報(bào)告與統(tǒng)計(jì))生成所需得各項(xiàng)數(shù)據(jù)統(tǒng)計(jì)報(bào)告.(2)其她報(bào)告功能包括:對(duì)象屬性窗口得統(tǒng)計(jì)項(xiàng);記錄器對(duì)象;可視化工具對(duì)象;通過(guò)觸發(fā)器記錄數(shù)據(jù)到全局表。
五、實(shí)驗(yàn)過(guò)程原始記錄((數(shù)據(jù)、圖表、計(jì)算等))
1、運(yùn)行結(jié)果得平面視圖:
2、運(yùn)行結(jié)果得立體視圖
3、運(yùn)行結(jié)果得暫存區(qū)數(shù)據(jù)分析結(jié)果圖:
第一個(gè)暫存區(qū)
第二個(gè)暫存區(qū) 由報(bào)表分析可知 5 次實(shí)驗(yàn)中,第一個(gè)暫存區(qū)得平均等待時(shí)間為 11、46,而第二個(gè)暫存區(qū)得平均等待時(shí)間為13、02,略大于第一個(gè)暫存區(qū),由此可見(jiàn),第二個(gè)暫存區(qū)得工作效率基本上由第一個(gè)暫存區(qū)決定。
4、運(yùn)行結(jié)果三個(gè)檢測(cè)臺(tái)得數(shù)據(jù)分析結(jié)果圖,三個(gè)檢測(cè)臺(tái)得 state餅圖:
(1)處理器一:
由實(shí)驗(yàn)結(jié)果分析可得,處理器一只有53%得時(shí)間處于工作狀態(tài),有32、3%得時(shí)間就是處于閑置狀態(tài),并且該處理器得準(zhǔn)備時(shí)間較長(zhǎng),占總時(shí)間得 14、7%,這些數(shù)據(jù)表明該處理器得運(yùn)行速度完全能滿(mǎn)足,甚至超過(guò)系統(tǒng)得要求,可以適當(dāng)?shù)眠x擇更處理速度慢一點(diǎn)得處理器來(lái)降低系統(tǒng)成本。
(2)處理器二:
由實(shí)驗(yàn)結(jié)果分析可得,處理器二只有 16、9%得時(shí)間處于工作狀態(tài),有66%得時(shí)間就是處于閑置狀態(tài),并且有 17、1%得時(shí)間處于準(zhǔn)備時(shí)間,以上數(shù)據(jù)說(shuō)明處理器二閑置時(shí)間過(guò)長(zhǎng),工作效率低,不能很好地配合物料二得到達(dá)速度。
(3)處理器三
由實(shí)驗(yàn)結(jié)果分析可得,處理器三得只有16、9%得時(shí)間處于工作狀態(tài),有 66、1%得時(shí)間就是處于閑置狀態(tài),并且有 16、9%得時(shí)間處于準(zhǔn)備時(shí)間,以上數(shù)據(jù)說(shuō)明處理器三得工作效率低,不能很好地配合物料三得到達(dá)速度,可以適當(dāng)?shù)媒档吞幚砥魅锰幚硭俣取?/p>
六、實(shí)驗(yàn)結(jié)果及分析
1))對(duì)得到得數(shù)據(jù)做簡(jiǎn)單分析,提出改進(jìn)措施。
答:通過(guò)對(duì)實(shí)驗(yàn)數(shù)據(jù)分析,發(fā)現(xiàn)現(xiàn)有得機(jī)器設(shè)備得設(shè)置基本能滿(mǎn)足系統(tǒng)得要求,但工作效率低,大大浪費(fèi)了設(shè)備得工作能力,可以適當(dāng)?shù)锰岣呶锪系玫竭_(dá)速度,或者降低三臺(tái)處理器得處理速度.2 2)
討論:本實(shí)驗(yàn)根據(jù)三個(gè)處理器得統(tǒng)計(jì)信息,通過(guò)狀態(tài)圖分析各處理器得工作狀態(tài),通過(guò)暫存區(qū)材料得平均等待時(shí)間,分析這個(gè)檢測(cè)流程得效率如何?就是否存在瓶頸?如果存在,怎樣才能改善整個(gè)系統(tǒng)得績(jī)效呢? 答:由報(bào)表分析可知5次實(shí)驗(yàn)中,第一個(gè)暫存區(qū)得平均等待時(shí)間為 11、46,而第二個(gè)暫存區(qū)得平
均等待時(shí)間為 13、02,略大于第一個(gè)暫存區(qū),由此可見(jiàn),第二個(gè)暫存區(qū)得工作效率基本上由第一個(gè)暫存區(qū)決定。處理器一只有53%得時(shí)間處于工作狀態(tài),有 32、3%得時(shí)間就是處于閑置狀態(tài),并且該處理器得準(zhǔn)備時(shí)間較長(zhǎng),占總時(shí)間得14、7%,這些數(shù)據(jù)表明該處理器得運(yùn)行速度完全能滿(mǎn)足,甚至超過(guò)系統(tǒng)得要求,可以適當(dāng)?shù)眠x擇更處理速度慢一點(diǎn)得處理器來(lái)降低系統(tǒng)成本。由實(shí)驗(yàn)結(jié)果分析可得,處理器二只有 16、9%得時(shí)間處于工作狀態(tài),有 66%得時(shí)間就是處于閑置狀態(tài),并且有 17、1%得時(shí)間處于準(zhǔn)備時(shí)間,以上數(shù)據(jù)說(shuō)明處理器二閑置時(shí)間過(guò)長(zhǎng),工作效率低,不能很好地配合物料二得到達(dá)速度。由實(shí)驗(yàn)結(jié)果分析可得,處理器三得只有 16、9%得時(shí)間處于工作狀態(tài),有 66、1%得時(shí)間就是處于閑置狀態(tài),并且有16、9%得時(shí)間處于準(zhǔn)備時(shí)間,以上數(shù)據(jù)說(shuō)明處理器三得工作效率低,不能很好地配合物料三得到達(dá)速度,可以適當(dāng)?shù)媒档吞幚砥魅锰幚硭俣?。整體來(lái)瞧,整個(gè)檢測(cè)流程效率不高,但就是并不存在瓶頸,能夠達(dá)到系統(tǒng)得要求,但工作效率低,大大浪費(fèi)了設(shè)備得工作能力,可以適當(dāng)?shù)锰岣呶锪系玫竭_(dá)速度,或者降低三臺(tái)處理器得處理速度.《物流系統(tǒng)建模與仿真》實(shí)驗(yàn)報(bào)告
開(kāi) :
開(kāi) 課 實(shí) 驗(yàn) 室 :
年 年
月 月
日 日 學(xué)院 自動(dòng)化 年級(jí)、專(zhuān)業(yè)、班 12級(jí)物流工程2班 姓名 段競(jìng)男 成績(jī)
課程 名稱(chēng) 物流系統(tǒng)建模與仿真 實(shí)驗(yàn)項(xiàng)目 名
稱(chēng) 多產(chǎn)品多階段制造系統(tǒng)仿真與分析實(shí)驗(yàn) 指導(dǎo)教師 張瑩瑩 教師評(píng)語(yǔ)
成績(jī)
一、實(shí)驗(yàn)?zāi)康?假定在保持車(chē)間逐日連續(xù)工作得條件下,對(duì)系統(tǒng)進(jìn)行 365 天得仿真運(yùn)行(每天按8 小時(shí)計(jì)算),計(jì)算每組機(jī)器隊(duì)列中得平均產(chǎn)品數(shù)以及平均等待時(shí)間。通過(guò)仿真運(yùn)行,找出影響系統(tǒng)得瓶頸因素,并對(duì)模型加以改進(jìn)。
二、實(shí)驗(yàn)原理 某制造車(chē)間由 5 組機(jī)器組成,第 1,2,3,4,5 組機(jī)器分別有3,2,4,3,1 臺(tái)相同得機(jī)器。這個(gè)車(chē)間需要加工三種原料,三種原料分別要求完成4、3 與5 道工序,而每道工序必須在指定得機(jī)器組上處理,按照事先規(guī)定好得工藝順序進(jìn)行。
概念模型參考如下:
三、使用儀器、材料
一臺(tái)PC 機(jī),flexsim 軟件 四、實(shí)驗(yàn)步驟
1)創(chuàng)建模型布局 使用鼠標(biāo)將需要得對(duì)象從對(duì)象庫(kù)中拖放到正視圖窗口中,根據(jù)需要使用鼠標(biāo)改變對(duì)象位置、大小與轉(zhuǎn)角。
2)連接端口 按下鍵盤(pán)上得“A”鍵,用鼠標(biāo)拖放在對(duì)象間建立輸出端口—輸入端口連接;方向?yàn)閺牧鞒鰧?shí)體得對(duì)象到流入實(shí)體得對(duì)象;模型中得對(duì)象發(fā)出與接收實(shí)體需要這種連接。本實(shí)驗(yàn)此步驟為關(guān)鍵環(huán)節(jié),連接線較復(fù)雜,故連接端口時(shí)應(yīng)注意保持清晰思路.機(jī)器 1 機(jī)器 1 機(jī)器 1 暫存區(qū) 機(jī)器 2 機(jī)器 2 暫存區(qū) 機(jī)器 3 機(jī)器 3 機(jī)器 3 機(jī)器 3
暫存區(qū) 機(jī)器 4 機(jī)器 4 機(jī)器 4 暫存區(qū) 機(jī)器 5
暫存區(qū) 1 2 3
3)定義對(duì)象參數(shù)(1)定義Source 在模型中,共有 3 個(gè)Source 實(shí)體,每個(gè)Source 對(duì)應(yīng)一類(lèi)原料,也就就是說(shuō),一個(gè) Source 生成一類(lèi)原料.我們需要設(shè)置每個(gè) Source 實(shí)體,使得每類(lèi)原料得到達(dá)間隔時(shí)間滿(mǎn)足系統(tǒng)得要求。
(2)分別按照要求定義機(jī)器組1、機(jī)器組 2、機(jī)器組 3、機(jī)器組 4、機(jī)器組 5、暫存區(qū)參數(shù)。
4)模型運(yùn)行
(1)設(shè)置 Experimenter
(2)重置模型并運(yùn)行 5)觀察結(jié)果 仿真進(jìn)行過(guò)程中,可以瞧到紅、黃、藍(lán)三種不同顏色得原料從系統(tǒng)中流過(guò),經(jīng)過(guò)不同機(jī)器組得加工,最后離開(kāi)系統(tǒng)。
仿真運(yùn)行到175200 單位時(shí)間得時(shí)候,自動(dòng)停止。
五、實(shí)驗(yàn)過(guò)程原始記錄((數(shù)據(jù)、圖表、計(jì)算等)
1、運(yùn)行結(jié)果得平面視圖: 2、提供運(yùn)行結(jié)果得立體視圖:
3、提供運(yùn)行結(jié)果五個(gè)暫存區(qū)數(shù)據(jù)分析結(jié)果圖
由數(shù)據(jù)圖可知第一個(gè)暫存區(qū)得為 物料輸入量為 888 8,平均數(shù)量為 0、63, 最大等待時(shí)間達(dá)到了 241、、94,平均等待時(shí)間為 12、5,由此可見(jiàn)暫存區(qū)一得貨物 狀態(tài)較為空閑,不就是 系統(tǒng)得瓶頸。
為 由數(shù)據(jù)圖可知第二個(gè)暫存區(qū)得物料輸入量為 1117 3,平均容量為 1 967、0 4, 最大等待時(shí)間為 6301 17、14 4為,平均等待時(shí)間為 303 3 88、42, 由此可見(jiàn)暫存區(qū)二得貨物周轉(zhuǎn)率較高, 處于比較忙碌得狀態(tài),非常 容易成為系統(tǒng)得瓶頸。
由數(shù)據(jù)圖可知第三個(gè)暫存區(qū)得物料輸入量為5 58 35,平均數(shù)量為 0、11,最大等待時(shí)間達(dá)到了 12 24、25,平均等待時(shí)間為 3、40, 由此可見(jiàn)暫存區(qū)三得效率較高,較為適應(yīng)系統(tǒng)得要求。
為 由數(shù)據(jù)圖可知第四個(gè)暫存區(qū)得物料輸入量為 3604,平均數(shù)量為 5、62 2,最大等待時(shí)間為1 164 2、37,平均等待時(shí)間為 273、55,由此可見(jiàn)暫存區(qū)四貨物周轉(zhuǎn)率高,并且運(yùn)行效率高, 能夠適應(yīng)系統(tǒng)得要求,安排合理。
由數(shù)據(jù)圖可知第五 個(gè)暫存區(qū)得物料為 輸入量為 7 208,平均數(shù)量為2 243、75, 最大等待時(shí)間為 1 0936、85,平均等待時(shí)間為 5956, 由此可見(jiàn)暫存區(qū)五 容易造成貨物得堆積與等待,不 能夠適應(yīng)系統(tǒng)得要求,安排 不夠 合理, 為該系統(tǒng)得瓶頸.六、實(shí)驗(yàn)結(jié)果及分析
對(duì)得到得數(shù)據(jù)做簡(jiǎn)單分析,提出改進(jìn)措施:
暫存區(qū) 1 2 3 4 5平均等待時(shí)間 12、50 30388、42 3、40 273、55 5956
平均數(shù)量 0、63 1967、04 0、11 5、62 243、75 由數(shù)據(jù)圖可知第一個(gè)暫存區(qū)得物料輸入量為 8888,平均數(shù)量為 0、63,最大等待時(shí)間達(dá)到了241、94,平均等待時(shí)間為12、5,由此可見(jiàn)暫存區(qū)一得貨物狀態(tài)較為空閑,不就是系統(tǒng)得瓶頸.由數(shù)據(jù)圖可知第二個(gè)暫存區(qū)得物料輸入量為11173,平均容量為 1967、04,最大等待時(shí)間為 63017、14,平均等待時(shí)間為 30388、42,由此可見(jiàn)暫存區(qū)二得貨物周轉(zhuǎn)率較高,處于比較忙碌得狀態(tài),非常容易成為系統(tǒng)得瓶頸.由數(shù)據(jù)圖可知第三個(gè)暫存區(qū)得物料輸入量為 5835,平均數(shù)量為0、11,最大等待時(shí)間達(dá)到了 124、25,平均等待時(shí)間為 3、40,由此可見(jiàn)暫存區(qū)三得效率較高,較為適應(yīng)系統(tǒng)得要求。由數(shù)據(jù)圖可知第四個(gè)暫存區(qū)得物料輸入量為 3604,平均數(shù)量為 5、62,最大等待時(shí)間為 1642、37,平均等待時(shí)間為 273、55,由此可見(jiàn)暫存區(qū)四貨物周轉(zhuǎn)率高,并且運(yùn)行效率高,能夠適應(yīng)系
統(tǒng)得要求,安排合理.由數(shù)據(jù)圖可知第五個(gè)暫存區(qū)得物料輸入量為 7208,平均數(shù)量為 243、75,最大等待時(shí)間為 10936、85,平均等待時(shí)間為 5956,由此可見(jiàn)暫存區(qū)五容易造成貨物得堆積與等待,不能夠適應(yīng)系統(tǒng)得要求,安排不夠合理,為該系統(tǒng)得瓶頸.由數(shù)據(jù)分析可知暫存區(qū)二、五就是系統(tǒng)得瓶頸所在,應(yīng)該提高暫存區(qū)二、暫存區(qū)五得處理前一道工序速度,即增加工序一與工序二得機(jī)器數(shù)量,以此來(lái)提高工序 1、2 得處理速度,或者調(diào)整物料加工得順序,從而提高整個(gè)系統(tǒng)得運(yùn)營(yíng)效率。
《物流系統(tǒng)建模與仿真》實(shí)驗(yàn)報(bào)告
開(kāi)課實(shí)驗(yàn)室:
****年**月**日 日 學(xué)院 自動(dòng)化 年級(jí)、專(zhuān)業(yè)、班 12 級(jí)物流工程 2班 姓名段競(jìng)男 成績(jī)
課程 名稱(chēng) 物流系統(tǒng)建模與仿真 實(shí)驗(yàn)項(xiàng)目 名
稱(chēng) 混合流水線系統(tǒng)仿真與分析實(shí)驗(yàn) 指導(dǎo)教師 張瑩瑩 教師評(píng)語(yǔ)
成績(jī)
一、實(shí)驗(yàn)?zāi)康?主要掌握單臺(tái)處理器在處理多種產(chǎn)品時(shí)對(duì)于處理順序以及時(shí)間參數(shù)得設(shè)置.熟悉先進(jìn)先出這種存儲(chǔ)模式得控制方法.二、實(shí)驗(yàn)原理 多對(duì)象流水線生產(chǎn)有兩種基本形式。一種就是可變流水線,其特點(diǎn)就是:在計(jì)劃期內(nèi),按照一定得間隔期,成批輪番生產(chǎn)多種產(chǎn)品;在間隔期內(nèi),只生產(chǎn)一種產(chǎn)品,在完成規(guī)定得批量后,轉(zhuǎn)生產(chǎn)另一種產(chǎn)品。另一種就是混合流水線,其特點(diǎn)就是:在同一時(shí)間內(nèi),流水線上混合生產(chǎn)多種產(chǎn)品。按固定得混合產(chǎn)品組組織生產(chǎn),即將不同得產(chǎn)品按固定得比例與生產(chǎn)順序編成產(chǎn)品組。一個(gè)組一個(gè)組地在流水線上進(jìn)行生產(chǎn)。
三、使用儀器、材料
PC 機(jī)一臺(tái),flexsim 軟件 四、實(shí)驗(yàn)步驟
1)創(chuàng)建模型布局
從左邊得實(shí)體庫(kù)中依次拖拽出所有實(shí)體(一個(gè) Source,5個(gè) Queue,12個(gè) Processor,一個(gè)Conveyor,一個(gè)Sink)放在右邊模型視圖中,調(diào)整至適當(dāng)?shù)梦恢?如圖所示:
2)連接端口
根據(jù)流動(dòng)實(shí)體得路徑來(lái)連接不同實(shí)體得端口.按住鍵盤(pán)上得“A”鍵,與前面章節(jié)得操作一樣,按上圖中得箭頭所指向依次連接各個(gè)實(shí)體.分別(注意方向)從 Source 連到 GeneralQueue,GeneralQueue 連到GeneralMachine1,GeneralQueue連到 GeneralMachine2, GeneralQueue 連到 GeneralMachine3,GeneralMachine1 連到 DrillingQueue,GeneralMachine2 連到 DrillingQueue,GeneralMachine3 連到 DrillingQueue,DrillingQueue 連到 DrillingMachine1,DrillingQueue連到 DrillingMachine2,DrillingQueue連到DrillingMachine3,DrillingMachine1連到MillingQueue,DrillingMachine2 連到 MillingQueue,DrillingMachine3 連到MillingQueue,MillingQueue 連到 MillingMachine1,MillingQueue連到MillingMachine2,MillingMachine1 連到 GrindingQueue,MillingMachine2連到 GrindingQueue,GrindingQueue連到 GrindingMachine1,GrindingQueue 連到 GrindingMachine2,GrindingQueue 連到GrindingMachine3,GrindingMachine1 連到 T
estingQueue,GrindingMachine2連到TestingQueue,GrindingMachine3連到TestingQueue,TestingQueue 連到 TestingMachine,TestingMachine 連到 Conveyor,Conveyor 連到Sink。完成后,如圖所示:
3)定義對(duì)象參數(shù)
分別按照要求定義 Source、各機(jī)器工位、暫存區(qū)參數(shù)。
4)模型運(yùn)行
(1)重置模型并運(yùn)行(2)加快仿真模型運(yùn)行速度 如果我們只就是關(guān)心仿真結(jié)果,而對(duì)仿真得過(guò)程不感興趣,則我們可以加快仿真速度,迅速得到結(jié)果.圖 3、1仿真速度控制比例條 如圖 3、1,鼠標(biāo)左鍵一直按住比例尺,移動(dòng)到合適得比例位置,以便迅速得到結(jié)果。
5)觀察結(jié)果
仿真進(jìn)行過(guò)程中,可以瞧到紅、綠、藍(lán)三種不同顏色得產(chǎn)品從系統(tǒng)中流過(guò),經(jīng)過(guò)不同機(jī)器組得加工,最后離開(kāi)系統(tǒng),如下圖:
6)結(jié)果分析
當(dāng)仿真運(yùn)行自動(dòng)結(jié)束后,我們打開(kāi) Flexsim得工具欄里得 Stat(yī)s 目錄下得Standard Report 選項(xiàng),如圖所示:
我們通過(guò)來(lái)增加、以及來(lái)減少需要輸出得報(bào)告內(nèi)容,使得報(bào)告包含以上所列得 5 個(gè)部分得數(shù)據(jù):idle就是空閑時(shí)間,processing 就是工作時(shí)間,blocked就是產(chǎn)品在設(shè)備等待時(shí)間,stats_staytimeavg就是平均停留時(shí)間,stats_input 就是輸入產(chǎn)品數(shù),stats_output 就是輸出產(chǎn)品數(shù),設(shè)置完成后,如圖所示:
點(diǎn)擊后生成如圖所示表格:
從上表中我們可以很方便得瞧到總運(yùn)行時(shí)間就是 7728min,以及各個(gè)設(shè)備得輸入輸出產(chǎn)品數(shù),處理時(shí)間等信息.錄記始原程過(guò)驗(yàn)實(shí)、五? 五、實(shí)驗(yàn)過(guò)程原始記錄((數(shù)據(jù)、圖表、計(jì)算等)
1、運(yùn)行結(jié)果得二維平面圖
2、運(yùn)行結(jié)果得三維立體圖
4、投產(chǎn)按照 1、2、3 得順序進(jìn)行得仿真報(bào)告 Flexsim Summary Report Time: 7728
Object Class stats_output stats_staytimemin stats_input idle blocked processing
Source1 Source 1700 0 0 0 7720 0 Queue2 Queue 1700 0 1700 0 0 0 Processor3 Processor 500 4 500 594 0 2400 Processor4 Processor 600 4 600 297 0 2700 Processor5 Processor 600 4 600 297 0 2700 ConCon17010 1700 0 0
veyor6 veyor 0 0 Processor7 Processor 600 4 600 203 0 2800 Processor8 Processor 600 4 600 203 0 2800 Processor9 Processor 500 4 500 599 0 2400 Queue10 Queue 1700 0 1700 0 0 0 QueQue1700 1700 0 0
ue11 ue 0 0 Processor12 Processor 850 3 850 10 0 3050 Processor13 Processor 850 3 850 11 0 3050 Processor14 Processor 567 4 567 796 0 2268 ProcessorProcessor 567 4 567 797 0 2268 Processor16 Processor 566 4 566 798 0 2264 Queue17 Queue 1700 0 1700 0 0 0 Queue18 Queue 1700 0 1700 0 0 0 Processor19 Processor 1700 1 1700 18 0 7700 Sink20 Sink 0 0 1700 0 0 0 由報(bào)表分析可知,按照 1 1、2 2、3得順序投產(chǎn)得總得處理時(shí)間為77 7 28 8。
投產(chǎn)按照1、3、2 得順序進(jìn)行得仿真報(bào)告:
Flexsim Summary Report Time: 7728
Object Class stats_input stats_output stats_staytimeavg idle processing blocked Source1 Source 0 1700 0 0 0 7720 Queue2 Queue 1700 1700 4、588235 0 0 0 ProcProc502 502 4、79586 2408 0
essor3 essor 6813 Processor4 Processor 600 600 4、5 298 2700 0 Processor5 Processor 598 598 4、501672 306 2692 0 Queue6 Queue 1700 1700 0、411765 0 0 0 Processor7 Processor 600 600 4、666667 203 2800 0 PrPr60604、20280
ocessor8 ocessor 0 0 666667 3 00 Processor9 Processor 500 500 4、8 599 2400 0 Queue10 Queue 1700 1700 28、32294 0 0 0 Processor11 Processor 850 850 3、588235 10 3050 0 ProcessorProcessor 850 850 3、588235 11 3050 0 Queue13 Queue 1700 1700 0 0 0 0 Processor14 Processor 567 567 4 796 2268 0 Processor15 Processor 567 567 4 797 2268 0 Processor16 Processor 566 566 4 798 2264 0 QueuQueu1700 1700 23290 0 0
e17 e、648 Conveyor19 Conveyor 1700 1700 10 0 0 0 Sink20 Sink 1700 0 0 0 0 0 Processor21 Processor 1700 1700 4、529412 18 7700 0 由報(bào)表分析可知,按照 1、3、2 得順序投產(chǎn)得總得處理時(shí)間為 7728.投產(chǎn)按照 2、1、3 得順序進(jìn)行得仿真報(bào)告:
Flexsim Summary Report Time:
7725 Object Class stats_input stats_output stats_staytimeavg idle processing blocked Source1 Source 0 1700 0 0 0 7720 Queue2 Queue 1700 1700 4、588235 0 0 0 Processor3 Processor 503 503 4、795229 588 2412 0 Processor4 Processor 600 600 4、5 299 2700 0 Processor5 Processor 597 597 4、502513 311 2688 0
Queue6 Queue 1700 1700 0、408824 0 0 0 Processor7 Processor 600 600 4、666667 205 2800 0 Processor8 Processor 600 600 4、666667 205 2800 0 Processor9 Processor 500 500 4、8 605 2400 0 Queue10 Queue 1700 1700 28、16529 0 0 0 Processor11 Processor 851 851 3、587544 11 3053 0 Processor12 Processor 849 849 3、588928 15 3047 0 Queue13 Queue 1700 1700 0 0 0 0 Processor14 Processor 567 567 4 796 2268 0 Processor15 Processor 567 567 4 798 2268 0 Processor16 Processor 566 566 4 804 2264 0 Queue17 Queue 1700 1700 2317、985 0 0 0 Conveyor19 Conveyor 1700 1700 10 0 0 0 Sink20 Sink 1700 0 0 0 0 0 Processor21 Processor 1700 1700 4、529412 15 7700 0 由報(bào)表分析可知,按照 2 2、1、3得順序投產(chǎn)得總得處理時(shí)間為 772 5.析分及果結(jié)驗(yàn)實(shí)、六? 六、實(shí)驗(yàn)結(jié)果及分析1)
實(shí)驗(yàn)結(jié)果: :由以上報(bào)表分析可知 6 種投產(chǎn)順序中,按照 2、1、3 得順序投產(chǎn)得總得處理時(shí)間最短為7725,故以這種投產(chǎn)順序作為最佳投產(chǎn)方式。
2)討論: :系統(tǒng)還存在很多可以改善得地方,請(qǐng)指出有哪些地方就是有待改善得,理由就是什么.答:可以適當(dāng)?shù)媒档吞幚砥鞯眠\(yùn)行速度,除了第三組得處理器空閑時(shí)間較短外,其余各組處理器得空閑時(shí)間過(guò)長(zhǎng)。尤其就是,其中暫存區(qū) 17 得平均等待時(shí)間過(guò)長(zhǎng),可以適當(dāng)?shù)谜{(diào)整運(yùn)行速度,以提高整個(gè)系統(tǒng)得運(yùn)行效率。
實(shí)驗(yàn)報(bào)告打印格式說(shuō)明 1.標(biāo)題:三號(hào)加粗黑體 2.開(kāi)課實(shí)驗(yàn)室:5 號(hào)加粗宋體 3.表中內(nèi)容:(1)標(biāo)題:5號(hào)黑體(2)正文:5 號(hào)宋體
4.紙張:16 開(kāi)(20cm×26.5cm)5.版芯 上距:2cm 下距:2cm 左距:2.8cm 右距:2.8cm 說(shuō)明: 1、“年級(jí)專(zhuān)業(yè)班”可填寫(xiě)為“00 電子 1 班",表示 2000 級(jí)電子工程專(zhuān)業(yè)第1班.2、實(shí)驗(yàn)成績(jī)可按五級(jí)記分制(即優(yōu)、良、中、及格、不及格),或者百分制記載,若需要將實(shí)驗(yàn)成績(jī)加入對(duì)應(yīng)課程總成績(jī)得,則五級(jí)記分應(yīng)轉(zhuǎn)換為百分制。