测绘毕业设计(9)

2019-07-30 13:16

中国矿业大学2012届本科生毕业设计第 32 页

//定义矩阵,注意维数必须与函数定义统一 // 对S与H矩阵赋值 AXB(S,H,T,4,5); 上式计算:S?H?T

4,55,14,1(4)行向量乘列向量 定义函数为:

double AXB(double A[1][MAX],double B[MAX][1],int m); 应用举例:

double S[1][MAX],H[MAX][1],T;

//定义矩阵,注意维数必须与函数定义统一 // 对S与H向量赋值

T=AXB(S,H,4);

上式计算:S?H?T

1,44,1(5)行向量乘矩阵 定义函数为:

Void AXB(double A[1][MAX],double B[MAX][MAX],double C[1]

[MAX],int m,int n);

应用举例:

double S[1][MAX],H[MAX][MAX],T[1][ MAX]; //定义矩阵,注意维数必须与函数定义统一

// 对S与H矩阵赋值 AXB(S,H,T,4,5); 上式计算:S?H?T

1,44,51,52.间接平差中的相关计算

(1)法方程系数阵计算ATPA void ATPA(double A[][MAX],double P[][MAX],double ATPA[][MAX],int m,int n); (2) 的计算

double VPV(double V[][1],double P[][MAX],int m); (3)的计算

void ATPL(double A[][MAX],double ATPL[][1],int m,int n); 4.1.2矩阵转置

下面给出矩阵转置的重载形式,分别完成矩阵与向量的转置:

void AT(double A[][MAX],double AH[][MAX],int m,int n); // 矩阵转置 void AT(double A[][1],double AH[][MAX],int m); // 列向量转置为行向量 void AT(double A[][MAX],double AH[][1],int m);//行向量转置为列向量

P[][MAX],double

L[][1],double

中国矿业大学2012届本科生毕业设计第 33 页

4.1.3矩阵求逆

定义函数为:

int inverse(double C[][MAX],double B[][MAX],int n);

需要注意的是,一个矩阵不一定可以求逆,当一个矩阵不满秩时,其逆阵不存在。所以,在此定义函数返回值为int类型(当然也可以定义为bool类型),用来作为矩阵是否可逆的标志。矩阵可逆返回1,不可逆返回0,这一点在应用时应当特别注意。 4.1.4矩阵输出

1.屏幕输出矩阵

应用中,经常需要及时看到程序的运行过程,所以需要屏幕显示相关矩阵,在此给出显示矩阵及列向量的方法。

void matdis(double A[][MAX],int n,int m); void matdis(double A[][1],int n); 2.文件输出矩阵

在计算过程与结果文件保存中,也经常需要保存矩阵,在此给出向文件流保存矩阵和列向量的函数。其中,out 为输出文件流ofstream 的一个对象。

void matout(double A[][1],int n,ofstream out) // 向文件输出列向量 void matout(double A[][MAX],int n,int m,ofstream out) // 向文件输出矩阵 4.1.5设置实数输出精度

double setf(double a, int t);

// t为需要保留的小数位数,返回值为的四舍五入后的值。

4.2平差中的重要函数

4.2.1角度制与弧度制的相互转化

C/C++程序设计中,关于角度的计算以弧度制为单位,而在测量以及具体工作中我们通常习惯以角度制为单位。这样,在数据处理中,经常需要在角度制与弧度制之间进行相互转化。这里,我们利用C/C++数学函数库math.h中的相关函数完成这两种功能。

这里,我们使用double类型数据表示角度制数和弧度制数。例如:123度44分58.445秒,用double类型表示为123.4458445,其中分、秒根据小数位确定。 在角度制与弧度制的转化中,涉及如下图4.1所示的两个环节。

弧度 度 度.分秒

图4.1 角度制与弧度制的转化

1.角度化弧度函数

double d_h(double angle) //角度化弧度 { double a,b;

中国矿业大学2012届本科生毕业设计第 34 页

angle=modf(angle,&a);//a 为提取的度值(int类型),angle为分秒值(小数) angle=modf(angle*100.0,&b); // b为提取的分值(int类型),angle为秒值(小

数)

return (a+b/60.0+angle/36.0)*(PI+3.0E-16)/180.0;

}

2.弧度化角度函数

double h_d(double angle) //弧度化角度 { double a,b,c;

angle=modf(angle*180.0/(PI-3.0E-16),&a); angle=modf(angle*60.0,&b); angle=modf(angle*60.0,&c);

return a+b*0.01+c*0.0001+angle*0.0001;

}

其中,函数modf(angle,&a)为C语言数学库函数,返回值有两个,以引用类型定义的a返回angle的整数部分,函数直接返回值为angle的小数部分。 4.2.2测量正反算函数

为使数据简洁,定义了相关结构表示测量中的具体概念。在平面网中,定义了控制点以及观测值结构。测量正算在此用于控制点近似坐标的计算。下面是两个结构体,具体的定义见后面的4.4节:

XYP //平面点结构 obser // 观测值结构 1.测量正算函数

int zheng(obser &a) 2.测量反算函数 (1)反算距离

double dist(XYP &a,XYP &b) (2)反算方位角

double afa(XYP &a,XYP &b) 4.2.3近似坐标计算

在平面网间接平差计算中,近似坐标计算是非常重要的一项基础工作。近似坐标是否计算成功是间接平差是否可以进行的必要条件。 1.两方向交会

已知条件:两个点的近似坐标,这两个点到未知点的方位角,如图4.2所示

中国矿业大学2012届本科生毕业设计第 35 页

图4.2 两方向交会

根据图4.2,设k1?tg?1,k2?tg?2,则很容易写出

??k1?? ??k?2??yP?yAxP?xAyP?yBxP?xB 整理该式,得两方向交会的的计算公式

?k1?1??xP??k1xA?yA? ??k?1????y?????kx?y?? (4.1)

B? ?2??P??2B对(4.1)式计算,即可得到未知点的近似坐标。应用中需要注意的是,若两方向值相同或

相反,则该式无解。

程序中,定义该问题的函数为:int xy0ang(obser &a1,obser &a2) 2.三边交会

如图4.3所示,为排除两边长交会的二义性,给出如下三边交会的模型,已知条件:三个点的近似坐标,这三个点到未知点的距离测量值。

图4.3 三边交会 对每条边长测量值,可列出边长条件 ?S12?(xP?xA)2?(yP?yA)2(a)?222 (b)?S2?(xP?xB)?(yP?yB)?222S?(x?x)?(y?y)(c)3PCPC?

计算上式中(a)与(b)和(c)三式的差,消去未知参数的平方项,整理得三边交会的计算公式

中国矿业大学2012届本科生毕业设计第 36 页

22222?S2??xB?yB?S12?xA?yA??yA?yB??xP??2? (4.2) ???????2222?yA?yC??yP??S32?xC?yC?S12?xA?yA??2???xA?xB ??x?xC?A对(4.2)式计算,即可得到未知点的近似坐标。应用中需要注意的是,若三点位于同一条直线,则该式无解。程序中,定义该问题的函数为:int xy0dist(obser &a,obser &b,

obser &c)。 3.坐标正算

使用测量正算公式计算控制网的近似坐标。程序中,定义该问题的函数为:

int zheng(obser &a) 4.角度后方交会

使用测量后方交会计算公式计算控制网的近似坐标。程序中,定义该问题的程序函数为:

int houj(obser &a,obser &b, obser &c) 5.测角网无定向导线计算

无定向导线,主要应用于计算已知控制点不相邻的三角网的近似坐标。基本思想为:先由一个已知点开始,假设一条边的边长与方位角,根据三角网的角度观测值推算其它边的边长与方位角,然后,由任一导线计算,直到计算至另一个已知点为止。假设导线的起点为A,终点为B。这时,计算出的B点坐标必然与已知坐标不同,设A与B的已知坐标

''为(xA,yA,xB,yB),B点的计算坐标为B’(xB),则用这些数据可以计算边长的放大,yB系数k和假设方位角的改正数da

k?''(xB?xA)2?(yB?yA)2

(xB?xA)2?(yB?yA)2 d??afa(A,B)?afa(A,B?)

其中,afa(A,B)为计算方位角的函数。

这时,对网中的假设边长和所有由假设边长推算的近似边长进行k倍的放大,对假设方位角和所有由假设方位角推算的近似方位角进行方位角改正。然后应用坐标正算法可以计算三角网中所有点的近似坐标。

4.3导线网的平差理论

4.3.1平差概述

平面控制网是为获得地面点的二维坐标(X,Y/B,L)而布设的水平控制网。经典的平面控制网包括三角网、边角网和测边网三种类型。本节主要介绍边角网平差的问题。 1.平差基准面

众所周知,平面网的外业观测值涉及到基准的问题。如大地水准面上的角度和方位角,大地水准面上的边长(空间距离)。大地测量控制网坐标一般采用高斯投影平面坐标或地理坐标,这就涉及到平差的基准面问题,当采用高斯坐标系时,其平差基准面为高斯平面;而采用地理坐标时基准面为椭球面。平差计算采用高斯平面或者椭球面进行在理论上是统


测绘毕业设计(9).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2019中考化学总复习及知识点总结(绝版)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: