Linear Algebra and the C Language/a0c8
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00b.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define RCA RC5
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **A = rEsymmetric_mR(i_mR(RCA,RCA),455.,1E-3);
double **sin_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 **sin_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(" sin(A) :");
f_eigs_mR(sin,EigsValue,sin_EigsValue);
mul_mR(EigsVector,sin_EigsValue,T1);
mul_mR(T1,T_EigsVector,sin_A);
p_mR(sin_A,S10,P4,C6);
/* ================================================================== */
eigs_V_mR(sin_A,EigsVector);
transpose_mR(EigsVector,T_EigsVector);
/* EigsValue : T_EigsVector * sin_A * EigsVector */
mul_mR(T_EigsVector,sin_A,T1);
mul_mR(T1,EigsVector,EigsValue);
printf(" asin(sin(A)) = A :");
f_eigs_mR(asin,EigsValue,sin_EigsValue);
mul_mR(EigsVector,sin_EigsValue,T1);
mul_mR(T1,T_EigsVector,A);
p_mR(A,S10,P4,C6);
f_mR(A);
f_mR(sin_A);
f_mR(EigsVector);
f_mR(T_EigsVector);
f_mR(EigsValue);
f_mR(sin_EigsValue);
f_mR(T1);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun();
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
A :
+0.2734 +0.1582 +0.0909 +0.1203 -0.2019
+0.1582 +0.4718 +0.1910 +0.2804 -0.3273
+0.0909 +0.1910 +0.2483 +0.1057 -0.1766
+0.1203 +0.2804 +0.1057 +0.3792 -0.2941
-0.2019 -0.3273 -0.1766 -0.2941 +0.3984
sin(A) :
+0.2478 +0.1128 +0.0671 +0.0828 -0.1579
+0.1128 +0.3864 +0.1466 +0.2100 -0.2458
+0.0671 +0.1466 +0.2245 +0.0695 -0.1341
+0.0828 +0.2100 +0.0695 +0.3201 -0.2264
-0.1579 -0.2458 -0.1341 -0.2264 +0.3200
asin(sin(A)) = A :
+0.2734 +0.1582 +0.0909 +0.1203 -0.2019
+0.1582 +0.4718 +0.1910 +0.2804 -0.3273
+0.0909 +0.1910 +0.2483 +0.1057 -0.1766
+0.1203 +0.2804 +0.1057 +0.3792 -0.2941
-0.2019 -0.3273 -0.1766 -0.2941 +0.3984
Press return to continue
Press X return to stop