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

📄 aaz_qr_r2b.c

📁 一些矩阵运算的C代码实现:矩阵一般运算
💻 C
字号:
/*         .h         freeware           http://groups.yahoo.com/group/mathc/ */

/* --------------------------------- INCLUDES ------------------------------- */
#include "y_ahfile.h"
/* ------------------------------------- FUNCTION --------------------------  */
/* Do    :                                                                    */
/*                                                                            */
/* -------------------------------------------------------------------------- */
void AB(
int a)
{
int n;
int m;
int i;
complexZ det;

double pba [MXR][MXC];mZ  A={MXR,MXC,&pba [0][0]};
double pbQ [MXR][MXC];mZ  Q={MXR,MXC,&pbQ [0][0]};
double pbR [MXR][MXC];mZ  R={MXR,MXC,&pbR [0][0]};
double pbQR[MXR][MXC];mZ QR={MXR,MXC,&pbQR[0][0]};

                 i = rndp_I(3);

     A.rows = a;            A.cols = a*C2+i*C2;
     Q.rows = a;            Q.cols = a*C2;
     R.rows = a;            R.cols = a*C2+i*C2;
    QR.rows = a;           QR.cols = a*C2+i*C2;
/*-------------------------------- PROGRAM ---------------------------------- */
  do
  {
               rnd_mZ(&A,3);
          det = det_Z(&A);
  }while( (!det.r) && (!det.i));

   clrscrn();
   printf(" Copy/Past into the octave windows  \n");
   printf(" or into a m file.              \n\n\n");
   printf(" #! octave-interpreter-name -qf\n");
   printf(" # a sample Octave program\n\n");
   p_mZ_octave(&A,"A");
   printf("  [Q, R]  = qr(A); \n\n");
   printf("   Q \n");
   printf("   R \n");
   getchar();

   clrscrn();
   QR_mZ(&A,&Q,&R);
   printf("                                          A : ");
   p_mZ(&A);
   printf("                                          Q : ");
   p_mZ(&Q);
   printf("                                          R : ");
   p_mZ(&R);
   printf("\n");
   p_innerprod_c_mZ(&Q,'q');
   p_norm_c_mZ(&Q,'q');
   getchar();

   clrscrn();
   printf("                                          A : ");
   p_mZ(&A);
   printf("                                     A = QR : ");
   mul_mZ(&Q,&R,&QR);
   p_mZ(&QR);
}

void hello(void)
{
  printf("\n Freeware by : xhunga bernard 06000 Nice France.  ");
  printf("\n\n\n\n                                          \n");
  printf("              QR Decomposition,                   \n");
  printf("                  A = QR                          \n");
  printf("                  ******                            ");
  printf("\n\n\n \n\n\n\n\n\n\n\n                             ");
  
  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 > 3){n=3;}}
else
 {  n = rndp_I(3);}
if( n < 2){n=2;}

  AB(n);

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

  return 0;
}

⌨️ 快捷键说明

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