Linear Algebra and the C Language/a0gk
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00d.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define ARRAY A2
#define RCA R5
#define POW 3
/* ------------------------------------ */
void fun(void)
{
double **A[ARRAY];
double **A_n[ARRAY];
double **P = r_mR( i_mR(RCA,RCA),99);
double **InvP = inv_mR(P, i_mR(RCA,RCA) );
double **T = i_mR(RCA,RCA);
double **InvP_A0n_P = i_mR(RCA,RCA);
int i;
for(i=A0; i<ARRAY; i++)
{
A[i] = i_mR(RCA,RCA);
A_n[i] = i_mR(RCA,RCA);
}
rsymmetric_mR(A[R0],99);
mul_mR(InvP,A[A0],T);
mul_mR(T,P,A[A0+A1]);
clrscrn();
printf(" The two similar matrices :\n\n"
" A[%d] = InvP A[%d] P \n\n",A1,A0);
for(i=A0; i<ARRAY; i++)
{
printf(" A[%d] : ",i);
p_mR(A[i], S12,P2,C6);
}
stop();
clrscrn();
for(i=A0; i<ARRAY; i++)
{
pow_mR(POW,A[i],A_n[i]);
}
mul_mR(InvP,A_n[A0],T);
mul_mR(T,P,InvP_A0n_P);
printf(" If A[%d] = InvP A[%d] P Then "
" A[%d]**%d = InvP A[%d]**%d P\n\n",
A1,A0, A1,POW, A0,POW);
printf(" A[%d]**%d : ",A1,POW);
p_mR(A_n[1], S12,P2,C6);
printf(" InvP A[%d]**%d P : ",A0,POW);
p_mR(InvP_A0n_P, S12,P2,C6);
for(i=A0; i<ARRAY; i++)
{
f_mR(A[i]);
f_mR(A_n[i]);
}
f_mR(P);
f_mR(InvP);
f_mR(T);
f_mR(InvP_A0n_P);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do{
fun();
}while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
The two similar matrices :
A[1] = InvP A[0] P
A[0] :
+32.00 +29.00 -93.00 +79.00 +5.00
+29.00 +24.00 -3.00 -17.00 +11.00
-93.00 -3.00 +90.00 -2.00 -74.00
+79.00 -17.00 -2.00 +48.00 +89.00
+5.00 +11.00 -74.00 +89.00 -60.00
A[1] :
-1069.53 +703.66 -2295.81 -1156.10 -224.37
-621.42 +373.86 -1322.60 -633.61 -118.25
+496.54 -204.15 +994.76 +479.69 +63.30
+335.79 -175.46 +732.37 +379.77 +64.87
-3701.98 +1796.98 -7475.12 -3572.85 -544.86
Press return to continue.
If A[1] = InvP A[0] P Then A[1]**3 = InvP A[0]**3 P
A[1]**3 :
-36591496.94 +5453805.88 -57862479.38 -26022892.19 +33921.00
-21684269.01 +2309842.55 -33840043.76 -15006567.92 +311882.34
+17943996.69 +1576847.35 +26629252.44 +11263809.81 -1283894.72
+12008119.64 -986211.15 +18711732.09 +8319472.35 -237431.71
-130824153.47 +2592837.44 -198856855.35 -85986771.15 +5390651.60
InvP A[0]**3 P :
-36591496.94 +5453805.88 -57862479.38 -26022892.19 +33921.00
-21684269.01 +2309842.55 -33840043.76 -15006567.92 +311882.34
+17943996.69 +1576847.35 +26629252.44 +11263809.81 -1283894.72
+12008119.64 -986211.15 +18711732.09 +8319472.35 -237431.71
-130824153.47 +2592837.44 -198856855.35 -85986771.15 +5390651.60
Press return to continue
Press X return to stop