Linear Algebra and the C Language/a0c7
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define RCA RC5
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **A = rEsymmetric_mR(i_mR(RCA,RCA),555.,1E-3);
double **cos_A = i_mR(RCA,RCA);
double **EigsVector = i_mR(RCA,RCA);
double **T_EigsVector = i_mR(RCA,RCA);
double **EigsValue = i_mR(RCA,RCA);
double **cos_EigsValue = i_mR(RCA,RCA);
double **T1 = i_mR(RCA,RCA);
clrscrn();
printf(" A :");
p_mR(A,S10,P4,C6);
/* ================================================================== */
eigs_V_mR(A,EigsVector);
transpose_mR(EigsVector,T_EigsVector);
/* EigsValue : T_EigsVector * A * EigsVector */
mul_mR(T_EigsVector,A,T1);
mul_mR(T1,EigsVector,EigsValue);
printf(" cos(A) :");
f_eigs_mR(cos,EigsValue,cos_EigsValue);
mul_mR(EigsVector,cos_EigsValue,T1);
mul_mR(T1,T_EigsVector,cos_A);
p_mR(cos_A,S10,P4,C6);
/* ================================================================== */
eigs_V_mR(cos_A,EigsVector);
transpose_mR(EigsVector,T_EigsVector);
/* EigsValue : T_EigsVector * cos_A * EigsVector */
mul_mR(T_EigsVector,cos_A,T1);
mul_mR(T1,EigsVector,EigsValue);
printf(" acos(cos(A)) = A :");
f_eigs_mR(acos,EigsValue,cos_EigsValue);
mul_mR(EigsVector,cos_EigsValue,T1);
mul_mR(T1,T_EigsVector,A);
p_mR(A,S10,P4,C6);
f_mR(A);
f_mR(cos_A);
f_mR(EigsVector);
f_mR(T_EigsVector);
f_mR(EigsValue);
f_mR(cos_EigsValue);
f_mR(T1);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun();
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
A :
+1.2225 +0.0339 -0.4158 +0.1573 -0.0851
+0.0339 +0.5625 -0.1019 +0.0654 +0.2680
-0.4158 -0.1019 +0.6113 -0.3534 +0.3801
+0.1573 +0.0654 -0.3534 +0.3669 -0.3120
-0.0851 +0.2680 +0.3801 -0.3120 +0.7082
cos(A) :
+0.3005 -0.0394 +0.3277 -0.1555 +0.1205
-0.0394 +0.8082 +0.0281 -0.0111 -0.1286
+0.3277 +0.0281 +0.6664 +0.2185 -0.2502
-0.1555 -0.0111 +0.2185 +0.8390 +0.1928
+0.1205 -0.1286 -0.2502 +0.1928 +0.6463
acos(cos(A)) = A :
+1.2225 +0.0339 -0.4158 +0.1573 -0.0851
+0.0339 +0.5625 -0.1019 +0.0654 +0.2680
-0.4158 -0.1019 +0.6113 -0.3534 +0.3801
+0.1573 +0.0654 -0.3534 +0.3669 -0.3120
-0.0851 +0.2680 +0.3801 -0.3120 +0.7082
Press return to continue
Press X return to stop