当前位置:首页 > dem 数字高程内插程序
#include
///////////////////////////////////////////////////////////////////读 void Read(FILE *fp,Point points[10]) { int i,j; double Double[10][3]; if((fp=fopen(\ printf(\路径错误,请重新输入!\ for(i=0;i<10;i++) for(j=0;j<3;j++) fscanf(fp,\ for(i=0;i<10;i++) { points[i].X=Double[i][0]; points[i].Y=Double[i][1]; points[i].Z=Double[i][2]; } fclose(fp); }
//////////////////////////////////////////////////////////////////////逆阵 void MTPMRR(double MTPM[][6],double MTPMR[][6]) { int i,j,h,k,n=6; double P,Q[6][12]; for(i=0;i for(h=k=0;k //////////////////////////////////////////////////////////////////////////////////////写 void Write(FILE *fp,Point points[10],double W[10][10],double Xp,double Yp,double Zp) { int i,j; if((fp=fopen(\ fprintf(fp,\输出文件不存在!\ fprintf(fp,\参考点坐标是:\\n\ for(i=0;i<10;i++) fprintf(fp,\,points[i].Z); fprintf(fp,\ fprintf(fp,\权矩阵是:\\n\ for(i=0;i<10;i++) { for(j=0;j<10;j++) fprintf(fp,\ fprintf(fp,\ } fprintf(fp,\待定点坐标是:\\n\ fprintf(fp,\ fclose(fp); } void M_M(double A[6][10],double B[10][10],double C[6][10]) { int i,j,k; for(i=0;i<6;i++) { for(j=0;j<10;j++) { C[i][j]=0; for(k=0;k<10;k++) C[i][j]+=(A[i][k]*B[k][j]); } } } void M_M(double A[6][10],double B[10][6],double C[6][6]) { int i,j,k; for(i=0;i<6;i++) { for(j=0;j<6;j++) { C[i][j]=0; for(k=0;k<10;k++) C[i][j]+=(A[i][k]*B[k][j]); } } } void M_M(double A[6][10],double B[10][1],double C[6][1]) { int i,j,k; for(i=0;i<6;i++) { for(j=0;j<1;j++) { C[i][j]=0; for(k=0;k<10;k++) C[i][j]+=(A[i][k]*B[k][j]); } } } ////////////////////////////////////////////////////////main() void main() { FILE *fp; int i,j,k; int Select; Point points[10]; double M[10][6],MT[6][10],W[10][10],Z[10][1],MTP[6][10]; double MTPM[6][6],MTPMR[6][6],MTPZ[6][1],XX[6][1],X[10],Y[10]; double Xp,Yp,Zp; printf(\请选择操作(1--4):\\n\ printf(\==========\\n\\n\ printf(\使用移动拟合法求解待定点(110,110)的高程值\\n\ printf(\使用移动拟合法求解由您输入的任何待定点(X,Y)的高程值\\n\ printf(\使用移动拟合法求解Pending_Data.txt文件中多个待定点的高程值\\n\ printf(\退出:只有选择4时才退出程序!\\n\ printf(\==========\\n\loop: scanf(\ switch(Select) { case 1: { printf(\你选择的是: 1 使用移动拟合法求解待定点(110,110)的高程值!\\n\ Xp=110.0; Yp=110.0; Read(fp,points); for(i=0;i<10;i++) { X[i]=points[i].X-Xp;///////////////////////////////////X,Y 存放的是差值 Y[i]=points[i].Y-Xp; Z[i][0]=points[i].Z; } for (i = 0; i < 10; i++) { M[i][0] = X[i] * X[i];
共分享92篇相关文档