Aller au contenu

Mathc complexes/087

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 RCA          RC5
#define FACTOR_E    +1.E-2
/* ------------------------------------ */
/* ------------------------------------ */
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)**2";
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{                          
double **A = rcsymmetric_mZ(i_mZ(RCA,RCA),99);

double **cos2_A       =                i_mZ(RCA,RCA);
double **Imnssinsin_A  =               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 **Imnssinsin_EigsValue =        i_mZ(RCA,RCA);

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

  clrscrn();
  printf(" A :");
  p_mZ(A, S7,P0, S7,P0, C6);

  eigs_V_mZ(A,EigsVector,FACTOR_E);
  ctranspose_mZ(EigsVector,T_EigsVector);
    
/* EigsValue = cV_T * A * V */   
  mul_mZ(T_EigsVector,A,T1);
  mul_mZ(T1,EigsVector,EigsValue); 
   
  f_eigs_mZ(f,EigsValue,cos2A_EigsValue);
  f_eigs_mZ(g,EigsValue,Imnssinsin_EigsValue);

/*A == EigsVector * EigsValue * T_EigsVector */
  mul_mZ(EigsVector,cos2A_EigsValue,T1);
  mul_mZ(T1,T_EigsVector,cos2_A); 
  printf(" cos(2*A)");
  p_mZ(cos2_A, S7,P3, S7,P3, C6);
       
//A == EigsVector * EigsValue * T_EigsVector  
  mul_mZ(EigsVector,Imnssinsin_EigsValue,T1);
  mul_mZ(T1,T_EigsVector,Imnssinsin_A); 
  printf(" 1-2*sin(x)**2");
  p_mZ(Imnssinsin_A, S7,P3, S7,P3, C6);  
   
  f_mZ(A);
  f_mZ(EigsVector);
  f_mZ(T_EigsVector);
  f_mZ(T1);
  
  f_mZ(EigsValue);
  
  f_mZ(cos2A_EigsValue);
  f_mZ(Imnssinsin_EigsValue);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

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

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */
 Vérifions les égalités :                
   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)            
           
1) 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

Contrôle du facteur :

  • FACTOR_E ..... +1.E-1 ......... -9 < x < 9
  • FACTOR_E ..... +1.E-2 ....... -99 < x < 99
  • FACTOR_E ..... +1.E-3 ..... -999 < x < 999
Exemple de sortie écran :
 A :
 +25509     +0i    -488  +4245i   -4505  +7604i  +11459 -13192i   +1815  -4603i 
   -488  -4245i  +49385     +0i  +28940  +9626i   -5062 +19153i    -520 -28835i 
  -4505  -7604i  +28940  -9626i  +36629     +0i  -15593 +10032i   -5646 -13559i 
 +11459 +13192i   -5062 -19153i  -15593 -10032i  +39309     +0i   -3013  -4874i 
  +1815  +4603i    -520 +28835i   -5646 +13559i   -3013  +4874i  +28780     +0i 

 cos(2*A)
 -0.045 +0.000i  +0.132 -0.090i  +0.165 +0.065i  +0.453 -0.326i  +0.055 -0.240i 
 +0.132 +0.090i  -0.819 +0.000i  -0.119 +0.119i  +0.315 -0.026i  +0.023 -0.233i 
 +0.165 -0.065i  -0.119 -0.119i  -0.598 +0.000i  -0.344 -0.179i  -0.137 +0.238i 
 +0.453 +0.326i  +0.315 +0.026i  -0.344 +0.179i  -0.091 +0.000i  +0.211 -0.517i 
 +0.055 +0.240i  +0.023 +0.233i  -0.137 -0.238i  +0.211 +0.517i  -0.532 +0.000i 

 1-2*sin(x)**2
 -0.045 +0.000i  +0.132 -0.090i  +0.165 +0.065i  +0.453 -0.326i  +0.055 -0.240i 
 +0.132 +0.090i  -0.819 -0.000i  -0.119 +0.119i  +0.315 -0.026i  +0.023 -0.233i 
 +0.165 -0.065i  -0.119 -0.119i  -0.598 +0.000i  -0.344 -0.179i  -0.137 +0.238i 
 +0.453 +0.326i  +0.315 +0.026i  -0.344 +0.179i  -0.091 +0.000i  +0.211 -0.517i 
 +0.055 +0.240i  +0.023 +0.233i  -0.137 -0.238i  +0.211 +0.517i  -0.532 -0.000i 


 Press   return to continue
 Press X return to stop    
 Press X      to stop