测量程序设计的基本函数ppt课件.ppt
,测量程序设计,第1章 常用计算及辅助函数1-1 概述一、课程主要内容第一章 常用辅助函数第二章 法方程式的解算第三章 常用大地测量计算第四章 高程网平差(水准网平差)第五章 平面控制网平差(导线网平差)第六章 GPS基线网平差(二维约束平差),第一章 常用计算及辅助函数,二、软件开发的一般步骤(1)需求分析(2)系统设计(3)编写代码(4)系统测试(5)系统维护三、作业问题,第一章 常用计算及辅助函数,1-2角度格式的相互化算一、度、分、秒转换弧度为方便和规则起见,通常在输入角度时采用度分秒连写的形式,如“53312.78”输入时为“53.031278”。分、秒的整数部分都要补齐两位。函数名称:Double dms_rad(Double a),第一章 常用计算及辅助函数,private double dms_radc(double a)/提取符号 double sign=(a 0)?-1.0:1.0;a=System.Math.Abs(a);/提取整度 int dd=(int)(System.Math.Floor(a);a=a-dd;/if(a 0.0)dd=dd-1;a=a+10000;/提取角度值整分、秒 int mm=(int)System.Math.Floor(a*100.0);a=(a*100.0-mm)*100.0;/if(a0.0)dd=dd-1;a=a+10000;a=sign*(dd*3600.0+mm*60.0+a)/const1.p2;return a;,第一章 常用计算及辅助函数,二、弧度转换为度分秒 public double rad_dmsc(double a)/提取符号 double sign=(a 60)a=0;m=m+1;if(m=60)m=0;d=d+1;a=d+m/100.0+a/10000.0;return a;,第一章 常用计算及辅助函数,1.3 坐标方位角的计算一、C#中函数 ATAN 和 ATAN2的区别二坐标计算方位角注意问题:与数学上坐标系的关系考虑特殊情况,例如:北坐标差等于0的情况单位问题不能大于360或2角度是弧度表示的,我们通常用度分秒表示。,第一章 常用计算及辅助函数,public double xyazimuth(double x1,double y1,double x2,double y2)double cc=1,cx,cy;cx=x2-x1;cy=y2-y1;if(cx=0)if(cy 0)cc=const1.P/2.0;else cc=const1.P*1.5;else cc=System.Math.Atan2(cy,cx);if(cy 0,第一章 常用计算及辅助函数,可以用math.PI来代替。,这里可以用Atan来代替。,double a=cc;a=a*57.2957795130823;int d=(int)(System.Math.Floor(a);a=a-d;int m=(int)System.Math.Floor(a*60.0);a=(a-m/60.0)*3600.0;if(a+0.0001 60)a=0;m=m+1;if(m=60)m=0;d=d+1;a=d+m/100.0+a/10000.0;cc=a;return cc;,第一章 常用计算及辅助函数,三、坐标方位角的推算注意问题:考虑起始方位角的方向问题;考虑方位角的取值范围,不能大于360。,第一章 常用计算及辅助函数,1.4 关于矩阵存储及相乘的问题在测量数据处理问题中,经常出现系数矩阵(误差方程或条件方程、法方程)中存在大量零元素,即系数矩阵形式,为节省计算机内存采用一位存储。矩阵如果满足称为对称矩阵。,第一章 常用计算及辅助函数,1、对称矩阵存储为了节省空间仅存下三角矩阵元素这里下三角共有 个元素,可以用一维数组来存储,矩阵元素在一维数组中按行的先后顺序排列,每行从0列到对角线元素为止。,第一章 常用计算及辅助函数,第一章 常用计算及辅助函数,double a=new double n*(n+1)/2;/创建一维存储矩阵。,一维数组a存放对称阵的下三角的n*(n-1)/2个元素,2、aij在一维数组中的位置 aij为下三角阵,第一章 常用计算及辅助函数,aij为上三角阵,由于aij=aji,这样,对称矩阵A中的元素与其一维存储数组a中的元素对应关系为,第一章 常用计算及辅助函数,/对称矩阵下标计算函数int ij(int i,int j)return(i=j)?i*(i+1)/2+j:j*(j+1)/2+i;,第一章 常用计算及辅助函数,二、矩阵相乘(传播),BQBT 的计算,Q为对称阵计算公式 设B为 矩阵,Q为 矩阵,用N来表示其乘积:N的计算公式为,第一章 常用计算及辅助函数,主要代码 for(int i=0;ir;i+)for(int j=0;j=i;j+)double nij=0.0;for(int k=0;kn;k+)for(int s=0;sn;s+)nij+=Bi*n+k*Qij(k,s)*Bj*n+s;Nij(i,j)+=nij;,算例,第一章 常用计算及辅助函数,第二章 法方程式的解算(对称正定阵求逆)常见法方程解算的方法有 高斯消去法:用于一般法方程的解算。变量循环重新编号法 用于一般法方程的解算 平方根法:用于一般法方程的解算。改进平方根法:用于附有未知数的条件平差或附有条件的间接平差。共轭斜量法:系数矩阵稀疏且具有准对角阵性(有一定带宽)。H变换:系数误差较大,需要迭代趋近。,第一章 常用计算及辅助函数,一、变量循环重新编号法(解对称正定阵求逆)A为对称正定矩阵,用“变量循环重新编号法”经过n次变换得到A-1,计算如下:,第一章 常用计算及辅助函数,第一章 常用计算及辅助函数,主要代码for(int k=0;k n;k+)for(int i=0;in;i+)double ai0=ai*(i+1)/2;if(i=n-k-1)a0i=-ai0/a00;else a0i=ai0/a00;,第一章 常用计算及辅助函数,for(int j=1;j=i;j+)a(i-1)*i/2+j-1=ai*(i+1)/2+j+ai0*a0j;for(i=1;i n;i+)a(n-1)*n/1+i-1=a0i;an*(n+1)/2-1=1.0/a00;,算例,第一章 常用计算及辅助函数,