Aller au contenu

Mathc matrices/09d

Un livre de Wikilivres.


Matrices de Markov

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

c00b.c
/* ------------------------------------ */
/*  Save as:  c00b.c                    */
/* ------------------------------------ */
#include "v_a.h"
/* ------------------------------------ */
#define   RCA C2
#define   P   13/* Try : 10, 15, 20, 25 */
/* ------------------------------------ */
/* ------------------------------------ */
double f(
double x)
{  
        return(pow(x,P));
}
char  feq[] =  "x**P";
/* ------------------------------------ */
/* ------------------------------------ */
int main(void)
{
double a[RCA*RCA]={
+.2,+.6,
+.8,+.4
};
double **A      =   ca_A_mR(a,        i_mR(RCA,RCA));
double **A_P    =    pow_mR(P,    A,  i_mR(RCA,RCA));    

double **Ev     = eigs_V_mR(A,        i_mR(RCA,RCA));
double **InvEv  =  invgj_mR(Ev,       i_mR(RCA,RCA)); 

/*                   Eval = InvEv  A Ev            */
double **T      =    mul_mR(InvEv, A, i_mR(RCA,RCA));        
double **Eval   =    mul_mR(T,    Ev, i_mR(RCA,RCA));

double **f_Eval =                     i_mR(RCA,RCA);
  
  clrscrn();
  printf(" Copy/Paste into the octave windows \n");
  p_Octave_mR(A,"A",P9);
  printf("  A^%d\n\n",P);

  printf(" A^%d:",P);    
   pE_mR(A_P,S10,P4,C6);  
   
  printf(" A^%d: Ev Eval**%d InvEv",P,P);    
  f_eigs_mR(f,Eval,f_Eval);    
 
     mul_mR(Ev,f_Eval,T);
     mul_mR(T,InvEv,A_P); 
      pE_mR(A_P,S10,P4,C6);     
  
  stop();
  
  f_mR(A);
  f_mR(A_P);
    
  f_mR(Ev);
  f_mR(InvEv);
  
  f_mR(Eval);
  f_mR(f_Eval);    
  
  f_mR(T);

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

Exemple de sortie écran :

 Copy/Paste into the octave windows 
 A=[
+0.200000000,+0.600000000;
+0.800000000,+0.400000000]

  A^13

 A^13:
+4.2857e-01 +4.2857e-01 
+5.7143e-01 +5.7143e-01 

 A^13: Ev Eval**13 InvEv
+4.2857e-01 +4.2857e-01 
+5.7143e-01 +5.7143e-01 

 Press return to continue.