Exemple de sortie écran :
 Verify if A is Basis for a Row Space by Row Reduction :
 A_T :
 +2.0 +0.0 +0.0 +4.0 
 +0.0 +3.0 +0.0 +5.0 
 b :
 +0.0 
 +0.0 
 A_Tb :
 +2.0 +0.0 +0.0 +4.0 +0.0 
 +0.0 +3.0 +0.0 +5.0 +0.0 
 Press return to continue. 
 The nonzero row vectors of A_Tb form a basis
 for the row space of A_Tb, and hence form a 
 basis for the row space of A 
 A_Tb :
 +2.000 +0.000 +0.000 +4.000 +0.000 
 +0.000 +3.000 +0.000 +5.000 +0.000 
 A_Tb : gj_PP_mR(A_Tb,NO) :
 +1.000 +0.000 +0.000 +2.000 +0.000 
 +0.000 +1.000 +0.000 +1.667 +0.000 
 Press return to continue.

Mathc matrices/c24c
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c05b.c */
int main(void)
double a_Tb[RA*(CA+C1)]={
 2,0,0,4,1,0,
 0,3,0,5,0,0

double **A_Tb = ca_A_mR(a_Tb,i_Abr_Ac_bc_mR(RA,CA,C1));
double **A_T = c_Ab_A_mR(A_Tb,i_mR(RA,CA));
double **b = c_Ab_b_mR(A_Tb,i_mR(RA,C1));
 clrscrn();
 printf(" Verify if A is Basis for a Row Space by Row Reduction :\n\n");
 printf(" A_T :");
 p_mR(A_T,S6,P1,C10);
 printf(" b :");
 p_mR(b,S6,P1,C10);
 printf(" A_Tb :");
 p_mR(A_Tb,S6,P1,C10);
 stop();
 clrscrn();
 printf(" The nonzero row vectors of A_Tb form a basis\n"
 " for the row space of A_Tb, and hence form a \n"
 " basis for the row space of A \n\n"
 " Ab :");
 p_mR(A_Tb,S7,P3,C10);
 printf(" A_Tb : gj_PP_mR(A_Tb,NO) :");
 gj_PP_mR(A_Tb,NO);
 p_mR(A_Tb,S7,P3,C10);
 stop();
 f_mR(A_Tb);
 f_mR(b);
 f_mR(A_T);
 return 0;
/* ------------------------------------ */
Trouver une projection sur un sous-espace vectoriel par une application linéaire :

Exemple de sortie écran :
 Verify if A is Basis for a Row Space by Row Reduction :
 A_T :
 +2.0 +0.0 +0.0 +4.0 +1.0 
 +0.0 +3.0 +0.0 +5.0 +0.0 
 b :
 +0.0 
 +0.0 
 A_Tb :
 +2.0 +0.0 +0.0 +4.0 +1.0 +0.0 
 +0.0 +3.0 +0.0 +5.0 +0.0 +0.0 
 Press return to continue. 
 ------------------------------------ 
 The nonzero row vectors of A_Tb form a basis
 for the row space of A_Tb, and hence form a 
 basis for the row space of A 
 Ab :
 +2.000 +0.000 +0.000 +4.000 +1.000 +0.000 
 +0.000 +3.000 +0.000 +5.000 +0.000 +0.000 
 A_Tb : gj_PP_mR(A_Tb,NO) :
 +1.000 +0.000 +0.000 +2.000 +0.500 +0.000 
 +0.000 +1.000 +0.000 +1.667 +0.000 +0.000 
 Press return to continue.

Mathc matrices/c23v
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c03c.c */
int main(void)
double a_Tb[RA*(CA+C1)]={
 -2,1,0,0,
 -3,0,1,0
double **A_Tb = ca_A_mR(a_Tb,i_Abr_Ac_bc_mR(RA,CA,C1));
double **A_T = c_Ab_A_mR(A_Tb,i_mR(RA,CA));
double **b = c_Ab_b_mR(A_Tb,i_mR(RA,C1));
double **A_Tb_free = i_Abr_Ac_bc_mR(csize_A_R(A_Tb),csize_A_R(A_Tb),CFREE);
double **B = i_mR(rsize_R(A_Tb_free),csize_b_R(A_Tb_free)); 
int r;
 clrscrn();
 printf("Find a basis for the orthogonal complement of A :\n\n");
 printf(" A_T :");
 p_mR(A_T,S6,P1,C10);
 printf(" b :");
 p_mR(b,S6,P1,C10);
 printf(" A_Tb :");
 p_mR(A_Tb,S6,P1,C10);
 stop();
 clrscrn();
 printf(" A_Tb : gj_PP_mR(A_Tb,NO) :");
 gj_PP_mR(A_Tb,NO);
 p_mR(A_Tb,S7,P3,C10);
 put_var_mR(A_Tb,A_Tb_free); 
 put_freeV_mR(A_Tb_free);
 r = rsize_R(A_Tb_free);
 while(r>R1) 
 zero_below_pivot_gj1Ab_mR(A_Tb_free,r--);
 stop();
 clrscrn(); 
 printf(" A_Tb_free :"); 
 p_mR(A_Tb_free,S7,P3,C10); 
 printf(" B is a basis for the orthogonal complement of A :"); 
 P_mR(c_Ab_b_mR(A_Tb_free,B),S10,P12,C7);
 stop(); 
 f_mR(A_Tb);
 f_mR(A_Tb_free);
 f_mR(B);
 f_mR(b);
 f_mR(A_T);
 return 0;
/* ------------------------------------ */
Trouver une projection sur un sous-espace vectoriel par une application linéaire :
 Proj(x) = V * x
 V = Id - (B * inv(BT*B) * BT) .

Exemple de sortie écran :
Find a basis for the orthogonal complement of A :
 A_T :
 -2.0 +1.0 +0.0 
 -3.0 +0.0 +1.0 
 b :
 +0.0 
 +0.0 
 A_Tb :
 -2.0 +1.0 +0.0 +0.0 
 -3.0 +0.0 +1.0 +0.0 
 Press return to continue. 
 ------------------------------------ 
 A_Tb : gj_PP_mR(A_Tb,NO) :
 +1.000 -0.000 -0.333 -0.000 
 +0.000 +1.000 -0.667 +0.000 
 Press return to continue. 
 ------------------------------------ 
 A_Tb_free :
 +1.000 +0.000 +0.000 +0.000 +0.333 
 +0.000 +1.000 +0.000 +0.000 +0.667 
 +0.000 +0.000 +1.000 +0.000 +1.000 
 B is a basis for the orthogonal complement of A :
+0.000000000000, +0.333333333333, 
+0.000000000000, +0.666666666667, 
+0.000000000000, +1.000000000000 
 Press return to continue.

Mathc matrices/c23z
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : c04c.c */
int main(void)
double a_Tb[RA*(CA+C1)]={
 2,0,0,4,0,
 0,3,0,5,0
double **A_Tb = ca_A_mR(a_Tb,i_Abr_Ac_bc_mR(RA,CA,C1));
double **A_T = c_Ab_A_mR(A_Tb,i_mR(RA,CA));
double **b = c_Ab_b_mR(A_Tb,i_mR(RA,C1));
double **A_Tb_free = i_Abr_Ac_bc_mR(csize_A_R(A_Tb),csize_A_R(A_Tb),CFREE);
double **B = i_mR(rsize_R(A_Tb_free),csize_b_R(A_Tb_free)); 
int r;
 clrscrn();
 printf("Find a basis for the orthogonal complement of A :\n\n");
 printf(" A_T :");
 p_mR(A_T,S6,P1,C10);
 printf(" b :");
 p_mR(b,S6,P1,C10);
 printf(" A_Tb :");
 p_mR(A_Tb,S6,P1,C10);
 stop();
 clrscrn();
 printf(" A_Tb : gj_PP_mR(A_Tb,NO) :");
 gj_PP_mR(A_Tb,NO);
 p_mR(A_Tb,S7,P3,C10);
 put_var_mR(A_Tb,A_Tb_free); 
 put_freeV_mR(A_Tb_free);
 r = rsize_R(A_Tb_free);
 while(r>R1) 
 zero_below_pivot_gj1Ab_mR(A_Tb_free,r--);
 stop();
 clrscrn(); 
 printf(" A_Tb_free :"); 
 p_mR(A_Tb_free,S7,P3,C10); 
 printf(" B is a basis for the orthogonal complement of A :"); 
 P_mR(c_Ab_b_mR(A_Tb_free,B),S10,P12,C7);
 stop(); 
 f_mR(A_Tb);
 f_mR(A_Tb_free);
 f_mR(B);
 f_mR(b);
 f_mR(A_T);
 return 0;
/* ------------------------------------ */
Trouver une projection sur un sous-espace vectoriel par une application linéaire :
 Proj(x) = V * x
 V = Id - (B * inv(BT*B) * BT) .

Exemple de sortie écran :
Find a basis for the orthogonal complement of A :
 A_T :
 +2.0 +0.0 +0.0 +4.0 
 +0.0 +3.0 +0.0 +5.0 
 b :
 +0.0 
 +0.0 
 A_Tb :
 +2.0 +0.0 +0.0 +4.0 +0.0 
 +0.0 +3.0 +0.0 +5.0 +0.0 
 Press return to continue. 
 ------------------------------------ 
 A_Tb : gj_PP_mR(A_Tb,NO) :
 +1.000 +0.000 +0.000 +2.000 +0.000 
 +0.000 +1.000 +0.000 +1.667 +0.000 
 Press return to continue. 
 ------------------------------------ 
 A_Tb_free :
 +1.000 +0.000 +0.000 +0.000 +0.000 +0.000 -2.000 
 +0.000 +1.000 +0.000 +0.000 +0.000 +0.000 -1.667 
 +0.000 +0.000 +1.000 +0.000 +0.000 +1.000 +0.000 
 +0.000 +0.000 +0.000 +1.000 +0.000 +0.000 +1.000 
 B is a basis for the orthogonal complement of A :
+0.000000000000, +0.000000000000, -2.000000000000, 
+0.000000000000, +0.000000000000, -1.666666666667, 
+0.000000000000, +1.000000000000, +0.000000000000, 
+0.000000000000, +0.000000000000, +1.000000000000 
 Press return to continue.