Mathc matrices/c25i

Un livre de Wikilivres.


Application


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

c04b.c
/* ------------------------------------ */
/*  Save as :   c04b.c                  */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define   RCQ RC3
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
	
double tu[RCQ*C1]={
 -7, 
 -6, 
 +8 
};

double tQ[RCQ*RCQ]={
+0.4819, +0.4615, +0.7448, 
+0.6196, -0.7806, +0.0828, 
+0.6196, +0.4216, -0.6621 
};

double **u      = ca_A_mR(tu,i_mR(RCQ,C1));
double **Q      = ca_A_mR(tQ,i_mR(RCQ,RCQ));               
double **Qu     =            i_mR(RCQ,C1);

  clrscrn();
      
  printf(" Q :             an orthogonal matrix ");
  p_mR(Q,S3,P5,C6);
  
  printf(" u :");
  p_mR(u,S3,P5,C6);


  printf(" ||Q*u||     = ||u|| \n\n ");
  printf("   %.3f   = %.3f           \n\n ",
  
  norm_R(mul_mR(Q,u,Qu)),  norm_R(u));
   

  f_mR(u); 
  f_mR(Q);
  f_mR(Qu);
}
/* ------------------------------------ */
int main(void)
{

  fun();

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


 Vérifions que multiplier un vecteur par une  matrice orthonormale ne change pas sa norme  :


 Pour changer la taille des vecteurs il suffit de modifier la valeur de :
#define   RCQ RC3
 et de rajouter éventuellement de nouvelles lignes et colonnes.


Exemple de sortie écran :
 --------------------------------
 Q :             an orthogonal matrix 
+0.48190 +0.46150 +0.74480 
+0.61960 -0.78060 +0.08280 
+0.61960 +0.42160 -0.66210 

 u :
-7.00000 
-6.00000 
+8.00000 

 ||Q*u||     = ||u|| 

    12.207   = 12.207