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

📄 lufinv.c

📁 [[ Complex Matrices : Language c]]
💻 C
字号:
/* gjid03.c                         freeware                   xhunga@tiscali.fr
*/

/* --------------------------------- INCLUDES ------------------------------- */
#include "y_ahfile.h"

/* ------------------------------------- FUNCTION --------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* -------------------------------------------------------------------------- */
void gjA(int n)
{
complexF z_det;

double pbA   [MXR][MXC*C4];mzF mA   ={MXR,MXC*C4,&pbA   [0][0]};
double pbL   [MXR][MXC*C4];mzF mL   ={MXR,MXC*C4,&pbL   [0][0]};
double pbU   [MXR][MXC*C4];mzF mU   ={MXR,MXC*C4,&pbU   [0][0]};
double pbT   [MXR][MXC*C4];mzF mT   ={MXR,MXC*C4,&pbT   [0][0]};
double pbinvA[MXR][MXC*C4];mzF minvA={MXR,MXC*C4,&pbinvA[0][0]};
double pbinvL[MXR][MXC*C4];mzF minvL={MXR,MXC*C4,&pbinvL[0][0]};
double pbinvU[MXR][MXC*C4];mzF minvU={MXR,MXC*C4,&pbinvU[0][0]};
double pbID  [MXR][MXC*C4];mzF mID  ={MXR,MXC*C4,&pbID  [0][0]};

                     mA.rows=n;      mA.cols=n*C4;
                     mL.rows=n;      mL.cols=n*C4;
                     mU.rows=n;      mU.cols=n*C4;
                     mT.rows=n;      mT.cols=n*C4;
                  minvA.rows=n;   minvA.cols=n*C4;
                  minvL.rows=n;   minvL.cols=n*C4;
                  minvU.rows=n;   minvU.cols=n*C4;
                    mID.rows=n;     mID.cols=n*C4;
/*-------------------------------- PROGRAM ---------------------------------- */
  do
  {
   if(n==4) rnd_mzF(&mA,2,1);
   if(n==3) rnd_mzF(&mA,2,2);
   if(n==2) rnd_mzF(&mA,3,3);

   z_det = det_zF(&mA);

  }while( (!z_det.r.n) && (!z_det.i.n));

  clrscrn();
  printf("                                                          A :");
  p_mizF3(&mA);
  LU_mzF(&mA,&mL,&mU);
  printf("                                                          L :");
  p_mizF3(&mL);
  printf("                                                          U :");
  p_mizF3(&mU);
  printf("                                                         LU_mzF :");
  mul_mzF(&mL,&mU,&mT);
  p_mizF3(&mT);
  getchar();

  clrscrn();
  printf("                                                       invA :");
  inverse_mzF(&mA,&minvA);
  p_mizF3(     &minvA);
  printf("                                                       invL :");
  inverse_mzF(&mL,&minvL);
  p_mizF3(     &minvL);
  printf("                                                       invU :");
  inverse_mzF(&mU,&minvU);
  p_mizF3(     &minvU);
  printf("                                           invA = invU invL :");
  mul_mzF(&minvU,&minvL,&mT);
  p_mizF3(&mT);

}

void hello(void)
{
  printf("\n Freeware by : xhunga bernard 06000 Nice France.\n");
  printf("\n\n\n                                              ");
  printf("\n            invA = invU invL.                     ");
  printf("\n            ****************                    \n");
  printf("\n The size of mA : 2x2 ... 4x4.                  \n");
  printf("\n           ex : \"LUFinv.exe\"                  \n");
  printf("\n You can choose the size :                      \n");
  printf("\n           ex : \"LUFinv.exe 2\" -> mA 2x2        ");
  printf("\n                \"LUFinv.exe 3\" -> mA 3x3        ");
  printf("\n                \"LUFinv.exe 4\" -> mA 4x4        ");
  printf("\n\n                                                ");
  printf("\n Distributed  by :  http://www.simtel.net/        ");
  printf("\n                                                  ");
  printf("\n Press return to continue                         ");
  printf("\n                                                  ");

  getchar();
}

/* --------------------------------- MAIN ----------------------------------- */
int main(int argc, char *argv[])
{
time_t t;
int    n;

/*-------------------------------- PROGRAM ---------------------------------- */
  srand(time(&t));
  hello();
do
{
if( argc == 2 && atoi(argv[1]))
 {  n = atoi(argv[1]); if( n > 4){n=4;}}
else
 {  n = rndp_I(4);}
if( n < 2){n=2;}


  gjA(n);


printf("\n Press 'X' Return to stop\n");
} while(toupper(getchar())!='X');

  return 0;
}

⌨️ 快捷键说明

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