Aller au contenu

Mathc complexes/a101

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          RC4  
/* ------------------------------------ */       
int main(void)
{                          
double a[RCA*(RCA*C2)] ={   
  +25072,     +0,   +21293,  -4811,    +5386,  -6531,   +11975,  -5847, 
  +21293,  +4811,   +30848,     +0,    -1526,  -1774,   +13478,  -6658, 
   +5386,  +6531,    -1526,  +1774,   +20007,     +0,    +7542,  -1322, 
  +11975,  +5847,   +13478,  +6658,    +7542,  +1322,   +21250,     +0  };
                       
double **A             =        ca_A_mZ(a,  i_mZ(RCA,RCA)); 	

double **EigsVector    =      eigs_V_mZ(A, i_mZ(RCA,RCA),FACTOR_E);
double **T_EigsVector  =  ctranspose_mZ(EigsVector, i_mZ(RCA,RCA));

/*           EigsValue = T_EigsVector * A * EigsVector    */
double **T             =         mul_mZ(T_EigsVector,A, i_mZ(RCA,RCA));
double **EigsValue     =         mul_mZ(T,EigsVector, i_mZ(RCA,RCA)); 

double **SqrtEigsValue =      f_eigs_mZ(sqrt,EigsValue, i_mZ(RCA,RCA));

/*               SqrtA = EigsVector * SqrtEigsValue * T_EigsVector   */
double **T2            = mul_mZ(EigsVector,SqrtEigsValue,i_mZ(RCA,RCA));  
double **SqrtA         =         mul_mZ(T2,T_EigsVector, i_mZ(RCA,RCA));

  clrscrn();
  printf(" A :");
  p_mZ(A, S7,P0, S7,P0, C6); 
              
  printf(" sqrt(A) = EigsVector sqrt(EigsValue) T_EigsVector");
  p_mZ(SqrtA, S9,P3, S8,P3, C6);  
  
  printf(" A = sqrt(A) sqrt(A)");  
  p_mZ(mul_mZ(SqrtA,SqrtA,A), S7,P0, S7,P0, C6); 
  stop();
   
  f_mZ(A);
  f_mZ(SqrtA);
    
  f_mZ(EigsVector);
  f_mZ(T_EigsVector);
  
  f_mZ(T); 
  f_mZ(T2);   
  
  f_mZ(SqrtEigsValue);
  f_mZ(EigsValue);

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

Avec les matrices réelles nous avons calculer les vecteurs et valeurs propres des matrices symétriques. Avec les matrices complexes nous allons calculer les vecteurs et valeurs propres des matrices symétriques conjuguées.

Contrôle du facteur :

  • FACTOR_E ..... +1.E-1 ......... -9 < x < 9
  • FACTOR_E ..... +1.E-2 ....... -99 < x < 99
  • FACTOR_E ..... +1.E-3 ..... -999 < x < 999

Nous allons étudier une des propriétés des valeurs propres et des vecteurs propres :

              sqrt(A) = V * sqrt(D) * T_V
Exemple de sortie écran :
 A :
 +25072     +0i  +21293  -4811i   +5386  -6531i  +11975  -5847i 
 +21293  +4811i  +30848     +0i   -1526  -1774i  +13478  -6658i 
  +5386  +6531i   -1526  +1774i  +20007     +0i   +7542  -1322i 
 +11975  +5847i  +13478  +6658i   +7542  +1322i  +21250     +0i 

 sqrt(A) = EigsVector * sqrt(EigsValue) * T_EigsVector
 +130.913  +0.000i   +70.841 -20.487i   +20.959 -26.372i   +35.761  -9.063i 
  +70.841 +20.487i  +151.378  +0.000i   -17.167  -0.138i   +39.953 -24.571i 
  +20.959 +26.372i   -17.167  +0.138i  +133.152  -0.000i   +27.521  -9.518i 
  +35.761  +9.063i   +39.953 +24.571i   +27.521  +9.518i  +129.773  +0.000i 

 A = sqrt(A) * sqrt(A)
 +25072     +0i  +21293  -4811i   +5386  -6531i  +11975  -5847i 
 +21293  +4811i  +30848     +0i   -1526  -1774i  +13478  -6658i 
  +5386  +6531i   -1526  +1774i  +20007     -0i   +7542  -1322i 
 +11975  +5847i  +13478  +6658i   +7542  +1322i  +21250     +0i 

 Press return to continue.