秩亏自由网平差-辽工大实验报告.docVIP

  • 45
  • 0
  • 约3.02千字
  • 约 4页
  • 2019-02-28 发布于河北
  • 举报
秩亏自由网平差-辽工大实验报告

秩亏自由网平差(水准网) 1.实验目的 1.掌握秩亏自由网平差的函数模型及原理; 2.提高编制程序、使用相关软件的能力;? 3.熟练使用秩亏自由网准则处理测量数据。 2.实验地点 辽宁工程技术大学计算机实验室 3.实验原理 秩亏自由网平差模型式(1-1-1),即 (1-1-1) 式中:。在下,由误差方程式可组成法方程为 (1-1-2) 因秩。为奇异,且式为相容方程组,不唯一,为求其最优解,引入最小范数准则,即求得法方程(1-1-2)的最小范数解 (1-1-3) (1-1-4) 因阵对称,故最小范数逆可按式(1-1-4)计算,则上式为 (1-1-5) 式(1-1-3)、(1-1-5)为秩亏自由网平差模型(1-1-1)的最优解,N的最小范数逆不唯一,可以在满足式(1-1-3)的条件下任意选择,但其解唯一。 4.精度评定 单位权方差估值仍为 (1-1-6) 其中:为平差自由度,即平差问题的多余观测数。 的协因数由式(1-1-3)和式(1-1-5)得 (1-1-7) 5.程序设计 5.1、设计CLeve 类 class CLeve { public: double **b,**bt,*l,**nmn,**Qxx,*v,*x,*w,*h,*H0; int m,n,r,**pp; public: void fun(); void xn(); void WriteData(); void ReadData(); void Wl(); void MatInvG(); void MatInv(double **b,double **bn,int r); CLeve(); virtual ~CLeve(); }; 5.2、各个函数的实现(见程序:) //读文件 ,给h H0 赋值 void CLeve::ReadData() {int i; FILE *fp; CFileDialog MyFileDlg(TRUE,NULL,NULL,0,文本文件(*.txt)|*.txt||); if(MyFileDlg.DoModal()==IDOK) {fp=fopen(MyFileDlg.GetFileName(),r); if(fp==NULL) {AfxMessageBox(文件没有打开!);return;} fscanf(fp,%d%d%d,m,n,r);pp=new int*[m]; for(i=0;im;i++) pp[i]=new int[2]; h=new double[m];H0=new double[n];//求H0 int xx;for(i=0;in;i++) fscanf(fp,%d%lf,xx,H0[i]);//求h for(i=0;im;i++) fscanf(fp,%d%d%lf,pp[i][0],pp[i][1],h[i]);fclose(fp);}} //组成误差方程式组 b l void CLeve::fun() {int i,j,p1,p2;b=new double*[m]; for(i=0;im;i++)b[i]=new double[n]; l=new double[m];//计算B和l for(i=0;im;i++) for(j=0;jn;j++) {b[i][j]=0.0;} for(i=0;im;i++) { p1=pp[i][0];p2=pp[i][1]; b[i][p1-1]=-1.0;b[i][p2-1]=1.0; l[i]=(H0[p1-1]+h[i]-H0[p2-1])*1000.0;}//计算b的转置BT bt=new double*[n]; for(i=0;in;i++) bt[i]=new double[m]; for(i=0;im;i++) for(j=0;jn;j++)bt[j][i]=b[i][j];} 5.3、在菜单中实现计算 void CAdjustDoc::OnAdjustA() { CLeve js; js.ReadData(); js.fun(); js.MatInvG(); js.Wl(); js.xn(); js.WriteData(); AfxMessageBox( 计算完成!); } 5.4、观测数据和已知数据的存储在

文档评论(0)

1亿VIP精品文档

相关文档