⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 normdd_s.c

📁 GPS数据处理源代码
💻 C
字号:
normdd_s.c

void edit_norm_dd(icon,idN0,id_slips,N0t,slips_t,am,lo,idlo,idN00,N00,N0tb,
                  m00,ici,c_dd,an,b1,an_s,b1_s,ltpl,ltpl_s,
                  an_s1,b1_s1,ltpl_s1,an_k,b1_k,ltpl_k)
int icon[I10*Isat],ici[Iunknown];
long idN0[Iunknown],id_slips[Islips],N0t[Iunknown];
double slips_t[Islips],am[Isato*Ista*Iunknown],lo[Isato*Ista];
long idlo[Iunknown],idN00[Iunknown],N0tb[Iunknown];
double N00[Iunknown],m00;
double c_dd[Nlow],an[Nlow],b1[N],an_s[Nlow],b1_s[N],*ltpl,*ltpl_s;
double an_k[Nlow],b1_k[N],an_s1[Nlow],b1_s1[N],*ltpl_k,*ltpl_s1;
/* 函数 edit_norm 应用从 eq_dd_s.c 输入的矩阵重新排列观测方程 */ 
{
     long i,j,j1,j2,k,k1;
     double sum,sum1;
/* 删掉未知数和应用已知数解并组成 idN00,用3 sigm删除obs.,为dd 数据设权矩阵 */
     j1 = 2*(icon[200] + 1);
     for (i=0;i<icon[200];i++) 
      { for (j=0;j<=i;j++) 
         { c_dd[j+i*(i+1)/2] = -1./j1;
           if(j==i) c_dd[j+i*(i+1)/2] = ((double)icon[200])/j1;}}
/* 初始化 an[], b1[], *ltpl, an_k[], b1_k[], *ltpl_k */
     for (i=0;i<Iunknown;i++) 
      {for(j=0;j<=i;j++) {an[j+i*(i+1)/2]=0.;an_k[j+i*(i+1)/2] = 0.;}
        b1[i] = 0.; b1_k[i]=0.;}
       *ltpl = 0.; *ltpl_k = 0.;
/* 组成法方程, dd 数据形式,计算 N = amT*P*am和 B1 = amT*P*lo */
     j1 = 2*(icon[200] + 1);
     for (i=0;i<icon[201];i++) 
      { for (j=0;j<=i;j++) 
         { sum = 0.; 
           for (k=0;k<icon[200];k++) 
            { for (k1=0;k1<icon[200];k1++) 
              { j2 = -1; if(k==k1) j2 = icon[200];
                sum += am[i+k*Iunknown]*j2*am[j+k1*Iunknown]; }} 
           an[j+i*(i+1)/2] = sum/j1; }
        sum1 = 0.; 
        for (j=0;j<icon[200];j++) 
     { for (k=0;k<icon[200];k++) 
       {   j2 = -1; if(j==k) j2 = icon[200];
           sum1 += am[i+j*Iunknown]*j2*lo[k]; }}
        b1[i] = sum1/j1; }              
     sum = 0.;
     for (j=0;j<icon[200];j++) 
     { for (k=0;k<icon[200];k++) 
       { j2 = -1; if(j==k) j2 = icon[200];
         sum += lo[j]*j2*lo[k]; }}
     *ltpl = sum/j1;
        for (i=0;i<icon[201];i++) 
        { for (j=0;j<=i;j++) 
          {   an_s[j+i*(i+1)/2]+=an[j+i*(i+1)/2];
              an_s1[j+i*(i+1)/2]=an_s[j+i*(i+1)/2]; }
           b1_s[i]+=b1[i]; b1_s1[i]=b1_s[i]; }              
        *ltpl_s += *ltpl; *ltpl_s1 = *ltpl_s; icon[202]+=icon[200];
        if(icon[202]>=10000){icon[202]-=10000; icon[207]+=1;}
/* 为控制输出数据 */
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -