Mathc complexes/00f
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
c00a.c |
---|
/* ------------------------------------ */
/* Xave 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 **Acc = i_mZ(c,c);
double **V = i_mZ(c,r);
double **U = i_mZ(c,r);
double **V_T = i_mZ(r,c);
double **V_TAcc = i_mZ(r,c);
double **X = i_mZ(r,r);
double **invX = i_mZ(r,r);
double **UinvX = i_mZ(c,r);
double **Pinv = i_mZ(c,c);
double **APinv = i_mZ(r,c);
clrscrn();
printf(" A :");
p_mZ(A, S5,P0, S4,P0, C6);
printf(" U :");
X_U_mZ(A,U,FACTOR_E);
p_mZ(U, S10,P4, S8,P4, C3);
printf(" V :");
X_V_mZ(A,V,FACTOR_E);
p_mZ(V, S10,P4, S8,P4, C3);
ctranspose_mZ(V,V_T);
stop();
clrscrn();
printf(" X = V_T * A * U :");
c_mZ(A, Acc);
mul_mZ(V_T, Acc, V_TAcc);
mul_mZ(V_TAcc, U, X);
p_mZ(X, S10,P4, S9,P4, C3);
printf(" invX :");
X_inv_mZ(X, invX);
pE_mZ(invX, S10,P4, S8,P4, C3);
printf(" Copy/Past into the octave window.\n\n");
p_Octave_mZ(A,"A",P0, P0);
printf(" format short e\n");
printf(" pinv(A)\n\n");
stop();
clrscrn();
printf(" Pinv = U * invX * V_T:");
mul_mZ(U,invX,UinvX);
mul_mZ(UinvX,V_T,Pinv);
pE_mZ(Pinv, S10,P4, S8,P4, C3);
printf(" Ide = A * Pinv");
mul_mZ(A,Pinv,APinv);
p_mZ(APinv, S5,P2, S8,P4, C6);
f_mZ(A);
f_mZ(Acc);
f_mZ(U);
f_mZ(V);
f_mZ(V_T);
f_mZ(V_TAcc);
f_mZ(X);
f_mZ(APinv);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(R3,C5);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
A :
+79 -95i -52 -6i +63 +60i +39 +49i -11 -81i
-6 +64i -57 -59i +33 -68i -78 -23i +95 +88i
-8 +2i +24 -91i -48 +83i +43 -43i -33 +72i
U :
+0.2897 -0.3479i -0.0491 +0.3894i -0.4029 +0.1109i
-0.3576 +0.0845i -0.4861 -0.0097i -0.4927 -0.2753i
-0.0370 +0.1038i +0.7613 -0.0747i -0.4967 -0.2731i
-0.4220 -0.1392i -0.0070 +0.1494i +0.2231 +0.2956i
+0.6711 +0.0000i +0.0454 -0.0000i +0.2199 +0.0000i
V :
-0.4101 +0.3288i +0.2434 -0.6585i +0.0143 +0.4803i
+0.1101 -0.7345i -0.2447 -0.0933i +0.1865 +0.5874i
+0.4149 -0.0000i +0.6622 -0.0000i +0.6239 +0.0000i
+0.0000 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
Press return to continue.
X = V_T * A * U :
-134.0841+217.8061i +0.0000 +0.0000i -0.0000 -0.0000i
-0.0000 +0.0000i -58.3604+177.5035i -0.0000 +0.0000i
-0.0000 +0.0000i -0.0000 +0.0000i +44.3668 +43.8762i
invX :
-2.0497e-03-3.3295e-03i +0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i
+0.0000e+00+0.0000e+00i -1.6716e-03-5.0841e-03i +0.0000e+00+0.0000e+00i
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i +1.1395e-02-1.1269e-02i
Copy/Past into the octave window.
A=[
+79-95*i,-52-6*i,+63+60*i,+39+49*i,-11-81*i;
-6+64*i,-57-59*i,+33-68*i,-78-23*i,+95+88*i;
-8+2*i,+24-91*i,-48+83*i,+43-43*i,-33+72*i]
format short e
pinv(A)
Press return to continue.
Pinv = U * invX * V_T:
+4.1412e-03+3.6273e-03i +2.3107e-03+2.0210e-03i -1.4464e-03+3.2510e-03i
-4.9814e-04+4.5782e-03i -1.2604e-03+5.8906e-03i -4.5124e-03+3.5769e-03i
+2.9307e-03+2.1306e-03i +6.9674e-04+6.6582e-03i -6.3713e-03-9.6693e-04i
+1.2147e-03-3.1777e-03i +2.3109e-04-2.6850e-03i +4.3416e-03+1.0927e-03i
-1.1917e-03+2.3334e-05i +5.4113e-04-3.1414e-03i +9.4274e-04-2.6262e-03i
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i
Ide = A * Pinv
+1.00 +0.0000i +0.00 -0.0000i +0.00 +0.0000i +0.00 +0.0000i +0.00 +0.0000i
+0.00 -0.0000i +1.00 -0.0000i +0.00 +0.0000i +0.00 +0.0000i +0.00 +0.0000i
+0.00 +0.0000i +0.00 +0.0000i +1.00 +0.0000i +0.00 +0.0000i +0.00 +0.0000i
Press return to continue
Press X return to stop