Aller au contenu

Mathc complexes/a175

Un livre de Wikilivres.


Application

Installer et compiler ce fichier dans votre répertoire de travail.

c00e.c
/* ------------------------------------ */
/*  Save as :  c00e.c                   */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define  ARRAY  C2 
#define  RCA  R3 
/* ------------------------------------ */
void fun(void)
{
double **A[ARRAY];
double **InvA[ARRAY];

double **P    =   r_mZ(  i_mZ(RCA,RCA),99); 
double **InvP = inv_mZ(P,i_mZ(RCA,RCA)   );

double **T =       i_mZ(RCA,RCA);
double **P_1_InvA0_P = i_mZ(RCA,RCA);
int c;

  for(c=A0; c<ARRAY; c++)
     {   
         A[c]  = i_mZ(RCA,RCA); 
       InvA[c] = i_mZ(RCA,RCA);   
	   }
	    
  r_mZ(A[A0],99);	    
	     
  mul_mZ(InvP,A[A0],T); 
  mul_mZ(T,P,A[A0+A1]);

  clrscrn();
  printf(" The two similar matrices :\n\n"
         " A[%d] = InvP A[%d] P   \n\n",A1,A0);
  for(c=A0; c<ARRAY; c++)
     {
	  printf(" A[%d] : ",c);      
      p_mZ(A[c],S12,P4,S12,P4,C6); 
     }   
  stop();    

  clrscrn();     
  printf(" The inverse of the two similar matrices : \n\n");    
    for(c=A0; c<ARRAY; c++)
     {
	  printf(" InvA[%d] : ",c
	  );      
      pE_mZ(inv_mZ(A[c],InvA[c]),S12,P4,S11,P4,C6); 
     } 
  stop();    

  clrscrn();     
  mul_mZ(InvP,InvA[A0],T); 
  mul_mZ(T,P,P_1_InvA0_P);
     
  printf(" InvA[%d] = InvP InvA[%d] P        (A[1] = InvP A[0] P)\n\n",
         A1,A0); 
  printf(" InvA[%d] : ",A1);      
  pE_mZ(InvA[1],S12,P4,S11,P4,C6); 
  printf(" InvP InvA[%d] P : ",A0);      
  pE_mZ(P_1_InvA0_P,S12,P4,S11,P4,C6); 

  for(c=A0; c<ARRAY; c++)
     { 
	   f_mZ(A[c]);
	   f_mZ(InvA[c]);
	   }
	   
  f_mZ(P);		 
  f_mZ(InvP); 	   
  f_mZ(T); 
  f_mZ(P_1_InvA0_P);       
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));
  
  do{
        fun();
        
  }while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Si A[1] = InvP A[0] P ... alors ... InvA[1] = InvP InvA[0] P

Exemple de sortie écran :

 The two similar matrices :

 A[1] = InvP A[0] P   

 A[0] : 
    -88.0000    +36.0000i     -78.0000    -12.0000i     +21.0000    +17.0000i 
     +8.0000    +85.0000i     +42.0000    +76.0000i     +51.0000    +26.0000i 
    +98.0000    -76.0000i     -56.0000    +75.0000i     -87.0000     -2.0000i 

 A[1] : 
    +29.3749   +142.5389i    -177.0063   -606.7219i    -327.8084   -280.7610i 
   +148.2414   -144.6806i    -209.4131   +466.8237i     +39.7959   +418.8332i 
    -75.1317    +96.3394i    +508.7957   -635.9898i     +47.0382   -499.3626i 

 Press return to continue. 


 The inverse of the two similar matrices : 

 InvA[0] : 
 +3.3501e-03+1.6641e-02i  +1.6448e-02-4.7116e-03i  +8.7594e-03+6.6236e-03i 
 -1.6875e-02-5.9677e-03i  -5.7674e-03+8.0026e-03i  -8.7157e-03-1.5699e-03i 
 +3.4416e-02+4.3216e-03i  +1.0535e-02-3.0041e-02i  +1.0963e-02-6.9458e-03i 

 InvA[1] : 
 +1.4868e-01+6.7654e-02i  +5.5874e-02-3.1234e-02i  -8.0195e-02+3.6468e-02i 
 -7.1333e-02-7.9290e-02i  -3.8038e-02+8.5581e-03i  +6.1143e-02+2.2031e-03i 
 +4.7838e-02+2.0458e-01i  +7.4828e-02+2.3189e-02i  -1.0210e-01-5.8514e-02i 

 Press return to continue. 


 InvA[1] = InvP InvA[0] P        (A[1] = InvP A[0] P)

 InvA[1] : 
 +1.4868e-01+6.7654e-02i  +5.5874e-02-3.1234e-02i  -8.0195e-02+3.6468e-02i 
 -7.1333e-02-7.9290e-02i  -3.8038e-02+8.5581e-03i  +6.1143e-02+2.2031e-03i 
 +4.7838e-02+2.0458e-01i  +7.4828e-02+2.3189e-02i  -1.0210e-01-5.8514e-02i 

 InvP InvA[0] P : 
 +1.4868e-01+6.7654e-02i  +5.5874e-02-3.1234e-02i  -8.0195e-02+3.6468e-02i 
 -7.1333e-02-7.9290e-02i  -3.8038e-02+8.5581e-03i  +6.1143e-02+2.2031e-03i 
 +4.7838e-02+2.0458e-01i  +7.4828e-02+2.3189e-02i  -1.0210e-01-5.8514e-02i 


 Press   return to continue
 Press X return to stop