Aller au contenu

Mathc complexes/a222

Un livre de Wikilivres.


Application


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


c00c.c
/* ------------------------------------ */
/*  Save as :   c00c.c                  */
/* ------------------------------------ */
#include "w_a.h"  
/* ------------------------------------ */
/* ------------------------------------ */
#define   RA     R4
#define   CA     C5
#define   Cb     C1
/* ------------------------------------ */
#define   RAFree R5
#define   CbFree 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(RAFree,CA,CbFree) ;
double **b_Free = i_mZ(RAFree,CbFree);
double **AbFree = i_mZ(RA,CbFree);

  clrscrn();
  printf("Find a basis for the orthogonal complement of 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();

  clrscrn(); 
  printf(" gj_PP_mZ(Ab) :");
  p_mZ(gj_PP_mZ(Ab), S7,P3, S7,P3, C5); 
  stop();

  clrscrn();     
  put_zeroR_mZ(Ab,Ab_New); 
  put_freeV_mZ(Ab_New);
  printf(" put_zero_row_mZ(Ab,Ab_New);\n"
         " put_freeV_mZ(Ab_New);\n\n"
         " Ab_New :");
  p_mZ(Ab_New, S7,P3, S7,P3, C5); 
  stop(); 
 
  clrscrn(); 
  printf(" gj_mZ(Ab) :");
  p_mZ(gj_mZ(Ab_New), S7,P3, S7,P3, C5);  

  printf(" new_b : Free variables");  
  p_mZ(c_Ab_b_mZ(Ab_New,b_Free), S8,P4, S8,P4, C4);  
  stop();

  clrscrn();
  printf(" A :");
  p_mZ(A, S3,P0, S3,P0, C8);
  printf(" b_Free :"); 
  p_mZ(b_Free, S8,P4, S8,P4, C4); 
  printf(" A * b_Free :"); 
  p_mZ(mul_mZ(A,b_Free,AbFree), S8,P4, S8,P4, C4); 
  stop();
  
  f_mZ(Ab);
  f_mZ(A);
  f_mZ(b);
  f_mZ(Ab_New);
  f_mZ(b_Free);
  f_mZ(AbFree);  
}
/* ------------------------------------ */
int main(void)
{

  fun();

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


On commence par calculer les variables libres.

Les colonnes de b_free sont une base pour le complément orthogonal de A.

         A * b_free = 0

Cela prouve que les vecteurs lignes de A sont orthogonaux aux vecteurs colonnes de b_free.


Exemple de sortie écran :
 -----------------------------------------
Find a basis for the orthogonal complement of A :

 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. 


 -----------------------------------------
 gj_PP_mZ(Ab) :
 +1.000 -0.000i  +0.200 -0.600i  +0.776 -0.506i  +0.471 +0.118i  +0.765 -1.059i 
 +0.000 +0.000i  +1.000 +0.000i  +0.368 -1.383i  -0.997 +0.869i  +0.616 -1.405i 
 +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i  -0.000 -0.000i  +0.000 +0.000i 
 +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i  -0.000 -0.000i  +0.000 +0.000i 

 +0.000 +0.000i 
 +0.000 +0.000i 
 +0.000 +0.000i 
 +0.000 +0.000i 

 Press return to continue. 


 -----------------------------------------
 put_zero_row_mZ(Ab,Ab_New);
 put_freeV_mZ(Ab_New);

 Ab_New :
 +1.000 -0.000i  +0.200 -0.600i  +0.776 -0.506i  +0.471 +0.118i  +0.765 -1.059i 
 +0.000 +0.000i  +1.000 +0.000i  +0.368 -1.383i  -0.997 +0.869i  +0.616 -1.405i 
 +0.000 +0.000i  +0.000 +0.000i  +1.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i 
 +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i  +1.000 +0.000i  +0.000 +0.000i 
 +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i  +1.000 +0.000i 

 +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i 
 +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i 
 +0.000 +0.000i  +1.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i 
 +0.000 +0.000i  +0.000 +0.000i  +1.000 +0.000i  +0.000 +0.000i 
 +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i  +1.000 +0.000i 

 Press return to continue. 


 -----------------------------------------
 gj_mZ(Ab) :
 +1.000 +0.000i  -0.000 +0.000i  -0.000 +0.000i  -0.000 +0.000i  +0.000 +0.000i 
 +0.000 +0.000i  +1.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i  +0.000 -0.000i 
 +0.000 +0.000i  +0.000 +0.000i  +1.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i 
 +0.000 -0.000i  +0.000 +0.000i  +0.000 +0.000i  +1.000 +0.000i  +0.000 +0.000i 
 +0.000 -0.000i  +0.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i  +1.000 -0.000i 

 -0.000 +0.000i  -1.533 +0.008i  -0.149 +0.654i  -1.484 +0.408i 
 +0.000 +0.000i  -0.368 +1.383i  +0.997 -0.869i  -0.616 +1.405i 
 +0.000 +0.000i  +1.000 +0.000i  +0.000 +0.000i  +0.000 +0.000i 
 +0.000 +0.000i  -0.000 +0.000i  +1.000 +0.000i  +0.000 +0.000i 
 +0.000 +0.000i  -0.000 -0.000i  +0.000 -0.000i  +1.000 +0.000i 

 new_b : Free variables
 -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 

 Press return to continue. 


 -----------------------------------------
 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_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 

 A * b_Free :
 +0.0000 +0.0000i  +0.0000 -0.0000i  -0.0000 -0.0000i  +0.0000 -0.0000i 
 +0.0000 +0.0000i  +0.0000 +0.0000i  -0.0000 +0.0000i  +0.0000 -0.0000i 
 +0.0000 +0.0000i  +0.0000 -0.0000i  -0.0000 -0.0000i  +0.0000 -0.0000i 
 +0.0000 +0.0000i  +0.0000 -0.0000i  -0.0000 -0.0000i  +0.0000 +0.0000i 

 Press return to continue.