Mathc matrices/c22j
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c00e.c */
void fun(int r)
double **A = r_mR(i_mR(r,r ),9.);
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(" A :");
 p_mR(A,S3,P0,C6);
 printf(" u :");
 p_mR(u,S3,P0,C6);
 printf(" v :");
 p_mR(v,S3,P0,C6);
 stop();
 clrscrn(); 
 proj_Au_mR(A,u,v,projuv);
 printf(" vector component of u along v \n\n"); 
 printf(" projuv :");
 p_mR(projuv,S8,P4,C6);
 f_mR(A);
 f_mR(u);
 f_mR(v);
 f_mR(projuv);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
Nous calculons le projeté orthogonal de u sur v. 
 Exemple de sortie écran :
 A :
 +8 +4 -1 -7 -5 
 +8 +4 +6 -5 -9 
 -7 -9 -1 +6 +4 
 -3 +2 -7 -1 +2 
 -9 -7 -3 +2 -7 
 u :
 -7 
 -3 
 -3 
 -1 
 +4 
 v :
 +6 
 -9 
 -5 
 +4 
 +6 
 Press return to continue. 
 vector component of u along v 
 projuv :
 +7 
-10 
 -6 
 +5 
 +7 
 Press return to continue
 Press X to stop

Mathc matrices/c22l
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c00f.c */
void fun(int r)
double **A = r_mR(i_mR(r,r ),9.);
double **u = r_mR(i_mR(r,C1),9.);
double **v = r_mR(i_mR(r,C1),9.);
double **projuv = i_mR(r,C1);
double **umnsprojuv = i_mR(r,C1);
 clrscrn();
 printf(" A :");
 p_mR(A,S3,P0,C6);
 printf(" u :");
 p_mR(u,S3,P0,C6);
 printf(" v :");
 p_mR(v,S3,P0,C6);
 proj_Au_mR(A,u,v,projuv);
 printf(" vector component of u along v \n\n"); 
 printf(" projuv :");
 p_mR(projuv,S8,P4,C6);
 stop();
 clrscrn();
 printf(" vector component of u orthogonal to v \n\n");
 printf(" u-projuv :");
 sub_mR(u,projuv,umnsprojuv);
 p_mR(umnsprojuv,S8,P4,C6);
 printf(" <v, u-projuv> = %.12f \n\n", dot_Au_R(A,v,umnsprojuv));
 f_mR(A);
 f_mR(u);
 f_mR(v);
 f_mR(projuv);
 f_mR(umnsprojuv);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(R3);
} while(stop_w());
 return 0;
/* ------------------------------------ */
Nous vérifions une propriètée du projeté de u sur v.
 Exemple de sortie écran :
 A :
 -5 +8 +2 
 -3 +4 +2 
 +2 -5 +6 
 u :
 -7 
 +4 
 -9 
 v :
 -1 
 -5 
 -9 
 vector component of u along v 
 projuv :
 +0 
 +1 
 +1 
 Press return to continue. 
 vector component of u orthogonal to v 
 u-projuv :
 -7 
 +3 
-10 
 <v, u-projuv> = 0.000000000001 
 Press return to continue
 Press X to stop

Mathc matrices/c22n
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c00g.c */
void fun(int r)
double **A = r_mR(i_mR(r,r),9.);
double **U = r_mR(i_mR(r,r),9.);
double **Orth = i_mR(r,r);
double **D = i_mR(r,r);
 clrscrn();
 printf(" A :");
 p_mR(A,S3,P0,C6);
 printf(" u :");
 p_mR(U,S3,P0,C6); 
 stop();
 clrscrn();
 orth_Au_mR(A,U,Orth);
 printf(" Orth :");
 p_mR(Orth,S9,P4,C6);
 mul_Au_mR(A,Orth,Orth,D);
 printf(" D : <Orth,Orth> ");
 p_mR(D,S12,P4,C6);
 f_mR(A);
 f_mR(U);
 f_mR(Orth);
 f_mR(D);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
Nous orthogonalisons le vecteur u.

Exemple de sortie écran :
 A :
 -7 +6 +2 +6 
 -3 -9 -1 +6 
 -5 -9 -7 -1 
 +6 +2 -9 +6 
 u :
 -1 +4 +8 +4 
 -1 -3 +6 -3 
 +6 -7 +8 -9 
 -7 -9 +2 +4 
 Press return to continue. 
 Orth :
 -1.000 +4.021 +10.231 +1.846 
 -1.000 -2.979 +5.078 -1.752 
 +6.000 -7.128 +2.270 +2.001 
 -7.000 -8.851 +0.952 +1.521 
 D : <Orth,Orth> 
+13394.000 +0.000 +0.000 +0.000 
 +0.000 +18967.936 +0.000 -0.000 
 -0.000 -0.000 +22434.243 +0.000 
 +0.000 -0.000 +0.000 +489.962 
 Press return to continue
 Press X to stop

Mathc matrices/c22o
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c00h.c */
void fun(int r)
double **A = r_mR(i_mR(r,r),9.);
double **U = r_mR(i_mR(r,r),9.);
double **Orth = i_mR(r,r);
double **D = i_mR(r,r);
 clrscrn();
 printf(" A :");
 p_mR(A,S3,P0,C6);
 printf(" u :");
 p_mR(U,S3,P0,C6); 
 stop();
 clrscrn();
 orth_Au_mR(A,U,Orth); 
 printf(" Orth :");
 p_mR(Orth,S8,P4,C6);
 Normalize_Au_mR(A,Orth);
 printf(" N_Orth : Normalise");
 p_mR(Orth,S8,P4,C6);
 mul_Au_mR(A,Orth,Orth,D);
 printf(" D : <N_Orth,N_Orth> ");
 p_mR(D,S8,P4,C6);
 f_mR(A);
 f_mR(U);
 f_mR(Orth);
 f_mR(D);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
Nous orthnormalisons le vecteur u.
 Exemple de sortie écran :
 A :
 +2 -3 +4 
 +8 -9 +2 
 -5 +4 -5 
 u :
 -3 +8 +2 
 +6 -9 +4 
 +6 +6 -5 
 Press return to continue.

Orth :
-3.000 +0.349 +3.652 
+6.000 +6.302 +3.195 
+6.000 +21.302 -0.449 
 N_Orth : Normalise
-0.045 +0.003 +0.699 
+0.090 +0.059 +0.612 
+0.090 +0.199 -0.086 
 D : <N_Orth,N_Orth> 
+1.000 +0.000 +0.000 
-0.000 +1.000 -0.000 
+0.000 -0.000 +1.000 
 Press return to continue
 Press X to stop

Mathc matrices/c22p
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c00i.c */
void fun(int r)
double **A = r_mR(i_mR(r,r),9.);
double **U = r_mR(i_mR(r,r),9.);
double **Q = i_mR(r,r);
double **R = i_mR(r,r);
double **QR = i_mR(r,r);
 clrscrn();
 printf(" A :");
 p_mR(A,S3,P0,C6);
 printf(" U : r == c");
 p_mR(U,S3,P0,C6);
 stop();
 clrscrn(); 
 QR_Au_mR(A,U,Q,R);
 printf(" Q :");
 p_mR(Q,S10,P4,C6);
 printf(" R :");
 p_mR(R,S10,P4,C6);
 stop();
 clrscrn();
 printf(" U :");
 p_mR(U,S7,P2,C6);
 printf(" U = Q * R :"); 
 mul_mR(Q,R, QR);
 p_mR(QR,S7,P2,C6); 
 f_mR(A);
 f_mR(U);
 f_mR(Q);
 f_mR(R);
 f_mR(QR);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */
Nous calculons la QR décomposion du vecteur u. Avec u un vecteur qui a le même nombre de lignes que de colonnes.

Exemple de sortie écran :
 A :
+2.000 -3.000 -3.000 -7.000 
+2.000 -7.000 +4.000 +4.000 
+6.000 -1.000 +4.000 -7.000 
-3.000 +4.000 -3.000 +8.000 
 U : r == c
-5.000 -7.000 -9.000 -3.000 
+4.000 -3.000 +6.000 -5.000 
+4.000 -9.000 -7.000 -3.000 
-7.000 +6.000 -7.000 -7.000 
 Press return to continue. 
 Q :
-0.07032 -0.12484 +0.33591 -0.18418 
+0.05626 +0.02157 +0.00388 -0.14066 
+0.05626 -0.03306 -0.26297 -0.01346 
-0.09845 -0.03092 +0.09703 -0.07261 
 R :
 +71.09852 -95.43096 +63.41904 +62.51888 
 -0.00000 +109.83138 +107.97587 -27.30334 
 +0.00000 -0.00000 +26.61271 +25.29674 
 -0.00000 +0.00000 +0.00000 +57.06130 
 Press return to continue. 
 U :
-5.000 -7.000 -9.000 -3.000 
+4.000 -3.000 +6.000 -5.000 
+4.000 -9.000 -7.000 -3.000 
-7.000 +6.000 -7.000 -7.000 
 U = Q * R :
-5.000 -7.000 -9.000 -3.000 
+4.000 -3.000 +6.000 -5.000 
+4.000 -9.000 -7.000 -3.000 
-7.000 +6.000 -7.000 -7.000 
 Press return to continue
 Press X to stop