Mathc matrices/a10

Un livre de Wikilivres.


Étude du code


Installer et compiler ces fichiers dans votre répertoire de travail.


e05.c
/* ------------------------------------ */
/*  Save as :   f01.c                 */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */ 
void XX_p_freeV(
double **b,
int e,
int d)
{
 int m;
 int r;
 int c;
char v;

 m = 0;

 for(r=R1; r<b[R_SIZE][C0];    r++)
  {
   v = 'y' - (b[R_SIZE][C0]-C1);

   printf("\n");
   m++;
   printf(" x%d = ",m);

   for(c=C1; c<b[C_SIZE][C0]; c++)
      {
       if(c==C1) printf(" %+*.*f",e,d,b[r][c]);
       else
         {
          if(fabs(b[r][c])>ERROR_E) printf(" %+*.*f*%c",e,d,b[r][c],v);
          else                      printf(" %+*.*f*%c",e,d,0.,v);
          v++;
         }
      }
  }
   printf("\n");
}
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double ab[R4*C7]={
    +1,     -3,     +4,     -2,    +5,    +4,  0,
    +2,     -6,     +9,     -1,    +8,    +2,  0,
    +2,     -6,     +9,     -1,    +9,    +7,  0, 
    -1,      3,     -4,      2,    -5,    -4,  0,  
};

double **Ab = ca_A_mR(ab,i_Abr_Ac_bc_mR(R4,C6,C1));
double **A  = c_Ab_A_mR(Ab,i_mR(R4,C6));
double **b  = c_Ab_b_mR(Ab,i_mR(R4,C1));

double **Ab_free = i_Abr_Ac_bc_mR(csize_A_R(Ab),csize_A_R(Ab),C1+C3);

double **b_free  = i_mR(rsize_R(Ab_free),csize_b_R(Ab_free)); 

int r;

  clrscrn();
  printf(" Ab :");
  p_mR(Ab,S6,P1,C10);
  printf(" Ab :  gj_PP_mR(Ab,NO) :");
  gj_PP_mR(Ab,NO);
  p_mR(Ab,S6,P1,C10);
  stop();
  
  clrscrn();  
  put_zeroR_mR(Ab,Ab_free);  
  printf(" Ab_free : put_zeroR_mR(Ab,Ab_free);");  
  p_mR(Ab_free,S6,P1,C10);  
  stop();
  
  clrscrn();  
  put_freeV_mR(Ab_free);
  printf(" Ab_free : put_freeV_mR(Ab_free);");  
  p_mR(Ab_free,S6,P1,C10);  
  stop();
  
  clrscrn();  
  r = rsize_R(Ab_free);
  while(r>R1)    
        zero_below_pivot_gj1Ab_mR(Ab_free,r--);
        
  printf(" Ab_free : zero_below_pivot_gj1Ab_mR(Ab_free,r--);");  
  p_mR(Ab_free,S6,P1,C10);  
  stop();	
  
  clrscrn();
  c_Ab_b_mR(Ab_free,b_free);
  printf(" b_free :"); 
  p_mR(b_free,S10,P0,C7);
  printf(" b_free : free variables");
  XX_p_freeV(b_free,S8,P0);
  stop();

  f_mR(Ab);
  f_mR(Ab_free);
  f_mR(b_free);
  f_mR(b);
  f_mR(A);
  
  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */




Exemple de sortie écran :
 ------------------------------------ 
 Ab :
  +1.0   -3.0   +4.0   -2.0   +5.0   +4.0   +0.0 
  +2.0   -6.0   +9.0   -1.0   +8.0   +2.0   +0.0 
  +2.0   -6.0   +9.0   -1.0   +9.0   +7.0   +0.0 
  -1.0   +3.0   -4.0   +2.0   -5.0   -4.0   +0.0 

 Ab :  gj_PP_mR(Ab,NO) :
  +1.0   -3.0   +4.5   -0.5   +4.0   +1.0   +0.0 
  -0.0   -0.0   +1.0   +3.0   -2.0   -6.0   -0.0 
  +0.0   +0.0   +0.0   +0.0   +1.0   +5.0   +0.0 
  +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0 

 Press return to continue. 


 ------------------------------------ 
 Ab_free : put_zeroR_mR(Ab,Ab_free);
  +1.0   -3.0   +4.5   -0.5   +4.0   +1.0   +0.0   +0.0   +0.0   +0.0 
  +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0 
  -0.0   -0.0   +1.0   +3.0   -2.0   -6.0   -0.0   +0.0   +0.0   +0.0 
  +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0 
  +0.0   +0.0   +0.0   +0.0   +1.0   +5.0   +0.0   +0.0   +0.0   +0.0 
  +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0 

 Press return to continue. 


 ------------------------------------ 

 Ab_free : put_freeV_mR(Ab_free);
  +1.0   -3.0   +4.5   -0.5   +4.0   +1.0   +0.0   +0.0   +0.0   +0.0 
  +0.0   +1.0   +0.0   +0.0   +0.0   +0.0   +0.0   +1.0   +0.0   +0.0 
  -0.0   -0.0   +1.0   +3.0   -2.0   -6.0   -0.0   +0.0   +0.0   +0.0 
  +0.0   +0.0   +0.0   +1.0   +0.0   +0.0   +0.0   +0.0   +1.0   +0.0 
  +0.0   +0.0   +0.0   +0.0   +1.0   +5.0   +0.0   +0.0   +0.0   +0.0 
  +0.0   +0.0   +0.0   +0.0   +0.0   +1.0   +0.0   +0.0   +0.0   +1.0 

 Press return to continue. 


 ------------------------------------ 

 Ab_free : zero_below_pivot_gj1Ab_mR(Ab_free,r--);
  +1.0   +0.0   +0.0   +0.0   +0.0   +0.0   +0.0   +3.0  +14.0  +37.0 
  +0.0   +1.0   +0.0   +0.0   +0.0   +0.0   +0.0   +1.0   +0.0   +0.0 
  +0.0   +0.0   +1.0   +0.0   +0.0   +0.0   +0.0   +0.0   -3.0   -4.0 
  +0.0   +0.0   +0.0   +1.0   +0.0   +0.0   +0.0   +0.0   +1.0   +0.0 
  +0.0   +0.0   +0.0   +0.0   +1.0   +0.0   +0.0   +0.0   +0.0   -5.0 
  +0.0   +0.0   +0.0   +0.0   +0.0   +1.0   +0.0   +0.0   +0.0   +1.0 

 Press return to continue. 

 ------------------------------------ 

 b_free :
        +0         +3        +14        +37 
        +0         +1         +0         +0 
        +0         +0         -3         -4 
        +0         +0         +1         +0 
        +0         +0         +0         -5 
        +0         +0         +0         +1 

 b_free : free variables
 x1 =        +0       +3*s      +14*t      +37*u
 x2 =        +0       +1*s       +0*t       +0*u
 x3 =        +0       +0*s       -3*t       -4*u
 x4 =        +0       +0*s       +1*t       +0*u
 x5 =        +0       +0*s       +0*t       -5*u
 x6 =        +0       +0*s       +0*t       +1*u
 Press return to continue.