Aller au contenu

Mathc complexes/a338

Un livre de Wikilivres.


X Value Decomposition

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

c00a.c
/* ------------------------------------ */
/*  Save as :   c00a.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define RCA             RC3
#define FACTOR_E        +1.E-0   
/* ------------------------------------ */
/* ------------------------------------ */
double **X_sinh2A_mZ(
double **M_Value,
double **sinh2A_Value
)
{
int  r;
int  c;
nb_Z a;

  for (   r=R1; r<M_Value[R_SIZE][C0]; r++)
    for ( c=C1; c<M_Value[C_SIZE][C0]; c+=C2)

        if(((r-R1)*C2)==c-C1)
          {
           a = sinh_Z(i_Z(2.*M_Value[r][c],2.*M_Value[r][c+C1]));
           
           sinh2A_Value[r][c   ] = a.r;
           sinh2A_Value[r][c+C1] = a.i;
          }
              
 return(sinh2A_Value);
}
/* ------------------------------------ */
/* ------------------------------------ */
double **X_DeuxcoshAsinhA_mZ(
double **M_Value,
double **DeuxcoshAsinhA_Value
)
{
int  r;
int  c;

nb_Z cosha;
nb_Z sinha;

nb_Z DeuxcoshAsinhA;

  for (   r=R1; r<M_Value[R_SIZE][C0]; r++)
    for ( c=C1; c<M_Value[C_SIZE][C0]; c+=C2)

        if(((r-R1)*C2)==c-C1)
          {
           cosha = cosh_Z(i_Z( M_Value[r][c], M_Value[r][c+C1]));
           sinha = sinh_Z(i_Z( M_Value[r][c], M_Value[r][c+C1]));
             
           DeuxcoshAsinhA = smul_Z(2., mul_Z(cosha,sinha) ); 
           
           DeuxcoshAsinhA_Value[r][c   ] = DeuxcoshAsinhA.r;
           DeuxcoshAsinhA_Value[r][c+C1] = DeuxcoshAsinhA.i;
          }
              
 return(DeuxcoshAsinhA_Value);
}
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
int r = RCA;
int c = RCA;
  
double **A =           rE_mZ(i_mZ(r,c),999,+1.E-4);

double **A_T = ctranspose_mZ(A,i_mZ(c,r));
double **V =                   i_mZ(r,c);
double **V_T =                 i_mZ(c,r);
double **U =                   i_mZ(r,c);
double **U_T =                 i_mZ(c,r);  
double **U_TA =                i_mZ(c,c);  
double **X =                   i_mZ(c,c);  

double **T1        =           i_mZ(c,c);

double **sinh2A     =           i_mZ(c,c);
double **DeuxcoshAsinhA =        i_mZ(c,c);

  clrscrn();
  printf(" A :");
  p_mZ(A, S9,P4, S8,P4, C3);
      
  printf(" U :");
  X_U_mZ(A_T,U,FACTOR_E);
  p_mZ(U, S9,P4, S8,P4, C3);

  printf(" V :");
  X_V_mZ(A_T,V,FACTOR_E);
  p_mZ(V, S9,P4, S8,P4, C3);
  
   ctranspose_mZ(U,U_T);
   ctranspose_mZ(V,V_T);  
   
   printf(" X = U_T * A * V :");
   mul_mZ(U_T, A, U_TA);                      
   mul_mZ(U_TA, V, X);  
   p_mZ(X, S9,P4, S8,P4, C3);
   stop();

   clrscrn();
   printf(" sinh(2*A)        :");
   X_sinh2A_mZ(X,sinh2A);
   
   mul_mZ(V,sinh2A,T1);
   mul_mZ(T1,U_T,sinh2A); 
   pE_mZ(sinh2A, S12,P4, S8,P4, C3);

   printf(" 2 coshA sinhA :");
   X_DeuxcoshAsinhA_mZ(X,DeuxcoshAsinhA);
   
   mul_mZ(V,DeuxcoshAsinhA,T1);
   mul_mZ(T1,U_T,DeuxcoshAsinhA); 
   pE_mZ(DeuxcoshAsinhA, S12,P4, S8,P4, C3);
                
   f_mZ(A);
   f_mZ(A_T);
   
   f_mZ(V);
   f_mZ(V_T);
   
   f_mZ(U);
   f_mZ(U_T);
   f_mZ(U_TA);
   f_mZ(X);
   
   f_mZ(sinh2A);
   f_mZ(DeuxcoshAsinhA);     
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

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

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
 Nous savons que :
 
 sinh(x+y) = cosh(x) sinh(y) + sinh(x) cosh(y)
     
 posons x = y 
         
 sinh(x+x) = cosh(x) sinh(x) + sinh(x) cosh(x)                   
         
 sinh(2x) = 2 cosh(x) sinh(x)
Exemple de sortie écran :
 A :
  +0.0019 -0.0853i   +0.0294 -0.0012i   -0.0485 -0.0404i 
  -0.0224 +0.0512i   -0.0022 -0.0727i   +0.0434 -0.0564i 
  -0.0880 +0.0594i   -0.0539 +0.0097i   -0.0325 +0.0292i 

 U :
  -0.3790 +0.5240i   +0.1731 +0.0016i   +0.3723 -0.6428i 
  +0.1756 -0.1085i   -0.4654 +0.8074i   +0.0324 -0.2965i 
  +0.7343 +0.0000i   +0.3187 +0.0000i   +0.5994 -0.0000i 

 V :
  +0.6482 -0.6031i   -0.1997 -0.0284i   -0.1481 +0.3918i 
  -0.0650 -0.2899i   +0.5612 +0.3671i   -0.6267 -0.2630i 
  +0.3575 +0.0000i   +0.7139 +0.0000i   +0.6022 +0.0000i 

 X = U_T * A * V :
  -0.0361 +0.1594i   +0.0000 +0.0000i   -0.0000 +0.0000i 
  -0.0000 +0.0000i   -0.1184 -0.0090i   +0.0000 +0.0000i 
  +0.0000 -0.0000i   -0.0000 -0.0000i   +0.0109 -0.0294i 

 Press return to continue. 


 sinh(2*A)        :
 +7.7943e-02-1.4799e-01i  -1.9102e-02+2.2174e-02i  +1.3334e-01+1.9359e-01i 
 -8.9482e-02-7.3760e-02i  -1.3226e-02+1.5118e-01i  +1.2127e-02-1.3035e-02i 
 +6.6189e-02-3.6451e-02i  +6.3210e-02+1.6371e-01i  -6.4570e-02+5.7098e-02i 

 2 coshA sinhA :
 +7.7943e-02-1.4799e-01i  -1.9102e-02+2.2174e-02i  +1.3334e-01+1.9359e-01i 
 -8.9482e-02-7.3760e-02i  -1.3226e-02+1.5118e-01i  +1.2127e-02-1.3035e-02i 
 +6.6189e-02-3.6451e-02i  +6.3210e-02+1.6371e-01i  -6.4570e-02+5.7098e-02i 


 Press   return to continue
 Press X return to stop