Exemple de sortie écran :
 A :
 +381, +184, +659, -768, -313, +623, +2, 
 +352, +26, +346, -675, -421, -595, -364 
 b :
 -286 
 +33 
 Ab :
 +381 +184 +659 -768 -313 +623 +2 
 +352 +26 +346 -675 -421 -595 -364 
 -286 
 +33 
 Press return to continue. 
 -------------------------------------
 Ab :
 +1.0000 +0.0000 +0.8481 -1.8999 -1.2636 -2.2908 -1.2218 
 -0.0000 +1.0000 +1.8253 -0.2399 +0.9155 +8.1293 +2.5407 
 +0.2462 
 -2.0642 
 Press return to continue. 
 -------------------------------------
 new_Ab :
 +1.0000 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000 
 +0.0000 +1.0000 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000 
 +0.0000 +0.0000 +1.0000 +0.0000 +0.0000 +0.0000 +0.0000 
 +0.0000 +0.0000 +0.0000 +1.0000 +0.0000 +0.0000 +0.0000 
 +0.0000 +0.0000 +0.0000 +0.0000 +1.0000 +0.0000 +0.0000 
 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +1.0000 +0.0000 
 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +1.0000 
 +0.2462 -0.8481 +1.8999 +1.2636 +2.2908 +1.2218 
 -2.0642 -1.8253 +0.2399 -0.9155 -8.1293 -2.5407 
 +0.0000 +1.0000 +0.0000 +0.0000 +0.0000 +0.0000 
 +0.0000 +0.0000 +1.0000 +0.0000 +0.0000 +0.0000 
 +0.0000 +0.0000 +0.0000 +1.0000 +0.0000 +0.0000 
 +0.0000 +0.0000 +0.0000 +0.0000 +1.0000 +0.0000 
 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +1.0000 
 Press return to continue. 
 -------------------------------------
 new_b :
 +0.2462 -0.8481 +1.8999 +1.2636 +2.2908 +1.2218 
 -2.0642 -1.8253 +0.2399 -0.9155 -8.1293 -2.5407 
 +0.0000 +1.0000 +0.0000 +0.0000 +0.0000 +0.0000 
 +0.0000 +0.0000 +1.0000 +0.0000 +0.0000 +0.0000 
 +0.0000 +0.0000 +0.0000 +1.0000 +0.0000 +0.0000 
 +0.0000 +0.0000 +0.0000 +0.0000 +1.0000 +0.0000 
 +0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +1.0000 
 new_b : free variables
 x1 = +0.2462 -0.8481*r +1.8999*s +1.2636*t +2.2908*u +1.2218*v
 x2 = -2.0642 -1.8253*r +0.2399*s -0.9155*t -8.1293*u -2.5407*v
 x3 = +0.0000 +1.0000*r +0.0000*s +0.0000*t +0.0000*u +0.0000*v
 x4 = +0.0000 +0.0000*r +1.0000*s +0.0000*t +0.0000*u +0.0000*v
 x5 = +0.0000 +0.0000*r +0.0000*s +1.0000*t +0.0000*u +0.0000*v
 x6 = +0.0000 +0.0000*r +0.0000*s +0.0000*t +1.0000*u +0.0000*v
 x7 = +0.0000 +0.0000*r +0.0000*s +0.0000*t +0.0000*u +1.0000*v
 Press return to continue.

Mathc matrices/e01
Quelques exemples :
Mathc matrices/e02
Application
Étude de quelques fonctions :

Mathc matrices/c05e
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c05e.c */
void fun(int r)
double **u = r_mR(i_mR(r,C1),9.);
double **v = r_mR(i_mR(r,C1),9.);
 clrscrn();
 printf(" <u,v> = ||u|| ||v|| cos(a) = u1 v1 + u2 v2 + u3 v3 \n");
 printf(" u :");
 p_mR(u,S3,P0,C6);
 printf(" v :");
 p_mR(v,S3,P0,C6);
 printf(" <u,v> = v^t u \t <v,u> = u^t v\n");
 printf(" <u,v> = %+.0f \t <v,u> = %+.0f\n\n\n", 
 dot_uv_R(u,v), dot_uv_R(v,u));
 printf(
 " if <u,v> = 0 : u and v are orthogonal\n"
 " if <u,v> > 0 : u and v form the shape of an acute angle (< )\n"
 " if <u,v> < 0 : u and v form the shape of an obtuse angle (\\_)\n\n"

f_mR(u);
 f_mR(v);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(R3);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous voyons le produit scalaire : dotuv_R(u,v);

Exemple de sortie écran :
 <u,v> = ||u|| ||v|| cos(a) = u1 v1 + u2 v2 + u3 v3 
 u :
 +5 
 -4 
 +3 
 v :
 +4 
 -3 
 -8 
 <u,v> = v^t u <v,u> = u^t v
 <u,v> = +8 <v,u> = +8
 if <u,v> = 0 : u and v are orthogonal
 if <u,v> > 0 : u and v form the shape of an acute angle (< )
 if <u,v> < 0 : u and v form the shape of an obtuse angle (\_)
 Press return to continue
 Press X return to stop

Mathc matrices/c05f
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c05f.c */
void fun(int r)
double **u = r_mR(i_mR(r,C1),9.);
 clrscrn();
 printf(" u :");
 p_mR(u,S3,P0,C6);
 printf(" <u,u> = ||u||^2 \n\n");
 printf(" (<u,u>)^(1/2) = %.3f \n",
 pow(dot_uv_R(u,u),(1./2.)));
 printf(" ||u|| = %.3f \n\n",
 norm_uv_R(u));
 f_mR(u);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous calculons la norme d'un vecteur : normuv_R(u);

Exemple de sortie écran :
 u :
 +4 
 -7 
 +8 
 -3 
 <u,u> = ||u||^2 
 (<u,u>)^(1/2) = 11.747 
 ||u|| = 11.747 
 Press return to continue
 Press X to stop

Mathc matrices/c05g
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c01a.c */
void fun(int r)
double **u = r_mR(i_mR(r,C1),9.);
double **v = r_mR(i_mR(r,C1),9.);
double **umnsv = i_mR(r,C1);
double **uplv = i_mR(r,C1);
 clrscrn();
 printf(" u :");
 p_mR(u,S3,P0,C6);
 printf(" v :");
 p_mR(v,S3,P0,C6); 
 add_mR(u,v,uplv); 
 sub_mR(u,v,umnsv);
 printf(" 2||u||^2 + 2||v||^2 = %.0f \n\n", 
 2 * pow(norm_uv_R(u),2.)
 + 2 * pow(norm_uv_R(v),2.) );
 printf(" ||u + v||^2 + ||u - v||^2 = %.0f \n\n", 
 pow(norm_uv_R( uplv),2.) 
 + pow(norm_uv_R(umnsv),2.) );
 f_mR(u);
 f_mR(v);
 f_mR(umnsv);
 f_mR(uplv);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous vérifions une des propriétés de la norme : norm_uv_R(u);

Exemple de sortie écran :
 u :
 -9 
 -3 
 -3 
 v :
 +2 
 +2 
 +8 
 2||u||^2 + 2||v||^2 = 342 
 ||u + v||^2 + ||u - v||^2 = 342 
 Press return to continue
 Press X to stop

Mathc matrices/c05h
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c05h.c */
void fun(int r)
double **u = r_mR(i_mR(r,C1),9.);
double **n_u = i_mR(r,C1);
 clrscrn();
 printf(" u :");
 p_mR(u,S3,P0,C6);
 smul_mR(1./norm_uv_R(u),u,n_u); 
 printf(" n_u = (1/||u||) u :");
 p_mR(n_u,S3,P6,C6); 
 printf(" ||n_u|| = %.10f \n\n", norm_uv_R(n_u));
 f_mR(u);
 f_mR(n_u);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous normalisons un vecteur colonne : smul_mR(1./normuv_R(u),u,n_u);

Exemple de sortie écran :
 u :
 +6 
 -9 
 -3 
 -9 
 -5 
 n_u = (1/||u||) u :
+0.393919 
-0.590879 
-0.196960 
-0.590879 
-0.328266 
 ||n_u|| = 1.0000000000 
 Press return to continue
 Press X to stop

Mathc matrices/c05i
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c05i.c */
void fun(int r)
double **u = r_mR(i_mR(r,C1),9.);
double **v = r_mR(i_mR(r,C1),9.);
 clrscrn();
 printf(" u :");
 p_mR(u,S3,P0,C6);
 printf(" v :");
 p_mR(v,S3,P0,C6);;
 printf(" d(u,v) = ||u-v|| = (<u-v,u-v>)^1/2 \n\n");
 printf(" d(u,v) = %.3f \n", dist_uv_R(u,v));
 printf(" d(v,u) = %.3f \n\n", dist_uv_R(v,u));
 f_mR(u);
 f_mR(v);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous calulons la distance entre deux vecteurs : distuv_R(u,v);

Exemple de sortie écran :
 u :
 +6 
 +6 
 +2 
 +2 
 +8 
 v :
 +8 
 +2 
 +8 
 +4 
 +8 
 d(u,v) = ||u-v|| = (<u-v,u-v>)^1/2 
 d(u,v) = 7.746 
 d(v,u) = 7.746 
 Press return to continue
 Press X to stop

Mathc matrices/c05j
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c05j.c */
void fun(int r)
double **u = r_mR(i_mR(r,C1),9.);
double **v = r_mR(i_mR(r,C1),9.);
double **projuv = i_mR(r,C1);
 clrscrn();
 printf(" u :");
 p_mR(u,S3,P0,C6);
 printf(" v :");
 p_mR(v,S3,P0,C6);
 proj_uv_mR(u,v,projuv);
 printf(" Vector component of u along v \n\n"); 
 printf(" projuv : [ (<u,v> / ||v||^2) * v ]");
 p_mR(projuv,S3,P3,C6);
 f_mR(u);
 f_mR(v);
 f_mR(projuv);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(2)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Nous calculons le projeté de u sur v : projuv_mR(u,v,projuv);