Exemple de sortie écran :
 Copy/Past into the octave windows 
 B=[
-7.00,+4.00,+8.00;
-9.00,-9.00,-9.00;
+6.00,-9.00,-9.00;
-9.00,+6.00,-7.00;
-5.00,-9.00,-1.00]
 [U, S, V] =svd (B,10)
 Press return to continue. 
 U :
-0.35867 +0.42201 +0.43276 
+0.64431 +0.44275 +0.13610 
+0.56518 -0.42888 -0.17300 
+0.07319 +0.64281 -0.64800 
+0.36253 +0.16949 +0.58682 
 S :
+21.18893 
+16.66846 
+10.77922 
 V:
+0.11177 +0.96859 -0.22212 
+0.71470 -0.23366 -0.65925 
+0.69044 +0.08507 +0.71837 
 Press return to continue.

Mathc matrices/c12a4
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : cgn2e.c */
/* ------------------------------------ */
void fun(int r,int c)
double **B = r_mR(i_mR(c,r),9.);
double **B_T = transpose_mR(B,i_mR(r,c));
double **U_TB = i_mR(r,r); /* rc cr */
double **U = i_mR(c,r);
double **V = i_mR(r,r);
double **V_T = i_mR(r,r);
double **S = i_mR(r,r);
double **U_T = i_mR(r,c);
double **US = i_mR(c,r); /* cr rr U*S */
double **B_2 = i_mR(c,r); /* cr rr rr B = U*S*V_T */
 clrscrn(); 
 svd_U_Rn_uv_mR(B_T,U); 
 svd_V_Rn_uv_mR(B_T,V); 
 /* S = U_T * B * V */
 transpose_mR(U,U_T);
 mul_mR(U_T,B,U_TB);
 mul_mR(U_TB,V,S);
 /* B = U * S * V_T */ 
 transpose_mR(V,V_T);
 mul_mR(U,S,US);
 mul_mR(US,V_T,B_2);
 printf(" B :");
 p_mR(B ,S10,P3,C10); 
 printf(" B = U * S * V_T ");
 p_mR(B_2,S10,P3,C10); 
 f_mR(B);
 f_mR(B_T); 
 f_mR(U); 
 f_mR(V);
 f_mR(S);
 f_mR(US);
 f_mR(V_T);
 f_mR(U_T);
 f_mR(U_TB);
 f_mR(B_2);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
int i;
do
 i = rp_I(R3)+R1;
 fun(i,i+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */

Exemple de sortie écran :
 B :
 -1.000 +2.000 -5.000 -5.000 
 -7.000 +4.000 +6.000 -3.000 
 -7.000 -5.000 +8.000 -5.000 
 +6.000 +2.000 +6.000 -9.000 
 +2.000 +4.000 -1.000 +4.000 
 -3.000 +2.000 +6.000 +6.000 
 B = U * S * V_T 
 -1.000 +2.000 -5.000 -5.000 
 -7.000 +4.000 +6.000 -3.000 
 -7.000 -5.000 +8.000 -5.000 
 +6.000 +2.000 +6.000 -9.000 
 +2.000 +4.000 -1.000 +4.000 
 -3.000 +2.000 +6.000 +6.000 
 Press return to continue
 Press X to stop

Mathc matrices/c12a5
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : cgn2f.c */
/* ------------------------------------ */
void fun(int r,int c)
double **B = r_mR(i_mR(c,r),9.);
double **B_T = transpose_mR(B,i_mR(r,c));
double **U_TB = i_mR(r,r); /* rc cr*/
double **U = i_mR(c,r);
double **V = i_mR(r,r);
double **S = i_mR(r,r);
double **S_T = i_mR(r,r);
double **invS_T = i_mR(r,r);
double **U_T = i_mR(r,c);
double **VS_T = i_mR(r,r); /* rr rr */
double **Pinv = i_mR(r,c); /* rr rr rc */
double **PinvB = i_mR(r,r); /* rr rr rc cr */
 clrscrn();
 printf(" Copy/Past into the octave windows \n\n\n");
 p_Octave_mR(B,"B",P2);
 printf("pinv(B)\n\n\n");
 stop();
 clrscrn(); 
 svd_U_Rn_uv_mR(B_T,U); 
 svd_V_Rn_uv_mR(B_T,V); 
 /* S = U_T * B * V */ 
 transpose_mR( U,U_T);
 mul_mR(U_T,B,U_TB);
 mul_mR(U_TB,V,S);
 transpose_mR(S,S_T);
 svd_inv_D_uv_mR(S_T,invS_T);
 /* PseudoInverse = V * invS_T * U_T */ 
 mul_mR(V,invS_T,VS_T);
 mul_mR(VS_T,U_T,Pinv);
 printf(" PseudoInverse = V * invS_T * U_T "); 
 p_mR(Pinv,S10,P6,C10); 
 printf(" Ide = PseudoInverse * B "); 
 mul_mR(Pinv,B,PinvB); 
 p_mR(PinvB,S10,P6,C10); 
 f_mR(B);
 f_mR(B_T);
 f_mR(U_TB); 
 f_mR(U);
 f_mR(V); 
 f_mR(S); 
 f_mR(S_T);
 f_mR(invS_T);
 f_mR(U_T); 
 f_mR(VS_T); 
 f_mR(Pinv);
 f_mR(PinvB); 
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
int i;
do
 i = rp_I(R3)+R1;
 fun(i,i+R2);
} while(stop_w());
 return 0;
/* ------------------------------------ */

Exemple de sortie écran :
 Copy/Past into the octave windows 
 B=[
+6.00,-9.00,+6.00;
+6.00,-3.00,-1.00;
+8.00,-3.00,+2.00;
-3.00,+2.00,+8.00;
+8.00,+8.00,-9.00]
pinv(B)
 Press return to continue. 
 ------------------------------------ 
 PseudoInverse = V * invS_T * U_T 
 +0.026280 +0.021775 +0.049295 +0.026483 +0.049595 
 -0.036176 -0.021542 +0.016123 +0.088165 +0.060228 
 +0.017345 -0.012610 +0.033799 +0.103693 +0.001535 
 Ide = PseudoInverse * B 
 +1.000000 +0.000000 -0.000000 
 -0.000000 +1.000000 +0.000000 
 +0.000000 -0.000000 +1.000000 
 Press return to continue
 Press X to stop

Mathc matrices/c12a6
Application
Installer et compiler ces fichiers dans votre répertoire de travail.
/* ------------------------------------ */
/* Save as : cgn6.c */
/* ------------------------------------ */
void fun(int r,int c)
double **B = r_mR(i_mR(c,r),9.);
double **B_T = transpose_mR(B,i_mR(r,c));
double **S = i_mR(r,C1);
double **U = i_mR(c,r);
double **V = i_mR(r,r);
 clrscrn(); 
 printf(" Copy/Past into the octave windows \n\n\n");
 p_Octave_mR(B,"B",P2);
 printf(" [U, S, V] =svd (B,10)\n\n\n");
 stop();
 clrscrn(); 
 svd_U_Rn_uv_mR(B_T,U); 
 svd_V_Rn_uv_mR(B_T,V); 
 svd_value_uv_mR(B,S);
 printf(" U :");
 p_mR(U,S5,P5,C10); 
 printf(" S :");
 p_mR(S,S5,P5,C10);
 printf(" V:");
 p_mR(V,S5,P5,C10); 
 f_mR(B_T);
 f_mR(B);
 f_mR(S); 
 f_mR(U);
 f_mR(V); 
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
int i;
do
 i = rp_I(R3)+R1;
 fun(i,i+R6);
} while(stop_w());
 return 0;
/* ------------------------------------ */

Exemple de sortie écran :
 Copy/Past into the octave windows 
 B=[
-1.00,-3.00;
+2.00,-3.00;
+8.00,-5.00;
-5.00,+4.00;
-7.00,-9.00;
+4.00,-7.00;
-5.00,-5.00;
+6.00,+8.00]
 [U, S, V] =svd (B,10)
 Press return to continue. 
 ------------------------------------ 
 U :
+0.17895 +0.03992 
+0.09639 +0.22832 
+0.03222 +0.67359 
-0.06430 -0.45095 
+0.64695 -0.13144 
+0.24326 +0.49087 
+0.38999 -0.14280 
-0.56895 +0.10288 
 S :
+17.39353 
+13.98088 
 V:
+0.47870 +0.87798 
+0.87798 -0.47870 
 Press return to continue
 Press X to stop

Mémoire/Cerveau
Mémoire/Neurones et synapses
Mémoire/Schémas, scripts, et frames
Mathc matrices/c12bn
Créer et initialiser des tableaux de matrices
Créer et initialiser des tableaux de matrices avec la boucle for(;;)

Mathc matrices/c12ea1
Propriétés
Quelques exemples :
Valeurs propres Vecteurs propres :
Soit A1, A2, ... un ensemble de Matrices semblables.

Mathc matrices/c12ea2
Quelques exemples :
Photographie/Fabricants/Royer/Savoy 3B
Mathc matrices/c12eb1
Quelques exemples :
Matrices triangulaires :
Matrices symétriques :
Matrices commutatives :
Matrices singulières :
Matrices orthonormales et orthogonales :

Mathc matrices/c12ec1
Application 
Installer et compiler ces fichiers dans votre répertoire de travail.
/* Save as : c00c.c */
/* ------------------------------------ */
void fun(int r, int c)
double **Ab = r_mR(i_Abr_Ac_bc_mR(r,c,C1),999.);
double **A = i_mR(r,c); 
double **subA = i_mR(r,r);
 clrscrn();
 printf(" Ab :");
 p_mR(Ab,S8,P0,C7);
 printf(" A : i_mR(r,c);");
 p_mR(c_Ab_A_mR(Ab,A),S8,P0,C7);
 printf(" subA : i_mR(r,r); \t\t c_Ab_subArxr_mR(Ab,subA); ");
 p_mR(c_Ab_subArxr_mR(Ab,subA),S8,P0,C7);
 f_mR(A); 
 f_mR(Ab);
 f_mR(subA);
/* ------------------------------------ */
int main(void)
time_t t;
 srand(time(&t));
do
 fun(rp_I(R3)+R1, rp_I(R3)+R3);
} while(stop_w());
 return 0;
/* ------------------------------------ */
 Copier la sous-matrice de Ab dans subA :
// La matrice Ab doit être initialiser avec la fonction : 
double **Ab = i_Abr_Ac_bc_mR( RAb, CA, Cb); 
// Cette fonction installe la bonne taille pour les matrices Ab, A, b.
 Cette méthode permet par exemple de faire croire à la fonction det_mR(); que la matrice est carrée. On peut calculer le déterminant de cette sous-matrice. Si il n'est pas nul, le système Ab peut être résolu avec l'algorithme du Total Pivoting.