Linear Algebra and the C Language/a0d8


Code study: eigs_V_mR();

  • You must use the algoritm of free variables .
  • GJ_PP_FreeV_mR(); displays a null row, introduces the free variable, solves the system, and returns a free vector.
  • The for loop allows you to calculate all vectors.
/* ------------------------------------ */
/* ------------------------------------ */
double **eigs_V_mR(
double **A,
double **V
)
{
int i;	
int r = rsize_R(A);
	
double **EigsValue =         i_mR(r,C1);

double **Ab        = i_Abr_Ac_bc_mR(r,r,C1);
double **b         =         i_mR(r,C1);
double **b_free    =         i_mR(r,r);

double **Ide       =  eye_mR(i_mR(r,r));
double **sIde      =         i_mR(r,r);
double **AmnssIde  =         i_mR(r,r);

  eigs_mR(A,EigsValue);                         // Compute the eignvalues
  
  for(i = R1; i <= rsize_R(EigsValue); i++)
  {  
          smul_mR(EigsValue[i][C1],Ide,sIde);    //  A - λ Id
           sub_mR(A,sIde,AmnssIde);
                                                 //         Ab 
      c_A_b_Ab_mR(AmnssIde,b,Ab);                //  A - λ Id|0       
   
   GJ_PP_FreeV_mR(Ab,b_free);                    // b_free = an eignvector 
   
           c_c_mR(b_free,C2,V,i);                // copy an eignvector into V
  }    
   
  Normalize_mR(V);  

  f_mR(EigsValue);

  f_mR(Ab);
  f_mR(b);
  f_mR(b_free); 
   
  f_mR(Ide);
  f_mR(sIde);
  f_mR(AmnssIde);
  
  return(V);
}
/* ------------------------------------ */
/* ------------------------------------ */