Mathc matrices/c092b

Un livre de Wikilivres.


Application


Installer et compiler ces fichiers dans votre répertoire de travail.


inv_r.c
/* ------------------------------------ */
/*  Save as :   c01b.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,C6),999.);
double **X   =      i_mR(r,C6);
double **T   =      i_mR(r,C6);

 do
  {
   r_mR(A,999.);
   printf(".");
  }while(!det_R(A));

  clrscrn();

  printf("                                                 \n");
  printf(" Linear systems with common coefficient matrix.\n\n");
  printf("                Ax1=b1                           \n");
  printf("                Ax2=b2                           \n");
  printf("                ...                              \n");
  printf("                Axn=bn                         \n\n");
  printf(" We can write these equalities in this maner.  \n\n");
  printf("    A|x1|x2|...|xn| = b1|b2|...|bn|            \n\n");
  printf("  or simply :                                  \n\n");
  printf("              AX = B                           \n\n");
  printf("  where B = b1|b2|...|bn                       \n\n");
  printf("  and   X = x1|x2|...|xn                       \n\n");
  getchar();

  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");
  getchar();

  clrscrn();
  printf(" A :\n");
  p_mR(A,S5,P0,C6);
  printf("       b1       b2      ...      bn :\n");
  p_mR(B,S9,P0,C6);
  getchar();

  clrscrn();
  printf(" inv(A) :\n");
  pE_mR(invgj_mR(A,Inv),S1,P4,C6);
  printf(" X = inv(A) * B :\n\n");
  printf("    x1       x2       ...      xn\n");
  p_mR(mul_mR(Inv,B,X),S9,P4,C6);
  getchar();

  clrscrn();
  printf("       b1       b2      ...      bn :\n");
  p_mR(B,S9,P0,C6);
  printf("      Ax1      Ax2      ...     Axn :\n");
  p_mR(mul_mR(A,X,T),S9,P0,C6);

  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;
}
/* ------------------------------------ */
/* ------------------------------------ */
Exemple de sortie écran :
 ------------------------------------                                                  
 Linear systems with common coefficient matrix.

                Ax1=b1                           
                Ax2=b2                           
                ...                              
                Axn=bn                         

 We can write these equalities in this maner.  

    A|x1|x2|...|xn| = b1|b2|...|bn|            

  or simply :                                  

              AX = B                           

  where B = b1|b2|...|bn                       

  and   X = x1|x2|...|xn                       


 ------------------------------------ 
 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 :

 -805  -853  +866  -331 
 -883  +580  -427  +110 
 +946  -289   -15  -461 
 +762  -203  -307  +224 

       b1       b2      ...      bn :

     +508      +648      -861      +186      -515      -755 
     -189      -845      +462       -45       -29       +74 
     +378      +424      -711      -887      +750      +374 
     +820        +6      +598      -383      -689      +108 


 ------------------------------------ 
 inv(A) :

-5.3070e-04 -8.6702e-04 +3.1954e-05 -2.9268e-04 
-1.2603e-03 -1.0402e-03 -3.5923e-04 -2.0908e-03 
-6.8572e-04 -2.2335e-03 -1.0293e-03 -2.0348e-03 
-2.7663e-04 -1.0544e-03 -1.8449e-03 +7.7635e-04 

 X = inv(A) * B :

    x1       x2       ...      xn

  -0.3337   +0.4005   -0.1414   +0.0241   +0.5241   +0.3169 
  -2.2939   -0.1026   -0.3903   +0.9318   +1.8504   +0.5144 
  -1.9838   +0.9944   -0.9265   +1.6653   +1.0479   -0.2523 
  -0.0020   -0.0659   +1.5271   +1.3351   -1.7456   -0.4753 


 ------------------------------------ 
       b1       b2      ...      bn :

     +508      +648      -861      +186      -515      -755 
     -189      -845      +462       -45       -29       +74 
     +378      +424      -711      -887      +750      +374 
     +820        +6      +598      -383      -689      +108 

      Ax1      Ax2      ...     Axn :

     +508      +648      -861      +186      -515      -755 
     -189      -845      +462       -45       -29       +74 
     +378      +424      -711      -887      +750      +374 
     +820        +6      +598      -383      -689      +108 


 Press return to continue
 Press X      to stop