误差理论与测量平差课程设计版文 (2)

时间:2024.4.13

误差理论与测量平差

课程设计报告

                                  

课题:水准网严密平差及精度评定

院校:

系别:

指导教师:

班级:

姓名:

1、 本课程设计的性质、目的和任务

误差理论与测量平差是一门理论与实践并重的课程,其课程设计是测量数据处理理论学习的一个重要的实践环节,它是在我们学习了专业基础课“误差理论与测量平差基础”课程后进行的一门实践课程。其目的是增强我们对误差理论与测量平差基础理论的理解,牢固掌握测量平差的基本原理和基本公式,熟悉测量数据处理的基本技能和计算方法,灵活准确地应用于解决各类数据处理的实际问题,并能用所学的计算机理论知识,编制简单的计算程序。

2、误差理论与测量平差课程和其它课程的联系和分工

这次课程设计中所用的数学模型和计算方法是我们在误差理论与测量平差课程中所学的内容,所使用的C程序语言使我们在计算机基础课程中所学知识。误差理论与测量平差课程设计是测量平差和计算机程序设计等课程的综合实践与应用,同时也为我们今后步入工作岗位打下了一定基础。

3、 课程设计重点及内容

本次课程设计重点是培养我们正确应用公式、综合分析和解决问题的能力,以及计算机编程能力。另外它要求我们完成1-2个综合性的结合生产实践的题目。如目前生产实践中经常用到的水准网严密平差及精度评定,边角网(导线)严密平差及精度评定等。此次我所选的课程设计课题是水准网严密平差及精度评定,其具体内容如下:

根据题目要求,正确应用平差模型列出观测值条件方程、误差方程和法方程;解算法方程,得出平差后的平差值及各待定点的高程平差值;评定各平差值的精度和各高程平差值的精度。

具体算例为:

如图所示水准网,有2个已知点,3个未知点,7个测段。各已知数据及观测值见下表

(1)  已知点高程H1=5.016m , H2=6.016m    (2)高差观测值(m)

                  

(3)求各待定点的高程;3-4点的高差中误差;3号点、4号点的高程中误差。

第三部分 设计思路

一、解题步骤

(1)此次设计我所采用的模型为间接平差模型,根据已知条件我们可知观测总数n=7,必要观测数t=3(则多余观测数r=n-t=4),因此我需先选定三个参数,即3、4、5点的最或然高程X3X4X5X=X0+x,X30=6.375、X40=7.025、X50=6.611;其中X0为参数的近似值,x为其改正值)为参数。

(2)列出条件方程,即将每一个观测量的平差值分别表达成所选参数的函数,H1+h1=X3、H1+h2=X4、H2+h3=X3、H2+h4=X4X3+h5=X4X3+h6=X5X5+h7=H2;整理后得出误差方程,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)精度评定,计算单位权中误差,按照题设要求列出权函数式,再根据平差参数的协方差阵求出协因数,最后求出某段高差中误差,某些点的高程中误差。

二、程序设计思想

考虑到在解题过程中一些计算的复杂性,我们需借助一些技术将计算简单化,快捷化,因此在课程设计过程中,我们把一些C语言程序设计引入其中;通过一些简单、明了的程序及子函数调用,我们就可以很方便快捷的求出用笔算比较繁琐、费时的矩阵乘积、矩阵的逆(如BTPB、BTPl)等运算。

第四部分 程序流程图

第五部分 程序及说明

一、矩阵相乘计算函数

#include “stdio.h”

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;c[u]=0.0;

      for(l=0;l<=n-1;l++)

            c[u]=c[u]+a[i*n+l]*b[l*k+j];

 }

return;

}

1.计算BTP

main()

{

int i,j;

static double a[3][7]=BT

static double c[3][7],b[7][7]=P

Matrixmul(a,b,3,7,7,c);

printf(“\n”);

for(i=0;i<=2;i++)

{

for(j=0;j<=6;j++)

    printf(“%8.4f\t”,c[i][j];

    printf(“\n”);

}

printf(“\n”);

return0;

}

2.计算BTPB,即NBB

main()

{

int i,j;

static double a[3][7]=BTP

static double c[3][3],b[7][3]=B

Matrixmul(a,b,3,7,3,c);

printf(“\n”);

for(i=0;i<=2;i++)

{

for(j=0;j<=2;j++)

    printf(“%8.4f\t”,c[i][j];

    printf(“\n”);

}

printf(“\n”);

return0;

}

3.计算BTPl,即W

main()

{

int i,j;

static double a[3][7]=BTP

static double c[3][1],b[7][1]=l

Matrixmul(a,b,3,7,1,c);

printf(“\n”);

for(i=0;i<=2;i++)

{

for(j=0;j<=0;j++)

    printf(“%8.4f\t”,c[i][j];

    printf(“\n”);

}

printf(“\n”);

return0;

}

二、矩阵的逆计算函数(求NBB-1

#include "stdio.h"

#define M 3

void main()

{

float MAT[M][2*M];

float MAT1[M][M];

float t;

int i,j,k,l;

/***********************************************/

/*对矩阵进行初始化*/

for(i=0;i<M;i++)

  for(j=0;j<2*M;j++)

    MAT1[j]='\0';

/*对MAT1矩阵赋初值 */

for(i=0;i<M;i++)

  for (j=0;j<M;j++)

    scanf("%f",&MAT1[j]);

/*打印目标矩阵?*/

printf("原矩阵为:\n");

for (i=0;i<M;i++)

  {

  for (j=0;j<M;j++)  

printf("%13.7f",MAT1[j]);

  printf("\n");

  } /********************************************/

/*对MAT1矩阵进行扩展,MAT1矩阵添加单位阵,由M*M变成2M*2M矩阵 */

for(i=0;i<M;i++)

  for(j=0;j<2*M;j++)

    if (j<M) MAT[j]=MAT1[j];

  else if (j==M+i) MAT[j]=1;

  else MAT[j]=0;

/*对M矩阵进行变换,使得前半部分矩阵成为单位阵,则 */

  /*后半部分矩阵即为所求矩阵逆阵 */

for(i=0;i<M;i++)

  {

  /*对第i行进行归一化   */

  for (j=0;j<2*M;j++)

  for(k=i+1;k<M;k++)

MAT[j]=MAT[j]+MAT[k][j];

  t=MAT;

  for(j=i;j<2*M;j++)

MAT[j]=MAT[j]/t;

/*对矩阵进行行变换,使得第i 列只有一个元素不为零,且为1*/

  for(k=0;k<M;k++)

if(k!=i)

{

  t=MAT[k];

  for (l=i;l<2*M;l++)

  MAT[k][l]=MAT[k][l]-MAT[l]*t;

}

  }

/*将后半部分矩阵即所求矩阵逆阵存入MAT2矩阵。*/

for(i=0;i<M;i++)

  {

for(j=0;j<M;j++)

    MAT1[j]=MAT[j+M];

  printf("\n");

    }

/*********************************************/

 /*输出所求的逆阵*/

  printf("逆阵为:\n");

  for(i=0;i<M;i++)

  {

  for(j=0;j<M;j++)

  printf("%8.4f",MAT1[j]);

  printf("\n");

  }

}

4.求NBB-1W,即改正数x

main()

{

int i,j;

static double a[3][3]=NBB-1

static double c[3][1],b[3][1]=W

Matrixmul(a,b,3,3,1,c);

printf(“\n”);

for(i=0;i<=2;i++)

{

for(j=0;j<=0;j++)

    printf(“%8.4f\t”,c[i][j];

    printf(“\n”);

}

printf(“\n”);

return0;

}

5.计算Bx

main()

{

int i,j;

static double a[7][3]=B

static double c[7][1],b[3][1]=x

Matrixmul(a,b,7,3,1,c);

printf(“\n”);

for(i=0;i<=6;i++)

{

for(j=0;j<=0;j++)

    printf(“%8.4f\t”,c[i][j];

    printf(“\n”);

}

printf(“\n”);

return0;

}

6.计算VTP

main()

{

int i,j;

static double a[1][7]=VT

static double c[1][7],b[7][7]=P

Matrixmul(a,b,1,7,7,c);

printf(“\n”);

for(i=0;i<=0;i++)

{

for(j=0;j<=6;j++)

    printf(“%8.4f\t”,c[i][j];

    printf(“\n”);

}

printf(“\n”);

return0;

}

7.计算VTPV

main()

{

int i,j;

static double a[1][7]=VTP

static double c[1][1],b[7][1]=V

Matrixmul(a,b,1,7,1,c);

printf(“\n”);

for(i=0;i<=0;i++)

{

for(j=0;j<=0;j++)

    printf(“%8.4f\t”,c[i][j];

    printf(“\n”);

}

printf(“\n”);

return0;

注:程序中有下划线部分在C语言环境中运行时,需根据已知条件及所求结果进行替换!

第六部分 计算结果

根据条件方程及定权原则写出B、l、P及BT

B={{1.0,0.0,0.0},

   {0.0,1.0,0.0},

   {1.0,0.0,0.0},

   {0.0,1.0,0.0},

   {-1.0,1.0,0.0},

   {-1.0,0.0,1.0},

   {0.0,0.0,-1.0}}

l={{0.0},

   {0.0},

   {4.0},

   {3.0},

   {7.0},

   {2.0},

   {0.0}}

P={{0.9091,0.0,0.0,0.0,0.0,0.0,0.0},

   {0.0,0.5882,0.0,0.0,0.0,0.0,0.0},

   {0.0,0.0,0.4348,0.0,0.0,0.0,0.0},

   {0.0,0.0,0.0,0.3704,0.0,0.0,0.0},

   {0.0,0.0,0.0,0.0,0.4167,0.0,0.0},

   {0.0,0.0,0.0,0.0,0.0,0.7143,0.0},

   {0.0,0.0,0.0,0.0,0.0,0.0,0.3846}}

BT={{1.0,0.0,1.0,0.0,-1.0,-1.0,0.0},

{0.0,1.0,0.0,1.0,1.0,0.0,0.0},

{0.0,0.0,0.0,0.0,0.0,1.0,-1.0}}

一、在矩阵相乘计算函数的程序前提下,进行以下子程序的调用

1.替换第1个程序中的BT 、P并运行程序得到BTP

BTP={{0.9091,0.0,0.4348,0.0,-0.4167,-0.7143,0.0},

{0.0,0.5882,0.0,0.374,0.4167,0.0,0.0},

{0.0,0.0,0.0,0.0,0.0,0.7143,-0.3846}}

2.替换第2个程序中的BTP、B并运行程序得到BTPB,即NBB

NBB={{2.4748,-0.4167,-0.7143},

{-0.4167,1.3753,0.0},

{-0.7143,0.0,1.0989}}

3.替换第3个程序中的BTP、l并运行程序得到BTPl,即W

W={{-2.6063},

{4.0281},

{1.4286}}

二、在矩阵的逆计算函数程序中进行以下操作

     运行程序,按照提示及以上运算得到的矩阵NBB输入其元素,运行的结果即为NBB-1 NBB-1={{0.5307,0.1608,0.3450},

{0.1608,0.7758,0.1045},

{0.3450,0.1045,1.1342}}

三、再次在矩阵相乘计算函数的程序前提下,进行以下子程序的调用

1.替换第4个程序中的NBB-1、W并运行程序得到NBB-1W,即所选参数的改正数x

x={{-0.2426},

{2.8552},

{1.1421}}

2.替换第5个程序中的B、x并运行程序得到Bx

Bx={{-0.2426},

     {2.8552},

     {-0.2464},

     {2.8552},

     {3.0978},

     {1.3847},

     {-1.1421}}

3.根据V=Bx-l求出各观测值的改正数V,并写出VT,然后替换第6个程序中的VT、P并运行程序得到VTP

V={{-0.2426},

   {2.8552},

   {-4.2426},

   {-0.1448},

   {-3.9022},

   {-0.6153},

   {-1.1421}}

VT={{-0.2426,2.8552,-4.2426,-0.1448,-3.9022,-0.6153,-1.1421}}

VTP={{-0.2205,1.6794,-1.8447,-0.0536,1.6260,-0.4395,-0.4393}}

4.替换第7个程序中的VTP、V并运行程序得到VTPV

VTPV=19.7997

四、求出各个观测值平差值并按要求平定精度

X3=6.3748 m   X4=7.0279 m   X5=6.6122 m

h1=1.3588m h2=2.0119m  h3=0.3588m  h4=1.0119m  h5=0.6531m  h6=0.2374m  h7=-0.5961m

根据公式可求得单位权中误差为 2.225mm

h34=X3- X4  Q34=[1 -1 0] NBB-1[1 -1 0]T=0.9849

H3=X3 Q34=[1 0 0] NBB-1[1 0 0]T=0.5307

H4= X4  Q34=[0 1 0] NBB-1[0 1 0]T=0.7758

3、4点高差中误差为 2.208mm

3号点高程中误差为 1.621mm

4号点高程中误差为 1.96mm

第七部分 总结

通过这次误差理论与测量平差的课程设计,我又对整本书有了一个更深的理解。其实课程设计就是将我们所学的理论知识应用于实践的过程,在这一过程中,进一步掌握测量平差的基本原理和基本公式,并熟悉测量数据处理的基本技能和计算方法。

或许我们已对《误差理论与测量平差》这本书的理论知识有了一定了解,但将它应用于实践依然是我们的一个难点,尤其是将这门课程与计算机程序完美地结合。这便要求我们在原有的解题思路中加入C语言程序,并让它来帮助我们解决矩阵的复杂运算。既然用到了程序,我们就必须保证其运算的简洁性、正确性,尤其是在编写过程中要认真检查,为程序顺利运行打下基础。另外在各个子程序调用过程中,我们要充分考虑其顺序性并反复调试,以便得到理想结果。

尽管在这次课程设计中遇到了很多困难,但我却得到了不少收获,并培养了自己正确应用公式、综合分析和解决问题的能力,同时也为今后步入社会打下了一定的基础。另外,我们还要学会综合利用自身所学的知识,并将它们联系起来帮助自己有效地解决实际中的问题。

总之,在这次课程设计中我不但过了比较充实的一周,还收获了不少知识。

更多相关推荐:
测量平差课程设计实习报告

河南城建学院测绘与城市空间信息系课程设计报告学生学号061410203学生班级0614102学生姓名豆婷婷专业测绘工程指导教师梁玉保时间20xx1224至20xx122820xx年12月28日设计名称误差理论与...

误差理论与测量平差课程设计报告

误差理论与测量平差课程设计课程名称水准网严密平差及精度评定院系土木工程学院专业班级姓名学号指导教师误差理论与测量平差基础课程设计报告目录1目录12课程设计的目的23课程设计题目及相关要求4设计思路5程序流程图6...

测量平差课程设计

课程名称学院姓名年课程设计误差理论与测量平差基础矿业学院专业yyzzhh学号111111111120xx年01月06日课程设计任务书一设计目的及意义测量平差是一门理论与实践并重的课程测量平差课程设计是测量数据处...

测量平差课程设计

课程名称学院姓名年级课程设计误差理论与测量平差基础矿业学院专业测绘工程岗多则拉学号任课教师20xx年7月14日测量平差课程设计任务书一本课程设计的性质目的任务误差理论与测量平差基础是一门理论与实践并重的课程该课...

测量平差课程设计

课程名称学院姓名年级课程设计误差理论与测量平差基础矿业学院专业测绘工程胡思华学号120xx1021020xx任课教师张俊20xx年6月8日测量平差课程设计任务书一本课程设计的性质目的任务误差理论与测量平差基础是...

测量平差课程设计报告

东南大学交通学院测量平差课程设计报告设计题目专业班级学号姓名指导老师日期019测绘工程专业1课程设计目的2课程设计任务目录2223课程设计重点以及基本要求4课程设计具体要求5课程设计案例及分析6课程设计展示成果...

测量平差课程设计实习报告

湖南科技大学建筑与城市规划学院测量平差课程设计实习报告专业班级姓名学号指导老师20xx年1月9日一课程设计的性质目的和任务测量平差课程设计是完成测量平差基础课程教学后进行的综合应用该课程基本知识和技能的一个教学...

误差理论与测量平差课程设计任务书、指导书

误差理论与测量平差课程设计任务书题目测量控制网严密平差程序设计时间12月9日至12月13日共一周专业测绘工程班级学号姓名指导教师签字院长签字一设计内容及要求本设计重点检查同学们利用误差理论与测量平差知识解决测量...

误差理论与测量平差课程设计报告

误差理论与测量平差课程设计报告课题水准网严密平差及精度评定院校山东交通学院系别土木工程系指导教师赵斌臣等班级测绘071姓名李大志目录一目录1二序言2三设计思路3四程序流程图4五程序及说明5六计算结果12七总结1...

误差理论与测量平差课程设计报告

误差理论与测量平差课程设计报告课题水准网严密平差及精度评定院校山东交通学院系别土木工程系指导教师赵斌臣等班级测绘071姓名李大志目录一目录1二序言2三设计思路3四程序流程图4五程序及说明5六计算结果12七总结1...

测量平差课程设计指导书

误差理论与测量平差课程设计指导书测绘工程专业20xx年12月误差理论与测量平差课程实习指导书适用专业测绘工程学分数1学时数1周一实习目的测量平差是一门理论与实践并重的课程测量平差课程设计是测量数据处理理论学习的...

测量平差课程设计大纲与要求

误差理论与测量平差课程设计大纲及要求一本课程的性质目的和任务测量平差是一门理论与实践并重的课程测量平差课程设计是测量数据处理理论学习的一个重要的实践环节它是在学生学习了专业基础课误差理论与测量平差基础课程后进行...

测量平差课程设计总结(26篇)