Aller au contenu

Mathc complexes/08d

Un livre de Wikilivres.


Application

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

c00c.c
/* ------------------------------------ */
/*  Save as :   c00c.c                  */
/* ------------------------------------ */
#include "w_a.h"
/* ------------------------------------ */
#define FACTOR_E     +1.E-2      
#define RCA           RC4  
/* ------------------------------------ */       
/* ------------------------------------ */
double f(
double x)
{  
        return( cos(2*x));
}
char  feq[] =  "cos(2*x)";
/* ------------------------------------ */
double g(
double x)
{  
        return(1 - 2*sin(x)*sin(x));
}
char  geq[] = "1 - 2*sin(x)*sin(x)";
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **A                     =  rsymmetric_mRZ( i_mZ(RCA,RCA),99.);
double **cos2_A                =                  i_mZ(RCA,RCA);
double **Imns2sinA_2           =                  i_mZ(RCA,RCA);

double **EigsVector            =                  i_mZ(RCA,RCA);
double **T_EigsVector          =                  i_mZ(RCA,RCA);

double **EigsValue             =                  i_mZ(RCA,RCA);
double **cos2A_EigsValue       =                  i_mZ(RCA,RCA);
double **Imns2sinA_2_EigsValue =                  i_mZ(RCA,RCA);

double **T1                    =                 i_mZ(RCA,RCA);
  
  clrscrn();
  printf(" A :");
  p_mRZ(A, S10,P0, C6); 

  eigs_V_mZ(A,EigsVector,FACTOR_E);
  transpose_mZ(EigsVector,T_EigsVector);
      
/* EigsValue : T_EigsVector * A * EigsVector */
  mul_mZ(T_EigsVector,A,T1);
  mul_mZ(T1,EigsVector,EigsValue);     
  
  f_eigs_mZ(f,EigsValue,cos2A_EigsValue);
  f_eigs_mZ(g,EigsValue,Imns2sinA_2_EigsValue);

 //A == EigsVector * EigsValue * T_EigsVector 
  mul_mZ(EigsVector,cos2A_EigsValue,T1);
  mul_mZ(T1,T_EigsVector,cos2_A); 
  
  printf(" cos(2*A)");
  p_mRZ(cos2_A,S10,P4,C6); 

//A == EigsVector * EigsValue * T_EigsVector  
  mul_mZ(EigsVector,Imns2sinA_2_EigsValue,T1);
  mul_mZ(T1,T_EigsVector,Imns2sinA_2); 
  
  printf(" 1 - 2*sin(x)**2");
  p_mRZ(Imns2sinA_2,S10,P4,C6); 
            
  f_mZ(A);
  f_mZ(cos2_A);
  f_mZ(Imns2sinA_2);
    
  f_mZ(EigsVector);
  f_mZ(T_EigsVector);
  
  f_mZ(EigsValue);
  f_mZ(Imns2sinA_2_EigsValue);    
  f_mZ(cos2A_EigsValue);    
      
  f_mZ(T1);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun();

} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
   Nous avons vu que :
   
   cos(x+y) = cos(x)cos(y)-sin(x)sin(y)
   
   posons x = y 
           
   cos(x+x) = cos(x)cos(x)-sin(x)sin(x)            
           
           
   cos(2x) = cos(x)**2-sin(x)**2             cos(x)**2 + sin(x)**2 = 1
                                             cos(x)**2             = 1-sin(x)**2    
   cos(2x) = (1-sin(x)**2)-sin(x)**2    
   
   cos(2x) =  1-2*sin(x)**2
Exemple de sortie écran :
 A :
    +11598      -5489      +1305      +3210 
     -5489     +19547     -13119       -806 
     +1305     -13119      +9522       +450 
     +3210       -806       +450     +13803 

 cos(2*A)
   -0.1644    -0.2673    +0.1022    +0.6434 
   -0.2673    +0.4250    -0.7404    +0.0679 
   +0.1022    -0.7404    -0.1497    -0.1556 
   +0.6434    +0.0679    -0.1556    +0.5384 

 1 - 2*sin(x)**2
   -0.1644    -0.2673    +0.1022    +0.6434 
   -0.2673    +0.4250    -0.7404    +0.0679 
   +0.1022    -0.7404    -0.1497    -0.1556 
   +0.6434    +0.0679    -0.1556    +0.5384 


 Press   return to continue
 Press X return to stop