Aller au contenu

Mathc complexes/03e

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 FACTOR_E    +1.E-2        
#define RCA          RC3 
#define EVALUE       RC2       
/* ------------------------------------ */
void fun(void)
{                          
double a[RCA*(RCA*C2)] ={   
+0.294964029,+0.000000000, +0.007194245,+0.359712230, +0.244604317,+0.136690647, 
+0.007194245,-0.359712230, +0.438848921,+0.000000000, +0.172661871,-0.294964029, 
+0.244604317,-0.136690647, +0.172661871,+0.294964029, +0.266187050,+0.000000000, 
};
                       
double **A        = ca_A_mZ(a,           i_mZ(RCA,RCA));
double **sA       = smul_mZ(FACTOR_E, A, i_mZ(RCA,RCA));
double **EValue   = eigs_mZ(         sA, i_mZ(RCA,RCA));
double **V        =                      i_mZ(RCA,RCA);

double **Ide      =  eye_mZ(             i_mZ(RCA,RCA));
double **zIde     =                      i_mZ(RCA,RCA);
double **sAmnszIde =                     i_mZ(RCA,RCA);

double **Ab       =            i_Abr_Ac_bc_mZ(RCA,RCA,C1);
double **b        =                      i_mZ(    RCA,C1);
double **Ab_free  =            i_Abr_Ac_bc_mZ(RCA,RCA,C3);
double  **b_free  =                      i_mZ(    RCA,C3);

  clrscrn(); 
  printf(" A :");
  p_mZ(A, S8,P9, S6,P9, C3);  
  
         zmul_mZ(i_Z(EValue[EVALUE][C1],EValue[EVALUE][C2]),Ide,zIde);  
        MmnsD_mZ(sA,zIde,sAmnszIde);
      
     c_A_b_Ab_mZ(sAmnszIde,b,Ab); 

  GJ_PP_FreeV_mZ(Ab,Ab_free,b_free);
    
          c_c_mZ(b_free,C2,V,EVALUE); 
          c_c_mZ(b_free,C3,V,EVALUE+C1); 
          
    Normalize_mZ(V);
     
  printf(" V%d : Copy V%d into the last file",EVALUE,EVALUE);
  P_mZ(V, S9,P9, S8,P9, C3); 
  printf("\n");  
  stop();
              
  f_mZ(A);
  f_mZ(V);  
  f_mZ(EValue);
  
  f_mZ(Ide);
  f_mZ(zIde);
  f_mZ(sAmnszIde);
  
  f_mZ(sA);
  
  f_mZ(Ab);
  f_mZ(b);
  
  f_mZ(Ab_free);
  f_mZ(b_free);    
}
/* ------------------------------------ */
int main(void)
{
    fun();
    
  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


Calculer les vecteurs propres des deux valeurs propres nulles.


Exemple de sortie écran :
 A :
+0.294964029+0.000000000i +0.007194245+0.359712230i +0.244604317+0.136690647i 
+0.007194245-0.359712230i +0.438848921+0.000000000i +0.172661871-0.294964029i 
+0.244604317-0.136690647i +0.172661871+0.294964029i +0.266187050+0.000000000i 

 V2 : Copy V2 into the last file
     -nan,    -nan, -0.015463508,-0.773175333, -0.601228678,-0.335980732, 
     -nan,    -nan, +0.634003773,+0.000000000, +0.000000000,+0.000000000, 
     -nan,    -nan, +0.000000000,+0.000000000, +0.725011051,+0.000000000  


 Press return to continue.