Mathc matrices/c24w
Installer et compiler ces fichiers dans votre répertoire de travail.
c04d.c |
---|
/* ------------------------------------ */
/* Save as : c04d.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define RA R4
#define CA C4
#define RX R4
#define CX C1
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double a[RA*CA]={
+3, -4, -2, -1,
+5, -3, -0, -2,
+6, -0, -3, -2,
+3, -3, -1, -3
};
double x_B[RX*CX]={
+1,
+2,
+3,
+4
};
double b[RA*CA]={
+1, +2, +6, +6,
+3, +2, +1, +6,
+5, +5, +3, +6,
+5, +5, +2, +4,
};
double **A = ca_A_mR(a, i_mR(RA,CA));
double **B = ca_A_mR(b, i_mR(RA,CA));
double **D = i_mR(RA,CA) ;
double **X_B = ca_A_mR(x_B, i_mR(RX,CX));
double **X = mul_mR(B,X_B, i_mR(RX,CX));
double **T = i_mR(RA,CX) ;
double **invB = inv_mR(B, i_mR(RA,CA));
double **invBA = i_mR(RA,CA) ;
double **DX_B = i_mR(RA,CX) ;
/* D = invB*A*B */
mul_mR(invB,A,invBA);
mul_mR(invBA,B,D);
/* [T(x)]_B = D*x_B */
mul_mR(D,X_B,DX_B);
clrscrn();
printf(" In the Standard basis\n"
" T(x) = A*x");
p_mR(mul_mR(A,X,T),S4,P0,C7);
printf(" In the the B basis with D = invB*A*B\n"
" [T(x)]_B = D*x_B");
p_mR(DX_B,S4,P0,C7);
printf(" Verify the result if it is the same in the two basis :\n\n"
" With B*[x_B] = [x] then B*[D*x_B] = [A*x]\n"
" B*[D*x_B]");
p_mR(mul_mR(B,DX_B,T),S4,P0,C7);
stop();
f_mR(A);
f_mR(B);
f_mR(D);
f_mR(X_B);
f_mR(X);
f_mR(T);
f_mR(invB);
f_mR(invBA);
f_mR(DX_B);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Vérifions si les résultats sont compatibles
Exemple de sortie écran :
------------------------------------
In the Standard basis
T(x) = A*x
-128
+59
+64
-120
In the the B basis with D = invB*A*B
[T(x)]_B = D*x_B
-1863
+1765
-783
+483
Verify the result if it is the same in the two basis :
With B*[x_B] = [x] then B*[D*x_B] = [A*x]
B*[D*x_B]
-128
+59
+64
-120
Press return to continue.