2014A題 嫦娥三號軟著陸軌道設(shè)計與控制策略
優(yōu)秀論文合集:
鏈接:https://pan.baidu.com/s/1NtSBfE-jCXXpwhLOX1InXQ?pwd=uon1
提取碼:uon1
–來自百度網(wǎng)盤超級會員V6的分享
題目下載地址
http://www.mcm.edu.cn/html_cn/node/93b5f5d9986693c2ebd67962cdc7d9df.html
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-SF7BrdpX-1688196030588)(2023-07-01-10-32-34.png)]](image-1.png)
嫦娥三號于2013年12月2日1時30分成功發(fā)射,12月6日抵達月球軌道。嫦娥三號在著陸準(zhǔn)備軌道上的運行質(zhì)量為2.4t,其安裝在下部的主減速發(fā)動機能夠產(chǎn)生1500N到7500N的可調(diào)節(jié)推力,其比沖(即單位質(zhì)量的推進劑產(chǎn)生的推力)為2940m/s,可以滿足調(diào)整速度的控制要求。在四周安裝有姿態(tài)調(diào)整發(fā)動機,在給定主減速發(fā)動機的推力方向后,能夠自動通過多個發(fā)動機的脈沖組合實現(xiàn)各種姿態(tài)的調(diào)整控制。嫦娥三號的預(yù)定著陸點為19.51W,44.12N,海拔為-2641m(見附件1)。
嫦娥三號在高速飛行的情況下,要保證準(zhǔn)確地在月球預(yù)定區(qū)域內(nèi)實現(xiàn)軟著陸,關(guān)鍵問題是著陸軌道與控制策略的設(shè)計。其著陸軌道設(shè)計的基本要求:著陸準(zhǔn)備軌道為近月點15km,遠月點100km的橢圓形軌道;著陸軌道為從近月點至著陸點,其軟著陸過程共分為6個階段(見附件2),要求滿足每個階段在關(guān)鍵點所處的狀態(tài);盡量減少軟著陸過程的燃料消耗。
根據(jù)上述的基本要求,請你們建立數(shù)學(xué)模型解決下面的問題:
(1)確定著陸準(zhǔn)備軌道近月點和遠月點的位置,以及嫦娥三號相應(yīng)速度的大小與方向。
(2)確定嫦娥三號的著陸軌道和在6個階段的最優(yōu)控制策略。
(3)對于你們設(shè)計的著陸軌道和控制策略做相應(yīng)的誤差分析和敏感性分析。
附件1: 問題的背景與參考資料;
附件2: 嫦娥三號著陸過程的六個階段及其狀態(tài)要求;
附件3:距月面2400m處的數(shù)字高程圖;
附件4:距月面100m處的數(shù)字高程圖。
基本概念解釋
慣性系和非慣性系
慣性系和非慣性系是物理學(xué)中用來描述物體運動狀態(tài)的兩個基本概念。
-
慣性系(Inertial Frame of Reference):慣性系是指一個參考系,在該參考系中,物體若受到力的作用,則會產(chǎn)生加速度。在慣性系中,牛頓定律成立,即物體沒有受到外力時保持靜止或勻速直線運動。
-
非慣性系(Non-Inertial Frame of Reference):非慣性系是指一個以變速運動的參考系。在非慣性系中,由于觀察者所處的系統(tǒng)自身有加速度,所以物體可能出現(xiàn)表面上沒有力的情況下產(chǎn)生加速度的現(xiàn)象。這是因為在非慣性系中,存在一個慣性力,這個力與觀察者的加速度成正比,且方向相反。
在非慣性系中,為了使牛頓定律仍然成立,我們需要引入慣性力來解釋觀察到的現(xiàn)象。常見的非慣性系包括旋轉(zhuǎn)參考系、加速度參考系等。
例如,當(dāng)我們在車輛上突然剎車或加速時,乘坐車輛的人會感到向前或向后擺動。這個擺動的原因是人體本身具有慣性,當(dāng)車輛加速或減速時,人體受到一個向后或向前的慣性力,產(chǎn)生擺動的現(xiàn)象。
總結(jié)起來,慣性系是指一個參考系,在其中牛頓定律成立,物體若受到力的作用則會產(chǎn)生加速度;非慣性系是指一個變速運動的參考系,物體可能在表面上沒有力的情況下產(chǎn)生加速度,此時需要引入慣性力來解釋觀察到的現(xiàn)象。
橢圓
橢圓是一個經(jīng)典的幾何學(xué)概念,它是平面上一組點構(gòu)成的集合,這組點到兩個給定的焦點的距離之和是一個常數(shù)。橢圓可以看作是一個拉伸的圓形,具有一些獨特的性質(zhì)。
以下是一些關(guān)于橢圓的基本特征:
-
焦點:橢圓有兩個焦點,分別記作 F1 和 F2。每個點都是焦點-直線距離之和等于常數(shù)的定義點。
-
長軸和短軸:通過兩個焦點繪制的直線稱為長軸,它的長度為2a;與長軸垂直并通過橢圓中心的直線稱為短軸,它的長度為2b。a 和 b 之間的關(guān)系是 a > b。
-
半長軸和半短軸:長軸長度的一半稱為半長軸(a),短軸長度的一半稱為半短軸(b)。
-
離心率:離心率(e)定義為焦點與橢圓中心之間的距離與半長軸的比值。它是橢圓的形狀特征之一,范圍介于0和1之間。當(dāng)離心率為0時,橢圓退化為一個圓;當(dāng)離心率接近1時,橢圓趨近于變成一個細長的形狀(稱為扁平橢圓)。
-
焦距:焦距是兩個焦點之間的距離,等于2ae,其中e是離心率。
-
焦半徑:焦半徑是從橢圓上任意一點到兩個焦點的距離之和。
-
方程式:橢圓的標(biāo)準(zhǔn)方程是(x/a)^2 + (y/b)^2 = 1,其中a和b是半長軸和半短軸的長度。
橢圓在數(shù)學(xué)、物理、工程以及其他許多領(lǐng)域中都有廣泛的應(yīng)用。它們具有對稱性和良好的幾何特性,因此在設(shè)計曲線、天體力學(xué)、光學(xué)系統(tǒng)等方面起著重要作用。同時,橢圓還是橢圓積分、焦散等概念的基礎(chǔ)。
牛頓定律
牛頓定律,也稱為牛頓運動定律,是經(jīng)典力學(xué)的基礎(chǔ)之一,由英國物理學(xué)家艾薩克·牛頓在17世紀(jì)提出。它描述了物體運動狀態(tài)與作用在物體上的力之間的關(guān)系。
牛頓定律包括三個定律:
-
牛頓第一定律(慣性定律):如果一個物體受到合力為零的作用,它將保持靜止或以恒定速度直線運動(即勻速直線運動)。這意味著物體在沒有外力作用時具有慣性,不會改變其狀態(tài)。
-
牛頓第二定律(運動定律):當(dāng)作用于一個物體上的合力不為零時,物體將產(chǎn)生加速度,其大小與合力成正比,與物體的質(zhì)量成反比。用數(shù)學(xué)公式表示為 F = ma,其中 F 是合力,m 是物體的質(zhì)量,a 是物體的加速度。
-
牛頓第三定律(作用-反作用定律):任何兩個物體之間的相互作用力都是相等且方向相反的。換句話說,如果物體 A 對物體 B 施加一個力,那么物體 B 對物體 A 也會施加一個力,且這兩個力大小相等、方向相反。
牛頓定律是經(jīng)典力學(xué)的基礎(chǔ),描述了物體運動以及力的性質(zhì)和行為。它被廣泛應(yīng)用于工程、天體力學(xué)、運動學(xué)、靜力學(xué)等領(lǐng)域,并為后續(xù)科學(xué)理論的發(fā)展奠定了基礎(chǔ)。但需要注意的是,牛頓定律對宏觀物體運動的描述,在微觀粒子、相對論和量子力學(xué)等領(lǐng)域可能不適用,需要采用更加精確的理論模型。
開普勒定律
開普勒定律是描述行星運動的定律,由德國天文學(xué)家約翰內(nèi)斯·開普勒在17世紀(jì)提出。這些定律揭示了行星繞太陽旋轉(zhuǎn)的規(guī)律,為日心說提供了重要的支持。
開普勒定律包括以下三個定律:
-
第一定律(橢圓軌道定律):行星繞太陽運動的軌道是一個橢圓,太陽位于橢圓的一個焦點上。
-
第二定律(面積速度定律):在相等時間內(nèi),行星與太陽連線所掃過的面積是相等的。這意味著當(dāng)行星離太陽較近時,它的速度會增加;當(dāng)行星離太陽較遠時,它的速度會減小。
-
第三定律(調(diào)和定律):行星繞太陽的軌道周期的平方與它的平均距離的立方成正比。用數(shù)學(xué)公式表示為 T^2 = k * R^3,其中 T 是軌道周期,R 是平均距離,k 是一個常數(shù)。
這些定律揭示了行星運動的規(guī)律,幫助我們理解了行星在太陽系中的運動方式。開普勒的發(fā)現(xiàn)為后來牛頓引力定律的建立提供了重要依據(jù),對天體力學(xué)和宇航科學(xué)的發(fā)展起到了重要作用。
需要注意的是,開普勒定律適用于太陽系中的行星運動,對于其他恒星系統(tǒng)或者宇宙其他部分的天體運動可能存在差異。同時,開普勒定律是經(jīng)驗性的,牛頓引力定律提供了更為深入的解釋和基礎(chǔ)。
曲率半徑
曲率半徑是描述曲線曲率大小的物理量,通常用符號 R 表示。它是指某一點上曲線的切線與曲線在該點附近的凸側(cè)(或凹側(cè))相切的圓的半徑。
對于平面曲線而言,曲率半徑可以通過以下公式計算:
R = (1 + (dy/dx)2)(3/2) / |d2y/dx2|
其中,dy/dx 是曲線在該點處的斜率,d2y/dx2 是曲線的二階導(dǎo)數(shù)。|d2y/dx2| 表示取二階導(dǎo)數(shù)的絕對值。
曲率半徑越小,表示曲線的曲率越大,彎曲程度更強。當(dāng)曲率半徑為無窮大時,即為一條直線。
曲率半徑在物理學(xué)和工程學(xué)中有廣泛應(yīng)用。例如,在光學(xué)中,曲率半徑被用來描述透鏡的形狀和光線的折射;在道路設(shè)計中,曲率半徑用來評估道路的轉(zhuǎn)彎半徑和行駛安全性等。
天體運動常用公式
天體運動常用的公式包括牛頓引力定律和開普勒定律。下面是這兩個定律的常用公式:
-
牛頓引力定律:
F = G * (m1 * m2) / r^2其中,F(xiàn) 是兩個天體之間的引力大小,G 是萬有引力常數(shù),m1 和 m2 是兩個天體的質(zhì)量,r 是它們之間的距離。
-
開普勒第三定律:
T^2 = (4π^2 / G * (m1 + m2)) * a^3其中,T 是行星繞恒星一周所需的時間(軌道周期),G 是萬有引力常數(shù),m1 和 m2 分別是恒星和行星的質(zhì)量,a 是行星軌道的半長軸。
當(dāng)涉及到天體運動時,還有一些其他常用的公式和方程,包括但不限于以下幾個:
-
圓周運動的速度:
v = 2πr / T其中,v 是物體在圓周軌道上的線速度,r 是軌道半徑,T 是軌道周期。
-
圓周運動的加速度:
a = v^2 / r = 4π^2r / T^2其中,a 是物體在圓周軌道上的向心加速度。
-
開普勒第二定律的面積速度定律(針對橢圓軌道):
dA / dt = 0.5 * r^2 * dθ / dt其中,dA / dt 是行星與太陽連線所掃過的面積的變化率,r 是行星到太陽的距離,dθ / dt 是行星在軌道上的角速度。
-
行星軌道的離心率計算:
e = (r_max - r_min) / (r_max + r_min)其中,r_max 和 r_min 分別是橢圓軌道的最大半徑和最小半徑。
數(shù)學(xué)模型的誤差分析和靈敏度分析
數(shù)學(xué)模型的誤差分析和靈敏度分析是對模型進行評估和改進的重要工具。它們幫助我們了解模型的穩(wěn)定性、可靠性以及對輸入?yún)?shù)的響應(yīng)程度。
誤差分析(Error Analysis)關(guān)注的是模型的輸出與實際觀測值或真實情況之間的差異。它幫助我們評估模型的精確性和準(zhǔn)確性,并確定模型中存在的誤差來源。常見的誤差類型包括:隨機誤差、系統(tǒng)誤差、模型結(jié)構(gòu)誤差等。通過誤差分析,我們可以定量評估模型的預(yù)測能力,并識別需要改進的方面。常用的誤差度量指標(biāo)包括平均絕對誤差(MAE)、均方誤差(MSE)和均方根誤差(RMSE)等。
靈敏度分析(Sensitivity Analysis)旨在研究模型輸出對輸入?yún)?shù)變動的響應(yīng)程度。它幫助我們了解模型對不同參數(shù)值的敏感程度,從而評估模型的穩(wěn)定性和可靠性。靈敏度分析可以采用不同的方法,包括一次性變動一個參數(shù)、一次性變動多個參數(shù)、逐步變動參數(shù)等。常見的靈敏度分析方法包括參數(shù)敏感度分析、全局靈敏度分析、局部靈敏度分析等。通過靈敏度分析,我們可以確定哪些參數(shù)對模型的輸出影響最大,有助于優(yōu)化模型設(shè)計和參數(shù)選擇。
誤差分析和靈敏度分析是數(shù)學(xué)模型評估與改進的重要手段,它們幫助我們了解模型的準(zhǔn)確性、穩(wěn)定性和可靠性,并指導(dǎo)模型的改進和優(yōu)化。同時,它們也有助于提高數(shù)學(xué)模型的可解釋性和應(yīng)用范圍,從而更好地支持決策和問題求解。
imread
https://ww2.mathworks.cn/help/matlab/ref/imread.html
根據(jù)您提供的信息,imread
是一個常用的函數(shù),用于從圖像文件中讀取圖像數(shù)據(jù)。它是圖像處理庫中的一個函數(shù),可以用于加載圖像文件到內(nèi)存中以供后續(xù)處理和分析。
在Python中,可以使用OpenCV庫中的imread
函數(shù)來讀取圖像文件。以下是一個示例代碼:
import cv2
# 讀取圖像文件
image = cv2.imread('image.jpg')
# 顯示圖像
cv2.imshow('Image', image)
cv2.waitKey(0)
cv2.destroyAllWindows()
在上述代碼中,image.jpg
是待讀取的圖像文件的路徑。imread
函數(shù)將圖像文件加載到image
變量中,然后可以對圖像進行進一步的處理和分析。imshow
函數(shù)用于顯示圖像,waitKey(0)
等待用戶按下鍵盤上的任意鍵,destroyAllWindows
用于關(guān)閉圖像顯示窗口。
需要注意的是,imread
函數(shù)的參數(shù)可以是圖像文件的路徑,也可以是一個URL地址。此外,imread
函數(shù)還可以選擇不同的參數(shù)來解析和處理圖像,例如指定圖像的通道數(shù)、顏色空間等。具體的參數(shù)設(shè)置可以根據(jù)需要進行調(diào)整。
關(guān)于比沖
比沖或比沖量是對一個推進系統(tǒng)的燃燒效率的描述。比沖的定義為:火箭發(fā)動機單位質(zhì)量推進劑產(chǎn)生的沖量,或單位流量的推進劑產(chǎn)生的推力。比沖的單位為米/秒(m/s),并滿足下列關(guān)系式:
,其中是發(fā)動機的推力,單位是牛頓;是以米/秒為單位的比沖;是單位時間燃料消耗的公斤數(shù)。
關(guān)于月球參數(shù)
月球平均半徑、赤道平均半徑和極區(qū)半徑分別為1737.013km、1737.646km和1735.843km,月球的形狀扁率為1/963.7256,月球質(zhì)量是7.3477×1022kg。月球與地球距離最遠(遠地點):406610km,最近(近地點):356330km,平均距離為384400km。
NASA月球勘測軌道飛行器使用的月面海拔零點,是月球的平均半徑所在的高度。所以,嫦娥三號著陸點的海拔為-2640m,即該點到月球中心的距離要比月球的平均半徑少2640m。
題目分析
根據(jù)所提供的信息,我們可以根據(jù)以下步驟進行數(shù)學(xué)建模和解決問題:
(1) 確定著陸準(zhǔn)備軌道的位置和速度:
- 近月點的位置:根據(jù)要求,近月點距離月球中心的距離為15km。由于未提供月球的半徑信息,我們無法確定近月點相對于月球表面的位置。
- 遠月點的位置:根據(jù)要求,遠月點距離月球中心的距離為100km。同樣地,由于未提供月球的半徑信息,我們無法確定遠月點相對于月球表面的位置。
在給定位置的情況下,可以通過計算來確定嫦娥三號相應(yīng)的速度大小和方向。
(2) 確定嫦娥三號的著陸軌道和最優(yōu)控制策略:
- 著陸軌道:根據(jù)要求,著陸軌道是從近月點至著陸點的軌道段。根據(jù)附件2所提供的信息,軟著陸過程共分為6個階段。我們可以通過數(shù)學(xué)模型求解著陸軌道,使得滿足每個階段在關(guān)鍵點的狀態(tài)要求。
- 最優(yōu)控制策略:為了減少軟著陸過程中的燃料消耗,我們可以采用最優(yōu)控制策略。這需要考慮到多個因素,包括燃料消耗、推進劑的質(zhì)量變化、推力方向的調(diào)整等。最優(yōu)控制策略可以通過數(shù)學(xué)優(yōu)化方法來求解,以實現(xiàn)在給定約束條件下最小化燃料消耗的目標(biāo)。
(3) 誤差分析和敏感性分析:
對于設(shè)計的著陸軌道和控制策略,我們可以進行誤差分析和敏感性分析。這可以包括考慮不同的初始條件和參數(shù)誤差,以評估系統(tǒng)的穩(wěn)定性和可靠性。我們可以通過數(shù)值模擬和系統(tǒng)仿真來進行誤差分析和敏感性分析,以評估設(shè)計的軌道和控制策略對于不確定性的魯棒性和適應(yīng)性。
對于問題的詳細分析,我們將按照步驟(1)、(2)和(3)依次進行。
(1)確定著陸準(zhǔn)備軌道近月點和遠月點的位置,以及嫦娥三號相應(yīng)速度的大小與方向。
由于未提供月球的半徑信息,我們無法確定近月點和遠月點相對于月球表面的位置。但是我們可以假設(shè)月球的半徑為R,那么近月點的位置就是R+15km,遠月點的位置就是R+100km。
要確定嫦娥三號相應(yīng)速度的大小與方向,我們可以使用開普勒定律和牛頓運動定律來計算。
根據(jù)開普勒定律,我們可以計算嫦娥三號在近月點和遠月點的速度大小。速度大小由以下公式給出:
v = sqrt(GM / r)
其中,G是引力常數(shù),M是月球的質(zhì)量,r是嫦娥三號與月球中心的距離。
根據(jù)牛頓運動定律,我們可以計算嫦娥三號在近月點和遠月點的速度方向。速度方向與加速度方向相同,加速度由以下公式給出:
a = F / m
其中,F(xiàn)是嫦娥三號所受的合力,m是嫦娥三號的質(zhì)量。
(2)確定嫦娥三號的著陸軌道和在6個階段的最優(yōu)控制策略。
為了確定嫦娥三號的著陸軌道和最優(yōu)控制策略,我們可以采用數(shù)學(xué)建模和優(yōu)化方法。以下是一個可能的方法:
- 首先,建立嫦娥三號的運動方程和約束條件。這可以通過牛頓運動定律和航天器運動學(xué)原理來建立。
- 其次,將問題轉(zhuǎn)化為一個最優(yōu)控制問題。我們可以采用動態(tài)規(guī)劃或者最優(yōu)控制理論中的方法,將問題轉(zhuǎn)化為一個優(yōu)化過程,以最小化燃料消耗為目標(biāo)。
- 接下來,可以采用數(shù)值優(yōu)化方法,如線性規(guī)劃、非線性規(guī)劃或動態(tài)規(guī)劃等方法,來求解最優(yōu)控制問題。這將涉及到計算的迭代過程,以逐步優(yōu)化控制策略。
- 最后,通過仿真和實驗驗證,評估設(shè)計的著陸軌道和控制策略的性能和可行性。
(3)對于設(shè)計的著陸軌道和控制策略做相應(yīng)的誤差分析和敏感性分析。
誤差分析和敏感性分析可以用于評估著陸軌道和控制策略的魯棒性和可靠性。以下是一些可能的分析方法: - 誤差分析:可以考慮不同的初始條件和參數(shù)誤差,以評估系統(tǒng)的穩(wěn)定性和預(yù)測性能。
- 敏感性分析:可以通過改變關(guān)鍵參數(shù)的值,來評估系統(tǒng)對參數(shù)變化的敏感程度,以確定系統(tǒng)的魯棒性和適應(yīng)性。
這些分析可以通過數(shù)值模擬和系統(tǒng)仿真來進行,以評估設(shè)計的軌道和控制策略在不確定性條件下的表現(xiàn)。
需要指出的是,由于缺乏具體的數(shù)學(xué)模型和數(shù)據(jù),我們無法給出問題的詳細解答。上述的分析方法只是一個指導(dǎo),具體的數(shù)學(xué)模型和計算方法需要根據(jù)更詳細的要求和數(shù)據(jù)進行進一步的研究和分析。因此,為了解決問題,我們建議您進行進一步的研究,并根據(jù)具體情況來設(shè)計數(shù)學(xué)模型和計算方法。
摘要
根據(jù)給定的排版要求,下面是重新排版過的內(nèi)容:
摘要:
本題以嫦娥三號登月為背景,分析了登月軌道參數(shù),并重點討論了著陸軌道設(shè)計優(yōu)化。同時對所使用的優(yōu)化方案進行了誤差分析與靈敏度分析。
第一問中,由于正面求解條件有限,難以直接得到近月點和遠月點的位置以及準(zhǔn)備軌道參數(shù)。因此,利用逆推思路,通過已知條件求解主減速階段運動過程,并通過水平位移量反推近月點位置。通過物理知識和工程經(jīng)驗,建立了微分方程模型,并將其離散化為差分方程組。通過計算機模擬行為,擬合出最接近解的軌跡,得到近月點位置為19.51°W,31.50°N,距月面15km,速度為1692.46m/s,方向指向預(yù)期落點;遠月點位置為160.49°E,31.50°S,距月面100km,速度為1612.15m/s,方向與近日點反向平行。
第二問中,按照題意將其分為五個階段。前兩個階段利用二體模型和力學(xué)方程組進行分析,并對約束條件進行歸一化處理。為了進行優(yōu)化,列出全部歸一化約束條件,并建立了非線性規(guī)劃模型。然后使用序列化遺傳算法對其進行篩選,逼近全局最優(yōu)解,得到此階段的燃耗為1055.39kg。第二階段也是復(fù)雜的多變量優(yōu)化問題,采用遺傳算法求解該階段的全局最優(yōu)解,最終燃耗為26.71kg。第三和第四階段主要涉及圖像處理和統(tǒng)計分析。通過對高程圖進行K均值聚類分析,得到安全點和危險點的像素分布情況,進而對地圖進行柵格化,并對方格內(nèi)點類型進行統(tǒng)計。通過擴大尋找最大安全半徑,并綜合考慮水平偏移量,建立合理的落點評價體系,找出最優(yōu)點坐標(biāo)(1275,1000),燃耗為86.97kg。第四階段類似地進行聚類分析,根據(jù)嫦娥三號實際體積選取合適的柵格大小,并使用最小二乘法對空間進行線性統(tǒng)計回歸,求得平均坡面和平均坡度。結(jié)合最大安全半徑建立最優(yōu)落點評價體系,最終獲得最優(yōu)落點坐標(biāo)為(88,56),燃耗為20.68kg。第五階段的最優(yōu)燃耗為8.09kg。最后,對簡化運動模型進行了討論,簡化了后幾個階段的運動學(xué)分析和計算。綜合各段最優(yōu)解,得到最優(yōu)著陸軌道與控制策略。
對于第三問,總結(jié)了優(yōu)化模型中引入的一些誤差因素,并對主要因素進行了數(shù)值上的相對誤差分析,證明誤差對優(yōu)化方案影響較小。同時分析了初始變量和約束條件的波動對結(jié)果的影響,發(fā)現(xiàn)角度控制向量的靈敏性較高,而其他因素的靈敏性較低,說明優(yōu)化方案不敏感于初值,并且可以逼近全局最優(yōu)解。
**關(guān)鍵詞:**非線性規(guī)劃模型、序列化遺傳算法、K均值聚類、空間線性回歸、二體模型
一.問題的提出
1.1 背景介紹
根據(jù)計劃,嫦娥三號將在北京時間12月14號在月球表面實施軟著陸。嫦娥三號如何實現(xiàn)軟著陸以及能否成功成為外界關(guān)注焦點。目前,全球僅有美國、前蘇聯(lián)成功實施了13次無人月球表面軟著陸。
北京時間12月10日晚,嫦娥三號已經(jīng)成功降軌進入預(yù)定的月面著陸準(zhǔn)備軌道,這是嫦娥三號“落月”前最后一次軌道調(diào)整。在實施軟著陸之前,嫦娥三號還將在橢圓軌道上繼續(xù)飛行,做最后準(zhǔn)備。
嫦娥三號著陸地點選在較為平坦的虹灣區(qū)。但由于月球地形的不確定性,最終“落月”地點的選擇仍存在一定難度。在整個“落月”過程中,“動力下降”被業(yè)內(nèi)形容為最驚心動魄的環(huán)節(jié)。在這個階段,嫦娥三號要完全依靠自主導(dǎo)航控制,完成降低高度、確定著陸點、實施軟著陸等一系列關(guān)鍵動作,人工干預(yù)的可能性幾乎為零。在距月面100米處時,嫦娥三號要進行短暫的懸停,掃描月面地形,避開障礙物,尋找著陸點。
1.2 問題重述
嫦娥三號在著陸準(zhǔn)備軌道上的運行質(zhì)量為2.4t,其安裝在下部的主減速發(fā)動機能夠產(chǎn)生的推力可調(diào)節(jié),變化范圍為1500N到7500N,其比沖為2940m/s,可以滿足調(diào)整速度的控制要求。在四周安裝有姿態(tài)調(diào)整發(fā)動機,能夠自動通過多個發(fā)動機的脈沖組合實現(xiàn)各種姿態(tài)的調(diào)整控制。嫦娥三號的預(yù)定著陸點為19.51W,44.12N,海拔為-2641m。
嫦娥三號在高速飛行的情況下,要保證準(zhǔn)確地在月球預(yù)定區(qū)域內(nèi)實現(xiàn)軟著陸,關(guān)鍵問題是著陸軌道與控制策略的設(shè)計。其著陸軌道設(shè)計的基本要求:著陸準(zhǔn)備軌道為近月點15km,遠月點100km的橢圓形軌道;著陸軌道為從近月點至著陸點,其軟著陸過程共分為6個階段,要求滿足每個階段在關(guān)鍵點所處的狀態(tài),盡量減少軟著陸過程的燃料消耗。
根據(jù)上述的基本要求,建立數(shù)學(xué)模型解決下面的問題:
(1)確定著陸準(zhǔn)備軌道近月點和遠月點的位置,以及嫦娥三號相應(yīng)速度的大小與方向。
(2)確定嫦娥三號的著陸軌道和在6個階段的最優(yōu)控制策略。
(3)對設(shè)計的著陸軌道和控制策略做相應(yīng)的誤差分析和敏感性分析。
二.問題的分析
2.1 問題一
題目已經(jīng)給出準(zhǔn)備軌道的形狀參數(shù),根據(jù)已有的物理知識和幾何關(guān)系,可以計算近月點和遠月點處的速度大小和月面相對速度的方向。然而,由于無法確定近月點和遠月點的位置,需要其他條件來推測。在現(xiàn)有條件下,可以通過逆推近月點,并結(jié)合地月軌道制動的實際情況來綜合考慮。根據(jù)相關(guān)報道和NASA在1976年提出的線性正切制導(dǎo)率,主減速階段通常采用恒定推力作用在軌道切線上進行制導(dǎo)。因此,我們可以建立二體模型,利用已知條件和微分方程組進行計算機模擬,以求得降落弧線距離,從而反推近月點,并對稱地得出遠月點。
2.2 問題二
根據(jù)問題一得到的近月點和每個階段的狀態(tài),可以大致確定降落軌道的范圍,但精確路徑需要通過策略優(yōu)化來控制。在每個階段中,燃料消耗與推力在時間上的積累量成正比,即減小推力的沖量可以優(yōu)化燃料消耗。
針對第一個階段,由于推力較大且歷時較長,燃料消耗主要發(fā)生在這個階段。因此,優(yōu)化策略應(yīng)該重點考慮這個階段。由于有二體模型,可以建立微分方程模型,并根據(jù)初值條件和階段限定條件構(gòu)建非線性約束條件。將問題轉(zhuǎn)化為軌道優(yōu)化的非線性規(guī)劃問題,一般可通過成熟的 SQP 算法可以得到全局最優(yōu)解,但本題采用了更為常見也相對傳統(tǒng)的遺傳算法,逼近全局最優(yōu)解,得出最優(yōu)方案。
對于第二階段,目標(biāo)是使水平速度為零,并且推力迅速減小。根據(jù)上一階段的優(yōu)化結(jié)果,可以得到末速度的水平分量。由于沖量是可分解的,因此可以將這個階段分解為水平和豎直方向上的兩個變速直線運動模型。這簡化了優(yōu)化模型,并可以通過求解這兩個局部最優(yōu)解來得到整個階段的全局最優(yōu)解。
第三階段的水平速度初始為零。通過對月面進行成像分析,并制定平坦度評價體系,可以選擇距離中心點最近且滿足平坦度要求的區(qū)域中心作為粗調(diào)整的目標(biāo)降落點。由于在這個階段結(jié)束時水平速度減為零,可以對推力進行優(yōu)化,以獲得局部燃料最優(yōu)解。
第四階段是懸停階段,進行精細成像和分析。同樣,制定平坦度評價體系并選擇距離中心點最近且滿足平坦度要求的區(qū)域中心作為最終目標(biāo)降落點,修正軌道。在結(jié)束時水平速度仍為零,因此同樣需要進行優(yōu)化過程。
第五和第六階段是減速至零然后自由下落的過程??梢钥紤]對減速階段進行優(yōu)化,可以通過簡單討論得出結(jié)果。最終根據(jù)每個階段的最優(yōu)方案,可以模擬出嫦娥三號的著陸軌道。
2.3 問題三
為了分析設(shè)計軌道和控制策略的誤差和敏感性,有必要制定誤差指標(biāo),并考慮各部分誤差對結(jié)果的最大影響。敏感性分析也需要采用類似的思路,衡量各個階段微小變化對結(jié)果產(chǎn)生的影響。另外,也許還需要尋找參考物以評估該方案的優(yōu)劣。
三.模型假設(shè)
- 由于月球自轉(zhuǎn)速度為27.3d,十分緩慢,而著陸過程僅有十幾分鐘,因此在本題中月球不考慮自轉(zhuǎn);
- 由于月球扁率很小,可認為月球為球體,半徑以平均半徑為準(zhǔn),并且引力場分布均勻;
- 由于側(cè)面姿態(tài)調(diào)整噴射裝置對燃料影響很小,為簡化模型,認為飛行器變換姿態(tài)的過程不消耗燃料;
- 認為飛行器變換姿態(tài)是瞬間完成的;
- 由于著陸時間較短,所以諸如月球引力非球項、日月引力攝動等影響因素均可忽略不計;
- 推力大小可瞬間改變;
- 燃料除供給推力外,無任何其他耗散方式;
- 月球空氣稀薄,不考慮任何摩擦力;
- 由于預(yù)定著陸點海拔為-2641m,因此在著陸過程中所使用的高度均不應(yīng)是海拔高度,而是相對于著陸點海拔的高度。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-LHUCSBKx-1688196030589)(image-3.png)]
五.模型建立與求解
### 5.1 問題一
5.1.1 模型建立
為了確定近月點和遠月點,正常的思路是求出橢圓軌道所在平面以及橢圓長軸在空間中的位置,但本題僅給出了軌道兩點的高度信息以及平均半徑,還有根據(jù)常識推斷出的預(yù)定著陸點在橢圓平面內(nèi),除此之外并無其他信息,因此從現(xiàn)有條件準(zhǔn)確判斷兩點的位置是不可能的。因此,本題應(yīng)采用逆推思路,由著陸軌道的第一個階段反推近月點。
先對軌道參數(shù)進行分析,已知近月點高度 Hc=15km,遠月點高度 Hf=100km,月球平均半徑為 R=1737.013km,軌道為橢圓。如圖 5.1.1.1.
圖 5.1.1.1 近月軌道示意圖(為了方便示意,本圖不符合比例)
由開普勒定律,任何橢圓天體軌道的中心天體一定在橢圓的一個焦點上。則由橢圓幾何性質(zhì),可以近似得出方程:
a+c=Hf+R
a-c=Hc+R
聯(lián)系萬有引力定律與牛頓第二定律,可以列出嫦娥三號在近月點和遠月點的運動學(xué)方程:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-BVWtzvhk-1688196030589)(image-4.png)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-WZ7giMey-1688196030590)(image-5.png)]
問題2
5.2 問題二
本題是一個多因素優(yōu)化問題,目標(biāo)是減少燃料消耗并選擇最平坦的著陸區(qū)域。燃料消耗與推力直接相關(guān),即 F = η * m,其中 η = 2940 / m/s 為比沖,表示單位質(zhì)量的燃料產(chǎn)生的推力。這個公式左邊表示推力在時間上的積累量,右邊表示燃料消耗在時間上的積累量。由于比沖是常數(shù),推力的沖量與燃料消耗成正比,所以優(yōu)化目標(biāo)與力學(xué)量直接相關(guān),便于分析。
另外,根據(jù)動量定理,近似處理下,我們也可以將燃料消耗與速度變化聯(lián)系起來。
5.2.1 模型建立與求解過程一
根據(jù)5.1的計算過程可知,主減速階段是著陸過程中用時最長、燃料消耗最大的階段。該階段的主要任務(wù)是消除初始的水平速度,因此優(yōu)化主減速階段的推進劑消耗是最重要的設(shè)計目標(biāo),也是整個著陸軌道燃料消耗優(yōu)化的關(guān)鍵。
嫦娥三號的主減速階段是從近月點降落到預(yù)定地點3的過程,在這個過程中時間非常短,只有幾百秒,所以可以不考慮月球的引力攝動。由于月球自轉(zhuǎn)速度較小,也可以忽略不計。因此,我們可以將問題簡化為一個二體模型,如圖5.2.1.1所示。以月球質(zhì)心為原點建立平面直角坐標(biāo)系,設(shè)嫦娥三號距離月球質(zhì)心的距離為r,極角為θ,角速度為ω,質(zhì)量為m;同時設(shè)嫦娥三號在r方向上的速度為v,主減速發(fā)動機的推力為F(在本題中為固定值)。發(fā)動機推力與當(dāng)?shù)厮骄€的夾角即為推力的方向θ,比沖為ISP;同時設(shè)月球的引力常數(shù)為μ。
首先,從運動學(xué)的角度進行分析。根據(jù)動力學(xué)基本方程可以得到:
dr/dt = v (①)
同理,可以得到角度變化的關(guān)系式為:
dθ/dt = ω (②)
燃料消耗可以表示為:
∫(Fdt/m) = ∫(ISPdv/v) (③)
其中,ISP為比沖,單位為米/秒,F(xiàn)為總推力,m為質(zhì)量,v為速度。
在主減速階段,嫦娥三號質(zhì)量是變化的,會隨著燃料消耗而減少。所以在計算燃料消耗時需要考慮嫦娥三號的質(zhì)量變化。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-NYDV8rux-1688196030590)(image-6.png)]
問題3
5.3 問題三
5.3.1 誤差分析
本模型包含許多近似處理和理想化模型,以及一些擬合優(yōu)化算法和近似計算方法。這些因素都會引入各種大小不等的誤差。主要的誤差來源包括忽略了月球扁率與地球引力攝動的理想化假設(shè)、姿態(tài)調(diào)整燃耗的忽略、調(diào)整姿勢和推力大小改變所需時間的忽略、月球自轉(zhuǎn)的忽略、快速調(diào)整階段水平位移對計算近月點的影響的忽略、將二體問題的微分方程轉(zhuǎn)化為差分方程產(chǎn)生的誤差、遺傳算法對全局最優(yōu)解逼近的誤差、在分析優(yōu)化條件和計算時忽略質(zhì)量變化,以及忽略懸空時間、柵格化網(wǎng)絡(luò)劃分格線時的考慮不足、使用最小二乘法計算格內(nèi)平均坡度時的統(tǒng)計誤差等。下面重點考察幾個主要會引入較大誤差的因素。
(1) 月球自轉(zhuǎn)速度為27.3d,整個下落過程大約500s,月球轉(zhuǎn)過的角度為0.0763°,即近月點實際經(jīng)度約為19.43°,用1°來衡量相對誤差為0.39%。但實際上這個度數(shù)對應(yīng)的弧長有2313.14m,可以說誤差數(shù)值本身還是很大的。
(2) 快速調(diào)整階段水平位移大約600m,對應(yīng)月面弧度為0.0198°,因此實際近月點緯度約為31.47°,相對誤差為0.06%。這個誤差并不算大,也證實了快速調(diào)整階段水平位移對于主減速階段可忽略。
(3) 關(guān)于推力大小突變的假設(shè),若按照實際情況來講,燃料提供的推力一定伴隨著一個漸變的過程。設(shè)推力均勻減小,假如推力由7500N變?yōu)?500N需要1s過渡時間,若質(zhì)量為2000kg的飛行器,質(zhì)量不變,直線運動,則可求出末速度為2.25m/s。若改為前0.5s中推力為7500N,后0.5s中推力為1500N,則可算出末速度為2m/s。對比可知,忽略變化時間會導(dǎo)致的最大相對誤差為11%,這個誤差確實不小。然而,所幸的是,在整個過程中,推力基本都在小范圍內(nèi)波動,即使在快速調(diào)整階段,推力變化不超過4000N,因此,相對誤差可以控制在較低水平(5%左右)。
(4) 柵格單元格內(nèi)部由于采用了過半取整的方法,會造成對全體考慮信息不全的情況。例如,當(dāng)兩個方格交界處數(shù)值較高,而其余部分均較低時,這時,兩個格都會被認定為安全格,但實際上存在一小部分凸起,若將兩方格位置同步左移半格,會發(fā)現(xiàn)有一個危險格。這類誤差會定量影響到一些安全格的最大安全半徑,導(dǎo)致綜合評價指標(biāo)倍放大,但由于格點數(shù)量眾多,在統(tǒng)計角度上可以忽略這個問題。
(5) 微分方程離散化所引入的誤差,由于時間微元取得非常?。ㄐ∮?.1s),因此基本符合微分思想。再加上拉格朗日中值估算法的存在,可以證明引入的誤差遠小于1%,可以忽略不計。
(6) 忽略質(zhì)量變化產(chǎn)生的影響,可以使用簡單的運動過程來解釋。假設(shè)質(zhì)量為1000kg的飛行器向下勻速運動10s,則可知加速度為0,重力與推力相同。忽略質(zhì)量變化,得到這一段燃耗為5.51kg;若考慮質(zhì)量變化,則:
其中F和m都是t的函數(shù),解得燃耗為5.49kg??芍瑢嶋H燃耗比忽略質(zhì)量的燃耗小,相對誤差為0.36%,十分小。由于忽略質(zhì)量變化主要用于后續(xù)階段的分析,而這些階段都很快,因此誤差不會超過5%以上,是可以接受的。
5.3.2 敏感性分析
由于本題初始條件較少,并且有許多常數(shù)被認為是定值,不會引起敏感性波動。因此,敏感性分析限制在個別初始條件上:
如果最大推力增減1N,仿真結(jié)果幾乎沒有變化,曲線基本保持一致。事實上,即使變化10N甚至100N,落點位置或速度也沒有明顯變化。可以看出,最大推力對軌道的影響非常不敏感,允許波動范圍至少1.3%。
對于角度方案的7個多項式系數(shù),監(jiān)視遺傳算法中間個體發(fā)現(xiàn),即使這些參數(shù)的波動范圍不到1%,結(jié)果也可能有較大變化。特別是高次項系數(shù),簡單的波動會被高次冪放大,導(dǎo)致飛船偏離軌道。因此,對于本優(yōu)化模型的角度規(guī)劃方案,任何甚至1%的偏差都是不允許的,因為會產(chǎn)生嚴(yán)重后果,敏感性非常強。
至于近月點的位置,由于遺傳算法對初始值不敏感,即使初始位置發(fā)生較大變化,它仍然能從眾多代中逐漸篩選出優(yōu)良個體,滿足終止條件。可以說,遺傳算法本身的自適應(yīng)性保證了優(yōu)化策略對近月點選取的不敏感性。
六. 模型優(yōu)缺點
6.1 問題一的模型評價:
該模型采用了逆推的思路,并使用基本微分方程模型進行擬合,通過航天學(xué)經(jīng)驗計算出近月點。微分方程模型本身是無誤差的,盡管難以求解,但在離散化后,采用擬合曲線的方式逼近,誤差仍然很小。然而,這個模型并不是正常的設(shè)計過程,如果條件允許,應(yīng)該建立一個航空力學(xué)模型,結(jié)合地球出發(fā)、制動、變軌等一系列因素,綜合考慮當(dāng)天月球位置和月面方向,模擬登月過程,并解出近月點。然而,此模型過于復(fù)雜,條件要求非常高,實際可操作性較低。
6.2 問題二的模型評價:
此問題主要由兩類模型組成。第一類是二體模型,屬于經(jīng)典天體模型,沒有誤差,但求解困難,只能采用遺傳算法進行篩選,逼近全局最優(yōu)解。第二類是地形分析模型,制定了平坦度、偏移量、平均坡度等相關(guān)評估參數(shù),綜合使用各類統(tǒng)計算法進行圖像分析??梢园l(fā)現(xiàn),這兩類模型均沒有理論最優(yōu)解,只能通過篩選或統(tǒng)計等方法逼近最優(yōu)解,但由于模型數(shù)量龐大,合理選擇參數(shù)和權(quán)重可以無限逼近全局最優(yōu)解。然而,在本題中,模型分解為六個小段,每個分段具有不同的約束條件,雖然存在一定的聯(lián)系,但通常應(yīng)該將六個狀態(tài)聯(lián)立起來,獲得完整的全局模型,并進行全局優(yōu)化,得到的結(jié)果才能被認為是全局最優(yōu)解。而本題將問題分解,每個階段采用不同的優(yōu)化方案,從而獲得六個局部最優(yōu)解。因此,該模型無法證明該最優(yōu)策略一定是全局最優(yōu)策略。
%calc_proc.m 計算第一問
%——————————————————————————————————————
——
T = 0.1;
t = 0;
x = 0; y = 0;
x2 = 0; y2 = 0;
Q = 6.5044;
sita = 0 + Q/180*pi;
vx = 1692;
vy = 0;
m0 = 2400;
m = 2400;
N = 7500 / m0;
G = 3844.6 / m0;
r = 1749372;
H = 15000;
ax = N - vy*vx/r;
ay = G - vx^2/r;
hold on
xlabel '切向距離/m'
ylabel '高度/m'
history = [];
i = 0;
while (y>-12000 && m>1000)
x2 = x + vx*T - 0.5*ax*T;
y2 = y - vy*T - 0.5*ay*T;
vx = vx - ax*T;
vy = vy + ay*T;
r2 = 1749372 + y2;
G = 3844.6/m0/(r^2)*(r2^2);
m = m - 2.55*T;
t = t + T;
N = 7500 / m;
if (vx == 0)
if vy <= 0
sita = pi/2;
else
sita = - pi / 2;
end
23
else
sita = atan(vy/vx);
end
if (sita) <= 0
sita = Q/180*pi;
else
if (sita + Q/180*pi) < pi/2
sita = sita + Q/180*pi;
else
sita = pi / 2;
end
end
ax = N * cos(sita) - vy*vx/r2;
ay = G - N * sin(sita) - vx^2/r2;
plot([x,x2],[H+y,H+y2],'black','LineWidth',2);
x = x2; y = y2; r = r2;
history = [history; (i-1)*T y vx vy sita];
i = i + 1;
end
%——————————————————————————————————————
——
%calc_proc2.m 模擬第二問最優(yōu)解情況
%——————————————————————————————————————
——
fit = [1.40416918137980e-15 -1.60164160878453e-12 6.03243487525863e-10 -
8.11660304591008e-08 4.29538060831470e-06 7.00969042524411e-05
T = 0.1;
t = 0;
x = 0; y = 0;
x2 = 0; y2 = 0;
Q = 6.4;
sita = fit(7);
vx = 1692;
vy = 0;
m0 = 2400;
m = 2400;
N = 7500 / m0;
G = 3844.6 / m0;
r = 1749372;
H = 15000;
ax = N - vy*vx/r;
ay = G - vx^2/r;
hold on
24
xlabel '切向距離/m'
ylabel '高度/m'
history = [];
i = 0;
while (y>-12000 && m>1000)
x2 = x + vx*T - 0.5*ax*T;
y2 = y - vy*T - 0.5*ay*T;
vx = vx - ax*T;
vy = vy + ay*T;
r2 = 1749372 + y2;
G = 3844.6/m0/(r^2)*(r2^2);
m = m - 2.55*T;
t = t + T;
N = 7500 / m;
sita = fit(1)*t.^6+fit(2)*t.^5+fit(3)*t.^4+fit(4)*t.^3+fit(5)*t.^2+fit(6)*t+fit(7);
ax = N * cos(sita) - vy*vx/r2;
ay = G - N * sin(sita) - vx^2/r2;
plot([x,x2],[H + y,H + y2],'black', 'LineWidth',2);
x = x2; y = y2; r = r2;
history = [history; (i-1)*T y vx vy sita];
i = i + 1;
end
if (m<=500)
differ = 200000;
else
differ = t;
end
if (abs(vx) > 10)
differ = 200000;
end
if (abs(vy - 57) > 1)
differ = 300000;
end
%——————————————————————————————————————
——
%calc1.m 函數(shù),用以使用遺傳算法求解
%——————————————————————————————————————
——
function [ differ ] = calc1( Q )
T = 0.1;
t = 0;
x = 0; y = 0;
x2 = 0; y2 = 0;
25
sita = Q*t;
vx = 1692;
vy = 0;
m0 = 2400;
m = 2400;
N = 7500 / m0;
G = 3844.6 / m0;
r = 1749372;
H = 15000;
ax = N - vy*vx/r;
ay = G - vx^2/r;
i = 0;
while (y>-12000 && m>1000)
x2 = x + vx*T - 0.5*ax*T;
y2 = y - vy*T - 0.5*ay*T;
vx = vx - ax*T;
vy = vy + ay*T;
r2 = 1749372 + y2;
G = 3844.6/m0/(r^2)*(r2^2);
m = m - 2.55*T;
t = t + T;
N = 7500 / m;
if (vx == 0)
if vy <= 0
sita = pi/2;
else
sita = - pi / 2;
end
else
sita = atan(vy/vx);
end
if (sita) <= 0
sita = Q/180*pi;
else
if (sita + Q/180*pi) < pi/2
sita = sita + Q/180*pi;
else
sita = pi / 2;
end
end
sita = Q*t;
ax = N * cos(sita) - vy*vx/r2;
ay = G - N * sin(sita) - vx^2/r2;
x = x2; y = y2; r = r2;
26
i = i + 1;
end
if (m<=500)
differ = 200000;
end
differ = abs(sqrt(vy^2+vx^2) - 57);
%——————————————————————————————————————
——
%calc2.m 函數(shù),用以使用遺傳算法求解
%——————————————————————————————————————
——
function differ = calc2(fit)
T = 0.1;
t = 0;
x = 0; y = 0;
x2 = 0; y2 = 0;
Q = 6.4;
sita = fit(7);
vx = 1692;
vy = 0;
m0 = 2400;
m = 2400;
N_altered = 7500;
N = N_altered / m0;
G = 3844.6 / m0;
r = 1749372;
H = 15000;
ax = N - vy*vx/r;
ay = G - vx^2/r;
i = 0;
while (y>-12000 && m>1000)
x2 = x + vx*T - 0.5*ax*T;
y2 = y - vy*T - 0.5*ay*T;
vx = vx - ax*T;
vy = vy + ay*T;
r2 = 1749372 + y2;
G = 3844.6/m0/(r^2)*(r2^2);
m = m - 2.55/7500*N_altered*T;
t = t + T;
N = N_altered / m;
sita = fit(1)*t.^6+fit(2)*t.^5+fit(3)*t.^4+fit(4)*t.^3+fit(5)*t.^2+fit(6)*t+fit(7);
ax = N * cos(sita) - vy*vx/r2;
27
ay = G - N * sin(sita) - vx^2/r2;
x = x2; y = y2; r = r2;
i = i + 1;
end
if (m<=500)
differ = 200000;
else
differ = m0 - m;
end
if (abs(sqrt(vx^2+vy^2) - 57) > 1)
differ = 300000;
end
%——————————————————————————————————————
——
%deal1.m 函數(shù),用以處理 2400m 處的俯拍相片
%——————————————————————————————————————
——
cd('./');
A = imread('附件3 距2400m處的數(shù)字高程圖.tif');
N = 460;
n = 2300 / N;
data = zeros(N,N);
[height, length] = size(data);
for i = 1:1:height
for j = 1:1:length
data(i,j) = sum(sum(A(round(n*(i-1)+1):round(n*i)-(round(n*i)>2300), round(n*(j-
1)+1):round(n*j)-(round(n*j)>2300))))/ round(n*n);
end
end
data = uint8(round(data));
%imshow(data);
%第二個階段,聚落分析平面
data3 = [];
for i = 1:1: N
for j = 1:1:N
data3 = [data3; data(i,j)];
end
end
[Idx,C,sumD,D]=kmeans(double(data3),5);
C(1,3) = sum(C(:,1) < C(1,1)); C(1,2) = sum(Idx == 1);
C(2,3) = sum(C(:,1) < C(2,1)); C(2,2) = sum(Idx == 2);
C(3,3) = sum(C(:,1) < C(3,1)); C(3,2) = sum(Idx == 3);
C(4,3) = sum(C(:,1) < C(4,1)); C(4,2) = sum(Idx == 4);
28
C(5,3) = sum(C(:,1) < C(5,1)); C(5,2) = sum(Idx == 5);
GND = sum(C(:,3) .* (C(:,2) == max(C(:,2))));
data4 = zeros(N, N);
for i = 1:1:N
for j = 1:1:N
data4(i,j) = C(Idx((i-1)*N + j), 3);
end
end
%surface(data4,'EdgeColor','none');
%第三個階段選擇合適區(qū)域
data2 = 1- (data4 == GND);
score = zeros(N, N);
for i = 1:1:height
for j = 1:1:length
if (data2(i,j) == 0)
tmp = 1;
while (tmp<=i && tmp<=N-i+1 && tmp<=j && tmp<= N-j+1 &&
sum(sum(data2(i-tmp+1:i+tmp-1, j-tmp+1:j+tmp-1))) == 0)
tmp = tmp + 1;
end
tmp = tmp - 1;
score(i,j) = tmp + 50 - exp(0.0027*sqrt((i-N/2)^2 + (j-N/2)^2)*n);
end
end
end
%surface(score,'EdgeColor','none');
%——————————————————————————————————————
——
%deal2.m 函數(shù),用以處理 100m 處的俯拍相片
%——————————————————————————————————————
——
cd('./');
A = imread('附件4 距月面100m處的數(shù)字高程圖.tif');
N = 100;
n = 1000 / N;
data = zeros(N,N);
[height, length] = size(data);
for i = 1:1:height
for j = 1:1:length
data(i,j) = sum(sum(A(round(n*(i-1)+1):round(n*i)-(round(n*i)>2300), round(n*(j-
1)+1):round(n*j)-(round(n*j)>2300))))/ round(n*n);
end
end
29
data = uint8(round(data));
%imshow(data);
%第二階段
%分析斜度
yuzumi = double(zeros(N,N));
N2 = 50;
n2 = 1000/N2;
ana_width = n2+10;
for i = 1:1:N2
for j = 1:1:N2
X = [];
z = [];
for x = max((i-1)*n2+1-(ana_width-n2), 1):1:min(i*n2+(ana_width-n2), 1000)
for y = max((j-1)*n2+1-(ana_width-n2), 1):1:min(j*n2+(ana_width-n2), 1000)
X = [X; 1, x, y];
z = [z; double(A(x,y))];
end
end
b = regress(z,X);
arc = [b(2), b(3), 1];
sita = acos(dot(arc,[0 0 1])/sqrt(dot(arc,arc)));
yuzumi((i-1)*(N/N2)+1:i*(N/N2), (j-1)*(N/N2)+1:j*(N/N2)) = sita;
end
end
heion = (max(max(yuzumi)) - yuzumi)/max(max(yuzumi));
%surface(heion,'EdgeColor','none');
%聚類分析
data3 = [];
for i = 1:1:N
for j = 1:1:N
data3 = [data3; data(i,j)];
end
end
[Idx,C,sumD,D]=kmeans(double(data3),4);
C(1,3) = sum(C(:,1) < C(1,1)); C(1,2) = sum(Idx == 1);
C(2,3) = sum(C(:,1) < C(2,1)); C(2,2) = sum(Idx == 2);
C(3,3) = sum(C(:,1) < C(3,1)); C(3,2) = sum(Idx == 3);
C(4,3) = sum(C(:,1) < C(4,1)); C(4,2) = sum(Idx == 4);
GND = sum(C(:,3) .* (C(:,2) == max(C(:,2))));
data4 = zeros(N, N);
for i = 1:1:N
for j = 1:1:N
data4(i,j) = C(Idx((i-1)*N + j), 3);
end
30
end
%surface(data4,'EdgeColor','none');
%第三個階段選擇合適區(qū)域
data2 = 1- (data4 == GND);
score = zeros(N, N);
for i = 1:1:height
for j = 1:1:length
if (data2(i,j) == 0)
tmp = 1;
while (tmp<=i && tmp<=N-i+1 && tmp<=j && tmp<= N-j+1 &&
sum(sum(data2(i-tmp+1:i+tmp-1, j-tmp+1:j+tmp-1))) == 0)
tmp = tmp + 1;
end
tmp = tmp - 1;
score(i,j) = tmp; %.* heion(i,j);
end
end
end
%surface(score,'EdgeColor','none');
%——————————————————————————————————————
——
% genpics.m 各種畫圖指令的匯總
%——————————————————————————————————————
——
cd('./');
clear;
load('2400m處分析數(shù)據(jù).mat');
%聚落分析
figure;
cla;
surface(data4,'EdgeColor','none');
colorbar;
saveas(gcf,'2400m處聚落分析.png');
%合適區(qū)域
cla;
surf(score,'EdgeColor','none');
colorbar;
saveas(gcf,'2400m處落點評價.png');
clear;
load('100m處分析數(shù)據(jù).mat');
%聚落分析
cla;
31
surface(data4,'EdgeColor','none');
colorbar;
saveas(gcf,'100m處聚落分析.png');
%合適區(qū)域
cla;
surf(score,'EdgeColor','none');
colorbar;
saveas(gcf,'100m處落點評價.png');
clear;
cla;
calc_proc2;
saveas(gcf,'第一階段降落y-x軌跡.png');
cla;
hold on;
plot(history(:,1), history(:,3), 'b', 'LineWidth',2);
plot(history(:,1), history(:,4), 'red', 'LineWidth',2);
legend ('\fontsize {17}Vx', '\fontsize {17}Vy');
xlabel 't/s';
ylabel 'V/(m/s)';
saveas(gcf,'第一階段降落Vx、Vy-t軌跡.png');
cla;
hold on;
plot(history(:,1), history(:,5), 'black', 'LineWidth',2);
axis([0, 450, 0, 0.45]);
xlabel 't/s';
ylabel 'θ/rad';
saveas(gcf,'第一階段降落sita-t軌跡.png');
clear;
cla;
calc_proc;
saveas(gcf,'問題一降落y-x軌跡.png');
cla;
hold on;
plot(history(:,1), history(:,3), 'b', 'LineWidth',2);
plot(history(:,1), history(:,4), 'red', 'LineWidth',2);
legend ('\fontsize {17}Vx', '\fontsize {17}Vy');
xlabel 't/s';
ylabel 'V/(m/s)';
saveas(gcf,'問題一降落Vx、Vy-t軌跡.png');
32
cla;
hold on;
plot(history(:,1), history(:,5), 'black', 'LineWidth',2);
axis([0, 450, 0, 0.8]);
xlabel 't/s';
ylabel 'θ/rad';
saveas(gcf,'問題一降落sita-t軌跡.png');
%雜類
clear;
load('2400m處分析數(shù)據(jù).mat');
plotdata = [];
for i = 1:1:255
plotdata = [plotdata; i, sum(sum(A == i))];
end
max0=0; max1=0; max2=0; max3=0;
for i = 1:1:460
for j = 1:1:460
if(data4(i,j)==0)
if(data(i,j) > max0)
max0 = data(i,j);
end
end
if(data4(i,j)==1)
if(data(i,j) > max1)
max1 = data(i,j);
end
end
if(data4(i,j)==2)
if(data(i,j) > max2)
max2 = data(i,j);
end
end
if(data4(i,j)==3)
if(data(i,j) > max3)
max3 = data(i,j);
end
end
end
end
hold on
plot(plotdata(:,1), plotdata(:,2), 'black', 'LineWidth',1.5);
plot([max3+0.5 max3+0.5], [0, 3.5e5], 'red', 'LineWidth',2,'linestyle',':');
33
plot([max2+0.5 max2+0.5], [0, 3.5e5], 'red', 'LineWidth',2,'linestyle',':');
plot([max1+0.5 max1+0.5], [0, 3.5e5], 'red', 'LineWidth',2,'linestyle',':');
plot([max0+0.5 max0+0.5], [0, 3.5e5], 'red', 'LineWidth',2,'linestyle',':');
axis([0 255 0 400000])
saveas(gcf,'灰階分布.png')
附件1:問題A的背景與參考資料
1.中新網(wǎng)12月12日電(記者 姚培碩)
根據(jù)計劃,嫦娥三號將在北京時間12月14號在月球表面實施軟著陸。嫦娥三號如何實現(xiàn)軟著陸以及能否成功成為外界關(guān)注焦點。目前,全球僅有美國、前蘇聯(lián)成功實施了13次無人月球表面軟著陸。
北京時間12月10日晚,嫦娥三號已經(jīng)成功降軌進入預(yù)定的月面著陸準(zhǔn)備軌道,這是嫦娥三號“落月”前最后一次軌道調(diào)整。在實施軟著陸之前,嫦娥三號還將在這條近月點高度約15公里、遠月點高度約100公里的橢圓軌道上繼續(xù)飛行。期間,將穩(wěn)定飛行姿態(tài),對著陸敏感器、著陸數(shù)據(jù)等再次確認,并對軟著陸的起始高度、速度、時間點做最后準(zhǔn)備。
“發(fā)射、近月制動、變軌和月面降落比較起來,后者更為關(guān)鍵。這對我們來說是一個全新的,也是一個最 重要的考驗。”中國探月工程總設(shè)計師吳偉仁表示。
嫦娥三號著陸地點選在較為平坦的虹灣區(qū)。但由于月球地形的不確定性,最終“落月”地點的選擇仍存在一定難度。據(jù)悉,嫦娥三號將在近月點15公里處以拋物線下降,相對速度從每秒1.7公里逐漸降為零。整個過程大概需要十幾分鐘的時間。探測器系統(tǒng)副總指揮譚梅將其稱為“黑色750秒”。
由于月球上沒有大氣,嫦娥三號無法依靠降落傘著陸,只能靠變推力發(fā)動機,才能完成中途修正、近月制動、動力下降、懸停段等軟著陸任務(wù)。據(jù)了解,嫦娥三號主發(fā)動機是目前中國航天器上最大推力的發(fā)動機,能夠產(chǎn)生從1500牛到7500牛的可調(diào)節(jié)推力,進而對嫦娥三號實現(xiàn)精準(zhǔn)控制。
在整個“落月”過程中,“動力下降”被業(yè)內(nèi)形容為最驚心動魄的環(huán)節(jié)。在這個階段,嫦娥三號要完全依靠自主導(dǎo)航控制,完成降低高度、確定著陸點、實施軟著陸等一系列關(guān)鍵動作,人工干預(yù)的可能性幾乎為零?!霸谶@個時間段內(nèi)測控都跟不上了,判斷然后上去執(zhí)行根本來不及,只能事先把程序都設(shè)定好。”譚梅表示。
在距月面100米處時,嫦娥三號要進行短暫的懸停,掃描月面地形,避開障礙物,尋找著陸點?!叭绻旅嬗袀€大坑,需要挪個地方,它就會自己平移,等照相機告訴它地面平了,才會降落”。中國繞月探測工程首任首席科學(xué)家、中國科學(xué)院院士歐陽自遠介紹。
之后,嫦娥三號在反推火箭的作用下繼續(xù)慢慢下降,直到離月面4米高時再度懸停。此時,關(guān)掉反沖發(fā)動機,探測器自由下落。由于探測器具備著陸緩沖機構(gòu),幾個腿都有彈性,落地時不至于摔壞。
安全降落以后,嫦娥三號將打開太陽能電池板接收能量,攜帶的儀器經(jīng)過測試、調(diào)試后開始工作。隨后,“玉兔號”月球車將駛離著陸器,在月面進行3個月的科學(xué)勘測,著陸器則在著陸地點進行原地探測。這將是中國航天器首次在地外天體的軟著陸和巡視勘探,同時也是1976年后人類探測器首次的落月探測。
(http://www.chinanews.com/mil/2013/12-12/5608941.shtml)
2.嫦娥三號近月軌道示意圖(曲振東 編制)
附圖1:嫦娥三號近月軌道示意圖
(http://news.xinhuanet.com/photo/2013-12/02/c_125789895.htm)
3. 嫦娥三號著陸區(qū)域和著陸點示意圖
附圖2:嫦娥三號著陸區(qū)域和著陸點示意圖
(http://blog.guandian.cn/?p=83491)
4.主發(fā)動機和姿態(tài)調(diào)整發(fā)動機的分布圖
嫦娥三號安裝有大推力主減速發(fā)動機一臺,位于正下方。小型姿態(tài)調(diào)整發(fā)動機16臺,分布在相對前、后、左、右四個側(cè)面,如附圖3是一個側(cè)面的分布情況。
附圖3:嫦娥三號主發(fā)減速動機與姿態(tài)調(diào)整發(fā)動機的分布圖
5.關(guān)于比沖
比沖或比沖量是對一個推進系統(tǒng)的燃燒效率的描述。比沖的定義為:火箭發(fā)動機單位質(zhì)量推進劑產(chǎn)生的沖量,或單位流量的推進劑產(chǎn)生的推力。比沖的單位為米/秒(m/s),并滿足下列關(guān)系式:
,
其中
是發(fā)動機的推力,單位是牛頓;
是以米/秒為單位的比沖;
是單位時間燃料消耗的公斤數(shù)。
6.關(guān)于月球參數(shù)
月球平均半徑、赤道平均半徑和極區(qū)半徑分別為1737.013km、1737.646km和1735.843km,月球的形狀扁率為1/963.7256,月球質(zhì)量是7.3477×1022kg。月球與地球距離最遠(遠地點):406610km,最近(近地點):356330km,平均距離為384400km。
NASA月球勘測軌道飛行器使用的月面海拔零點,是月球的平均半徑所在的高度。所以,嫦娥三號著陸點的海拔為-2640m,即該點到月球中心的距離要比月球的平均半徑少2640m。
參考文獻
[1]維基百科,軌道根數(shù).http://en.wikipedia.org/wiki/Orbital_elements. 2014.1.17
[2]維基百科,比沖. http://en.wikipedia.org/wiki/Specific_impulse. 2014.1.17
附件2
嫦娥三號軟著陸過程分為6個階段的要求
(1)著陸準(zhǔn)備軌道:著陸準(zhǔn)備軌道的近月點是15KM,遠月點是100KM。近月點在月心坐標(biāo)系的位置和軟著陸軌道形態(tài)共同決定了著陸點的位置。
(2)主減速段:主減速段的區(qū)間是距離月面15km到3km。該階段的主要是減速,實現(xiàn)到距離月面3公里處嫦娥三號的速度降到57m/s。
(3)快速調(diào)整段:快速調(diào)整段的主要是調(diào)整探測器姿態(tài),需要從距離月面3km到 2.4km處將水平速度減為0m/s,即使主減速發(fā)動機的推力豎直向下,之后進入粗避障階段。
(4)粗避障段:粗避障段的范圍是距離月面2.4km到100m區(qū)間,其主要是要求避開大的隕石坑,實現(xiàn)在設(shè)計著陸點上方100m處懸停,并初步確定落月地點。
嫦娥三號在距離月面2.4km處對正下方月面2300×2300m的范圍進行拍照,獲得數(shù)字高程如附圖5所示(相關(guān)數(shù)據(jù)文件見附件3),并嫦娥三號在月面的垂直投影位于預(yù)定著陸區(qū)域的中心位置。
附圖5: 距月面2400m處的數(shù)字高程圖
該高程圖的水平分辨率是1m/像素,其數(shù)值的單位是1m。例如數(shù)字高程圖中第1行第1列的數(shù)值是102,則表示著陸區(qū)域最左上角的高程是102米。
(5)精避障段:精細避障段的區(qū)間是距離月面100m到30m。要求嫦娥三號懸停在距離月面100m處,對著陸點附近區(qū)域100m范圍內(nèi)拍攝圖像,并獲得三維數(shù)字高程圖。分析三維數(shù)字高程圖,避開較大的隕石坑,確定最佳著陸地點,實現(xiàn)在著陸點上方30m處水平方向速度為0m/s。附圖6是在距離月面100m處懸停拍攝到的數(shù)字高程圖(相關(guān)數(shù)據(jù)文件見附件4)。
附圖6: 距離月面100m處的數(shù)字高程圖
該數(shù)字高程的水平分辨率為0.1m/像素,高度數(shù)值的單位是0.1m。
(6)緩速下降階段:緩速下降階段的區(qū)間是距離月面30m到4m。該階段的主要任務(wù)控制著陸器在距離月面4m處的速度為0m/s,即實現(xiàn)在距離月面4m處相對月面靜止,之后關(guān)閉發(fā)動機,使嫦娥三號自由落體到精確有落月點。
注:附件3和附件4中數(shù)字高程圖對應(yīng)的*.tif文件可以使用Matlab的“imread”命令打開,“imread”的具體使用方法見Matlab相關(guān)幫助
常微分方程
常微分方程(Ordinary Differential Equations,簡稱ODEs)是描述未知函數(shù)和其導(dǎo)數(shù)之間關(guān)系的方程。常微分方程在科學(xué)和工程領(lǐng)域中廣泛應(yīng)用,用于描述動力系統(tǒng)、物理過程、生物學(xué)模型等。
一階常微分方程的一般形式為:
dy/dt = f(t, y)
其中 y 是未知函數(shù),t 是自變量,f 是已知函數(shù),表示 y 和 t 的關(guān)系。這個方程表示 y 對 t 的導(dǎo)數(shù)等于 f(t, y)。邊界條件或初始條件通常也會給定,例如 y(t0) = y0。
對于高階常微分方程,可以通過引入新的變量來將其轉(zhuǎn)化為一階方程組。例如,一個二階常微分方程可以表示為:
d2y/dt2 = g(t, y, dy/dt)
通過引入新的變量,如令 v = dy/dt,則可以將上述方程轉(zhuǎn)化為一階方程組:
dy/dt = v
dv/dt = g(t, y, v)
解常微分方程的過程通常包括以下步驟:
-
定義問題:明確常微分方程形式及邊界條件。
-
分類:根據(jù)常微分方程的類型和特點,選擇合適的方法進行求解。常見的方法包括歐拉法、龍格-庫塔法、改進的歐拉法、四階龍格-庫塔法等。
-
數(shù)值求解:將常微分方程離散化為差分方程,根據(jù)選定的數(shù)值方法進行迭代計算。時間步長的選擇會影響求解結(jié)果的精度和穩(wěn)定性。
-
邊界條件處理:對于邊界條件或初始條件給定的情況,將其納入求解過程中。
-
結(jié)果分析:根據(jù)求解得到的數(shù)值結(jié)果,進行后續(xù)的分析和應(yīng)用??梢赃M行圖形繪制、參數(shù)敏感性分析、穩(wěn)定性分析等。
請注意,解常微分方程可能需要適當(dāng)?shù)臄?shù)值方法和計算機編程技巧。Matlab、Python等計算工具都提供了強大的數(shù)值計算和求解常微分方程的工具包,可以輔助進行求解。
總結(jié)起來,常微分方程是描述未知函數(shù)和其導(dǎo)數(shù)之間關(guān)系的方程。求解常微分方程通常涉及定義問題、分類、數(shù)值求解、邊界條件處理和結(jié)果分析等步驟。通過合適的數(shù)值方法和計算工具,我們可以得到常微分方程的數(shù)值解,并進行進一步的分析和應(yīng)用。
當(dāng)涉及到常微分方程的解析解時,一般針對特定類型的常微分方程有一些經(jīng)典的解法。以下介紹幾種常見的常微分方程解法:
-
可分離變量法:適用于形如 dy/dt = g(t)h(y) 的方程。通過將方程兩邊進行變量分離并積分,可以將方程求解為 y 的函數(shù)。
-
線性常微分方程的常數(shù)變易法:適用于形如 dy/dt + p(t)y = q(t) 的一階線性常微分方程。通過引入一個積分因子,將方程轉(zhuǎn)化為可直接積分的形式。
-
齊次方程法:適用于形如 dy/dt = f(y/t) 的方程。通過引入新的變量,將方程轉(zhuǎn)化為分離的變量形式或者以變量代換的方式求解。
-
恰當(dāng)方程法:對于形如 M(t, y) + N(t, y)dy/dt = 0 的方程,如果存在一個函數(shù) u(t, y),使得 ?M/?y = ?N/?t,則該方程是恰當(dāng)方程。求解恰當(dāng)方程的關(guān)鍵是找到一個 u(t, y),并利用 u(t, y) 的全微分性質(zhì)進行積分。
需要注意的是,并非所有的常微分方程都存在解析解。對于很多復(fù)雜的常微分方程,沒有解析解或者很難獲得解析解。在這種情況下,數(shù)值方法是求解常微分方程的常見選擇。數(shù)值方法通過離散化微分方程并進行迭代計算,近似地求解微分方程。
常用的數(shù)值方法包括:歐拉法、龍格-庫塔法、改進的歐拉法、四階龍格-庫塔法等。這些方法通過將微分方程轉(zhuǎn)化為差分方程,并利用適當(dāng)?shù)牡袷竭M行數(shù)值計算。
總而言之,解常微分方程可以采用解析解法或數(shù)值解法。具體選擇哪種方法取決于問題的性質(zhì)和可行性。對于簡單的方程,我們可以嘗試使用解析解法;對于更復(fù)雜的方程或無解析解的情況,數(shù)值方法可以提供有效的求解工具。
當(dāng)涉及到使用 MATLAB 結(jié)合求解常微分方程時,MATLAB 提供了強大的數(shù)值計算和求解常微分方程的工具包,如ode45、ode23、ode15s等。
以下是一般步驟:
- 定義常微分方程:將常微分方程表示為 MATLAB 函數(shù)形式。例如,如果要求解 dy/dt = f(t, y),則可以創(chuàng)建一個函數(shù)文件,將右側(cè)的 f(t, y) 實現(xiàn)為 MATLAB 函數(shù)。
function dydt = myODE(t, y)
dydt = f(t, y); % 根據(jù)具體問題實現(xiàn) f(t, y)
end
- 設(shè)置初始條件:指定常微分方程的初始條件。例如,如果初始條件為 y(t0) = y0,則可以定義初始時間和初始狀態(tài)向量。
t0 = 0; % 初始時間
y0 = 1; % 初始狀態(tài)
-
設(shè)置求解參數(shù):選擇合適的求解方法,并設(shè)置相應(yīng)的求解參數(shù)。常用的求解方法如 ode45、ode23、ode15s 等,具體選擇取決于問題的性質(zhì)和精度要求。
-
調(diào)用求解器函數(shù):使用選擇的求解方法,調(diào)用相應(yīng)的求解器函數(shù)來求解常微分方程。傳遞相應(yīng)的輸入?yún)?shù),包括定義的常微分函數(shù)、初始時間、初始狀態(tài)、求解參數(shù)等。
[t, y] = ode45(@myODE, [t0, tf], y0, options);
其中,@myODE 是定義的常微分函數(shù)的函數(shù)句柄,[t0, tf] 是求解時間區(qū)間,y0 是初始狀態(tài)向量,options 是求解參數(shù)。
- 分析和可視化結(jié)果:根據(jù)求解得到的結(jié)果,進行進一步的分析和可視化。可以繪制時間與狀態(tài)變量之間的圖形,觀察系統(tǒng)的動態(tài)行為。
plot(t, y);
xlabel('時間');
ylabel('狀態(tài)變量');
title('常微分方程求解結(jié)果');
在 MATLAB 中,除了使用數(shù)值方法求解常微分方程外,還可以嘗試使用符號計算工具箱來獲得常微分方程的解析解。
- 符號變量定義:首先,使用符號計算工具箱創(chuàng)建符號變量。假設(shè)我們要解決一階常微分方程 dy/dt = f(t, y),可以定義符號變量 t 和 y。
syms t y
- 建立方程:將常微分方程轉(zhuǎn)換為符號表達式。根據(jù)具體問題,將 f(t, y) 替換成實際的函數(shù)表達式。
dydt = f(t, y); % 替換為實際的函數(shù)表達式
- 求解常微分方程:使用 dsolve 函數(shù)對常微分方程進行求解。將常微分方程和初始條件作為輸入?yún)?shù)傳遞給 dsolve 函數(shù)。
eqn = diff(y, t) == dydt; % 構(gòu)建微分方程
cond = y(t0) == y0; % 設(shè)置初始條件
ySol(t) = dsolve(eqn, cond);
其中,eqn 是微分方程,cond 是初始條件,ySol 是求解得到的符號表達式。
- 分析和可視化結(jié)果:對求解得到的符號表達式進行進一步的分析和可視化??梢允褂?subs 函數(shù)將符號表達式中的符號變量替換為具體的數(shù)值,并繪制結(jié)果。
ySol_numeric = subs(ySol, t, t_values); % 替換 t 為具體的數(shù)值
plot(t_values, ySol_numeric);
xlabel('時間');
ylabel('狀態(tài)變量');
title('常微分方程解析解');
這樣,你可以使用 MATLAB 的符號計算工具箱來獲得常微分方程的解析解。需要注意,在復(fù)雜的情況下,可能無法獲得解析解或者結(jié)果比較復(fù)雜。此時,可以考慮使用數(shù)值方法來近似求解常微分方程。
在科學(xué)、工程和其他領(lǐng)域中,常微分方程的應(yīng)用非常廣泛。以下是一些常見的應(yīng)用領(lǐng)域:
-
物理學(xué):常微分方程在物理學(xué)中的應(yīng)用非常廣泛。例如,牛頓定律可以表示為二階常微分方程,用于描述物體的運動。電路中的電流和電壓也可以通過常微分方程來描述。
-
工程學(xué):常微分方程在工程學(xué)中扮演重要角色。例如,在控制系統(tǒng)中,可以使用常微分方程來建模和分析系統(tǒng)的動態(tài)響應(yīng)。熱傳導(dǎo)、質(zhì)量平衡等過程也可以用常微分方程描述。
-
經(jīng)濟學(xué):常微分方程在經(jīng)濟學(xué)中有廣泛的應(yīng)用。用于建立經(jīng)濟模型,預(yù)測市場變化和分析經(jīng)濟行為。經(jīng)濟增長模型、消費者行為模型等都可以通過常微分方程來描述。
-
生物學(xué):生物學(xué)中許多生物過程也可以用常微分方程來建模。例如,生物種群動力學(xué)、生物反應(yīng)動力學(xué)等。常微分方程在神經(jīng)科學(xué)、生物化學(xué)等領(lǐng)域也有應(yīng)用。
-
計算機科學(xué):常微分方程在計算機圖形學(xué)、物理模擬等方面有應(yīng)用。例如,在計算機動畫中,可以使用常微分方程來模擬物體的運動和變形。
這些只是常微分方程應(yīng)用的一小部分示例,實際上常微分方程在各個領(lǐng)域都有廣泛的應(yīng)用。通過求解常微分方程,我們可以預(yù)測系統(tǒng)的行為、優(yōu)化設(shè)計、解釋實驗數(shù)據(jù)等,對問題的理解和解決提供了重要工具。
蟻群算法
一、蟻群算法蟻群算法(ant colony optimization, ACO),又稱螞蟻算法,是一種用來尋找最優(yōu)解決方案的機率型技術(shù)。它由Marco Dorigo于1992年在他的博士論文中引入,其靈感來源于螞蟻在尋找食物過程中發(fā)現(xiàn)路徑的行為。
螞蟻在路徑上前進時會根據(jù)前邊走過的螞蟻所留下的分泌物選擇其要走的路徑。其選擇一條路徑的概率與該路徑上分泌物的強度成正比。因此,由大量螞蟻組成的群體的集體行為實際上構(gòu)成一種學(xué)習(xí)信息的正反饋現(xiàn)象:某一條路徑走過的螞蟻越多,后面的螞蟻選擇該路徑的可能性就越大。螞蟻的個體間通過這種信息的交流尋求通向食物的最短路徑。
蟻群算法就是根據(jù)這一特點,通過模仿螞蟻的行為,從而實現(xiàn)尋優(yōu)。這種算法有別于傳統(tǒng)編程模式,其優(yōu)勢在于,避免了冗長的編程和籌劃,程序本身是基于一定規(guī)則的隨機運行來尋找最佳配置。也就是說,當(dāng)程序最開始找到目標(biāo)的時候,路徑幾乎不可能是最優(yōu)的,甚至可能是包含了無數(shù)錯誤的選擇而極度冗長的。但是,程序可以通過螞蟻尋找食物的時候的信息素原理,不斷地去修正原來的路線,使整個路線越來越短,也就是說,程序執(zhí)行的時間越長,所獲得的路徑就越可能接近最優(yōu)路徑。這看起來很類似與我們所見的由無數(shù)例子進行歸納概括形成最佳路徑的過程。實際上好似是程序的一個自我學(xué)習(xí)的過程。
二、這種優(yōu)化過程的本質(zhì)在于:
選擇機制:信息素越多的路徑,被選擇的概率越大。更新機制:路徑上面的信息素會隨螞蟻的經(jīng)過而增長,而且同時也隨時間的推移逐漸揮發(fā)消失。
協(xié)調(diào)機制:螞蟻間實際上是通過分泌物來互相通信、協(xié)同工作的。蟻群算法正是充分利用了選擇、更新和協(xié)調(diào)的優(yōu)化機制,即通過個體之間的信息交流與相互協(xié)作最終找到最優(yōu)解,使它具有很強的發(fā)現(xiàn)較優(yōu)解的能力?;谝陨蠙C制編寫的程序的核心代碼可能不過上百行,卻完成了類似于學(xué)習(xí)的過程。原因就是所謂的自組織理論,簡單規(guī)則的涌現(xiàn)。事實上,每只螞蟻并不是像我們想象的需要知道整個世界的信息,他們其實只關(guān)心很小范圍內(nèi)的眼前信息,而且根據(jù)這些局部信息利用幾條簡單的規(guī)則進行決策,但是,當(dāng)集群里有無數(shù)螞蟻的時候,復(fù)雜性的行為就會凸現(xiàn)出來。這就是人工生命、復(fù)雜性科學(xué)解釋的規(guī)律!
那么,這些簡單規(guī)則是什么呢?下面詳細說明:
1、范圍:螞蟻觀察到的范圍是一個方格世界,螞蟻有一個參數(shù)為速度半徑(一般是3),那么它能觀察到的范圍就是3*3個方格世界,并且能移動的距離也在這個范圍之內(nèi)。
2、環(huán)境:螞蟻所在的環(huán)境是一個虛擬的世界,其中有障礙物,有別的螞蟻,還有信息素,信息素有兩種,一種是找到食物的螞蟻灑下的食物信息素,一種是找到窩的螞蟻灑下的窩的信息素。每個螞蟻都僅僅能感知它范圍內(nèi)的環(huán)境信息。環(huán)境以一定的速率讓信息素消失。
3、覓食規(guī)則:在每只螞蟻能感知的范圍內(nèi)尋找是否有食物,如果有就直接過去。否則看是否有信息素,并且比較在能感知的范圍內(nèi)哪一點的信息素最多,這樣,它就朝信息素多的地方走,并且每只螞蟻多會以小概率犯錯誤,從而并不是往信息素最多的點移動。螞蟻找窩的規(guī)則和上面一樣,只不過它對窩的信息素做出反應(yīng),而對食物信息素沒反應(yīng)。
4、移動規(guī)則: 每只螞蟻都朝向信息素最多的方向移,并且,當(dāng)周圍沒有信息素指引的時候,螞蟻會按照自己原來運動的方向慣性的運動下去,并且,在運動的方向有一個隨機的小的擾動。為了防止螞蟻原地轉(zhuǎn)圈,它會記住最近剛走過了哪些點,如果發(fā)現(xiàn)要走的下一點已經(jīng)在最近走過了,它就會盡量避開。
5、避障規(guī)則:如果螞蟻要移動的方向有障礙物擋住,它會隨機的選擇另一個方向,并且有信息素指引的話,它會按照覓食的規(guī)則行為。
6、播撒信息素規(guī)則:每只螞蟻在剛找到食物或者窩的時候撒發(fā)的信息素最多,并隨著它走遠的距離,播撒的信息素越來越少。根據(jù)這幾條規(guī)則,螞蟻之間并沒有直接的關(guān)系,但是每只螞蟻都和環(huán)境發(fā)生交互,而通過信息素這個紐帶,實際上把各個螞蟻之間關(guān)聯(lián)起來了。比如,當(dāng)一只螞蟻找到了食物,它并沒有直接告訴其它螞蟻這兒有食物,而是向環(huán)境播撒信息素,當(dāng)其它的螞蟻經(jīng)過它附近的時候,就會感覺到信息素的存在,進而根據(jù)信息素的指引找到了食物。
****https://www.cnblogs.com/Qling/p/9348098.html
蟻群算法簡介及應(yīng)用https://www.cnblogs.com/lfri/p/12242311.html
對蟻群算法的解釋https://www.cnblogs.com/wukuanglin/p/11799162.html
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-yos1Dnt1-1688196030591)(2023-07-01-11-41-34.png)]
C語言實現(xiàn)https://www.cnblogs.com/paulbai/archive/2012/03/21/2410695.html
蟻群算法求解TSP問題https://www.cnblogs.com/twzh123456/p/11798800.html
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-Oo1D8uDe-1688196030592)(2023-07-01-11-41-44.png)]
蟻群算法(Ant Colony Optimization,ACO)是一種基于螞蟻行為模擬的啟發(fā)式優(yōu)化算法,通常用于解決組合優(yōu)化問題,如旅行商問題(TSP)和任務(wù)分配問題等。蟻群算法的核心思想是通過模擬螞蟻在搜索空間中的移動和信息交流來尋找問題的最優(yōu)解。
蟻群算法的基本原理是通過大量的人工螞蟻在問題空間中進行隨機搜索,并通過信息素的更新和揮發(fā)來引導(dǎo)螞蟻的行動。每只螞蟻在搜索過程中根據(jù)信息素以及啟發(fā)函數(shù)(heuristic function)做出決策,選擇下一個要遍歷的節(jié)點。成功的路徑上會釋放更多的信息素,這樣其他螞蟻就有更大可能性選擇該路徑,逐步形成一個正向反饋的過程,最終收斂到問題的最優(yōu)解。
蟻群算法包括兩個重要的步驟:路徑選擇和信息素更新。路徑選擇是螞蟻根據(jù)信息素和啟發(fā)函數(shù)選擇下一個節(jié)點的過程。信息素更新是指在每次迭代后,根據(jù)螞蟻的走過的路徑和目標(biāo)函數(shù)值,更新問題空間中各個路徑上的信息素。
蟻群算法的優(yōu)勢在于能夠處理復(fù)雜的組合優(yōu)化問題,并且具有一定的魯棒性和適應(yīng)性。它結(jié)合了局部搜索和全局搜索的特點,能夠在搜索過程中充分利用已有的信息,并通過信息素的引導(dǎo)實現(xiàn)全局搜索。
然而,蟻群算法也存在一些挑戰(zhàn)和限制。首先,算法的性能高度依賴于參數(shù)的選擇和調(diào)整。不同問題可能需要不同的參數(shù)設(shè)置,這對問題的適應(yīng)性和通用性提出了要求。其次,蟻群算法在解決大規(guī)模問題時可能遇到搜索空間爆炸的問題,導(dǎo)致計算復(fù)雜度增加。此外,蟻群算法的收斂速度較慢,需要進行多次迭代才能得到較好的解。
總之,蟻群算法是一種基于模擬螞蟻行為的啟發(fā)式優(yōu)化算法,適用于解決組合優(yōu)化問題。它通過螞蟻的搜索和信息交流來尋找最優(yōu)解,并具有一定的魯棒性和適應(yīng)性。然而,在使用蟻群算法時需要仔細選擇參數(shù)和調(diào)整算法以獲得較好的性能。
當(dāng)應(yīng)用蟻群算法解決問題時,通常會遵循以下步驟:
-
定義問題:明確問題的目標(biāo)和約束條件。將問題轉(zhuǎn)化為適合蟻群算法求解的形式,如旅行商問題、任務(wù)分配問題等。
-
初始化參數(shù):確定蟻群算法的相關(guān)參數(shù),包括螞蟻數(shù)量、信息素初始值、信息素揮發(fā)率等。這些參數(shù)的選擇對算法的性能和收斂速度有重要影響。
-
創(chuàng)建螞蟻群體:根據(jù)問題的規(guī)模和復(fù)雜程度,創(chuàng)建一定數(shù)量的螞蟻,并將它們放置在問題空間中的不同位置。
-
路徑選擇:每只螞蟻根據(jù)信息素和啟發(fā)函數(shù)決策下一個要遍歷的節(jié)點。信息素表示路徑上的足跡,啟發(fā)函數(shù)則提供了節(jié)點間的啟發(fā)信息。螞蟻可以通過概率方法(如輪盤賭選擇法)來選擇下一個節(jié)點。
-
更新信息素:在每一次迭代結(jié)束后,根據(jù)螞蟻的路徑和目標(biāo)函數(shù)值,更新問題空間中各個路徑上的信息素。成功的路徑上將釋放更多的信息素,而信息素會隨時間揮發(fā)。這樣,經(jīng)過多次迭代,優(yōu)良路徑上的信息素逐漸增加,而不良路徑上的信息素則減少。
-
判斷終止條件:根據(jù)問題的要求和算法的性能,設(shè)定適當(dāng)?shù)慕K止條件,如達到最大迭代次數(shù)、目標(biāo)函數(shù)值達到閾值等。
-
輸出最優(yōu)解:最終,根據(jù)蟻群算法的迭代結(jié)果,輸出找到的最優(yōu)解或近似最優(yōu)解。
需要注意的是,蟻群算法中的啟發(fā)函數(shù)和信息素更新策略可以根據(jù)具體問題進行設(shè)計。啟發(fā)函數(shù)可以根據(jù)節(jié)點間的距離、經(jīng)驗知識等提供指導(dǎo)信息。信息素更新策略可以根據(jù)螞蟻的走過的路徑和目標(biāo)函數(shù)值來確定。
此外,為了提高蟻群算法的性能,常常使用一些改進策略,如引入局部搜索機制(如2-opt操作)、采用多種信息素調(diào)整方式(如最大最小蟻群系統(tǒng))等。
總結(jié)起來,蟻群算法通過模擬螞蟻行為的方式,通過路徑選擇和信息素更新來求解組合優(yōu)化問題。這個算法的基本步驟包括定義問題、初始化參數(shù)、創(chuàng)建螞蟻群體、路徑選擇、信息素更新、判斷終止條件和輸出最優(yōu)解。通過合理的參數(shù)設(shè)置和改進策略,蟻群算法可以得到較好的優(yōu)化性能和近似最優(yōu)解。
以下是一個簡單的 Matlab 代碼示例,演示如何使用蟻群算法解決旅行商問題(TSP):文章來源:http://www.zghlxwxcb.cn/news/detail-519681.html
% TSP問題的距離矩陣
distanceMatrix = [0, 2, 9, 10;
1, 0, 6, 4;
15, 7, 0, 8;
6, 3, 12, 0];
% 參數(shù)設(shè)置
numAnts = 10; % 螞蟻數(shù)量
numIterations = 100; % 迭代次數(shù)
alpha = 1; % 信息素重要程度因子
beta = 2; % 啟發(fā)信息重要程度因子
rho = 0.5; % 信息素揮發(fā)率
Q = 1; % 信息素增加強度因子
% 初始化信息素矩陣
pheromoneMatrix = ones(size(distanceMatrix)) / numel(distanceMatrix);
% 迭代尋找最優(yōu)路徑
bestPath = [];
bestDistance = Inf;
for iter = 1:numIterations
% 每只螞蟻的當(dāng)前位置和已經(jīng)訪問過的節(jié)點
antPos = ones(numAnts, 1);
visitedNodes = false(size(distanceMatrix));
% 每只螞蟻進行路徑選擇
for ant = 1:numAnts
while any(~visitedNodes(ant,:))
currentNode = antPos(ant);
unvisitedNodes = find(~visitedNodes(ant,:));
% 計算節(jié)點選擇概率
nodeProbs = (pheromoneMatrix(currentNode, unvisitedNodes) .^ alpha) ...
.* ((1 ./ distanceMatrix(currentNode, unvisitedNodes)) .^ beta);
nodeProbs = nodeProbs / sum(nodeProbs);
% 根據(jù)概率選擇下一個節(jié)點
nextNode = randsample(unvisitedNodes, 1, true, nodeProbs);
% 更新螞蟻位置和已訪問節(jié)點
antPos(ant) = nextNode;
visitedNodes(ant, nextNode) = true;
end
end
% 計算每只螞蟻的路徑距離
pathDistances = zeros(numAnts, 1);
for ant = 1:numAnts
nodes = [antPos(ant); find(visitedNodes(ant,:))];
pathDist = distanceMatrix(sub2ind(size(distanceMatrix), nodes(1:end-1), nodes(2:end)));
pathDistances(ant) = sum(pathDist);
end
% 更新最優(yōu)路徑
[minDist, minIdx] = min(pathDistances);
if minDist < bestDistance
bestDistance = minDist;
bestPath = [antPos(minIdx), find(visitedNodes(minIdx,:))];
end
% 更新信息素矩陣
deltaPheromoneMatrix = zeros(size(distanceMatrix));
for ant = 1:numAnts
nodes = [antPos(ant); find(visitedNodes(ant,:))];
for i = 1:length(nodes)-1
deltaPheromoneMatrix(nodes(i), nodes(i+1)) = deltaPheromoneMatrix(nodes(i), nodes(i+1)) + Q / pathDistances(ant);
end
end
pheromoneMatrix = (1-rho) * pheromoneMatrix + deltaPheromoneMatrix;
end
% 輸出結(jié)果
disp('最優(yōu)路徑:');
disp(bestPath);
disp('最優(yōu)距離:');
disp(bestDistance);
請注意,上述代碼僅為演示目的,并不包含所有可能的改進和優(yōu)化。在實際應(yīng)用中,您可能需要根據(jù)具體問題進行修改和調(diào)整。文章來源地址http://www.zghlxwxcb.cn/news/detail-519681.html
到了這里,關(guān)于【數(shù)學(xué)建?!繃愓骖}分析 2014A題 嫦娥三號軟著陸軌道設(shè)計與控制策略的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!