Calculer les Valeurs Singulières


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

b03.c
/* ------------------------------------ */
/*  Save as :   b03.c                   */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r,int rn)
{
double **A      = r_mR(i_mR(r+rn,r),9.);
double **A_T    =      i_mR(r,r+rn);
double **A_TA   =      i_mR(r,r);

double **EigsValue =  i_mR(r,C1);

  clrscrn();
  printf(" A :");
  p_mR(A,S5,P0,C12);  
  printf(" A_T :");
  transpose_mR(A,A_T);
  p_mR(A_T,S5,P0,C12);
  stop();
  
  clrscrn();
  printf(" A_TA :");   
  mul_mR(A_T,A, A_TA);
  p_mR(A_TA,S5,P0,C12);   
  
  printf(" EigenValues A_TA:");
  eigs_mR(A_TA,EigsValue);
  p_mR(EigsValue,S13,P4,C1);
         
  f_mR(A);
  f_mR(A_T);
  f_mR(A_TA);
  f_mR(EigsValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun(rp_I(R6),rp_I(R6));

} while(stop_w());

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


Calculons les valeurs propres d'une matrice A_TA.
Les valeurs sur la diagonale de la matrice A_TA sont positives. 
Les valeurs propres de cette matrice A_TA sont positives. 


Exemple de sortie écran :
 A :
   +3    +5    -6 
   -1    -5    +2 
   +1    +1    +9 
   +4    -5    -4 
   +4    +6    +6 
   +7    +6    +8 

 A_T :
   +3    -1    +1    +4    +4    +7 
   +5    -5    +1    -5    +6    +6 
   -6    +2    +9    -4    +6    +8 

 Press return to continue. 


 A_TA :
  +92   +67   +53 
  +67  +148   +73 
  +53   +73  +237 

 EigenValues A_TA:
    +307.6681 
    +122.0471 
     +47.2848 


 Press   return to continue
 Press X return to stop