Mathc complexes/04z
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
/* ------------------------------------ */
#define Cx C3
#define Cy 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 **cx = i_mZ(RA,C1);
double **cy = i_mZ(RA,C1);
double **cxplscy = i_mZ(RA,C1);
double **AT_cxplscy = i_mZ(CA,C1);
clrscrn();
printf(" Verify if the sum of two columns of b_free\n"
" is orthogonal to AT :\n\n");
printf(" A :");
p_mZ(A, S4,P0, S4,P0, C6);
printf(" AT :");
p_mZ(AT, S6,P2, S6,P2, C5);
stop();
gj_PP_mZ(Ab);
c_c_mZ(A,C1,B,C1);
transpose_mZ(B,BT);
c_mZ(BT,BTb);
gj_PP_mZ(BTb);
put_zeroR_mZ(BTb,BTb_New);
put_freeV_mZ(BTb_New);
gj_mZ(BTb_New);
c_Ab_b_mZ(BTb_New,b_Free);
c_c_mZ(b_Free,Cx,cx,C1);
c_c_mZ(b_Free,Cy,cy,C1);
add_mZ(cx,cy,cxplscy);
mul_mZ(AT,cxplscy,AT_cxplscy);
clrscrn();
printf(" b_Free :");
p_mZ(b_Free, S6,P2, S6,P2, C5);
printf(" C%d + C%d :",Cx,Cy);
p_mZ(cxplscy, S8,P2, S8,P2, C4);
printf(" AT * (C%d+C%d) :",Cx,Cy);
p_mZ(AT_cxplscy, S8,P9, S8,P9, C4);
stop();
f_mZ(Ab);
f_mZ(A);
f_mZ(b);
f_mZ(B);
f_mZ(BT);
f_mZ(BTb);
f_mZ(cx);
f_mZ(cy);
f_mZ(cxplscy);
f_mZ(AT_cxplscy);
}
/* ------------------------------------ */
int main(void)
{
fun();
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
On peut sélectionner les colonnes de travail dans le code ci-dessous.
#define Cx C3
#define Cy C4
Exemple de sortie écran :
Verify if the sum of two columns of b_free
is orthogonal to AT :
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
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
Press return to continue.
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
C3 + C4 :
-6.00 -0.00i
+0.00 +0.00i
+1.00 +0.00i
+1.00 +0.00i
+0.00 +0.00i
AT * (C3+C4) :
-0.000000000+0.000000000i
+0.000000000-0.000000000i
+0.000000000+0.000000000i
-0.000000000-0.000000000i
-0.000000000-0.000000000i
Press return to continue.