Linear Algebra and the C Language/a0hw
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00d.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int rc)
{
double **A = rupper_mR(i_mR(rc,rc),9);
double **invA = i_mR(rc,rc);
double **AinvA = i_mR(rc,rc);
clrscrn();
printf(" A:");
p_mR(A ,S4,P0,C6);
printf(" invA:");
pE_mR(invgj_mR(A,invA) ,S4,P5,C6);
printf(" A invA:");
p_mR(mul_mR(A,invA,AinvA) ,S4,P5,C6);
f_mR(A);
f_mR(invA);
f_mR(AinvA);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
fun(rp_I(RC4)+RC1);
while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
The inverse of an upper triangular matrix
Screen output example:
A:
-2 +3 +3 +5
+0 -3 -1 -5
+0 +0 +6 -4
+0 +0 +0 -4
invA:
-5.00000e-01 -5.00000e-01 +1.66667e-01 -1.66667e-01
+0.00000e+00 -3.33333e-01 -5.55556e-02 +4.72222e-01
-0.00000e+00 -0.00000e+00 +1.66667e-01 -1.66667e-01
-0.00000e+00 -0.00000e+00 +0.00000e+00 -2.50000e-01
A invA:
+1.00000 +0.00000 +0.00000 +0.00000
+0.00000 +1.00000 -0.00000 +0.00000
+0.00000 +0.00000 +1.00000 +0.00000
+0.00000 +0.00000 +0.00000 +1.00000
Press return to continue
Press X return to stop