Linear Algebra and the C Language/a0n0


Install and compile this file in your working directory.

/* ------------------------------------ */
/*  Save as :  c02d.c                   */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define   RA R2
#define   CA C2

#define   RX R2
#define   CX C1
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double a[RA*CA]={
    +3, -2,  
    +2, -2
};

double x_B[RX*CX]={
    +1,   
    +2
};

double b[RA*CA]={
    +2, +4,   
    +3, +5
};

double **A     = ca_A_mR(a,       i_mR(RA,CA));
double **B     = ca_A_mR(b,       i_mR(RA,CA));
double **x_b   = ca_A_mR(x_B,     i_mR(RX,CX));
double **x_s   =  mul_mR(B,x_b,   i_mR(RX,CX));
double **T     =                  i_mR(RA,CX) ;
double **invB  =  inv_mR(B,       i_mR(RA,CA));
double **invBA =  mul_mR(invB,A,  i_mR(RA,CA));
double **D     =  mul_mR(invBA,B, i_mR(RA,CA));
double **Dx_b  =  mul_mR(D,x_b,   i_mR(RA,CX));
  
  clrscrn();
  printf(" In the Standard basis the linear application is:\n\n" 
         " With A :");
  p_mR(A,S6,P2,C7);
  
  printf(" And x_s:");
  p_mR(x_s,S6,P2,C7);
  
  printf(" T(x_s) = A x_s");
  p_mR(mul_mR(A,x_s,T),S8,P2,C7);

  stop();
  
  clrscrn();
   printf(" In the \"B\" basis the linear application is: \n\n"
         " With D:     (InvB A B)");
  p_mR(D,S7,P2,C7); 
  
  printf(" And x_b:");
  p_mR(x_b,S7,P2,C7);
  
  printf(" [T(x_b)]_b = D x_b");
  p_mR(mul_mR(D,x_b,Dx_b),S8,P2,C7);
  stop();   
    
  clrscrn(); 
  
  printf("               A                    \n"
         "       x_s -----------> T(x_s)      \n" 
         "        ^                 ^         \n"
         "        |                 |         \n"
         "     B  |                 |   B     \n"
         "        |       D         |         \n"
         "       x_b -----------> [T(x_b)]_b\n\n"
         
         " Verify if:  B [T(x_b)]_b = T(x_s)\n\n");         
         
  printf(" B [T(x_b)]_b:");
  p_mR(mul_mR(B,Dx_b,T),S8,P2,C7);
  
  printf(" T(x_s):");
  p_mR(mul_mR(A,x_s,T),S8,P2,C7);       
  stop();
  
  f_mR(A);
  f_mR(B);
  f_mR(D);  
  
  f_mR(x_b);
  f_mR(x_s);
  f_mR(T);  
  
  f_mR(invB);  
  f_mR(invBA);  

  f_mR(Dx_b);
    
  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */

Screen output example:

                                                                                       
 In the Standard basis the linear application is:

 With A :
 +3.00  -2.00 
 +2.00  -2.00 

 And x_s:
+10.00 
+13.00 

 T(x_s) = A x_s
   +4.00 
   -6.00 

 Press return to continue. 


 In the "B" basis the linear application is: 

 With D:     (InvB A B)
  -4.00   -9.00 
  +2.00   +5.00 

 And x_b:
  +1.00 
  +2.00 

 [T(x_b)]_b = D x_b
  -22.00 
  +12.00 

 Press return to continue. 


               A                    
       x_s -----------> T(x_s)      
        ^                 ^         
        |                 |         
     B  |                 |   B     
        |       D         |         
       x_b -----------> [T(x_b)]_b

 Verify if:  B [T(x_b)]_b = T(x_s)

 B [T(x_b)]_b:
   +4.00 
   -6.00 

 T(x_s):
   +4.00 
   -6.00 

 Press return to continue.