Mathc complexes/a63
Installer et compiler ces fichiers dans votre répertoire de travail.
c00a.c |
---|
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define FACTOR_E +1.E-2
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int r,int c)
{
double **A = r_mZ(i_mZ(r,c),99);
double **A_T = ctranspose_mZ(A,i_mZ(c,r));
double **V = i_mZ(r,c);
double **U = i_mZ(r,c);
double **U_T = i_mZ(c,r); // :c,r
double **U_TA = i_mZ(c,c); // c,r r,c :c,c
double **U_TA2 = i_mZ(c,r); // c,r :c,r
double **S = i_mZ(c,c); // c,r r,c :c,c U_TA2V
clrscrn();
printf(" A :");
p_mZ(A, S10,P2, S8,P2, C3);
X_U_mZ(A_T,U,FACTOR_E);
printf(" U :");
p_mZ(U, S10,P4, S8,P4, C3);
X_V_mZ(A_T,V,FACTOR_E);
printf(" V :");
p_mZ(V, S10,P4, S8,P4, C3);
ctranspose_mZ(U,U_T);
/* S = U_T * A * V */
mul_mZ( U_T, A, U_TA); // U_TA : c,c
c_mZ( U_TA, U_TA2); // U_TA2 : c,r
mul_mZ(U_TA2, V, S); // V : r,c
printf(" S = U_T * A * V :");
p_mZ(S, S10,P4, S9,P4, C3);
f_mZ(A);
f_mZ(A_T);
f_mZ(V);
f_mZ(U);
f_mZ(U_T);
f_mZ(U_TA);
f_mZ(U_TA2);
f_mZ(S);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(R3,C2);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
A :
+64.00 +5.00i -35.00 -65.00i
-36.00 -24.00i -35.00 -5.00i
-52.00 +21.00i -54.00 -54.00i
U :
+0.5640 +0.4101i -0.3491 -0.5062i
+0.3181 -0.2159i +0.1734 +0.3296i
+0.6049 +0.0000i +0.6951 +0.0000i
V :
+0.1322 -0.1901i -0.5555 +0.7986i
+0.9728 +0.0000i +0.2315 -0.0000i
+0.0000 +0.0000i +0.0000 +0.0000i
S = U_T * A * V :
-91.6064 -65.9098i -0.0000 +0.0000i
-0.0000 -0.0000i -0.5583 -94.5191i
Press return to continue
Press X return to stop