《可視化計算》第8章 計算工具的評估和選擇課件_第1頁
《可視化計算》第8章 計算工具的評估和選擇課件_第2頁
《可視化計算》第8章 計算工具的評估和選擇課件_第3頁
《可視化計算》第8章 計算工具的評估和選擇課件_第4頁
《可視化計算》第8章 計算工具的評估和選擇課件_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第8章計算工具的評估和選擇

《可視化計算》1《可視化計算》第8章計算工具的評估和選擇學(xué)習(xí)目標如何評估計算工具的能力與局限?如何將RAPTOR中實現(xiàn)的算法轉(zhuǎn)換成其他程序設(shè)計語言的版本?為何要在不同的計算工具之間進行選擇?面向過程與面向?qū)ο蟮某绦蛴泻尾煌??是否可以將其他語言實現(xiàn)的程序算法轉(zhuǎn)變?yōu)榱鞒虉D來方便分析?2《可視化計算》第8章計算工具的評估和選擇計算工具的能力與局限評估在所有數(shù)字化計算工具中,都存在一種表達能力極其局限性。二者是相互依存,共同存在的3《可視化計算》第8章計算工具的評估和選擇計算工具的表達能力PythonExcel4《可視化計算》第8章計算工具的評估和選擇誤差的來源1.描述誤差(實際問題與數(shù)學(xué)模型之間)2.觀測誤差(儀器本身的精度)3.截斷誤差(用收斂的無窮級數(shù)的前幾項來代替無窮級數(shù))4.舍入誤差(用有限位小數(shù)來代替無窮小數(shù))5《可視化計算》第8章計算工具的評估和選擇RAPTOR中的誤差6《可視化計算》第8章計算工具的評估和選擇IEEE754-一個計算機誤差規(guī)范描述了在二進制計算機中應(yīng)如何存儲浮點數(shù)。它之所以得到廣泛采用,原因是它允許在合理的空間量中存儲浮點數(shù),以及相對快速地進行計算IEEE754的規(guī)定最大/最小限制精度二進制循環(huán)數(shù)字7《可視化計算》第8章計算工具的評估和選擇最大/最小限制因為用于存儲數(shù)字的內(nèi)存位數(shù)是有限的,所以,可以存儲的最大數(shù)或最小數(shù)也是有窮的對于RAPTOR,可以存儲的最大數(shù)是1.79769313486232E+308,而可以存儲的最小正數(shù)是

2.2250738585072E-3088《可視化計算》第8章計算工具的評估和選擇RAPTOR遵守IEEE754的情況下溢:當(dāng)產(chǎn)生了一個因太小而無法表示的數(shù)字時,會發(fā)生下溢。在IEEE和RAPTOR中,結(jié)果是0。上溢:當(dāng)數(shù)字因太大而無法表示時,會發(fā)生上溢RAPTOR使用它自己的特殊表示方法來表示此情況

(+Inf*************)9《可視化計算》第8章計算工具的評估和選擇RAPTOR不遵守IEEE754的情況正/負無窮大:被0除時出現(xiàn)RAPTOR不支持無窮大,在此類情況下它會給出“Can'tdividebyzero”錯誤。非數(shù)字(NaN):NaN用于表示無效的運算(例如:-1的平方根)RAPTOR會立即生成錯誤(例如:“Can'ttakesquarerootofnegativenumber”)10《可視化計算》第8章計算工具的評估和選擇RAPTOR精度問題RAPTOR浮點數(shù)以二進制存儲,并分為三個部分,總長度為64位:符號、指數(shù)和尾數(shù)。1個符號位11位指數(shù)52位尾數(shù)符號存儲數(shù)字的符號(正或負)指數(shù)存儲使數(shù)字增大或減小到的2的冪(最大/最小的2的冪是+1,023和-1,022)尾數(shù)存儲實際的數(shù)字尾數(shù)的有限存儲區(qū)域限制了兩個相近的浮點數(shù)能夠接近的程度(也即精度)11《可視化計算》第8章計算工具的評估和選擇RAPTOR精度問題在RAPTOR的默認精度情形下,可以有以下兩種計算數(shù)值:整數(shù),最長為10位有效數(shù)值例如:1073741824(2^30)浮點數(shù),最長為15位有效數(shù)值,初始默認四位小數(shù)例如:562949953421312.0000(2^49)或0.110012《可視化計算》第8章計算工具的評估和選擇RAPTOR精度問題set_precision()設(shè)置小數(shù)位后的精度,設(shè)置以后,系統(tǒng)中所有數(shù)值全部使用浮點數(shù)表示(不再有整數(shù)表達)13《可視化計算》第8章計算工具的評估和選擇二進制循環(huán)數(shù)字(0.1)10轉(zhuǎn)為二進制會成為無限循環(huán)小數(shù)IEEE754因此產(chǎn)生截斷誤差14《可視化計算》第8章計算工具的評估和選擇算法環(huán)境的轉(zhuǎn)換RAPTOR原型(Prototype)算法設(shè)計工具所產(chǎn)生的算法用到各種科研和工程實踐中,需要轉(zhuǎn)變成為用戶要求的環(huán)境中可以運行的程序RAPTOR提供將已經(jīng)實現(xiàn)的算法轉(zhuǎn)換為不同的程序設(shè)計語言(Ada、C++、C#、Java等)的功能15《可視化計算》第8章計算工具的評估和選擇RAPTOR->C++(Hanoi塔)16《可視化計算》第8章計算工具的評估和選擇RAPTOR->C++(Hanoi塔)主要修改和差異:為所有的RAPTOR算法中的變量設(shè)計C++的變量類型在C++中對所有的變量名的大小寫敏感在屏幕輸出過程中,C++環(huán)境一般不支持類似“+”這樣的字符串連接符,而是需要用”<<”替代17《可視化計算》第8章計算工具的評估和選擇RAPTOR->C++(快速排序)18《可視化計算》第8章計算工具的評估和選擇RAPTOR->C++(文件I/O)C++文件操作的語句包括:文件輸入輸出頭文件:fstream;

輸入流定義和輸入文件打開:ifstreamredirect_input("m101-data.csv",ios::in);文件數(shù)據(jù)輸入到變量:while(redirect_input>>temp);輸入文件關(guān)閉:redirect_input.close();19《可視化計算》第8章計算工具的評估和選擇RAPTOR->C++(數(shù)組)數(shù)組聲明(int*arr_Data=newint[105];C++的特點:指針規(guī)定了數(shù)組的最大元素個數(shù):105C++的特點,數(shù)組預(yù)先定義的大小不可逾越C++中的指針(*)和地址(&)等特殊形式來傳遞子程序(函數(shù))形式參數(shù)中的數(shù)組類參數(shù)voidQkPass(int*R,inti,intj,int&QkPass_result)20《可視化計算》第8章計算工具的評估和選擇RAPTOR->C++(子圖、子程序)RAPTOR子程序會自動識別成為C++的函數(shù)但RAPTOR的子圖轉(zhuǎn)成的C++程序中,無法識別子圖的存在(例如RAPTOR算法中的Input_和Output_子圖),只是按照main子圖對其他子圖的調(diào)用順序,依次將其他賦值、決策和循環(huán)語句進行轉(zhuǎn)換21《可視化計算》第8章計算工具的評估和選擇RAPTOR->C++(隨機漫步)22《可視化計算》第8章計算工具的評估和選擇RAPTOR轉(zhuǎn)換的C++圖形指令與WinBGIm圖形庫的對比RAPTOR轉(zhuǎn)換的C++圖形指令WinBGIm圖形庫指令備注-#include<winbgim.h>包含需要的C++頭文件open_graph_window(field_width,field_height);set_window_title("RandomWalk");initwindow(field_width,field_height,"RandemWalk");初始化圖形視窗并設(shè)置其標題欄draw_circle(Center_x,Center_y,10,green,true);circle(center_x,center_y,10);繪制圓形display_text(10,400,"Thistimethedistanceis"+getdist,black);outtextxy(10,400,"Thistimethedistanceis:");在圖形視窗顯示文字23《可視化計算》第8章計算工具的評估和選擇C++的薄弱環(huán)節(jié)在于不同類型變量的轉(zhuǎn)換WinBGIm圖形庫支持字符串的顯示,但不支持數(shù)值變量直接在圖形視窗輸出須將數(shù)值類的變量—getdist(漫步終點與出發(fā)點的距離),轉(zhuǎn)變成為字符串之后才能顯示,C++實際上也沒有此類函數(shù)最后使用了變通的辦法sprint()(格式化輸出函數(shù)),將getdist的輸出結(jié)果變成字符串,再調(diào)用outtextxy()函數(shù)將串里的字符顯示在C++圖形視窗中24《可視化計算》第8章計算工具的評估和選擇C++的隨機數(shù)函數(shù)在C++的隨機數(shù)應(yīng)用中,需要用到隨機數(shù)種的函數(shù),其作用是為每一次隨機函數(shù)的調(diào)用,給出一個與上一次應(yīng)用不同的初值本例的循環(huán)進行了2000次,就需要2000個不同的種子,否則隨機數(shù)列就會出現(xiàn)一致性的現(xiàn)象另一方案,是采用系統(tǒng)時間值,這也是最容易取得的不同種子初值:srand(inttime(0));25《可視化計算》第8章計算工具的評估和選擇RAPTOR的轉(zhuǎn)換和編譯問題RAPTOR除了可以將其環(huán)境中的算法轉(zhuǎn)換成高級語言后編譯之外,也支持直接進行編譯在不少情況下,在RAPTOR中運行并得到結(jié)果的算法,但就是無法通過編譯或轉(zhuǎn)換為高級語言的代碼26《可視化計算》第8章計算工具的評估和選擇不可編譯和轉(zhuǎn)換的狀況通過應(yīng)用實驗,目前可以歸納出三類不可編譯的RAPTOR算法:第一種是子圖的遞歸調(diào)用;第二種是子圖和過程的相互調(diào)用;第三種是變量未賦初值問題在這三種問題的算法要實現(xiàn)編譯和轉(zhuǎn)換,必須做一些調(diào)整27《可視化計算》第8章計算工具的評估和選擇RAPTOR子圖遞歸的調(diào)整策略28《可視化計算》第8章計算工具的評估和選擇RAPTOR子圖交叉調(diào)用調(diào)整策略29《可視化計算》第8章計算工具的評估和選擇子程序輸出變量賦初值調(diào)整策略1、在RAPTOR子程序中,輸出變量在調(diào)用程序中不必賦初值,也可以運行,但無法通過編譯;2、只要在調(diào)用程序程序中,加上賦初值的語句,即可通過編譯。30《可視化計算》第8章計算工具的評估和選擇選擇計算工具的理由1、動態(tài)語言和靜態(tài)語言動態(tài)類型語言指在運行期間才去做數(shù)據(jù)類型檢查的語言,該語言會在你第一次賦值給變量時,在內(nèi)部將數(shù)據(jù)類型記錄下來靜態(tài)類型語言:靜態(tài)類型語言的數(shù)據(jù)類型是在編譯其間檢查的,也就是說在寫程序時要聲明所有變量的數(shù)據(jù)類型31《可視化計算》第8章計算工具的評估和選擇選擇計算工具的理由2、強類型和弱類型語言任何程序變量都有兩個屬性:類型和值;也就是說,弱類型的變量同樣有類型強類型的變量類型,必須在源代碼中明確定義,稱之為“變量聲明”弱類型的變量類型則是無需聲明的,由解釋器解釋強類型的變量類型是不能改變的,弱類型變量是隨需改變的,這是強弱類型語言的主要區(qū)別32《可視化計算》第8章計算工具的評估和選擇選擇計算工具的理由動態(tài)類型語言,特別是高級動態(tài)類型語言,由于取消了變量的限制,能夠讓人們可以集中精力思考業(yè)務(wù)邏輯實現(xiàn)強類型語言的優(yōu)勢究竟是什么呢?顯然就是執(zhí)行效率非常高。例如,C/C++的特點,使它成為Unix操作系統(tǒng)的基石和大部分工業(yè)控制系統(tǒng)的主要程序設(shè)計語言33《可視化計算》第8章計算工具的評估和選擇RAPTOR與面向?qū)ο竺嫦驅(qū)ο蟪绦蛟O(shè)計(Object-OrientedProgramming,OOP)作為另一類編程思想,它將一個系統(tǒng)看成是一個個對象組成,這些對象包含了數(shù)據(jù)和與其相關(guān)操作34《可視化計算》第8章計算工具的評估和選擇OOP要素對象(Object):包含一定的數(shù)據(jù)結(jié)構(gòu)和狀態(tài)的實體操作(Operation):作用于對象的行為,如訪問和處理對象的狀態(tài)封裝(Encapsulation):定義對象和操作,只提供抽象的接口,并隱藏它們的具體實現(xiàn)35《可視化計算》第8章計算工具的評估和選擇OOP要素繼承(Inheritance):通過繼承現(xiàn)有類型的性質(zhì),創(chuàng)建新的數(shù)據(jù)類型,而不影響原有數(shù)據(jù)類型多態(tài)性(Polymorphism):判定數(shù)據(jù)類型集合中各類型的區(qū)別,使程序可以按照它們的共同特性來書寫36《可視化計算》第8章計算工具的評估和選擇RAPTOR對OOP的支持RAPTOR中的面向?qū)ο蟮哪J皆试S用戶創(chuàng)建類(Class)及其方法(Method)和屬性(attributes),進行對象實例化,并實踐面向?qū)ο蟮某绦蛟O(shè)計(OOP)。37《可視化計算》第8章計算工具的評估和選擇RAPTOR對OOP的支持在RAPTOR面向?qū)ο蟮哪J綍霈F(xiàn)兩個標簽:UML和mainRAPTOR使用一種所謂的“統(tǒng)一建模語言(UnifiedModelinglanguage,UML)”的可視化形式來創(chuàng)建面向?qū)ο蟮某绦蚪Y(jié)構(gòu)38《可視化計算》第8章計算工具的評估和選擇創(chuàng)建”Cube”類39《可視化計算》第8章計算工具的評估和選擇使用Cube類計算立方體的體積使用名為cube的類,利用立方體的一條邊來計算的立方體的體積需要下列項目:字段:Side(邊長:數(shù)值)和Volume(體積:數(shù)值)方法:SetSide(),GetSide(),ComputeVolume(),GetVolume()40《可視化計算》第8章計算工具的評估和選擇Cube類及其成員41《可視化計算》第8章計算工具的評估和選擇為類創(chuàng)建方法一旦已創(chuàng)建了類,將自動添加一個新類名稱選項卡,現(xiàn)需為每個類的方法創(chuàng)建代碼單擊Cube選項卡,看到四個新的標簽,每個方法都有一個。42《可視化計算》第8章計算工具的評估和選擇OOP的main子圖43《可視化計算》第8章計算工具的評估和選擇OOP繼承和多態(tài)性44《可視化計算》第8章計算工具的評估和選擇逆向工程:從代碼到流程圖在大部分問題的求解過程中,都是可以借鑒前人的思維成果,在他人的工作基礎(chǔ)上,進行創(chuàng)新和改革將使用程序設(shè)計語言設(shè)計的算法還原成流程圖可以幫助理解在算法的邏輯設(shè)計上的總體構(gòu)架和主要的設(shè)計思路45《可視化計算》第8章計算工具的評估和選擇CVF介紹CVF是由FATESOFT開發(fā)的從代碼到流程圖的轉(zhuǎn)換工具用于逆向工程或軟件開發(fā)中的文檔撰寫,用于分析代碼非常合適46《可視化計算》第8章計算工具的評估和選擇CVF中顯示的代碼樹和代碼在CVF中,具備了編輯器,所以程序編輯與流程圖可視化可以完全同步,并用流程圖顯示源代碼的結(jié)構(gòu)47《可視化計算》第8章計算工具的評估和選擇CVF介紹CVF從代碼轉(zhuǎn)換而得的可視化流程圖,分為兩類,第一類(flowchart-1),所有的源碼片段顯示在各個框中第二類(flowchart-2)流程圖中不顯示程序代碼,而是顯示更為抽象的程序構(gòu)架(分支、循環(huán)、代碼塊)48《可視化計算》第8章計算工具的評估和選擇CVF大顆粒度流程-expandlevel1

溫馨提示

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

評論

0/150

提交評論