Linear Algebra and the C Language/a0gt
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00f.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r)
{
double **A = r_mR( i_mR(r,r), 9);
double **AT = transpose_mR(A, i_mR(r,r));
double **AplsAT = add_mR(A,AT, i_mR(r,r));
double **AmnsAT = sub_mR(A,AT, i_mR(r,r));
double **AplsAT2 = smul_mR(1./2., AplsAT, i_mR(r,r));
double **AmnsAT2 = smul_mR(1./2., AmnsAT, i_mR(r,r));
double **T = add_mR(AplsAT2,AmnsAT2, i_mR(r,r));
clrscrn();
printf(" A");
p_mR(A, S7,P3, C6);
printf(" Symmetric matrix : A + AT");
p_mR(AplsAT, S7,P3, C6);
printf(" Skew matrix : A - AT");
p_mR(AmnsAT, S7,P3, C6);
stop();
clrscrn();
printf(" A ");
p_mR(A, S7,P3, C6);
printf(" A = (A + AT)/2 + (A - AT)/2");
p_mR(T, S7,P3, C6);
f_mR(A);
f_mR(T);
f_mR(AT);
f_mR(AplsAT);
f_mR(AmnsAT);
f_mR(AplsAT2);
f_mR(AmnsAT2);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(R4)+R1);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Let A be a square matrix: A = (A+AT)/2 + (A-AT)/2
Screen output example:
A
-1.000 -7.000 -5.000 +4.000
+3.000 +4.000 -8.000 +7.000
-4.000 +6.000 +7.000 +1.000
-7.000 -4.000 -1.000 +8.000
Symmetric matrix : A + AT
-2.000 -4.000 -9.000 -3.000
-4.000 +8.000 -2.000 +3.000
-9.000 -2.000 +14.000 +0.000
-3.000 +3.000 +0.000 +16.000
Skew matrix : A - AT
+0.000 -10.000 -1.000 +11.000
+10.000 +0.000 -14.000 +11.000
+1.000 +14.000 +0.000 +2.000
-11.000 -11.000 -2.000 +0.000
Press return to continue.
A
-1.000 -7.000 -5.000 +4.000
+3.000 +4.000 -8.000 +7.000
-4.000 +6.000 +7.000 +1.000
-7.000 -4.000 -1.000 +8.000
A = (A + AT)/2 + (A - AT)/2
-1.000 -7.000 -5.000 +4.000
+3.000 +4.000 -8.000 +7.000
-4.000 +6.000 +7.000 +1.000
-7.000 -4.000 -1.000 +8.000
Press return to continue
Press X return to stop