Linear Algebra and the C Language/a0de
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as: c00e.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r)
{
double s = rp_I(8)+1;
double **A = rsymmetric_mR( i_mR(r, r),99.);
double **EValueA = eigs_mR(A, i_mR(r,C1));
double **ID = eye_mR( i_mR(r, r));
double **sID = smul_mR(s, ID,i_mR(r, r));
double **Apls_sID = add_mR(A, sID,i_mR(r, r));
double **EValueApls_sID = eigs_mR(Apls_sID,i_mR(r,C1));
double **M = m1_mR( i_mR(r,C1));
double **sM = smul_mR(s,M, i_mR(r,C1));
clrscrn();
printf(" A:");
p_mR(A,S3,P0,C6);
printf(" EValueA:");
p_mR(EValueA,S13,P6,C1);
printf(" A+%.0fID:",s);
p_mR(Apls_sID,S4,P0,C6);
printf(" EValueA+%.0fID:",s);
p_mR(EValueApls_sID,S13,P6,C1);
stop();
clrscrn();
printf(" EValueA:");
p_mR(EValueA,S13,P6,C1);
printf(" EValueA+%.0fID:",s);
p_mR(EValueApls_sID,S13,P6,C1);
printf(" EValueA + %.0f:",s);
add_mR(EValueA,sM,M);
p_mR(M,S13,P6,C1);
f_mR(A);
f_mR(EValueA);
f_mR(ID);
f_mR(sID);
f_mR(Apls_sID);
f_mR(EValueApls_sID);
f_mR(M);
f_mR(sM);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(R2)+R2);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
A:
-87 +28 -16 +84
+28 -21 -71 +45
-16 -71 +25 -90
+84 +45 -90 +60
EValueA:
+190.984852
-132.592212
-67.065911
-14.326730
A+3ID:
-84 +28 -16 +84
+28 -18 -71 +45
-16 -71 +28 -90
+84 +45 -90 +63
EValueA+3ID:
+193.984852
-129.592212
-64.065911
-11.326730
Press return to continue.
EValueA:
+190.984852
-132.592212
-67.065911
-14.326730
EValueA+3ID:
+193.984852
-129.592212
-64.065911
-11.326730
EValueA + 3:
+193.984852
-129.592212
-64.065911
-11.326730
Press return to continue
Press X return to stop