Aller au contenu

Mathc complexes/a344

Un livre de Wikilivres.


Applications

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-1    
#define ARRAY     A3
/* ------------------------------------ */
#define RC        RC3
/* ------------------------------------ */
void fun(void)
{
double **A         = rcsymmetric_mZ(        i_mZ(RC,RC),99);
double **AEVect    =      eigs_V_mZ(A,      i_mZ(RC,RC),FACTOR_E);
double **InvAEVect =  ctranspose_mZ(AEVect, i_mZ(RC,RC));

double **T         =                        i_mZ(RC,RC);
double **Ide       =                        i_mZ(RC,RC);

double **b [ARRAY];
double **r [ARRAY];
double **br[ARRAY];

int i;

  for(i=A0; i<ARRAY; i++)
     {
       b[i]  = c_c_mZ(   AEVect,i+C1, i_mZ(RC,C1),C1);
       r[i]  = c_r_mZ(InvAEVect,i+R1, i_mZ(R1,RC),R1);
      
       br[i] = mul_mZ(b[i],r[i],      i_mZ(RC,RC));  
      }
              
  clrscrn();
  printf(" A:");
  p_mZ(A, S7,P0,S6,P0,C7);
  
  printf(" eigenvectors of A");
  p_mZ(AEVect, S5,P4,S5,P4,C7);

  printf(" Conjugate transpose of Eigenvector of A");
  p_mZ(InvAEVect, S5,P4,S5,P4,C7);
  stop(); 
  
  clrscrn();
  printf(" eigenvectors of A");
  p_mZ(AEVect, S5,P4,S5,P4,C7);
  
  for(i=A0; i<ARRAY; i++)
     {
       printf(" b%d:",i+C1);
       p_mZ(b[i], S5,P4,S5,P4,C7);
      }   
  stop();

  clrscrn();
  printf(" Conjugate transpose of Eigenvector of A");
  p_mZ(InvAEVect, S5,P4,S5,P4,C7);
  
  for(i=A0; i<ARRAY; i++)
     {
       printf(" r%d:",i+R1);
       p_mZ(r[i], S5,P4,S5,P4,C7);
      }     
  stop();
      
  clrscrn();
  for(i=A0; i<ARRAY; i++)
     {
      printf(" b%dr%d:",i+C1,i+R1);
      p_mZ(br[i], S5,P4,S5,P4,C7);
     }     
  stop();
  
  clrscrn();
  add_mZ(br[0], br[1], T); 
  add_mZ(   T, br[2], Ide);  
  printf(" b1r1 + b2r2 + b3r3 = Ide");
  p_mZ(Ide, S5,P4,S5,P4,C7);
   
  f_mZ(A);
  f_mZ(AEVect);
  f_mZ(InvAEVect);

  f_mZ(T);
  f_mZ(Ide);
  
  for(i=A0; i<ARRAY; i++)
     {
       f_mZ( b[i]);
       f_mZ( r[i]);  
       f_mZ(br[i]);      
     } 
     
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
 fun();

} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Nous voyons une des propriètés de la décomposition spectral:

 b1r1 + b2r2 + b3r3 = Ide
 
b1r1 est obtenue en multipliant la première colonne de la matrice des vecteurs propres par la première ligne de la matrice inverse des vecteurs propres.

     Vp      invVp

              r1
  b1 b2 b3    r2    ->   b1*r1;  b2*r2;  b3*r3;  Cela nous donne trois matrices [3x3]
              r3
           
Exemple de sortie écran :
 A:
 +17880    +0i  -11431 +8119i   +2451 -6543i 
 -11431 -8119i  +19115    +0i   -8993 +2402i 
  +2451 +6543i   -8993 -2402i   +8894    +0i 

 eigenvectors of A
+0.3169-0.5431i -0.6182+0.2145i +0.4078+0.1003i 
-0.6325+0.2515i -0.2452-0.3258i +0.5850+0.1678i 
+0.3758+0.0000i +0.6368+0.0000i +0.6732+0.0000i 

 Conjugate transpose of Eigenvector of A
+0.3169+0.5431i -0.6325-0.2515i +0.3758-0.0000i 
-0.6182-0.2145i -0.2452+0.3258i +0.6368-0.0000i 
+0.4078-0.1003i +0.5850-0.1678i +0.6732-0.0000i 

 Press return to continue. 


 eigenvectors of A
+0.3169-0.5431i -0.6182+0.2145i +0.4078+0.1003i 
-0.6325+0.2515i -0.2452-0.3258i +0.5850+0.1678i 
+0.3758+0.0000i +0.6368+0.0000i +0.6732+0.0000i 

 b1:
+0.3169-0.5431i 
-0.6325+0.2515i 
+0.3758+0.0000i 

 b2:
-0.6182+0.2145i 
-0.2452-0.3258i 
+0.6368+0.0000i 

 b3:
+0.4078+0.1003i 
+0.5850+0.1678i 
+0.6732+0.0000i 

 Press return to continue. 


 Conjugate transpose of Eigenvector of A
+0.3169+0.5431i -0.6325-0.2515i +0.3758-0.0000i 
-0.6182-0.2145i -0.2452+0.3258i +0.6368-0.0000i 
+0.4078-0.1003i +0.5850-0.1678i +0.6732-0.0000i 

 r1:
+0.3169+0.5431i -0.6325-0.2515i +0.3758-0.0000i 

 r2:
-0.6182-0.2145i -0.2452+0.3258i +0.6368-0.0000i 

 r3:
+0.4078-0.1003i +0.5850-0.1678i +0.6732-0.0000i 

 Press return to continue. 


 b1r1:
+0.3954+0.0000i -0.3371+0.2638i +0.1191-0.2041i 
-0.3371-0.2638i +0.4633+0.0000i -0.2377+0.0945i 
+0.1191+0.2041i -0.2377-0.0945i +0.1413+0.0000i 

 b2r2:
+0.4282+0.0000i +0.0817-0.2540i -0.3937+0.1366i 
+0.0817+0.2540i +0.1663+0.0000i -0.1561-0.2075i 
-0.3937-0.1366i -0.1561+0.2075i +0.4055+0.0000i 

 b3r3:
+0.1764+0.0000i +0.2554-0.0098i +0.2746+0.0675i 
+0.2554+0.0098i +0.3704+0.0000i +0.3938+0.1130i 
+0.2746-0.0675i +0.3938-0.1130i +0.4532+0.0000i 

 Press return to continue. 


 b1r1 + b2r2 + b3r3 = Ide
+1.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 +1.0000+0.0000i 


 Press   return to continue
 Press X return to stop