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

下載本文檔

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

文檔簡介

第8章計(jì)算工具的評(píng)估和選擇

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

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

(+Inf*************)9《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR不遵守IEEE754的情況正/負(fù)無窮大:被0除時(shí)出現(xiàn)RAPTOR不支持無窮大,在此類情況下它會(huì)給出“Can'tdividebyzero”錯(cuò)誤。非數(shù)字(NaN):NaN用于表示無效的運(yùn)算(例如:-1的平方根)RAPTOR會(huì)立即生成錯(cuò)誤(例如:“Can'ttakesquarerootofnegativenumber”)10《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR精度問題RAPTOR浮點(diǎn)數(shù)以二進(jìn)制存儲(chǔ),并分為三個(gè)部分,總長度為64位:符號(hào)、指數(shù)和尾數(shù)。1個(gè)符號(hào)位11位指數(shù)52位尾數(shù)符號(hào)存儲(chǔ)數(shù)字的符號(hào)(正或負(fù))指數(shù)存儲(chǔ)使數(shù)字增大或減小到的2的冪(最大/最小的2的冪是+1,023和-1,022)尾數(shù)存儲(chǔ)實(shí)際的數(shù)字尾數(shù)的有限存儲(chǔ)區(qū)域限制了兩個(gè)相近的浮點(diǎn)數(shù)能夠接近的程度(也即精度)11《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR精度問題在RAPTOR的默認(rèn)精度情形下,可以有以下兩種計(jì)算數(shù)值:整數(shù),最長為10位有效數(shù)值例如:1073741824(2^30)浮點(diǎn)數(shù),最長為15位有效數(shù)值,初始默認(rèn)四位小數(shù)例如:562949953421312.0000(2^49)或0.110012《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR精度問題set_precision()設(shè)置小數(shù)位后的精度,設(shè)置以后,系統(tǒng)中所有數(shù)值全部使用浮點(diǎn)數(shù)表示(不再有整數(shù)表達(dá))13《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇二進(jìn)制循環(huán)數(shù)字(0.1)10轉(zhuǎn)為二進(jìn)制會(huì)成為無限循環(huán)小數(shù)IEEE754因此產(chǎn)生截?cái)嗾`差14《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇算法環(huán)境的轉(zhuǎn)換RAPTOR原型(Prototype)算法設(shè)計(jì)工具所產(chǎn)生的算法用到各種科研和工程實(shí)踐中,需要轉(zhuǎn)變成為用戶要求的環(huán)境中可以運(yùn)行的程序RAPTOR提供將已經(jīng)實(shí)現(xiàn)的算法轉(zhuǎn)換為不同的程序設(shè)計(jì)語言(Ada、C++、C#、Java等)的功能15《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR->C++(Hanoi塔)16《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR->C++(Hanoi塔)主要修改和差異:為所有的RAPTOR算法中的變量設(shè)計(jì)C++的變量類型在C++中對(duì)所有的變量名的大小寫敏感在屏幕輸出過程中,C++環(huán)境一般不支持類似“+”這樣的字符串連接符,而是需要用”<<”替代17《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR->C++(快速排序)18《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇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《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR->C++(數(shù)組)數(shù)組聲明(int*arr_Data=newint[105];C++的特點(diǎn):指針規(guī)定了數(shù)組的最大元素個(gè)數(shù):105C++的特點(diǎn),數(shù)組預(yù)先定義的大小不可逾越C++中的指針(*)和地址(&)等特殊形式來傳遞子程序(函數(shù))形式參數(shù)中的數(shù)組類參數(shù)voidQkPass(int*R,inti,intj,int&QkPass_result)20《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR->C++(子圖、子程序)RAPTOR子程序會(huì)自動(dòng)識(shí)別成為C++的函數(shù)但RAPTOR的子圖轉(zhuǎn)成的C++程序中,無法識(shí)別子圖的存在(例如RAPTOR算法中的Input_和Output_子圖),只是按照main子圖對(duì)其他子圖的調(diào)用順序,依次將其他賦值、決策和循環(huán)語句進(jìn)行轉(zhuǎn)換21《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR->C++(隨機(jī)漫步)22《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR轉(zhuǎn)換的C++圖形指令與WinBGIm圖形庫的對(duì)比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è)置其標(biāo)題欄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《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇C++的薄弱環(huán)節(jié)在于不同類型變量的轉(zhuǎn)換WinBGIm圖形庫支持字符串的顯示,但不支持?jǐn)?shù)值變量直接在圖形視窗輸出須將數(shù)值類的變量—getdist(漫步終點(diǎn)與出發(fā)點(diǎn)的距離),轉(zhuǎn)變成為字符串之后才能顯示,C++實(shí)際上也沒有此類函數(shù)最后使用了變通的辦法sprint()(格式化輸出函數(shù)),將getdist的輸出結(jié)果變成字符串,再調(diào)用outtextxy()函數(shù)將串里的字符顯示在C++圖形視窗中24《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇C++的隨機(jī)數(shù)函數(shù)在C++的隨機(jī)數(shù)應(yīng)用中,需要用到隨機(jī)數(shù)種的函數(shù),其作用是為每一次隨機(jī)函數(shù)的調(diào)用,給出一個(gè)與上一次應(yīng)用不同的初值本例的循環(huán)進(jìn)行了2000次,就需要2000個(gè)不同的種子,否則隨機(jī)數(shù)列就會(huì)出現(xiàn)一致性的現(xiàn)象另一方案,是采用系統(tǒng)時(shí)間值,這也是最容易取得的不同種子初值:srand(inttime(0));25《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR的轉(zhuǎn)換和編譯問題RAPTOR除了可以將其環(huán)境中的算法轉(zhuǎn)換成高級(jí)語言后編譯之外,也支持直接進(jìn)行編譯在不少情況下,在RAPTOR中運(yùn)行并得到結(jié)果的算法,但就是無法通過編譯或轉(zhuǎn)換為高級(jí)語言的代碼26《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇不可編譯和轉(zhuǎn)換的狀況通過應(yīng)用實(shí)驗(yàn),目前可以歸納出三類不可編譯的RAPTOR算法:第一種是子圖的遞歸調(diào)用;第二種是子圖和過程的相互調(diào)用;第三種是變量未賦初值問題在這三種問題的算法要實(shí)現(xiàn)編譯和轉(zhuǎn)換,必須做一些調(diào)整27《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR子圖遞歸的調(diào)整策略28《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR子圖交叉調(diào)用調(diào)整策略29《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇子程序輸出變量賦初值調(diào)整策略1、在RAPTOR子程序中,輸出變量在調(diào)用程序中不必賦初值,也可以運(yùn)行,但無法通過編譯;2、只要在調(diào)用程序程序中,加上賦初值的語句,即可通過編譯。30《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇選擇計(jì)算工具的理由1、動(dòng)態(tài)語言和靜態(tài)語言動(dòng)態(tài)類型語言指在運(yùn)行期間才去做數(shù)據(jù)類型檢查的語言,該語言會(huì)在你第一次賦值給變量時(shí),在內(nèi)部將數(shù)據(jù)類型記錄下來靜態(tài)類型語言:靜態(tài)類型語言的數(shù)據(jù)類型是在編譯其間檢查的,也就是說在寫程序時(shí)要聲明所有變量的數(shù)據(jù)類型31《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇選擇計(jì)算工具的理由2、強(qiáng)類型和弱類型語言任何程序變量都有兩個(gè)屬性:類型和值;也就是說,弱類型的變量同樣有類型強(qiáng)類型的變量類型,必須在源代碼中明確定義,稱之為“變量聲明”弱類型的變量類型則是無需聲明的,由解釋器解釋強(qiáng)類型的變量類型是不能改變的,弱類型變量是隨需改變的,這是強(qiáng)弱類型語言的主要區(qū)別32《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇選擇計(jì)算工具的理由動(dòng)態(tài)類型語言,特別是高級(jí)動(dòng)態(tài)類型語言,由于取消了變量的限制,能夠讓人們可以集中精力思考業(yè)務(wù)邏輯實(shí)現(xiàn)強(qiáng)類型語言的優(yōu)勢究竟是什么呢?顯然就是執(zhí)行效率非常高。例如,C/C++的特點(diǎn),使它成為Unix操作系統(tǒng)的基石和大部分工業(yè)控制系統(tǒng)的主要程序設(shè)計(jì)語言33《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR與面向?qū)ο竺嫦驅(qū)ο蟪绦蛟O(shè)計(jì)(Object-OrientedProgramming,OOP)作為另一類編程思想,它將一個(gè)系統(tǒng)看成是一個(gè)個(gè)對(duì)象組成,這些對(duì)象包含了數(shù)據(jù)和與其相關(guān)操作34《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇OOP要素對(duì)象(Object):包含一定的數(shù)據(jù)結(jié)構(gòu)和狀態(tài)的實(shí)體操作(Operation):作用于對(duì)象的行為,如訪問和處理對(duì)象的狀態(tài)封裝(Encapsulation):定義對(duì)象和操作,只提供抽象的接口,并隱藏它們的具體實(shí)現(xiàn)35《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇OOP要素繼承(Inheritance):通過繼承現(xiàn)有類型的性質(zhì),創(chuàng)建新的數(shù)據(jù)類型,而不影響原有數(shù)據(jù)類型多態(tài)性(Polymorphism):判定數(shù)據(jù)類型集合中各類型的區(qū)別,使程序可以按照它們的共同特性來書寫36《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR對(duì)OOP的支持RAPTOR中的面向?qū)ο蟮哪J皆试S用戶創(chuàng)建類(Class)及其方法(Method)和屬性(attributes),進(jìn)行對(duì)象實(shí)例化,并實(shí)踐面向?qū)ο蟮某绦蛟O(shè)計(jì)(OOP)。37《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇RAPTOR對(duì)OOP的支持在RAPTOR面向?qū)ο蟮哪J綍?huì)出現(xiàn)兩個(gè)標(biāo)簽:UML和mainRAPTOR使用一種所謂的“統(tǒng)一建模語言(UnifiedModelinglanguage,UML)”的可視化形式來創(chuàng)建面向?qū)ο蟮某绦蚪Y(jié)構(gòu)38《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇創(chuàng)建”Cube”類39《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇使用Cube類計(jì)算立方體的體積使用名為cube的類,利用立方體的一條邊來計(jì)算的立方體的體積需要下列項(xiàng)目:字段:Side(邊長:數(shù)值)和Volume(體積:數(shù)值)方法:SetSide(),GetSide(),ComputeVolume(),GetVolume()40《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇Cube類及其成員41《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇為類創(chuàng)建方法一旦已創(chuàng)建了類,將自動(dòng)添加一個(gè)新類名稱選項(xiàng)卡,現(xiàn)需為每個(gè)類的方法創(chuàng)建代碼單擊Cube選項(xiàng)卡,看到四個(gè)新的標(biāo)簽,每個(gè)方法都有一個(gè)。42《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇OOP的main子圖43《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇OOP繼承和多態(tài)性44《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇逆向工程:從代碼到流程圖在大部分問題的求解過程中,都是可以借鑒前人的思維成果,在他人的工作基礎(chǔ)上,進(jìn)行創(chuàng)新和改革將使用程序設(shè)計(jì)語言設(shè)計(jì)的算法還原成流程圖可以幫助理解在算法的邏輯設(shè)計(jì)上的總體構(gòu)架和主要的設(shè)計(jì)思路45《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇CVF介紹CVF是由FATESOFT開發(fā)的從代碼到流程圖的轉(zhuǎn)換工具用于逆向工程或軟件開發(fā)中的文檔撰寫,用于分析代碼非常合適46《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇CVF中顯示的代碼樹和代碼在CVF中,具備了編輯器,所以程序編輯與流程圖可視化可以完全同步,并用流程圖顯示源代碼的結(jié)構(gòu)47《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇CVF介紹CVF從代碼轉(zhuǎn)換而得的可視化流程圖,分為兩類,第一類(flowchart-1),所有的源碼片段顯示在各個(gè)框中第二類(flowchart-2)流程圖中不顯示程序代碼,而是顯示更為抽象的程序構(gòu)架(分支、循環(huán)、代碼塊)48《可視化計(jì)算》第8章計(jì)算工具的評(píng)估和選擇CVF大顆粒度流程-expandlevel1

溫馨提示

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

評(píng)論

0/150

提交評(píng)論