Mathc complexes/a269

Un livre de Wikilivres.


Application


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


c00b.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define FACTOR_E        +1.E-2   
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int r)
{
double **A =              r_mZ(i_mZ(r,r),99);	
double **A_T = ctranspose_mZ(A,i_mZ(r,r));
double **V =                   i_mZ(r,r);
double **U =                   i_mZ(r,r);
double **U_T  =                i_mZ(r,r);  
double **U_TA =                i_mZ(r,r);  
double **S    =                i_mZ(r,r);  

double **V_T =                 i_mZ(r,r);
double **VS   =                i_mZ(r,r);
double **P    =                i_mZ(r,r);
double **Q    =                i_mZ(r,r);
double **QP   =                i_mZ(r,r);

  clrscrn();
  printf(" A :");
  p_mZ(A, S10,P2, S8,P2, C3);
      
  X_U_mZ(A_T,U,FACTOR_E);
  printf(" U :");
  p_mZ(U, S10,P4, S8,P4, C3);

  X_V_mZ(A_T,V,FACTOR_E);
  printf(" V :");
  p_mZ(V, S10,P4, S8,P4, C3); 
  
  ctranspose_mZ(U,U_T);
  
/* S = U_T * A * V */
   mul_mZ(  U_T,  A,    U_TA);       
   mul_mZ(U_TA,  V,  S);          
   
   printf(" S = U_T * A * V :");
   p_mZ(S, S10,P4, S9,P4, C3);
   
   stop();  

   clrscrn();
   ctranspose_mZ(V,V_T);
 
/* A =  (U * V_T) *(V * S * V_T) */
   mul_mZ(V,S,VS);       
   mul_mZ(VS,V_T, P);
        
   mul_mZ(U,V_T,  Q);
   
   mul_mZ(Q,P,   QP);
 
   printf(" P = V * S * V_T");
   p_mZ(P, S10,P2, S8,P2, C3);
   
   printf(" Q = U * V_T");
   p_mZ(Q, S10,P2, S8,P2, C3);
     
   printf(" A :");
   p_mZ(A, S10,P2, S8,P2, C3);
  
   printf(" A = QP      (U * V_T)  (V * S * V_T)");
   p_mZ(QP, S10,P2, S8,P2, C3);
         
   f_mZ(A);   
   f_mZ(A_T);

   f_mZ(V); 
   f_mZ(V_T);
     
   f_mZ(U);
   f_mZ(U_T);   
   f_mZ(U_TA); 
   f_mZ(S);
   f_mZ(VS);
   f_mZ(P);
   f_mZ(Q);
   f_mZ(QP);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
    fun(RC3);
    
} while(stop_w());

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


Exemple de sortie écran :
 ----------------------------------
  A :
    +28.00  -57.00i     +33.00  -68.00i     -75.00  +23.00i 
    +57.00  -34.00i     +11.00  +66.00i     -68.00  +16.00i 
    -62.00  +84.00i     -47.00  +66.00i      +8.00  +58.00i 

 U :
   -0.5635 +0.2927i    +0.1468 +0.0415i    +0.6211 -0.4335i 
   -0.2822 -0.1639i    +0.8234 +0.2432i    -0.3954 -0.0082i 
   +0.7003 +0.0000i    +0.4895 +0.0000i    +0.5196 +0.0000i 

 V :
   -0.1836 -0.6926i    -0.1256 +0.0052i    +0.3527 +0.5885i 
   -0.2794 -0.4787i    +0.4478 +0.4523i    -0.4525 -0.2879i 
   +0.4234 +0.0000i    +0.7609 +0.0000i    +0.4916 -0.0000i 

 S = U_T * A * V :
 +168.0554 +80.1647i    -0.0000  -0.0000i    +0.0000  -0.0000i 
   +0.0000  +0.0000i   -76.5330 +84.8788i    +0.0000  -0.0000i 
   +0.0000  +0.0000i    -0.0000  +0.0000i   -52.1518 +10.2219i 

 Press return to continue. 


 ----------------------------------
 P = V * S * V_T
    +60.54  +47.32i     +73.82  +44.57i      +5.42  -77.26i 
    +97.43   +0.94i      +5.62  +61.96i     -45.88  -35.86i 
    -35.01  +52.11i     -22.84  +70.19i     -26.79  +65.99i 

 Q = U * V_T
     -0.15   -0.97i      -0.05   -0.02i      +0.18   -0.06i 
     -0.08   +0.03i      +0.82   -0.46i      +0.31   +0.11i 
     -0.01   +0.18i      -0.21   +0.26i      +0.92   +0.00i 

 A :
    +28.00  -57.00i     +33.00  -68.00i     -75.00  +23.00i 
    +57.00  -34.00i     +11.00  +66.00i     -68.00  +16.00i 
    -62.00  +84.00i     -47.00  +66.00i      +8.00  +58.00i 

 A = QP      (U * V_T)  (V * S * V_T)
    +28.00  -57.00i     +33.00  -68.00i     -75.00  +23.00i 
    +57.00  -34.00i     +11.00  +66.00i     -68.00  +16.00i 
    -62.00  +84.00i     -47.00  +66.00i      +8.00  +58.00i 


 Press   return to continue
 Press X return to stop