Mathc complexes/04v
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
c00a.c |
|---|
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define RA R4
#define CA C5
#define Cb C1
/* ------------------------------------ */
#define CB C2 /* B : a basis for the column space of A */
/* ------------------------------------ */
#define CbFREE Cb+C2
/* ------------------------------------ */
void fun(void)
{
double ab[RA*((CA+Cb)*C2)] ={
-3*1,-1*1, +8*1,-3*1, +2*1,+8*1, +8*1,+6*1, +7*1,+8*1, 0,0,
-3*2,-1*2, +8*2,-3*2, +2*2,+8*2, +8*2,+6*2, +7*2,+8*2, 0,0,
-3*7,-1*7, +8*7,-3*7, +2*7,+8*7, +8*7,+6*7, +7*7,+8*7, 0,0,
+2*1,-1*1, -6*1,+2*1, -7*1,-6*1, -1*1,+0*1, +4*1,+3*1, 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 **AT = transpose_mZ(A, i_mZ(CA,RA));
double **B = i_mZ(RA,CB) ;
double **BT = i_mZ(CB,RA) ;
double **BTb = i_Abr_Ac_bc_mZ(CB,RA,Cb);
double **BTb_New = i_Abr_Ac_bc_mZ(RA,RA,CbFREE);
double **b_Free = i_mZ(RA,CbFREE);
double **AT_bFree = i_mZ(CA,CbFREE);
clrscrn();
printf("Basis for a Column Space by Row Reduction :\n\n");
printf(" A :");
p_mZ(A, S4,P0, S4,P0, C6);
printf(" b :");
p_mZ(b, S4,P0, S4,P0, C6);
printf(" Ab :");
p_mZ(Ab, S4,P0, S4,P0, C6);
stop();
clrscrn();
printf(" The leading 1’s of Ab give the position \n"
" of the columns of A which form a basis \n"
" for the column space of A \n\n"
" A :");
p_mZ(A, S7,P2, S6,P2, C6);
printf(" gj_PP_mZ(Ab) :");
p_mZ(gj_PP_mZ(Ab), S6,P2, S5,P2, C6);
c_c_mZ(A,C1,B,C1);
c_c_mZ(A,C4,B,C2);
printf(" B :");
p_mZ(B, S7,P2, S6,P2, C6);
stop();
clrscrn();
printf(" Check if the columns of B are linearly independent\n\n"
" BT :");
p_mZ(transpose_mZ(B,BT), S4,P0, S3,P0, C6);
printf(" BTb :");
p_mZ(c_mZ(BT,BTb), S4,P0, S3,P0, C6);
printf(" gj_PP_mZ(BTb) :");
p_mZ(gj_PP_mZ(BTb), S8,P2, S8,P2, C4);
stop();
clrscrn();
printf(" BTb :");
p_mZ(BTb, S8,P2, S8,P2, C4);
put_zeroR_mZ(BTb,BTb_New);
put_freeV_mZ(BTb_New);
printf(" put_zero_row_mZ(BTb,BTb_New);\n"
" put_freeV_mZ(BTb_New);\n\n"
" Ab_New :");
p_mZ(BTb_New, S8,P2, S8,P2, C4);
stop();
clrscrn();
printf(" gj_mZ(BTb_New) :");
p_mZ(gj_mZ(BTb_New), S8,P2, S8,P2, C4);
printf(" b_Free : Free variables");
p_mZ(c_Ab_b_mZ(BTb_New,b_Free), S8,P2, S8,P2, C4);
stop();
clrscrn();
printf(" AT :");
p_mZ(AT, S8,P2, S8,P2, C4);
printf(" b_Free :");
p_mZ(b_Free, S8,P2, S8,P2, C4);
printf(" AT * b_Free :");
p_mZ(mul_mZ(AT,b_Free,AT_bFree), S8,P2, S8,P2, C4);
stop();
f_mZ(Ab);
f_mZ(A);
f_mZ(b);
f_mZ(B);
f_mZ(BT);
f_mZ(BTb);
}
/* ------------------------------------ */
int main(void)
{
fun();
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Si B une base de l'espace colonnes de A,
les vecteurs libres du système BTb, seront une base pour le complément orthogonal de AT.
Exemple de sortie écran :
Basis for a Column Space by Row Reduction :
A :
-3 -1i +8 -3i +2 +8i +8 +6i +7 +8i
-6 -2i +16 -6i +4 +16i +16 +12i +14 +16i
-21 -7i +56 -21i +14 +56i +56 +42i +49 +56i
+2 -1i -6 +2i -7 -6i -1 +0i +4 +3i
b :
+0 +0i
+0 +0i
+0 +0i
+0 +0i
Ab :
-3 -1i +8 -3i +2 +8i +8 +6i +7 +8i +0 +0i
-6 -2i +16 -6i +4 +16i +16 +12i +14 +16i +0 +0i
-21 -7i +56 -21i +14 +56i +56 +42i +49 +56i +0 +0i
+2 -1i -6 +2i -7 -6i -1 +0i +4 +3i +0 +0i
Press return to continue.
The leading 1’s of Ab give the position
of the columns of A which form a basis
for the column space of A
A :
-3.00 -1.00i +8.00 -3.00i +2.00 +8.00i +8.00 +6.00i +7.00 +8.00i
-6.00 -2.00i +16.00 -6.00i +4.00+16.00i +16.00+12.00i +14.00+16.00i
-21.00 -7.00i +56.00-21.00i +14.00+56.00i +56.00+42.00i +49.00+56.00i
+2.00 -1.00i -6.00 +2.00i -7.00 -6.00i -1.00 +0.00i +4.00 +3.00i
gj_PP_mZ(Ab) :
+1.00-0.00i -2.10+1.70i -1.40-2.20i -3.00-1.00i -2.90-1.70i -0.00+0.00i
-0.00+0.00i +1.00+0.00i +0.71+0.14i -0.71+1.00i -2.14+1.14i -0.00+0.00i
+0.00-0.00i +0.00+0.00i -0.00-0.00i +0.00-0.00i +0.00+0.00i +0.00+0.00i
+0.00-0.00i +0.00+0.00i -0.00-0.00i +0.00-0.00i +0.00+0.00i +0.00+0.00i
B :
-3.00 -1.00i +8.00 +6.00i
-6.00 -2.00i +16.00+12.00i
-21.00 -7.00i +56.00+42.00i
+2.00 -1.00i -1.00 +0.00i
Press return to continue.
Check if the columns of B are linearly independent
BT :
-3 -1i -6 -2i -21 -7i +2 -1i
+8 +6i +16+12i +56+42i -1 +0i
BTb :
-3 -1i -6 -2i -21 -7i +2 -1i +0 +0i
+8 +6i +16+12i +56+42i -1 +0i +0 +0i
gj_PP_mZ(BTb) :
+1.00 +0.00i +2.00 +0.00i +7.00 +0.00i -0.08 +0.06i
+0.00 +0.00i +0.00 +0.00i +0.00 +0.00i +1.00 -0.00i
+0.00 +0.00i
+0.00 +0.00i
Press return to continue.
BTb :
+1.00 +0.00i +2.00 +0.00i +7.00 +0.00i -0.08 +0.06i
+0.00 +0.00i +0.00 +0.00i +0.00 +0.00i +1.00 -0.00i
+0.00 +0.00i
+0.00 +0.00i
put_zero_row_mZ(BTb,BTb_New);
put_freeV_mZ(BTb_New);
Ab_New :
+1.00 +0.00i +2.00 +0.00i +7.00 +0.00i -0.08 +0.06i
+0.00 +0.00i +1.00 +0.00i +0.00 +0.00i +0.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +1.00 +0.00i +0.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +0.00 +0.00i +1.00 -0.00i
+0.00 +0.00i +0.00 +0.00i +0.00 +0.00i
+0.00 +0.00i +1.00 +0.00i +0.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +1.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +0.00 +0.00i
Press return to continue.
gj_mZ(BTb_New) :
+1.00 +0.00i +0.00 -0.00i +0.00 -0.00i +0.00 -0.00i
+0.00 +0.00i +1.00 +0.00i +0.00 +0.00i +0.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +1.00 +0.00i +0.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +0.00 +0.00i +1.00 +0.00i
+0.00 -0.00i -2.00 -0.00i -7.00 -0.00i
+0.00 +0.00i +1.00 +0.00i +0.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +1.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +0.00 +0.00i
b_Free : Free variables
+0.00 -0.00i -2.00 -0.00i -7.00 -0.00i
+0.00 +0.00i +1.00 +0.00i +0.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +1.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +0.00 +0.00i
Press return to continue.
AT :
-3.00 -1.00i -6.00 -2.00i -21.00 -7.00i +2.00 -1.00i
+8.00 -3.00i +16.00 -6.00i +56.00 -21.00i -6.00 +2.00i
+2.00 +8.00i +4.00 +16.00i +14.00 +56.00i -7.00 -6.00i
+8.00 +6.00i +16.00 +12.00i +56.00 +42.00i -1.00 +0.00i
+7.00 +8.00i +14.00 +16.00i +49.00 +56.00i +4.00 +3.00i
b_Free :
+0.00 -0.00i -2.00 -0.00i -7.00 -0.00i
+0.00 +0.00i +1.00 +0.00i +0.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +1.00 +0.00i
+0.00 +0.00i +0.00 +0.00i +0.00 +0.00i
AT * b_Free :
+0.00 +0.00i +0.00 +0.00i +0.00 +0.00i
+0.00 +0.00i +0.00 +0.00i -0.00 +0.00i
+0.00 +0.00i +0.00 +0.00i -0.00 -0.00i
+0.00 +0.00i +0.00 +0.00i -0.00 -0.00i
+0.00 +0.00i +0.00 +0.00i -0.00 -0.00i
Press return to continue.