Aller au contenu

Mathc complexes/04x

Un livre de Wikilivres.


Application


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


c00a.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "w_a.h"  
/* ------------------------------------ */
/* ------------------------------------ */
#define   RA     R4
#define   CA     C5
#define   Cb     C1
/* ------------------------------------ */
#define   CbFree Cb+C3
/* ------------------------------------ */
#define Cx       C3
#define Cy       C4
/* ------------------------------------ */
void fun(void)
{
double ab[RA*((CA+Cb)*C2)] ={
   +2*2,-9*2,  -5*2,-3*2,  -3*2,-8*2,  +2*2,-4*2,  -8*2,-9*2,   0,0,
   -3,  -3,    +4,  +3,    +1,  -9,    -9,  +2,    +1,  -7,     0,0, 
   +2*3,-9*3,  -5*3,-3*3,  -3*3,-8*3,  +2*3,-4*3,  -8*3,-9*3,   0,0,
   +2*7,-9*7,  -5*7,-3*7,  -3*7,-8*7,  +2*7,-4*7,  -8*7,-9*7,   0,0
};
                          
double **Ab     =   ca_A_mZ(ab, i_Abr_Ac_bc_mZ(RA,CA,Cb));
double **A      = c_Ab_A_mZ(Ab,           i_mZ(RA,CA));
double **b      = c_Ab_b_mZ(Ab,           i_mZ(RA,Cb));

double **Ab_New =               i_Abr_Ac_bc_mZ(CA,CA,CbFree) ;
double **b_Free =                         i_mZ(CA,CbFree);

double **cx        = i_mZ(CA,C1);
double **cy        = i_mZ(CA,C1);
double **cxplscy   = i_mZ(CA,C1);
double **A_cxplscy = i_mZ(RA,C1);

  clrscrn();
  printf(" Verify if the sum of two columns of b_free\n"
         " is orthogonal to A :\n\n");
  printf(" A :");
  p_mZ(A, S3,P0, S3,P0, C8);
  printf(" b :");
  p_mZ(b, S3,P0, S3,P0, C8);
  printf(" Ab :");
  p_mZ(Ab, S3,P0, S3,P0, C8);
  stop();

      gj_PP_mZ(Ab);
  put_zeroR_mZ(Ab,Ab_New); 
  put_freeV_mZ(Ab_New);
         gj_mZ(Ab_New); 
     c_Ab_b_mZ(Ab_New,b_Free); 

  c_c_mZ(b_Free,Cx,cx,C1);
  c_c_mZ(b_Free,Cy,cy,C1);
  add_mZ(cx,cy,cxplscy);
  mul_mZ(A,cxplscy,A_cxplscy);
  
  clrscrn();
  printf(" b_Free :"); 
  p_mZ(b_Free, S8,P4, S8,P4, C4); 
  printf(" C%d + C%d :",Cx,Cy);  
  p_mZ(cxplscy, S8,P4, S8,P4, C4);
  printf(" A * (C%d+C%d) :",Cx,Cy);   
  p_mZ(A_cxplscy, S8,P4, S8,P4, C4);
  stop();
  
  f_mZ(Ab);
  f_mZ(A);
  f_mZ(b);
  
  f_mZ(Ab_New);
  f_mZ(b_Free); 
}
/* ------------------------------------ */
int main(void)
{

  fun();

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


On peut sélectionner les colonnes de travail dans le code ci-dessous.

#define Cx     C3
#define Cy     C4


Exemple de sortie écran :
Verify if the sum of two columns of b_free

 A :
 +4-18i -10 -6i  -6-16i  +4 -8i -16-18i 
 -3 -3i  +4 +3i  +1 -9i  -9 +2i  +1 -7i 
 +6-27i -15 -9i  -9-24i  +6-12i -24-27i 
+14-63i -35-21i -21-56i +14-28i -56-63i 

 b :
 +0 +0i 
 +0 +0i 
 +0 +0i 
 +0 +0i 

 Ab :
 +4-18i -10 -6i  -6-16i  +4 -8i -16-18i  +0 +0i 
 -3 -3i  +4 +3i  +1 -9i  -9 +2i  +1 -7i  +0 +0i 
 +6-27i -15 -9i  -9-24i  +6-12i -24-27i  +0 +0i 
+14-63i -35-21i -21-56i +14-28i -56-63i  +0 +0i 

 Press return to continue. 


 b_Free :
 -0.0000 +0.0000i  -1.5326 +0.0083i  -0.1488 +0.6540i  -1.4844 +0.4083i 
 +0.0000 +0.0000i  -0.3684 +1.3830i  +0.9965 -0.8685i  -0.6159 +1.4048i 
 +0.0000 +0.0000i  +1.0000 +0.0000i  +0.0000 +0.0000i  +0.0000 +0.0000i 
 +0.0000 +0.0000i  -0.0000 +0.0000i  +1.0000 +0.0000i  +0.0000 +0.0000i 
 +0.0000 +0.0000i  -0.0000 -0.0000i  +0.0000 -0.0000i  +1.0000 +0.0000i 

 C3 + C4 :
 -1.6332 +1.0623i 
 +0.3806 +0.5363i 
 +0.0000 +0.0000i 
 +1.0000 +0.0000i 
 +1.0000 -0.0000i 

 A * (C3+C4) :
 -0.0000 -0.0000i 
 +0.0000 -0.0000i 
 -0.0000 -0.0000i 
 -0.0000 -0.0000i 

 Press return to continue.