Linear Algebra and the C Language/a09x
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r)
{
double **A = i_mR(r,r);
double **Inv = i_mR(r,r);
double **B = r_mR(i_mR(r,C1),999.);
double **X = i_mR(r,C1);
double **T = i_mR(r,C1);
do
{
r_mR(A,999.);
printf(".");
}while(!det_R(A));
clrscrn();
printf(" We want to find X such as, \n\n");
printf(" AX = B \n\n");
printf(" If A is a square matrix and, \n\n");
printf(" If A has an inverse matrix, \n\n");
printf(" you can find X by this method\n\n");
printf(" X = inv(A) B \n\n\n");
printf(" To verify the result you can \n\n");
printf(" multiply the matrix A by X. \n\n");
printf(" You must refind B. \n\n");
stop();
clrscrn();
printf(" A :\n");
p_mR(A,S5,P0,C7);
printf(" B :\n");
p_mR(B,S5,P0,C7);
stop();
clrscrn();
printf(" inv(A) :\n");
pE_mR(invgj_mR(A,Inv),S1,P3,C7);
printf(" X = inv(A) * B :\n");
p_mR(mul_mR(Inv,B,X),S13,P4,C7);
stop();
clrscrn();
printf(" B :\n");
p_mR(B,S5,P0,C7);
printf(" AX :\n");
p_mR(mul_mR(A,X,T),S5,P0,C7);
f_mR(T);
f_mR(X);
f_mR(B);
f_mR(Inv);
f_mR(A);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(C2)+C4);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
Screen output example:
We want to find X such as,
AX = B
If A is a square matrix and,
If A has an inverse matrix,
you can find X by this method
X = inv(A) B
To verify the result you can
multiply the matrix A by X.
You must refind B.
A :
+311 +927 +224 -208 -261
+906 -624 -417 +261 +91
+83 +955 +721 +767 -585
+840 +628 -226 +379 -2
+998 +169 -373 +968 -845
B :
-534
+773
-19
-165
-157
inv(A) :
+8.492e-04 +1.361e-03 +2.837e-04 -2.492e-04 -3.116e-04
+9.374e-06 -9.298e-04 -2.145e-04 +9.692e-04 +4.318e-05
+6.680e-04 +1.687e-03 +1.329e-03 -1.078e-03 -9.425e-04
-1.505e-03 -4.684e-04 +5.209e-04 +9.497e-04 +5.147e-05
-1.014e-03 +1.398e-04 +3.021e-04 +1.463e-03 -1.068e-03
X = inv(A) * B :
+0.6829
-0.8864
+1.2477
+0.2667
+0.5699
B :
-534
+773
-19
-165
-157
AX :
-534
+773
-19
-165
-157
Press return to continue
Press X return to stop