Mathc matrices/c12b10
Installer ce fichier dans votre répertoire de travail.
ccn4.c |
---|
/* ------------------------------------ */
/* Save as : ccn4.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 **S = i_mR(r,C1);
double **U = i_mR(r,r);
double **V = i_mR(c,c);
clrscrn();
printf(" Copy/Past into the octave windows \n\n\n");
p_Octave_mR(A,"A",P2);
printf(" [U, S, V] =svd (A,10)\n\n\n");
stop();
clrscrn();
transpose_mR(A,A_T);
svd_U_Cn_mR(A,U);
svd_V_Cn_mR(A,V);
svds_mR(A_T,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(A);
f_mR(A_T);
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+C4);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Les quatre dernières colonnes de V ne correspondent pas à celles données par octave.
Exemple de sortie écran :
------------------------------------
Copy/Past into the octave windows
A=[
-5.00,+6.00,-3.00,-9.00,-3.00,-3.00,+8.00,-5.00;
+8.00,-5.00,-1.00,+2.00,-5.00,-9.00,-1.00,-1.00;
+8.00,-9.00,+2.00,+2.00,+4.00,-1.00,-7.00,-3.00;
+6.00,-5.00,-3.00,+6.00,-5.00,-1.00,+6.00,-9.00]
[U, S, V] =svd (A,10)
Press return to continue.
------------------------------------
U :
-0.51015 +0.59266 +0.30882 +0.54142
+0.47129 +0.35875 +0.72091 -0.35983
+0.60712 -0.21767 +0.09020 +0.75887
+0.38606 +0.68752 -0.61383 -0.03869
S :
+22.26857
+17.28637
+9.46701
+7.25727
V:
+0.60598 +0.13250 -0.13328 -0.03487 +0.63299 -0.20266 +0.72381 +0.08430
-0.57533 +0.01641 -0.05342 +0.21892 +0.00000 +0.00000 +0.61875 +0.00000
+0.05008 -0.26811 -0.03956 -0.05090 +0.00000 +0.00000 +0.00000 +0.92299
+0.40705 -0.05361 +0.51127 +0.59345 -0.35738 +0.35185 -0.11970 -0.00337
-0.01472 -0.45585 +0.11630 -0.46903 +0.00000 +0.67844 -0.00000 +0.00000
-0.16635 -0.31681 +0.72790 -0.12319 +0.39498 -0.51555 +0.27773 -0.06937
-0.29126 +0.58030 +0.27091 +0.11755 +0.39274 +0.33025 -0.04220 +0.36900
-0.14444 -0.51235 -0.31571 +0.58916 +0.40168 +0.00000 -0.00000 -0.00000
Press return to continue
Press X to stop