< Mathc matrices


Sommaire


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

cq2.c
'
/* ------------------------------------ */
/*  Save as :   cq2.c                   */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r)
{
double **U      = r_mR(i_mR(r,r),9.);
double **QT     =      i_mR(r,r);
double **Q      =      i_mR(r,r);
double **T      =      i_mR(r,r);

  clrscrn();
  
  r_Quv_mR(U,Q);    
  printf(" Q :                an orthogonal matrix (orthonormal !!)");
  p_mR(Q,3,3,6);
  
  printf(" QT :");
  transpose_mR(Q,QT);
  p_mR(QT,3,3,6);  
  
  printf(" Q * QT :           (QT = inv(Q)");
  mul_mR(Q,QT,T);
  p_mR(T,3,0,6);    

  printf(" QT * Q :            (Q = inv(QT)");
  mul_mR(QT,Q,T);
  p_mR(T,3,0,6);    
   
  f_mR(U);
  f_mR(Q);
  f_mR(QT);
  f_mR(T);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun(rp_I(3)+R2);

} while(stop_w());

  return 0;
}

/* ------------------------------------ */
/* ------------------------------------ */


La transposée d'une matrice orthogonale est son inverse :  r_Quv_mR(U,Q); 



Exemple de sortie écran :
 Q :                an orthogonal matrix (orthonormal !!)
+0.943 -0.329 +0.054 
-0.236 -0.772 -0.591 
-0.236 -0.544 +0.805 

 QT :
+0.943 -0.236 -0.236 
-0.329 -0.772 -0.544 
+0.054 -0.591 +0.805 

 Q * QT :           (QT = inv(Q)
 +1  -0  -0 
 -0  +1  +0 
 -0  +0  +1 

 QT * Q :            (Q = inv(QT)
 +1  -0  +0 
 -0  +1  +0 
 +0  +0  +1 


 Press return to continue
 Press X      to stop
Cet article est issu de Wikibooks. Le texte est sous licence Creative Commons - Attribution - Partage dans les Mêmes. Des conditions supplémentaires peuvent s'appliquer aux fichiers multimédias.