Mathc matrices/c05b2
Calculer les Valeurs Singulières
Installer et compiler ces fichiers dans votre répertoire de travail.
b02.c |
---|
/* ------------------------------------ */
/* Save as : b02.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r,int c)
{
double **A = r_mR(i_mR(r,c),9);
double **A_t = i_mR(c,r);
double **AA_t = i_mR(r,r);
double **A_tA = i_mR(c,c);
clrscrn();
printf(" A \n");
p_mR(A,3,0,C6);
printf(" A^t (transpose)\n");
p_mR(transpose_mR(A,A_t),S3,P0,C6);
stop();
clrscrn();
printf(" AA_t : ");
p_mR(mul_mR(A,A_t,AA_t),S8,P0,C6);
printf(" A_tA : ");
p_mR(mul_mR(A_t,A,A_tA),S8,P0,C6);
f_mR(A);
f_mR(A_t);
f_mR(AA_t);
f_mR(A_tA);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
fun(rp_I(R6),rp_I(C6));
while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Multiplions une matrice par sa transposé. Nous obtenons une matrice carré, avec des valeurs toujours positives sur la diagonale. Exemple de sortie écran :
A
-8 +1 +5 -8 -2 -4
-3 -5 +6 -8 +3 -9
-9 -5 +6 -1 -1 +3
+5 +1 -8 +8 -8 -3
+5 +7 +1 -6 +5 +5
A^t (transpose)
-8 -3 -9 +5 +5
+1 -5 -5 +1 +7
+5 +6 +6 -8 +1
-8 -8 -1 +8 -6
-2 +3 -1 -8 +5
-4 -9 +3 -3 +5
Press return to continue.
------------------------------
AA_t :
+174 +143 +95 -115 -10
+143 +224 +66 -129 -26
+95 +66 +153 -107 -58
-115 -129 -107 +227 -79
-10 -26 -58 -79 +161
A_tA :
+204 +92 -147 +107 +1 +42
+92 +101 -56 +3 +15 +58
-147 -56 +162 -164 +71 -27
+107 +3 -164 +229 -101 +47
+1 +15 +71 -101 +103 +27
+42 +58 -27 +47 +27 +140
Press return to continue
Press X to stop