Mathc complexes/a222
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
c00c.c |
---|
/* ------------------------------------ */
/* Save as : c00c.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define RA R4
#define CA C5
#define Cb C1
/* ------------------------------------ */
#define RAFree R5
#define CbFree C4
/* ------------------------------------ */
void fun(void)
{
double ab[RA*((CA+Cb)*C2)] ={
+2*2,-9*2, -5*2,-3*2, -3*2,-8*2, +2*2,-4*2, -8*2,-9*2, 0,0,
-3, -3, +4, +3, +1, -9, -9, +2, +1, -7, 0,0,
+2*3,-9*3, -5*3,-3*3, -3*3,-8*3, +2*3,-4*3, -8*3,-9*3, 0,0,
+2*7,-9*7, -5*7,-3*7, -3*7,-8*7, +2*7,-4*7, -8*7,-9*7, 0,0
};
double **Ab = ca_A_mZ(ab,i_Abr_Ac_bc_mZ(RA,CA,Cb));
double **A = c_Ab_A_mZ(Ab,i_mZ(RA,CA));
double **b = c_Ab_b_mZ(Ab,i_mZ(RA,Cb));
double **Ab_New = i_Abr_Ac_bc_mZ(RAFree,CA,CbFree) ;
double **b_Free = i_mZ(RAFree,CbFree);
double **AbFree = i_mZ(RA,CbFree);
clrscrn();
printf("Find a basis for the orthogonal complement of A :\n\n");
printf(" A :");
p_mZ(A, S3,P0, S3,P0, C8);
printf(" b :");
p_mZ(b, S3,P0, S3,P0, C8);
printf(" Ab :");
p_mZ(Ab, S3,P0, S3,P0, C8);
stop();
clrscrn();
printf(" gj_PP_mZ(Ab) :");
p_mZ(gj_PP_mZ(Ab), S7,P3, S7,P3, C5);
stop();
clrscrn();
put_zeroR_mZ(Ab,Ab_New);
put_freeV_mZ(Ab_New);
printf(" put_zero_row_mZ(Ab,Ab_New);\n"
" put_freeV_mZ(Ab_New);\n\n"
" Ab_New :");
p_mZ(Ab_New, S7,P3, S7,P3, C5);
stop();
clrscrn();
printf(" gj_mZ(Ab) :");
p_mZ(gj_mZ(Ab_New), S7,P3, S7,P3, C5);
printf(" new_b : Free variables");
p_mZ(c_Ab_b_mZ(Ab_New,b_Free), S8,P4, S8,P4, C4);
stop();
clrscrn();
printf(" A :");
p_mZ(A, S3,P0, S3,P0, C8);
printf(" b_Free :");
p_mZ(b_Free, S8,P4, S8,P4, C4);
printf(" A * b_Free :");
p_mZ(mul_mZ(A,b_Free,AbFree), S8,P4, S8,P4, C4);
stop();
f_mZ(Ab);
f_mZ(A);
f_mZ(b);
f_mZ(Ab_New);
f_mZ(b_Free);
f_mZ(AbFree);
}
/* ------------------------------------ */
int main(void)
{
fun();
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
On commence par calculer les variables libres.
Les colonnes de b_free sont une base pour le complément orthogonal de A.
A * b_free = 0
Cela prouve que les vecteurs lignes de A sont orthogonaux aux vecteurs colonnes de b_free.
Exemple de sortie écran :
-----------------------------------------
Find a basis for the orthogonal complement of A :
A :
+4-18i -10 -6i -6-16i +4 -8i -16-18i
-3 -3i +4 +3i +1 -9i -9 +2i +1 -7i
+6-27i -15 -9i -9-24i +6-12i -24-27i
+14-63i -35-21i -21-56i +14-28i -56-63i
b :
+0 +0i
+0 +0i
+0 +0i
+0 +0i
Ab :
+4-18i -10 -6i -6-16i +4 -8i -16-18i +0 +0i
-3 -3i +4 +3i +1 -9i -9 +2i +1 -7i +0 +0i
+6-27i -15 -9i -9-24i +6-12i -24-27i +0 +0i
+14-63i -35-21i -21-56i +14-28i -56-63i +0 +0i
Press return to continue.
-----------------------------------------
gj_PP_mZ(Ab) :
+1.000 -0.000i +0.200 -0.600i +0.776 -0.506i +0.471 +0.118i +0.765 -1.059i
+0.000 +0.000i +1.000 +0.000i +0.368 -1.383i -0.997 +0.869i +0.616 -1.405i
+0.000 +0.000i +0.000 +0.000i +0.000 +0.000i -0.000 -0.000i +0.000 +0.000i
+0.000 +0.000i +0.000 +0.000i +0.000 +0.000i -0.000 -0.000i +0.000 +0.000i
+0.000 +0.000i
+0.000 +0.000i
+0.000 +0.000i
+0.000 +0.000i
Press return to continue.
-----------------------------------------
put_zero_row_mZ(Ab,Ab_New);
put_freeV_mZ(Ab_New);
Ab_New :
+1.000 -0.000i +0.200 -0.600i +0.776 -0.506i +0.471 +0.118i +0.765 -1.059i
+0.000 +0.000i +1.000 +0.000i +0.368 -1.383i -0.997 +0.869i +0.616 -1.405i
+0.000 +0.000i +0.000 +0.000i +1.000 +0.000i +0.000 +0.000i +0.000 +0.000i
+0.000 +0.000i +0.000 +0.000i +0.000 +0.000i +1.000 +0.000i +0.000 +0.000i
+0.000 +0.000i +0.000 +0.000i +0.000 +0.000i +0.000 +0.000i +1.000 +0.000i
+0.000 +0.000i +0.000 +0.000i +0.000 +0.000i +0.000 +0.000i
+0.000 +0.000i +0.000 +0.000i +0.000 +0.000i +0.000 +0.000i
+0.000 +0.000i +1.000 +0.000i +0.000 +0.000i +0.000 +0.000i
+0.000 +0.000i +0.000 +0.000i +1.000 +0.000i +0.000 +0.000i
+0.000 +0.000i +0.000 +0.000i +0.000 +0.000i +1.000 +0.000i
Press return to continue.
-----------------------------------------
gj_mZ(Ab) :
+1.000 +0.000i -0.000 +0.000i -0.000 +0.000i -0.000 +0.000i +0.000 +0.000i
+0.000 +0.000i +1.000 +0.000i +0.000 +0.000i +0.000 +0.000i +0.000 -0.000i
+0.000 +0.000i +0.000 +0.000i +1.000 +0.000i +0.000 +0.000i +0.000 +0.000i
+0.000 -0.000i +0.000 +0.000i +0.000 +0.000i +1.000 +0.000i +0.000 +0.000i
+0.000 -0.000i +0.000 +0.000i +0.000 +0.000i +0.000 +0.000i +1.000 -0.000i
-0.000 +0.000i -1.533 +0.008i -0.149 +0.654i -1.484 +0.408i
+0.000 +0.000i -0.368 +1.383i +0.997 -0.869i -0.616 +1.405i
+0.000 +0.000i +1.000 +0.000i +0.000 +0.000i +0.000 +0.000i
+0.000 +0.000i -0.000 +0.000i +1.000 +0.000i +0.000 +0.000i
+0.000 +0.000i -0.000 -0.000i +0.000 -0.000i +1.000 +0.000i
new_b : Free variables
-0.0000 +0.0000i -1.5326 +0.0083i -0.1488 +0.6540i -1.4844 +0.4083i
+0.0000 +0.0000i -0.3684 +1.3830i +0.9965 -0.8685i -0.6159 +1.4048i
+0.0000 +0.0000i +1.0000 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i -0.0000 +0.0000i +1.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i -0.0000 -0.0000i +0.0000 -0.0000i +1.0000 +0.0000i
Press return to continue.
-----------------------------------------
A :
+4-18i -10 -6i -6-16i +4 -8i -16-18i
-3 -3i +4 +3i +1 -9i -9 +2i +1 -7i
+6-27i -15 -9i -9-24i +6-12i -24-27i
+14-63i -35-21i -21-56i +14-28i -56-63i
b_Free :
-0.0000 +0.0000i -1.5326 +0.0083i -0.1488 +0.6540i -1.4844 +0.4083i
+0.0000 +0.0000i -0.3684 +1.3830i +0.9965 -0.8685i -0.6159 +1.4048i
+0.0000 +0.0000i +1.0000 +0.0000i +0.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i -0.0000 +0.0000i +1.0000 +0.0000i +0.0000 +0.0000i
+0.0000 +0.0000i -0.0000 -0.0000i +0.0000 -0.0000i +1.0000 +0.0000i
A * b_Free :
+0.0000 +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 +0.0000 -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 -0.0000 -0.0000i +0.0000 +0.0000i
Press return to continue.