Linear Algebra and the C Language/a0mw
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c03d.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
/* ------------------------------------ */
#define RA R3
#define CA C3
#define RX R3
#define CX C1
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double a[RA*CA]={
+3, -4, -2,
+5, -3, -1,
+4, -3, -1
};
double x_B[RX*CX]={
+1,
+2,
+3
};
double b[RA*CA]={
+1, +2, +6,
+3, +4, +1,
+5, +5, +2
};
double **A = ca_A_mR(a, i_mR(RA,CA));
double **B = ca_A_mR(b, i_mR(RA,CA));
double **x_b = ca_A_mR(x_B, i_mR(RX,CX));
double **x_s = 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 = mul_mR(invB,A, i_mR(RA,CA));
double **D = mul_mR(invBA,B, i_mR(RA,CA));
double **Dx_b = mul_mR(D,x_b, i_mR(RA,CX));
clrscrn();
printf(" In the Standard basis the linear application is:\n\n"
" With A :");
p_mR(A,S6,P2,C7);
printf(" And x_s:");
p_mR(x_s,S6,P2,C7);
printf(" T(x_s) = A x_s");
p_mR(mul_mR(A,x_s,T),S8,P2,C7);
stop();
clrscrn();
printf(" In the \"B\" basis the linear application is: \n\n"
" With D: (InvB A B)");
p_mR(D,S7,P2,C7);
printf(" And x_b:");
p_mR(x_b,S7,P2,C7);
printf(" [T(x_b)]_b = D x_b");
p_mR(mul_mR(D,x_b,Dx_b),S8,P2,C7);
stop();
clrscrn();
printf(" A \n"
" x_s -----------> T(x_s) \n"
" ^ ^ \n"
" | | \n"
" B | | B \n"
" | D | \n"
" x_b -----------> [T(x_b)]_b\n\n"
" Verify if: B [T(x_b)]_b = T(x_s)\n\n");
printf(" B [T(x_b)]_b:");
p_mR(mul_mR(B,Dx_b,T),S8,P2,C7);
printf(" T(x_s):");
p_mR(mul_mR(A,x_s,T),S8,P2,C7);
stop();
f_mR(A);
f_mR(B);
f_mR(D);
f_mR(x_b);
f_mR(x_s);
f_mR(T);
f_mR(invB);
f_mR(invBA);
f_mR(Dx_b);
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
In the Standard basis the linear application is:
With A :
+3.00 -4.00 -2.00
+5.00 -3.00 -1.00
+4.00 -3.00 -1.00
And x_s:
+23.00
+14.00
+21.00
T(x_s) = A x_s
-29.00
+52.00
+29.00
Press return to continue.
In the "B" basis the linear application is:
With D: (InvB A B)
+2.45 +1.52 -9.03
-3.48 -2.17 +13.34
-2.41 -2.86 -1.28
And x_b:
+1.00
+2.00
+3.00
[T(x_b)]_b = D x_b
-21.62
+32.21
-11.97
Press return to continue.
A
x_s -----------> T(x_s)
^ ^
| |
B | | B
| D |
x_b -----------> [T(x_b)]_b
Verify if: B [T(x_b)]_b = T(x_s)
B [T(x_b)]_b:
-29.00
+52.00
+29.00
T(x_s):
-29.00
+52.00
+29.00
Press return to continue.