Mathc complexes/04u
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
![]() |
c00a.c |
---|
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define RA R5
#define CA C5
#define Cb C1
/* ------------------------------------ */
#define CB C2 /* B : a basis for the column space of A */
/* ------------------------------------ */
#define CbFREE Cb+C4
/* ------------------------------------ */
void fun(void)
{
double ab[RA*((CA+Cb)*C2)] ={
+5*2,-1*2, -6*2,+5*2, -7*2,-6*2, 9*2,+6*2, +7*2,+8*2, 0,0,
+5*3,-1*3, -6*3,+5*3, -7*3,-6*3, 9*3,+6*3, +7*3,+8*3, 0,0,
+5*7,-1*7, -6*7,+5*7, -7*7,-6*7, 9*7,+6*7, +7*7,+8*7, 0,0,
+5*5,-1*5, -6*5,+5*5, -7*5,-6*5, 9*5,+6*5, +7*5,+8*5, 0,0,
+5*6,-1*6, -6*6,+5*6, -7*6,-6*6, 9*6,+6*6, +7*6,+8*6, 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, S6,P2, S5,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);
printf(" B :");
p_mZ(B, S6,P2, S5,P2, C6);
stop();
clrscrn();
printf(" Check if the columns of B are linearly independent\n\n"
" BT :");
p_mZ(transpose_mZ(B,BT), S6,P1, S5,P1, C6);
printf(" BTb :");
p_mZ(c_mZ(BT,BTb), S6,P1, S5,P1, C6);
printf(" gj_PP_mZ(BTb) :");
p_mZ(gj_PP_mZ(BTb), S6,P1, S5,P1, C6);
stop();
clrscrn();
printf(" BTb :");
p_mZ(BTb, S6,P1, S5,P1, C6);
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, S6,P1, S5,P1, C6);
stop();
clrscrn();
printf(" gj_mZ(BTb_New) :");
p_mZ(gj_mZ(BTb_New), S6,P2, S6,P2, C5);
printf(" b_Free : Free variables");
p_mZ(c_Ab_b_mZ(BTb_New,b_Free), S6,P2, S6,P2, C5);
stop();
clrscrn();
printf(" AT :");
p_mZ(AT, S6,P2, S6,P2, C5);
printf(" b_Free :");
p_mZ(b_Free, S6,P2, S6,P2, C5);
printf(" AT * b_Free :");
p_mZ(mul_mZ(AT,b_Free,AT_bFree), S6,P2, S6,P2, C5);
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 :
+10 -2i -12 +10i -14 -12i +18 +12i +14 +16i
+15 -3i -18 +15i -21 -18i +27 +18i +21 +24i
+35 -7i -42 +35i -49 -42i +63 +42i +49 +56i
+25 -5i -30 +25i -35 -30i +45 +30i +35 +40i
+30 -6i -36 +30i -42 -36i +54 +36i +42 +48i
b :
+0 +0i
+0 +0i
+0 +0i
+0 +0i
+0 +0i
Ab :
+10 -2i -12 +10i -14 -12i +18 +12i +14 +16i +0 +0i
+15 -3i -18 +15i -21 -18i +27 +18i +21 +24i +0 +0i
+35 -7i -42 +35i -49 -42i +63 +42i +49 +56i +0 +0i
+25 -5i -30 +25i -35 -30i +45 +30i +35 +40i +0 +0i
+30 -6i -36 +30i -42 -36i +54 +36i +42 +48i +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 :
+10.00-2.00i -12.00+10.00i -14.00-12.00i +18.00+12.00i +14.00+16.00i
+15.00-3.00i -18.00+15.00i -21.00-18.00i +27.00+18.00i +21.00+24.00i
+35.00-7.00i -42.00+35.00i -49.00-42.00i +63.00+42.00i +49.00+56.00i
+25.00-5.00i -30.00+25.00i -35.00-30.00i +45.00+30.00i +35.00+40.00i
+30.00-6.00i -36.00+30.00i -42.00-36.00i +54.00+36.00i +42.00+48.00i
gj_PP_mZ(Ab) :
+1.00+0.00i -1.35+0.73i -1.12-1.42i +1.50+1.50i +1.04+1.81i +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 +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 :
+10.00-2.00i +0.00+0.00i
+15.00-3.00i +0.00+0.00i
+35.00-7.00i +0.00+0.00i
+25.00-5.00i +0.00+0.00i
+30.00-6.00i +0.00+0.00i
Press return to continue.
Check if the columns of B are linearly independent
BT :
+10.0 -2.0i +15.0 -3.0i +35.0 -7.0i +25.0 -5.0i +30.0 -6.0i
+0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i
BTb :
+10.0 -2.0i +15.0 -3.0i +35.0 -7.0i +25.0 -5.0i +30.0 -6.0i +0.0 +0.0i
+0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i
gj_PP_mZ(BTb) :
+1.0 +0.0i +1.5 +0.0i +3.5 +0.0i +2.5 +0.0i +3.0 +0.0i +0.0 +0.0i
+0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i
Press return to continue.
BTb :
+1.0 +0.0i +1.5 +0.0i +3.5 +0.0i +2.5 +0.0i +3.0 +0.0i +0.0 +0.0i
+0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i
put_zero_row_mZ(BTb,BTb_New);
put_freeV_mZ(BTb_New);
Ab_New :
+1.0 +0.0i +1.5 +0.0i +3.5 +0.0i +2.5 +0.0i +3.0 +0.0i +0.0 +0.0i
+0.0 +0.0i +1.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i
+0.0 +0.0i +0.0 +0.0i +1.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i
+0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +1.0 +0.0i +0.0 +0.0i +0.0 +0.0i
+0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +1.0 +0.0i +0.0 +0.0i
+0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i
+1.0 +0.0i +0.0 +0.0i +0.0 +0.0i +0.0 +0.0i
+0.0 +0.0i +1.0 +0.0i +0.0 +0.0i +0.0 +0.0i
+0.0 +0.0i +0.0 +0.0i +1.0 +0.0i +0.0 +0.0i
+0.0 +0.0i +0.0 +0.0i +0.0 +0.0i +1.0 +0.0i
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
+0.00 +0.00i +1.00 +0.00i +0.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 +0.00 +0.00i +1.00 +0.00i +0.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 -1.50 -0.00i -3.50 -0.00i -2.50 -0.00i -3.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 +0.00 +0.00i +1.00 +0.00i +0.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 +0.00 +0.00i +1.00 +0.00i
b_Free : Free variables
+0.00 -0.00i -1.50 -0.00i -3.50 -0.00i -2.50 -0.00i -3.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 +0.00 +0.00i +1.00 +0.00i +0.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 +0.00 +0.00i +1.00 +0.00i
Press return to continue.
AT :
+10.00 -2.00i +15.00 -3.00i +35.00 -7.00i +25.00 -5.00i +30.00 -6.00i
-12.00+10.00i -18.00+15.00i -42.00+35.00i -30.00+25.00i -36.00+30.00i
-14.00-12.00i -21.00-18.00i -49.00-42.00i -35.00-30.00i -42.00-36.00i
+18.00+12.00i +27.00+18.00i +63.00+42.00i +45.00+30.00i +54.00+36.00i
+14.00+16.00i +21.00+24.00i +49.00+56.00i +35.00+40.00i +42.00+48.00i
b_Free :
+0.00 -0.00i -1.50 -0.00i -3.50 -0.00i -2.50 -0.00i -3.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 +0.00 +0.00i +1.00 +0.00i +0.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 +0.00 +0.00i +1.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
+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.