欢迎来到天天文库
浏览记录
ID:9937045
大小:343.00 KB
页数:44页
时间:2018-05-16
《测绘程序设计课程实习报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、测绘程序设计课程实习报告一、实习目的巩固之前所学的c++类定义、文件操作等各方面知识,掌握矩阵计算的基本算法,熟悉并熟练运用平差模型,掌握测量平差的基本原理和公式,并处理测量观测数据。二、实习内容该课程的实习主要为c语言及c++编程基础,矩阵操作算法,条件平差,间接平差,以及在水准网平差中的应用。三、实习过程(一)实习1(文件的基本操作以及角度、弧度的转化)1.准备C++文件操作函数包含于头文件,一般情况下使用即可。在计算过程中需要文件输出格式控制,函数包含于
2、。c++的流操作函数包含于,相应的流函数在命名空间“std”。角度转弧度的过程中,首先判断正负,对符号进行不同情况的处理。将度数的分,秒位分别除以60、3600,然后把得到的结果与度位绝对值相加,判断符号。弧度转角度的过程中,同样判断正负,取小数位乘以60取整数得到相应角度的分,再取剩余的小数乘以60即得到相应角度的秒。44/441.代码#include#include#include#includeusingnamespacestd;constdoublepi=3
3、.14159;intmain(){fstreamfile("a.txt");//定义文件操作对象stringaa;file>>aa;cout<>a1;cout<<"输入分"<>a2;cout<<"输入秒"<>a3;cout<<"角度为"<4、″"<=0)//判断输入度数的正负deg=a1+a2/60+a3/3600;else44/44deg=a1-a2/60-a3/3600;doubleradian; radian=deg/180*pi;cout<<"转换得弧度为"<>radian; booltm=0;deg=radian*180/pi;if(deg<0) {tm=1;deg=-deg; }a1=int(deg);a2=int((d5、eg-a1)*60);a3=((deg-a1-a2/60)*3600);if(tm==1){a1=-a1;tm=0;}cout<<"转换后角度为"<6、1.准备在误差检验、粗差探测等平差计算中经常需要计算某些特定分布函数的反函数值,为满足计算需要,使用CProbability类对相关计算进行封装。2.代码及运行结果与书上相同。(二)实习3(矩阵基本运算)1.准备矩阵的运算有加法、减法、乘法、转置、求逆,封装在一个类中。为了方便之后的计算与使用,类中还添加了从文件中读入矩阵、输出矩阵,向控制台输入输出矩阵的函数。代入运算的矩阵均用动态的一维数组表示。先定义double型指针,在确定矩阵大小后动态申请空间,row行col列的矩阵定义为:double*mat=newdouble[row*col];第i行j列的7、元素为mat[i*col+j]。44/44矩阵的加法、减法只需遍历两个矩阵的每个元素,相加之后放到结果矩阵中(如有必要先判断相加的两矩阵行数与列数是否相等)。乘法计算中设相成的两个矩阵mat1、mat2的行列分别为row1、col,col、col2,则所求结果矩阵第i行j列的元素用三个循环即可计算矩阵中所有的元素。矩阵转置将结果矩阵中的i行j列元素赋值为需要计算的矩阵中的j行i列个元素即可。矩阵求逆,由于平差计算中需要求逆的矩阵一般为实对称正定矩阵,为了提高大型矩阵的计算效率,可以使用对实对称正定矩阵求逆的方法。设C为n阶对称正定矩阵,y、x为n维向量,8、其关系式为:y=C·x(3-1)确定了上的一个映像,如能写出逆关系:x=B·y(
4、″"<=0)//判断输入度数的正负deg=a1+a2/60+a3/3600;else44/44deg=a1-a2/60-a3/3600;doubleradian; radian=deg/180*pi;cout<<"转换得弧度为"<>radian; booltm=0;deg=radian*180/pi;if(deg<0) {tm=1;deg=-deg; }a1=int(deg);a2=int((d
5、eg-a1)*60);a3=((deg-a1-a2/60)*3600);if(tm==1){a1=-a1;tm=0;}cout<<"转换后角度为"<6、1.准备在误差检验、粗差探测等平差计算中经常需要计算某些特定分布函数的反函数值,为满足计算需要,使用CProbability类对相关计算进行封装。2.代码及运行结果与书上相同。(二)实习3(矩阵基本运算)1.准备矩阵的运算有加法、减法、乘法、转置、求逆,封装在一个类中。为了方便之后的计算与使用,类中还添加了从文件中读入矩阵、输出矩阵,向控制台输入输出矩阵的函数。代入运算的矩阵均用动态的一维数组表示。先定义double型指针,在确定矩阵大小后动态申请空间,row行col列的矩阵定义为:double*mat=newdouble[row*col];第i行j列的7、元素为mat[i*col+j]。44/44矩阵的加法、减法只需遍历两个矩阵的每个元素,相加之后放到结果矩阵中(如有必要先判断相加的两矩阵行数与列数是否相等)。乘法计算中设相成的两个矩阵mat1、mat2的行列分别为row1、col,col、col2,则所求结果矩阵第i行j列的元素用三个循环即可计算矩阵中所有的元素。矩阵转置将结果矩阵中的i行j列元素赋值为需要计算的矩阵中的j行i列个元素即可。矩阵求逆,由于平差计算中需要求逆的矩阵一般为实对称正定矩阵,为了提高大型矩阵的计算效率,可以使用对实对称正定矩阵求逆的方法。设C为n阶对称正定矩阵,y、x为n维向量,8、其关系式为:y=C·x(3-1)确定了上的一个映像,如能写出逆关系:x=B·y(
6、1.准备在误差检验、粗差探测等平差计算中经常需要计算某些特定分布函数的反函数值,为满足计算需要,使用CProbability类对相关计算进行封装。2.代码及运行结果与书上相同。(二)实习3(矩阵基本运算)1.准备矩阵的运算有加法、减法、乘法、转置、求逆,封装在一个类中。为了方便之后的计算与使用,类中还添加了从文件中读入矩阵、输出矩阵,向控制台输入输出矩阵的函数。代入运算的矩阵均用动态的一维数组表示。先定义double型指针,在确定矩阵大小后动态申请空间,row行col列的矩阵定义为:double*mat=newdouble[row*col];第i行j列的
7、元素为mat[i*col+j]。44/44矩阵的加法、减法只需遍历两个矩阵的每个元素,相加之后放到结果矩阵中(如有必要先判断相加的两矩阵行数与列数是否相等)。乘法计算中设相成的两个矩阵mat1、mat2的行列分别为row1、col,col、col2,则所求结果矩阵第i行j列的元素用三个循环即可计算矩阵中所有的元素。矩阵转置将结果矩阵中的i行j列元素赋值为需要计算的矩阵中的j行i列个元素即可。矩阵求逆,由于平差计算中需要求逆的矩阵一般为实对称正定矩阵,为了提高大型矩阵的计算效率,可以使用对实对称正定矩阵求逆的方法。设C为n阶对称正定矩阵,y、x为n维向量,
8、其关系式为:y=C·x(3-1)确定了上的一个映像,如能写出逆关系:x=B·y(
此文档下载收益归作者所有