Aller au contenu

Mathc complexes/03o

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   RCA RC4
#define   CX  C1
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double a[RCA*(RCA*C2)]={
    +3,1, -4,1, -2,1, -1,1,
    +5,2, -3,2, -0,2, -2,2,      
    +6,3, -0,3, -3,3, -2,3,
    +3,4, -3,4, -1,4, -3,4   
};

double x_B[RCA*(CX*C2)]={
   +1,+1,
   +2,+2, 
   +3,+3, 
   +4,+4 
};

double b[RCA*(RCA*C2)]={
    +1,+2, +2,+5, +6,+2, +6,+5,   
    +3,+3, +2,+4, +1,+3, +6,+4,
    +5,+4, +5,+3, +3,+4, +6,+3,
    +5,+5, +5,+2, +2,+5, +4,+2 
};

double **A   = ca_A_mZ(a, i_mZ(RCA,RCA));
double **B   = ca_A_mZ(b, i_mZ(RCA,RCA));
double **D     =          i_mZ(RCA,RCA) ;

double **X_B = ca_A_mZ(x_B,  i_mZ(RCA,CX));
double **X_S = mul_mZ(B,X_B, i_mZ(RCA,CX));
double **T   =               i_mZ(RCA,CX) ;

double **invB  =  inv_mZ(B, i_mZ(RCA,RCA));
double **invBA =            i_mZ(RCA,RCA) ;

double **DX_B  =            i_mZ(RCA,CX) ;

/* D = invB*A*B        */
  mul_mZ(invB,A,invBA);       
  mul_mZ(invBA,B,D);
/* [T(x)]_B = D*x_B    */ 
  mul_mZ(D,X_B,DX_B);   
  
  clrscrn();
  printf(" In the Standard basis the linear application is :\n\n");
  printf(" T(x_S) = A x_S");
  p_mZ(mul_mZ(A,X_S,T), S10,P2, S8,P2, C4); 
  printf("with\n\n"
         "x_S");
  p_mZ(X_S, S10,P2, S8,P2, C4);   
  printf("A");
  p_mZ(A, S10,P2, S8,P2, C4);   

  stop();
  
  clrscrn();
  printf(" In the B basis the linear application is :\n\n"
         " [T(x_B)]_B = D*x_B           with  D = (invB A B)");
  p_mZ(DX_B, S10,P2, S8,P2, C4); 
  printf("with\n\n"
         "x_B");
  p_mZ(X_B, S10,P2, S8,P2, C4);   
  printf("D = (invB A B)");
  p_mZ(D, S10,P2, S8,P2, C4);      
 
  stop();
    
  clrscrn(); 
  printf(" [T(x_B)]_B = D*x_B           with  D = (invB A B)");
  p_mZ(DX_B, S10,P2, S8,P2, C4);  
        
  printf(" Remark : x_S = B x_B\n\n"
         "   [D*x_B]\n"
         " B [D*x_B] = B [(InvB A B) x_B] = (A B)*x_B = A (B x_B) = A x_S \n\n"
         " B*[D*x_B] = A x_S");
  p_mZ(mul_mZ(B,DX_B,T), S10,P2, S8,P2, C4);   
  
  printf(" T(x_S) = A x_S");
  p_mZ(mul_mZ(A,X_S,T), S10,P2, S8,P2, C4); 
  stop();
  
  f_mZ(A);
  f_mZ(B);
  f_mZ(D);  
  
  f_mZ(X_B);
  f_mZ(X_S);
  f_mZ(T);  
  
  f_mZ(invB);  
  f_mZ(invBA);  

  f_mZ(DX_B);
    
  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
   Vérifions si les résultats sont compatibles
Exemple de sortie écran :
 In the Standard basis the linear application is :

 T(x_S) = A x_S
   -304.00 -232.00i 
   -571.00 +129.00i 
   -916.00 +204.00i 
  -1220.00 -140.00i 

with

x_S
     +9.00  +85.00i 
     -2.00  +70.00i 
    +14.00  +82.00i 
     +5.00  +69.00i 

A
     +3.00   +1.00i      -4.00   +1.00i      -2.00   +1.00i      -1.00   +1.00i 
     +5.00   +2.00i      -3.00   +2.00i      +0.00   +2.00i      -2.00   +2.00i 
     +6.00   +3.00i      +0.00   +3.00i      -3.00   +3.00i      -2.00   +3.00i 
     +3.00   +4.00i      -3.00   +4.00i      -1.00   +4.00i      -3.00   +4.00i 

 Press return to continue. 


 In the B basis the linear application is :

 [T(x_B)]_B = D*x_B           with  D = (invB A B)
   -331.03 +332.15i 
   +282.69 +150.91i 
   -132.29 -105.53i 
    +84.94 -190.71i 

with

x_B
     +1.00   +1.00i 
     +2.00   +2.00i 
     +3.00   +3.00i 
     +4.00   +4.00i 

D = (invB A B)
     +4.59  +24.55i      -6.58  +21.29i      -0.02  +28.53i      +2.30  +44.72i 
    +11.03  -13.75i      +8.85   +3.23i     +20.08   -7.85i     +31.96   -8.76i 
     -6.87   +4.32i      -6.36   -2.81i     -11.03   +1.79i     -16.55   +2.32i 
     -9.83   -4.90i      +2.85   -6.41i      -5.04  -13.94i      -8.41  -19.57i 

 Press return to continue. 


 [T(x_B)]_B = D*x_B           with  D = (invB A B)
   -331.03 +332.15i 
   +282.69 +150.91i 
   -132.29 -105.53i 
    +84.94 -190.71i 

 Remark : x_S = B x_B

   [D*x_B]
 B [D*x_B] = B [(InvB A B) x_B] = (A B)*x_B = A (B x_B) = A x_S 

 B*[D*x_B] = A x_S
   -304.00 -232.00i 
   -571.00 +129.00i 
   -916.00 +204.00i 
  -1220.00 -140.00i 

 T(x_S) = A x_S
   -304.00 -232.00i 
   -571.00 +129.00i 
   -916.00 +204.00i 
  -1220.00 -140.00i 

 Press return to continue.