Mathc complexes/a316
SVD Singular Value Decomposition
Installer et compiler ces fichiers dans votre répertoire de travail.
![]() |
c00c.c |
---|
/* ------------------------------------ */
/* save as : c00c.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define FACTOR_E +1.E-4
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int rc)
{
double **A = r_mZ( i_mZ(rc,rc), 99);
double **A_T = ctranspose_mZ(A, i_mZ(rc,rc));
double **A_TA = mul_mZ(A_T, A, i_mZ(rc,rc));
double **U = X_U_mZ(A_TA, i_mZ(rc,rc), FACTOR_E);
double **U_T = ctranspose_mZ(U, i_mZ(rc,rc));
double **UU_T = mul_mZ(U, U_T, i_mZ(rc,rc));
double **U_TU = mul_mZ(U_T, U, i_mZ(rc,rc));
clrscrn();
printf(" A :");
p_mZ(A, S10,P2, S8,P2, C4);
printf(" A_TA :");
p_mZ(A_TA, S12,P2, S10,P2, C3);
stop();
clrscrn();
printf(" U :");
p_mZ(U, S8,P4, S7,P4, C4);
printf(" U * U_T :");
p_mZ(UU_T, S7,P2, S6,P2, C6);
printf(" U_T * U :");
p_mZ(U_TU, S7,P2, S6,P2, C6);
f_mZ(A);
f_mZ(A_T);
f_mZ(A_TA);
f_mZ(U);
f_mZ(U_T);
f_mZ(UU_T);
f_mZ(U_TU);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(RC4);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
A :
-81.00 +77.00i -89.00 -68.00i -39.00 +51.00i +33.00 +6.00i
-18.00 -32.00i +81.00 -78.00i +15.00 +45.00i +41.00 -30.00i
-13.00 -38.00i -90.00 +95.00i +42.00 +39.00i -11.00 -71.00i
+18.00 +4.00i -94.00 +77.00i -26.00 +76.00i -23.00 +85.00i
A_TA :
+15791.00 +0.00i -813.00 +13464.00i +3184.00 +1103.00i
-813.00 -13464.00i +57080.00 +0.00i +5929.00 -15018.00i
+3184.00 -1103.00i +5929.00 +15018.00i +16109.00 +0.00i
+778.00 -952.00i +5268.00 -3694.00i +2111.00 +7227.00i
+778.00 +952.00i
+5268.00 +3694.00i
+2111.00 -7227.00i
+16622.00 +0.00i
Press return to continue.
U :
-0.1357+0.2246i +0.0499+0.0314i +0.6833-0.6543i -0.1750+0.0456i
+0.8038+0.4366i +0.0865+0.0937i +0.1159+0.1655i -0.2442-0.2159i
-0.0359+0.2960i +0.1425-0.5595i +0.0323+0.2285i -0.1988+0.6964i
+0.0746+0.0000i +0.8043+0.0000i +0.1047-0.0000i +0.5801-0.0000i
U * U_T :
+1.00 +0.00i -0.00 +0.00i +0.00 +0.00i -0.00 -0.00i
-0.00 -0.00i +1.00 +0.00i +0.00 -0.00i -0.00 -0.00i
+0.00 -0.00i +0.00 +0.00i +1.00 +0.00i -0.00 +0.00i
-0.00 +0.00i -0.00 +0.00i -0.00 -0.00i +1.00 +0.00i
U_T * U :
+1.00 +0.00i -0.00 -0.00i -0.00 -0.00i +0.00 +0.00i
-0.00 +0.00i +1.00 +0.00i +0.00 +0.00i +0.00 +0.00i
-0.00 +0.00i +0.00 -0.00i +1.00 +0.00i -0.00 -0.00i
+0.00 -0.00i +0.00 -0.00i -0.00 +0.00i +1.00 +0.00i
Press return to continue
Press X return to stop