当前位置:文档之家› 水准网平差程序的设计与实现课程设计书

水准网平差程序的设计与实现课程设计书

void setRow(const int i) { row = i; }
int getRow() const { return row; }
void setColunm(const int i) { column = i; }
int getColumn() const { return column; }
六、附录(完整代码)
(要求:按照代码所属文件不同分别附上,且代码须有完整注释。)
#include<iostream.h>
#include<stdlib.h>
#include<iomanip.h>
#include<math.h>
#define max 50
class CMatrix
{
public:
CMatrix(){row=0; column=0;}; // 默认构造函数
二、设计内容
如图所示水准网, 和 是已知高程的水准点,并设这些点的已知高程无误差。图中P1和P2点是待定点。 和 点高程、观测高差和相应的水准路线长度见表4-3。试按间接平差法求各个待定点的平差高程。
表1 观测值与起始数据
线路号
观测高差(m)
水准路线长度(km)
已知高程(m)
1
+1.359
1
HA=35.000
V7=x2-x3-(h7-X2+X3)=x2-x3-1;
注意:(x和X的区别)
3.3 法方程构建与解算
由上式可得:
B=[1,0 , 0] L=[ 0 ] P=[ 2 ]
0,1,0 0 2
-1,0, 0 4 1
0, 0, 1 0 1
-1, 1, 0 7 2
1, 0, -1 1 2
0, 1, -1 1 1
2
+2.009
1
HB=36.000
3
+0.363
2
4
-0.640
2
5
+0.657
1
6
+1.000
1
7
+1.650
2
三、关键问题描述
(要求:对程序实现过程中所涉及的关键问题,请给出详细的求解与算法实现模型。)
3.1未知点近似高程计算
X1=HA+h1=36.359;
X2=HA+h2=37.009;
X3=HB+h4=35.360;
3.2 误差方程列立
V1=x1-(h1-X1+HA)=x1-0;
V2=x2-(h2-X2+HA)=x2-0;
V3=-x1-(h3-X1+HB)=-x1-4;
V4=x3-(h4-X3+HB)=x3-0;
V5=-x1+x2-(h5-X2+X1)=-x1+x2-7;
V6=x1-x3-(h6-X1+X3)=x1-x3-1;
bool operator==(const CMatrix& m); // 比括较运算符
bool operator!=(const CMatrix& m); // 比括较运算符
CMatrix operator+(const CMatrix& m); // 加运算符
CMatrix operator-(const CMatrix& m); // 减运算符
CMatrix& change(int i, int j);//交换矩阵的行
CMatrix& transpose(); // 矩阵转置
CMatrix& inverse(); // 矩阵求逆
法方程:BTPBx-BTPL=0
注(BT指的是B的转置)
3.4 精度估计
由法方程得出的x回代到V中,得到V的值。
再利用σo=√VTPV/(n-t)得出中误差,
再由σi=σo√QXiXi,可得各个点位中误差。
其中QXX是BTPB的逆。
3.5 程序设计流程图
四、算法运行结果与分析
由所给数据和所得到的中误差以及其他测量平差值,这个结果还比较合适
void input(); //输入矩阵
void outputMatrix(); // 输出该矩阵
void setValue(int row, int mn, double value) { A[row-1][column-1] = value; }// 设置(i,j)的值
double getValue(int row, int column) const { return A[row-1][column-1]; }// 设置行、列的值
中国矿业大学
China University of Mining and Technology
《数据结构与测绘软件开发》课程设计
中国矿业大学环境与测绘学院
2017-09-11
设计一:水准网平差程序的设计与实现
一、设计目的
我们学习了《数据结构与测绘软件开发》的课堂教学及其实验课程设计,为了提高学生计算机能力以更好地切实解决工程实际问题的能力,通过本次实习设计,可以使使学生深入了解并巩固课堂所学知识,也可以通过实践掌握测绘行业软件设计与开发的基本方法,深刻掌握矩阵运算、曲线/曲面拟合的数值解法,掌握不同类型的典型测绘软件设计方法,使得学生初步具备编写测绘软件常用算法的能力以及开发中小规模测绘专业软件的能力。
CMatrix& operator+=(const CMatrix& m); // 自加运算符
CMatrix& operator-=(const CMatrix& m); // 自减运算符
CMatrix operator-();// 取负数
CMatrix& operator*(const CMatrix& m); // 乘法运算符
CMatrix(int i, int j){row=i;column=j;} // 构造函数一
CMatrix(const CMatrix& m); // 复制构造函数
~CMatrix(void){/*cout<<"谢谢使用,矩阵所占空间以释放!"<<endl;*/} // 默认析构函数
CMatrix& operator=(const CMatrix& m); // 赋值运算符
五、小结
通过水准网程序设计,我知道加深了我对数据结构这一门课的知识的掌握。特别是对我测绘专业的内容有所联系,更加激发我去学习它的动力。在这次设计中,我遇到了不少问题,例如,在对误差方程的编写中,不懂得如何把其系数矩阵提取出来,通过向同学咨询我终于懂了。我对c++中类的设计不熟练,导致很多次程序没法运行。不过,通过查找书籍材料,我还是把它设计好了。虽然设计略微简单,但是原理我已经了解,我相信,以后即使做更复杂的设计,只要给我足够的时间,我可以做出更好地设计。
相关主题