Aller au contenu

Mathc matrices/c29a0

Un livre de Wikilivres.


La décomposition spectral

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

c00a.c
/* ------------------------------------ */
/*  Save as:  c00a.c                    */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r)
{
double **A         = rsymmetric_mR(      i_mR(r,r),9);
double **InvA      =      invgj_mR(A,    i_mR(r,r));

double **AEVect    =     eigs_V_mR(A,    i_mR(r,r));
double **InvAEVect =     eigs_V_mR(InvA, i_mR(r,r));

  clrscrn();   
  printf(" A:");
  p_mR(A, S10,P4,C6);

  printf(" InvA:");
  p_mR(InvA, S10,P4,C6);
  stop();
  
  clrscrn();   
  printf(" The matrix A and the matrix InvA\n"
         " have the same eigenvectors. They \n"
         " are in reverse order.       \n\n\n"

         " The eigenvectors of A being     \n"
         " an orthonormal matrix, we       \n"
         " will simply take its transpose  \n"
         " as inverse in the next files. \n\n"
         " EigenVector of A:");
  p_mR(AEVect,S10,P4,C6);

  printf(" EigenVector of InvA:");
  p_mR(InvAEVect,S10,P4,C6);
   
  f_mR(A);
  f_mR(InvA); 
  f_mR(AEVect);
  f_mR(InvAEVect);  
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
 fun(R3);

} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Pour calculer la décomposition spectrale d'une matrice symétrique A, nous avons besoin de :
b : Les colonnes des vecteurs propres de A
r : Les lignes des vecteurs propres de l'inverse de A
Les vecteurs propres de l'inverse de A sont identiques aux vecteurs propres de A, mais pas dans le bon ordre. (Essayez l'exemple.)
Pour obtenir les lignes des vecteurs propres de l'inverse de A, je vais transposer les vecteurs propres de A, car A et son inverse ont les mêmes vecteurs propres uniquement lorsque A est symétrique.
Exemple de sortie écran :
 A:
   -5.0000    +4.0000    -2.0000 
   +4.0000    +2.0000    -2.0000 
   -2.0000    -2.0000    +5.0000 

 InvA:
   -0.0698    +0.1860    +0.0465 
   +0.1860    +0.3372    +0.2093 
   +0.0465    +0.2093    +0.3023 

 Press return to continue. 


 The matrix A and the matrix InvA
 have the same eigenvectors. They 
 are in reverse order.       


 The eigenvectors of A being     
 an orthonormal matrix, we       
 will simply take its transpose  
 as inverse in the next files.

 EigenVector of A:
   -0.3066    +0.9159    +0.2592 
   -0.5409    -0.3917    +0.7443 
   +0.7832    +0.0881    +0.6155 

 EigenVector of InvA:
   +0.2592    +0.9159    -0.3066 
   +0.7443    -0.3917    -0.5409 
   +0.6155    +0.0881    +0.7832 


 Press   return to continue
 Press X return to stop