Mathc complexes/a270
Installer et compiler ces fichiers dans votre répertoire de travail.
c00b.c |
---|
/* ------------------------------------ */
/* Save as : c00b.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define FACTOR_E +1.E-2
/* ------------------------------------ */
/* ------------------------------------ */
void fun(int r)
{
double **A = r_mZ(i_mZ(r,r),99);
double **A_T = ctranspose_mZ(A,i_mZ(r,r));
double **V = i_mZ(r,r);
double **U = i_mZ(r,r);
double **U_T = i_mZ(r,r);
double **U_TA = i_mZ(r,r);
double **S = i_mZ(r,r);
double **V_T = i_mZ(r,r);
double **VS = i_mZ(r,r);
double **P = i_mZ(r,r);
double **Q = i_mZ(r,r);
double **QP = i_mZ(r,r);
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);
mul_mZ(U_TA, V, S);
printf(" S = U_T * A * V :");
p_mZ(S, S10,P4, S9,P4, C3);
stop();
clrscrn();
ctranspose_mZ(V,V_T);
/* A = (U * V_T) *(V * S * V_T) */
mul_mZ(V,S,VS);
mul_mZ(VS,V_T, P);
mul_mZ(U,V_T, Q);
mul_mZ(Q,P, QP);
printf(" P = V * S * V_T");
p_mZ(P, S10,P2, S8,P2, C3);
printf(" Q = U * V_T");
p_mZ(Q, S10,P2, S8,P2, C3);
printf(" A :");
p_mZ(A, S10,P2, S8,P2, C3);
printf(" A = QP (U * V_T) (V * S * V_T)");
p_mZ(QP, S10,P2, S8,P2, C3);
stop();
clrscrn();
/* det(A) = det(Q) det(P) */
printf(" det(A) \t= ");
p_Z(det_Z(A), S4,P0, S5,P0);printf("\n");
printf(" det(Q) det(P)\t= ");
p_Z(mul_Z(det_Z(P),det_Z(Q)), S4,P0, S5,P0);printf("\n\n\n");
f_mZ(A);
f_mZ(A_T);
f_mZ(V);
f_mZ(V_T);
f_mZ(U);
f_mZ(U_T);
f_mZ(U_TA);
f_mZ(S);
f_mZ(VS);
f_mZ(P);
f_mZ(Q);
f_mZ(QP);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(RC3);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
----------------------------------
A :
+95.00 -46.00i -17.00 -98.00i +47.00 +76.00i
-28.00 -68.00i +60.00 +70.00i +43.00 +54.00i
+16.00 -69.00i -20.00 -72.00i +45.00 -6.00i
U :
+0.6768 +0.5100i -0.0261 -0.0418i -0.4254 -0.3138i
+0.0402 -0.0875i -0.2574 +0.9319i +0.0534 -0.2306i
+0.5221 +0.0000i +0.2507 +0.0000i +0.8152 +0.0000i
V :
+0.0658 +0.6580i -0.4143 +0.1461i +0.2570 -0.5511i
-0.4961 +0.2943i +0.7215 +0.1409i -0.1897 -0.3014i
+0.4796 -0.0000i +0.5163 +0.0000i +0.7095 +0.0000i
S = U_T * A * V :
+189.8870 +63.1043i -0.0000 -0.0000i +0.0000 +0.0000i
-0.0000 +0.0000i +89.3395-107.4784i -0.0000 +0.0000i
+0.0000 +0.0000i -0.0000 -0.0000i -24.4031 -13.6424i
Press return to continue.
----------------------------------
P = V * S * V_T
+91.25 +1.81i +44.74 -17.00i -34.71 +98.70i
-39.06 +93.95i +108.36 -38.82i -12.62 -14.71i
-0.43 -53.71i -4.61 -91.73i +55.21 -21.01i
Q = U * V_T
+0.45 -0.71i -0.04 -0.55i +0.01 +0.00i
+0.33 -0.41i -0.04 +0.80i -0.08 +0.28i
+0.14 +0.07i -0.23 +0.06i +0.96 +0.00i
A :
+95.00 -46.00i -17.00 -98.00i +47.00 +76.00i
-28.00 -68.00i +60.00 +70.00i +43.00 +54.00i
+16.00 -69.00i -20.00 -72.00i +45.00 -6.00i
A = QP (U * V_T) (V * S * V_T)
+95.00 -46.00i -17.00 -98.00i +47.00 +76.00i
-28.00 -68.00i +60.00 +70.00i +43.00 +54.00i
+16.00 -69.00i -20.00 -72.00i +45.00 -6.00i
Press return to continue.
----------------------------------
det(A) = -658914-420875i
det(Q) det(P) = -658914-420875i
Press return to continue
Press X return to stop