Linear Algebra and the C Language/a088


Install and compile this file in your working directory.

/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define   RA R3
#define   CA C4
#define   Cb C1
/* ------------------------------------ */
/* ------------  Chemistry ------------ */
void p_xn_mR(
double **b
)
{
 int r;

 for(r=R1; r<b[R_SIZE][C0];    r++)

    printf("double x%d = %+0.8f;\n",r,b[r][C2]);

 printf("\n\n");
}
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double ab[RA*(CA+C1)]={
//  x1   x2   x3   x4      b
     1,   0,  -1,  -0,     0, //C
     4,   0,  -0,  -2,     0, //H
     0,   2,  -2,  -1,     0, //O      
};

double **Ab      = ca_A_mR(ab,i_Abr_Ac_bc_mR(RA,CA,Cb));
double **Ab_free = i_Abr_Ac_bc_mR(csize_A_R(Ab),csize_A_R(Ab),Cb+C1);
double **b_free  = i_mR(rsize_R(Ab_free),csize_b_R(Ab_free)); 

  clrscrn();
  printf(" Ab :");
  p_mR(Ab,S10,P4,C10);

  printf(" Ab :  gj_PP_mR(Ab,NO) :");
  gj_PP_mR(Ab,NO);
  p_mR(Ab,S10,P4,C10);

  put_zeroR_mR(Ab,Ab_free);  
  printf(" Ab_free : put_zeroR_mR(Ab,Ab_free);");  
  p_mR(Ab_free,S10,P4,C10);  
  
  put_freeV_mR(Ab_free);
  printf(" Ab_free : put_freeV_mR(Ab_free);");  
  p_mR(Ab_free,S10,P4,C10);  
  stop();
  
  clrscrn();      
  printf(" Ab_free : gj_PP_mR(Ab_free,YES);");
  gj_PP_mR(Ab_free,YES);    
  p_mR(Ab_free,S10,P4,C10);  

  c_Ab_b_mR(Ab_free,b_free);
  
  printf(" b_free : free variables");
  p_freeV(b_free,S8,P8);
  printf("Copy/Paste These code in the c00b.c file.\n\n");
  p_xn_mR(b_free);
  stop();

  f_mR(Ab);
  f_mR(Ab_free);
  f_mR(b_free);
  
  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
  • The values ​​for calculating the coefficients of the chemical equation are given in a list.
  • You need to copy the list of these values ​​into the following file: c00b.c.

Screen output example:

 Ab :
   +1.0000    +0.0000    -1.0000    +0.0000    +0.0000 
   +4.0000    +0.0000    +0.0000    -2.0000    +0.0000 
   +0.0000    +2.0000    -2.0000    -1.0000    +0.0000 

 Ab :  gj_PP_mR(Ab,NO) :
   +1.0000    +0.0000    +0.0000    -0.5000    +0.0000 
   +0.0000    +1.0000    -1.0000    -0.5000    +0.0000 
   -0.0000    -0.0000    +1.0000    -0.5000    -0.0000 

 Ab_free : put_zeroR_mR(Ab,Ab_free);
   +1.0000    +0.0000    +0.0000    -0.5000    +0.0000    +0.0000 
   +0.0000    +1.0000    -1.0000    -0.5000    +0.0000    +0.0000 
   -0.0000    -0.0000    +1.0000    -0.5000    -0.0000    +0.0000 
   +0.0000    +0.0000    +0.0000    +0.0000    +0.0000    +0.0000 

 Ab_free : put_freeV_mR(Ab_free);
   +1.0000    +0.0000    +0.0000    -0.5000    +0.0000    +0.0000 
   +0.0000    +1.0000    -1.0000    -0.5000    +0.0000    +0.0000 
   -0.0000    -0.0000    +1.0000    -0.5000    -0.0000    +0.0000 
   +0.0000    +0.0000    +0.0000    +1.0000    +0.0000    +1.0000 

 Press return to continue. 


 Ab_free : gj_PP_mR(Ab_free,YES);
   +1.0000    +0.0000    +0.0000    +0.0000    +0.0000    +0.5000 
   +0.0000    +1.0000    +0.0000    +0.0000    +0.0000    +1.0000 
   +0.0000    +0.0000    +1.0000    +0.0000    +0.0000    +0.5000 
   +0.0000    +0.0000    +0.0000    +1.0000    +0.0000    +1.0000 

 b_free : free variables
 x1 =  +0.00000000 +0.50000000*u
 x2 =  +0.00000000 +1.00000000*u
 x3 =  +0.00000000 +0.50000000*u
 x4 =  +0.00000000 +1.00000000*u

Copy/Paste These code in the c00b.c file.

double x1 = +0.50000000;
double x2 = +1.00000000;
double x3 = +0.50000000;
double x4 = +1.00000000;


 Press return to continue.