ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:24.01KB ,
资源ID:21600700      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/21600700.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(误差理论与测量平差课程设计报告Word文档格式.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

误差理论与测量平差课程设计报告Word文档格式.docx

1、3-565-27(3)求各待定点的高程;3-4点的高差中误差;3号点、4号点的高程中误差。第三部分 设计思路一、解题步骤(1)此次设计我所采用的模型为间接平差模型,根据已知条件我们可知观测总数n=7,必要观测数t=3(则多余观测数r=n-t=4),因此我需先选定三个参数,即3、4、5点的最或然高程X3、X4、X5(X=X0+x,X30=、X40=、X50=;其中X0为参数的近似值,x为其改正值)为参数。(2)列出条件方程,即将每一个观测量的平差值分别表达成所选参数的函数,H1+h1=X3、H1+h2=X4、H2+h3=X3、H2+h4=X4、X3+h5=X4、X3+h6=X5、X5+h7=H2

2、;整理后得出误差方程,v1=x3、v2=x4、v3=x3-4、v4=x4-3、v5=-x3+x4-7、v6=-x3+x5-2、v7=-x5,即v=Bx-l的形式。(3)定权,令每千米的观测高差为单位权观测,即Pi=1/Si,从而可写出权阵P;根据误差方程式又可得其系数矩阵B和自由项l,并由它们组成法方程NBBx-W=0(其中NBB=BTPB,W=BTPl),法方程的个数等于所选参数的个数。(4)解算法方程,求出参数改正值x并计算参数的平差值X=X0+x。(5)由误差方程计算V,并求出观测量的平差值。为了检查平差计算的正确性,将所求的值代入条件方程,看其是否满足方程。(6)精度评定,计算单位权中

3、误差,按照题设要求列出权函数式,再根据平差参数的协方差阵求出协因数,最后求出某段高差中误差,某些点的高程中误差。二、程序设计思想考虑到在解题过程中一些计算的复杂性,我们需借助一些技术将计算简单化,快捷化,因此在课程设计过程中,我们把一些C语言程序设计引入其中;通过一些简单、明了的程序及子函数调用,我们就可以很方便快捷的求出用笔算比较繁琐、费时的矩阵乘积、矩阵的逆(如BTPB、BTPl)等运算。第四部分 程序流程图根据题目列出条件方程并写成误差方程的形式V=Bx-l确定权阵,根据误差方程得到矩阵B、l进而写出BT运用C程序语言求出BTP,进一步得到NBB=BTPB、W=BTPl并求出NBB-1用

4、C程序求出参数的改正数x=NBB-1W根据C程序语言求Bx,进而由V=Bx-l写出各观测值的改正数根据L=L+V求出各观测值的平差值检验所求各值是否正确,若无误则往下进行,反之检查各步骤查出错误并改正由程序计算VTP进而求出VTPV,求单位权中误差,再根据权函数式、协因数传播定律评定各观测值及所求高程的精度第五部分 程序及说明一、矩阵相乘计算函数#include “”void Matrix(a,b,m,n,k,c)int m,n,k;double a,b,c;int i,j,l,u;for(i=0;i=m-1;i+)for(j=0;j=k-1;j+) u=i*k+j;cu=; for(l=0;

5、l=n-1;l+) cu=cu+ai*n+l*bl*k+j; return;1.计算BTPmain()int i,j;static double a37=BT;static double c37,b77=P;Matrixmul(a,b,3,7,7,c);printf(“n”);=2;=6; printf(“%t”,cij; printf(“n”);return0;2.计算BTPB,即NBBstatic double a37=BTP;static double c33,b73=B;Matrixmul(a,b,3,7,3,c);3.计算BTPl,即Wstatic double c31,b71=l;

6、Matrixmul(a,b,3,7,1,c);=0;二、矩阵的逆计算函数(求NBB-1)#include #define M 3 void main() float MATM2*M;float MAT1MM;float t;int i,j,k,l;/*/ /*对矩阵进行初始化*/ M;i+) for(j=0;2*M;j+) MAT1j=0;/*对MAT1矩阵赋初值 */ for (j=0; scanf(%f,&MAT1j);/*打印目标矩阵*/ printf(原矩阵为:n);for (i=0; %,MAT1j); printf( /*/ /*对MAT1矩阵进行扩展,MAT1矩阵添加单位阵,由M

7、*M变成2M*2M矩阵 */ if (jM) MATj=MAT1j; else if (j=M+i) MATj=1; else MATj=0;/*对M矩阵进行变换,使得前半部分矩阵成为单位阵,则 */ /*后半部分矩阵即为所求矩阵逆阵 */ /*对第i行进行归一化 */ for(k=i+1;kk+) MATj=MATj+MATkj; t=MAT; for(j=i;MATj=MATj/t;/*对矩阵进行行变换,使得第i 列只有一个元素不为零,且为1*/ for(k=0;if(k!=i) t=MATk; for (l=i;l+) MATkl=MATkl-MATl*t; /*将后半部分矩阵即所求矩阵

8、逆阵存入MAT2矩阵。*/ MAT1j=MATj+M;/*/ /*输出所求的逆阵*/ 逆阵为: for(i=0;4.求NBB-1W,即改正数xstatic double a33=NBB-1;static double c31,b31=W;Matrixmul(a,b,3,3,1,c);5.计算Bxstatic double a73=B;static double c71,b31=x;Matrixmul(a,b,7,3,1,c);6.计算VTPstatic double a17=VT;static double c17,b77=P;Matrixmul(a,b,1,7,7,c);7.计算VTPVst

9、atic double a17=VTP;static double c11,b71=V;Matrixmul(a,b,1,7,1,c);注:程序中有下划线部分在C语言环境中运行时,需根据已知条件及所求结果进行替换!第六部分 计算结果根据条件方程及定权原则写出B、l、P及BTB=,, , ,l=, , P=, ,, ,BT=,,,一、在矩阵相乘计算函数的程序前提下,进行以下子程序的调用1.替换第1个程序中的BT 、P并运行程序得到BTP BTP=,2.替换第2个程序中的BTP、B并运行程序得到BTPB,即NBBNBB=,,,3.替换第3个程序中的BTP、l并运行程序得到BTPl,即WW=,,二、在

10、矩阵的逆计算函数程序中进行以下操作 运行程序,按照提示及以上运算得到的矩阵NBB输入其元素,运行的结果即为NBB-1 NBB-1=,,三、再次在矩阵相乘计算函数的程序前提下,进行以下子程序的调用1.替换第4个程序中的NBB-1、W并运行程序得到NBB-1W,即所选参数的改正数xx=,2.替换第5个程序中的B、x并运行程序得到BxBx=,3.根据V=Bx-l求出各观测值的改正数V,并写出VT,然后替换第6个程序中的VT、P并运行程序得到VTPV=,VT=,VTP=,4.替换第7个程序中的VTP、V并运行程序得到VTPVVTPV=四、求出各个观测值平差值并按要求平定精度X3= m X4= m X5

11、= mh1= h2= h3= h4= h5= h6= h7=根据公式可求得单位权中误差为 h34= X3- X4 Q34=1 -1 0 NBB-11 -1 0T=H3=X3 Q34=1 0 0 NBB-11 0 0T=H4= X4 Q34=0 1 0 NBB-10 1 0T=3、4点高差中误差为 3号点高程中误差为 4号点高程中误差为 第七部分 总结通过这次误差理论与测量平差的课程设计,我又对整本书有了一个更深的理解。其实课程设计就是将我们所学的理论知识应用于实践的过程,在这一过程中,进一步掌握测量平差的基本原理和基本公式,并熟悉测量数据处理的基本技能和计算方法。或许我们已对误差理论与测量平差

12、这本书的理论知识有了一定了解,但将它应用于实践依然是我们的一个难点,尤其是将这门课程与计算机程序完美地结合。这便要求我们在原有的解题思路中加入C语言程序,并让它来帮助我们解决矩阵的复杂运算。既然用到了程序,我们就必须保证其运算的简洁性、正确性,尤其是在编写过程中要认真检查,为程序顺利运行打下基础。另外在各个子程序调用过程中,我们要充分考虑其顺序性并反复调试,以便得到理想结果。尽管在这次课程设计中遇到了很多困难,但我却得到了不少收获,并培养了自己正确应用公式、综合分析和解决问题的能力,同时也为今后步入社会打下了一定的基础。另外,我们还要学会综合利用自身所学的知识,并将它们联系起来帮助自己有效地解

13、决实际中的问题。总之,在这次课程设计中我不但过了比较充实的一周,还收获了不少知识。#includefstreamiomanipusing namespace std; class SZWPC private: int gcz_zs; /高差总数 int szd_zs; /总点数 int yz_szd_zs; /已知点数 double s0;/单位权水准路线长度 double m_pvv; /pvv int *qsd_dh; /高差起点号 int *zd_dh; /高差终点号 char *dm; /点名地址数组 double *gcz; /观测值数组 double *szd_gc; /高程值数组

14、 double *P; /观测值的权 double *BTPB,*BTPL; /法方程系数矩阵与自由项 double *dX; /高程改正数、平差值 double *V; /残差 double zwc; /单位权中误差 public: SZWPC(); SZWPC(); int ij(int i,int j);/对称矩阵下标计算函数 bool inverse(double a,int n);/对称正定矩阵求逆(仅存下三角元素)(参考他人) void inputdata(char *datafile);/输入原始数据函数 int dm_dh(char *name); /点名转点号 void ca

15、_H0(); /近似高程计算函数 void ca_BTPB(); /法方程组成函数 void ca_dX(); /高程平差值计算函数 void printresult(char *resultfile); /精度估计与平差值输出函数 double ca_V(); /残差计算函数 void zxecpc(char *resultfile);/最小二乘平差函数;/ / 构造函数SZWPC:SZWPC() gcz_zs=0; szd_zs=0; yz_szd_zs=0;/ / 析构函数SZWPC() if(gcz_zs0) delete qsd_dh; delete zd_dh; delete gc

16、z; delete P; delete V; if(szd_zs delete szd_gc; delete BTPB; delete BTPL; 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;n;k+) double a00=a0; if(a00+= delete a0; return false; for(int i=1; double ai0 =

17、ai*(i+1)/2; if(i=n-k-1)a0i=-ai0/a00; else a0i=ai0/a00; for(int j=1;=i; a(i-1)*i/2+j-1=ai*(i+1)/2+j+ai0*a0j; a(n-1)*n/2+i-1=a0i; an*(n+1)/2-1=a00; return true;/ 原始数据输入函数void SZWPC:inputdata(char *datafile) ifstream infile(datafile,ios:in);/声明输入句柄infile打开地址为datafile的文件并 if(!infile) cerrgcz_zsszd_zsyz_

18、szd_zs;s0; szd_gc=new double szd_zs; dX=new double szd_zs; BTPB=new double szd_zs*(szd_zs+1)/2; BTPL=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; dmi = NULL;/ dm_dh函数根据dmi是否为NULL确定dmi是否为点名地址 char buffer128; /临时数组,保存从文件中读到的点名=yz_szd_zs-1;i+)/ 读取已知高程数据buffer; int c=dm_dh(buffer);szd_gci;gcz_zs;i+)/ 读取观测数据 /读取高程起点名 qsd_dhi=dm_dh(buffer);/读取高程终点 zd_dhi=dm_dh(buffer);gcziPi

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1