Mathc complexes/a113

Un livre de Wikilivres.


Application


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


c00a.c
/* ------------------------------------ */
/*  Save as :   c00b.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(2*cos(x)*cos(x)-1);
}
char  geq[] =  "2*cos(x)**2)-1";
/* ------------------------------------ */
/* ------------------------------------ */
void fun(void)
{
double **A             = rcsymmetric_mRZ(i_mZ(RCA,RCA),99.);
double **cos2_A        =                 i_mZ(RCA,RCA);
double **coscosmns1_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 **coscosmns1_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,coscosmns1_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,coscosmns1_EigsValue,T1);
  mul_mZ(T1,T_EigsVector,coscosmns1_A); 
  
  printf(" 2*cos(A)**2-1");
  p_mRZ(coscosmns1_A,S10,P4,C6); 
            
  f_mZ(A);
  f_mZ(cos2_A);
  f_mZ(coscosmns1_A);
    
  f_mZ(EigsVector);
  f_mZ(T_EigsVector);
  
  f_mZ(EigsValue);
  f_mZ(coscosmns1_EigsValue);    
  f_mZ(cos2A_EigsValue);    
      
  f_mZ(T1);
}
/* ------------------------------------ */
int main(void)
{
time_t t;

  srand(time(&t));

do
{
  fun();

} while(stop_w());

  return 0;
}
/* ------------------------------------ */
/* ------------------------------------ */


              cos(2*A) = 2*cos(A)**2-1


Exemple de sortie écran :
 ------------------------------------
 A :
     +9692     +11174       +730      -3472 
    +11174     +17044      +4688      -5862 
      +730      +4688     +18830      -9521 
     -3472      -5862      -9521      +6222 

 cos(2*A)
   +0.3337    -0.1474    +0.5458    -0.0180 
   -0.1474    +0.3672    +0.5044    -0.2417 
   +0.5458    +0.5044    +0.0808    +0.2834 
   -0.0180    -0.2417    +0.2834    +0.8453 

 2*cos(A)**2-1
   +0.3337    -0.1474    +0.5458    -0.0180 
   -0.1474    +0.3672    +0.5044    -0.2417 
   +0.5458    +0.5044    +0.0808    +0.2834 
   -0.0180    -0.2417    +0.2834    +0.8453 


 Press return to continue
 Press X      to stop