Application


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


c00k.c
/* ------------------------------------ */
/*  Save as :   c00k.c                  */
/* ------------------------------------ */
#include    "v_a.h"
#include "dot_au.h"
/* ------------------------------------ */
void fun(int r)
{
double **T         =           r_mR(i_mR(r,r),9.);
double **A         =                i_mR(r,r);
double **U         = rsymmetric_mR(i_mR(r,r),9.);
double **EigsValue =               i_mR(r,C1);

  clrscrn();
  r_Q_mR(T,A); 
  
  printf(" A :      If A is an orthonormal matrix\n");
  printf("          A_t*A = ID   \n");
  p_mR(A,S5,P3,C6); 
  printf(" U :");
  p_mR(U,S5,P3,C6);   
  eigs_value_Au_mR(A,U,EigsValue);
  printf(" EigsValue 1: <u,v> = v^t (A^t*A) u");
  p_mR(EigsValue,S13,P4,C1);

  f_mR(A);
  f_mR(U);
  f_mR(EigsValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun(rp_I(R3)+R1);

} while(stop_w());

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


Nous calculons les valeurs propres du vecteur u.


A est une matrice orthnormale. Donc A_t*A égal la matrice identitée.


On se retrouve donc avec le produit scalaire standard.


Avec une matrice aléatoire cela ne fonctionne pas. Il faut trouver un autre algorithme.


Exemple de sortie écran :
 ------------------------------------ 
 A :      If A is an orthonormal matrix
          A_t*A = ID   

+0.190 +0.614 +0.026 +0.766 
-0.664 +0.599 -0.328 -0.304 
-0.664 -0.225 +0.635 +0.324 
-0.285 -0.463 -0.699 +0.465 

 U :
-7.000 +2.000 -5.000 -3.000 
+2.000 -1.000 -5.000 -7.000 
-5.000 -5.000 +6.000 -9.000 
-3.000 -7.000 -9.000 +4.000 

 EigsValue 1: <u,v> = v^t (A^t*A) u
    +14.23599 
    -13.10550 
     +7.95822 
     -7.08869 


 Press return to continue
 Press X      to stop