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.