Aller au contenu

Mathc matrices/c32d

Un livre de Wikilivres.


Application


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


c00a.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include      "v_a.h"
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));
  
double ta[R3*C4]={ 1,0,0,  1,
                   0,1,0, .5,
                   0,0,1, 1./3.};
                   
double **T  =  ca_A_mR(ta,      i_mR(R3,C4));
double **A  =    rE_mR(         i_mR(R3,C3),999.,1E-3);  
double **AT =   mul_mR(A,T,     i_mR(R3,C4));  
double **Ab = gj_TP_mR(c_mR(AT, i_Abr_Ac_bc_mR(R3,C3,C1)));  

  printf(" You want to create this nonlinear system of equations :\n");
  printf("               (X, Y, Z not 0)\n");
  printf("\n"); 
  printf(" a 1/X + b 1/Y + c 1/Z = d  \n");
  printf(" e 1/X + f 1/Y + g 1/Z = h  \n");
  printf(" i 1/X + j 1/Y + k 1/Z = l  \n");
  printf("\n");
  printf(" With 1/X = 1, 1/Y = .5, 1/Z = .333333 \n");
  printf("\n");
  printf(" In  fact, you  want to  find a matrix, \n");
  printf(" which has this reduced row-echelon form :\n\n"   
          "Ab:");
   
  p_mR(T,S5,P3,C6);
  stop();  

  clrscrn();  
  printf(" If :\n\n A = rE_mR(i_mR(R3,C3),999.,1E-3); ");
  p_mR(A,S5,P3,C6);  
  
  printf(" And :\n\n T :");
  p_mR(T,S5,P3,C6); 

  printf(" I suggest this matrix : A*T = Ab\n\n"  
  " Ab : ");
  p_mR(AT,S5,P3,C6);
  stop();  

  clrscrn();    
  printf("\n  With the Gauss Jordan function :\n"
         "Ab:");
  p_mR(Ab,S5,P3,C6);
  stop();

  f_mR(Ab);
  f_mR(A);
  f_mR(T);
  f_mR(AT);

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


Le but de ce travail est de créer des systèmes dont on connait le résultat par avance.


Exemple de sortie écran :
 You want to create this nonlinear system of equations :
               (X, Y, Z not 0)

 a 1/X + b 1/Y + c 1/Z = d  
 e 1/X + f 1/Y + g 1/Z = h  
 i 1/X + j 1/Y + k 1/Z = l  

 With 1/X = 1, 1/Y = .5, 1/Z = .333333 

 In  fact, you  want to  find a matrix, 
 which has this reduced row-echelon form :

Ab:
+1.000 +0.000 +0.000 +1.000 
+0.000 +1.000 +0.000 +0.500 
+0.000 +0.000 +1.000 +0.333 

 Press return to continue. 

 
 If :

 A = rE_mR(i_mR(R3,C3),999.,1E-3); 
+0.479 -0.154 -0.501 
+0.992 -0.763 -0.591 
-0.843 +0.708 +0.088 

 And :

 T :
+1.000 +0.000 +0.000 +1.000 
+0.000 +1.000 +0.000 +0.500 
+0.000 +0.000 +1.000 +0.333 

 I suggest this matrix : A*T = Ab

 Ab : 
+0.479 -0.154 -0.501 +0.235 
+0.992 -0.763 -0.591 +0.414 
-0.843 +0.708 +0.088 -0.460 

 Press return to continue. 

 
  With the Gauss Jordan function :
Ab:
+1.000 +0.000 +0.000 +1.000 
+0.000 +1.000 +0.000 +0.500 
+0.000 +0.000 +1.000 +0.333 

 Press return to continue.