Linear Algebra and the C Language/a0l5


Install and compile this file in your working directory.

/* ------------------------------------ */
/*  Save as:   c00a.c                  */
/* ------------------------------------ */
#include "v_a.h" 
/* ------------------------------------ */
/* ------------------------------------ */
#define ARRAY  A3
/* ------------------------------------ */
#define RC    RC3
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **Q = r_Q_mR( i_mR(RC,RC), 9);

double **u[ARRAY];
int i,j;

  for(i=A0; i<ARRAY; i++)
     {
       u[i] = i_mR(RC,C1);      
       c_c_mR(Q,(i+C1),u[i],C1); 
      }     
  
  
  clrscrn();
  printf(" Orthonormal basis:\n\n");
 
  for(i=A0; i<ARRAY; i++)
     {
	  printf(" u[%d]:",i);      
      p_mR(u[i], S5,P4,C6); 
     } 
  stop();
 
 
  clrscrn();    
  for(i=A0; i<ARRAY; i++)

	  printf(" ||u[%d]|| = %.4f:\n",i,norm_R(u[i]));      
 
     
  printf(" \n\n\n"
         "      <u,v> = v^t u\n\n");


  for(i=A0; i<ARRAY; i++) 
  
    for(j=A0; j<ARRAY; j++) 
    
      if(i!=j)     
      
        printf(" <u[%d],u[%d]> = %+.4f\n",i,j, dot_R(u[i],u[j]));


  for(i=A0; i<ARRAY; i++)
   
       f_mR(u[i]); 
        
        
  f_mR(Q);
}
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun();

} while(stop_w());

  return 0;
}

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

Screen output example:

                                                                                       
 Orthonormal basis:

 u[0]:
+0.1980 
+0.6931 
+0.6931 

 u[1]:
-0.8995 
+0.4094 
-0.1524 

 u[2]:
-0.3894 
-0.5933 
+0.7045 

 Press return to continue. 


 ||u[0]|| = 1.0000:
 ||u[1]|| = 1.0000:
 ||u[2]|| = 1.0000:
 


      <u,v> = v^t u

 <u[0],u[1]> = -0.0000
 <u[0],u[2]> = +0.0000
 <u[1],u[0]> = -0.0000
 <u[1],u[2]> = +0.0000
 <u[2],u[0]> = +0.0000
 <u[2],u[1]> = +0.0000

 Press   return to continue
 Press X return to stop