Mathc complexes/a123

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         [C4];  
double **LogA_EValue[C4];
double **LogA       [C4];

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 < C4; i++)
     { 
       clrscrn();

       if(i < C2)	
     
            A[i] = rEcsymmetric_mZ(i_mZ(RCA,RCA),999,+1.E-3);
            
       else if(i == C2)   
       
            A[i] = mul_mZ(A[C0],A[C1],i_mZ(RCA,RCA));

       else if(i == C3)   
       
            A[i] = mul_mZ(A[C1],A[C0],i_mZ(RCA,RCA));  

          if(i== C2) printf(" ERROR : A2 = A0 * A1 \n\n"
                            " My work is not correct if the matrix\n"
                            " is not csymmetric \n\n"); 
                                        
          if(i== C3) printf(" ERROR : A3 = A1 * A0 \n\n"
                            " My work is not correct if the matrix\n"
                            " is not csymmetric \n\n");  
                     
          printf(" Copy/Past into the octave window.\n\n");
          pAi_Octave_mZ(A[i],"A",i, P6, P6);
          printf(" logm (A%d)\n\n\n",i);
          stop();  
          
          clrscrn();
          LogA_EValue[i] = i_mZ(RCA,RCA);  
          LogA[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(log,EValue, LogA_EValue[i]);
    
         printf(" LogA_EValue[%d] :",i);
         p_mZ( LogA_EValue[i], S11,P4, S11,P4, C4); 
  
/* LogA[i] = V * LogA_EValue[i] * V_T*/     
         mul_mZ(V,LogA_EValue[i],T);
         mul_mZ(T,V_T,LogA[i]); 
    
         printf(" LogA[%d]",i);
         p_mZ(LogA[i], S11,P4, S11,P4, C4); 
         stop();
        }  

	clrscrn();
    printf(" Copy/Past into the octave window.       \n\n"
           " logm (A0) + logm (A1)  \n"
           " logm (A0*A1)           \n"        
           " logm (A1*A0)         \n\n");
         
    printf("  logm(A0) + logm(A1) != logm(A0*A1) != logm(A1*A0)");
    p_mZ( add_mZ(LogA[C0],LogA[C1],T), S11,P4, S11,P4, C4);  

    printf("  logm(A0*A1)");       
    p_mZ( LogA[C2], S11,P4, S11,P4, C4); 
    
    printf("  logm(A1*A0)");       
    p_mZ( LogA[C3], S11,P4, S11,P4, C4); 
    
  for(i = C0; i < C3; i++)
     {
      f_mZ(A[i]);
      f_mZ(LogA_EValue[i]);
      f_mZ(LogA[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;
}
/* ------------------------------------ */
/* ------------------------------------ */
              Log(A0) + Log(A1) != Log( A0 * A1)
Exemple de sortie écran :
 ------------------------------------
 Copy/Past into the octave window.

 A0=[
+1.917170+0.000000*i,+0.388122-0.321751*i,-0.358450-0.214752*i;
+0.388122+0.321751*i,+2.123476+0.000000*i,+0.776139+0.796277*i;
-0.358450+0.214752*i,+0.776139-0.796277*i,+2.790623+0.000000*i]

 logm (A0)


 Press return to continue. 


 ------------------------------------
 A[0] :
    +1.9172    +0.0000i     +0.3881    -0.3218i     -0.3584    -0.2148i 
    +0.3881    +0.3218i     +2.1235    +0.0000i     +0.7761    +0.7963i 
    -0.3584    +0.2148i     +0.7761    -0.7963i     +2.7906    +0.0000i 

 LogA_EValue[0] :
    +1.2895    +0.0000i     +0.0000    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +0.8358    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +0.0000    +0.0000i     -0.1124    +0.0000i 

 LogA[0]
    +0.5708    -0.0000i     +0.2752    -0.1977i     -0.2426    -0.1124i 
    +0.2752    +0.1977i     +0.5610    -0.0000i     +0.3696    +0.3944i 
    -0.2426    +0.1124i     +0.3696    -0.3944i     +0.8811    +0.0000i 

 Press return to continue. 


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

 A1=[
+3.333372+0.000000*i,+0.458059-0.885737*i,-0.438863-0.128403*i;
+0.458059+0.885737*i,+1.681938+0.000000*i,-1.047444-0.889965*i;
-0.438863+0.128403*i,-1.047444+0.889965*i,+2.026787+0.000000*i]

 logm (A1)


 Press return to continue. 


 ------------------------------------
 A[1] :
    +3.3334    +0.0000i     +0.4581    -0.8857i     -0.4389    -0.1284i 
    +0.4581    +0.8857i     +1.6819    +0.0000i     -1.0474    -0.8900i 
    -0.4389    +0.1284i     -1.0474    +0.8900i     +2.0268    +0.0000i 

 LogA_EValue[1] :
    +1.4543    +0.0000i     +0.0000    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +0.8768    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +0.0000    +0.0000i     -1.0286    +0.0000i 

 LogA[1]
    +1.1116    +0.0000i     +0.1712    -0.4667i     -0.0257    -0.1492i 
    +0.1712    +0.4667i     -0.1016    -0.0000i     -0.8038    -0.6236i 
    -0.0257    +0.1492i     -0.8038    +0.6236i     +0.2925    -0.0000i 

 Press return to continue. 


 ------------------------------------
 ERROR : A2 = A0 * A1 

 My work is not correct if the matrix
 is not csymmetric 

 Copy/Past into the octave window.

 A2=[
+7.038296+0.244614*i,+2.097552-2.333341*i,-2.260760-0.689826*i;
+1.823569+2.703559*i,+2.512704-0.339712*i,-0.780172-0.466976*i;
-1.358739+1.396886*i,-1.591581+1.560130*i,+4.319263+0.095098*i]

 logm (A2)


 Press return to continue. 


 ------------------------------------
 A[2] :
    +7.0383    +0.2446i     +2.0976    -2.3333i     -2.2608    -0.6898i 
    +1.8236    +2.7036i     +2.5127    -0.3397i     -0.7802    -0.4670i 
    -1.3587    +1.3969i     -1.5916    +1.5601i     +4.3193    +0.0951i 

 LogA_EValue[2] :
    +2.2791    +0.0000i     +0.0000    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +1.1724    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +0.0000    +0.0000i     -0.1361    +0.0000i 

 LogA[2]
    +1.5970    +0.0000i     +0.5110    -0.6974i     -0.3858    -0.4102i 
    +0.5110    +0.6974i     +0.4335    +0.0000i     -0.1056    -0.0152i 
    -0.3858    +0.4102i     -0.1056    +0.0152i     +1.2849    +0.0000i 

 Press return to continue. 


 ------------------------------------
 ERROR : A3 = A1 * A0 

 My work is not correct if the matrix
 is not csymmetric 

 Copy/Past into the octave window.

 A3=[
+7.038296-0.244614*i,+1.823569-2.703559*i,-1.358739-1.396886*i;
+2.097552+2.333341*i,+2.512704+0.339712*i,-1.591581-1.560130*i;
-2.260760+0.689826*i,-0.780172+0.466976*i,+4.319263-0.095098*i]

 logm (A3)


 Press return to continue. 


 ------------------------------------
 A[3] :
    +7.0383    -0.2446i     +1.8236    -2.7036i     -1.3587    -1.3969i 
    +2.0976    +2.3333i     +2.5127    +0.3397i     -1.5916    -1.5601i 
    -2.2608    +0.6898i     -0.7802    +0.4670i     +4.3193    -0.0951i 

 LogA_EValue[3] :
    +2.2791    +0.0000i     +0.0000    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +1.1724    +0.0000i     +0.0000    +0.0000i 
    +0.0000    +0.0000i     +0.0000    +0.0000i     -0.1361    +0.0000i 

 LogA[3]
    +1.6738    +0.0000i     +0.3671    -0.6417i     -0.2778    -0.1151i 
    +0.3671    +0.6417i     +0.5821    -0.0000i     -0.5883    -0.3933i 
    -0.2778    +0.1151i     -0.5883    +0.3933i     +1.0595    +0.0000i 

 Press return to continue. 


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

 logm (A0) + logm (A1)  
 logm (A0*A1)           
 logm (A1*A0)         

  logm(A0) + logm(A1) != logm(A0*A1) != logm(A1*A0)
    +1.6825    +0.0000i     +0.4464    -0.6644i     -0.2683    -0.2616i 
    +0.4464    +0.6644i     +0.4594    -0.0000i     -0.4342    -0.2292i 
    -0.2683    +0.2616i     -0.4342    +0.2292i     +1.1735    -0.0000i 

  logm(A0*A1)
    +1.5970    +0.0000i     +0.5110    -0.6974i     -0.3858    -0.4102i 
    +0.5110    +0.6974i     +0.4335    +0.0000i     -0.1056    -0.0152i 
    -0.3858    +0.4102i     -0.1056    +0.0152i     +1.2849    +0.0000i 

  logm(A1*A0)
    +1.6738    +0.0000i     +0.3671    -0.6417i     -0.2778    -0.1151i 
    +0.3671    +0.6417i     +0.5821    -0.0000i     -0.5883    -0.3933i 
    -0.2778    +0.1151i     -0.5883    +0.3933i     +1.0595    +0.0000i 


 Press return to continue
 Press X      to stop