Mathc matrices/c25i
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 :
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