📄 lufinv.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 + -