Aller au contenu

Mathc matrices/c24o

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"
/* ------------------------------------ */
/* ------------------------------------ */
#define   RA R2
#define   CA C2

#define   RX R2
#define   CX C1
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double a[RA*CA]={
    +3, -2,  
    +2, -2
};

double x_B[RX*CX]={
    +1,   
    +2
};

double b[RA*CA]={
    +2, +4,   
    +3, +5
};

double **A   = ca_A_mR(a, i_mR(RA,CA));
double **B   = ca_A_mR(b, i_mR(RA,CA));
double **D     =          i_mR(RA,CA) ;

double **X_B = ca_A_mR(x_B,  i_mR(RX,CX));
double **X_S = mul_mR(B,X_B, i_mR(RX,CX));
double **T   =               i_mR(RA,CX) ;

double **invB  =  inv_mR(B, i_mR(RA,CA));
double **invBA =            i_mR(RA,CA) ;

double **DX_B  =            i_mR(RA,CX) ;

/* D = invB*A*B        */
  mul_mR(invB,A,invBA);       
  mul_mR(invBA,B,D);
/* [T(x)]_B = D*x_B    */ 
  mul_mR(D,X_B,DX_B);   
  
  clrscrn();
  printf(" In the Standard basis the linear application is :\n\n");
  printf(" T(x_S) = A x_S");
  p_mR(mul_mR(A,X_S,T),S8,P2,C7);
  printf("with\n\n"
         "x_S");
  p_mR(X_S,S8,P2,C7);  
  printf("A");
  p_mR(A,S8,P2,C7);  

  stop();
  
  clrscrn();
  printf(" In the B basis the linear application is :\n\n"
         " [T(x_B)]_B = D*x_B           with  D = (invB A B)");
  p_mR(DX_B,S8,P2,C7);
  printf("with\n\n"
         "x_B");
  p_mR(X_B,S8,P2,C7);  
  printf("D = (invB A B)");
  p_mR(D,S8,P2,C7);     
 
  stop();
    
  clrscrn(); 
  printf(" [T(x_B)]_B = D*x_B           with  D = (invB A B)");
  p_mR(DX_B,S8,P2,C7); 
        
  printf(" Remark : x_S = B x_B\n\n"
         "   [D*x_B]\n"
         " B [D*x_B] = B [(InvB A B) x_B] = (A B)*x_B = A (B x_B) = A x_S \n\n"
         " B*[D*x_B] = A x_S");
  p_mR(mul_mR(B,DX_B,T),S8,P2,C7);  
  
  printf(" T(x_S) = A x_S");
  p_mR(mul_mR(A,X_S,T),S8,P2,C7);
  stop();
  
  f_mR(A);
  f_mR(B);
  f_mR(D);  
  
  f_mR(X_B);
  f_mR(X_S);
  f_mR(T);  
  
  f_mR(invB);  
  f_mR(invBA);  

  f_mR(DX_B);
    
  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
 Vérifions si les résultats sont compatibles
Exemple de sortie écran :
 In the Standard basis the linear application is :

 T(x_S) = A x_S
   +4.00 
   -6.00 

with

x_S
  +10.00 
  +13.00 

A
   +3.00    -2.00 
   +2.00    -2.00 

 Press return to continue. 


 In the B basis the linear application is :

 [T(x_B)]_B = D*x_B           with  D = (invB A B)
  -22.00 
  +12.00 

with

x_B
   +1.00 
   +2.00 

D = (invB A B)
   -4.00    -9.00 
   +2.00    +5.00 

 Press return to continue. 


 [T(x_B)]_B = D*x_B           with  D = (invB A B)
  -22.00 
  +12.00 

 Remark : x_S = B x_B

   [D*x_B]
 B [D*x_B] = B [(InvB A B) x_B] = (A B)*x_B = A (B x_B) = A x_S 

 B*[D*x_B] = A x_S
   +4.00 
   -6.00 

 T(x_S) = A x_S
   +4.00 
   -6.00 

 Press return to continue.