Linear Algebra and the C Language/a0d6


Install and compile this file in your working directory.

/* ------------------------------------ */
/*  Save as :  c00b.c                   */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define   RCA        RC3
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **A             = rsymmetric_mR(            i_mR(RCA,RCA),999.);

double **EigsVector    =     eigs_V_mR(A,          i_mR(RCA,RCA));
double **T_EigsVector  =  transpose_mR(EigsVector, i_mR(RCA,RCA)); 
double **EigsValue     =                           i_mR(RCA,RCA);

double **T             =                           i_mR(RCA,RCA);

  clrscrn();
  
  printf(" A :");
  p_mR(A,S10,P2,C6);  
    
/* EigsValue = T_EigsVector * A * EigsVector */ 
  mul_mR(T_EigsVector,A,T);
  mul_mR(T,EigsVector,EigsValue);   

/* A = EigsVector * EigsValue * T_EigsVecto */ 
  mul_mR(EigsVector,EigsValue,T);
  mul_mR(T,T_EigsVector,A);  

  printf(" EigsVector:");  
  p_mR(EigsVector,S10,P4,C6);
  
  printf(" EigsValue:");  
  p_mR(EigsValue,S10,P4,C6);
    
  printf(" A = EigsVector * EigsValue * T_EigsVector");  
  p_mR(A,S10,P2,C6);     
   
  f_mR(A);
    
  f_mR(EigsVector);
  f_mR(T_EigsVector);
  
  f_mR(EigsValue);  
     
  f_mR(T);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun();

} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


Screen output example:

                                                                                       
 A :
   -525.00    -851.00    -325.00 
   -851.00    -329.00    +454.00 
   -325.00    +454.00    -785.00 

 EigsVector:
   +0.6956    +0.3766    -0.6119 
   +0.6964    -0.1437    +0.7032 
   -0.1769    +0.9152    +0.3622 

 EigsValue:
-1294.3363    +0.0000    -0.0000 
   +0.0000  -990.0335    -0.0000 
   -0.0000    -0.0000  +645.3698 

 A = EigsVector * EigsValue * T_EigsVector
   -525.00    -851.00    -325.00 
   -851.00    -329.00    +454.00 
   -325.00    +454.00    -785.00 


 Press   return to continue
 Press X return to stop