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

📄 xeinprd1.h

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


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


/* see   :   matrxh.zip                                                       */
/* -------------------------------------------------------------------------- */
fraction innerprod_uDotv_uv(
PmF mu,
PmF mv
)
{
fraction InnerProduct;

double pbuv [MXR][MXC*C2];mF muv ={MXR,MXC*C2,&pbuv [0][0]};

                 muv.rows =1;    muv.cols =1*C2;

  if (mu->rows != 1 ||
      mu->cols != mv->rows * C2 ||
      mv->cols != C2
     )
    {
     printf(" uDotv_uv() error.\n\n");

     printf(" u.rows = 1\n");
     printf(" u.cols = v.rows\n");
     printf(" v.cols = 1\n");

     printf("\nPress Return to continue\n");
     getchar();
     exit(1);
    }

  mul_mF(mu,mv,&muv);

  InnerProduct.n = *(muv.pb+0 *muv.cols+0  );
  InnerProduct.d = *(muv.pb+0 *muv.cols+1  );

  return(InnerProduct);
}

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


/* see   :   matrxh.zip                                                       */
/* -------------------------------------------------------------------------- */
fraction innerprod_uDotv_uvT(
PmF mu,
PmF mv
)
{
fraction InnerProduct             ;
int      n           =  mu->cols / C2;

double pbvT   [MXR][MXC*C2];mF mvT   ={MXR,MXC*C2,&pbvT   [0][0]};
double pbuvT  [MXR][MXC*C2];mF muvT  ={MXR,MXC*C2,&pbuvT  [0][0]};

                 mvT.rows =n;       mvT.cols =  C2;
                muvT.rows =1;      muvT.cols =  C2;

  if (mu->rows != mv->rows ||
      mu->cols != mv->cols ||
      mu->rows != 1
     )
    {
     printf(" uDotv_uvT() error.\n\n");

     printf(" u.rows = v.rows\n");
     printf(" u.cols = v.cols\n");
     printf(" u.rows = 1\n");

     printf("\nPress Return to continue\n");
     getchar();
     exit(1);
    }

  transpose_mF(mv,&mvT);

  mul_mF(mu,&mvT,&muvT);

  InnerProduct.n = *(muvT.pb+0 *muvT.cols+0  );
  InnerProduct.d = *(muvT.pb+0 *muvT.cols+1  );

  return(InnerProduct);
}


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


/* see   :   matrxh.zip                                                       */
/* -------------------------------------------------------------------------- */
fraction innerprod_uDotv_vTu(
PmF mu,
PmF mv
)
{
fraction InnerProduct             ;
int      n           =  mu->rows;

double pbvT   [MXR][MXC*C2];mF mvT   ={MXR,MXC*C2,&pbvT   [0][0]};
double pbvT_u [MXR][MXC*C2];mF mvT_u ={MXR,MXC*C2,&pbvT_u [0][0]};

                  mvT.rows =1;      mvT.cols =n*C2;
                mvT_u.rows =1;    mvT_u.cols =1*C2;

  if (mu->rows != mv->rows ||
      mu->cols != mv->cols ||
      mu->cols != C2
     )
    {
     printf(" uDotv_vTu() error.\n\n");

     printf(" u.rows = v.rows\n");
     printf(" u.cols = v.cols\n");
     printf(" u.cols = 1\n");

     printf("\nPress Return to continue\n");
     getchar();
     exit(1);
    }

  transpose_mF(mv,&mvT);

  mul_mF(&mvT,mu,&mvT_u);

  InnerProduct.n = *(mvT_u.pb+0 *mvT_u.cols+0  );
  InnerProduct.d = *(mvT_u.pb+0 *mvT_u.cols+1  );

  return(InnerProduct);
}


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


/* see   :   matrxh.zip                                                       */
/* -------------------------------------------------------------------------- */
fraction innerprod_uDotv_vu(
PmF mu,
PmF mv
)
{
fraction InnerProduct             ;

double pbvu [MXR][MXC*C2];mF mvu ={MXR,MXC*C2,&pbvu [0][0]};

                mvu.rows =1;    mvu.cols =1*C2;

  if (mu->rows * C2 != mv->cols ||
      mu->cols          != C2   ||
      mv->rows          != 1
     )
    {
     printf(" uDotv_vu() error.\n\n");

     printf(" u.rows = v.cols\n");
     printf(" u.cols = 1\n");
     printf(" v.rows = 1\n");

     printf("\nPress Return to continue\n");
     getchar();
     exit(1);
    }

  mul_mF(mv,mu,&mvu);

  InnerProduct.n = *(mvu.pb+0 *mvu.cols+0  );
  InnerProduct.d = *(mvu.pb+0 *mvu.cols+1  );

  return(InnerProduct);
}

⌨️ 快捷键说明

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