Linear Algebra and the C Language/a0gj
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00c.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define ARRAY A3
#define RCA R3
/* ------------------------------------ */
void fun(void)
{
double **A[ARRAY];
double **P[ARRAY];
double **InvP[ARRAY];
double **T = i_mR(RCA,RCA);
double **EigsValue = i_mR(RCA,C1);
int i;
for(i=A0; i<ARRAY; i++)
{
A[i] = i_mR(RCA,RCA);
P[i] = r_mR( i_mR(RCA,RCA),999);
InvP[i] = inv_mR(P[i], i_mR(RCA,RCA));
}
rsymmetric_mR(A[0],99);
for(i=A0; i<(ARRAY-C1); i++)
{
mul_mR(InvP[i],A[i],T);
mul_mR(T,P[i],A[i+C1]);
}
clrscrn();
for(i=A0; i<ARRAY; i++)
{
printf(" A[%d] : ",i);
p_mR(A[i],S9,P2,C6);
printf(" EigsValue of A[%d] : ",i);
eigs_mR(A[i],EigsValue);
p_mR(EigsValue, S9,P2,C6);
}
printf(" Similar matrices have the eignvalues.\n\n");
for(i=A0; i<ARRAY; i++)
{
f_mR(A[i]);
f_mR(P[i]);
f_mR(InvP[i]);
}
f_mR(T);
f_mR(EigsValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do{
fun();
}while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
A[0] :
+12.00 -96.00 +98.00
-96.00 -61.00 -43.00
+98.00 -43.00 +36.00
EigsValue of A[0] :
+164.85
-130.80
-47.05
A[1] :
+172.66 +224.49 +371.38
+214.73 +181.38 +373.84
-106.31 -225.20 -367.04
EigsValue of A[1] :
+164.85
-130.80
-47.05
A[2] :
-235.76 +99.32 +177.44
+732.44 -751.74 -1161.56
-653.73 +618.71 +974.50
EigsValue of A[2] :
+164.85
-130.80
-47.05
Similar matrices have the eignvalues.
Press return to continue
Press X return to stop