测绘程序设计课程实习报告Word文档格式.docx

上传人:b****5 文档编号:16025672 上传时间:2022-11-17 格式:DOCX 页数:37 大小:115.18KB
下载 相关 举报
测绘程序设计课程实习报告Word文档格式.docx_第1页
第1页 / 共37页
测绘程序设计课程实习报告Word文档格式.docx_第2页
第2页 / 共37页
测绘程序设计课程实习报告Word文档格式.docx_第3页
第3页 / 共37页
测绘程序设计课程实习报告Word文档格式.docx_第4页
第4页 / 共37页
测绘程序设计课程实习报告Word文档格式.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

测绘程序设计课程实习报告Word文档格式.docx

《测绘程序设计课程实习报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《测绘程序设计课程实习报告Word文档格式.docx(37页珍藏版)》请在冰豆网上搜索。

测绘程序设计课程实习报告Word文档格式.docx

#include<

math.h>

string>

usingnamespacestd;

constdoublepi=;

intmain()

{

fstreamfile("

a.txt"

);

//概念文件操作对象

stringaa;

file>

>

aa;

cout<

aa<

endl;

//输出文件中的内容

inta=1;

//概念重复输入利用的变量

while(a)//限制循环,重复输入

{

floata1,a2,a3;

cout<

doubledeg;

"

输入度"

cin>

a1;

输入分"

a2;

输入秒"

a3;

角度为"

a1<

°

"

a2<

′"

a3<

″"

    if(a1>

=0)//判定输入度数的正负

deg=a1+a2/60+a3/3600;

else

deg=a1-a2/60-a3/3600;

doubleradian;

    radian=deg/180*pi;

转换得弧度为"

radian<

输入弧度:

    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;

}

转换后角度为"

″"

    

}

return0;

3.运行结果

输入度

20

输入分

55

输入秒

32

角度为20°

55′32″

 

转化后角度为179°

54′″

Pressanykeytocontinue

4.显现的问题

角度转换进程中需要考虑角度的正负号问题,角度转化能够添加是不是超过59的判定。

(二)实习2(概率计算)

1.预备

在误差查验、粗差探测等平差计算中常常需要计算某些特定散布函数的反函数值,为知足计算需要,利用CProbability类对相关计算进行封装。

2.代码及运行结果与书上相同。

(三)实习3(矩阵大体运算)

矩阵的运算有加法、减法、乘法、转置、求逆,封装在一个类中。

为了方便以后的计算与利用,类中还添加了从文件中读入矩阵、输出矩阵,向操纵台输入输出矩阵的函数。

代入运算的矩阵均用动态的一维数组表示。

先概念double型指针,在确信矩阵大小后动态申请空间,row行col列的矩阵概念为:

double*mat=newdouble[row*col];

第i行j列的元素为mat[i*col+j]。

矩阵的加法、减法只需遍历两个矩阵的每一个元素,相加以后放到结果矩阵中(如有必要先判定相加的两矩阵行数与列数是不是相等)。

乘法计算中设相成的两个矩阵mat一、mat2的行列别离为row一、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-1)写成

......

......(3-3)

.......

......

因C对称正定,必有

0,用

除式(3-3)第一个方程的两头,解出

,把

的位置互换,并将

代入其他各式得

......

......(3-4)

事实上式(3-4)能够改写为

......+

........(3-5)

若是对式(3-5)中的变量按如下规那么从头编号

(3-6)

经n次变换后恢恢复状,采纳变量循环从头编号法的计算公式如下:

关于

由于变量循环从头编号法求逆均在下三角阵(包括对角元素)进行,因此运行速快,在大型矩阵的计算中能够专门好的适用。

矩阵运算的函数封装在类mat中,函数在mat.h中概念,在mat.cpp中实现。

2.代码

文件mat.h:

#include<

classmat

public:

voidadd(introw,intcol,doublem[],doublen[],doubleresult[]);

//加法

voidsub(introw,intcol,doublem[],doublen[],doubleresult[]);

//减法

double*multiply(introw,intcol,intcol2,doublem[],doublen[]);

//乘法

voidtrans(introw,intcol,doublem[],doubleresult[]);

//转置

boolinverse(doublea[],intn);

//求逆

voidfileIn(ifstream&

in,intsize,double*mat);

//从文件中读入

voidfileOut(ofstreamout,introw,intcol,double*mat);

//向文件输出

voidoutPut(introw,intcol,double*mat);

//向操纵台输出

voidinPut(introw,intcol,double*mat);

//从操纵台输入

intij(inti,intj)//下三角矩阵元素判定

return(i>

=j)?

i*(i+1)/2+j:

j*(j+1)/2+i;

};

文件mat.cpp:

#include"

mat.h"

voidmat:

:

add(introw,intcol,doublem[],doublen[],doubleresult[])

for(inti=0;

i<

row*col;

i++)

result[i]=m[i]+n[i];

sub(introw,intcol,doublem[],doublen[],doubleresult[])

result[i]=m[i]-n[i];

double*mat:

multiply(introw,intcol,intcol2,doublem[],doublen[])

inti,j,k;

double*result=newdouble[row*col2];

for(i=0;

row;

for(j=0;

j<

col2;

j++)

result[i*col2+j]=0;

for(k=0;

k<

col;

k++)

result[i*col2+j]+=m[i*col+k]*n[k*col2+j];

returnresult;

trans(introw,intcol,doublem[],doubleresult[])

inti,j;

double*temp=newdouble[row*col];

result[i*row+j]=m[j*col+i];

boolmat:

inverse(doublemat[],intn)

inti;

intj;

intk;

double*c=newdouble[n];

for(k=0;

n;

doublec11=mat[0];

if(c11+==)

delete[]c;

returnfalse;

for(i=1;

doubleai0=mat[i*(i+1)/2];

if(i<

=n-k-1)

c[i]=-ai0/c11;

else

c[i]=ai0/c11;

for(j=1;

=i;

mat[(i-1)*i/2+j-1]=mat[i*(i+1)/2+j]+ai0*c[j];

}

mat[(n-1)*n/2+i-1]=c[i];

mat[n*(n+1)/2-1]=

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 学科竞赛

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1