Linear Algebra and the C Language/a0l6


Install and compile this file in your working directory.

/* ------------------------------------ */
/*  Save as:   c00b1.c                  */
/* ------------------------------------ */
#include "v_a.h" 
/* ------------------------------------ */
/* ------------------------------------ */
#define   RC RC4
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **B    =   r_Q_mR(          i_mR(RC,RC), 9);
double **invB = invgj_mR(B,        i_mR(RC,RC));

double **x_S  =     r_mR(          i_mR(RC,C1),9.);
double **x_B  =   mul_mR(invB,x_S, i_mR(RC,C1));
      
  clrscrn();
  printf(" B is the basis change matrix for the basis \"B\" \n\n"
         " B:             orthonormal matrix");
  p_mR(B, S10,P4,C7);
  
  printf("invB:              invB = transpose of B");
  p_mR(invB, S10,P4,C7);
  stop();  
   
  clrscrn();
  printf(" x_S: Standart basis");      
  p_mR(x_S, S10,P4,C6); 
  
  printf("  Compute x_S in the B basis:\n\n"
         " x_B         = invB x_S:");
  p_mR(x_B, S10,P4,C7);   
  
  f_mR(x_S);        
  f_mR(B);
  f_mR(invB);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun();

} while(stop_w());

  return 0;
}

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

Screen output example:

                                                                                       
 B is the basis change matrix for the basis "B" 

 B:             orthonormal matrix
   -0.7127    -0.6589    +0.1069    -0.2156 
   +0.4454    -0.2490    -0.2341    -0.8275 
   -0.5345    +0.6107    -0.4776    -0.3364 
   +0.0891    -0.3618    -0.8400    +0.3944 

invB:              invB = transpose of B
   -0.7127    +0.4454    -0.5345    +0.0891 
   -0.6589    -0.2490    +0.6107    -0.3618 
   +0.1069    -0.2341    -0.4776    -0.8400 
   -0.2156    -0.8275    -0.3364    +0.3944 

 Press return to continue. 


 x_S: Standart basis
   +9.0000 
   -1.0000 
   -9.0000 
   +4.0000 

  Compute x_S in the B basis:

 x_B         = invB x_S:
   -1.6927 
  -12.6247 
   +2.1352 
   +3.4917 


 Press   return to continue
 Press X return to stop