Mathc complexes/a122

Un livre de Wikilivres.


Application


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


c00a.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define FACTOR_E    +1.E-2
#define RCA          RC3
#define tA           C3
/* ------------------------------------ */
void fun(void)
{
int i;

double **A         [tA];  
double **ExpA_EValue[tA];
double **ExpA       [tA];

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

       if(i < C2)	
     
            A[i] = rEcsymmetric_mZ(i_mZ(RCA,RCA),999,+1.E-3);
       else   
            A[i] = add_mZ(A[C0],A[C1],i_mZ(RCA,RCA));
  
          printf(" Copy/Past into the octave window.       \n\n");
          pAi_Octave_mZ(A[i], "A",i, P6, P6);
          printf(" expm (A%d)\n\n\n",i);
          stop();  
          
          clrscrn();
          ExpA_EValue[i] = i_mZ(RCA,RCA);  
          ExpA[i]        = i_mZ(RCA,RCA);  
  
          printf(" A[%d] :",i);
          p_mZ(A[i], S11,P4, S11,P4, C4); 
  
          eigs_V_mZ(A[i],V,FACTOR_E);
          ctranspose_mZ(V,V_T);
    
/* EValue = V_T * A * V */   
         mul_mZ(V_T,A[i],T);
         mul_mZ(T,V,EValue); 
   
         f_eigs_mZ(exp,EValue, ExpA_EValue[i]);
    
         printf(" ExpA_EValue[%d] :",i);
         p_mZ( ExpA_EValue[i], S11,P4, S11,P4, C4); 
  
/* ExpA[i] = V * ExpA_EValue[i] * V_T*/     
         mul_mZ(V,ExpA_EValue[i],T);
         mul_mZ(T,V_T,ExpA[i]); 
         
         if(i < C2)	 printf(" ExpA[%d]",i); 
         else        printf(" ExpA[%d] = ExpA[0+1]",i);
         
         p_mZ(ExpA[i], S11,P4, S11,P4, C4); 
         stop();
        }  

	clrscrn();
    printf(" Copy/Past into the octave window.       \n\n"
           "  expm (A0)*expm (A1)  \n"
           "  expm (A0+A1)       \n\n");
             	
    printf("  ExpA[0]*ExpA[1]");
    p_mZ( mul_mZ(ExpA[C0],ExpA[C1],T), S11,P4, S11,P4, C4); 

    printf("  ExpA[0+1] = ExpA[C2]");       
    p_mZ( ExpA[C2], S11,P4, S11,P4, C4);

    printf(" ExpA[0] * ExpA[1] != ExpA[0 + 1] ??? \n\n");
   
  for(i = C0; i < C3; i++)
     {
      f_mZ(A[i]);
      f_mZ(ExpA_EValue[i]);
      f_mZ(ExpA[i]); 
     }  
       
   f_mZ(V);
   f_mZ(V_T);
   f_mZ(EValue); 
   f_mZ(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=[
+1.831649+0.000000*i,+0.038822+0.121129*i,+0.319146-0.062382*i;
+0.038822-0.121129*i,+0.991619+0.000000*i,+1.154350-0.248942*i;
+0.319146+0.062382*i,+1.154350+0.248942*i,+1.480239+0.000000*i]

 expm (A0)


 Press return to continue. 


 ------------------------------------
 A[0] :
    +1.8316    +0.0000i     +0.0388    +0.1211i     +0.3191    -0.0624i 
    +0.0388    -0.1211i     +0.9916    +0.0000i     +1.1543    -0.2489i 
    +0.3191    +0.0624i     +1.1543    +0.2489i     +1.4802    +0.0000i 

 ExpA_EValue[0] :
   +12.9184    +0.0000i     +0.0000    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +5.6774    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +0.0000    +0.0000i     +1.0084    +0.0000i 

 ExpA[0]
    +6.6417    +0.0000i     +1.1243    +0.6578i     +2.2390    -0.0910i 
    +1.1243    -0.6578i     +5.2887    -0.0000i     +5.1395    -1.2042i 
    +2.2390    +0.0910i     +5.1395    +1.2042i     +7.6737    +0.0000i 

 Press return to continue. 


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

 A1=[
+2.537924+0.000000*i,+1.188052-0.486563*i,-0.216077-0.019981*i;
+1.188052+0.486563*i,+1.955302+0.000000*i,-0.701645+0.450713*i;
-0.216077+0.019981*i,-0.701645-0.450713*i,+2.592323+0.000000*i]

 expm (A1)


 Press return to continue. 


 ------------------------------------
 A[1] :
    +2.5379    +0.0000i     +1.1881    -0.4866i     -0.2161    -0.0200i 
    +1.1881    +0.4866i     +1.9553    +0.0000i     -0.7016    +0.4507i 
    -0.2161    +0.0200i     -0.7016    -0.4507i     +2.5923    +0.0000i 

 ExpA_EValue[1] :
   +48.9776    +0.0000i     +0.0000    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i    +11.8151    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +0.0000    +0.0000i     +2.0643    +0.0000i 

 ExpA[1]
   +24.0039    +0.0000i    +17.5788    -6.0976i     -7.9075    +5.3266i 
   +17.5788    +6.0976i    +20.0436    +0.0000i    -11.6855    +5.6408i 
    -7.9075    -5.3266i    -11.6855    -5.6408i    +18.8096    +0.0000i 

 Press return to continue. 


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

 A2=[
+4.369573+0.000000*i,+1.226874-0.365434*i,+0.103069-0.082363*i;
+1.226874+0.365434*i,+2.946921+0.000000*i,+0.452705+0.201771*i;
+0.103069+0.082363*i,+0.452705-0.201771*i,+4.072562+0.000000*i]

 expm (A2)


 Press return to continue. 


 ------------------------------------
 A[2] :
    +4.3696    +0.0000i     +1.2269    -0.3654i     +0.1031    -0.0824i 
    +1.2269    +0.3654i     +2.9469    +0.0000i     +0.4527    +0.2018i 
    +0.1031    +0.0824i     +0.4527    -0.2018i     +4.0726    +0.0000i 

 ExpA_EValue[2] :
  +186.3044    +0.0000i     +0.0000    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i    +57.0973    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +0.0000    +0.0000i     +8.3055    +0.0000i 

 ExpA[2] = ExpA[0+1]
  +129.7620    +0.0000i    +70.0990   -22.2056i    +25.9314    -4.9375i 
   +70.0990   +22.2056i    +55.5771    -0.0000i    +26.1629    +8.0671i 
   +25.9314    +4.9375i    +26.1629    -8.0671i    +66.3681    +0.0000i 

 Press return to continue. 


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

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

  ExpA[0]*ExpA[1]
  +156.9904    +7.2117i   +112.6113   -38.8811i    -27.2528   +32.3218i 
   +72.9020    -1.3945i    +54.9077   -33.3379i    +29.4837   +18.3723i 
   +76.0685   +13.8159i    +53.2565   -31.2033i    +59.3001   +26.1262i 

  ExpA[0+1] = ExpA[C2]
  +129.7620    +0.0000i    +70.0990   -22.2056i    +25.9314    -4.9375i 
   +70.0990   +22.2056i    +55.5771    -0.0000i    +26.1629    +8.0671i 
   +25.9314    +4.9375i    +26.1629    -8.0671i    +66.3681    +0.0000i 

 ExpA[0] * ExpA[1] != ExpA[0 + 1] ??? 


 Press return to continue
 Press X      to stop