Linear Algebra and the C Language/a0ik


Install and compile this file in your working directory.

/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
double **X_rdefinite_negative_mR(
double **A,
int      n
)
{
int r = rsize_R(A);

double **Q      =       r_Q_mR(        i_mR(r,r),n);
double **QT     = transpose_mR(Q,      i_mR(r,r));
double **D      =    rpdiag_mR(        i_mR(r,r),n);
double **sD     =      smul_mR(-1,D,   i_mR(r,r));
double **QsD    =       mul_mR(Q,sD,   i_mR(r,r));

          mul_mR(QsD,QT,A);

  f_mR(Q);
  f_mR(QT);
  f_mR(D);
  f_mR(sD);
  f_mR(QsD);
  
 return(A);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int r)
{
double **A      = rdefinite_negative_mR(   i_mR(r,r), 99);
double **EValue =               eigs_mR(A, i_mR(r,C1));

  clrscrn();  
  printf(" A: Definite negative");
  p_mR(A,S12,P6,C6);
  
  printf(" Eigenvalues: eigs_mR(A,EValue);");
  p_mR(EValue,S9,P3,C1);

  f_mR(A);
  f_mR(EValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun(RC4);

} while(stop_w());

  return 0;
}

/* ------------------------------------ */
/* ------------------------------------ */


Screen output example:

                                                                                       
 A: Definite negative
  -78.330108    -4.507399    +1.932481    -6.255194 
   -4.507399   -96.187775    -6.213357    +3.707445 
   +1.932481    -6.213357   -72.667087    +3.618887 
   -6.255194    +3.707445    +3.618887   -76.815030 

 Eigenvalues: eigs_mR(A,EValue);
  -99.000 
  -85.000 
  -70.000 
  -70.000 


 Press   return to continue
 Press X return to stop