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