版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、/ visual C+6.0 編譯通過 / 參考資料 / 部分網(wǎng)絡(luò)資料 / 宋力杰測量平差程序設(shè)計 /姚連壁基于matlab的控制網(wǎng)平差程序設(shè)計 / /#include#include#include #include#include using namespace std;/classclass SZWPCprivate:int gcz_zs; /高差總數(shù)int szd_zs; /總點數(shù)int yz_szd_zs; /已知點數(shù)double m_pvv; /pvvint *qsd_dh; /高差起點號int *zd_dh; /高差終點號char *dm; /點名地址數(shù)組double *gcz;
2、 /觀測值數(shù)組double *szd_gc; /高程值數(shù)組double *P; /觀測值的權(quán)double *ATPA,*ATPL; /法方程系數(shù)矩陣與自由項double *dX; /高程改正數(shù)、平差值double *V; /殘差double m_mu; /單位權(quán)中誤差public:SZWPC();SZWPC();int ij(int i,int j);/對稱矩陣下標(biāo)計算函數(shù)bool inverse(double a,int n);/對稱正定矩陣求逆(僅存下三角元素)(參考他人)void inputdata(char *datafile);/輸入原始數(shù)據(jù)函數(shù)int dm_dh(char *nam
3、e); /點名轉(zhuǎn)點號void ca_H0(); /近似高程計算函數(shù)void ca_ATPA(); /法方程組成函數(shù)void ca_dX(); /高程平差值計算函數(shù)void printresult(char *resultfile); /精度估計與平差值輸出函數(shù)double ca_V(); /殘差計算函數(shù) void zxecpc(char *resultfile);/最小二乘平差函數(shù);/ 構(gòu)造函數(shù)SZWPC:SZWPC()gcz_zs=0;szd_zs=0;yz_szd_zs=0;/ 析構(gòu)函數(shù)SZWPC:SZWPC()if(gcz_zs0)delete qsd_dh;delete zd_dh;d
4、elete gcz;delete P;delete V;if(szd_zs0)delete szd_gc;delete ATPA;delete ATPL;delete dX;for(int i=0; i=j)? i*(i+1)/2+j :j*(j+1)/2+i;/ 對稱正定矩陣求逆(僅存下三角元素)(參考他人)bool SZWPC:inverse(double a,int n) double *a0=new doublen; for(int k=0;kn;k+)double a00=a0;if(a00+1.0=1.0)delete a0;return false;for(int i=1;in;
5、i+)double ai0 = ai*(i+1)/2;if(i=n-k-1)a0i= -ai0/a00;else a0i= ai0/a00;for(int j=1;j=i;j+)a(i-1)*i/2+j-1=ai*(i+1)/2+j+ai0*a0j;for(i=1;in;i+)a(n-1)*n/2+i-1=a0i;an*(n+1)/2-1=1.0/a00;delete a0;return true;/ 原始數(shù)據(jù)輸入函數(shù)void SZWPC:inputdata(char *datafile)ifstream infile(datafile,ios:in);if(! infile)cerr Ope
6、n error!gcz_zsszd_zsyz_szd_zs;int unPnumber=szd_zs-yz_szd_zs;szd_gc=new double szd_zs;dX=new double szd_zs;ATPA=new double szd_zs*(szd_zs+1)/2;ATPL=new double szd_zs;qsd_dh=new int gcz_zs;zd_dh=new int gcz_zs;gcz=new double gcz_zs;V=new double gcz_zs;P=new double gcz_zs;dm=new char* szd_zs;for(int i
7、=0;iszd_zs;i+)dmi = NULL;/ dm_dh函數(shù)根據(jù)dmi是否為NULL確定dmi是否為點名地址char buffer128; /臨時數(shù)組,保存從文件中讀到的點名for( i=0;ibuffer;int c=dm_dh(buffer);infileszd_gci;for(i=0;ibuffer; /讀取高程起點名qsd_dhi=dm_dh(buffer);infilebuffer;/讀取高程終點zd_dhi=dm_dh(buffer);infilegcziPi; /讀取高差值與路線長度Pi=1.0/Pi;/線路長轉(zhuǎn)化為觀測值的權(quán)infile.close();/ 點名轉(zhuǎn)點號,
8、返回點名對應(yīng)的點號int SZWPC:dm_dh(char *name) for(int i=0; iszd_zs; i+)if(dmi!=NULL)if(strcmp(name,dmi)=0)return i;/將待查點名與已經(jīng)存入點名數(shù)組的點名比較,若存在返回點號elseint len = strlen(name);/判斷點名長度dmi = new charlen+1;/為點名申請存儲空間strcpy(dmi, name);/待查點名是一個新的點名,將新點名的地址放到dm數(shù)組中return i;/返回點號return -1; /dm數(shù)組已經(jīng)存滿,且沒有待查點名/高程近似值計算void SZ
9、WPC:ca_H0()for(int i=yz_szd_zs;iszd_zs;i+)szd_gci=-10000.9;/為計算機(jī)設(shè)置辨別未知高程點的標(biāo)志for(int j=1;j+)int k=0; /計算出近似高程的點數(shù)for(i=0;i-10000.0 & szd_gck2-10000.0)/k1點高程或高程近似值已知,k2點高程或高程近似值未知szd_gck2=szd_gck1+gczi;/計算近似高程k+;elseif(szd_gck1-10000.0)/k2點高程或高程近似值已知,k1點高程或高程近似值未知szd_gck1=szd_gck2-gczi;/計算近似高程k+;if(k=(
10、szd_zs-yz_szd_zs)break;/所有的近似高程計算完成,退出/ 組成法方程void SZWPC:ca_ATPA() /int t=szd_zs; for(int i=0; iszd_zs*(szd_zs+1)/2; i+) ATPAi=0.0;/賦初值 for(i=0; iszd_zs; i+) ATPLi=0.0;/賦初值for(int k=0; kgcz_zs; k+) int i=qsd_dhk;/獲取點號int j=zd_dhk;/獲取點號 double Pk=Pk;/獲取權(quán)值 double lk=gczk-(szd_gcj-szd_gci);/獲得第k個自由項 ATP
11、Li-=Pk*lk;/獲得法方程自由項ATPLj+=Pk*lk;ATPAij(i,i)+=Pk;/獲得法方程系數(shù)矩陣ATPAij(j,j)+=Pk;ATPAij(i,j)-=Pk;/ 高程平差值計算void SZWPC:ca_dX()for(int i=0;iyz_szd_zs;i+) ATPAij(i,i)=1.0e30;/處理已知點if(!inverse(ATPA,szd_zs)/矩陣求逆cerr法方程系數(shù)矩陣降秩!endl;/矩陣為奇異矩陣,無法求逆exit(0);/退出程序for(i=0; iszd_zs; i+)/計算高程改正數(shù)double xi=0.0;for(int j=0; j
12、szd_zs; j+)xi+=ATPAij(i,j)*ATPLj;dXi=xi;szd_gci+=xi;/計算高程平差值/ 殘差計算double SZWPC:ca_V()double pvv=0.0;for(int i=0;i=gcz_zs-1;i+)int k1=qsd_dhi;int k2=zd_dhi;Vi=szd_gck2-szd_gck1-gczi;pvv+=Vi*Vi*Pi;return(pvv);/ 原始數(shù)據(jù)和平差值輸出void SZWPC:printresult(char *resultfile)double pvv=ca_V(); / 殘差計算ofstream outfile
13、(resultfile,ios:out);/以輸出方式打開文件,若文件不存在,創(chuàng)建文件/輸出原始觀測數(shù)據(jù)outfileendl觀測總數(shù):gcz_zs 總點數(shù):szd_zs;outfile 已知點數(shù):yz_szd_zsendl;outfileendl= 已知高程 =endl;/輸出原始觀測數(shù)據(jù)已知點點號、高程for(int i=0;i=yz_szd_zs-1;i+)outfile dmi;outfilesetiosflags(ios:fixed);outfilesetw(10)setprecision(4)szd_gciendl;outfileendlendl= 高差觀測值=endlendl;/
14、輸出原始觀測數(shù)據(jù)高程觀測值與路線長outfile起始點名 終點點名 高差觀測值(m) 兩點間距離(km)endl;for(i=0;i=gcz_zs-1;i+)outfile dmqsd_dhisetw(9)dmzd_dhi;outfilesetiosflags(ios:fixed);outfilesetw(16)setprecision(4)gczi;outfilesetiosflags(ios:fixed);outfilesetw(16)setprecision(4)1.0/Piendl;m_mu=sqrt(pvv/(gcz_zs-(szd_zs-yz_szd_zs);/計算單位權(quán)中誤差ou
15、tfileendl= 單位權(quán)中誤差=endl;/輸出單位權(quán)中誤差outfileendl0=m_muendl;outfileendl= 高程平差值及其精度 =endlendl;/輸出高程平差值及其精度outfile點名 近似高程 改正數(shù) 高程平差值 中誤差endl;for( i=0; iszd_zs; i+) outfilesetw(2)dmi;double dx=dXi;double qii=ATPAij(i,i);outfilesetiosflags(ios:fixed);outfilesetw(12)setprecision(4)szd_gci-dx;outfilesetiosflags(
16、ios:fixed);outfilesetw(10)setprecision(4)dx;outfilesetiosflags(ios:fixed);outfilesetw(11)setprecision(4)szd_gci;outfilesetiosflags(ios:fixed);outfilesetw(10)setprecision(4)sqrt(qii)*m_muendl;/輸出觀測值平差值及其精度outfileendlendl= 觀測值平差值及其精度 =endlendl;outfile起 點 終 點 觀測高差 高差平差值 觀測權(quán) 中誤差endl;for(i=0;i=gcz_zs-1;i
17、+)int k1=qsd_dhi;int k2=zd_dhi;double qii=ATPAij(k1,k1);double qjj= ATPAij(k2,k2) ;double qij=ATPAij(k1,k2);double ml=sqrt(qii+qjj-2.0*qij)*m_mu;outfile.width(2);outfiledmk1;outfile.width(7);outfiledmk2;outfilesetiosflags(ios:fixed);outfilesetw(12)setprecision(4)gczi;outfilesetiosflags(ios:fixed);ou
18、tfilesetw(10)setprecision(4)Vi;outfilesetiosflags(ios:fixed);outfilesetw(10)setprecision(4)gczi+Vi;outfilesetiosflags(ios:fixed);outfilesetw(10)setprecision(4)Pi;outfilesetiosflags(ios:fixed);outfilesetw(10)setprecision(4)mlendl;outfile.close();/ 水準(zhǔn)網(wǎng)最小二乘平差void SZWPC:zxecpc(char *resultfile)ca_H0(); /近似高程計算ca_ATPA(); / 組成法方程ca_dX(); / 高程平差值計算/int main()char *datafile =算例Data
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 教師教資面試題目及答案
- 北京實創(chuàng)能源管理有限公司2026屆畢業(yè)生招聘備考題庫及1套參考答案詳解
- 氯化鋅生產(chǎn)線項目商業(yè)計劃書
- 紗線生產(chǎn)線項目投標(biāo)書
- 2026年博士學(xué)術(shù)英語口語要求試卷及答案
- 醫(yī)院婦科面試題目及答案
- 山東省萊州市一中2025-2026學(xué)年高一上學(xué)期1月月考語文試題(含答案)(含解析)
- 工地施工技術(shù)創(chuàng)新應(yīng)用方案
- 工程項目文檔管理方案
- 課程方案考試題庫及答案
- 廣東省廣州市2025-2026學(xué)年九年級化學(xué)上學(xué)期期末模擬卷(含答案)
- 湖北省十堰市第二中學(xué)高中生物必修一人教版導(dǎo)能量之源光光合作用教案
- 集團(tuán)有限公司安全生產(chǎn)責(zé)任清單(全員)
- 重慶市(康德卷)2025-2026學(xué)年高三上學(xué)期高考模擬調(diào)研(二)(12月)數(shù)學(xué)試題+答案
- 車輛保證過戶協(xié)議書
- 2021合益勝任力素質(zhì)等級詞典
- 股權(quán)轉(zhuǎn)讓并代持協(xié)議書
- 2024年全國職業(yè)院校技能大賽ZZ054 智慧物流作業(yè)賽項規(guī)程以及智慧物流作業(yè)賽項賽題1-10套
- 市場營銷團(tuán)隊協(xié)作手冊
- 銀行反詐騙培訓(xùn)知識講座課件
- GB/T 26218.3-2011污穢條件下使用的高壓絕緣子的選擇和尺寸確定第3部分:交流系統(tǒng)用復(fù)合絕緣子
評論
0/150
提交評論