Mathc complexes/02x
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/Paste 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 :
+97 +39i +62 -61i -21 +82i -20 +24i +7 -57i
+39 -67i -48 +24i +8 +96i -29 -49i +3 +33i
+44 -24i +11 -30i -2 +80i +56 +41i -76 +97i
U :
-0.5767 +0.0144i +0.2477 -0.1026i +0.1352 -0.2130i
-0.0693 -0.3410i +0.1149 -0.0746i +0.2185 +0.6093i
+0.2587 +0.5025i -0.0688 -0.4765i +0.3063 +0.2575i
-0.1155 +0.1665i -0.2296 +0.4287i +0.4558 -0.0861i
+0.4309 +0.0000i +0.6641 +0.0000i +0.3769 -0.0000i
V :
+0.3300 +0.5138i -0.6344 -0.2204i +0.1909 -0.3737i
+0.3911 -0.2575i -0.2989 -0.4506i -0.1698 +0.6779i
+0.6386 +0.0000i +0.5065 -0.0000i +0.5793 +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 :
-192.2513+123.5090i -0.0000 -0.0000i +0.0000 -0.0000i
+0.0000 +0.0000i -69.4741+117.9357i +0.0000 +0.0000i
+0.0000 -0.0000i +0.0000 -0.0000i +1.2412+106.9157i
invX :
-3.6819e-03-2.3654e-03i +0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i
+0.0000e+00+0.0000e+00i -3.7082e-03-6.2948e-03i +0.0000e+00+0.0000e+00i
+0.0000e+00+0.0000e+00i +0.0000e+00+0.0000e+00i +1.0857e-04-9.3519e-03i
Copy/Paste into the octave window.
A=[
+97+39*i,+62-61*i,-21+82*i,-20+24*i,+7-57*i;
+39-67*i,-48+24*i,+8+96*i,-29-49*i,+3+33*i;
+44-24*i,+11-30*i,-2+80*i,+56+41*i,-76+97*i]
format short e
pinv(A)
Press return to continue.
Pinv = U * invX * V_T:
+2.7418e-03-1.2578e-03i +9.6767e-04+2.2749e-03i -5.6030e-04-5.0590e-04i
+3.0451e-03+2.5985e-03i -2.4244e-03-3.4002e-03i +2.5088e-03-4.6530e-04i
+1.5949e-03-2.5635e-03i -1.7819e-03-3.9695e-03i +1.7508e-04-2.1010e-03i
-6.7249e-04-7.5629e-04i -3.3555e-03+2.9583e-03i +1.8836e-03-2.7651e-03i
+2.7614e-03+1.9307e-03i -1.3421e-04-9.6610e-05i -2.2368e-03-4.8101e-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