Mathc complexes/a270

Un livre de Wikilivres.


Application


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


c00b.c
/* ------------------------------------ */
/*  Save as :   c00b.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);
   stop();  

   clrscrn();   
/* det(A) = det(Q) det(P) */
   printf(" det(A) \t= ");
   p_Z(det_Z(A), S4,P0, S5,P0);printf("\n");
   printf(" det(Q) det(P)\t= ");
   p_Z(mul_Z(det_Z(P),det_Z(Q)), S4,P0, S5,P0);printf("\n\n\n");
             
   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 :
    +95.00  -46.00i     -17.00  -98.00i     +47.00  +76.00i 
    -28.00  -68.00i     +60.00  +70.00i     +43.00  +54.00i 
    +16.00  -69.00i     -20.00  -72.00i     +45.00   -6.00i 

 U :
   +0.6768 +0.5100i    -0.0261 -0.0418i    -0.4254 -0.3138i 
   +0.0402 -0.0875i    -0.2574 +0.9319i    +0.0534 -0.2306i 
   +0.5221 +0.0000i    +0.2507 +0.0000i    +0.8152 +0.0000i 

 V :
   +0.0658 +0.6580i    -0.4143 +0.1461i    +0.2570 -0.5511i 
   -0.4961 +0.2943i    +0.7215 +0.1409i    -0.1897 -0.3014i 
   +0.4796 -0.0000i    +0.5163 +0.0000i    +0.7095 +0.0000i 

 S = U_T * A * V :
 +189.8870 +63.1043i    -0.0000  -0.0000i    +0.0000  +0.0000i 
   -0.0000  +0.0000i   +89.3395-107.4784i    -0.0000  +0.0000i 
   +0.0000  +0.0000i    -0.0000  -0.0000i   -24.4031 -13.6424i 

 Press return to continue. 

 ----------------------------------
 P = V * S * V_T
    +91.25   +1.81i     +44.74  -17.00i     -34.71  +98.70i 
    -39.06  +93.95i    +108.36  -38.82i     -12.62  -14.71i 
     -0.43  -53.71i      -4.61  -91.73i     +55.21  -21.01i 

 Q = U * V_T
     +0.45   -0.71i      -0.04   -0.55i      +0.01   +0.00i 
     +0.33   -0.41i      -0.04   +0.80i      -0.08   +0.28i 
     +0.14   +0.07i      -0.23   +0.06i      +0.96   +0.00i 

 A :
    +95.00  -46.00i     -17.00  -98.00i     +47.00  +76.00i 
    -28.00  -68.00i     +60.00  +70.00i     +43.00  +54.00i 
    +16.00  -69.00i     -20.00  -72.00i     +45.00   -6.00i 

 A = QP      (U * V_T)  (V * S * V_T)
    +95.00  -46.00i     -17.00  -98.00i     +47.00  +76.00i 
    -28.00  -68.00i     +60.00  +70.00i     +43.00  +54.00i 
    +16.00  -69.00i     -20.00  -72.00i     +45.00   -6.00i 

 Press return to continue. 

 ----------------------------------
 det(A) 	    = -658914-420875i 
 det(Q) det(P)	= -658914-420875i 



 Press   return to continue
 Press X return to stop