Mathc matrices/a73

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 RCA      RC4
#define tA       R3
/* ------------------------------------ */
void fun(void)
{
int i;

double **A         [tA];  
double **Exp_EValue[tA];
double **Exp       [tA];

double **V       = i_mR(RCA,RCA);
double **V_T    = i_mR(RCA,RCA);
double **EValue  = i_mR(RCA,RCA); 
double **T       = i_mR(RCA,RCA);
                      
  for(i = C0; i < C3; i++)
     { 
       clrscrn();

       if(i < C2)	
     
            A[i] = rEsymmetric_mR(i_mR(RCA,RCA),999,+1.E-3);
       else   
            A[i] = add_mR(A[C0],A[C1],i_mR(RCA,RCA));
  
          printf(" Copy/Past into the octave window.       \n\n");
          pAi_Octave_mR(A[i], "A",i, P6);
          printf(" expm (A%d)\n\n\n",i);
          stop();  
          
          clrscrn();
          Exp_EValue[i] = i_mR(RCA,RCA);  
          Exp[i]        = i_mR(RCA,RCA);  
  
          printf(" A[%d] :",i);
          p_mR(A[i], S9,P4, C6);
  
          eigs_V_mR(A[i],V);
          transpose_mR(V,V_T);
    
/* EValue = V_T * A * V */   
         mul_mR(V_T,A[i],T);
         mul_mR(T,V,EValue); 
   
         f_eigs_mR(exp,EValue, Exp_EValue[i]);
    
         printf(" Exp_EValue[%d] :",i);
         p_mR( Exp_EValue[i], S9,P4, C6);
  
/* Exp[i] = V * Exp_EValue[i] * V_T*/     
         mul_mR(V,Exp_EValue[i],T);
         mul_mR(T,V_T,Exp[i]); 
    
         printf(" exp[%d]",i);
         p_mR(Exp[i], S9,P4, C6);
         stop();
        }  

	clrscrn();
    printf(" Copy/Past into the octave window.       \n\n"
           "  expm (A0)*expm (A1)  \n"
           "  expm (A0+A1)       \n\n");
             	
    printf("  expm (A0)*expm (A1)");
    p_mR( mul_mR(Exp[C0],Exp[C1],T), S12,P4, C6); 

    printf("  expm (A0+A1)");       
    p_mR( Exp[C2], S12,P4, C6);

    printf(" expm (A0)*expm (A1) != expm (A0+A1) ??? \n\n");
   
  for(i = C0; i < C3; i++)
     {
      f_mR(A[i]);
      f_mR(Exp_EValue[i]);
      f_mR(Exp[i]); 
     }  
       
   f_mR(V);
   f_mR(V_T);
   f_mR(EValue); 
   f_mR(T);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
    fun();
    
} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
                         Exp(A0) * Exp(A1) != Exp(A0 + A1)


Exemple de sortie écran :
 ------------------------------------  
 Copy/Past into the octave window.       

 A0=[
+0.926039,+1.151893,-0.259047,-0.709984;
+1.151893,+1.954454,-0.562496,-0.640626;
-0.259047,-0.562496,+0.406068,+0.020190;
-0.709984,-0.640626,+0.020190,+0.712226]

 expm (A0)


 Press return to continue. 


 ------------------------------------  
 A[0] :
  +0.9260   +1.1519   -0.2590   -0.7100 
  +1.1519   +1.9545   -0.5625   -0.6406 
  -0.2590   -0.5625   +0.4061   +0.0202 
  -0.7100   -0.6406   +0.0202   +0.7122 

 Exp_EValue[0] :
 +24.2110   +0.0000   +0.0000   +0.0000 
  +0.0000   +1.9141   +0.0000   +0.0000 
  +0.0000   +0.0000   +1.1625   +0.0000 
  +0.0000   +0.0000   +0.0000   +1.0122 

 exp[0]
  +7.3057   +8.9482   -2.3281   -4.3470 
  +8.9482  +14.4426   -3.6935   -5.8016 
  -2.3281   -3.6935   +2.3150   +1.3364 
  -4.3470   -5.8016   +1.3364   +4.2366 

 Press return to continue. 


 ------------------------------------  
 Copy/Past into the octave window.       

 A1=[
+1.876298,-0.851919,-1.378439,+1.374674;
-0.851919,+1.576350,+0.179698,-0.749190;
-1.378439,+0.179698,+1.966994,-0.185545;
+1.374674,-0.749190,-0.185545,+1.913339]

 expm (A1)


 Press return to continue. 


 ------------------------------------  
 A[1] :
  +1.8763   -0.8519   -1.3784   +1.3747 
  -0.8519   +1.5764   +0.1797   -0.7492 
  -1.3784   +0.1797   +1.9670   -0.1855 
  +1.3747   -0.7492   -0.1855   +1.9133 

 Exp_EValue[1] :
 +78.5798   +0.0000   +0.0000   +0.0000 
  +0.0000   +6.9838   +0.0000   +0.0000 
  +0.0000   +0.0000   +2.7166   +0.0000 
  +0.0000   +0.0000   +0.0000   +1.0262 

 exp[1]
 +33.6139  -17.7914  -22.4920  +25.2316 
 -17.7914  +13.3448  +10.6384  -14.7030 
 -22.4920  +10.6384  +19.3749  -14.9004 
 +25.2316  -14.7030  -14.9004  +22.9728 

 Press return to continue. 


 ------------------------------------  
 Copy/Past into the octave window.       

 A2=[
+2.802337,+0.299974,-1.637486,+0.664690;
+0.299974,+3.530804,-0.382798,-1.389816;
-1.637486,-0.382798,+2.373062,-0.165355;
+0.664690,-1.389816,-0.165355,+2.625565]

 expm (A2)


 Press return to continue. 


 ------------------------------------  
 A[2] :
  +2.8023   +0.3000   -1.6375   +0.6647 
  +0.3000   +3.5308   -0.3828   -1.3898 
  -1.6375   -0.3828   +2.3731   -0.1654 
  +0.6647   -1.3898   -0.1654   +2.6256 

 Exp_EValue[2] :
 +95.9198   +0.0000   +0.0000   +0.0000 
  +0.0000  +85.2732   +0.0000   +0.0000 
  +0.0000   +0.0000   +4.3602   +0.0000 
  +0.0000   +0.0000   +0.0000   +2.3393 

 exp[2]
 +47.4584   +7.4673  -38.0527  +14.6453 
  +7.4673  +65.6300  -12.8837  -40.4640 
 -38.0527  -12.8837  +35.6281   -6.6984 
 +14.6453  -40.4640   -6.6984  +39.1761 

 Press return to continue. 


 ------------------------------------  
 Copy/Past into the octave window.       

  expm (A0)*expm (A1)  
  expm (A0+A1)       

  expm (A0)*expm (A1)
    +29.0550     +28.5797     -49.4610     -12.4030 
    -19.4793     +79.5411     -32.7326     -64.8161 
    -30.8943      -2.8899     +38.0113      -8.2305 
    +33.9381     -48.1564      -1.1822     +53.0337 

  expm (A0+A1)
    +47.4584      +7.4673     -38.0527     +14.6453 
     +7.4673     +65.6300     -12.8837     -40.4640 
    -38.0527     -12.8837     +35.6281      -6.6984 
    +14.6453     -40.4640      -6.6984     +39.1761 

 expm (A0)*expm (A1) != expm (A0+A1) ??? 


 Press return to continue
 Press X      to stop