Linear Algebra and the C Language/a0df
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as: c00f.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r)
{
double p = rp_I(3)+1;
double **A = rsymmetric_mR( i_mR(r, r),9);
double **EValueA = eigs_mR(A, i_mR(r,C1));
double **A_p = pow_mR(p,A,i_mR(r, r));
double **EValueA_p = eigs_mR(A_p,i_mR(r,C1));
int i = 0;
clrscrn();
printf(" A:");
p_mR(A,S3,P0,C6);
printf(" EValue:");
p_mR(EValueA,S13,P6,C1);
printf(" A**%.0f:",p);
p_mR(A_p,S8,P0,C6);
printf(" EValueA**%.0f:",p);
p_mR(EValueA_p,S15,P6,C1);
stop();
clrscrn();
printf(" EValueA**%.0f:",p);
p_mR(EValueA_p,S15,P6,C1);
printf(" (EValueA)**%.0f:\n",p);
for(i=R1;i<=r;i++)
printf(" %+14.6f\n", pow(EValueA[i][C1],p));
f_mR(A);
f_mR(EValueA);
f_mR(A_p);
f_mR(EValueA_p);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(R2)+R2);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
A:
+3 +4 +9 -6
+4 +4 -7 -1
+9 -7 -4 +7
-6 -1 +7 -9
EValue:
-19.986039
+9.418681
+8.894894
-4.327537
A**4:
+36271 -15247 -40574 +42229
-15247 +13030 +19708 -23689
-40574 +19708 +64151 -59433
+42229 -23689 -59433 +60582
EValueA**4:
+159553.700324
+7869.739165
+6259.838545
+350.721967
Press return to continue.
EValueA**4:
+159553.700324
+7869.739165
+6259.838545
+350.721967
(EValueA)**4:
+159553.700324
+7869.739165
+6259.838545
+350.721967
Press return to continue
Press X return to stop