Linear Algebra and the C Language/a0fo
Install and compile this file in your working directory.
/* ------------------------------------ */
/* Save as : c00a.c */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
void fun(int r)
{
double **Ab = r_singular_Ab_mR( i_Abr_Ac_bc_mR(r,r,C1),999);
double **A = c_Ab_A_mR(Ab, i_mR(r,r));
double **b = c_Ab_b_mR(Ab, i_mR(r,C1));
clrscrn();
printf(" A:");
p_mR(A, S8,P0,C7);
printf(" b:");
r_mR(b,999.); /* I change the value of b */
p_mR(b, S8,P0,C7);
printf(" Ab:");
p_mR(c_A_b_Ab_mR(A,b,Ab), S8,P0,C7);
stop();
clrscrn();
printf(" Copy/Paste into the octave window.\n\n");
p_Octave_mR(Ab,"Ab",P0);
printf("\n rref(Ab,.00000000001)\n\n");
stop();
clrscrn();
printf(" gj_PP_mR(Ab,YES);");
gj_PP_mR(Ab,YES);
p_mR(Ab, S10,P4,C7);
is_system_consistent_mR(Ab);
f_mR(Ab);
f_mR(b);
f_mR(A);
}
/* ------------------------------------ */
int main(void)
{
time_t t;
srand(time(&t));
do
{
fun(rp_I(R4)+R1);
} while(stop_w());
return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
A matrix A with identical rows and different b values.
The system is inconsistent: +0.0000 == +772.0000.
Screen output example:
A:
-351 +615 -408 +495 +513
+354 +904 +131 +911 +613
+466 +41 +864 -525 -319
+354 +904 +131 +911 +613
-431 -525 +298 -343 -19
b:
+55
+221
-2
+993
+343
Ab:
-351 +615 -408 +495 +513 +55
+354 +904 +131 +911 +613 +221
+466 +41 +864 -525 -319 -2
+354 +904 +131 +911 +613 +993
-431 -525 +298 -343 -19 +343
Press return to continue.
Copy/Paste into the octave window.
Ab=[
-351,+615,-408,+495,+513,+55;
+354,+904,+131,+911,+613,+221;
+466,+41,+864,-525,-319,-2;
+354,+904,+131,+911,+613,+993;
-431,-525,+298,-343,-19,+343]
rref(Ab,.00000000001)
Press return to continue.
gj_mR(Ab):
+1.0000 +0.0000 +0.0000 +0.0000 -0.5254 -0.5131
+0.0000 +1.0000 +0.0000 +0.0000 +0.2228 -0.2549
+0.0000 +0.0000 +1.0000 +0.0000 +0.2779 +0.6518
-0.0000 -0.0000 -0.0000 +1.0000 +0.6160 +0.6011
+0.0000 +0.0000 +0.0000 +0.0000 +0.0000 +772.0000
This(ese) row(s) are incompatible.
row 5;
The system is inconsistent.
I prefer to close the program.
Press return to continue.