Aller au contenu

Mathc complexes/08b

Un livre de Wikilivres.


X Value Decomposition

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

c00c.c
/* ------------------------------------ */
/*  Save as :   c00c.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define RCA             RC3
#define FACTOR_E        +1.E-0   
/* ------------------------------------ */
/* ------------------------------------ */
double **X_cosh2A_mZ(
double **M_Value,
double **cosh2A_Value
)
{
int  r;
int  c;

nb_Z cosh2A;

  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)
          {
           cosh2A = cosh_Z(i_Z(2.*M_Value[r][c],2.*M_Value[r][c+C1]));
           
           cosh2A_Value[r][c   ] = cosh2A.r;
           cosh2A_Value[r][c+C1] = cosh2A.i;
          }
              
 return(cosh2A_Value);
}
/* ------------------------------------ */
/* ------------------------------------ */
double **X_Ipls2sinhA_2_mZ(
double **M_Value,
double **Ipls2sinhA_2_Value
)
{
int  r;
int  c;

nb_Z sinha;
nb_Z Ipls = {1,0};

nb_Z Ipls2sinhA_2;

  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)
          {
                  sinha = cosh_Z(i_Z( M_Value[r][c], M_Value[r][c+C1]));
           Ipls2sinhA_2 = sub_Z(Ipls,smul_Z(2., mul_Z(sinha,sinha))); 
           
           Ipls2sinhA_2_Value[r][c   ] = Ipls2sinhA_2.r;
           Ipls2sinhA_2_Value[r][c+C1] = Ipls2sinhA_2.i;
          }
              
 return(Ipls2sinhA_2_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 **cosh2A         =      i_mZ(c,c);
double **Ipls2sinhA_2 =      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(" cosh(2*A)      :");
   X_cosh2A_mZ(X,cosh2A);
   
   mul_mZ(V,cosh2A,T1);
   mul_mZ(T1,U_T,cosh2A); 
   pE_mZ(cosh2A, S12,P4, S8,P4, C3);

   printf(" 1 + 2 sinhA**2:");
   X_Ipls2sinhA_2_mZ(X,Ipls2sinhA_2);
   
   mul_mZ(V,Ipls2sinhA_2,T1);
   mul_mZ(T1,U_T,Ipls2sinhA_2); 
   pE_mZ(Ipls2sinhA_2, 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(cosh2A);
   f_mZ(Ipls2sinhA_2);     
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

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

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
  Nous avons vu que :
  
  cosh(x+y) = cosh(x) cosh(y) + sinh(x) sinh(y)

  posons x = y 
          
  cosh(x+x) = cosh(x) cosh(x) + sinh(x) sinh(x)            
          
  cosh(2x) =  cosh(x)**2    + sinh(x)**2      cosh(x)**2-sinh(x)**2 = 1
                                              cosh(x)**2            = 1+sinh(x)**2    
  cosh(2x) = (1+sinh(x)**2) + sinh(x)**2    
   
  cosh(2x) =  1 + 2*sinh(x)**2
Exemple de sortie écran :
 A :
  +0.0678 -0.0865i   +0.0151 +0.0733i   +0.0381 -0.0345i 
  +0.0146 -0.0550i   +0.0680 +0.0171i   +0.0750 -0.0946i 
  -0.0124 +0.0836i   +0.0111 +0.0829i   -0.0283 -0.0217i 

 U :
  -0.3450 -0.5734i   +0.0274 +0.0845i   +0.5747 +0.4626i 
  -0.6243 -0.3464i   +0.1841 +0.0807i   -0.6637 -0.0961i 
  +0.2059 +0.0000i   +0.9755 +0.0000i   +0.0770 +0.0000i 

 V :
  +0.6111 +0.2421i   -0.3977 +0.3679i   -0.2620 -0.4537i 
  +0.1214 -0.4619i   -0.7080 +0.0489i   +0.3668 +0.3657i 
  +0.5830 +0.0000i   +0.4503 +0.0000i   +0.6763 +0.0000i 

 X = U_T * A * V :
  -0.0227 +0.1961i   -0.0000 -0.0000i   +0.0000 -0.0000i 
  +0.0000 +0.0000i   -0.0517 -0.1084i   -0.0000 -0.0000i 
  +0.0000 -0.0000i   +0.0000 -0.0000i   -0.0546 +0.0457i 

 Press return to continue. 
 

 cosh(2*A)      :
 -6.6241e-01+1.6006e-01i  -2.5381e-01+4.3542e-01i  -2.9229e-01+3.5285e-01i 
 +5.7485e-01+3.0442e-01i  -3.2311e-01+1.6127e-01i  -6.2918e-01-2.9049e-02i 
 +2.1896e-01-4.1610e-02i  -6.9998e-01+2.2891e-01i  +5.9449e-01+7.1913e-03i 

 1 + 2 sinhA**2:
 +6.6241e-01-1.6006e-01i  +2.5381e-01-4.3542e-01i  +2.9229e-01-3.5285e-01i 
 -5.7485e-01-3.0442e-01i  +3.2311e-01-1.6127e-01i  +6.2918e-01+2.9049e-02i 
 -2.1896e-01+4.1610e-02i  +6.9998e-01-2.2891e-01i  -5.9449e-01-7.1913e-03i 


 Press   return to continue
 Press X return to stop