




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/ / / /v isual C+6、0编译通过/ / / / / / / / / / /参考资料/部分网络资料/宋力杰测量平差程序设计/ /姚连壁基于ma t I a b得控制网平差程序设计/ / /# i n elude #inclu d e # incl u d e#i n c lude usingnames p ac e s t d;/ / / / / / / / / III / / / III / 1111 / / / / /cl a s sc la s s S ZWP Cp r ivat e :i nt gez_zs:i nt szd_zs; “nt yz_ s zd_ z s:
2、u b le m_pv v :* q s d _dh;* zd_ d h;a ra 1 ntintc h* * d m: d ouble。do u bl e。d o uble double d o uble double double public: oSZWPCO: 严SZWP C (): o in t ij( ibo o I她人)20 i din t“vo i d voidgc z :* s z d_ c;*P:/髙差总数总点数已知点数 P V V高差起点号/髙差终点号/点名地址数组观测值数组髙程值数组/ /观测值得权ATPA/ATPL; /法方程系数矩阵与自由项 *dX;V;m mu;高
3、程改正数、平差值 残差/单位权中误差j );/对称矩阵下标汁算函数i n verse ( d ou b le a, i nt n );/对称正定矩阵求逆(仅存下三角元素)(参考inp u td a ta ( c h a r *d a ta输入原始数据函数 dm_d h (c h a r次name); / /点名转点号 ca_H0() ;/近似高程计算函数ca_ATPA(); 法方程组成函数ro id ca_dX ();髙程平差值计算函数vo i d pr i n tr e sul t (char *resul t fi 1 e ) ; /精度估计与平差值输出函数 doub 1 e ca_V (
4、);残差计算函数vo i d z xe c pc( c har * resul t 最小二乘平差函数:/ / /构造函数SZWPC: :SZWPC ()g c z_ z s=0:s zd_ z s=0;y z_szd_z s =0:/ / / / / /m/mini/ / /析构函数SZWPC: rszwpcoif(g c z_z s 0)q delet e qsd_dh;ode lete zd_d h;del e te g cz:odelet e P:“delete V:4a i f(sz d _zs0 )dele t e szd_gc;de 1 ete ATPA:a d e lete A
5、T P L;de 1 ete dX;“for (i n t i =0; i s z d_ z s: i+ + )八 if(dm i ! =NULL) d elete (dm i);delete d m;4 / / / III / / / /对称矩阵下标计算函数in t SZWPC: :ij( i nti, intj)r e tu r n (i) =j) ? i * (i+ 1 ) / 2+j : j * (j+1) / 2+i;/ / / / / / / / / / /Ill/对称正立矩阵求逆(仅存下三角元素)(参考她人)b o ol SZWPC:: inver s e (d o u b 1
6、e a , i n t n)double *aO = new d o u ble n;for(int k =0: kvn;k+ + )。o d o u b le aO 0 =a r0:“if (a 0 0+1. 0=1、0)0 八 d elete a0:。 r e t u r n false;ua for (int i=l; i n; i+)ado u b 1 e aiO = ai* (i+ 1 ) / 2);if( i =n k-1) a 0 i = aiO/aO 0 :“ elseaO i = a i 0 / a 0 0;。 for (i n t j=l;j = i; j+ +)。 “ o
7、a ( i -1) *i/2+j- 1 =a i * ( i +1) /2+j +a i 0 * aOj:4do“fo r (i=l: in; i+)DO a( n/2+i 1 =a0 i;。a n* (n+1) /2-1 =1、0 /a00:4del e t e a 0 ;return tr u e ;/ / / / / / / / / / / /原始数据输入函数vo i d SZWPC:inputd ata ( c ha r * datafile)ifs t r e a m in);o i f (! infile)。“ cerr ( g c z _z s s z d _z s y z _s
8、zd_zs;a int unPnumber=szd_zsyz_s z d_zs:。szd_gc=n e w d ouble szd_zs;dX=new doub 1 e s zd_zs:a A TPA= new dou b le szd_zs* (szd_z s +1) / 2;a ATPL=new do u bl e s Z d_zs:q s d_d h =new i n t gcz_zs;a zd_d h =new i n t gcz_zs:ogcz= new dou b I e gc z_zs;V=n e w doubl e gcz_zs;P = n e w d ou b 1 e g c
9、z_ z s;dm二new char* szd_zs:f o r(in t i=0;i s zd_zs; i+ )dm i = NU L L ; /dm_dh函数根据dm i 就是否为NULL确定dm i 就是否 为点名地址char buffer 128:/临时数组,保存从文件中读到得点需for ( i= 0 ;ibuf f e r :ai nt c=dm_ d h (buf f er );ainf i lesz d _gc i ;4。f or (i=0; i ( g c z_zs: i+) 读取观测数据a i nf i lebuffe r : 读取髙程起点名。q sd_d h i =dm_
10、d h (buff er);-inf i 1 ebuffe r;/读取高程终点。z d _d h i =dm_ d h ( b uffer):。-infile) g c zi P 订;/读取高差值与路线长度 P i=l、O/Pi: /线路长转化为观测值得权。泊();/ / /nun/ / / 点 名转点号,返回点名对应得点号int S ZWPC : d m_ d h (char 夫 name) for(in t i=0; iszd_zs; i+4-)0 if(dmi! =NULL)a f( s tr c mp ( n amezdm订)=0) re turn i; / /将待査点名与已经存入点名
11、数组得 点名比较,若存在返回点号 else。o i n 11 e n = str len( n a me);判断点名长度-dmi = new c harlen+ 1 ; 为点名申请存储空间str c p y (dm i, n a me);/ /待查点名就是一个新得点名,将新点名得地址放到d m数 组中return i : 返回点号4return -1; /dm数组已经存满,且没有待查点名/ I/HI/mu/髙 程近似值计算void SZWPC:: c a_HO ()fo r (int i= y z_sz d _zs; i szd_zs: i+) s z d _gc i=10 0 00, 9;/
12、为计算机设置 辨别未知高程点得恳志ofo r (int j=l;; j + + )i nt k=0; /计算岀近似高程得点数for (i=0; i 1 0000、0 & szd_gc k2 (10 000, 0)/k 1 点高程或高 程近似值已知,k 2点高程或高程近似值未知。 八 os z d_gck2 =szd_gckl +gczi;计算近似高程k+;。 o o o els e。i f ( s zd_gc kl-10 0 0 0、0) /k2 点 高程或髙程近似值已知,k1点高程或高程近似值未知QO。s zd_gckl = s z d_g c rk 2 -gc z i;计算近似高程n k
13、+;do0 。i f (k= (szd_z s yz_szd_ z s ) b reak;所有得近似高程计算完成,退出/ / / / / / / / / / / / 组成法方程void SZWPC:ca_ATPA()/int t=szd_ z s;f o r(int i=0; i s zd_ z s*(szd_zs+l)/2;i+) ATPA i = 0、0; / /赋初值for ( i =0;i (szd.zs; i+) ATPLi=0 . 0; /赋初值f o r (i nt k =0; kgcz_zs: k+)int i=qs d _d h k;获取点号“int j=zd_d h k;
14、获取点号。do u b le Pk=P k ;获取权值。d ouble lk=gc z kJ( s zd_gcj s z d_gc i); /获得第 k 个自由项 oATPL i-=Pk* 1 k: /获得法方程自由项“ATPL j+=P k * 1 k;ATPAij ( i,i) +=Pk;获得法方程系数矩阵。ATPA ij(jj)J +=Pk:。ATPA i j( i , j) -=Pk :/ / / / /III/II/1/II/lllllllllllllll/II /Illi/高程平差值计算v oi d S Z WP C : ca_dX() of o r (int i=0;iy z _
15、 s zd_zs;i + +) ATPA ij (i, i)二1、0 e3 0 ; /处理已知点。i f (! i nv e rs e ( A T PA, szd_ z s ) ) / /矩阵求逆a cerr”法方程系数矩阵降秩! v endl; /矩阵为奇异矩阵,无法求逆exit(0);退出程序for(i=0: i szd_zs; i+) 计算髙程改正数double x i= 0、0: for (int j=0; j ( s z d_ zs;j+)o x i +=ATPA j ) *ATPL j;4“dX i =xi:szd_g c i+=x i;/计算高程平差值/ / / / / / /
16、残差计算double SZWPC:: ca_V() doub 1 e p v v= 0、0: pfor (int i=0; i=gcz_z s l;i+) 0 int k l = qsd_d h i:i nt k2= z d_d h i: Vi二szd_gc k 2 -s z d_gckl g c z i:a p v v+=V i *Vi*P i ;retur n(pvv);/ /nn/ / / /mu/ / /原始数据与平差值输出void SZW P C:: printresult( char * r e s ultfi 1 e )o dou b 1 e pvv=c a _V( );/ /
17、残差计算of s tream out): 以输出方式打开文件,若文件不存在,创建文件。输出原始观测数据outf i leendl ( ” 观测总数:” g cz_ z s ( M H 总点数:” (s zd_ z s ;ou t f ile (11 B知点数:yz_s z d _ z s ( e ndl:noutfileVve n div n = = = = 已知髙程 = = =M endl; 输出原始观测数据已知点点号、高程for (in t i=0: i=yz_s z d_zs1: i + + )outfile ( M d m i :outfi 1 e s e t i o s f 1 ag
18、s (io s : f i x e d );a out filese t w (10)setprec i s i on (4)Vs z d_g c i ( e nd 1 ;outf ile e ndle n dl” = = = = = 髙差观测值”= = = e ndl endl; 输出原始观测数据高程观测值与路线长 o o u t fi 1 e”起始点名” Vv” 终点点名” V ” VV”高差观测值(m)” 11 两点间距离(km) Mendl;“for (i=0; i=g c z _z s-1: i+)打“out f i 1 eH u (dm qsd_dhi setw (9) (dm z
19、d_d h i:a Q outf i I e (setiosflag s ( i o s : : fixe d ); outfileset w (16) (setpr e cision(4) (g c z i; a outf i le s etiosf 1 ags( i os: :fix e d);“ ou t fi 1 e (setw ( 1 6) ( s e tprecis i on ( 4 )1、0/P i e ndl;4m_mu=sqr t (pvv/(gcz_z S (sz d _zsyz_ s z d_zs): 计算单位权中误差。outfi 1 e endl,= = = 单位权中误
20、差= = = = = = = =”endl;/输出单位权中误差out file ( e nd 1 (uo0=n (m_muVendl;。oo u tfilee nd I (w = 高程平差值及其精度 = = = = = =M e nd 1 endl; 输出高程平差值及其精度outfi Ie”点需近似高程改正数 高程平差值 中误差”Vendl:f o r ( i = 0:i szd_zs: i + +)outfile setw (2) (dm i;od 0 uble dx=dX i:o d o u b le q i i = ATPA ij ( i , i);“ ou t f i le V s e
21、 ti o s fl a gs( i os: :fi x ed);oou t f i le s etw(12) ( s et p rec i sio n (4) s z d_gci -d x:o。ou t files e t i os f 1 a g s ( i os:fi x ed ):“ outfileVVsetw (10) (se t p r eci s i o n (4) Vvdx;o u t fil e s e ti o sf 1 ags(ios:: f ix e d):out f ile (setw (11) (setprecis i on (4) sz d _ g ci;outf
22、il e setio s f 1 a g s ( i o s:: fixed);“ ou t f i levs e tw ( 1 0) ( s etpr e cis i o n(4) (sqr t (q i i) * m_mu (endl;4输岀观测值平差值及英精度 outfile endl e ndl” = = = = = =观测值平差值及其精度 = = = =H end 1 (endl;outfile 起点终点 观测高差v”V高差平差值 观测权中误差” endl;for( i =0; i = g c z _zs l;i+ )a i n t kl = qsd_dhi; i nt k2 = z
23、d_dh i;d o u b le qii=AT P A i j klzk 1 );o double qjj= ATPA ij(k2/k2):doub 1 e q ij=AT PA i j ( k 1 ,k 2 );八 d o u ble ml= s q r t (qii+ q jj 2、0 *q i j ) * m_mu:a ou t (2):“outfi 1 edm kl;“ou t (7);outfile (dmk2j;o utfile (setios flags (ios: : f ix e d);“outfile ( s e tw(12) (setpre c i s ion (4) g c z i;outf i les e tiosfl a gs(ios:: f ixed);outfil e setw (10) (s e tpr e cisi o n (4 ) Vi;ou t f iles e t io S f lags(io s : fixed)
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年建筑工地临时用电安全合同协议
- 2025年建筑工程监理合同
- 107汽车电子芯片的电源设计教学考核
- 103DSoC设计中的电源完整性教学考核方案
- 房产开发施工合同(标准版)
- 2025年罗定市市级机关公开遴选考试真题
- DB3502-T 161-2024 城市轨道交通工程土建施工监理规程
- 2025建筑施工企业安管人员考试(项目负责人B类)全真模拟试题及答案
- 2025年河南许昌注册环保工程师考试模拟题库及答案:(大气污染防治专业案例)
- 难点解析人教版八年级物理上册第4章光现象专题训练试卷(含答案详解)
- 家政服务消防安全培训课件
- 局麻药过敏反应课件
- 邮件流量分析-洞察及研究
- 《流体机械》课件第5章叶片式气体机械
- 基于微信小程序自助洗车系统的设计与实现
- 医院骨科主任竞聘课件
- 心源性脑栓塞治疗指南
- 南湖红船景区讲解
- 2025年少先队辅导员知识竞赛题库及答案
- 2023年游泳竞赛规则
- 供货进度保证措施方案
评论
0/150
提交评论