文档详情

GPS卫星位置计算(C语言).doc

发布:2018-03-04约3.06千字共3页下载文档
文本预览下载声明
#include stdio.h #include math.h #include stdlib.h #define bGM84 3.986005e14 #define bOMEGAE84 7.2921151467e-5 void main() { long double roota=0.515365263176E+04; //轨道长半轴的平方根(根号a) long double toe=0.720000000000E+04; //观测时刻toe long double m0=-0.290282040486E+00; //参考时刻toe的平近点角 long double e=0.678421219345E-02; //轨道偏心率e long double delta_n=0.451411660250E-08;//卫星的摄动改正数△n long double smallomega=-0.258419417299E+01;//近地点角距ω long double cus=0.912137329578E-05;//纬度幅角正弦调和项改正的振幅(弧度) long double cuc=0.189989805222E-06;//纬度幅角余弦调和项改正的振幅(弧度) long double crs=0.406250000000E+01;//轨道半径的余弦调和项改正的振幅(m) long double crc=0.201875000000E+03;//轨道半径的正弦调和项改正的振幅(m) long double cis=0.949949026108E-07;//轨道倾角的余弦调和项改正的振幅(弧度) long double cic=0.130385160446E-07;//轨道倾角的正弦调和项改正的振幅(弧度) long double idot=-0.253939149013E-09;//轨道倾角变化率I long double i0=0.958512160302E+00; //轨道倾角(弧度) long double bigomega0=-0.137835982556E+01;//升交点赤经 long double earthrate=bOMEGAE84; //地球自转的速率we long double bigomegadot=-0.856928551657e-08; long double t=0.720000000000E+04; //加入卫星钟差改正的归化时间 long double A; long double n0=0,n,tk; long double mk,ek,tak,ik,omegak,phik,uk,rk; long double corr_u,corr_r,corr_i; long double xpk,ypk,xk,yk,zk; int i; printf(输入的数据:\n); printf(√a=%e \n,roota); printf(toe=%e \n,toe); printf(e=%e \n,e); printf(i0=%e \n,i0); printf(ω=%e \n,smallomega); printf(△n=%e \n,delta_n); printf(Ω0=%e \n,bigomega0); printf(I=%e \n,idot); printf(Cuc=%e \n,cuc); printf(Cus=%e \n,cus); printf(Crc=%e \n,crc); printf(Crs=%e \n,crs); printf(Cic=%e \n,cic); printf(Cis=%e \n,cis); printf(\n\n输出的结果为: \n,e); A=roota*roota; n0=sqrt(bGM84/(A*A*A));//平均角速度n0 printf(n0=%.10lf \n,n0); tk=t-toe;//相对于参考时刻toe的归化时间tk printf(tk=%.10lf \n,tk); n=n0+delta_n;//加摄动改正后的卫星平均角速度 printf( n=%.10lf \n,n); mk=m0+n*tk;//卫星平近点角 printf(mk=%.10lf \n,mk); ek=mk; for(i=0;i10;i++) ek=mk+e*sin(ek);//利用迭代法求偏近点角ek printf(ek=%.10lf \n,ek); tak=atan2(sqrt(1.0-e*e)*sin(ek)
显示全部
相似文档