平差实习报告_第1页
平差实习报告_第2页
平差实习报告_第3页
平差实习报告_第4页
平差实习报告_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、课程编号: 课程性质:必修误差理论与测量平差基础课程设计报告学院: 测绘学院 专业: 测绘工程 班级: 学号: 姓名: 至 课程设计题目:(一)、图1为一水准网,a、b、c为已知高程点,为9个待定高程点,第一次观测了图中115条水准路线的高差,各水准路线的观测高差、距离及已知点高程均列于表4,试求(1)1公里高差平差值中误差;(2)各待定点高程平差值及中误差;如果准备加测5段高差1620(图中用虚线表示),(3)试估算平差后各待定点的精度;(4)精度最弱的点发生改变没有;(5)哪一点精度提高得最多。 图1 表1 水准网观测数据线路号观测高差(m)距离(km)线路号观测高差(m)距离(km)11

2、.49570.4112.04160.821.78920.5121.53550.735.20620.7131.74500.842.08530.9142.74340.453.41750.4151.37850.561.20801.0160.676.03730.6170.684.33070.6181.893.65100.6190.8102.51200.3201.2已知点高程:、(二)第二题(一) 分析题目及提出解题所需的模型 所给出的两道题都使用间接平差进行计算,以下是所用的函数模型与误差模型:1. 函数模型 所选用的平差方法是间接平差,间接平差的函数模型就是误差方程,其一般形式为: 通过已知条件可写

3、出b矩阵、l矩阵。 限制条件: 2. 随机模型 间接平差的随机模型为: 第一题可根据水准路线的长度得出权阵p;第二题可根据观测误差得到权阵p。3. 方程的解(参数的解和精度评定) 基础方程及其解: 法方程: 解向量: 精度评定: 计算过程第一题属于水准网平差,先求出个待求高程点的估值,利用高程的附和条件,列出误差方程,得到b矩阵,l矩阵就可方便求解。 第二题在列误差方程时,参数的系数的线性化很重要,这是较易出错的地方。 列出误差方程,根据泰勒展开式可以求得b矩阵。(1) 第一题计算过程:第一题使用编程实现计算,使用c语言编程,采用面向过程的编程方式,先要将所给出的高程网数据做成一个指定排版的t

4、ext文档,以满足程序的读取需要。程序会向指定文件名的文件中写入平差计算后的数据。程序分4各部分,头文件部分,全局变量以及函数的声明部分,main函数不封,函数实现部分。程序声明了一个名为ceduan的结构体数组,该数组中包含高程网中每个测段的起点,终点,测段名,测段高差等信息。函数部分,主要声明的函数的函数有:1 将原始数据写到结果,2近似高程,3建立法方程,4高程平差值计算,5矩阵下标运算符,6代数余子式的构造函数,7求矩阵的逆,8残差计算,9平差结果输出读取数据文件,10初始化变量。共10个函数。近似高程计算主要通过对高程测段的前后点进行判断是否为已知点,如果存在已知点,则用已知点的高程

5、与测段高程差相加减,而得到未知点的高程。矩阵的逆运算使用正定对角阵下三角求逆的算法进行运算。 函数代码如下:#include stdafx.h#include stdio.h#include iostream.h#include #include #include int yzdian=0, zodian=0, gcshu=0; /zoduan水准网点数 /yzdian已知点点数/zodian未知点点数/gcshu观测段数 char *name; double *nbb; /法方程系数double *l; /自由项 double high200; /点高程数据 highdouble *lx;

6、/高程改正数double *v;double m_mu; /单位权中误差int getpointnum(char *);void printdata(); /将原始数据写到结果中void jsgcjs() ; /近似高程void jlffc() ; /建立法方程 void gcpc(); /高程平差值计算int ij(int ,int ); /矩阵下标运算符double gzhs(double *); /计算代数余子式的构造函数bool qn(double a,int n); /求矩阵的逆double cancha() ; /残差计算void printresult(); /平差结果输出voi

7、d getdata(); /读取数据文件void chushihua(); /初始化变量double dwq=0; /验前单位权中误差 file *fp;file *resultfp=fopen(e:输出数据.txt,w);struct ceduan /申明一个名为测段的结构体数组 char name1; /name为测段名 int stratp; /起点 int endp; /终点 double l; /高程 double p; /测段长度; /a,b两点也给定点号10,11struct ceduan oceduan40void main() getdata();/进行平差运算 1 计算近似

8、高程值 2建立法方程 3高程平差值计算 4 残差计算 printdata(); jsgcjs(); /近似高程计算 jlffc(); / 组成法方程/处理已知点 for(int i=0;izodian;i+) nbbij(i,i)=1.0e30; gcpc(); / 高程平差值计算 double pvv=cancha(); / 残差计算 m_mu=sqrt(pvv/(gcshu-(zodian-yzdian); fprintf(resultfp,nn 最小二乘平差结果:n pvv=%-12.8lf,pvv); fprintf(resultfp,n =%lf,m_mu); printresult

9、(); fclose(fp);void printresult() /平差结果输出fprintf(resultfp,nn = 高程平差值及其精度 =n);fprintf(resultfp,n 点名 近似高程 改正数 高程平差值 中误差n);for(int i=0; izodian; i+)fprintf(resultfp,n %5s ,namei); double dx=lxi; double qii=nbbij(i,i); fprintf(resultfp,%12.4lf%9.4lf%12.4lf%9.4lf, highi-dx,dx,highi,sqrt(qii)*m_mu);fprint

10、f(resultfp,nnn = 观测值平差值及其精度 =n);fprintf(resultfp,n no. 起 点 终 点 观测高差 );fprintf(resultfp, 高差平差值 观测权 中误差n);for(i=0;i=zodian-1;i+)int k1=oceduani.stratp; int k2=oceduani.endp; double qii=nbbij(k1,k1); double qjj= nbbij(k2,k2) ; double qij=nbbij(k1,k2); double ml=sqrt(qii+qjj-2.0*qij)*m_mu; fprintf(resul

11、tfp,n%5d %5s%5s ,i+1,namek1,namek2); fprintf(resultfp,%12.4lf %8.4lf%11.4lf%9.2lf%10.4lf,oceduani.l,vi,oceduani.l+vi,oceduani.p,ml); int getpointnum(char *w)/判断一个字符串是否存在于函数的数组中 for(int i=0;izodian;i+) if (namei!=null) if (strcmp(w,namei)=0) return i; else int len=strlen(w); namei=new charlen+1; strc

12、py(namei,w); return i; return -1;/数组已满void jsgcjs() /近似高程计算 for(int i=yzdian;izodian;i+)highi=-9999.9; int jj=0; /计算出近似高程的点数 for(int ii=1;ii+) for(i=0;i-9999.0 & highk2=-9999.0) highk2=highk1+oceduani.l; jj+; else if(highk1-9999.0) highk1=highk2-oceduani.l; jj+; if(jj=(zodian-yzdian)break; if(ii(zod

13、ian-yzdian) fprintf(resultfp,nn下列点无法计算出概略高程:n); for(i=0;izodian;i+) if(highi-9999.0) printf(n%s,namei); printf(近似高程无法计算n); fclose(resultfp); exit(0); void jlffc() /建立法方程int t=zodian;for(int i=0; i(t*(t+1)/2); i+) nbbi=0; for(i=0; it; i+) li=0.0;for(int k=0; kgcshu; k+) int i=oceduank.stratp;int j=oc

14、eduank.endp; double pk=oceduank.p; double lk=oceduank.l-(highj-highi); li-=pk*lk; lj+=pk*lk;nbbij(i,i)+=pk; nbbij(j,j)+=pk; nbbij(i,j)-=pk; void gcpc() /高程平差计算 if(!qn(nbb,zodian) printf(n法方程系数矩阵降秩!); fclose(resultfp); exit(0); for(int i=0; izodian; i+) double xi=0.0; for(int j=0; j=j)? i*(i+1)/2+j :

15、j*(j+1)/2+i;bool qn(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;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)

16、*n/2+i-1=a0i;an*(n+1)/2-1=1.0/a00; delete a0;return true;double cancha()double pvv=0.0;for(int i=0;i=yzdian-1;i+) int k1=oceduani.stratp; int k2=oceduani.endp; vi=highk2-highk1-oceduani.l; pvv+=vi*vi*oceduani.p;return(pvv);void getdata() char guodu100; /中间变量,无实际意义 if (fp=fopen(e:高程数据.txt,r)=null)pri

17、ntf(n 数据文件不存在,无法打开); fscanf(fp,%d%d%d,&gcshu,&zodian,&yzdian); fscanf(fp,%lf,&dwq); int wzdian=zodian-yzdian;name=new char *zodian;for (int i=0;izodian;i+)namei=null; /读取已知点高程,要使用函数判断存在该点点名。 for (i=0;iyzdian;i+) fscanf(fp,%s,guodu); /判断该点是否存在,若存在,返回点号;若不存在分配点号。 int a=getpointnum(guodu); fscanf(fp,%l

18、f,&higha); /读取观测值 for (i=0;igcshu;i+) fscanf(fp,%s,guodu); oceduani.stratp=getpointnum(guodu); if (oceduani.stratp0) fprintf(resultfp,n数据文件出错); fprintf(resultfp,n第%d个高差的起点名为%s,i+1,guodu); fclose(resultfp); exit(0); fscanf(fp,%s,guodu); oceduani.endp=getpointnum(guodu); if (oceduani.endp0)for (int i=

19、0;i0)delete high; delete nbb; delete l; delete lx; for(int i=0; izodian;i+)if(namei!=null)delete(namei);delete name; 本题的运算结果是: 高程平差值及其精度 点名 近似高程 改正数 高程平差值 中误差 a 151.5664 -0.0000 151.5664 0.0000 b 144.5684 0.0000 144.5684 0.0000 c 144.3194 0.0000 144.3194 0.0000 p4 146.0641 -0.0000 146.0641 0.0005 p1

20、 146.3576 0.0011 146.3587 0.0006 p2 148.1494 -0.0004 148.1490 0.0006 p3 145.5274 0.0011 145.5285 0.0007 p5 148.6501 0.0001 148.6502 0.0008 p6 144.9991 -0.0000 144.9991 0.0010 p7 142.4871 -0.0001 142.4870 0.0010 p9 144.5287 -0.0002 144.5285 0.0008 p8 145.9067 0.0002 145.9069 0.0009 观测值平差值及其精度 no. 起 点

21、 终 点 观测高差 高差平差值 观测权 中误差 1 b p4 1.4957 -0.0000 1.4957 2.50 0.0005 2 b p1 1.7892 0.0011 1.7903 2.00 0.0006 3 p1 a 5.2062 0.0015 5.2077 1.43 0.0006 4 p4 p2 2.0853 -0.0003 2.0850 1.11 0.0007 5 p2 a 3.4175 -0.0001 3.4174 2.50 0.0006 6 c p3 1.2080 0.0011 1.2091 1.00 0.0007 7 p3 a 6.0373 0.0006 6.0379 1.67

22、 0.0007 8 c p5 4.3307 0.0001 4.3308 1.67 0.0008 9 p6 p5 3.6510 0.0001 3.6511 1.67 0.0008 10 p7 p6 2.5120 0.0000 2.5120 3.33 0.0006 11 p7 p9 2.0416 -0.0001 2.0415 1.25 0.0008 12 p9 p4 1.5355 0.0001 1.5356 1.43 0.0008 13 c p4 1.7450 -0.0003 1.7447 1.25 0.0005 14 p8 p5 2.7434 -0.0001 2.7433 2.50 0.0006

23、 15 p9 p8 1.3785 -0.0001 1.3784 2.00 0.0007如果加测5段1520测段,其运算果如下,通过对比各个高程点的协因数可以判断该点的精度是否有所提高,加测5段后的运算结果如下:高程平差值及其精度 点名 近似高程 改正数 高程平差值 互协因数 a 151.5664 -0.0000 151.5664 0.0000 b 144.5684 0.0000 144.5684 0.0000 c 144.3194 -0.0000 144.3194 0.0000 p4 146.0641 0.1140 146.1781 0.1673 p1 146.3576 0.3002 146.

24、6578 0.2155 p2 148.1494 -0.7763 147.3731 0.1798 p3 145.5274 0.7037 146.2311 0.2305 p5 148.6501 -0.8320 147.8181 0.3211 p6 144.9991 -0.1452 144.8539 0.6393 p7 142.4871 0.1982 142.6853 0.6403 p9 144.5287 -0.3505 144.1782 0.4946 p8 145.9067 -1.0246 144.8821 0.5006通过比较数据可以看出p7是精度最弱点虽然精度有所提高,但还是精度最低的点,所以

25、精度最弱点没有发生变化,进度提高最多的点是p3点。(二) 导线网平差 导线计算采用的数学模型与误差模型依然为间接平差和最小二乘,导线计算使用excel表格运算,如下表中所表示,通过excel表格计算出近似坐标,近似方位角,以及a,b值,用于列立误差方程。 数学模型l=bx+d x=x0+xv=bx-l l=l-l0excel计算的b矩阵附图在报告中,观测值的权:角度的权全部为1,而边的权值如下表所示:1-22-33-44-55-66-77-88-99-1010-110.530451.026610.746530.861761.509430.684510.568891.071590.711650.

26、6747311-1212-1313-03-1616-1515-1414 106-1717-150.695210.88880.7290.758850.583490.791430.862340.721670.998610 - 167.867001 - 235.06735.066-110 - 1151.78351.79710 - 1447.4447.448811 - 1240.50440.502-212 - 1344.88844.885-313 - 049.38349.378-514 - 1561.69861.705715 - 1645.48745.491415 - 1749.88449.885-1

27、16 - 341.74741.748117 - 636.0536.044-62 - 348.22348.22413 - 441.77541.77614 - 523.8523.85115 - 652.59252.588-46 - 763.28163.27747 - 833.59533.658 - 950.58750.59479 - 1053.35553.36611b矩阵的结果如下图所示,各个待定点的数据如下边号 边测长 边长平差值 改正数 各个点的数据点名 x坐标 y坐标 x改正数 y改正数 极值方向 极大值 极小值0306.141194.671000001278.359256.59100000

28、2264.472288.792.1259-2.94821156.411.043216.252289.463-0.4697-0.604071637.275.394174.585286.4445.24732.5922138.345.635150.992283.4578.433794.927676318.5856122.53239.2047.7584312.95709548.763.58789.773185.07700000899.791153.006-2.27276.2443041109.532.079124.602108.913-8.0112314.5130312711.894.5810177.737103.951-13.35612.340815311.687.6511227.32388.991-7.04026.881811.117.211

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论