




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、畢業(yè)論文論 文 題 目 基于vb的間接平差程序設(shè)計(jì) 專 業(yè) 班 級(jí) 工程測量 學(xué) 生 姓 名 指 導(dǎo) 教 師 完 成 時(shí) 間 2015年5月5日 重慶能源職業(yè)學(xué)院重慶能源職業(yè)學(xué)院畢業(yè)設(shè)計(jì)(論文)指導(dǎo)教師評(píng)語評(píng)語:成績:指導(dǎo)教師簽名:年 月 日重慶能源職業(yè)學(xué)院畢業(yè)設(shè)計(jì)(論文)答辯記錄提 出 問 題回 答 問 題正確基本正確有一般性錯(cuò)誤有原則性錯(cuò)誤回答不清123456答辯委員會(huì)評(píng)語及建議成績:答辯委員會(huì)主任:年 月 日目 錄摘 要11 引言21.1 現(xiàn)狀分析21.2 目的及意義31.3 研究內(nèi)容42 visual basic編程語言概述52.1 visual basic簡介52.2visual b
2、asic程序設(shè)計(jì)簡述83 間接平差244.1 平差軟件整體展示285算例演算315.1水準(zhǔn)網(wǎng)間接平差316 結(jié)論33摘 要測量平差是測繪類專業(yè)的一門重要的專業(yè)基礎(chǔ)課程,是用于觀測數(shù)據(jù)處理的一門應(yīng)用數(shù)學(xué) 。但是因?yàn)槠溆?jì)算量比較大,這變使大家在學(xué)習(xí)和使用的時(shí)候感覺十分頭疼。雖然有很多簡化了的平差算法,比如高斯約化法, 但是這些算法一方面會(huì)影響計(jì)算精度,另一方面也不能有效的減少計(jì)算量。平差計(jì)算是利用最小二乘原理消除觀測值與起算數(shù)據(jù)之間的矛盾,求出各待定元素的平差值并評(píng)定精度。而在經(jīng)典測量平差中,主要研究四種平差模型方程(條件平差、間接平差、附有未知參數(shù)的條件平差和附有限制條件的間接平差)的列立和求解
3、,其牽涉到大量的矩陣運(yùn)算,傳統(tǒng)的人工計(jì)算工作量很大。隨著計(jì)算機(jī)的出現(xiàn),矩陣運(yùn)算就變得輕松,而且計(jì)算機(jī)的運(yùn)行速度快,精度高,特別是對(duì)于具有大量矩陣運(yùn)算,計(jì)算機(jī)輕松解決。前提是要編好相應(yīng)的程序代碼。本文運(yùn)用visual basic語言編制了一個(gè)平差軟件,主要對(duì)水準(zhǔn)網(wǎng)和附合導(dǎo)線進(jìn)行了平差的編制和軟件程序界面的設(shè)計(jì),實(shí)現(xiàn)的功能主要有對(duì)水準(zhǔn)網(wǎng)數(shù)據(jù)和附合導(dǎo)線數(shù)據(jù)的平差計(jì)算,當(dāng)然為了平差后能使用數(shù)據(jù),本軟件還設(shè)計(jì)了數(shù)據(jù)輸出的功能,使界面更友好,方便用戶使用。 關(guān)鍵詞:水準(zhǔn)網(wǎng)間接平差,visual basic ,visual basic界面設(shè)計(jì)(gui)1 引言1.1 現(xiàn)狀分析visual basic是一種由
4、微軟公司開發(fā)的包含協(xié)助開發(fā)環(huán)境的事件驅(qū)動(dòng)編程語言。從任何標(biāo)準(zhǔn)來說,vb都是世界上使用人數(shù)最多的語言不僅是盛贊vb的開發(fā)者還是抱怨vb的開發(fā)者的數(shù)量。它源自于basic編程語言。vb擁有圖形用戶界面(gui)和快速應(yīng)用程序開發(fā)(rad)系統(tǒng),可以輕易的使用dao、rdo、ado連接數(shù)據(jù)庫,或者輕松的創(chuàng)建activex控件。程序員可以輕松的使用vb提供的組件快速建立一個(gè)應(yīng)用程序。 水準(zhǔn)網(wǎng)是建立高程控制的一種常規(guī)方法。為了提高水準(zhǔn)測量的效率,使得水準(zhǔn)測量的內(nèi)外業(yè)一體化,提高數(shù)據(jù)處理速度、精度和可靠性,外業(yè)觀測上需采用更加科學(xué)、快速的作業(yè)模式,內(nèi)業(yè)數(shù)據(jù)處理上需采用簡便、可靠的數(shù)據(jù)處理軟件。隨著測繪儀器
5、和計(jì)算機(jī)軟件業(yè)的發(fā)展,目前市場上已出現(xiàn)多種控制網(wǎng)平差計(jì)算軟件,不過有些平差軟件界面復(fù)雜,難懂,需要一段時(shí)間的學(xué)習(xí)才能使用;還有就是這些軟件,要么定權(quán)不合理,要么就價(jià)格昂貴。比如常用的平差易軟件就是在windows系統(tǒng)下用vc 開發(fā)的控制測量數(shù)據(jù)處理軟件,就存在著權(quán)分配不合理,以致改正數(shù)過大,平差結(jié)果偏離真實(shí)值的問題。雖然發(fā)現(xiàn)了問題,然而由于vc語言的局限和作為收費(fèi)軟件,其源代碼不公開等緣故,致使此類問題久久不能得到解決。1.2 目的及意義visual basic編程語言是一種可視化編程語言,通過近幾年的發(fā)展,它已成為一種專業(yè)化的開發(fā)語言和環(huán)境。其依托于現(xiàn)代pc機(jī)的高性能,以計(jì)算機(jī)性能換取編程的
6、簡便。它把科學(xué)計(jì)算、結(jié)果的可視化和編程集中在一個(gè)可視化的環(huán)境中,不僅功能強(qiáng),而且便于輸入數(shù)據(jù),易于掌握和使用。測量平差是測繪類專業(yè)的一門重要的專業(yè)基礎(chǔ)課程,是用于處理觀測數(shù)據(jù)的一門應(yīng)用數(shù)學(xué)。平差計(jì)算是利用最小二乘原理消除觀測值與起算數(shù)據(jù)之間的矛盾,求出各待定元素的平差值并評(píng)定精度。而在經(jīng)典測量平差中,主要研究四種平差模型方程(條件平差、間接平差、附有未知參數(shù)的條件平差和附有限制條件的間接平差)的列立和求解,其牽涉到大量的矩陣運(yùn)算,傳統(tǒng)的人工計(jì)算工作量很大,已往的測量數(shù)據(jù)處理方法需要編制特定的處理矩陣運(yùn)算的程序,而且程序復(fù)雜,難度大。隨著計(jì)算機(jī)的出現(xiàn),矩陣運(yùn)算就變得輕松,而且計(jì)算機(jī)的運(yùn)行速度快,
7、精度高,特別是對(duì)于具有大量矩陣運(yùn)算,計(jì)算機(jī)輕松解決。前提是要編好相應(yīng)的程序代碼。本文將分析經(jīng)典測量平差中的條件平差模型和間接平差模型的特點(diǎn),重點(diǎn)運(yùn)用visual basic編程語言編寫水準(zhǔn)網(wǎng)間接平差和單一附合導(dǎo)線的平差程序軟件。用visual basic語言編寫出經(jīng)典平差模型程序,運(yùn)用到教學(xué)過程中使各種模型的公式推導(dǎo)與實(shí)際例題相結(jié)合,對(duì)于提高教學(xué)質(zhì)量及加強(qiáng)學(xué)生對(duì)于誤差理論與測量平差基礎(chǔ)課程的理解具有重要的意義;對(duì)于我們即將走上工作崗位的同學(xué)來說,它將為我們處理各種實(shí)際工程的計(jì)算提供了極大的便利,也可以為今后更多的工程應(yīng)用編程打下基礎(chǔ),提高工作效率和質(zhì)量。同時(shí)也使我們?cè)诰幊谭矫嬗懈鼮樯钊氲睦斫夂?/p>
8、掌握,對(duì)我們以后工作很有幫助,比如可編程計(jì)算器等測量輔助工具,這將會(huì)提高我們的工作效率。1.3 研究內(nèi)容本設(shè)計(jì)主要運(yùn)用visual basic編程語言,編制控制測量中水準(zhǔn)網(wǎng)和單一導(dǎo)線的平差程序軟件。實(shí)現(xiàn)的功能包括:1.水準(zhǔn)網(wǎng)間接平差的平差值,在最小二乘法準(zhǔn)則()要求下求出誤差方程中的待定參數(shù)。2.單一導(dǎo)線和導(dǎo)線網(wǎng)的近似坐標(biāo)推算:近似坐標(biāo)的推算不僅是后續(xù)工作的基礎(chǔ),為條件方程系數(shù)陣的求取做準(zhǔn)備,更能在此基礎(chǔ)上計(jì)算坐標(biāo)閉合差,檢驗(yàn)外業(yè)成果的好壞。3. visual basic gui界面設(shè)計(jì):對(duì)于用戶來說,程序可視化,同時(shí)又易懂,便于輸入數(shù)據(jù)。4.平差數(shù)據(jù)結(jié)果輸出:便于用戶使用和查看。5.將幾個(gè)平
9、差程序集中在一個(gè)系統(tǒng)中,并生成exe可執(zhí)行程序,在windows環(huán)境下通用,無需安裝。因此,本平差軟件讓你的使用絕對(duì)省心。對(duì)每一個(gè)功能的實(shí)現(xiàn),其后都附有應(yīng)的算例。2 visual basic編程語言概述2.1 visual basic簡介2.1.1 visual basic的發(fā)展visual basic (簡稱vb)是美國微軟公司推出的windows環(huán)境下的軟件開發(fā)工具,使用vb可以既快又簡單地開發(fā)windows應(yīng)用軟件。visual是指開發(fā)圖形用戶界面(gui)的方法。visual的意思是“視覺的”或“可視的”,也就是直觀的編程方法。在vb中引入了控件的概念,如各種各樣的按鈕、文本框、復(fù)選框
10、等,vb把這些控件模式化,并且每個(gè)控件都由若干屬性來控制其外觀、工作方法。這樣,采用方法無需編寫大量代碼去描述界面元素的外觀和位置,而只要把預(yù)先建立的控件加到屏幕上,就像使用“畫圖”之類的繪圖程序,通過選擇畫圖工具來畫圖一樣,可視化程序設(shè)計(jì)語言除了提供常規(guī)的編程功能外,還提供一套可視化的設(shè)計(jì)工具,便于程序員建立圖形對(duì)象,巧妙地把windows編程的復(fù)雜性“封裝”起來。vb在原有basic語言的基礎(chǔ)上進(jìn)一步發(fā)展,包含了數(shù)百條語句、函數(shù)及關(guān)鍵詞,其中很多與windows gui有直接關(guān)系。vb與basic之間有著千絲萬縷的聯(lián)系,如果學(xué)過basic語言的話,看到vb程序結(jié)構(gòu)會(huì)感到很親切。專業(yè)人員可以
11、用visual basic實(shí)現(xiàn)其他任何windows編程語言的功能,而初學(xué)者只要掌握幾個(gè)關(guān)鍵詞就可以建立實(shí)用的應(yīng)用程序。隨著微型計(jì)算機(jī)技術(shù)的飛速發(fā)展,美國微軟公司以其具有多任務(wù)性、圖形用戶界面、動(dòng)態(tài)數(shù)據(jù)交換、對(duì)象鏈接與嵌入等強(qiáng)大功能,而成為當(dāng)今微型計(jì)算機(jī)操作系統(tǒng)的主流產(chǎn)品。許多商用軟件公司為適應(yīng)這一趨勢推出windows境下的軟件開發(fā)工具,如visual c+,delphi,powerbuilder等等。但對(duì)于初學(xué)者希望在windows環(huán)境中開發(fā)一般的應(yīng)用程序,vb無疑是較理想的。vb是目前眾多windows軟件開發(fā)工具中效率最高的一個(gè)。2.1.2 vb的功能特點(diǎn)1面向?qū)ο髒b采用了面向?qū)ο笤O(shè)
12、計(jì)思想,它基本思路是把復(fù)雜設(shè)計(jì)問題分解為個(gè)個(gè)能夠完成獨(dú)立功能相對(duì)簡單對(duì)象集合。所謂“對(duì)象”就是個(gè)可操作實(shí)體如窗體、窗體中命令按鈕、標(biāo)簽、文本框等面向?qū)ο缶幊叹秃孟翊罘e木樣員可根據(jù)和界面設(shè)計(jì)要求直接在屏幕上“畫出窗口、菜單、按鈕等區(qū)別類型對(duì)象并為每個(gè)對(duì)象設(shè)置屬性。 2事件驅(qū)動(dòng)在windows環(huán)境下是以事件驅(qū)動(dòng)方式運(yùn)行每個(gè)對(duì)象的都能響應(yīng)多個(gè)區(qū)別事件,每個(gè)事件都能驅(qū)動(dòng)段代碼事件過程該代碼決定了對(duì)象功能通常稱這種機(jī)制為事件驅(qū)動(dòng)事件可由用戶操作觸發(fā)也可以由系統(tǒng)或應(yīng)用觸發(fā)例如單擊個(gè)命令按鈕就觸發(fā)了按鈕click(單擊)事件該事件中代碼就會(huì)被執(zhí)行若用戶未進(jìn)行任何操作(未觸發(fā)事件)則就處于等待狀態(tài)整個(gè)應(yīng)用就是
13、由彼此獨(dú)立事件過程構(gòu)成。3軟件software集成式開發(fā)vb為編程提供了個(gè)集成開發(fā)環(huán)境在這個(gè)環(huán)境中編程者可設(shè)計(jì)界面、編寫代碼、調(diào)試直至把應(yīng)用編譯成可在windows中運(yùn)行可執(zhí)行文件并為它生成安裝vb集成開發(fā)環(huán)境為編程者提供了很大方便。4結(jié)構(gòu)化設(shè)計(jì)語言vb具有豐富數(shù)據(jù)類型是種附合結(jié)構(gòu)化設(shè)計(jì)思想語言而且簡單易學(xué)此外作為種設(shè)計(jì)語言vb還有許多獨(dú)到的處5強(qiáng)大數(shù)據(jù)庫訪問功能vb利用數(shù)據(jù)control控件可以訪問多種數(shù)據(jù)庫vb6o提供adocontrol控件不但可以用最少代碼實(shí)現(xiàn)數(shù)據(jù)庫操作和控制也可以取代datacontrol控件和rdocontrol控件6支持對(duì)象鏈接和嵌入技術(shù)vb核心是對(duì)對(duì)象鏈接和嵌入
14、(ole)技術(shù)支持它是訪問所有對(duì)象種思路方法利用ole技術(shù)能夠開發(fā)集聲音、圖像、動(dòng)畫、字處理、web等對(duì)象于體7網(wǎng)絡(luò)功能vb6o提供了dlttml(dynamicttml)設(shè)計(jì)工具利用這種技術(shù)可以動(dòng)態(tài)創(chuàng)建和編輯web頁面使用戶在vb中開發(fā)多功能網(wǎng)絡(luò)應(yīng)用軟件software8多個(gè)應(yīng)用向?qū)b提供了多種向?qū)鐟?yīng)用向?qū)А惭b向?qū)?、?shù)據(jù)對(duì)象向?qū)Ш蛿?shù)據(jù)窗體向?qū)ㄟ^它們可以快速地創(chuàng)建區(qū)別類型、區(qū)別功能應(yīng)用9支持動(dòng)態(tài)交換、動(dòng)態(tài)鏈接技術(shù)通過動(dòng)態(tài)數(shù)據(jù)交換(dde)編程技術(shù)vb開發(fā)應(yīng)用能和其他windows應(yīng)用的間建立數(shù)據(jù)通信通過動(dòng)態(tài)鏈接庫技術(shù)在vb中可方便地用c語言或匯編語言編寫也可windows應(yīng)用接口(ap
15、i)10聯(lián)機(jī)幫助功能在vb中利用幫助菜單和f1功能鍵用戶可隨時(shí)方便地得到所需要幫助信息vb幫助窗口中顯示了有關(guān)舉例代碼通過復(fù)制、粘貼操作可獲取大量舉例代碼為用戶學(xué)習(xí)和使用提供方便2.2visual basic程序設(shè)計(jì)簡述2.2.1操作界面簡介在默認(rèn)情況下,visual basic的操作界面包含了6個(gè)主要的窗口:主窗體,窗體窗口,工具箱窗口,屬性窗口,工程管理窗口和代碼窗口。 下面簡要介紹vb中這幾個(gè)窗口: 1.主窗體圖2.1 vb主窗體圖2.窗體窗口:它是用來對(duì)應(yīng)用程序進(jìn)行界面設(shè)計(jì)的窗口,用戶通過與窗體上的控件交互即可得到相應(yīng)的結(jié)果,體現(xiàn)了vb的可視化編程思想。值得注意的是:每一個(gè)窗體窗口必須
16、有一個(gè)唯一的名字。在圖2.2 vb窗體窗口圖設(shè)計(jì)狀態(tài)下,為方便用戶對(duì)控件的定位,窗體由網(wǎng)絡(luò)點(diǎn)組成,可以通過“工具”|“選項(xiàng)”命令,在“通用”標(biāo)簽的“顯示網(wǎng)格”中改變“寬度”或“高度”的值來改變網(wǎng)格的間距3. 工具箱窗口 工具箱中包含有許多圖標(biāo),它是各種控件的制作工具,利用這些工具,用戶可以在窗體上設(shè)計(jì)各種控件。標(biāo)準(zhǔn)工具箱內(nèi)只包含了19個(gè)控件(指針不是控件,其作用僅用于窗體和控件的移動(dòng)或調(diào)整它們的大?。?,用戶可根據(jù)需要添加其它控件到工具箱中。具體方法是選擇 “工程”|“部件”命令打開“部件”對(duì)話框,在控件標(biāo)簽頁中選擇需要的部件,然后單擊“確定”按鈕,此時(shí)工具箱中將顯示新添加的控件圖標(biāo)按鈕。 圖2
17、.3vb工具箱窗口圖4.屬性窗用于設(shè)置對(duì)象的屬性值,所有窗體或控件的屬性都可以通過屬性窗口進(jìn)行修改。如對(duì)象名稱、顏色、字體等。屬性窗口包括以下幾個(gè)部分:圖2.4vb屬性窗口圖(1).對(duì)象列表框:單擊下拉按鈕可打開當(dāng)前窗體對(duì)象列表,可選擇要設(shè)定屬性的對(duì)象。(2).屬性顯示排列方式:有“按字母序”和“按分類序”兩個(gè)標(biāo)簽。(3).屬性列表框:列出當(dāng)前對(duì)象在設(shè)計(jì)模式下可用的屬性及當(dāng)前值,左欄顯示屬性名稱,右欄顯示相應(yīng)的屬性值,并可由用戶設(shè)置該屬性值。(4).屬性說明:顯示當(dāng)前屬性的含義。5.工程管理窗口工程管理窗口保存了這個(gè)工程(或應(yīng)用程序)所有的文件,如工程文件(.vbp)、窗體文件(.frm)、標(biāo)
18、準(zhǔn)模塊文件(.bas)和類模塊文件(.cls)等。工程管理窗口上方有3個(gè)按鈕,分別是:圖2.5 vb工程管理窗口圖(1).查看代碼:切換到代碼窗口,顯示和編輯代碼。(2).查看對(duì)象:切換到窗體窗口,顯示和編輯對(duì)象。(3).切換文件夾:切換本窗口內(nèi)文件夾顯示方式。 6.代碼窗口代碼窗口是專門用來進(jìn)行程序設(shè)計(jì)的窗口,顯示和編輯程序代碼。每個(gè)窗體都有各自的代碼窗口。打開代碼窗口的方法:圖2.6 vb代碼窗口圖(1)在工程管理窗口選擇一個(gè)窗體或標(biāo)準(zhǔn)模塊,并選擇“查看代碼”按鈕。(2)在窗體窗口雙擊控件或窗體本身。(3)選擇“視圖”|“代碼窗口”命令。2.2.2 幾個(gè)常用控件介紹1.標(biāo)簽 label功能
19、:用于顯示文本(輸出)信息,不能作為輸入信息的界面??梢栽O(shè)置標(biāo)簽的背景顏色,本軟件界面設(shè)計(jì)時(shí)就用到透明屬性。2. 文本框 textbox 功能:是一個(gè)文本編輯區(qū)域,可以輸入,編輯和顯示正文內(nèi)容。這是使用最頻繁的一個(gè)控件??梢酝ㄟ^改變屬性來改變文本大小,顏色等。3. 命令按鈕commandbutton 功能:接受用戶輸入的命令。當(dāng)用戶鼠標(biāo)點(diǎn)擊此按鈕,便可以執(zhí)行命令,實(shí)現(xiàn)所編功能。2.2.3 vb編程語言書寫 和變量聲明vb語言與其他語言書寫有不同,所以有必要了解vb的書寫方式1. vb代碼不區(qū)分字母的大小寫。系統(tǒng)關(guān)鍵字自動(dòng)轉(zhuǎn)換每個(gè)單詞的首字母大寫;用戶自定義行以第一次為準(zhǔn)。 2. 語句書寫自由。
20、每一行可書寫幾個(gè)語句,之間用冒號(hào)分隔;一行最多255個(gè)字符;一條語句可分若干行書寫,用續(xù)行符 (空格+下劃線)連接。3. 注釋利于程序的維護(hù)和調(diào)試。用單撇號(hào)“” 以及“編輯”工具欄的“設(shè)置注釋塊”,則vb中注釋語句會(huì)自動(dòng)變?yōu)榫G色,不參與運(yùn)行。4.vb中變量聲明與其他編程語言的變量聲明也有不同,下面簡單的介紹下:(1) 聲明形式: dim 變量名 as 自定義類型名 例 dim student as studtype (2) 引用: 形式:變量名.元素名 例 表示student變量中的姓名,第4門課程的成績,則表示如下:student.name,student.mark(4)(3) 賦值: 如:
21、student.name=“王剛” student.mark(4)=98其中常用的有聲明形式和賦值,而賦值是使用最頻繁的,本次編程中也大量使用賦值變量聲明2.2.4矩陣的在vb中的表示我們知道平差計(jì)算中,矩陣計(jì)算是必須的,像系數(shù)矩陣,法方程矩陣等都要用到矩陣。所以用vb編制平差程序的要點(diǎn)和難點(diǎn)就是進(jìn)行矩陣運(yùn)算的編制。在了解矩陣的運(yùn)算法則后,便可用vb語言編程了。而用什么來表示矩陣呢?那就是數(shù)組,下面重點(diǎn)介紹下數(shù)組,這對(duì)程序的開發(fā)至關(guān)重要!1.數(shù)組不是一種數(shù)據(jù)類型,而是一組相同類型的變量的集合。在程序中使用數(shù)組的最大好處是用一個(gè)數(shù)組名代表邏輯上相關(guān)的一批數(shù)據(jù),用下標(biāo)表示該數(shù)組中的各個(gè)元素,和循環(huán)
22、語句結(jié)合使用,使得程序書寫簡潔。使用數(shù)組時(shí)需注意:數(shù)組必須先聲明后使用。數(shù)組分兩類:一類是靜態(tài)(定長)數(shù)組,第二累時(shí)動(dòng)態(tài)(可變長)數(shù)組。像a(7,7)這便是靜態(tài)數(shù)組,a(n,t)就是動(dòng)態(tài)數(shù)組,其中的字母代表未知數(shù)。2.靜態(tài)數(shù)組,也就是定長的數(shù)組。如我們想將矩陣 1 2 3 4這個(gè)兩行兩列的矩陣用vb來表示,可以表示為dim a(1 to 2,1 to 2) as double 變量聲明a(1,1)=1: a(1,2)=1: a(2,1)=1: a(2,2)=1這樣數(shù)組也變?cè)趘b中形成了,當(dāng)然也可以聯(lián)合for 循環(huán)使用,則語句變得更為簡潔。本程序中用到此聯(lián)合,來求解矩陣運(yùn)算。3.動(dòng)態(tài)數(shù)組是指在聲
23、明數(shù)組時(shí)未給出數(shù)組的大小(省略括號(hào)中的下標(biāo)),當(dāng)要使用它時(shí),隨時(shí)用redim語句重新指出數(shù)組大小。如 redim a(1 to n ,1 to n) 這樣便定義了一個(gè)動(dòng)態(tài)的n維數(shù)組,注意聲明必須是redim,不然程序會(huì)出錯(cuò)。這里還需指明的是dim、private、public變量聲明語句是說明性語句,可出現(xiàn)在過程內(nèi)或通用聲明段;redim語句是執(zhí)行語句,只能出現(xiàn)在過程內(nèi)。在過程中可多次使用redim來改變數(shù)組的大小和維數(shù)。但使用redim語句會(huì)使原來數(shù)組中的值丟失,可以在redim語句后加preserve參數(shù)來保留數(shù)組中的數(shù)據(jù)。使用preserve時(shí)只能改變最后一維的大小,前面幾維大小不能改變
24、。 還有redim中的下標(biāo)可以是常量,也可以是有了確定值的變量,這在編程中要注意!另外靜態(tài)數(shù)組在程序編譯時(shí)就分配存儲(chǔ)單元,而動(dòng)態(tài)數(shù)組在運(yùn)行時(shí)才分配存儲(chǔ)單元2.2.5 vb中矩陣的運(yùn)算為了解決中矩陣運(yùn)算問題,編好相應(yīng)的矩陣運(yùn)算代碼是必須的,經(jīng)過一個(gè)月的時(shí)間終于將矩陣運(yùn)算的代碼編成功,特別是矩陣求逆的運(yùn)算。不過編制的矩陣求逆代碼前提是滿秩的,對(duì)于秩虧矩陣,就不適用了,由于時(shí)間原因,就沒繼續(xù)深入的研究其代碼。當(dāng)然了,我們平時(shí)見到的平差一般都是滿秩的,所以此代碼的適用性還是挺強(qiáng)的。下面就具體介紹下,各矩陣運(yùn)算的代碼和思想。1.矩陣加減法(1)這個(gè)代碼比較容易編寫,只要加矩陣中對(duì)應(yīng)的數(shù)相加減便可以得到結(jié)
25、果。 所以此處不給出代碼2.矩陣乘法(1)這個(gè)代碼編程的要點(diǎn)是跟據(jù)矩陣乘法的運(yùn)算法則,即矩陣的沒一行的數(shù)分別與另外矩陣的每一列對(duì)應(yīng)的數(shù)相乘并全部進(jìn)行相加。知道一個(gè)原則,編程就容易了,多次使用for循環(huán)實(shí)現(xiàn)! (2)代碼:public sub jzcf(byref a() as double, byref b() as double, byref c() as double)m = ubound(a, 1)n = ubound(b, 2)ni = ubound(a, 2)for i = 1 to mfor j = 1 to nfor ki = 1 to nic(i, j) = c(i, j) +
26、 a(i, ki) * b(ki, j)nextnextnextend sub 3.矩陣轉(zhuǎn)置(1)這個(gè)代碼編程的也比較簡單,即將矩陣的行轉(zhuǎn)化成列就行了。(2)代碼:public sub jzzz(byref a() as double, byref b() as double)m = ubound(a, 1)n = ubound(a, 2)for i = 1 to nfor j = 1 to mb(i, j) = a(j, i)nextnextend sub4.矩陣求逆(1)這個(gè)代碼編程很復(fù)雜,此代碼運(yùn)用的是高斯約化法進(jìn)行矩陣求逆計(jì)算,編程的思想是先進(jìn)行增廣矩陣,然后用高斯約化法,將第一列中不
27、是零的數(shù)找出,進(jìn)行約化,即將每行數(shù)字除以開頭數(shù)字,使每行開頭不是零的數(shù)化為1,之后減去第一行,這樣這行的第一列的開頭就為零了。用這種方法就可以將矩陣變?yōu)樯先蔷仃?,最后就得到矩陣求逆結(jié)果。(2)代碼:public sub jzqn(byref qa() as double, byref na() as double)dim a()n = ubound(qa, 1)redim a(n, 2 * n) for i = 1 to n for j = 1 to n a(i, j) = qa(i, j) next j next ifor i = 1 to n for j = n + 1 to 2 * n
28、 if j - i = n then a(i, j) = 1 else a(i, j) = 0 end if next j next i for i = 1 to n if a(i, i) = 0 then for q = i to n if a(q, i) 0 then for w = i to 2 * n zj = a(i, w) a(i, w) = a(q, w) a(q, w) = zj next w exit for end if next q if q n then msgbox 此矩陣不可逆: exit sub end if for k = 2 * n to i step -1
29、a(i, k) = a(i, k) / a(i, i) next k for j = i + 1 to n if a(j, i) 0 then for k = 2 * n to i step -1 a(j, k) = a(j, k) / a(j, i) - a(i, k) next k end if next jnext ifor i = n to 1 step -1 if a(i, i) = 0 then for q = i - 1 to 1 step -1 if a(q, i) 0 then for w = i to 2 * n zj = a(i, w) a(i, w) = a(q, w)
30、 a(q, w) = zj next w exit for end if next q end if for k = 2 * n to i step -1 a(i, k) = a(i, k) / a(i, i) next k for j = i - 1 to 1 step -1 if a(j, i) 0 then xxx = a(j, i) for k = 2 * n to 1 step -1 a(j, k) = a(j, k) / xxx - a(i, k) next k end if next jnext ifor i = 1 to n for j = 1 to n na(i, j) =
31、a(i, j + n)next jnext iend sub2.2.6程序控制語句1.msgbox語句vb中提示性語句,格式為:msgbox 語句 (需要鍵入的提示語)例如:msgbox 賬號(hào)不對(duì),請(qǐng)重試運(yùn)行結(jié)果:則出現(xiàn)一個(gè)對(duì)話框,提示用戶。 2.print語句vb中最基本的輸出語句,可以將打印的內(nèi)容放到form窗口中,也可以放在以圖片控件為容器的控件中,還可以將數(shù)據(jù)進(jìn)行輸出,比如輸出到txt文本中,具體的,后面展示。3.if語句if then else end ifif 語句可以循環(huán)嵌套,以實(shí)現(xiàn)比較復(fù)雜的邏輯結(jié)果。4.循環(huán)語句(1)for語句格式:for 循環(huán)變量初值 to 終值 step
32、步長 循環(huán)體;next注意:循環(huán)參數(shù)中,i用于控制循環(huán)次數(shù),step是步長使用前應(yīng)計(jì)算好,結(jié)尾必須有next不然程序會(huì)出錯(cuò)!(2)do.while語句格式:do while|until 語句塊 exit do 語句塊 loop 注意:do.while循環(huán)是用于控制循環(huán)次數(shù)未知。5. 循環(huán)控制語句在循環(huán)執(zhí)行到一定程度的時(shí)候,不希望它繼續(xù)執(zhí)行,則要使用循環(huán)控制語句,包括continue和break。(1)continue出現(xiàn)時(shí),不執(zhí)行continue后的內(nèi)容,直接跳過本次循環(huán),執(zhí)行下一次循環(huán)。(2)break出現(xiàn)時(shí),不執(zhí)行break后的內(nèi)容,直接跳出循環(huán),執(zhí)行循環(huán)后的語句。2.2.7控件數(shù)組控件數(shù)
33、組是由一組具有共同名稱和相同類型的控件組成,數(shù)組 中的每一個(gè)控件共享同樣的事件,它可以運(yùn)用控件數(shù)組可以再程序運(yùn)行時(shí)創(chuàng)建一個(gè)控件的多個(gè)實(shí)例,并能很好的控件在程序運(yùn)行時(shí)到底顯示多少個(gè)對(duì)象,利用for-next循環(huán)結(jié)構(gòu),就可以簡單地為控件數(shù)組的各個(gè)元素設(shè)置相同的屬性,同時(shí)它也可以節(jié)省代碼,增加可讀性,減少了內(nèi)存的開銷??丶?shù)組可以分為靜態(tài)數(shù)組及動(dòng)態(tài)數(shù)組兩種。3 間接平差3.1 間接平差原理間接平差就是在最小二乘準(zhǔn)則要求下求出誤差方程中的待定參數(shù),在數(shù)學(xué)中是求多元函數(shù)的極值問題。間接平差的函數(shù)模型為:平差時(shí),一般對(duì)參數(shù)都要取近似值,令代入上式,并令其中,為觀測值的近似值,所以是觀測值與其近似值之差,由
34、此可得誤差方程設(shè)有n個(gè)觀測值的方程為:令,則得誤差方程為:令: 可得平差值方程的矩陣形式:, (3-2-1)按最小二乘原理,上式的必須滿足的要求,因?yàn)閠個(gè)參數(shù)為獨(dú)立量,故可按數(shù)學(xué)上求函數(shù)自由極值的方法,得:移項(xiàng),轉(zhuǎn)置后得: (3-2-2)以上所得(3-2-1)和(3-2-2)式中的待求量是n個(gè)v和t個(gè),而方程個(gè)數(shù)也是n+t個(gè),有唯一解,稱此兩式為間接平差的基礎(chǔ)方程。解此基礎(chǔ)方程,一般是將(3-2-1)式代入(3-2-2)式,以便先消去v,得: (3-2-3)令:,上式可簡寫成 (3-2-4)式中系數(shù)陣為滿秩,即,有唯一解,上式稱為間接平差的法方程。解之得: 或: 將求出的代入誤差方程(3-2-
35、1),即可求得改正數(shù)v,從而平差結(jié)果為:,3.2 間接平差程序設(shè)計(jì)流程圖輸入觀測數(shù)據(jù)輸入必要信息:總觀測值數(shù)量,必要觀測值數(shù)量軟件自動(dòng)識(shí)別用戶是否正確輸入數(shù)據(jù),以及有無數(shù)據(jù)輸入的不完整。接著識(shí)別各段高差的前后視點(diǎn)是否為已知點(diǎn)并組建系數(shù)矩陣a和w判斷否所有觀測高差是否已處理完,數(shù)據(jù)是否正確是定權(quán)計(jì)算法方程矩陣,求解未知參數(shù),精度評(píng)定。結(jié)束4 平差軟件界面設(shè)計(jì)4.1 平差軟件整體展示 4.1.1登陸界面圖4.1平差軟件登錄界面圖為了方便用戶使用和保存用戶隱私,特做了平差軟件的登陸窗口。只有賬號(hào)密碼正確才能進(jìn)入,使用軟件。而注冊(cè)和找回密碼用到數(shù)據(jù)庫的知識(shí),需用vb和數(shù)據(jù)庫(可以是sql數(shù)據(jù)庫,也可以
36、是access數(shù)據(jù)庫)聯(lián)合開發(fā)。當(dāng)然了,由于時(shí)間關(guān)系,注冊(cè)和找回密碼功能還沒開發(fā),以待時(shí)間充裕時(shí)再進(jìn)行開發(fā)。4.1.2平差軟件主界面圖4.2平差軟件主要界面圖左邊按鈕為平差功能,有水準(zhǔn)網(wǎng)間接平差,附和導(dǎo)線平差,水準(zhǔn)網(wǎng)的間接平差,閉合導(dǎo)線平差。最后一個(gè)為誤差橢圓,用來檢測各導(dǎo)線的誤差精度。中間的是坐標(biāo)系統(tǒng),用來顯示所觀測導(dǎo)線網(wǎng),看輸入的導(dǎo)線網(wǎng)與實(shí)測的導(dǎo)線網(wǎng)是否一樣,可以及時(shí)糾錯(cuò)。當(dāng)然還可以顯示導(dǎo)線網(wǎng)中的誤差橢圓。4.1.3水準(zhǔn)網(wǎng)間接平差圖4.3水準(zhǔn)網(wǎng)間接平差主要界面圖上圖為水準(zhǔn)網(wǎng)間接平差主界面,只要鼠標(biāo)點(diǎn)擊主界面中的水準(zhǔn)網(wǎng)間接平差按鈕就能進(jìn)入該界面。該界面中右邊為輸入觀測數(shù)據(jù)。此水準(zhǔn)網(wǎng)間接平差能
37、實(shí)現(xiàn)的功能是進(jìn)行水準(zhǔn)網(wǎng)間接平差計(jì)算(改正數(shù)跟平差值計(jì)算),此外還設(shè)計(jì)了幾個(gè)實(shí)用功能,如對(duì)平差后的結(jié)果進(jìn)行輸出(輸出的格式為txt文本格式),對(duì)數(shù)據(jù)進(jìn)行清空,方便第二次輸入。還設(shè)有返回主界面的功能,進(jìn)行其他功能的轉(zhuǎn)化。當(dāng)然了還開發(fā)了如查看系數(shù)矩陣,法方程等功能5算例演算5.1水準(zhǔn)網(wǎng)間接平差以誤差理論與測量平差基礎(chǔ)一書中7-4節(jié)中的例7-8水準(zhǔn)網(wǎng)間接平差為為例,水準(zhǔn)路線圖,點(diǎn)的編號(hào),數(shù)據(jù)如下表所示:圖5.1計(jì)算簡圖路線號(hào)觀測高差(m)水準(zhǔn)路線長度(km)已知高程(m)1234567+1.359+2.001.6ha=5.016hb=6.016打開平差軟件進(jìn)入水準(zhǔn)網(wǎng)間接平差后,準(zhǔn)確輸入數(shù)據(jù)點(diǎn)擊改正數(shù)計(jì)算或平差值計(jì)算,便會(huì)得到結(jié)果,當(dāng)你也可以進(jìn)行數(shù)據(jù)輸出。經(jīng)驗(yàn)證,結(jié)果可靠。圖.5.2水準(zhǔn)網(wǎng)間接平差結(jié)果圖 圖5.3水準(zhǔn)網(wǎng)間接平差數(shù)據(jù)輸出圖6 結(jié)論進(jìn)行平差計(jì)算離不開矩陣計(jì)算,一般的矩陣都很大,手算起來很不方便。過去能通過高斯約化法進(jìn)行計(jì)算,但過程很繁瑣,計(jì)算精度也不高,而且還容易出錯(cuò)?,F(xiàn)在可以借助計(jì)算機(jī),快
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年清潔生產(chǎn)課件深入解讀企業(yè)環(huán)保責(zé)任
- 2025年房地產(chǎn)投資如何規(guī)避風(fēng)險(xiǎn)
- 2025年教育技術(shù):《小猴子下山》課件的未來發(fā)展
- 福利院社會(huì)實(shí)踐報(bào)告 福利院社會(huì)實(shí)踐總結(jié)
- 資金周轉(zhuǎn)需要借款保證合同(3篇)
- DB31∕T 915-2019 氨冷庫安全生產(chǎn)規(guī)范
- 乳腺癌的綜合治療
- 三農(nóng)田水利設(shè)施改造與升級(jí)手冊(cè)
- 各類原材料價(jià)格對(duì)比表格一覽表
- 地磚墻磚鋪貼勞務(wù)分包合同
- 2025中鐵集裝箱運(yùn)輸有限責(zé)任公司招聘46人(京外地區(qū)崗位)筆試參考題庫附帶答案詳解
- 中國農(nóng)業(yè)大學(xué)人文與發(fā)展學(xué)院管理服務(wù)崗位招聘筆試真題2023
- 淺談簽證合同索賠培訓(xùn)課件
- 2023年江蘇經(jīng)貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試筆試題庫及答案解析
- 揭陽市基層診所醫(yī)療機(jī)構(gòu)衛(wèi)生院社區(qū)衛(wèi)生服務(wù)中心村衛(wèi)生室地址信息
- 晉中項(xiàng)目投決會(huì)報(bào)告
- 二年級(jí)下冊(cè)數(shù)學(xué)課件-1.3 分草莓 北師大版(共14張PPT)
- 2022年中小學(xué)心理健康教育指導(dǎo)綱要
- 高架橋梁混凝土工程專項(xiàng)施工方案
- 銀行案件風(fēng)險(xiǎn)排查實(shí)施細(xì)則
- 亞馬遜品牌授權(quán)書(英文模板)
評(píng)論
0/150
提交評(píng)論