測繪程序設(shè)計(jì)_第1頁
測繪程序設(shè)計(jì)_第2頁
測繪程序設(shè)計(jì)_第3頁
測繪程序設(shè)計(jì)_第4頁
測繪程序設(shè)計(jì)_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

測繪程序設(shè)計(jì)課程實(shí)習(xí)報(bào)告一、實(shí)習(xí)目的》課程后將測量平差和計(jì)算機(jī)程序設(shè)計(jì)等課程的綜合實(shí)踐與應(yīng)用的一門課程。其目的是在我們學(xué)習(xí)過平差這門課后增加我們對誤差理論與測量平差根底理論C++語言,使平差理論與計(jì)算機(jī)結(jié)合起來,將主要的工作崗位打下了肯定的根底。二、實(shí)習(xí)內(nèi)容本課程要求我們嫻熟運(yùn)用測量平差的根本公式與計(jì)算方法和擁有根本的要求由簡至繁完成以下程序?!惨弧辰腔≈g的相互轉(zhuǎn)化及其轉(zhuǎn)化精度?!捕澄募淖x入輸出序時進(jìn)展輸入,同時在程序運(yùn)行后結(jié)果自動生成文件保存?!踩掣怕蔬\(yùn)算B〔四〕矩陣運(yùn)算決根本運(yùn)算問題?!参濉硹l件平差與間接平差序計(jì)算條件平差與間接平差〔二者具有肯定相像度〕?!擦乘疁?zhǔn)網(wǎng)平差差,再在其根底上編寫一般形式具有廣泛應(yīng)用的一般程序。在將以上根本任務(wù)都完成之后還可以進(jìn)一步編寫GPS向量網(wǎng)等。三、實(shí)習(xí)過程〔一〕角弧之間的相互轉(zhuǎn)化編程思路:首先在頭文件中要注明#include<cmath>保證程序中的數(shù)學(xué)運(yùn)算合理,然后建立一個角度是否合理推斷的函數(shù),在其中將角度的度、分、秒分別用三個double型變量abc30°66′27“31°6′27“以及角度的正負(fù)。然后在主函數(shù)中選擇進(jìn)展角度轉(zhuǎn)化為弧度或弧度轉(zhuǎn)化為角度,再輸入數(shù)值時,為了使接下來的運(yùn)算能夠計(jì)算正確,假設(shè)輸入復(fù)制現(xiàn)將負(fù)值提出flag=(a<0.0)?-1.0:1.0,其中a為角度中的度數(shù),在程序全部計(jì)算都運(yùn)行完畢后在加上其負(fù)值-1θ=L×180÷πθ為角度,L為弧度。在角度化弧度中表示為L=(a+b/60.0+c/3600.0)/180.0*s*4*atan(1),在弧度化角度中表示為m=L*180/(4*atan(1)m為將度分秒化為度的形式,在利用取整’/’m化為度分秒的形式。計(jì)算結(jié)果:〔二〕文件的讀入輸出編程思路:進(jìn)展操作可隨時進(jìn)展數(shù)據(jù)更換。在角弧相互轉(zhuǎn)化程序的根底上進(jìn)展更編在原本輸入角度和弧度地方使用文件操作,首先在頭文件處要標(biāo)明#include<fstream>,使我們對程序進(jìn)展文件操作時的行為合法,在進(jìn)展翻開文件處寫上ifstreaminfile(“jiao.txt“),括號中要翻開的文件名稱和格式為txt,并且用if(!infile)推斷文件是否成功翻開了,成功翻開后,并且在程序完畢時要關(guān)閉讀入的文件infile.close,解除該磁盤文件與文件流的關(guān)系就不能再通過文件流對文件進(jìn)展輸入或輸出在輸 出 計(jì) 算 結(jié) 果 到 文 件 中 時 寫 為 ofstreamoutfile;outfile.open(“jiao_out.txt“);括號中的為文件輸出后所在的文件文及其格式結(jié)果所在的文件可以在程序運(yùn)行前就建好空白文件也可不建立,在程序運(yùn)行后會自動生成一個如括號里寫的文件。后,其結(jié)果可以更好的保存,輸入數(shù)據(jù)時更便利,而程序更具有一般性。計(jì)算結(jié)果:〔三〕概率計(jì)算編程思路出操作和函數(shù)的調(diào)用練習(xí),將數(shù)據(jù)輸入到程序中求得結(jié)果。計(jì)算結(jié)果:〔四〕矩陣運(yùn)算在程序中矩陣要依靠創(chuàng)立動態(tài)數(shù)組來表示,創(chuàng)立動態(tài)數(shù)組是為了儲存未知組來表示矩陣的方法有很多例如將二維數(shù)組作為一維數(shù)組儲存本次程序編譯就承受了這種方法將矩陣表示為:double*P=newdouble[n];Pn組。delete將動態(tài)安排建立的對象刪除,從而釋放空間。除了這種方法之外,還可以直接定義二維數(shù)組,或調(diào)用函數(shù)創(chuàng)立來表示矩陣。2.矩陣的運(yùn)算〔1〕矩陣加法與減法矩陣的加法與減法相像,比較簡潔。首先還是要進(jìn)展文件操作,讀入兩個if(p!=n*m||k!=n*m),假設(shè)是行列數(shù)不相需要返回指針。矩陣乘法矩陣的乘法比起矩陣的加減法要稍稍有一點(diǎn)難度,由于其根本要求是第一n×mAp×qBm是否與其次個矩陣pC0。數(shù)組C的第i行第j列的元素值等于數(shù)組A的第i行元素與數(shù)組B的第j*(C+i*m+j)+=(*(A+i*m+k))*(*(B+k*q+j));這里運(yùn)用了多for矩陣的轉(zhuǎn)置矩陣的轉(zhuǎn)置表達(dá)較為簡潔,進(jìn)展文件操作,讀入兩個矩陣的數(shù)值,定義一針。矩陣求逆函數(shù)中矩陣的存儲是僅存下三角矩陣元素。對稱正定矩陣求逆An×nˉ。矩陣求逆分一般分式如下:a’ =1/an-1,n-1 0,0a’ =-a/a(j=1,2,...,n-k-1)n-1,j-1

0,j

0,0a’ =a/a(j=n-k,n-k+1,...,n-1)n-1,n-1 0,j 0,0a’ =a-a

a/a

(i=1,2,..,n-1;j=1,2,...,n-k-1)i-1,n-1

0,i

0,j

0,0a’ =a-a

a/a

(i=1,2,..,n-1;j=n-k,n-k-1,...,n-1)i-1,n-1

0,i

0,j

0,01.計(jì)算結(jié)果:〔五〕條件平差與間接平差間接平差⑴公式及算法:間接平差與條件平差有肯定的相像度間接平差法〔參數(shù)平差法〕是通過t出參數(shù)的最或然值,從而求得個觀測值的平差值。間接平差的函數(shù)模型為:L=F(X);X=X0+x;隨機(jī)模型:D=σ2Q=σ2P-10 0誤差方程:V=Bx-L;法方程:BTPBx-BTPL=0;VTPVn-t法方程解:x=〔BTPB〕-1BVTPVn-tBt×nPn×nL、x、Vn×1⑵編程思路:間接平差的程序編譯與條件平差有相像之處,尤其是主函數(shù)之前的之前的transpose,和矩陣求逆是完全一樣的。QXXJJtxt文檔中的B,P,L的multipytransposeB、P、LBTPL;數(shù)組Bt*n,數(shù)組Pn,數(shù)組Ln,所以從文本中直接讀入的三個矩陣還不能直接進(jìn)展運(yùn)算,為了進(jìn)展運(yùn)算我們要將P變化一n*nBTPBBTPL,然后調(diào)用矩陣求逆函數(shù)BTPB〔BTPB〕-1;由QXXJJ單位權(quán)中誤差μXσ=μj Xj

其中開根sqrt函數(shù)求得。⑶計(jì)算結(jié)果:條件平差⑴公式及算法:rV?PV=min,依據(jù)求函數(shù)的條件極值的方法,求出觀測量的改正數(shù)V,進(jìn)而求出觀測的最或然值〔平差值〕,條件方程個數(shù)等于多余觀測數(shù)r=n-t,nt觀測數(shù)。條件平差中設(shè)條件方程式為BV+W=0;〕;Br×n階系數(shù)矩陣;〔r?yàn)闂l件方程個數(shù)〕;Wr維條件方程自由向量;有最小二乘法可得聯(lián)系數(shù)法方程為BPˉ1B?K+W=0;P為觀測值的權(quán)矩陣并設(shè)觀測值獨(dú)立,P為對角矩陣,數(shù)組長度為n;K為聯(lián)系數(shù)向量,K=-〔BPˉ1B?〕W;法方程:BPBTK+W=0;隨機(jī)模型:D=σ2Q=σ2P-10 0改正數(shù)向量V=Pˉ1B?K;VTPVrVTPVr觀測值平差值的權(quán)逆陣QL=Pˉ1-Pˉ1B?〔BPˉ1B?〕ˉ1BPˉ1;⑵編程思路:首先,在程序頭文件處廣泛定義一個N在下面程序中都為一個其確定的函數(shù)multipy,將矩陣用一維動態(tài)數(shù)組表示出來,a3[i*r+x]+=a1[i*q+j]*a2[j*r+x]fora1[i*m+j]=a[j*n+i];矩陣求逆的程序是查找資料找到的一段固定代碼。在主函數(shù)中首先利用動態(tài)數(shù)組定義B,W,Q,P,然后進(jìn)展文件操作進(jìn)展數(shù)據(jù)的輸入,文件中已經(jīng)寫好的矩陣元素一一對應(yīng)輸入,開頭計(jì)算,首先調(diào)用multiplyAQ,在調(diào)用transposeAA進(jìn)展求逆,然后前兩項(xiàng)計(jì)算得AQAˉ1,再與W相乘算出K=—〔AQˉ1A?〕W,再調(diào)用乘法及轉(zhuǎn)置函數(shù)計(jì)算V=Qˉ1A?K,V?PV求得中誤差μ。for循環(huán)⑶計(jì)算結(jié)果:〔六〕水準(zhǔn)網(wǎng)平差1.公式及算法:P、Ltxt據(jù)是最原始的數(shù)據(jù)。水準(zhǔn)網(wǎng)的原始數(shù)據(jù)內(nèi)容分為網(wǎng)的概況、數(shù)據(jù)、觀測數(shù)據(jù)三局部?!苍冢簦粑谋局幸陨蠑?shù)據(jù)放在一行中〕個點(diǎn)和它的高程值占一行〕〔在txt文本中點(diǎn)名包含字符串所以不能用空格〕依據(jù)最原始的數(shù)據(jù),將誤差方程式的系數(shù)陣B、常數(shù)項(xiàng)L以及權(quán)陣P求出,組成誤差方程式V=Bx+L;之后幾步同間接平差一樣單位權(quán)中誤差μ,求得某參Xj的中誤差σXj=μQXJXJ,然后求觀測值改正值VL=L0+v,2.編程思路:在水準(zhǔn)網(wǎng)平差中還是要運(yùn)用矩陣運(yùn)算,矩陣的運(yùn)算在前幾次實(shí)習(xí)中已經(jīng)編一般格式定義函數(shù)的重載在本程序當(dāng)中進(jìn)展文件讀取操作比起之前的操作變得簡單很多。定義double定義長度為動態(tài)字符串一維數(shù)組 string**A=newstring*[yy];存儲讀入點(diǎn)矩陣的點(diǎn)號與高程,利用兩段for循環(huán)來實(shí)現(xiàn),依次讀入點(diǎn)名與高程。高程。定義一段的動態(tài)字符串?dāng)?shù)組string **AA=newstring定義一段的動態(tài)字符串?dāng)?shù)組string **AA=newstring*[m];存儲讀入未知點(diǎn)矩陣的點(diǎn)號與高程存儲起點(diǎn)名,定義長度為n的string **XX=newstring*[n];存儲未知點(diǎn)號。BBn×r〔n先將點(diǎn)的點(diǎn)名存儲到存放總點(diǎn)名的字符串?dāng)?shù)組中,先初始化系數(shù)矩陣A[m][n]為0矩陣;然后掌握循環(huán)條件,依次輸入各段水準(zhǔn)路線的起點(diǎn)、終點(diǎn);依次推斷各水準(zhǔn)路線的起點(diǎn)、終點(diǎn)在矩陣 A 中的位置,在計(jì)算B時利用if(AA[i][0]==A[j][0]||AA[i][1]==A[j][0]);推斷是否有點(diǎn);if(AA[i][0]==A[j][0]||AA[i][1]==A[j][0]);推斷是否有點(diǎn);B-1,當(dāng)終點(diǎn)是未知點(diǎn)時,即其系數(shù)為B-1,當(dāng)終點(diǎn)是未知點(diǎn)時,即其系數(shù)為1,B矩陣的其他元素賦值為0.求常數(shù)項(xiàng)矩陣L:v

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論