freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

飛行器實時仿真算法研究本科畢業(yè)論文-文庫吧在線文庫

2024-10-10 20:04上一頁面

下一頁面
  

【正文】 ype* rng_type。 i++) { double u = ()。 圖 33 使用 taus 算法,執(zhí)行一萬次 圖 34 使用 ranlux 算法,執(zhí)行一萬次 本科畢業(yè)設(shè)計論文 21 插值 在飛行器彈道計算中,相對一部分?jǐn)?shù)據(jù) 是通過測量或?qū)嶒瀼椀赖摹? 圖 37 繼承關(guān)系 我們的基類要能夠做和插值有關(guān)的所有事情,但是除了插值算法的實現(xiàn)。用算法的時間復(fù)雜度表示的話,此算法耗時 O(n)。用上圖來解釋,假如某一次插 值調(diào)用使得我們要確定 50 的位置,那么下一次插值很有可能是確定 5 5 53 或者 4 48 的位置,總之很有可能在50 附近,大跨度的跳躍很少發(fā)生。 本科畢業(yè)設(shè)計論文 23 圖 39 二分法和相關(guān)性搜索結(jié)合 上圖中所示是一個比較壞的情況,從上一個點 6 開始搜索 31 的位置,這種情況可以通過設(shè)置區(qū)間分段大小來改善。//存放自變量 vector double amp。 x, const size_tamp。 線性插值 最簡單的插值算法是一維線性插值。 圖 310 拉格朗日遞歸算法 本科畢業(yè)設(shè)計論文 26 拉格朗日插值類的接口非常簡單,大致如下: class CPolyLagrangeInterp : public CBaseInterp { public: CPolyLagrangeInterp(const interp_tableamp。 //連加 .............. }。 插值接口 插值接口中使用了一個選擇插值方法的枚舉結(jié)構(gòu)體,如下: 本科畢業(yè)設(shè)計論文 27 enum InterpMethod { /** 不插值 , 當(dāng) x(i) = x = x(i+1), 返回離 x 較近的點所對應(yīng)的函數(shù)值,當(dāng) x 為中點時,取右邊的點 */ DISCRETE, /** 當(dāng) x(i) = x = x(i+1), 返回 x(i)對應(yīng)的函數(shù)值 */ FLOOR, /** 當(dāng) x(i) = x = x(i+1), 返回 x(i+1)對應(yīng)的函數(shù)值 */ CEILING, /** 線性插值,函數(shù)連續(xù),插值點的一階導(dǎo)數(shù)不連續(xù) */ LINEAR, /** 二次樣條插值 , 函數(shù)和其一階導(dǎo)數(shù)都連續(xù) */ QSPLINE, /** 三次樣條插值 , 函數(shù)和其一階導(dǎo)數(shù)和二階導(dǎo)數(shù)都連續(xù) */ CSPLINE, /** 二階多項式插值 , 函數(shù)連續(xù),導(dǎo)數(shù)在插值點個數(shù)為 3 個的時候也連續(xù) ,否則不連續(xù) */ POLY2, /** 三階多項式插值 , 函數(shù)連續(xù),導(dǎo)數(shù)在插值點個數(shù)為 4 個的時候連續(xù) ,否則不連續(xù) */ POLY3, //拉格朗日插值 LAGRANGE }。 Extrap。微軟的開發(fā)工具廉價,易用, RTX不需要額外的昂貴的和專有的開發(fā)工具進(jìn)行程序的開發(fā)和調(diào)試。 大致代碼如下 : double start_time = .....。使用內(nèi)存測試工具,沒有發(fā)現(xiàn)任何內(nèi)存泄露。隨機(jī)數(shù)類提供了非常多的生成器以滿足不同的需求,并且浮點數(shù)生成速度接近每秒鐘百萬次。也感謝在畢業(yè)設(shè)計期間幫助過我的同學(xué)們,你們都很棒。矩陣維數(shù)超過 1000 時,矩陣求逆等復(fù)雜運(yùn)算會很慢。每增加一維,速度大約降低 40%左右。 double end_time = .....。這對于正在執(zhí)行關(guān)鍵指令的應(yīng)用程序尤其重要。 本科畢業(yè)設(shè)計論文 29 第 4 章 實時環(huán)境測試 測試環(huán)境 cpu: AMD Athlon 64 X2 Dual 系統(tǒng): RTX 操作系統(tǒng) 內(nèi)存: 1GB RTX 全稱 realtime extension,即實時操作系統(tǒng),提供對 windows 操作系統(tǒng)的擴(kuò)展功能。 idpVar。 139。 idpVar, const vectorsize_tamp。線性插值和 1 階拉格朗日插值等價,但是由于線性插值是最常用的插值算法,為了提高速度,這里單獨作為一個類來設(shè)計。 本科畢業(yè)設(shè)計論文 24 //派生類必須重寫此函數(shù),返回插值結(jié)果 double virtual RawInterp(const vectordoubleamp。 //在第 i 維自變量中尋找 x 所對應(yīng)的下標(biāo),二分法 size_t Locate(const doubleamp。 //上次尋找的下標(biāo) size_t dj。 相關(guān)性搜索需要一個緩存,存儲上次搜索后得到的下標(biāo)。當(dāng)數(shù)據(jù)量很大時,效率很高,搜索時間短。為了快速實現(xiàn)此 功能,可以先僅考慮一維情況。 插值基類的構(gòu)架 插值基類是給派生類打基礎(chǔ),基類的方法應(yīng)該具有通用性,這也是泛化的原則之一。 } 性能分析 以下列舉了一些隨機(jī)數(shù)生成算法的相 對性能,速度最快的是 taus,, gfsr4 和mt19937。 int main(int argc, char* argv[]) { CRandom rng(RNG_BOROSH13)。 (gsl_rng_coveyou)。 /*改變所使用的算法 */ bool ChangeType(RNG_ORDER type)。所以類 CRandom 的接口大致如下 class CRandom { public: /*構(gòu)造函數(shù)提供默認(rèn)隨機(jī)數(shù)算法 ,也可以動態(tài)設(shè)置 */ CRandom(RNG_ORDER type = RNG_TAUS)。 GSL 提供了大量的隨機(jī)數(shù)生成器,但是由于給出是 C 的接口,使用起來非常麻煩,用戶要負(fù)責(zé)大量的內(nèi)存開辟和銷毀工作。 3. rows_,行數(shù)。 這里我寫了個很簡單的類 mslice,類似于上節(jié)中的 slice,但是適用于二維數(shù)據(jù)。上面的方式的優(yōu)點是,初始化列表里的數(shù)據(jù)不限制為常量。依我來看,最理想的 方法是把初始化列表放到構(gòu)造函數(shù)中,如下: Vectordouble v({ , , , 1, }, 5)。avec)。決定某個函數(shù)放在基類還是派生類需要很周全的考慮,基類和派生類可以比作一個 杠桿,不能一頭很重,一頭很輕,代碼失衡會導(dǎo)致后期的編碼和維護(hù)非常困難。 …… . }。 public: //重寫基類的虛函數(shù) virtual const sliceamp。 //以下兩個構(gòu)造函數(shù)是為了 //Vector Vector //VectorView Vector //ConstVectorView Vector Vector(const GneVectorT amp。 virtual const valarrayTamp。 s) const。} T operator ()(size_t i) const { return cref(i) 。 virtual const valarrayTamp。}。 GneVector 接口 根據(jù)以上的分析就可以寫出 GneVector 類的接口 //基類 template typename T class GneVector { public: //constructor GneVector(); virtual ~GneVector(); 本科畢業(yè)設(shè)計論文 9 //三個類都要重寫的方法 virtual const sliceamp。 //構(gòu)造一個視圖對象,其指向的對象不可變,指向 vec 的所有元素 ??勺円晥D是對其所指向的向量擁有讀寫權(quán)限,而常視圖則只有讀權(quán) 限。由于要支持多種類型,所以最好的方法是使用模板實現(xiàn),現(xiàn)成的有C++標(biāo)準(zhǔn)庫中的 vector 模板類和 valarray 模板類, vector 和 valarray 各有特點, 本科畢業(yè)設(shè)計論文 7 vector 模板類支持泛型運(yùn)算,內(nèi)存可動態(tài)改變,支持元素的插入和刪除,但是對元素的數(shù)學(xué)運(yùn)算支持不好,沒有重載一些基本的運(yùn)算符,更沒有重載 sin,cos 等數(shù)學(xué)函數(shù)。 project 目錄中為工程文件。 5.用戶不負(fù)責(zé)插值類內(nèi)部的任何內(nèi)存分配和釋放工作。 6. 可以保存每種隨機(jī)數(shù)算法的當(dāng)前狀態(tài),并且也可以導(dǎo)入已存的狀態(tài)。 6. 提供矩陣視圖功能 (可對矩陣的局部作為一個獨立矩陣進(jìn)行操作 )。 矩陣 設(shè)計一個類,能對數(shù)學(xué)上的矩陣進(jìn)行描述和運(yùn)算。 1. 用戶 不負(fù)責(zé)向量類對象內(nèi)部的任何內(nèi)存申請和刪除工作。 GSL 的優(yōu)點是運(yùn)行速度快,尤其矩陣和向量是使用第三方庫 CBLAS,所以矩陣運(yùn)算的速度和 matlab 不相上下 (matlab 矩陣底層也是用 CBLAS 庫實現(xiàn)的 )。 、掌握 GSL、 VC++軟件的仿真程序設(shè)計,完成基 于 RTX 實時環(huán)境算法庫開發(fā)。 在第三章中對每一部分都做了詳細(xì)的論述,并使用 C++語言給出具體的實現(xiàn)和接口,盡量使得算法庫具有較高的代碼可重復(fù)使用性,較快的執(zhí)行速度,較高的效率和簡單的接口。 3.學(xué)習(xí)、掌握 GSL、 VC++軟件的仿真程序設(shè)計,完成基于 RTX 實時環(huán)境算法庫開發(fā)。flight vehicle simulation alogrithm,。 GSL 全稱 GNU Scientific Library,是 GNU 項目的組成部分,遵循 GPL 協(xié)議。 本科畢業(yè)設(shè)計論文 3 第 2 章 需求分析 向量 需要設(shè)計一個類,能對數(shù)學(xué)上的向量進(jìn)行描述和運(yùn)算。 6. 提供向量視圖功能 (可對向量的局部作為一個獨立向量進(jìn)行操作 )。 3. 支持基本的向量數(shù)學(xué)運(yùn)算,如 +*/,范數(shù),支持叉乘等等。 3. 可以返回區(qū)間 [0,1)中浮點數(shù)。 2. 支持多線程。 example 目錄中為工程代碼使用的示例。如果沒有定義的話,那么那些計算過程將使用全局靜態(tài)變量,以 提高計算速度。后來我試著用 private 繼承方式,然后在視圖類中重寫需要的函數(shù),重寫非常簡單,只是對基類函數(shù)的調(diào)用而已。 VectorViewdouble view(vec)。 GneVector 一般矩 陣類, AlmostVector 類, ConstVectorView 常視圖類,VectorView 類和 Vector 向量類,它們之間的繼承關(guān)系如下: 圖 31 繼承關(guān)系圖 根據(jù)類的抽象設(shè)計原則,最底層的類應(yīng)該具有最通用的方法和數(shù)據(jù),若需要使用未知的方法,可將此方法聲明為虛函數(shù),留給派生類取定義。} size_t start() const { return getSlice().start() 。 slice viewSlice_。 vec, const sliceamp。 //override this function in VectorView and Vector virtual valarrayTamp。 本科畢業(yè)設(shè)計論文 11 slice slice_。 val, const sliceamp。 … }。 vec) 。由于輸出只需要對對象具有只讀權(quán)限即可,而輸入則要求對對象的讀寫權(quán)限。 friend std::istreamamp。當(dāng)然也可以用下面這種方式實現(xiàn): double var[5] = { , , , 1, }。 v , , , 1, 。 矩陣 GSL 提供的矩陣類型使用起來非常麻煩,由于是對 c 語言中的數(shù)組進(jìn)行包裝,所以用戶時刻都要注意內(nèi)存的變化,花費(fèi)大量精力減少內(nèi)存泄露 ,并且每種數(shù)據(jù)類型都有不同的函數(shù)版本,且不支持用戶自定義類型,所以我決定使用 GSL的算法,重寫構(gòu)架矩陣類,并且給出 C++的接口,支持多種類型,包括未知的用戶自定義類型,盡量減少用戶對程序本身的維護(hù)工作量,使用戶能專注于算法本 本科畢業(yè)設(shè)計論文 14 身。 }。 隨機(jī)數(shù) 一個好的隨機(jī)數(shù)生成算法必須能夠在理論上和統(tǒng)計上同時滿足所需特性。但是用戶使用的時候,不必關(guān)心狀態(tài)到底是怎么變的,這是算法內(nèi)部要考慮的事。 /*打印所有的算法及其對應(yīng)的枚舉量 */ void printAllNames()。 /*type_stack 為我們構(gòu)造的堆棧 , 由于是此類對象所共享的變量, 所以設(shè)為靜態(tài) */ static const TypeArray type_stack。 現(xiàn)在一切都非常明了,構(gòu)造函數(shù)的具體實現(xiàn)也是非常簡單 CRandom::CRandom(RNG_ORDER type /*= RNG_TAUS*/) { if (type () || type RNG_ORDER(0)) { gsl_error(type of generator not exists, __FILE__, __LINE__, GSL_ENOMEM)。 // [0,1)區(qū)間的浮點數(shù) int int_rand = ()。雖然其函數(shù)關(guān)系 )(xfy? 在某個區(qū)間 ],[ ba 上式客觀存在的,但是卻不知道具體
點擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1