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

📄 xxpid4.h

📁 基本矩阵运算 : + - *, power, transpose, trace, determinant, minor, matrix of minor, cofactor, matrix of co
💻 H
字号:
/* xxpid4.h                     freeware                   xhunga@tiscali.fr  */

/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */


/* See   :  mtrxid.zip, Bgauss0 .c, Cgauss0 .c, Cinv0 .c.                     */
/* -------------------------------------------------------------------------- */
void idF4(
PmF mID,
PmF m)
{
     int row1;
     int row2;
     int i;
     int n;
fraction f;

double pIDT1[MXR][MXC*C2];mF mIDT1={MXR,MXC*C2,&pIDT1[0][0]};
double pIDT2[MXR][MXC*C2];mF mIDT2={MXR,MXC*C2,&pIDT2[0][0]};
double pbT  [MXR][MXC*C2];mF mT   ={MXR,MXC*C2,&pbT  [0][0]};
double pbT2 [MXR][MXC*C2];mF mT2  ={MXR,MXC*C2,&pbT2 [0][0]};

 n = m->rows;
                 mIDT1.rows=n;               mIDT1.cols=n*C2;
                 mIDT2.rows=n;               mIDT2.cols=n*C2;
                    mT.rows=n;                  mT.cols=n*C2;
                   mT2.rows=n;                 mT2.cols=n*C2;
/*--------------------------------------------------------------------  gauss */
 copy_mF(m,&mT2);
    id_mF(mID);

for (i = 0 ; i < m->rows ; i++)
{
 copy_mF(&mT2,m);
for (row1 = 0 ; row1 < m->rows - i; row1++)
{
 id_mF(&mIDT1);
 for (row2 = row1+1 ; row2 < m->rows ; row2++)
 {
 (*(mIDT1.pb+row2 *mIDT1.cols+row1*C2)) = \
   (-(*(m->pb+row2     *m->cols+row1*C2)))  ;

 (*(mIDT1.pb+row2 *mIDT1.cols+row1*C2+1)) =  \
     (*(m->pb+row2   *m->cols+row1*C2+1));
 }

 f.n =  *(m->pb+row1   *m->cols+row1*C2    );
 f.d =  *(m->pb+row1   *m->cols+row1*C2+1);

 pivotzeroF(f);

 if(f.n < 0 )
 {
 f.n = -1 * (f.n);
 f.d = -1 * (f.d);
 }

 for (row2 = row1  ; row2 < m->rows ; row2++)
 {
 *(mIDT1.pb+row2 *mIDT1.cols+row1*C2    ) *=   f.d;
 *(mIDT1.pb+row2 *mIDT1.cols+row1*C2+1) *=   f.n;
 }

 copy_mF(      m, &mT);
 mul_mF(&mIDT1,&mT,m );
}
 copy_mF(mID,  &mIDT2);
 mul_mF(&mIDT2,&mIDT1, mID);
}

}


/* --------------------------------- FUNCTION ------------------------------  */
/* Do    :                                                                    */
/*                                                                            */


/* See   :  mtrxid.zip, Bgauss0 .c, Cgauss0 .c, Cinv0 .c.                     */
/* -------------------------------------------------------------------------- */
void idF4a(
PmF mID,
PmF m)
{
     int row1;
     int row2;
     int i;
     int n;

double pIDT1[MXR][MXC*C2];mF mIDT1={MXR,MXC*C2,&pIDT1[0][0]};
double pIDT2[MXR][MXC*C2];mF mIDT2={MXR,MXC*C2,&pIDT2[0][0]};
double pbT  [MXR][MXC*C2];mF mT   ={MXR,MXC*C2,&pbT  [0][0]};
double pbT2 [MXR][MXC*C2];mF mT2  ={MXR,MXC*C2,&pbT2 [0][0]};

 n = m->rows;

                 mIDT1.rows=n;               mIDT1.cols=n*C2;
                 mIDT2.rows=n;               mIDT2.cols=n*C2;
                    mT.rows=n;                  mT.cols=n*C2;
                   mT2.rows=n;                 mT2.cols=n*C2;
/*-------------------------------------------------------------------- jordan */
 copy_mF(m,&mT2);
    id_mF(mID);

for (i = 0 ; i < m->rows-1 ; i++)
{
  copy_mF(&mT2,m);
  for (row1 = m->rows-1 ; row1 - i>0 ; row1--)
   {
    id_mF(&mIDT1);
    for (row2 = 0 ; row2 < row1 ; row2++)
    {
     (*(mIDT1.pb+row2 *mIDT1.cols+row1*C2)) = \
      -(*(m->pb+row2     *m->cols+row1*C2));

      *(mIDT1.pb+row2 *mIDT1.cols+row1*C2+1) = \
        *(m->pb+row2     *m->cols+row1*C2+1);
     }
      copy_mF(       m,  &mT);
      mul_mF(&mIDT1, &mT, m );
   }
 copy_mF(mID,  &mIDT2);
 mul_mF(&mIDT2,&mIDT1, mID);
}
}


⌨️ 快捷键说明

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