Mathc complexes/a252
Apparence
Installer et compiler ces fichiers dans votre répertoire de travail.
![]() |
c04c.c |
---|
/* ------------------------------------ */
/* Save as : c04c.c */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define RAT R2
#define CAT C4
#define Cb C1
/* ------------------------------------ */
#define CFREE Cb+C2
/* ------------------------------------ */
int main(void)
{
double a_Tb[RAT*((CAT+Cb)*C2)]={
-2,+3, +1,+0, +0,-1, 3,-5, +0,+0,
-4,+2, -3,+5, -6,+4,-1,+0, +0,+0
};
double **ATb = ca_A_mZ(a_Tb, i_Abr_Ac_bc_mZ(RAT,CAT,Cb));
double **AT = c_Ab_A_mZ(ATb, i_mZ(RAT,CAT));
double **b = c_Ab_b_mZ(ATb, i_mZ(RAT,Cb));
double **ATb_free = i_Abr_Ac_bc_mZ(CAT,CAT,CFREE);
double **B = i_mZ(CAT,CFREE);
double **ATB = i_mZ(RAT,CFREE);
clrscrn();
printf("Find a basis for the orthogonal complement of AT :\n\n");
printf(" AT :");
p_mZ(AT,S5,P1,S5,P1,C10);
printf(" b :");
p_mZ(b,S5,P1,S5,P1,C10);
printf(" ATb :");
p_mZ(ATb,S5,P1,S5,P1,C10);
stop();
clrscrn();
printf(" ATb : gj_PP_mZ(ATb) :");
gj_PP_mZ(ATb);
p_mZ(ATb,S7,P3,S7,P3,C10);
put_zeroR_mZ(ATb,ATb_free);
put_freeV_mZ(ATb_free);
printf(" ATb_free :");
p_mZ(gj_mZ(ATb_free),S7,P3,S7,P3,C4);
printf(" B is a basis for the orthogonal complement of AT :");
P_mZ(c_Ab_b_mZ(ATb_free,B),S10,P12,S10,P12,C2);
stop();
clrscrn();
printf(" AT :");
p_mZ(AT, S8,P4, S8,P4, C4);
printf(" B :");
p_mZ(B, S8,P4, S8,P4, C4);
printf(" AT * B :");
p_mZ(mul_mZ(AT,B,ATB), S8,P6, S8,P6, C4);
stop();
f_mZ(ATb);
f_mZ(AT);
f_mZ(b);
f_mZ(ATb_free);
f_mZ(B);
f_mZ(ATB);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Trouver une projection sur un sous-espace vectoriel par une application linéaire :
- B est une base pour le complément orthogonal de AT. Trouver une matrice V qui projette un vecteur x sur C4.
Proj(x) = V * x V = Id - (B * inv(BT*B) * BT) .
- Dans cet exemple nous calculons B. Nous l'utiliserons dans le prochain exemple.
Exemple de sortie écran :
Find a basis for the orthogonal complement of AT :
AT :
-2.0 +3.0i +1.0 +0.0i +0.0 -1.0i +3.0 -5.0i
-4.0 +2.0i -3.0 +5.0i -6.0 +4.0i -1.0 +0.0i
b :
+0.0 +0.0i
+0.0 +0.0i
ATb :
-2.0 +3.0i +1.0 +0.0i +0.0 -1.0i +3.0 -5.0i +0.0 +0.0i
-4.0 +2.0i -3.0 +5.0i -6.0 +4.0i -1.0 +0.0i +0.0 +0.0i
Press return to continue.
ATb : gj_PP_mZ(ATb) :
+1.000 +0.000i +1.100 -0.700i +1.600 -0.200i +0.200 +0.100i +0.000 -0.000i
+0.000 +0.000i +1.000 -0.000i +1.373 +0.232i +1.264 +0.491i +0.000 +0.000i
ATb_free :
+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 +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.073 -0.506i +1.534 -0.444i
+0.000 -0.000i -1.373 -0.232i -1.264 -0.491i
+0.000 +0.000i +1.000 +0.000i -0.000 +0.000i
+0.000 +0.000i -0.000 -0.000i +1.000 -0.000i
B is a basis for the orthogonal complement of AT :
+0.000000000000,+0.000000000000, +0.072961373391,-0.506437768240,
+0.000000000000,-0.000000000000, -1.373390557940,-0.231759656652,
+0.000000000000,+0.000000000000, +1.000000000000,+0.000000000000,
+0.000000000000,+0.000000000000, -0.000000000000,-0.000000000000
+1.534334763948,-0.444206008584,
-1.263948497854,-0.491416309013,
-0.000000000000,+0.000000000000,
+1.000000000000,-0.000000000000
Press return to continue.
AT :
-2.0000 +3.0000i +1.0000 +0.0000i +0.0000 -1.0000i +3.0000 -5.0000i
-4.0000 +2.0000i -3.0000 +5.0000i -6.0000 +4.0000i -1.0000 +0.0000i
B :
+0.0000 +0.0000i +0.0730 -0.5064i +1.5343 -0.4442i
+0.0000 -0.0000i -1.3734 -0.2318i -1.2639 -0.4914i
+0.0000 +0.0000i +1.0000 +0.0000i -0.0000 +0.0000i
+0.0000 +0.0000i -0.0000 -0.0000i +1.0000 -0.0000i
AT * B :
+0.000000+0.000000i +0.000000-0.000000i +0.000000-0.000000i
+0.000000+0.000000i +0.000000-0.000000i +0.000000-0.000000i
Press return to continue.